From 04483f4616882c031e15dbb3b8263210738c975c Mon Sep 17 00:00:00 2001 From: Tyler Stapler Date: Wed, 12 Aug 2026 09:00:22 -0700 Subject: [PATCH 1/7] fix(ci): run buf generate proto before Jest in lint workflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Jest ran before proto generation, so a PR that forgets to commit its generated proto bindings (as #433 did) passes lint's Jest step locally against stale/missing gen/ output instead of failing fast at the same step that would have caught it — the exact gap that let main's Jest job go red without any single CI step surfacing "these files are missing." Reordering closes AC6 of backlog item 41cca909 (main branch CI red): buf generate proto now runs first, so any future gap between committed generated files and a fresh regen fails Jest module resolution in CI immediately rather than silently reaching main. Co-Authored-By: Claude Sonnet 5 --- .github/workflows/lint.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index c844e693b..837569f4c 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -71,13 +71,13 @@ jobs: working-directory: web-app run: pnpm install --frozen-lockfile + - name: Generate protobuf code + run: buf generate proto + - name: Jest working-directory: web-app run: npx jest --ci --maxWorkers=4 - - name: Generate protobuf code - run: buf generate proto - - name: Generate ent ORM code run: go run -mod=mod entgo.io/ent/cmd/ent generate --feature sql/upsert ./session/ent/schema From b4079314fb99eda3d1ce3ffa96ac2170a2a738b4 Mon Sep 17 00:00:00 2001 From: Tyler Stapler Date: Wed, 12 Aug 2026 09:41:02 -0700 Subject: [PATCH 2/7] fix(ci): stop committing generated protobuf code, fix lint.yml ordering, isolate tmux-flaky import tests Three related fixes, all surfaced by the same incident (see this PR's first commit and #444's comments): 1. git rm --cached every currently-tracked file under gen/proto/go/ and web-app/src/gen/. These paths are gitignored, but historically force-added (git add -f) as an inconsistent, undocumented practice -- confirmed no ADR or written policy exists for this. Every make target that consumes generated code (build/test/lint) already depends on proto-gen; committing generated output on top of that is redundant and creates exactly the drift risk that broke #433 (an incomplete/stale force-add went unnoticed). 2. Fix .github/workflows/lint.yml: the Jest step ran BEFORE the "Generate protobuf code" step. This only ever "worked" because generated files happened to be pre-committed -- once (1) removes that crutch, the step order bug becomes a hard failure instead of a latent one, so it must be fixed in the same commit. Moved protobuf/ent codegen before Jest, golangci-lint, the import-cycle check, and the feature-catalog validation step -- matching the correct order already used by .github/actions/prepare/action.yml and documented in build.yml's #144 comment. 3. Add .github/workflows/generated-proto-guard.yml: a hard CI backstop (matching backlog-scaffolding-guard.yml's established pattern) that fails any PR whose diff adds/modifies a file under gen/ or web-app/src/gen/, regardless of how it got there. This has happened more than once, including via AI-agent-driven commits that git add -f a generated file to make a local build pass -- this makes the mistake structurally impossible to merge instead of relying on review catching it. 4. Isolate the three session/import_commit_test.go tests that reach a real instance.Start() (PersistsAndLinksAndSuspends, CompensatingDeletesInstance, ReturnsError_When_AliveCheckerRejects) via the existing NewTmuxSessionWithServerSocket-style isolation (InstanceOptions.TmuxServerSocket, threaded through a new CommitImportParams.TmuxServerSocket field), reusing instance_cold_restore_test.go's coldRestoreSocket(t) helper. These tests previously hit the shared default tmux server, which is single-threaded and contends with every other test doing real tmux operations under CI's full parallel -race suite -- TestCommitImportExternalSession_PersistsAndLinksAndSuspends_ When_StartAndSuspendSucceed's CI failure ("cold start: tmux dead" -> 10s of failed tmux list-sessions calls -> timeout) is exactly this contention pattern, already documented as a known class of flake in this codebase's own session_service_program_test.go and server_integration_test.go comments. Verified: go build clean, full `session` package passes under -race (67s), all 4 previously-broken Jest suites pass (27/27), actionlint clean on both changed/new workflow files, `make proto-gen` regenerates all files identically from a clean state. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01SW6Nbaqim2AS5knaHVY5dx --- .github/workflows/generated-proto-guard.yml | 61 + .github/workflows/lint.yml | 14 +- .gitignore | 8 +- gen/proto/go/session/v1/backlog.pb.go | 8711 -------- gen/proto/go/session/v1/events.pb.go | 2550 --- gen/proto/go/session/v1/github_user.pb.go | 1364 -- gen/proto/go/session/v1/headless.pb.go | 264 - gen/proto/go/session/v1/import.pb.go | 1244 -- gen/proto/go/session/v1/insights.pb.go | 1426 -- gen/proto/go/session/v1/session.pb.go | 17804 ---------------- gen/proto/go/session/v1/session_summary.pb.go | 739 - .../v1/sessionv1connect/backlog.connect.go | 1448 -- .../sessionv1connect/github_user.connect.go | 422 - .../v1/sessionv1connect/headless.connect.go | 111 - .../v1/sessionv1connect/import.connect.go | 216 - .../v1/sessionv1connect/insights.connect.go | 206 - .../v1/sessionv1connect/session.connect.go | 3817 ---- .../session_summary.connect.go | 149 - .../v1/sessionv1connect/unfinished.connect.go | 426 - gen/proto/go/session/v1/types.pb.go | 7566 ------- gen/proto/go/session/v1/unfinished.pb.go | 1311 -- session/import_commit.go | 18 +- session/import_commit_test.go | 31 +- web-app/src/gen/session/v1/backlog_pb.ts | 4315 ---- web-app/src/gen/session/v1/events_connect.ts | 4 - web-app/src/gen/session/v1/events_pb.ts | 1251 -- web-app/src/gen/session/v1/github_user_pb.ts | 700 - web-app/src/gen/session/v1/headless_pb.ts | 132 - web-app/src/gen/session/v1/import_pb.ts | 622 - web-app/src/gen/session/v1/insights_pb.ts | 703 - web-app/src/gen/session/v1/session_connect.ts | 578 - web-app/src/gen/session/v1/session_pb.ts | 9005 -------- .../src/gen/session/v1/session_summary_pb.ts | 327 - web-app/src/gen/session/v1/types_connect.ts | 4 - web-app/src/gen/session/v1/types_pb.ts | 4555 ---- web-app/src/gen/session/v1/unfinished_pb.ts | 576 - 36 files changed, 109 insertions(+), 72569 deletions(-) create mode 100644 .github/workflows/generated-proto-guard.yml delete mode 100644 gen/proto/go/session/v1/backlog.pb.go delete mode 100644 gen/proto/go/session/v1/events.pb.go delete mode 100644 gen/proto/go/session/v1/github_user.pb.go delete mode 100644 gen/proto/go/session/v1/headless.pb.go delete mode 100644 gen/proto/go/session/v1/import.pb.go delete mode 100644 gen/proto/go/session/v1/insights.pb.go delete mode 100644 gen/proto/go/session/v1/session.pb.go delete mode 100644 gen/proto/go/session/v1/session_summary.pb.go delete mode 100644 gen/proto/go/session/v1/sessionv1connect/backlog.connect.go delete mode 100644 gen/proto/go/session/v1/sessionv1connect/github_user.connect.go delete mode 100644 gen/proto/go/session/v1/sessionv1connect/headless.connect.go delete mode 100644 gen/proto/go/session/v1/sessionv1connect/import.connect.go delete mode 100644 gen/proto/go/session/v1/sessionv1connect/insights.connect.go delete mode 100644 gen/proto/go/session/v1/sessionv1connect/session.connect.go delete mode 100644 gen/proto/go/session/v1/sessionv1connect/session_summary.connect.go delete mode 100644 gen/proto/go/session/v1/sessionv1connect/unfinished.connect.go delete mode 100644 gen/proto/go/session/v1/types.pb.go delete mode 100644 gen/proto/go/session/v1/unfinished.pb.go delete mode 100644 web-app/src/gen/session/v1/backlog_pb.ts delete mode 100644 web-app/src/gen/session/v1/events_connect.ts delete mode 100644 web-app/src/gen/session/v1/events_pb.ts delete mode 100644 web-app/src/gen/session/v1/github_user_pb.ts delete mode 100644 web-app/src/gen/session/v1/headless_pb.ts delete mode 100644 web-app/src/gen/session/v1/import_pb.ts delete mode 100644 web-app/src/gen/session/v1/insights_pb.ts delete mode 100644 web-app/src/gen/session/v1/session_connect.ts delete mode 100644 web-app/src/gen/session/v1/session_pb.ts delete mode 100644 web-app/src/gen/session/v1/session_summary_pb.ts delete mode 100644 web-app/src/gen/session/v1/types_connect.ts delete mode 100644 web-app/src/gen/session/v1/types_pb.ts delete mode 100644 web-app/src/gen/session/v1/unfinished_pb.ts diff --git a/.github/workflows/generated-proto-guard.yml b/.github/workflows/generated-proto-guard.yml new file mode 100644 index 000000000..27caa5446 --- /dev/null +++ b/.github/workflows/generated-proto-guard.yml @@ -0,0 +1,61 @@ +name: Generated Protobuf Guard + +# Hard CI backstop for generated protobuf/connect code getting committed. gen/ and +# web-app/src/gen/ are gitignored (see .gitignore) — every make target that consumes +# generated code (build, test, lint) already depends on proto-gen, and CI regenerates +# fresh before every consuming step (see .github/workflows/lint.yml, .github/actions/ +# prepare/action.yml). Committing these files anyway has caused real breakage twice: +# once when a stale/incomplete force-add (git add -f) shipped generated bindings that +# didn't match proto/session/v1/import.proto's actual contents, and once when a CI +# workflow step ran Jest before regenerating protos and only "worked" by accident +# because most generated files happened to already be force-added (PR #445 fixed both; +# see that PR's description for the full incident writeup). AI coding agents in +# particular tend to `git add -f` a generated file to make a local build pass without +# realizing the ignore is deliberate — this workflow catches that regardless of how it +# happened (manual commit, agent-driven commit, a stray `git add -A`/`git add -f`, a +# merge, etc). + +on: + pull_request: + branches: [ main ] + +jobs: + guard: + name: no-checked-in-generated-protos + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Check PR diff for committed generated protobuf files + env: + BASE_SHA: ${{ github.event.pull_request.base.sha }} + HEAD_SHA: ${{ github.event.pull_request.head.sha }} + run: | + set -euo pipefail + CHANGED=$(git diff --name-only --diff-filter=ACMR "$BASE_SHA...$HEAD_SHA" || true) + if [ -z "$CHANGED" ]; then + echo "No added/modified files detected" + exit 0 + fi + + # Mirrors the "Generated protocol buffer code" block in .gitignore. + MATCHES=$(echo "$CHANGED" | grep -E '^gen/|^web/src/gen/|^web-app/src/gen/' || true) + + if [ -n "$MATCHES" ]; then + echo "::error::This PR commits generated protobuf file(s) that must never be tracked:" + echo "$MATCHES" + echo "" + echo "These paths are gitignored (see .gitignore's \"Generated protocol buffer" + echo "code\" block) and are always regenerated fresh by make proto-gen / buf" + echo "generate proto before every consuming build/test/lint step — see" + echo ".github/workflows/lint.yml and .github/actions/prepare/action.yml." + echo "" + echo "Fix: git rm --cached for each path above, commit, and re-push." + echo "If your change needs a NEW proto file's generated output to build/test" + echo "locally, run 'make proto-gen' — do not git add -f the result." + exit 1 + fi + + echo "No generated protobuf files in diff — OK" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 837569f4c..44e6a3dff 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -71,16 +71,22 @@ jobs: working-directory: web-app run: pnpm install --frozen-lockfile + # Must run before Jest (and before golangci-lint below): generated code is + # gitignored, not committed (see #445) — any step that reads gen/ or + # web-app/src/gen/ needs these to have run first in THIS job. Ordering + # bug history: Jest used to run before this step, so it silently depended + # on generated files happening to already be committed; the one proto + # file whose generated output wasn't committed broke Jest with "Could not + # locate module" until this reorder. - name: Generate protobuf code run: buf generate proto - - name: Jest - working-directory: web-app - run: npx jest --ci --maxWorkers=4 - - name: Generate ent ORM code run: go run -mod=mod entgo.io/ent/cmd/ent generate --feature sql/upsert ./session/ent/schema + - name: Jest + working-directory: web-app + run: npx jest --ci --maxWorkers=4 - name: Create web dist stub run: | diff --git a/.gitignore b/.gitignore index 352554b33..8b922b7ad 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,13 @@ stapler-squad-test !web-app/src/**/logs/ !web-app/src/**/logs/** -# Generated protocol buffer code +# Generated protocol buffer code — regenerate with: make proto-gen (or buf generate proto). +# NEVER force-add (git add -f) files under these paths, even to "fix" a build. Every +# make target that consumes generated code (build, test, lint) already depends on +# proto-gen; CI generates fresh before every consuming step. Committing these files +# has caused real breakage twice: once by force-adding a stale/incomplete generation, +# once by a CI workflow step ordering bug that only "worked" because these were +# force-added in the first place (see PR #445 and CI job "no-checked-in-generated-protos"). gen/ web/src/gen/ web-app/src/gen/ diff --git a/gen/proto/go/session/v1/backlog.pb.go b/gen/proto/go/session/v1/backlog.pb.go deleted file mode 100644 index f304da55f..000000000 --- a/gen/proto/go/session/v1/backlog.pb.go +++ /dev/null @@ -1,8711 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.12 -// protoc (unknown) -// source: session/v1/backlog.proto - -package sessionv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// StuckReason mirrors domain.StuckReason (session/domain/backlog.go) — the -// validated string-backed enum of classes a backlog item can be "stuck" for. -// STUCK_REASON_UNSPECIFIED is also used as the safe fallback when an unknown -// string is encountered mapping a DB row to proto (never panics). -type StuckReason int32 - -const ( - StuckReason_STUCK_REASON_UNSPECIFIED StuckReason = 0 - StuckReason_STUCK_REASON_PR_READY_UNMERGED StuckReason = 1 - StuckReason_STUCK_REASON_REWORK_CAP StuckReason = 2 - StuckReason_STUCK_REASON_ABANDONED_REVIEW StuckReason = 3 - StuckReason_STUCK_REASON_STALE_WORK StuckReason = 4 - StuckReason_STUCK_REASON_BOUNCING StuckReason = 5 - StuckReason_STUCK_REASON_PUSH_FAILED StuckReason = 6 - StuckReason_STUCK_REASON_ORPHANED_TRIAGE StuckReason = 7 - StuckReason_STUCK_REASON_AUTONOMOUS_STUCK StuckReason = 8 - StuckReason_STUCK_REASON_SPAWN_FAILED StuckReason = 9 - StuckReason_STUCK_REASON_PLAN_NOT_APPROVED StuckReason = 10 - StuckReason_STUCK_REASON_PR_PENDING_NO_PR StuckReason = 11 - // STUCK_REASON_REWORK_BLOCKED_STALE: see domain.StuckReasonReworkBlockedStale - // (session/domain/backlog.go) — a review-status item's rework attempt is - // blocked by a still-alive-but-stale prior work session. - StuckReason_STUCK_REASON_REWORK_BLOCKED_STALE StuckReason = 12 - // STUCK_REASON_PR_NEEDS_FIX: see domain.StuckReasonPRNeedsFix - // (session/domain/backlog.go) — a pr_pending item's PR has failing CI, a - // blocking review, a merge conflict, or unaddressed comment feedback, and - // ReconcilePRPending's comment-feedback-driven fix attempts have exhausted - // the shared rework cap. - StuckReason_STUCK_REASON_PR_NEEDS_FIX StuckReason = 13 - // STUCK_REASON_RESPAWN_BLOCKED_ACTIVE: see domain.StuckReasonRespawnBlockedActive - // (session/domain/backlog.go) — an automated respawn attempt - // (AutoRespawnAutonomousWork, AutoReopenForPRFix, or AutoRespawnReview) was - // skipped because the item already has an active work or review session. - StuckReason_STUCK_REASON_RESPAWN_BLOCKED_ACTIVE StuckReason = 14 - // STUCK_REASON_LIKELY_FLAKY: see domain.StuckReasonLikelyFlaky - // (session/domain/backlog.go) — behavioral evidence (a review-verdict - // flip-flop on an unchanged diff, or a test-file-only rework cycle) that - // this item's review outcome may be non-deterministic rather than a real - // pass/fail signal. Purely informational — never gates the reopen/park - // decision; present as a hint to verify, not a confident verdict. - StuckReason_STUCK_REASON_LIKELY_FLAKY StuckReason = 15 -) - -// Enum value maps for StuckReason. -var ( - StuckReason_name = map[int32]string{ - 0: "STUCK_REASON_UNSPECIFIED", - 1: "STUCK_REASON_PR_READY_UNMERGED", - 2: "STUCK_REASON_REWORK_CAP", - 3: "STUCK_REASON_ABANDONED_REVIEW", - 4: "STUCK_REASON_STALE_WORK", - 5: "STUCK_REASON_BOUNCING", - 6: "STUCK_REASON_PUSH_FAILED", - 7: "STUCK_REASON_ORPHANED_TRIAGE", - 8: "STUCK_REASON_AUTONOMOUS_STUCK", - 9: "STUCK_REASON_SPAWN_FAILED", - 10: "STUCK_REASON_PLAN_NOT_APPROVED", - 11: "STUCK_REASON_PR_PENDING_NO_PR", - 12: "STUCK_REASON_REWORK_BLOCKED_STALE", - 13: "STUCK_REASON_PR_NEEDS_FIX", - 14: "STUCK_REASON_RESPAWN_BLOCKED_ACTIVE", - 15: "STUCK_REASON_LIKELY_FLAKY", - } - StuckReason_value = map[string]int32{ - "STUCK_REASON_UNSPECIFIED": 0, - "STUCK_REASON_PR_READY_UNMERGED": 1, - "STUCK_REASON_REWORK_CAP": 2, - "STUCK_REASON_ABANDONED_REVIEW": 3, - "STUCK_REASON_STALE_WORK": 4, - "STUCK_REASON_BOUNCING": 5, - "STUCK_REASON_PUSH_FAILED": 6, - "STUCK_REASON_ORPHANED_TRIAGE": 7, - "STUCK_REASON_AUTONOMOUS_STUCK": 8, - "STUCK_REASON_SPAWN_FAILED": 9, - "STUCK_REASON_PLAN_NOT_APPROVED": 10, - "STUCK_REASON_PR_PENDING_NO_PR": 11, - "STUCK_REASON_REWORK_BLOCKED_STALE": 12, - "STUCK_REASON_PR_NEEDS_FIX": 13, - "STUCK_REASON_RESPAWN_BLOCKED_ACTIVE": 14, - "STUCK_REASON_LIKELY_FLAKY": 15, - } -) - -func (x StuckReason) Enum() *StuckReason { - p := new(StuckReason) - *p = x - return p -} - -func (x StuckReason) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StuckReason) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_backlog_proto_enumTypes[0].Descriptor() -} - -func (StuckReason) Type() protoreflect.EnumType { - return &file_session_v1_backlog_proto_enumTypes[0] -} - -func (x StuckReason) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use StuckReason.Descriptor instead. -func (StuckReason) EnumDescriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{0} -} - -// AcCriterion represents a single acceptance criterion for a backlog item. -type AcCriterion struct { - state protoimpl.MessageState `protogen:"open.v1"` - Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` - Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` - Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` // "pending", "in_progress", "done" - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AcCriterion) Reset() { - *x = AcCriterion{} - mi := &file_session_v1_backlog_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AcCriterion) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AcCriterion) ProtoMessage() {} - -func (x *AcCriterion) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AcCriterion.ProtoReflect.Descriptor instead. -func (*AcCriterion) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{0} -} - -func (x *AcCriterion) GetIndex() int32 { - if x != nil { - return x.Index - } - return 0 -} - -func (x *AcCriterion) GetText() string { - if x != nil { - return x.Text - } - return "" -} - -func (x *AcCriterion) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -// CriterionVerdict holds the review outcome for a single acceptance criterion. -type CriterionVerdict struct { - state protoimpl.MessageState `protogen:"open.v1"` - CriterionIndex int32 `protobuf:"varint,1,opt,name=criterion_index,json=criterionIndex,proto3" json:"criterion_index,omitempty"` - Outcome string `protobuf:"bytes,2,opt,name=outcome,proto3" json:"outcome,omitempty"` - Evidence string `protobuf:"bytes,3,opt,name=evidence,proto3" json:"evidence,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CriterionVerdict) Reset() { - *x = CriterionVerdict{} - mi := &file_session_v1_backlog_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CriterionVerdict) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CriterionVerdict) ProtoMessage() {} - -func (x *CriterionVerdict) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CriterionVerdict.ProtoReflect.Descriptor instead. -func (*CriterionVerdict) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{1} -} - -func (x *CriterionVerdict) GetCriterionIndex() int32 { - if x != nil { - return x.CriterionIndex - } - return 0 -} - -func (x *CriterionVerdict) GetOutcome() string { - if x != nil { - return x.Outcome - } - return "" -} - -func (x *CriterionVerdict) GetEvidence() string { - if x != nil { - return x.Evidence - } - return "" -} - -// ReviewVerdict captures the overall and per-criterion review outcome for an -// item session. -type ReviewVerdict struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - OverallOutcome string `protobuf:"bytes,2,opt,name=overall_outcome,json=overallOutcome,proto3" json:"overall_outcome,omitempty"` - PerCriterion []*CriterionVerdict `protobuf:"bytes,3,rep,name=per_criterion,json=perCriterion,proto3" json:"per_criterion,omitempty"` - Summary string `protobuf:"bytes,4,opt,name=summary,proto3" json:"summary,omitempty"` - DiffHash string `protobuf:"bytes,5,opt,name=diff_hash,json=diffHash,proto3" json:"diff_hash,omitempty"` - DiffTokenCount int32 `protobuf:"varint,6,opt,name=diff_token_count,json=diffTokenCount,proto3" json:"diff_token_count,omitempty"` - DiffTruncated bool `protobuf:"varint,7,opt,name=diff_truncated,json=diffTruncated,proto3" json:"diff_truncated,omitempty"` - OverrideBy string `protobuf:"bytes,8,opt,name=override_by,json=overrideBy,proto3" json:"override_by,omitempty"` - OverrideReason string `protobuf:"bytes,9,opt,name=override_reason,json=overrideReason,proto3" json:"override_reason,omitempty"` - OverrideAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=override_at,json=overrideAt,proto3" json:"override_at,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReviewVerdict) Reset() { - *x = ReviewVerdict{} - mi := &file_session_v1_backlog_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReviewVerdict) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReviewVerdict) ProtoMessage() {} - -func (x *ReviewVerdict) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReviewVerdict.ProtoReflect.Descriptor instead. -func (*ReviewVerdict) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{2} -} - -func (x *ReviewVerdict) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *ReviewVerdict) GetOverallOutcome() string { - if x != nil { - return x.OverallOutcome - } - return "" -} - -func (x *ReviewVerdict) GetPerCriterion() []*CriterionVerdict { - if x != nil { - return x.PerCriterion - } - return nil -} - -func (x *ReviewVerdict) GetSummary() string { - if x != nil { - return x.Summary - } - return "" -} - -func (x *ReviewVerdict) GetDiffHash() string { - if x != nil { - return x.DiffHash - } - return "" -} - -func (x *ReviewVerdict) GetDiffTokenCount() int32 { - if x != nil { - return x.DiffTokenCount - } - return 0 -} - -func (x *ReviewVerdict) GetDiffTruncated() bool { - if x != nil { - return x.DiffTruncated - } - return false -} - -func (x *ReviewVerdict) GetOverrideBy() string { - if x != nil { - return x.OverrideBy - } - return "" -} - -func (x *ReviewVerdict) GetOverrideReason() string { - if x != nil { - return x.OverrideReason - } - return "" -} - -func (x *ReviewVerdict) GetOverrideAt() *timestamppb.Timestamp { - if x != nil { - return x.OverrideAt - } - return nil -} - -func (x *ReviewVerdict) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -// TriageSuggestion represents a single suggestion from the triage agent. -type TriageSuggestion struct { - state protoimpl.MessageState `protogen:"open.v1"` - Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` - Rationale string `protobuf:"bytes,2,opt,name=rationale,proto3" json:"rationale,omitempty"` // "question" marker for R7-lite clarifying questions - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriageSuggestion) Reset() { - *x = TriageSuggestion{} - mi := &file_session_v1_backlog_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriageSuggestion) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriageSuggestion) ProtoMessage() {} - -func (x *TriageSuggestion) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriageSuggestion.ProtoReflect.Descriptor instead. -func (*TriageSuggestion) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{3} -} - -func (x *TriageSuggestion) GetText() string { - if x != nil { - return x.Text - } - return "" -} - -func (x *TriageSuggestion) GetRationale() string { - if x != nil { - return x.Rationale - } - return "" -} - -// TriageTask represents a single implementation task from the triage plan. -type TriageTask struct { - state protoimpl.MessageState `protogen:"open.v1"` - Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` // one-line task description - Estimate string `protobuf:"bytes,2,opt,name=estimate,proto3" json:"estimate,omitempty"` // e.g. "2h", "30m" - Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category,omitempty"` // e.g. "backend", "frontend", "test", "infra", "docs" - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriageTask) Reset() { - *x = TriageTask{} - mi := &file_session_v1_backlog_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriageTask) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriageTask) ProtoMessage() {} - -func (x *TriageTask) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriageTask.ProtoReflect.Descriptor instead. -func (*TriageTask) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{4} -} - -func (x *TriageTask) GetText() string { - if x != nil { - return x.Text - } - return "" -} - -func (x *TriageTask) GetEstimate() string { - if x != nil { - return x.Estimate - } - return "" -} - -func (x *TriageTask) GetCategory() string { - if x != nil { - return x.Category - } - return "" -} - -// TriageResult holds the output from a completed triage session. -type TriageResult struct { - state protoimpl.MessageState `protogen:"open.v1"` - Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` - Suggestions []*TriageSuggestion `protobuf:"bytes,2,rep,name=suggestions,proto3" json:"suggestions,omitempty"` - ClarifyingQuestions []string `protobuf:"bytes,3,rep,name=clarifying_questions,json=clarifyingQuestions,proto3" json:"clarifying_questions,omitempty"` - Tasks []*TriageTask `protobuf:"bytes,4,rep,name=tasks,proto3" json:"tasks,omitempty"` - // iteration is 1 for the initial triage run, incrementing by one for each - // feedback-driven re-triage of the same item. - Iteration int32 `protobuf:"varint,5,opt,name=iteration,proto3" json:"iteration,omitempty"` - // feedback is the free-text feedback that produced this iteration, empty - // for the initial (non-refined) triage run. - Feedback string `protobuf:"bytes,6,opt,name=feedback,proto3" json:"feedback,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriageResult) Reset() { - *x = TriageResult{} - mi := &file_session_v1_backlog_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriageResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriageResult) ProtoMessage() {} - -func (x *TriageResult) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriageResult.ProtoReflect.Descriptor instead. -func (*TriageResult) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{5} -} - -func (x *TriageResult) GetSummary() string { - if x != nil { - return x.Summary - } - return "" -} - -func (x *TriageResult) GetSuggestions() []*TriageSuggestion { - if x != nil { - return x.Suggestions - } - return nil -} - -func (x *TriageResult) GetClarifyingQuestions() []string { - if x != nil { - return x.ClarifyingQuestions - } - return nil -} - -func (x *TriageResult) GetTasks() []*TriageTask { - if x != nil { - return x.Tasks - } - return nil -} - -func (x *TriageResult) GetIteration() int32 { - if x != nil { - return x.Iteration - } - return 0 -} - -func (x *TriageResult) GetFeedback() string { - if x != nil { - return x.Feedback - } - return "" -} - -// ItemSession records a session that was spawned or attached to a backlog item. -type ItemSession struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SessionUuid string `protobuf:"bytes,2,opt,name=session_uuid,json=sessionUuid,proto3" json:"session_uuid,omitempty"` - SessionRole string `protobuf:"bytes,3,opt,name=session_role,json=sessionRole,proto3" json:"session_role,omitempty"` - StartedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` - EndedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=ended_at,json=endedAt,proto3" json:"ended_at,omitempty"` - LastCommitMessage string `protobuf:"bytes,6,opt,name=last_commit_message,json=lastCommitMessage,proto3" json:"last_commit_message,omitempty"` - LastCommitAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_commit_at,json=lastCommitAt,proto3" json:"last_commit_at,omitempty"` - CommitCountSinceSpawn int32 `protobuf:"varint,8,opt,name=commit_count_since_spawn,json=commitCountSinceSpawn,proto3" json:"commit_count_since_spawn,omitempty"` - LastFileTouchAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_file_touch_at,json=lastFileTouchAt,proto3" json:"last_file_touch_at,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - ReviewVerdict *ReviewVerdict `protobuf:"bytes,11,opt,name=review_verdict,json=reviewVerdict,proto3" json:"review_verdict,omitempty"` - TriageResult *TriageResult `protobuf:"bytes,12,opt,name=triage_result,json=triageResult,proto3" json:"triage_result,omitempty"` - EstimatedCostUsd float64 `protobuf:"fixed64,13,opt,name=estimated_cost_usd,json=estimatedCostUsd,proto3" json:"estimated_cost_usd,omitempty"` - WorktreeBranch string `protobuf:"bytes,14,opt,name=worktree_branch,json=worktreeBranch,proto3" json:"worktree_branch,omitempty"` - WorktreePath string `protobuf:"bytes,15,opt,name=worktree_path,json=worktreePath,proto3" json:"worktree_path,omitempty"` - PipelineModeSnapshot string `protobuf:"bytes,16,opt,name=pipeline_mode_snapshot,json=pipelineModeSnapshot,proto3" json:"pipeline_mode_snapshot,omitempty"` - PipelineModeSnapshotHash string `protobuf:"bytes,17,opt,name=pipeline_mode_snapshot_hash,json=pipelineModeSnapshotHash,proto3" json:"pipeline_mode_snapshot_hash,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ItemSession) Reset() { - *x = ItemSession{} - mi := &file_session_v1_backlog_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ItemSession) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ItemSession) ProtoMessage() {} - -func (x *ItemSession) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ItemSession.ProtoReflect.Descriptor instead. -func (*ItemSession) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{6} -} - -func (x *ItemSession) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *ItemSession) GetSessionUuid() string { - if x != nil { - return x.SessionUuid - } - return "" -} - -func (x *ItemSession) GetSessionRole() string { - if x != nil { - return x.SessionRole - } - return "" -} - -func (x *ItemSession) GetStartedAt() *timestamppb.Timestamp { - if x != nil { - return x.StartedAt - } - return nil -} - -func (x *ItemSession) GetEndedAt() *timestamppb.Timestamp { - if x != nil { - return x.EndedAt - } - return nil -} - -func (x *ItemSession) GetLastCommitMessage() string { - if x != nil { - return x.LastCommitMessage - } - return "" -} - -func (x *ItemSession) GetLastCommitAt() *timestamppb.Timestamp { - if x != nil { - return x.LastCommitAt - } - return nil -} - -func (x *ItemSession) GetCommitCountSinceSpawn() int32 { - if x != nil { - return x.CommitCountSinceSpawn - } - return 0 -} - -func (x *ItemSession) GetLastFileTouchAt() *timestamppb.Timestamp { - if x != nil { - return x.LastFileTouchAt - } - return nil -} - -func (x *ItemSession) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *ItemSession) GetReviewVerdict() *ReviewVerdict { - if x != nil { - return x.ReviewVerdict - } - return nil -} - -func (x *ItemSession) GetTriageResult() *TriageResult { - if x != nil { - return x.TriageResult - } - return nil -} - -func (x *ItemSession) GetEstimatedCostUsd() float64 { - if x != nil { - return x.EstimatedCostUsd - } - return 0 -} - -func (x *ItemSession) GetWorktreeBranch() string { - if x != nil { - return x.WorktreeBranch - } - return "" -} - -func (x *ItemSession) GetWorktreePath() string { - if x != nil { - return x.WorktreePath - } - return "" -} - -func (x *ItemSession) GetPipelineModeSnapshot() string { - if x != nil { - return x.PipelineModeSnapshot - } - return "" -} - -func (x *ItemSession) GetPipelineModeSnapshotHash() string { - if x != nil { - return x.PipelineModeSnapshotHash - } - return "" -} - -// BacklogStatusEvent records a single status transition for a backlog item. -type BacklogStatusEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - FromStatus string `protobuf:"bytes,2,opt,name=from_status,json=fromStatus,proto3" json:"from_status,omitempty"` - ToStatus string `protobuf:"bytes,3,opt,name=to_status,json=toStatus,proto3" json:"to_status,omitempty"` - TriggeredBy string `protobuf:"bytes,4,opt,name=triggered_by,json=triggeredBy,proto3" json:"triggered_by,omitempty"` // "user" or "system" - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // note is the human-readable reason for this transition, e.g. "auto-reopened - // after FAIL verdict" or "PASS verdict — pushed branch and opened PR". Already - // captured durably (session.BacklogStatusEventData.Note) but previously never - // surfaced over the wire — the "why" behind reviewer/system decisions. - Note *string `protobuf:"bytes,6,opt,name=note,proto3,oneof" json:"note,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogStatusEvent) Reset() { - *x = BacklogStatusEvent{} - mi := &file_session_v1_backlog_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogStatusEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogStatusEvent) ProtoMessage() {} - -func (x *BacklogStatusEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogStatusEvent.ProtoReflect.Descriptor instead. -func (*BacklogStatusEvent) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{7} -} - -func (x *BacklogStatusEvent) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *BacklogStatusEvent) GetFromStatus() string { - if x != nil { - return x.FromStatus - } - return "" -} - -func (x *BacklogStatusEvent) GetToStatus() string { - if x != nil { - return x.ToStatus - } - return "" -} - -func (x *BacklogStatusEvent) GetTriggeredBy() string { - if x != nil { - return x.TriggeredBy - } - return "" -} - -func (x *BacklogStatusEvent) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *BacklogStatusEvent) GetNote() string { - if x != nil && x.Note != nil { - return *x.Note - } - return "" -} - -// BacklogProgressNote records a single report_progress call against one of a -// backlog item's acceptance criteria — the implementer's audit trail. Unlike -// AcCriterion.status (current status per criterion, overwritten on each call), -// this is an append-only history: every call is preserved. -type BacklogProgressNote struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - CriterionIndex int32 `protobuf:"varint,2,opt,name=criterion_index,json=criterionIndex,proto3" json:"criterion_index,omitempty"` - Note string `protobuf:"bytes,3,opt,name=note,proto3" json:"note,omitempty"` - Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` // "pending", "in_progress", "done", "fail" - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogProgressNote) Reset() { - *x = BacklogProgressNote{} - mi := &file_session_v1_backlog_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogProgressNote) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogProgressNote) ProtoMessage() {} - -func (x *BacklogProgressNote) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogProgressNote.ProtoReflect.Descriptor instead. -func (*BacklogProgressNote) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{8} -} - -func (x *BacklogProgressNote) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *BacklogProgressNote) GetCriterionIndex() int32 { - if x != nil { - return x.CriterionIndex - } - return 0 -} - -func (x *BacklogProgressNote) GetNote() string { - if x != nil { - return x.Note - } - return "" -} - -func (x *BacklogProgressNote) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *BacklogProgressNote) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -// BacklogItem represents a unit of work in the backlog. -type BacklogItem struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - AcceptanceCriteria []*AcCriterion `protobuf:"bytes,4,rep,name=acceptance_criteria,json=acceptanceCriteria,proto3" json:"acceptance_criteria,omitempty"` - Priority int32 `protobuf:"varint,5,opt,name=priority,proto3" json:"priority,omitempty"` - Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` - RepoPath string `protobuf:"bytes,7,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - SkipReviewGate bool `protobuf:"varint,8,opt,name=skip_review_gate,json=skipReviewGate,proto3" json:"skip_review_gate,omitempty"` - SkipPlanning bool `protobuf:"varint,9,opt,name=skip_planning,json=skipPlanning,proto3" json:"skip_planning,omitempty"` - PlanApproved bool `protobuf:"varint,10,opt,name=plan_approved,json=planApproved,proto3" json:"plan_approved,omitempty"` - PlanApprovedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=plan_approved_at,json=planApprovedAt,proto3" json:"plan_approved_at,omitempty"` - PlanArtifactsPath string `protobuf:"bytes,12,opt,name=plan_artifacts_path,json=planArtifactsPath,proto3" json:"plan_artifacts_path,omitempty"` - Notes string `protobuf:"bytes,13,opt,name=notes,proto3" json:"notes,omitempty"` - ExternalId string `protobuf:"bytes,14,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` - ArchivedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=archived_at,json=archivedAt,proto3" json:"archived_at,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - ItemSessions []*ItemSession `protobuf:"bytes,18,rep,name=item_sessions,json=itemSessions,proto3" json:"item_sessions,omitempty"` - SourceId string `protobuf:"bytes,19,opt,name=source_id,json=sourceId,proto3" json:"source_id,omitempty"` - StatusEvents []*BacklogStatusEvent `protobuf:"bytes,20,rep,name=status_events,json=statusEvents,proto3" json:"status_events,omitempty"` - TotalEstimatedCostUsd float64 `protobuf:"fixed64,21,opt,name=total_estimated_cost_usd,json=totalEstimatedCostUsd,proto3" json:"total_estimated_cost_usd,omitempty"` - PrUrl string `protobuf:"bytes,22,opt,name=pr_url,json=prUrl,proto3" json:"pr_url,omitempty"` - PrNumber int32 `protobuf:"varint,23,opt,name=pr_number,json=prNumber,proto3" json:"pr_number,omitempty"` - AutoSpawnSession bool `protobuf:"varint,24,opt,name=auto_spawn_session,json=autoSpawnSession,proto3" json:"auto_spawn_session,omitempty"` - PipelineMode *string `protobuf:"bytes,25,opt,name=pipeline_mode,json=pipelineMode,proto3,oneof" json:"pipeline_mode,omitempty"` - AutoCreatePr bool `protobuf:"varint,26,opt,name=auto_create_pr,json=autoCreatePr,proto3" json:"auto_create_pr,omitempty"` - // progress_notes is the implementer's append-only report_progress audit - // trail — eagerly loaded alongside status_events (see GetBacklogItem). - ProgressNotes []*BacklogProgressNote `protobuf:"bytes,27,rep,name=progress_notes,json=progressNotes,proto3" json:"progress_notes,omitempty"` - // rework_cap_override: unset means "use the global default" - // (MaxAutoReworkIterationsOrDefault). 0 = unlimited retries for this item. - // >0 = this item's own cap, replacing the global value. - ReworkCapOverride *int32 `protobuf:"varint,28,opt,name=rework_cap_override,json=reworkCapOverride,proto3,oneof" json:"rework_cap_override,omitempty"` - // category is a coarse classification (bugfix/feature/chore/refactor) the - // frontend uses to pre-fill sane automation-toggle defaults at creation - // time. Unset/empty means uncategorized. - Category *string `protobuf:"bytes,29,opt,name=category,proto3,oneof" json:"category,omitempty"` - // external_url is the source tracker's own URL for this item (e.g. a - // GitHub issue's html_url), populated for imported items only. - ExternalUrl *string `protobuf:"bytes,30,opt,name=external_url,json=externalUrl,proto3,oneof" json:"external_url,omitempty"` - // labels mirrors the source tracker's labels (e.g. a GitHub issue's label - // names), populated for imported items only. - Labels []string `protobuf:"bytes,31,rep,name=labels,proto3" json:"labels,omitempty"` - // allowed_transitions is the server's WorkflowEngine.AllowedTransitions(status) - // for this item's current status — the authoritative set of target statuses - // a manual status override may choose from. The frontend must render this - // list verbatim rather than re-encoding the transition graph client-side. - AllowedTransitions []string `protobuf:"bytes,32,rep,name=allowed_transitions,json=allowedTransitions,proto3" json:"allowed_transitions,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogItem) Reset() { - *x = BacklogItem{} - mi := &file_session_v1_backlog_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogItem) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogItem) ProtoMessage() {} - -func (x *BacklogItem) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogItem.ProtoReflect.Descriptor instead. -func (*BacklogItem) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{9} -} - -func (x *BacklogItem) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *BacklogItem) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *BacklogItem) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *BacklogItem) GetAcceptanceCriteria() []*AcCriterion { - if x != nil { - return x.AcceptanceCriteria - } - return nil -} - -func (x *BacklogItem) GetPriority() int32 { - if x != nil { - return x.Priority - } - return 0 -} - -func (x *BacklogItem) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *BacklogItem) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *BacklogItem) GetSkipReviewGate() bool { - if x != nil { - return x.SkipReviewGate - } - return false -} - -func (x *BacklogItem) GetSkipPlanning() bool { - if x != nil { - return x.SkipPlanning - } - return false -} - -func (x *BacklogItem) GetPlanApproved() bool { - if x != nil { - return x.PlanApproved - } - return false -} - -func (x *BacklogItem) GetPlanApprovedAt() *timestamppb.Timestamp { - if x != nil { - return x.PlanApprovedAt - } - return nil -} - -func (x *BacklogItem) GetPlanArtifactsPath() string { - if x != nil { - return x.PlanArtifactsPath - } - return "" -} - -func (x *BacklogItem) GetNotes() string { - if x != nil { - return x.Notes - } - return "" -} - -func (x *BacklogItem) GetExternalId() string { - if x != nil { - return x.ExternalId - } - return "" -} - -func (x *BacklogItem) GetArchivedAt() *timestamppb.Timestamp { - if x != nil { - return x.ArchivedAt - } - return nil -} - -func (x *BacklogItem) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *BacklogItem) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *BacklogItem) GetItemSessions() []*ItemSession { - if x != nil { - return x.ItemSessions - } - return nil -} - -func (x *BacklogItem) GetSourceId() string { - if x != nil { - return x.SourceId - } - return "" -} - -func (x *BacklogItem) GetStatusEvents() []*BacklogStatusEvent { - if x != nil { - return x.StatusEvents - } - return nil -} - -func (x *BacklogItem) GetTotalEstimatedCostUsd() float64 { - if x != nil { - return x.TotalEstimatedCostUsd - } - return 0 -} - -func (x *BacklogItem) GetPrUrl() string { - if x != nil { - return x.PrUrl - } - return "" -} - -func (x *BacklogItem) GetPrNumber() int32 { - if x != nil { - return x.PrNumber - } - return 0 -} - -func (x *BacklogItem) GetAutoSpawnSession() bool { - if x != nil { - return x.AutoSpawnSession - } - return false -} - -func (x *BacklogItem) GetPipelineMode() string { - if x != nil && x.PipelineMode != nil { - return *x.PipelineMode - } - return "" -} - -func (x *BacklogItem) GetAutoCreatePr() bool { - if x != nil { - return x.AutoCreatePr - } - return false -} - -func (x *BacklogItem) GetProgressNotes() []*BacklogProgressNote { - if x != nil { - return x.ProgressNotes - } - return nil -} - -func (x *BacklogItem) GetReworkCapOverride() int32 { - if x != nil && x.ReworkCapOverride != nil { - return *x.ReworkCapOverride - } - return 0 -} - -func (x *BacklogItem) GetCategory() string { - if x != nil && x.Category != nil { - return *x.Category - } - return "" -} - -func (x *BacklogItem) GetExternalUrl() string { - if x != nil && x.ExternalUrl != nil { - return *x.ExternalUrl - } - return "" -} - -func (x *BacklogItem) GetLabels() []string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *BacklogItem) GetAllowedTransitions() []string { - if x != nil { - return x.AllowedTransitions - } - return nil -} - -// ItemSource represents an external plugin source that syncs items into the -// backlog. -type ItemSource struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - PluginId string `protobuf:"bytes,2,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Enabled bool `protobuf:"varint,4,opt,name=enabled,proto3" json:"enabled,omitempty"` - LastSyncedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_synced_at,json=lastSyncedAt,proto3" json:"last_synced_at,omitempty"` - TokenConfigured bool `protobuf:"varint,6,opt,name=token_configured,json=tokenConfigured,proto3" json:"token_configured,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - ForwardSyncEnabled bool `protobuf:"varint,9,opt,name=forward_sync_enabled,json=forwardSyncEnabled,proto3" json:"forward_sync_enabled,omitempty"` - BackwardSyncEnabled bool `protobuf:"varint,10,opt,name=backward_sync_enabled,json=backwardSyncEnabled,proto3" json:"backward_sync_enabled,omitempty"` - ForwardSyncCloseLabel string `protobuf:"bytes,11,opt,name=forward_sync_close_label,json=forwardSyncCloseLabel,proto3" json:"forward_sync_close_label,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ItemSource) Reset() { - *x = ItemSource{} - mi := &file_session_v1_backlog_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ItemSource) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ItemSource) ProtoMessage() {} - -func (x *ItemSource) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ItemSource.ProtoReflect.Descriptor instead. -func (*ItemSource) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{10} -} - -func (x *ItemSource) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *ItemSource) GetPluginId() string { - if x != nil { - return x.PluginId - } - return "" -} - -func (x *ItemSource) GetDisplayName() string { - if x != nil { - return x.DisplayName - } - return "" -} - -func (x *ItemSource) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *ItemSource) GetLastSyncedAt() *timestamppb.Timestamp { - if x != nil { - return x.LastSyncedAt - } - return nil -} - -func (x *ItemSource) GetTokenConfigured() bool { - if x != nil { - return x.TokenConfigured - } - return false -} - -func (x *ItemSource) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *ItemSource) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *ItemSource) GetForwardSyncEnabled() bool { - if x != nil { - return x.ForwardSyncEnabled - } - return false -} - -func (x *ItemSource) GetBackwardSyncEnabled() bool { - if x != nil { - return x.BackwardSyncEnabled - } - return false -} - -func (x *ItemSource) GetForwardSyncCloseLabel() string { - if x != nil { - return x.ForwardSyncCloseLabel - } - return "" -} - -// PipelineMode is a named, slug-addressed, user-creatable definition of which -// slash-commands and prompt content a backlog item's pipeline uses. -type PipelineMode struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - Enabled bool `protobuf:"varint,5,opt,name=enabled,proto3" json:"enabled,omitempty"` - StatusCommandTemplate string `protobuf:"bytes,6,opt,name=status_command_template,json=statusCommandTemplate,proto3" json:"status_command_template,omitempty"` - DoneCommandTemplate string `protobuf:"bytes,7,opt,name=done_command_template,json=doneCommandTemplate,proto3" json:"done_command_template,omitempty"` - FailCommandTemplate string `protobuf:"bytes,8,opt,name=fail_command_template,json=failCommandTemplate,proto3" json:"fail_command_template,omitempty"` - ReviewCommandTemplate string `protobuf:"bytes,9,opt,name=review_command_template,json=reviewCommandTemplate,proto3" json:"review_command_template,omitempty"` - ShipCommandTemplate string `protobuf:"bytes,10,opt,name=ship_command_template,json=shipCommandTemplate,proto3" json:"ship_command_template,omitempty"` - HelpCommandTemplate string `protobuf:"bytes,11,opt,name=help_command_template,json=helpCommandTemplate,proto3" json:"help_command_template,omitempty"` - TriagePromptTemplate string `protobuf:"bytes,12,opt,name=triage_prompt_template,json=triagePromptTemplate,proto3" json:"triage_prompt_template,omitempty"` - ReviewPromptTemplate string `protobuf:"bytes,13,opt,name=review_prompt_template,json=reviewPromptTemplate,proto3" json:"review_prompt_template,omitempty"` - InitialPromptTemplate string `protobuf:"bytes,14,opt,name=initial_prompt_template,json=initialPromptTemplate,proto3" json:"initial_prompt_template,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // content_hash is DERIVED: computed on read (SHA-256 hex, truncated to 16 - // chars) from the row's live 9 content-template fields, in fixed field - // order — it is not a stored DB column. Used by the "what ran" UI to - // detect drift between a session's frozen snapshot hash and this mode's - // current content. - ContentHash string `protobuf:"bytes,17,opt,name=content_hash,json=contentHash,proto3" json:"content_hash,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PipelineMode) Reset() { - *x = PipelineMode{} - mi := &file_session_v1_backlog_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PipelineMode) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PipelineMode) ProtoMessage() {} - -func (x *PipelineMode) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PipelineMode.ProtoReflect.Descriptor instead. -func (*PipelineMode) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{11} -} - -func (x *PipelineMode) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *PipelineMode) GetSlug() string { - if x != nil { - return x.Slug - } - return "" -} - -func (x *PipelineMode) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *PipelineMode) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *PipelineMode) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *PipelineMode) GetStatusCommandTemplate() string { - if x != nil { - return x.StatusCommandTemplate - } - return "" -} - -func (x *PipelineMode) GetDoneCommandTemplate() string { - if x != nil { - return x.DoneCommandTemplate - } - return "" -} - -func (x *PipelineMode) GetFailCommandTemplate() string { - if x != nil { - return x.FailCommandTemplate - } - return "" -} - -func (x *PipelineMode) GetReviewCommandTemplate() string { - if x != nil { - return x.ReviewCommandTemplate - } - return "" -} - -func (x *PipelineMode) GetShipCommandTemplate() string { - if x != nil { - return x.ShipCommandTemplate - } - return "" -} - -func (x *PipelineMode) GetHelpCommandTemplate() string { - if x != nil { - return x.HelpCommandTemplate - } - return "" -} - -func (x *PipelineMode) GetTriagePromptTemplate() string { - if x != nil { - return x.TriagePromptTemplate - } - return "" -} - -func (x *PipelineMode) GetReviewPromptTemplate() string { - if x != nil { - return x.ReviewPromptTemplate - } - return "" -} - -func (x *PipelineMode) GetInitialPromptTemplate() string { - if x != nil { - return x.InitialPromptTemplate - } - return "" -} - -func (x *PipelineMode) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *PipelineMode) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *PipelineMode) GetContentHash() string { - if x != nil { - return x.ContentHash - } - return "" -} - -// SourceSyncEvent records the result of a single sync run for an ItemSource. -type SourceSyncEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - StartedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` - FinishedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=finished_at,json=finishedAt,proto3" json:"finished_at,omitempty"` - ItemsCreated int32 `protobuf:"varint,4,opt,name=items_created,json=itemsCreated,proto3" json:"items_created,omitempty"` - ItemsUpdated int32 `protobuf:"varint,5,opt,name=items_updated,json=itemsUpdated,proto3" json:"items_updated,omitempty"` - ItemsSkipped int32 `protobuf:"varint,6,opt,name=items_skipped,json=itemsSkipped,proto3" json:"items_skipped,omitempty"` - ItemsErrored int32 `protobuf:"varint,7,opt,name=items_errored,json=itemsErrored,proto3" json:"items_errored,omitempty"` - ErrorMessage string `protobuf:"bytes,8,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SourceSyncEvent) Reset() { - *x = SourceSyncEvent{} - mi := &file_session_v1_backlog_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SourceSyncEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SourceSyncEvent) ProtoMessage() {} - -func (x *SourceSyncEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SourceSyncEvent.ProtoReflect.Descriptor instead. -func (*SourceSyncEvent) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{12} -} - -func (x *SourceSyncEvent) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *SourceSyncEvent) GetStartedAt() *timestamppb.Timestamp { - if x != nil { - return x.StartedAt - } - return nil -} - -func (x *SourceSyncEvent) GetFinishedAt() *timestamppb.Timestamp { - if x != nil { - return x.FinishedAt - } - return nil -} - -func (x *SourceSyncEvent) GetItemsCreated() int32 { - if x != nil { - return x.ItemsCreated - } - return 0 -} - -func (x *SourceSyncEvent) GetItemsUpdated() int32 { - if x != nil { - return x.ItemsUpdated - } - return 0 -} - -func (x *SourceSyncEvent) GetItemsSkipped() int32 { - if x != nil { - return x.ItemsSkipped - } - return 0 -} - -func (x *SourceSyncEvent) GetItemsErrored() int32 { - if x != nil { - return x.ItemsErrored - } - return 0 -} - -func (x *SourceSyncEvent) GetErrorMessage() string { - if x != nil { - return x.ErrorMessage - } - return "" -} - -type CreateBacklogItemRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - AcceptanceCriteria []*AcCriterion `protobuf:"bytes,3,rep,name=acceptance_criteria,json=acceptanceCriteria,proto3" json:"acceptance_criteria,omitempty"` - Priority int32 `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"` - SkipReviewGate bool `protobuf:"varint,5,opt,name=skip_review_gate,json=skipReviewGate,proto3" json:"skip_review_gate,omitempty"` - SkipPlanning bool `protobuf:"varint,6,opt,name=skip_planning,json=skipPlanning,proto3" json:"skip_planning,omitempty"` - RepoPath string `protobuf:"bytes,7,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - Notes string `protobuf:"bytes,8,opt,name=notes,proto3" json:"notes,omitempty"` - SkipTriage bool `protobuf:"varint,9,opt,name=skip_triage,json=skipTriage,proto3" json:"skip_triage,omitempty"` - AutoSpawnSession bool `protobuf:"varint,10,opt,name=auto_spawn_session,json=autoSpawnSession,proto3" json:"auto_spawn_session,omitempty"` - PipelineMode *string `protobuf:"bytes,11,opt,name=pipeline_mode,json=pipelineMode,proto3,oneof" json:"pipeline_mode,omitempty"` - AutoCreatePr bool `protobuf:"varint,12,opt,name=auto_create_pr,json=autoCreatePr,proto3" json:"auto_create_pr,omitempty"` - // category is a coarse classification (bugfix/feature/chore/refactor). - // Unset means uncategorized. - Category *string `protobuf:"bytes,13,opt,name=category,proto3,oneof" json:"category,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateBacklogItemRequest) Reset() { - *x = CreateBacklogItemRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateBacklogItemRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateBacklogItemRequest) ProtoMessage() {} - -func (x *CreateBacklogItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateBacklogItemRequest.ProtoReflect.Descriptor instead. -func (*CreateBacklogItemRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{13} -} - -func (x *CreateBacklogItemRequest) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *CreateBacklogItemRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *CreateBacklogItemRequest) GetAcceptanceCriteria() []*AcCriterion { - if x != nil { - return x.AcceptanceCriteria - } - return nil -} - -func (x *CreateBacklogItemRequest) GetPriority() int32 { - if x != nil { - return x.Priority - } - return 0 -} - -func (x *CreateBacklogItemRequest) GetSkipReviewGate() bool { - if x != nil { - return x.SkipReviewGate - } - return false -} - -func (x *CreateBacklogItemRequest) GetSkipPlanning() bool { - if x != nil { - return x.SkipPlanning - } - return false -} - -func (x *CreateBacklogItemRequest) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *CreateBacklogItemRequest) GetNotes() string { - if x != nil { - return x.Notes - } - return "" -} - -func (x *CreateBacklogItemRequest) GetSkipTriage() bool { - if x != nil { - return x.SkipTriage - } - return false -} - -func (x *CreateBacklogItemRequest) GetAutoSpawnSession() bool { - if x != nil { - return x.AutoSpawnSession - } - return false -} - -func (x *CreateBacklogItemRequest) GetPipelineMode() string { - if x != nil && x.PipelineMode != nil { - return *x.PipelineMode - } - return "" -} - -func (x *CreateBacklogItemRequest) GetAutoCreatePr() bool { - if x != nil { - return x.AutoCreatePr - } - return false -} - -func (x *CreateBacklogItemRequest) GetCategory() string { - if x != nil && x.Category != nil { - return *x.Category - } - return "" -} - -type CreateBacklogItemResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Item *BacklogItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - TriageTriggered bool `protobuf:"varint,2,opt,name=triage_triggered,json=triageTriggered,proto3" json:"triage_triggered,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateBacklogItemResponse) Reset() { - *x = CreateBacklogItemResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateBacklogItemResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateBacklogItemResponse) ProtoMessage() {} - -func (x *CreateBacklogItemResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateBacklogItemResponse.ProtoReflect.Descriptor instead. -func (*CreateBacklogItemResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{14} -} - -func (x *CreateBacklogItemResponse) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -func (x *CreateBacklogItemResponse) GetTriageTriggered() bool { - if x != nil { - return x.TriageTriggered - } - return false -} - -type GetBacklogItemRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBacklogItemRequest) Reset() { - *x = GetBacklogItemRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBacklogItemRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBacklogItemRequest) ProtoMessage() {} - -func (x *GetBacklogItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBacklogItemRequest.ProtoReflect.Descriptor instead. -func (*GetBacklogItemRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{15} -} - -func (x *GetBacklogItemRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -type GetBacklogItemResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Item *BacklogItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBacklogItemResponse) Reset() { - *x = GetBacklogItemResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBacklogItemResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBacklogItemResponse) ProtoMessage() {} - -func (x *GetBacklogItemResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBacklogItemResponse.ProtoReflect.Descriptor instead. -func (*GetBacklogItemResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{16} -} - -func (x *GetBacklogItemResponse) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -// BacklogItemShipStatus answers "did this item's code actually ship" from -// durable evidence (repo_path + the most recent work session's commit), -// rather than a live per-session worktree — the live VCSStatus widget can't -// answer this once a session's worktree has been cleaned up (done items). -type BacklogItemShipStatus struct { - state protoimpl.MessageState `protogen:"open.v1"` - // shipped is true when the last work-session commit is confirmed an - // ancestor of main, locally or via origin — see IsCommitOnMain. - Shipped bool `protobuf:"varint,1,opt,name=shipped,proto3" json:"shipped,omitempty"` - // shipped_via is "pr", "direct", or "" when not shipped. - ShippedVia string `protobuf:"bytes,2,opt,name=shipped_via,json=shippedVia,proto3" json:"shipped_via,omitempty"` - PrUrl string `protobuf:"bytes,3,opt,name=pr_url,json=prUrl,proto3" json:"pr_url,omitempty"` - BranchName string `protobuf:"bytes,4,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` - // branch_exists is false once the branch has been deleted (e.g. after a - // GitHub "delete branch on merge" or manual cleanup) — ahead_of_main / - // behind_main are only meaningful when this is true. - BranchExists bool `protobuf:"varint,5,opt,name=branch_exists,json=branchExists,proto3" json:"branch_exists,omitempty"` - AheadOfMain int32 `protobuf:"varint,6,opt,name=ahead_of_main,json=aheadOfMain,proto3" json:"ahead_of_main,omitempty"` - BehindMain int32 `protobuf:"varint,7,opt,name=behind_main,json=behindMain,proto3" json:"behind_main,omitempty"` - LastCommitSha string `protobuf:"bytes,8,opt,name=last_commit_sha,json=lastCommitSha,proto3" json:"last_commit_sha,omitempty"` - LastCommitMessage string `protobuf:"bytes,9,opt,name=last_commit_message,json=lastCommitMessage,proto3" json:"last_commit_message,omitempty"` - LastCommitAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=last_commit_at,json=lastCommitAt,proto3" json:"last_commit_at,omitempty"` - // error is set (with all other fields at zero value) when repo_path is - // inaccessible or no work session ever committed anything. - Error string `protobuf:"bytes,11,opt,name=error,proto3" json:"error,omitempty"` - // commits lists every commit in the shipped range (base..last work-session - // commit), newest first — like a PR's "Commits" tab, but derived from - // durable git history rather than the GitHub API, so it works the same - // whether the code shipped via a merged PR or a direct commit to main. - Commits []*ShippedCommit `protobuf:"bytes,12,rep,name=commits,proto3" json:"commits,omitempty"` - // shipped_check_conclusion holds the durable GitHub CI-conclusion snapshot - // captured at ship time — genuine GitHub CI-conclusion values only (or - // unset); never a capture-failure sentinel — see snapshot_capture_failed. - // Populated only when a durable snapshot exists (nil/zero-value otherwise). - ShippedCheckConclusion string `protobuf:"bytes,13,opt,name=shipped_check_conclusion,json=shippedCheckConclusion,proto3" json:"shipped_check_conclusion,omitempty"` - // shipped_approved_count is the durable review-approval-count snapshot - // captured at ship time. Populated only when a durable snapshot exists - // (nil/zero-value otherwise). - ShippedApprovedCount int32 `protobuf:"varint,14,opt,name=shipped_approved_count,json=shippedApprovedCount,proto3" json:"shipped_approved_count,omitempty"` - // shipped_changes_req_count is the durable "changes requested" review - // count snapshot captured at ship time. Populated only when a durable - // snapshot exists (nil/zero-value otherwise). - ShippedChangesReqCount int32 `protobuf:"varint,15,opt,name=shipped_changes_req_count,json=shippedChangesReqCount,proto3" json:"shipped_changes_req_count,omitempty"` - // file_stats is the durable per-file diff-stat snapshot captured at ship - // time. Populated only when a durable snapshot exists (nil/zero-value - // otherwise). - FileStats []*ShippedFileStat `protobuf:"bytes,16,rep,name=file_stats,json=fileStats,proto3" json:"file_stats,omitempty"` - // snapshot_at is the timestamp the durable snapshot was captured at. - // Populated only when a durable snapshot exists (nil/zero-value - // otherwise). - SnapshotAt *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=snapshot_at,json=snapshotAt,proto3" json:"snapshot_at,omitempty"` - // snapshot_capture_failed is true when CaptureShipSnapshot's GitHub-data - // group or file-stats group failed to capture at ship time — distinct - // from shipped_check_conclusion, which holds only genuine CI-conclusion - // values. Populated only when a durable snapshot exists (nil/zero-value - // otherwise). - SnapshotCaptureFailed bool `protobuf:"varint,18,opt,name=snapshot_capture_failed,json=snapshotCaptureFailed,proto3" json:"snapshot_capture_failed,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogItemShipStatus) Reset() { - *x = BacklogItemShipStatus{} - mi := &file_session_v1_backlog_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogItemShipStatus) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogItemShipStatus) ProtoMessage() {} - -func (x *BacklogItemShipStatus) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[17] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogItemShipStatus.ProtoReflect.Descriptor instead. -func (*BacklogItemShipStatus) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{17} -} - -func (x *BacklogItemShipStatus) GetShipped() bool { - if x != nil { - return x.Shipped - } - return false -} - -func (x *BacklogItemShipStatus) GetShippedVia() string { - if x != nil { - return x.ShippedVia - } - return "" -} - -func (x *BacklogItemShipStatus) GetPrUrl() string { - if x != nil { - return x.PrUrl - } - return "" -} - -func (x *BacklogItemShipStatus) GetBranchName() string { - if x != nil { - return x.BranchName - } - return "" -} - -func (x *BacklogItemShipStatus) GetBranchExists() bool { - if x != nil { - return x.BranchExists - } - return false -} - -func (x *BacklogItemShipStatus) GetAheadOfMain() int32 { - if x != nil { - return x.AheadOfMain - } - return 0 -} - -func (x *BacklogItemShipStatus) GetBehindMain() int32 { - if x != nil { - return x.BehindMain - } - return 0 -} - -func (x *BacklogItemShipStatus) GetLastCommitSha() string { - if x != nil { - return x.LastCommitSha - } - return "" -} - -func (x *BacklogItemShipStatus) GetLastCommitMessage() string { - if x != nil { - return x.LastCommitMessage - } - return "" -} - -func (x *BacklogItemShipStatus) GetLastCommitAt() *timestamppb.Timestamp { - if x != nil { - return x.LastCommitAt - } - return nil -} - -func (x *BacklogItemShipStatus) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -func (x *BacklogItemShipStatus) GetCommits() []*ShippedCommit { - if x != nil { - return x.Commits - } - return nil -} - -func (x *BacklogItemShipStatus) GetShippedCheckConclusion() string { - if x != nil { - return x.ShippedCheckConclusion - } - return "" -} - -func (x *BacklogItemShipStatus) GetShippedApprovedCount() int32 { - if x != nil { - return x.ShippedApprovedCount - } - return 0 -} - -func (x *BacklogItemShipStatus) GetShippedChangesReqCount() int32 { - if x != nil { - return x.ShippedChangesReqCount - } - return 0 -} - -func (x *BacklogItemShipStatus) GetFileStats() []*ShippedFileStat { - if x != nil { - return x.FileStats - } - return nil -} - -func (x *BacklogItemShipStatus) GetSnapshotAt() *timestamppb.Timestamp { - if x != nil { - return x.SnapshotAt - } - return nil -} - -func (x *BacklogItemShipStatus) GetSnapshotCaptureFailed() bool { - if x != nil { - return x.SnapshotCaptureFailed - } - return false -} - -// ShippedCommit is one commit in a BacklogItemShipStatus's shipped range. -type ShippedCommit struct { - state protoimpl.MessageState `protogen:"open.v1"` - Sha string `protobuf:"bytes,1,opt,name=sha,proto3" json:"sha,omitempty"` - Summary string `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"` // first line of the commit message - AuthorName string `protobuf:"bytes,3,opt,name=author_name,json=authorName,proto3" json:"author_name,omitempty"` - AuthoredAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=authored_at,json=authoredAt,proto3" json:"authored_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ShippedCommit) Reset() { - *x = ShippedCommit{} - mi := &file_session_v1_backlog_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ShippedCommit) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ShippedCommit) ProtoMessage() {} - -func (x *ShippedCommit) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[18] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ShippedCommit.ProtoReflect.Descriptor instead. -func (*ShippedCommit) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{18} -} - -func (x *ShippedCommit) GetSha() string { - if x != nil { - return x.Sha - } - return "" -} - -func (x *ShippedCommit) GetSummary() string { - if x != nil { - return x.Summary - } - return "" -} - -func (x *ShippedCommit) GetAuthorName() string { - if x != nil { - return x.AuthorName - } - return "" -} - -func (x *ShippedCommit) GetAuthoredAt() *timestamppb.Timestamp { - if x != nil { - return x.AuthoredAt - } - return nil -} - -// ShippedFileStat is one file's durable per-file diff-stat snapshot, -// captured at ship time via FileStatsBetween. Mirrors FileChange's field -// shape so the proto<->ent mapping stays mechanical. -type ShippedFileStat struct { - state protoimpl.MessageState `protogen:"open.v1"` - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Status FileStatus `protobuf:"varint,2,opt,name=status,proto3,enum=session.v1.FileStatus" json:"status,omitempty"` - Additions int32 `protobuf:"varint,3,opt,name=additions,proto3" json:"additions,omitempty"` - Deletions int32 `protobuf:"varint,4,opt,name=deletions,proto3" json:"deletions,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ShippedFileStat) Reset() { - *x = ShippedFileStat{} - mi := &file_session_v1_backlog_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ShippedFileStat) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ShippedFileStat) ProtoMessage() {} - -func (x *ShippedFileStat) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[19] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ShippedFileStat.ProtoReflect.Descriptor instead. -func (*ShippedFileStat) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{19} -} - -func (x *ShippedFileStat) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *ShippedFileStat) GetStatus() FileStatus { - if x != nil { - return x.Status - } - return FileStatus_FILE_STATUS_UNSPECIFIED -} - -func (x *ShippedFileStat) GetAdditions() int32 { - if x != nil { - return x.Additions - } - return 0 -} - -func (x *ShippedFileStat) GetDeletions() int32 { - if x != nil { - return x.Deletions - } - return 0 -} - -type GetBacklogItemShipStatusRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBacklogItemShipStatusRequest) Reset() { - *x = GetBacklogItemShipStatusRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBacklogItemShipStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBacklogItemShipStatusRequest) ProtoMessage() {} - -func (x *GetBacklogItemShipStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBacklogItemShipStatusRequest.ProtoReflect.Descriptor instead. -func (*GetBacklogItemShipStatusRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{20} -} - -func (x *GetBacklogItemShipStatusRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -type GetBacklogItemShipStatusResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Status *BacklogItemShipStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBacklogItemShipStatusResponse) Reset() { - *x = GetBacklogItemShipStatusResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBacklogItemShipStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBacklogItemShipStatusResponse) ProtoMessage() {} - -func (x *GetBacklogItemShipStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBacklogItemShipStatusResponse.ProtoReflect.Descriptor instead. -func (*GetBacklogItemShipStatusResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{21} -} - -func (x *GetBacklogItemShipStatusResponse) GetStatus() *BacklogItemShipStatus { - if x != nil { - return x.Status - } - return nil -} - -type ListBacklogItemsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Status []string `protobuf:"bytes,1,rep,name=status,proto3" json:"status,omitempty"` - Priority []int32 `protobuf:"varint,2,rep,packed,name=priority,proto3" json:"priority,omitempty"` - SortBy string `protobuf:"bytes,3,opt,name=sort_by,json=sortBy,proto3" json:"sort_by,omitempty"` - // include_terminal, when true, includes items with status "done" in the - // default (no explicit `status` filter) result set. Independent of - // include_archived below — this field no longer also controls "archived" - // visibility (see include_archived's doc comment for why that split - // exists). - IncludeTerminal bool `protobuf:"varint,4,opt,name=include_terminal,json=includeTerminal,proto3" json:"include_terminal,omitempty"` - // include_archived, when true, includes items with status "archived" in - // the default (no explicit `status` filter) result set. Split out from - // include_terminal so a client can show "done" items by default while - // still hiding "archived" ones unless the user opts in (mirrors the - // session list's "Show Archived" toggle). Ignored when `status` is set - // explicitly — an explicit status filter always wins. - IncludeArchived bool `protobuf:"varint,5,opt,name=include_archived,json=includeArchived,proto3" json:"include_archived,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListBacklogItemsRequest) Reset() { - *x = ListBacklogItemsRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListBacklogItemsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListBacklogItemsRequest) ProtoMessage() {} - -func (x *ListBacklogItemsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[22] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListBacklogItemsRequest.ProtoReflect.Descriptor instead. -func (*ListBacklogItemsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{22} -} - -func (x *ListBacklogItemsRequest) GetStatus() []string { - if x != nil { - return x.Status - } - return nil -} - -func (x *ListBacklogItemsRequest) GetPriority() []int32 { - if x != nil { - return x.Priority - } - return nil -} - -func (x *ListBacklogItemsRequest) GetSortBy() string { - if x != nil { - return x.SortBy - } - return "" -} - -func (x *ListBacklogItemsRequest) GetIncludeTerminal() bool { - if x != nil { - return x.IncludeTerminal - } - return false -} - -func (x *ListBacklogItemsRequest) GetIncludeArchived() bool { - if x != nil { - return x.IncludeArchived - } - return false -} - -type ListBacklogItemsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Items []*BacklogItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListBacklogItemsResponse) Reset() { - *x = ListBacklogItemsResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListBacklogItemsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListBacklogItemsResponse) ProtoMessage() {} - -func (x *ListBacklogItemsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[23] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListBacklogItemsResponse.ProtoReflect.Descriptor instead. -func (*ListBacklogItemsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{23} -} - -func (x *ListBacklogItemsResponse) GetItems() []*BacklogItem { - if x != nil { - return x.Items - } - return nil -} - -type UpdateBacklogItemRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - AcceptanceCriteria []*AcCriterion `protobuf:"bytes,4,rep,name=acceptance_criteria,json=acceptanceCriteria,proto3" json:"acceptance_criteria,omitempty"` - Priority int32 `protobuf:"varint,5,opt,name=priority,proto3" json:"priority,omitempty"` - SkipReviewGate bool `protobuf:"varint,6,opt,name=skip_review_gate,json=skipReviewGate,proto3" json:"skip_review_gate,omitempty"` - SkipPlanning bool `protobuf:"varint,7,opt,name=skip_planning,json=skipPlanning,proto3" json:"skip_planning,omitempty"` - RepoPath string `protobuf:"bytes,8,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - Notes string `protobuf:"bytes,9,opt,name=notes,proto3" json:"notes,omitempty"` - ExpectedStatus string `protobuf:"bytes,10,opt,name=expected_status,json=expectedStatus,proto3" json:"expected_status,omitempty"` - ExpectedUpdatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=expected_updated_at,json=expectedUpdatedAt,proto3" json:"expected_updated_at,omitempty"` - AutoSpawnSession bool `protobuf:"varint,12,opt,name=auto_spawn_session,json=autoSpawnSession,proto3" json:"auto_spawn_session,omitempty"` - PipelineMode *string `protobuf:"bytes,13,opt,name=pipeline_mode,json=pipelineMode,proto3,oneof" json:"pipeline_mode,omitempty"` - AutoCreatePr bool `protobuf:"varint,14,opt,name=auto_create_pr,json=autoCreatePr,proto3" json:"auto_create_pr,omitempty"` - // rework_cap_override is a per-item override for the auto-rework cap. - // Unset = leave the item's stored override untouched. 0 = unlimited retries - // for this item. >0 = this item's own cap, replacing the global default. - ReworkCapOverride *int32 `protobuf:"varint,15,opt,name=rework_cap_override,json=reworkCapOverride,proto3,oneof" json:"rework_cap_override,omitempty"` - // category is presence-gated (optional string on the wire): unset means - // "leave the item's stored category untouched", a non-nil pointer - // (including one pointing at "") explicitly sets/clears it. - Category *string `protobuf:"bytes,16,opt,name=category,proto3,oneof" json:"category,omitempty"` - // pr_url/pr_number are presence-gated (optional on the wire) and must be - // set together or not at all: setting exactly one is rejected with - // CodeInvalidArgument. When both are set, the server validates pr_url - // parses as a GitHub PR URL whose embedded PR number matches pr_number, - // then writes through the shared SetBacklogItemPRAndTransition primitive - // (requires the item to currently be in "review" status). - PrUrl *string `protobuf:"bytes,17,opt,name=pr_url,json=prUrl,proto3,oneof" json:"pr_url,omitempty"` - PrNumber *int32 `protobuf:"varint,18,opt,name=pr_number,json=prNumber,proto3,oneof" json:"pr_number,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateBacklogItemRequest) Reset() { - *x = UpdateBacklogItemRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateBacklogItemRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateBacklogItemRequest) ProtoMessage() {} - -func (x *UpdateBacklogItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[24] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateBacklogItemRequest.ProtoReflect.Descriptor instead. -func (*UpdateBacklogItemRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{24} -} - -func (x *UpdateBacklogItemRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *UpdateBacklogItemRequest) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *UpdateBacklogItemRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *UpdateBacklogItemRequest) GetAcceptanceCriteria() []*AcCriterion { - if x != nil { - return x.AcceptanceCriteria - } - return nil -} - -func (x *UpdateBacklogItemRequest) GetPriority() int32 { - if x != nil { - return x.Priority - } - return 0 -} - -func (x *UpdateBacklogItemRequest) GetSkipReviewGate() bool { - if x != nil { - return x.SkipReviewGate - } - return false -} - -func (x *UpdateBacklogItemRequest) GetSkipPlanning() bool { - if x != nil { - return x.SkipPlanning - } - return false -} - -func (x *UpdateBacklogItemRequest) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *UpdateBacklogItemRequest) GetNotes() string { - if x != nil { - return x.Notes - } - return "" -} - -func (x *UpdateBacklogItemRequest) GetExpectedStatus() string { - if x != nil { - return x.ExpectedStatus - } - return "" -} - -func (x *UpdateBacklogItemRequest) GetExpectedUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.ExpectedUpdatedAt - } - return nil -} - -func (x *UpdateBacklogItemRequest) GetAutoSpawnSession() bool { - if x != nil { - return x.AutoSpawnSession - } - return false -} - -func (x *UpdateBacklogItemRequest) GetPipelineMode() string { - if x != nil && x.PipelineMode != nil { - return *x.PipelineMode - } - return "" -} - -func (x *UpdateBacklogItemRequest) GetAutoCreatePr() bool { - if x != nil { - return x.AutoCreatePr - } - return false -} - -func (x *UpdateBacklogItemRequest) GetReworkCapOverride() int32 { - if x != nil && x.ReworkCapOverride != nil { - return *x.ReworkCapOverride - } - return 0 -} - -func (x *UpdateBacklogItemRequest) GetCategory() string { - if x != nil && x.Category != nil { - return *x.Category - } - return "" -} - -func (x *UpdateBacklogItemRequest) GetPrUrl() string { - if x != nil && x.PrUrl != nil { - return *x.PrUrl - } - return "" -} - -func (x *UpdateBacklogItemRequest) GetPrNumber() int32 { - if x != nil && x.PrNumber != nil { - return *x.PrNumber - } - return 0 -} - -type UpdateBacklogItemResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Item *BacklogItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateBacklogItemResponse) Reset() { - *x = UpdateBacklogItemResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateBacklogItemResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateBacklogItemResponse) ProtoMessage() {} - -func (x *UpdateBacklogItemResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[25] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateBacklogItemResponse.ProtoReflect.Descriptor instead. -func (*UpdateBacklogItemResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{25} -} - -func (x *UpdateBacklogItemResponse) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -type ArchiveBacklogItemRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ArchiveBacklogItemRequest) Reset() { - *x = ArchiveBacklogItemRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ArchiveBacklogItemRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ArchiveBacklogItemRequest) ProtoMessage() {} - -func (x *ArchiveBacklogItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[26] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ArchiveBacklogItemRequest.ProtoReflect.Descriptor instead. -func (*ArchiveBacklogItemRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{26} -} - -func (x *ArchiveBacklogItemRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -type ArchiveBacklogItemResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Item *BacklogItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ArchiveBacklogItemResponse) Reset() { - *x = ArchiveBacklogItemResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ArchiveBacklogItemResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ArchiveBacklogItemResponse) ProtoMessage() {} - -func (x *ArchiveBacklogItemResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[27] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ArchiveBacklogItemResponse.ProtoReflect.Descriptor instead. -func (*ArchiveBacklogItemResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{27} -} - -func (x *ArchiveBacklogItemResponse) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -type DeleteBacklogItemRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteBacklogItemRequest) Reset() { - *x = DeleteBacklogItemRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteBacklogItemRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteBacklogItemRequest) ProtoMessage() {} - -func (x *DeleteBacklogItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[28] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteBacklogItemRequest.ProtoReflect.Descriptor instead. -func (*DeleteBacklogItemRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{28} -} - -func (x *DeleteBacklogItemRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -type DeleteBacklogItemResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteBacklogItemResponse) Reset() { - *x = DeleteBacklogItemResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteBacklogItemResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteBacklogItemResponse) ProtoMessage() {} - -func (x *DeleteBacklogItemResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[29] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteBacklogItemResponse.ProtoReflect.Descriptor instead. -func (*DeleteBacklogItemResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{29} -} - -type TransitionBacklogItemStatusRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - TargetStatus string `protobuf:"bytes,2,opt,name=target_status,json=targetStatus,proto3" json:"target_status,omitempty"` - ExpectedStatus string `protobuf:"bytes,3,opt,name=expected_status,json=expectedStatus,proto3" json:"expected_status,omitempty"` - ExpectedUpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expected_updated_at,json=expectedUpdatedAt,proto3" json:"expected_updated_at,omitempty"` - OverrideReason string `protobuf:"bytes,5,opt,name=override_reason,json=overrideReason,proto3" json:"override_reason,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TransitionBacklogItemStatusRequest) Reset() { - *x = TransitionBacklogItemStatusRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TransitionBacklogItemStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TransitionBacklogItemStatusRequest) ProtoMessage() {} - -func (x *TransitionBacklogItemStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[30] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TransitionBacklogItemStatusRequest.ProtoReflect.Descriptor instead. -func (*TransitionBacklogItemStatusRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{30} -} - -func (x *TransitionBacklogItemStatusRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *TransitionBacklogItemStatusRequest) GetTargetStatus() string { - if x != nil { - return x.TargetStatus - } - return "" -} - -func (x *TransitionBacklogItemStatusRequest) GetExpectedStatus() string { - if x != nil { - return x.ExpectedStatus - } - return "" -} - -func (x *TransitionBacklogItemStatusRequest) GetExpectedUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.ExpectedUpdatedAt - } - return nil -} - -func (x *TransitionBacklogItemStatusRequest) GetOverrideReason() string { - if x != nil { - return x.OverrideReason - } - return "" -} - -type TransitionBacklogItemStatusResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Item *BacklogItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TransitionBacklogItemStatusResponse) Reset() { - *x = TransitionBacklogItemStatusResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TransitionBacklogItemStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TransitionBacklogItemStatusResponse) ProtoMessage() {} - -func (x *TransitionBacklogItemStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[31] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TransitionBacklogItemStatusResponse.ProtoReflect.Descriptor instead. -func (*TransitionBacklogItemStatusResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{31} -} - -func (x *TransitionBacklogItemStatusResponse) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -type SpawnSessionFromItemRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - // Optional: If true, start an AutonomousDriver for the spawned session. - Autonomous bool `protobuf:"varint,3,opt,name=autonomous,proto3" json:"autonomous,omitempty"` - // Optional: If true, stop any currently active work session for this item and - // re-spawn it from scratch (with a new git worktree). Used to restart existing - // sessions that were started under the old directory-mode code path. - Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SpawnSessionFromItemRequest) Reset() { - *x = SpawnSessionFromItemRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SpawnSessionFromItemRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SpawnSessionFromItemRequest) ProtoMessage() {} - -func (x *SpawnSessionFromItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[32] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SpawnSessionFromItemRequest.ProtoReflect.Descriptor instead. -func (*SpawnSessionFromItemRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{32} -} - -func (x *SpawnSessionFromItemRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *SpawnSessionFromItemRequest) GetAutonomous() bool { - if x != nil { - return x.Autonomous - } - return false -} - -func (x *SpawnSessionFromItemRequest) GetForce() bool { - if x != nil { - return x.Force - } - return false -} - -type SpawnSessionFromItemResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionUuid string `protobuf:"bytes,1,opt,name=session_uuid,json=sessionUuid,proto3" json:"session_uuid,omitempty"` - ItemSession *ItemSession `protobuf:"bytes,2,opt,name=item_session,json=itemSession,proto3" json:"item_session,omitempty"` - // True if the spawn hit the concurrency cap and the item was transitioned to - // "queued" instead of spawning a session. session_uuid/item_session are empty - // in that case. - Queued bool `protobuf:"varint,3,opt,name=queued,proto3" json:"queued,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SpawnSessionFromItemResponse) Reset() { - *x = SpawnSessionFromItemResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SpawnSessionFromItemResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SpawnSessionFromItemResponse) ProtoMessage() {} - -func (x *SpawnSessionFromItemResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[33] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SpawnSessionFromItemResponse.ProtoReflect.Descriptor instead. -func (*SpawnSessionFromItemResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{33} -} - -func (x *SpawnSessionFromItemResponse) GetSessionUuid() string { - if x != nil { - return x.SessionUuid - } - return "" -} - -func (x *SpawnSessionFromItemResponse) GetItemSession() *ItemSession { - if x != nil { - return x.ItemSession - } - return nil -} - -func (x *SpawnSessionFromItemResponse) GetQueued() bool { - if x != nil { - return x.Queued - } - return false -} - -type AttachSessionToItemRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - SessionUuid string `protobuf:"bytes,2,opt,name=session_uuid,json=sessionUuid,proto3" json:"session_uuid,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AttachSessionToItemRequest) Reset() { - *x = AttachSessionToItemRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AttachSessionToItemRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AttachSessionToItemRequest) ProtoMessage() {} - -func (x *AttachSessionToItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[34] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AttachSessionToItemRequest.ProtoReflect.Descriptor instead. -func (*AttachSessionToItemRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{34} -} - -func (x *AttachSessionToItemRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *AttachSessionToItemRequest) GetSessionUuid() string { - if x != nil { - return x.SessionUuid - } - return "" -} - -type AttachSessionToItemResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemSession *ItemSession `protobuf:"bytes,1,opt,name=item_session,json=itemSession,proto3" json:"item_session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AttachSessionToItemResponse) Reset() { - *x = AttachSessionToItemResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AttachSessionToItemResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AttachSessionToItemResponse) ProtoMessage() {} - -func (x *AttachSessionToItemResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[35] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AttachSessionToItemResponse.ProtoReflect.Descriptor instead. -func (*AttachSessionToItemResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{35} -} - -func (x *AttachSessionToItemResponse) GetItemSession() *ItemSession { - if x != nil { - return x.ItemSession - } - return nil -} - -type TriggerTriageRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - // feedback, if non-empty, requests a refinement of the item's most recent - // completed triage result instead of a fresh triage run. Requires a prior - // completed triage result to exist. - Feedback string `protobuf:"bytes,2,opt,name=feedback,proto3" json:"feedback,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriggerTriageRequest) Reset() { - *x = TriggerTriageRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriggerTriageRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerTriageRequest) ProtoMessage() {} - -func (x *TriggerTriageRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[36] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriggerTriageRequest.ProtoReflect.Descriptor instead. -func (*TriggerTriageRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{36} -} - -func (x *TriggerTriageRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *TriggerTriageRequest) GetFeedback() string { - if x != nil { - return x.Feedback - } - return "" -} - -type TriggerTriageResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemSession *ItemSession `protobuf:"bytes,1,opt,name=item_session,json=itemSession,proto3" json:"item_session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriggerTriageResponse) Reset() { - *x = TriggerTriageResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriggerTriageResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerTriageResponse) ProtoMessage() {} - -func (x *TriggerTriageResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[37] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriggerTriageResponse.ProtoReflect.Descriptor instead. -func (*TriggerTriageResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{37} -} - -func (x *TriggerTriageResponse) GetItemSession() *ItemSession { - if x != nil { - return x.ItemSession - } - return nil -} - -type ApprovePlanRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ApprovePlanRequest) Reset() { - *x = ApprovePlanRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ApprovePlanRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApprovePlanRequest) ProtoMessage() {} - -func (x *ApprovePlanRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[38] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ApprovePlanRequest.ProtoReflect.Descriptor instead. -func (*ApprovePlanRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{38} -} - -func (x *ApprovePlanRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -type ApprovePlanResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Item *BacklogItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ApprovePlanResponse) Reset() { - *x = ApprovePlanResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ApprovePlanResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApprovePlanResponse) ProtoMessage() {} - -func (x *ApprovePlanResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[39] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ApprovePlanResponse.ProtoReflect.Descriptor instead. -func (*ApprovePlanResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{39} -} - -func (x *ApprovePlanResponse) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -type SuggestNextItemRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SuggestNextItemRequest) Reset() { - *x = SuggestNextItemRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SuggestNextItemRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SuggestNextItemRequest) ProtoMessage() {} - -func (x *SuggestNextItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[40] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SuggestNextItemRequest.ProtoReflect.Descriptor instead. -func (*SuggestNextItemRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{40} -} - -type SuggestNextItemResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Deprecated: use item instead. Left for wire compatibility. - ItemSession *ItemSession `protobuf:"bytes,1,opt,name=item_session,json=itemSession,proto3" json:"item_session,omitempty"` - Item *BacklogItem `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SuggestNextItemResponse) Reset() { - *x = SuggestNextItemResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SuggestNextItemResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SuggestNextItemResponse) ProtoMessage() {} - -func (x *SuggestNextItemResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[41] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SuggestNextItemResponse.ProtoReflect.Descriptor instead. -func (*SuggestNextItemResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{41} -} - -func (x *SuggestNextItemResponse) GetItemSession() *ItemSession { - if x != nil { - return x.ItemSession - } - return nil -} - -func (x *SuggestNextItemResponse) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -type OverrideVerdictRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemSessionId string `protobuf:"bytes,1,opt,name=item_session_id,json=itemSessionId,proto3" json:"item_session_id,omitempty"` - ToStatus string `protobuf:"bytes,2,opt,name=to_status,json=toStatus,proto3" json:"to_status,omitempty"` - OverrideReason string `protobuf:"bytes,3,opt,name=override_reason,json=overrideReason,proto3" json:"override_reason,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *OverrideVerdictRequest) Reset() { - *x = OverrideVerdictRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *OverrideVerdictRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OverrideVerdictRequest) ProtoMessage() {} - -func (x *OverrideVerdictRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[42] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OverrideVerdictRequest.ProtoReflect.Descriptor instead. -func (*OverrideVerdictRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{42} -} - -func (x *OverrideVerdictRequest) GetItemSessionId() string { - if x != nil { - return x.ItemSessionId - } - return "" -} - -func (x *OverrideVerdictRequest) GetToStatus() string { - if x != nil { - return x.ToStatus - } - return "" -} - -func (x *OverrideVerdictRequest) GetOverrideReason() string { - if x != nil { - return x.OverrideReason - } - return "" -} - -type OverrideVerdictResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Item *BacklogItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *OverrideVerdictResponse) Reset() { - *x = OverrideVerdictResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *OverrideVerdictResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OverrideVerdictResponse) ProtoMessage() {} - -func (x *OverrideVerdictResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[43] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OverrideVerdictResponse.ProtoReflect.Descriptor instead. -func (*OverrideVerdictResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{43} -} - -func (x *OverrideVerdictResponse) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -type TriggerReReviewRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriggerReReviewRequest) Reset() { - *x = TriggerReReviewRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriggerReReviewRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerReReviewRequest) ProtoMessage() {} - -func (x *TriggerReReviewRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[44] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriggerReReviewRequest.ProtoReflect.Descriptor instead. -func (*TriggerReReviewRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{44} -} - -func (x *TriggerReReviewRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -type TriggerReReviewResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemSession *ItemSession `protobuf:"bytes,1,opt,name=item_session,json=itemSession,proto3" json:"item_session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriggerReReviewResponse) Reset() { - *x = TriggerReReviewResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriggerReReviewResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerReReviewResponse) ProtoMessage() {} - -func (x *TriggerReReviewResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[45] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriggerReReviewResponse.ProtoReflect.Descriptor instead. -func (*TriggerReReviewResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{45} -} - -func (x *TriggerReReviewResponse) GetItemSession() *ItemSession { - if x != nil { - return x.ItemSession - } - return nil -} - -type TriggerShipPRRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriggerShipPRRequest) Reset() { - *x = TriggerShipPRRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriggerShipPRRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerShipPRRequest) ProtoMessage() {} - -func (x *TriggerShipPRRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[46] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriggerShipPRRequest.ProtoReflect.Descriptor instead. -func (*TriggerShipPRRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{46} -} - -func (x *TriggerShipPRRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -type TriggerShipPRResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // pr_url is the GitHub PR URL extracted from the one-shot run's output, or - // empty if the run completed without producing a detectable PR URL. - PrUrl string `protobuf:"bytes,1,opt,name=pr_url,json=prUrl,proto3" json:"pr_url,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriggerShipPRResponse) Reset() { - *x = TriggerShipPRResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriggerShipPRResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerShipPRResponse) ProtoMessage() {} - -func (x *TriggerShipPRResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[47] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriggerShipPRResponse.ProtoReflect.Descriptor instead. -func (*TriggerShipPRResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{47} -} - -func (x *TriggerShipPRResponse) GetPrUrl() string { - if x != nil { - return x.PrUrl - } - return "" -} - -type TriggerSyncRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SourceId string `protobuf:"bytes,1,opt,name=source_id,json=sourceId,proto3" json:"source_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriggerSyncRequest) Reset() { - *x = TriggerSyncRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriggerSyncRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerSyncRequest) ProtoMessage() {} - -func (x *TriggerSyncRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[48] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriggerSyncRequest.ProtoReflect.Descriptor instead. -func (*TriggerSyncRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{48} -} - -func (x *TriggerSyncRequest) GetSourceId() string { - if x != nil { - return x.SourceId - } - return "" -} - -type TriggerSyncResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriggerSyncResponse) Reset() { - *x = TriggerSyncResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriggerSyncResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerSyncResponse) ProtoMessage() {} - -func (x *TriggerSyncResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[49] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriggerSyncResponse.ProtoReflect.Descriptor instead. -func (*TriggerSyncResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{49} -} - -type CreateItemSourceRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - ConfigJson string `protobuf:"bytes,3,opt,name=config_json,json=configJson,proto3" json:"config_json,omitempty"` - Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateItemSourceRequest) Reset() { - *x = CreateItemSourceRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateItemSourceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateItemSourceRequest) ProtoMessage() {} - -func (x *CreateItemSourceRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[50] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateItemSourceRequest.ProtoReflect.Descriptor instead. -func (*CreateItemSourceRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{50} -} - -func (x *CreateItemSourceRequest) GetPluginId() string { - if x != nil { - return x.PluginId - } - return "" -} - -func (x *CreateItemSourceRequest) GetDisplayName() string { - if x != nil { - return x.DisplayName - } - return "" -} - -func (x *CreateItemSourceRequest) GetConfigJson() string { - if x != nil { - return x.ConfigJson - } - return "" -} - -func (x *CreateItemSourceRequest) GetToken() string { - if x != nil { - return x.Token - } - return "" -} - -type CreateItemSourceResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Source *ItemSource `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateItemSourceResponse) Reset() { - *x = CreateItemSourceResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateItemSourceResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateItemSourceResponse) ProtoMessage() {} - -func (x *CreateItemSourceResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[51] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateItemSourceResponse.ProtoReflect.Descriptor instead. -func (*CreateItemSourceResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{51} -} - -func (x *CreateItemSourceResponse) GetSource() *ItemSource { - if x != nil { - return x.Source - } - return nil -} - -type ListItemSourcesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListItemSourcesRequest) Reset() { - *x = ListItemSourcesRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListItemSourcesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListItemSourcesRequest) ProtoMessage() {} - -func (x *ListItemSourcesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[52] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListItemSourcesRequest.ProtoReflect.Descriptor instead. -func (*ListItemSourcesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{52} -} - -type ListItemSourcesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Sources []*ItemSource `protobuf:"bytes,1,rep,name=sources,proto3" json:"sources,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListItemSourcesResponse) Reset() { - *x = ListItemSourcesResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListItemSourcesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListItemSourcesResponse) ProtoMessage() {} - -func (x *ListItemSourcesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[53] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListItemSourcesResponse.ProtoReflect.Descriptor instead. -func (*ListItemSourcesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{53} -} - -func (x *ListItemSourcesResponse) GetSources() []*ItemSource { - if x != nil { - return x.Sources - } - return nil -} - -type UpdateItemSourceRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SourceId string `protobuf:"bytes,1,opt,name=source_id,json=sourceId,proto3" json:"source_id,omitempty"` - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"` - Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` - ForwardSyncEnabled bool `protobuf:"varint,5,opt,name=forward_sync_enabled,json=forwardSyncEnabled,proto3" json:"forward_sync_enabled,omitempty"` - BackwardSyncEnabled bool `protobuf:"varint,6,opt,name=backward_sync_enabled,json=backwardSyncEnabled,proto3" json:"backward_sync_enabled,omitempty"` - ForwardSyncCloseLabel string `protobuf:"bytes,7,opt,name=forward_sync_close_label,json=forwardSyncCloseLabel,proto3" json:"forward_sync_close_label,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateItemSourceRequest) Reset() { - *x = UpdateItemSourceRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateItemSourceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateItemSourceRequest) ProtoMessage() {} - -func (x *UpdateItemSourceRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[54] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateItemSourceRequest.ProtoReflect.Descriptor instead. -func (*UpdateItemSourceRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{54} -} - -func (x *UpdateItemSourceRequest) GetSourceId() string { - if x != nil { - return x.SourceId - } - return "" -} - -func (x *UpdateItemSourceRequest) GetDisplayName() string { - if x != nil { - return x.DisplayName - } - return "" -} - -func (x *UpdateItemSourceRequest) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *UpdateItemSourceRequest) GetToken() string { - if x != nil { - return x.Token - } - return "" -} - -func (x *UpdateItemSourceRequest) GetForwardSyncEnabled() bool { - if x != nil { - return x.ForwardSyncEnabled - } - return false -} - -func (x *UpdateItemSourceRequest) GetBackwardSyncEnabled() bool { - if x != nil { - return x.BackwardSyncEnabled - } - return false -} - -func (x *UpdateItemSourceRequest) GetForwardSyncCloseLabel() string { - if x != nil { - return x.ForwardSyncCloseLabel - } - return "" -} - -type UpdateItemSourceResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Source *ItemSource `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateItemSourceResponse) Reset() { - *x = UpdateItemSourceResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateItemSourceResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateItemSourceResponse) ProtoMessage() {} - -func (x *UpdateItemSourceResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[55] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateItemSourceResponse.ProtoReflect.Descriptor instead. -func (*UpdateItemSourceResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{55} -} - -func (x *UpdateItemSourceResponse) GetSource() *ItemSource { - if x != nil { - return x.Source - } - return nil -} - -type DeleteItemSourceRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SourceId string `protobuf:"bytes,1,opt,name=source_id,json=sourceId,proto3" json:"source_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteItemSourceRequest) Reset() { - *x = DeleteItemSourceRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteItemSourceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteItemSourceRequest) ProtoMessage() {} - -func (x *DeleteItemSourceRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[56] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteItemSourceRequest.ProtoReflect.Descriptor instead. -func (*DeleteItemSourceRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{56} -} - -func (x *DeleteItemSourceRequest) GetSourceId() string { - if x != nil { - return x.SourceId - } - return "" -} - -type DeleteItemSourceResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteItemSourceResponse) Reset() { - *x = DeleteItemSourceResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteItemSourceResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteItemSourceResponse) ProtoMessage() {} - -func (x *DeleteItemSourceResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[57] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteItemSourceResponse.ProtoReflect.Descriptor instead. -func (*DeleteItemSourceResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{57} -} - -type GetSyncHistoryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SourceId string `protobuf:"bytes,1,opt,name=source_id,json=sourceId,proto3" json:"source_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSyncHistoryRequest) Reset() { - *x = GetSyncHistoryRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSyncHistoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSyncHistoryRequest) ProtoMessage() {} - -func (x *GetSyncHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[58] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSyncHistoryRequest.ProtoReflect.Descriptor instead. -func (*GetSyncHistoryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{58} -} - -func (x *GetSyncHistoryRequest) GetSourceId() string { - if x != nil { - return x.SourceId - } - return "" -} - -type GetSyncHistoryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Events []*SourceSyncEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` - // True when the history was capped (see maxSourceSyncEventsHistory server-side) and older - // events beyond this response exist but are not returned — no pagination API exists yet. - Truncated bool `protobuf:"varint,2,opt,name=truncated,proto3" json:"truncated,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSyncHistoryResponse) Reset() { - *x = GetSyncHistoryResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSyncHistoryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSyncHistoryResponse) ProtoMessage() {} - -func (x *GetSyncHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[59] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSyncHistoryResponse.ProtoReflect.Descriptor instead. -func (*GetSyncHistoryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{59} -} - -func (x *GetSyncHistoryResponse) GetEvents() []*SourceSyncEvent { - if x != nil { - return x.Events - } - return nil -} - -func (x *GetSyncHistoryResponse) GetTruncated() bool { - if x != nil { - return x.Truncated - } - return false -} - -type PreviewBackwardSyncImpactRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SourceId string `protobuf:"bytes,1,opt,name=source_id,json=sourceId,proto3" json:"source_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PreviewBackwardSyncImpactRequest) Reset() { - *x = PreviewBackwardSyncImpactRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PreviewBackwardSyncImpactRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PreviewBackwardSyncImpactRequest) ProtoMessage() {} - -func (x *PreviewBackwardSyncImpactRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[60] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PreviewBackwardSyncImpactRequest.ProtoReflect.Descriptor instead. -func (*PreviewBackwardSyncImpactRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{60} -} - -func (x *PreviewBackwardSyncImpactRequest) GetSourceId() string { - if x != nil { - return x.SourceId - } - return "" -} - -type PreviewBackwardSyncImpactResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Count of already-imported items in idea/refining/ready/queued whose - // linked GitHub issue is currently closed — i.e. exactly the items - // determineBackwardSyncTarget would immediately archive if backward sync - // were enabled right now. - ItemCount int32 `protobuf:"varint,1,opt,name=item_count,json=itemCount,proto3" json:"item_count,omitempty"` - // Up to 5 titles from the eligible set, for display in the confirmation - // dialog. Not necessarily all N items when item_count > 5. - SampleTitles []string `protobuf:"bytes,2,rep,name=sample_titles,json=sampleTitles,proto3" json:"sample_titles,omitempty"` - // True if the underlying fetch hit its page cap while the last page was - // still full — meaning there may be more matching items beyond what was - // counted, so item_count/sample_titles must be treated as a lower bound - // rather than an exhaustive count. Only ever true on repos with an - // unusually large issue history (see maxPreviewFetchPages). - PossiblyIncomplete bool `protobuf:"varint,3,opt,name=possibly_incomplete,json=possiblyIncomplete,proto3" json:"possibly_incomplete,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PreviewBackwardSyncImpactResponse) Reset() { - *x = PreviewBackwardSyncImpactResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PreviewBackwardSyncImpactResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PreviewBackwardSyncImpactResponse) ProtoMessage() {} - -func (x *PreviewBackwardSyncImpactResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[61] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PreviewBackwardSyncImpactResponse.ProtoReflect.Descriptor instead. -func (*PreviewBackwardSyncImpactResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{61} -} - -func (x *PreviewBackwardSyncImpactResponse) GetItemCount() int32 { - if x != nil { - return x.ItemCount - } - return 0 -} - -func (x *PreviewBackwardSyncImpactResponse) GetSampleTitles() []string { - if x != nil { - return x.SampleTitles - } - return nil -} - -func (x *PreviewBackwardSyncImpactResponse) GetPossiblyIncomplete() bool { - if x != nil { - return x.PossiblyIncomplete - } - return false -} - -type CreatePipelineModeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Slug string `protobuf:"bytes,1,opt,name=slug,proto3" json:"slug,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Enabled bool `protobuf:"varint,4,opt,name=enabled,proto3" json:"enabled,omitempty"` - StatusCommandTemplate string `protobuf:"bytes,5,opt,name=status_command_template,json=statusCommandTemplate,proto3" json:"status_command_template,omitempty"` - DoneCommandTemplate string `protobuf:"bytes,6,opt,name=done_command_template,json=doneCommandTemplate,proto3" json:"done_command_template,omitempty"` - FailCommandTemplate string `protobuf:"bytes,7,opt,name=fail_command_template,json=failCommandTemplate,proto3" json:"fail_command_template,omitempty"` - ReviewCommandTemplate string `protobuf:"bytes,8,opt,name=review_command_template,json=reviewCommandTemplate,proto3" json:"review_command_template,omitempty"` - ShipCommandTemplate string `protobuf:"bytes,9,opt,name=ship_command_template,json=shipCommandTemplate,proto3" json:"ship_command_template,omitempty"` - HelpCommandTemplate string `protobuf:"bytes,10,opt,name=help_command_template,json=helpCommandTemplate,proto3" json:"help_command_template,omitempty"` - TriagePromptTemplate string `protobuf:"bytes,11,opt,name=triage_prompt_template,json=triagePromptTemplate,proto3" json:"triage_prompt_template,omitempty"` - ReviewPromptTemplate string `protobuf:"bytes,12,opt,name=review_prompt_template,json=reviewPromptTemplate,proto3" json:"review_prompt_template,omitempty"` - InitialPromptTemplate string `protobuf:"bytes,13,opt,name=initial_prompt_template,json=initialPromptTemplate,proto3" json:"initial_prompt_template,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreatePipelineModeRequest) Reset() { - *x = CreatePipelineModeRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreatePipelineModeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreatePipelineModeRequest) ProtoMessage() {} - -func (x *CreatePipelineModeRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[62] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreatePipelineModeRequest.ProtoReflect.Descriptor instead. -func (*CreatePipelineModeRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{62} -} - -func (x *CreatePipelineModeRequest) GetSlug() string { - if x != nil { - return x.Slug - } - return "" -} - -func (x *CreatePipelineModeRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *CreatePipelineModeRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *CreatePipelineModeRequest) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *CreatePipelineModeRequest) GetStatusCommandTemplate() string { - if x != nil { - return x.StatusCommandTemplate - } - return "" -} - -func (x *CreatePipelineModeRequest) GetDoneCommandTemplate() string { - if x != nil { - return x.DoneCommandTemplate - } - return "" -} - -func (x *CreatePipelineModeRequest) GetFailCommandTemplate() string { - if x != nil { - return x.FailCommandTemplate - } - return "" -} - -func (x *CreatePipelineModeRequest) GetReviewCommandTemplate() string { - if x != nil { - return x.ReviewCommandTemplate - } - return "" -} - -func (x *CreatePipelineModeRequest) GetShipCommandTemplate() string { - if x != nil { - return x.ShipCommandTemplate - } - return "" -} - -func (x *CreatePipelineModeRequest) GetHelpCommandTemplate() string { - if x != nil { - return x.HelpCommandTemplate - } - return "" -} - -func (x *CreatePipelineModeRequest) GetTriagePromptTemplate() string { - if x != nil { - return x.TriagePromptTemplate - } - return "" -} - -func (x *CreatePipelineModeRequest) GetReviewPromptTemplate() string { - if x != nil { - return x.ReviewPromptTemplate - } - return "" -} - -func (x *CreatePipelineModeRequest) GetInitialPromptTemplate() string { - if x != nil { - return x.InitialPromptTemplate - } - return "" -} - -type CreatePipelineModeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Item *PipelineMode `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreatePipelineModeResponse) Reset() { - *x = CreatePipelineModeResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreatePipelineModeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreatePipelineModeResponse) ProtoMessage() {} - -func (x *CreatePipelineModeResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[63] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreatePipelineModeResponse.ProtoReflect.Descriptor instead. -func (*CreatePipelineModeResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{63} -} - -func (x *CreatePipelineModeResponse) GetItem() *PipelineMode { - if x != nil { - return x.Item - } - return nil -} - -type UpdatePipelineModeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` - Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"` - Enabled *bool `protobuf:"varint,4,opt,name=enabled,proto3,oneof" json:"enabled,omitempty"` - StatusCommandTemplate *string `protobuf:"bytes,5,opt,name=status_command_template,json=statusCommandTemplate,proto3,oneof" json:"status_command_template,omitempty"` - DoneCommandTemplate *string `protobuf:"bytes,6,opt,name=done_command_template,json=doneCommandTemplate,proto3,oneof" json:"done_command_template,omitempty"` - FailCommandTemplate *string `protobuf:"bytes,7,opt,name=fail_command_template,json=failCommandTemplate,proto3,oneof" json:"fail_command_template,omitempty"` - ReviewCommandTemplate *string `protobuf:"bytes,8,opt,name=review_command_template,json=reviewCommandTemplate,proto3,oneof" json:"review_command_template,omitempty"` - ShipCommandTemplate *string `protobuf:"bytes,9,opt,name=ship_command_template,json=shipCommandTemplate,proto3,oneof" json:"ship_command_template,omitempty"` - HelpCommandTemplate *string `protobuf:"bytes,10,opt,name=help_command_template,json=helpCommandTemplate,proto3,oneof" json:"help_command_template,omitempty"` - TriagePromptTemplate *string `protobuf:"bytes,11,opt,name=triage_prompt_template,json=triagePromptTemplate,proto3,oneof" json:"triage_prompt_template,omitempty"` - ReviewPromptTemplate *string `protobuf:"bytes,12,opt,name=review_prompt_template,json=reviewPromptTemplate,proto3,oneof" json:"review_prompt_template,omitempty"` - InitialPromptTemplate *string `protobuf:"bytes,13,opt,name=initial_prompt_template,json=initialPromptTemplate,proto3,oneof" json:"initial_prompt_template,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdatePipelineModeRequest) Reset() { - *x = UpdatePipelineModeRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdatePipelineModeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdatePipelineModeRequest) ProtoMessage() {} - -func (x *UpdatePipelineModeRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[64] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdatePipelineModeRequest.ProtoReflect.Descriptor instead. -func (*UpdatePipelineModeRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{64} -} - -func (x *UpdatePipelineModeRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *UpdatePipelineModeRequest) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *UpdatePipelineModeRequest) GetDescription() string { - if x != nil && x.Description != nil { - return *x.Description - } - return "" -} - -func (x *UpdatePipelineModeRequest) GetEnabled() bool { - if x != nil && x.Enabled != nil { - return *x.Enabled - } - return false -} - -func (x *UpdatePipelineModeRequest) GetStatusCommandTemplate() string { - if x != nil && x.StatusCommandTemplate != nil { - return *x.StatusCommandTemplate - } - return "" -} - -func (x *UpdatePipelineModeRequest) GetDoneCommandTemplate() string { - if x != nil && x.DoneCommandTemplate != nil { - return *x.DoneCommandTemplate - } - return "" -} - -func (x *UpdatePipelineModeRequest) GetFailCommandTemplate() string { - if x != nil && x.FailCommandTemplate != nil { - return *x.FailCommandTemplate - } - return "" -} - -func (x *UpdatePipelineModeRequest) GetReviewCommandTemplate() string { - if x != nil && x.ReviewCommandTemplate != nil { - return *x.ReviewCommandTemplate - } - return "" -} - -func (x *UpdatePipelineModeRequest) GetShipCommandTemplate() string { - if x != nil && x.ShipCommandTemplate != nil { - return *x.ShipCommandTemplate - } - return "" -} - -func (x *UpdatePipelineModeRequest) GetHelpCommandTemplate() string { - if x != nil && x.HelpCommandTemplate != nil { - return *x.HelpCommandTemplate - } - return "" -} - -func (x *UpdatePipelineModeRequest) GetTriagePromptTemplate() string { - if x != nil && x.TriagePromptTemplate != nil { - return *x.TriagePromptTemplate - } - return "" -} - -func (x *UpdatePipelineModeRequest) GetReviewPromptTemplate() string { - if x != nil && x.ReviewPromptTemplate != nil { - return *x.ReviewPromptTemplate - } - return "" -} - -func (x *UpdatePipelineModeRequest) GetInitialPromptTemplate() string { - if x != nil && x.InitialPromptTemplate != nil { - return *x.InitialPromptTemplate - } - return "" -} - -type UpdatePipelineModeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Item *PipelineMode `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdatePipelineModeResponse) Reset() { - *x = UpdatePipelineModeResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdatePipelineModeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdatePipelineModeResponse) ProtoMessage() {} - -func (x *UpdatePipelineModeResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[65] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdatePipelineModeResponse.ProtoReflect.Descriptor instead. -func (*UpdatePipelineModeResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{65} -} - -func (x *UpdatePipelineModeResponse) GetItem() *PipelineMode { - if x != nil { - return x.Item - } - return nil -} - -type DeletePipelineModeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeletePipelineModeRequest) Reset() { - *x = DeletePipelineModeRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeletePipelineModeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeletePipelineModeRequest) ProtoMessage() {} - -func (x *DeletePipelineModeRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[66] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeletePipelineModeRequest.ProtoReflect.Descriptor instead. -func (*DeletePipelineModeRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{66} -} - -func (x *DeletePipelineModeRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type DeletePipelineModeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeletePipelineModeResponse) Reset() { - *x = DeletePipelineModeResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[67] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeletePipelineModeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeletePipelineModeResponse) ProtoMessage() {} - -func (x *DeletePipelineModeResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[67] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeletePipelineModeResponse.ProtoReflect.Descriptor instead. -func (*DeletePipelineModeResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{67} -} - -type GetPipelineModeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Slug string `protobuf:"bytes,1,opt,name=slug,proto3" json:"slug,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetPipelineModeRequest) Reset() { - *x = GetPipelineModeRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[68] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetPipelineModeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetPipelineModeRequest) ProtoMessage() {} - -func (x *GetPipelineModeRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[68] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetPipelineModeRequest.ProtoReflect.Descriptor instead. -func (*GetPipelineModeRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{68} -} - -func (x *GetPipelineModeRequest) GetSlug() string { - if x != nil { - return x.Slug - } - return "" -} - -type GetPipelineModeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Item *PipelineMode `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetPipelineModeResponse) Reset() { - *x = GetPipelineModeResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[69] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetPipelineModeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetPipelineModeResponse) ProtoMessage() {} - -func (x *GetPipelineModeResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[69] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetPipelineModeResponse.ProtoReflect.Descriptor instead. -func (*GetPipelineModeResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{69} -} - -func (x *GetPipelineModeResponse) GetItem() *PipelineMode { - if x != nil { - return x.Item - } - return nil -} - -type ListPipelineModesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListPipelineModesRequest) Reset() { - *x = ListPipelineModesRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[70] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListPipelineModesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListPipelineModesRequest) ProtoMessage() {} - -func (x *ListPipelineModesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[70] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListPipelineModesRequest.ProtoReflect.Descriptor instead. -func (*ListPipelineModesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{70} -} - -type ListPipelineModesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Items []*PipelineMode `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListPipelineModesResponse) Reset() { - *x = ListPipelineModesResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[71] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListPipelineModesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListPipelineModesResponse) ProtoMessage() {} - -func (x *ListPipelineModesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[71] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListPipelineModesResponse.ProtoReflect.Descriptor instead. -func (*ListPipelineModesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{71} -} - -func (x *ListPipelineModesResponse) GetItems() []*PipelineMode { - if x != nil { - return x.Items - } - return nil -} - -// BacklogItemEvent represents a real-time change to a backlog item. -// Used for the WatchBacklogItems streaming RPC. -type BacklogItemEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Timestamp when the event occurred. - Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Event type (one of the following). - // - // Types that are valid to be assigned to Event: - // - // *BacklogItemEvent_StatusChanged - // *BacklogItemEvent_VerdictRecorded - // *BacklogItemEvent_SessionAttached - // *BacklogItemEvent_ItemUpdated - // *BacklogItemEvent_ItemArchived - // *BacklogItemEvent_ItemRemoved - // *BacklogItemEvent_SnapshotComplete - Event isBacklogItemEvent_Event `protobuf_oneof:"event"` - // Monotonically-increasing sequence number assigned by pkg/events.EventBus - // at Publish time, mirroring SessionEvent.seq. Zero means "no sequence - // information" — used for the per-item synthetic snapshot events sent on a - // fresh (non-replay) connection, which don't correspond to a single - // published bus event and must not participate in the frontend's - // afterSeq/gap-detection bookkeeping (see useWatchBacklogItems.ts). - Seq uint64 `protobuf:"varint,8,opt,name=seq,proto3" json:"seq,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogItemEvent) Reset() { - *x = BacklogItemEvent{} - mi := &file_session_v1_backlog_proto_msgTypes[72] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogItemEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogItemEvent) ProtoMessage() {} - -func (x *BacklogItemEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[72] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogItemEvent.ProtoReflect.Descriptor instead. -func (*BacklogItemEvent) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{72} -} - -func (x *BacklogItemEvent) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -func (x *BacklogItemEvent) GetEvent() isBacklogItemEvent_Event { - if x != nil { - return x.Event - } - return nil -} - -func (x *BacklogItemEvent) GetStatusChanged() *BacklogItemStatusChangedEvent { - if x != nil { - if x, ok := x.Event.(*BacklogItemEvent_StatusChanged); ok { - return x.StatusChanged - } - } - return nil -} - -func (x *BacklogItemEvent) GetVerdictRecorded() *BacklogItemVerdictRecordedEvent { - if x != nil { - if x, ok := x.Event.(*BacklogItemEvent_VerdictRecorded); ok { - return x.VerdictRecorded - } - } - return nil -} - -func (x *BacklogItemEvent) GetSessionAttached() *BacklogItemSessionAttachedEvent { - if x != nil { - if x, ok := x.Event.(*BacklogItemEvent_SessionAttached); ok { - return x.SessionAttached - } - } - return nil -} - -func (x *BacklogItemEvent) GetItemUpdated() *BacklogItemUpdatedEvent { - if x != nil { - if x, ok := x.Event.(*BacklogItemEvent_ItemUpdated); ok { - return x.ItemUpdated - } - } - return nil -} - -func (x *BacklogItemEvent) GetItemArchived() *BacklogItemArchivedEvent { - if x != nil { - if x, ok := x.Event.(*BacklogItemEvent_ItemArchived); ok { - return x.ItemArchived - } - } - return nil -} - -func (x *BacklogItemEvent) GetItemRemoved() *BacklogItemRemovedEvent { - if x != nil { - if x, ok := x.Event.(*BacklogItemEvent_ItemRemoved); ok { - return x.ItemRemoved - } - } - return nil -} - -func (x *BacklogItemEvent) GetSnapshotComplete() *BacklogSnapshotCompleteEvent { - if x != nil { - if x, ok := x.Event.(*BacklogItemEvent_SnapshotComplete); ok { - return x.SnapshotComplete - } - } - return nil -} - -func (x *BacklogItemEvent) GetSeq() uint64 { - if x != nil { - return x.Seq - } - return 0 -} - -type isBacklogItemEvent_Event interface { - isBacklogItemEvent_Event() -} - -type BacklogItemEvent_StatusChanged struct { - StatusChanged *BacklogItemStatusChangedEvent `protobuf:"bytes,2,opt,name=status_changed,json=statusChanged,proto3,oneof"` -} - -type BacklogItemEvent_VerdictRecorded struct { - VerdictRecorded *BacklogItemVerdictRecordedEvent `protobuf:"bytes,3,opt,name=verdict_recorded,json=verdictRecorded,proto3,oneof"` -} - -type BacklogItemEvent_SessionAttached struct { - SessionAttached *BacklogItemSessionAttachedEvent `protobuf:"bytes,4,opt,name=session_attached,json=sessionAttached,proto3,oneof"` -} - -type BacklogItemEvent_ItemUpdated struct { - ItemUpdated *BacklogItemUpdatedEvent `protobuf:"bytes,5,opt,name=item_updated,json=itemUpdated,proto3,oneof"` -} - -type BacklogItemEvent_ItemArchived struct { - ItemArchived *BacklogItemArchivedEvent `protobuf:"bytes,6,opt,name=item_archived,json=itemArchived,proto3,oneof"` -} - -type BacklogItemEvent_ItemRemoved struct { - ItemRemoved *BacklogItemRemovedEvent `protobuf:"bytes,7,opt,name=item_removed,json=itemRemoved,proto3,oneof"` -} - -type BacklogItemEvent_SnapshotComplete struct { - // Synthetic marker (no corresponding bus event) sent exactly once, at the - // end of WatchBacklogItems' initial phase (fresh snapshot or after_seq - // replay), but ONLY when that phase sent zero other events — e.g. a - // genuinely empty backlog, or a status_filter/category_filter matching - // nothing. Without it, a zero-item connection produces zero bytes on the - // wire, and the client's `for await` loop never resolves past its first - // iteration — permanently stuck at connectionState "connecting" even - // though the stream is healthy and correctly has nothing to report. See - // useWatchBacklogItems.ts's handling (falls through to a no-op case) and - // backlog_service_events.go's watchBacklogItems doc comment. - SnapshotComplete *BacklogSnapshotCompleteEvent `protobuf:"bytes,9,opt,name=snapshot_complete,json=snapshotComplete,proto3,oneof"` -} - -func (*BacklogItemEvent_StatusChanged) isBacklogItemEvent_Event() {} - -func (*BacklogItemEvent_VerdictRecorded) isBacklogItemEvent_Event() {} - -func (*BacklogItemEvent_SessionAttached) isBacklogItemEvent_Event() {} - -func (*BacklogItemEvent_ItemUpdated) isBacklogItemEvent_Event() {} - -func (*BacklogItemEvent_ItemArchived) isBacklogItemEvent_Event() {} - -func (*BacklogItemEvent_ItemRemoved) isBacklogItemEvent_Event() {} - -func (*BacklogItemEvent_SnapshotComplete) isBacklogItemEvent_Event() {} - -// BacklogItemStatusChangedEvent is emitted when an item's status transitions -// (e.g. "in_progress" -> "review"). -type BacklogItemStatusChangedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - OldStatus string `protobuf:"bytes,2,opt,name=old_status,json=oldStatus,proto3" json:"old_status,omitempty"` - NewStatus string `protobuf:"bytes,3,opt,name=new_status,json=newStatus,proto3" json:"new_status,omitempty"` - Item *BacklogItem `protobuf:"bytes,4,opt,name=item,proto3" json:"item,omitempty"` - // Whether this event is part of an initial snapshot (sent on stream - // connect/reconnect) rather than a live change. Frontend should not - // flash/notify for snapshot events. - IsSnapshot bool `protobuf:"varint,5,opt,name=is_snapshot,json=isSnapshot,proto3" json:"is_snapshot,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogItemStatusChangedEvent) Reset() { - *x = BacklogItemStatusChangedEvent{} - mi := &file_session_v1_backlog_proto_msgTypes[73] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogItemStatusChangedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogItemStatusChangedEvent) ProtoMessage() {} - -func (x *BacklogItemStatusChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[73] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogItemStatusChangedEvent.ProtoReflect.Descriptor instead. -func (*BacklogItemStatusChangedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{73} -} - -func (x *BacklogItemStatusChangedEvent) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *BacklogItemStatusChangedEvent) GetOldStatus() string { - if x != nil { - return x.OldStatus - } - return "" -} - -func (x *BacklogItemStatusChangedEvent) GetNewStatus() string { - if x != nil { - return x.NewStatus - } - return "" -} - -func (x *BacklogItemStatusChangedEvent) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -func (x *BacklogItemStatusChangedEvent) GetIsSnapshot() bool { - if x != nil { - return x.IsSnapshot - } - return false -} - -// BacklogItemVerdictRecordedEvent is emitted when a review verdict is -// recorded for one of an item's sessions. -type BacklogItemVerdictRecordedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - Verdict *ReviewVerdict `protobuf:"bytes,2,opt,name=verdict,proto3" json:"verdict,omitempty"` - Item *BacklogItem `protobuf:"bytes,3,opt,name=item,proto3" json:"item,omitempty"` - IsSnapshot bool `protobuf:"varint,4,opt,name=is_snapshot,json=isSnapshot,proto3" json:"is_snapshot,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogItemVerdictRecordedEvent) Reset() { - *x = BacklogItemVerdictRecordedEvent{} - mi := &file_session_v1_backlog_proto_msgTypes[74] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogItemVerdictRecordedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogItemVerdictRecordedEvent) ProtoMessage() {} - -func (x *BacklogItemVerdictRecordedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[74] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogItemVerdictRecordedEvent.ProtoReflect.Descriptor instead. -func (*BacklogItemVerdictRecordedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{74} -} - -func (x *BacklogItemVerdictRecordedEvent) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *BacklogItemVerdictRecordedEvent) GetVerdict() *ReviewVerdict { - if x != nil { - return x.Verdict - } - return nil -} - -func (x *BacklogItemVerdictRecordedEvent) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -func (x *BacklogItemVerdictRecordedEvent) GetIsSnapshot() bool { - if x != nil { - return x.IsSnapshot - } - return false -} - -// BacklogItemSessionAttachedEvent is emitted when a session is spawned from -// or attached to a backlog item. -type BacklogItemSessionAttachedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - Item *BacklogItem `protobuf:"bytes,3,opt,name=item,proto3" json:"item,omitempty"` - IsSnapshot bool `protobuf:"varint,4,opt,name=is_snapshot,json=isSnapshot,proto3" json:"is_snapshot,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogItemSessionAttachedEvent) Reset() { - *x = BacklogItemSessionAttachedEvent{} - mi := &file_session_v1_backlog_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogItemSessionAttachedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogItemSessionAttachedEvent) ProtoMessage() {} - -func (x *BacklogItemSessionAttachedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[75] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogItemSessionAttachedEvent.ProtoReflect.Descriptor instead. -func (*BacklogItemSessionAttachedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{75} -} - -func (x *BacklogItemSessionAttachedEvent) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *BacklogItemSessionAttachedEvent) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *BacklogItemSessionAttachedEvent) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -func (x *BacklogItemSessionAttachedEvent) GetIsSnapshot() bool { - if x != nil { - return x.IsSnapshot - } - return false -} - -// BacklogItemUpdatedEvent is emitted when one or more item fields change -// (title, description, priority, etc.) outside of a status transition. -type BacklogItemUpdatedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - UpdatedFields []string `protobuf:"bytes,2,rep,name=updated_fields,json=updatedFields,proto3" json:"updated_fields,omitempty"` - Item *BacklogItem `protobuf:"bytes,3,opt,name=item,proto3" json:"item,omitempty"` - IsSnapshot bool `protobuf:"varint,4,opt,name=is_snapshot,json=isSnapshot,proto3" json:"is_snapshot,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogItemUpdatedEvent) Reset() { - *x = BacklogItemUpdatedEvent{} - mi := &file_session_v1_backlog_proto_msgTypes[76] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogItemUpdatedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogItemUpdatedEvent) ProtoMessage() {} - -func (x *BacklogItemUpdatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[76] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogItemUpdatedEvent.ProtoReflect.Descriptor instead. -func (*BacklogItemUpdatedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{76} -} - -func (x *BacklogItemUpdatedEvent) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *BacklogItemUpdatedEvent) GetUpdatedFields() []string { - if x != nil { - return x.UpdatedFields - } - return nil -} - -func (x *BacklogItemUpdatedEvent) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -func (x *BacklogItemUpdatedEvent) GetIsSnapshot() bool { - if x != nil { - return x.IsSnapshot - } - return false -} - -// BacklogItemArchivedEvent is emitted when an item is soft-deleted via -// ArchiveBacklogItem. -type BacklogItemArchivedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - ArchivedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=archived_at,json=archivedAt,proto3" json:"archived_at,omitempty"` - IsSnapshot bool `protobuf:"varint,3,opt,name=is_snapshot,json=isSnapshot,proto3" json:"is_snapshot,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogItemArchivedEvent) Reset() { - *x = BacklogItemArchivedEvent{} - mi := &file_session_v1_backlog_proto_msgTypes[77] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogItemArchivedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogItemArchivedEvent) ProtoMessage() {} - -func (x *BacklogItemArchivedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[77] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogItemArchivedEvent.ProtoReflect.Descriptor instead. -func (*BacklogItemArchivedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{77} -} - -func (x *BacklogItemArchivedEvent) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *BacklogItemArchivedEvent) GetArchivedAt() *timestamppb.Timestamp { - if x != nil { - return x.ArchivedAt - } - return nil -} - -func (x *BacklogItemArchivedEvent) GetIsSnapshot() bool { - if x != nil { - return x.IsSnapshot - } - return false -} - -// BacklogItemRemovedEvent is emitted when an item is permanently deleted via -// DeleteBacklogItem. Never part of a snapshot by definition — a removed item -// has nothing left to snapshot. -type BacklogItemRemovedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogItemRemovedEvent) Reset() { - *x = BacklogItemRemovedEvent{} - mi := &file_session_v1_backlog_proto_msgTypes[78] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogItemRemovedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogItemRemovedEvent) ProtoMessage() {} - -func (x *BacklogItemRemovedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[78] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogItemRemovedEvent.ProtoReflect.Descriptor instead. -func (*BacklogItemRemovedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{78} -} - -func (x *BacklogItemRemovedEvent) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *BacklogItemRemovedEvent) GetReason() string { - if x != nil { - return x.Reason - } - return "" -} - -// BacklogSnapshotCompleteEvent carries no data — it exists purely so the -// stream has sent at least one message by the time the initial phase -// (fresh snapshot or after_seq replay) finishes with zero real events to -// report. See BacklogItemEvent.snapshot_complete's doc comment. -type BacklogSnapshotCompleteEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogSnapshotCompleteEvent) Reset() { - *x = BacklogSnapshotCompleteEvent{} - mi := &file_session_v1_backlog_proto_msgTypes[79] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogSnapshotCompleteEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogSnapshotCompleteEvent) ProtoMessage() {} - -func (x *BacklogSnapshotCompleteEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[79] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogSnapshotCompleteEvent.ProtoReflect.Descriptor instead. -func (*BacklogSnapshotCompleteEvent) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{79} -} - -// WatchBacklogItemsRequest configures the WatchBacklogItems streaming RPC. -type WatchBacklogItemsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Optional: only receive events for items with one of these statuses. - StatusFilter []string `protobuf:"bytes,1,rep,name=status_filter,json=statusFilter,proto3" json:"status_filter,omitempty"` - // Optional: only receive events for items in one of these categories. - CategoryFilter []string `protobuf:"bytes,2,rep,name=category_filter,json=categoryFilter,proto3" json:"category_filter,omitempty"` - // Optional: resume a stream after this sequence number instead of - // receiving a fresh initial snapshot (see pkg/events.EventsSince). - AfterSeq uint64 `protobuf:"varint,3,opt,name=after_seq,json=afterSeq,proto3" json:"after_seq,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *WatchBacklogItemsRequest) Reset() { - *x = WatchBacklogItemsRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[80] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WatchBacklogItemsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WatchBacklogItemsRequest) ProtoMessage() {} - -func (x *WatchBacklogItemsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[80] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WatchBacklogItemsRequest.ProtoReflect.Descriptor instead. -func (*WatchBacklogItemsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{80} -} - -func (x *WatchBacklogItemsRequest) GetStatusFilter() []string { - if x != nil { - return x.StatusFilter - } - return nil -} - -func (x *WatchBacklogItemsRequest) GetCategoryFilter() []string { - if x != nil { - return x.CategoryFilter - } - return nil -} - -func (x *WatchBacklogItemsRequest) GetAfterSeq() uint64 { - if x != nil { - return x.AfterSeq - } - return 0 -} - -type ImportGitHubIssueRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // GitHub issue URL (https://github.com/owner/repo/issues/N) or shorthand (owner/repo#N). - IssueUrl string `protobuf:"bytes,1,opt,name=issue_url,json=issueUrl,proto3" json:"issue_url,omitempty"` - // Optional repo path override; if empty, derived from the issue URL. - RepoPath string `protobuf:"bytes,2,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - // If true, skip automated triage after import. - SkipPlanning bool `protobuf:"varint,3,opt,name=skip_planning,json=skipPlanning,proto3" json:"skip_planning,omitempty"` - // Optional GitHub account username to authenticate the import with, when - // multiple accounts are connected for the issue URL's host. Empty resolves - // to any configured token for that host (see github.GetKeychainTokenForHost). - AccountUsername string `protobuf:"bytes,4,opt,name=account_username,json=accountUsername,proto3" json:"account_username,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ImportGitHubIssueRequest) Reset() { - *x = ImportGitHubIssueRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[81] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ImportGitHubIssueRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ImportGitHubIssueRequest) ProtoMessage() {} - -func (x *ImportGitHubIssueRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[81] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ImportGitHubIssueRequest.ProtoReflect.Descriptor instead. -func (*ImportGitHubIssueRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{81} -} - -func (x *ImportGitHubIssueRequest) GetIssueUrl() string { - if x != nil { - return x.IssueUrl - } - return "" -} - -func (x *ImportGitHubIssueRequest) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *ImportGitHubIssueRequest) GetSkipPlanning() bool { - if x != nil { - return x.SkipPlanning - } - return false -} - -func (x *ImportGitHubIssueRequest) GetAccountUsername() string { - if x != nil { - return x.AccountUsername - } - return "" -} - -type ImportGitHubIssueResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Item *BacklogItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - TriageTriggered bool `protobuf:"varint,2,opt,name=triage_triggered,json=triageTriggered,proto3" json:"triage_triggered,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ImportGitHubIssueResponse) Reset() { - *x = ImportGitHubIssueResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[82] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ImportGitHubIssueResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ImportGitHubIssueResponse) ProtoMessage() {} - -func (x *ImportGitHubIssueResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[82] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ImportGitHubIssueResponse.ProtoReflect.Descriptor instead. -func (*ImportGitHubIssueResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{82} -} - -func (x *ImportGitHubIssueResponse) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -func (x *ImportGitHubIssueResponse) GetTriageTriggered() bool { - if x != nil { - return x.TriageTriggered - } - return false -} - -type CancelTriageRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CancelTriageRequest) Reset() { - *x = CancelTriageRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[83] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CancelTriageRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CancelTriageRequest) ProtoMessage() {} - -func (x *CancelTriageRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[83] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CancelTriageRequest.ProtoReflect.Descriptor instead. -func (*CancelTriageRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{83} -} - -func (x *CancelTriageRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -type CancelTriageResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Cancelled bool `protobuf:"varint,1,opt,name=cancelled,proto3" json:"cancelled,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CancelTriageResponse) Reset() { - *x = CancelTriageResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[84] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CancelTriageResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CancelTriageResponse) ProtoMessage() {} - -func (x *CancelTriageResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[84] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CancelTriageResponse.ProtoReflect.Descriptor instead. -func (*CancelTriageResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{84} -} - -func (x *CancelTriageResponse) GetCancelled() bool { - if x != nil { - return x.Cancelled - } - return false -} - -type GitHubRepoEntry struct { - state protoimpl.MessageState `protogen:"open.v1"` - Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` - Repo string `protobuf:"bytes,2,opt,name=repo,proto3" json:"repo,omitempty"` - IsLocal bool `protobuf:"varint,3,opt,name=is_local,json=isLocal,proto3" json:"is_local,omitempty"` - LocalPath string `protobuf:"bytes,4,opt,name=local_path,json=localPath,proto3" json:"local_path,omitempty"` - Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GitHubRepoEntry) Reset() { - *x = GitHubRepoEntry{} - mi := &file_session_v1_backlog_proto_msgTypes[85] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GitHubRepoEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GitHubRepoEntry) ProtoMessage() {} - -func (x *GitHubRepoEntry) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[85] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GitHubRepoEntry.ProtoReflect.Descriptor instead. -func (*GitHubRepoEntry) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{85} -} - -func (x *GitHubRepoEntry) GetOwner() string { - if x != nil { - return x.Owner - } - return "" -} - -func (x *GitHubRepoEntry) GetRepo() string { - if x != nil { - return x.Repo - } - return "" -} - -func (x *GitHubRepoEntry) GetIsLocal() bool { - if x != nil { - return x.IsLocal - } - return false -} - -func (x *GitHubRepoEntry) GetLocalPath() string { - if x != nil { - return x.LocalPath - } - return "" -} - -func (x *GitHubRepoEntry) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -type GitHubIssueEntry struct { - state protoimpl.MessageState `protogen:"open.v1"` - Number int32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` - Labels []string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty"` - Body string `protobuf:"bytes,6,opt,name=body,proto3" json:"body,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - IsPr bool `protobuf:"varint,9,opt,name=is_pr,json=isPr,proto3" json:"is_pr,omitempty"` - // GitHub login of the issue's author. - Author string `protobuf:"bytes,10,opt,name=author,proto3" json:"author,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GitHubIssueEntry) Reset() { - *x = GitHubIssueEntry{} - mi := &file_session_v1_backlog_proto_msgTypes[86] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GitHubIssueEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GitHubIssueEntry) ProtoMessage() {} - -func (x *GitHubIssueEntry) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[86] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GitHubIssueEntry.ProtoReflect.Descriptor instead. -func (*GitHubIssueEntry) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{86} -} - -func (x *GitHubIssueEntry) GetNumber() int32 { - if x != nil { - return x.Number - } - return 0 -} - -func (x *GitHubIssueEntry) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *GitHubIssueEntry) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *GitHubIssueEntry) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -func (x *GitHubIssueEntry) GetLabels() []string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *GitHubIssueEntry) GetBody() string { - if x != nil { - return x.Body - } - return "" -} - -func (x *GitHubIssueEntry) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *GitHubIssueEntry) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *GitHubIssueEntry) GetIsPr() bool { - if x != nil { - return x.IsPr - } - return false -} - -func (x *GitHubIssueEntry) GetAuthor() string { - if x != nil { - return x.Author - } - return "" -} - -type SearchGitHubReposRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` - Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SearchGitHubReposRequest) Reset() { - *x = SearchGitHubReposRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[87] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SearchGitHubReposRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SearchGitHubReposRequest) ProtoMessage() {} - -func (x *SearchGitHubReposRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[87] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SearchGitHubReposRequest.ProtoReflect.Descriptor instead. -func (*SearchGitHubReposRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{87} -} - -func (x *SearchGitHubReposRequest) GetQuery() string { - if x != nil { - return x.Query - } - return "" -} - -func (x *SearchGitHubReposRequest) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 -} - -type SearchGitHubReposResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Repos []*GitHubRepoEntry `protobuf:"bytes,1,rep,name=repos,proto3" json:"repos,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SearchGitHubReposResponse) Reset() { - *x = SearchGitHubReposResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[88] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SearchGitHubReposResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SearchGitHubReposResponse) ProtoMessage() {} - -func (x *SearchGitHubReposResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[88] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SearchGitHubReposResponse.ProtoReflect.Descriptor instead. -func (*SearchGitHubReposResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{88} -} - -func (x *SearchGitHubReposResponse) GetRepos() []*GitHubRepoEntry { - if x != nil { - return x.Repos - } - return nil -} - -type ListGitHubIssuesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` - Repo string `protobuf:"bytes,2,opt,name=repo,proto3" json:"repo,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - Search string `protobuf:"bytes,4,opt,name=search,proto3" json:"search,omitempty"` - Limit int32 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListGitHubIssuesRequest) Reset() { - *x = ListGitHubIssuesRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[89] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListGitHubIssuesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListGitHubIssuesRequest) ProtoMessage() {} - -func (x *ListGitHubIssuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[89] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListGitHubIssuesRequest.ProtoReflect.Descriptor instead. -func (*ListGitHubIssuesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{89} -} - -func (x *ListGitHubIssuesRequest) GetOwner() string { - if x != nil { - return x.Owner - } - return "" -} - -func (x *ListGitHubIssuesRequest) GetRepo() string { - if x != nil { - return x.Repo - } - return "" -} - -func (x *ListGitHubIssuesRequest) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *ListGitHubIssuesRequest) GetSearch() string { - if x != nil { - return x.Search - } - return "" -} - -func (x *ListGitHubIssuesRequest) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 -} - -type ListGitHubIssuesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Issues []*GitHubIssueEntry `protobuf:"bytes,1,rep,name=issues,proto3" json:"issues,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListGitHubIssuesResponse) Reset() { - *x = ListGitHubIssuesResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[90] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListGitHubIssuesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListGitHubIssuesResponse) ProtoMessage() {} - -func (x *ListGitHubIssuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[90] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListGitHubIssuesResponse.ProtoReflect.Descriptor instead. -func (*ListGitHubIssuesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{90} -} - -func (x *ListGitHubIssuesResponse) GetIssues() []*GitHubIssueEntry { - if x != nil { - return x.Issues - } - return nil -} - -type GetBacklogItemDiffRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBacklogItemDiffRequest) Reset() { - *x = GetBacklogItemDiffRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[91] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBacklogItemDiffRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBacklogItemDiffRequest) ProtoMessage() {} - -func (x *GetBacklogItemDiffRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[91] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBacklogItemDiffRequest.ProtoReflect.Descriptor instead. -func (*GetBacklogItemDiffRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{91} -} - -func (x *GetBacklogItemDiffRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -type GetBacklogItemDiffResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Diff string `protobuf:"bytes,1,opt,name=diff,proto3" json:"diff,omitempty"` - Added int32 `protobuf:"varint,2,opt,name=added,proto3" json:"added,omitempty"` - Removed int32 `protobuf:"varint,3,opt,name=removed,proto3" json:"removed,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBacklogItemDiffResponse) Reset() { - *x = GetBacklogItemDiffResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[92] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBacklogItemDiffResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBacklogItemDiffResponse) ProtoMessage() {} - -func (x *GetBacklogItemDiffResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[92] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBacklogItemDiffResponse.ProtoReflect.Descriptor instead. -func (*GetBacklogItemDiffResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{92} -} - -func (x *GetBacklogItemDiffResponse) GetDiff() string { - if x != nil { - return x.Diff - } - return "" -} - -func (x *GetBacklogItemDiffResponse) GetAdded() int32 { - if x != nil { - return x.Added - } - return 0 -} - -func (x *GetBacklogItemDiffResponse) GetRemoved() int32 { - if x != nil { - return x.Removed - } - return 0 -} - -type SessionCostEntry struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - SessionRole string `protobuf:"bytes,2,opt,name=session_role,json=sessionRole,proto3" json:"session_role,omitempty"` // "work", "triage", "review" - EstimatedCostUsd float64 `protobuf:"fixed64,3,opt,name=estimated_cost_usd,json=estimatedCostUsd,proto3" json:"estimated_cost_usd,omitempty"` - InputTokens int64 `protobuf:"varint,4,opt,name=input_tokens,json=inputTokens,proto3" json:"input_tokens,omitempty"` - OutputTokens int64 `protobuf:"varint,5,opt,name=output_tokens,json=outputTokens,proto3" json:"output_tokens,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionCostEntry) Reset() { - *x = SessionCostEntry{} - mi := &file_session_v1_backlog_proto_msgTypes[93] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionCostEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionCostEntry) ProtoMessage() {} - -func (x *SessionCostEntry) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[93] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionCostEntry.ProtoReflect.Descriptor instead. -func (*SessionCostEntry) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{93} -} - -func (x *SessionCostEntry) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *SessionCostEntry) GetSessionRole() string { - if x != nil { - return x.SessionRole - } - return "" -} - -func (x *SessionCostEntry) GetEstimatedCostUsd() float64 { - if x != nil { - return x.EstimatedCostUsd - } - return 0 -} - -func (x *SessionCostEntry) GetInputTokens() int64 { - if x != nil { - return x.InputTokens - } - return 0 -} - -func (x *SessionCostEntry) GetOutputTokens() int64 { - if x != nil { - return x.OutputTokens - } - return 0 -} - -type GetBacklogItemCostRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBacklogItemCostRequest) Reset() { - *x = GetBacklogItemCostRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[94] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBacklogItemCostRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBacklogItemCostRequest) ProtoMessage() {} - -func (x *GetBacklogItemCostRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[94] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBacklogItemCostRequest.ProtoReflect.Descriptor instead. -func (*GetBacklogItemCostRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{94} -} - -func (x *GetBacklogItemCostRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -type GetBacklogItemCostResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - TotalCostUsd float64 `protobuf:"fixed64,1,opt,name=total_cost_usd,json=totalCostUsd,proto3" json:"total_cost_usd,omitempty"` - Sessions []*SessionCostEntry `protobuf:"bytes,2,rep,name=sessions,proto3" json:"sessions,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBacklogItemCostResponse) Reset() { - *x = GetBacklogItemCostResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[95] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBacklogItemCostResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBacklogItemCostResponse) ProtoMessage() {} - -func (x *GetBacklogItemCostResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[95] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBacklogItemCostResponse.ProtoReflect.Descriptor instead. -func (*GetBacklogItemCostResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{95} -} - -func (x *GetBacklogItemCostResponse) GetTotalCostUsd() float64 { - if x != nil { - return x.TotalCostUsd - } - return 0 -} - -func (x *GetBacklogItemCostResponse) GetSessions() []*SessionCostEntry { - if x != nil { - return x.Sessions - } - return nil -} - -// BacklogSessionEntry maps a tmux session UUID to the backlog item it belongs to. -type BacklogSessionEntry struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionUuid string `protobuf:"bytes,1,opt,name=session_uuid,json=sessionUuid,proto3" json:"session_uuid,omitempty"` - ItemId string `protobuf:"bytes,2,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - ItemTitle string `protobuf:"bytes,3,opt,name=item_title,json=itemTitle,proto3" json:"item_title,omitempty"` - ItemStatus string `protobuf:"bytes,4,opt,name=item_status,json=itemStatus,proto3" json:"item_status,omitempty"` - SessionRole string `protobuf:"bytes,5,opt,name=session_role,json=sessionRole,proto3" json:"session_role,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BacklogSessionEntry) Reset() { - *x = BacklogSessionEntry{} - mi := &file_session_v1_backlog_proto_msgTypes[96] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BacklogSessionEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BacklogSessionEntry) ProtoMessage() {} - -func (x *BacklogSessionEntry) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[96] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BacklogSessionEntry.ProtoReflect.Descriptor instead. -func (*BacklogSessionEntry) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{96} -} - -func (x *BacklogSessionEntry) GetSessionUuid() string { - if x != nil { - return x.SessionUuid - } - return "" -} - -func (x *BacklogSessionEntry) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *BacklogSessionEntry) GetItemTitle() string { - if x != nil { - return x.ItemTitle - } - return "" -} - -func (x *BacklogSessionEntry) GetItemStatus() string { - if x != nil { - return x.ItemStatus - } - return "" -} - -func (x *BacklogSessionEntry) GetSessionRole() string { - if x != nil { - return x.SessionRole - } - return "" -} - -type GetSessionBacklogIndexRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionBacklogIndexRequest) Reset() { - *x = GetSessionBacklogIndexRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[97] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionBacklogIndexRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionBacklogIndexRequest) ProtoMessage() {} - -func (x *GetSessionBacklogIndexRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[97] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionBacklogIndexRequest.ProtoReflect.Descriptor instead. -func (*GetSessionBacklogIndexRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{97} -} - -type GetSessionBacklogIndexResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Entries []*BacklogSessionEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionBacklogIndexResponse) Reset() { - *x = GetSessionBacklogIndexResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[98] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionBacklogIndexResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionBacklogIndexResponse) ProtoMessage() {} - -func (x *GetSessionBacklogIndexResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[98] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionBacklogIndexResponse.ProtoReflect.Descriptor instead. -func (*GetSessionBacklogIndexResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{98} -} - -func (x *GetSessionBacklogIndexResponse) GetEntries() []*BacklogSessionEntry { - if x != nil { - return x.Entries - } - return nil -} - -type SubmitManualReviewRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - // overall_outcome must be PASS, FAIL, PARTIAL, or UNVERIFIABLE. - OverallOutcome string `protobuf:"bytes,2,opt,name=overall_outcome,json=overallOutcome,proto3" json:"overall_outcome,omitempty"` - Summary string `protobuf:"bytes,3,opt,name=summary,proto3" json:"summary,omitempty"` - // per_criterion_verdicts is optional. When empty, a single synthetic verdict - // is created using overall_outcome for all AC criteria. - PerCriterionVerdicts []*CriterionVerdict `protobuf:"bytes,4,rep,name=per_criterion_verdicts,json=perCriterionVerdicts,proto3" json:"per_criterion_verdicts,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SubmitManualReviewRequest) Reset() { - *x = SubmitManualReviewRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[99] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SubmitManualReviewRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubmitManualReviewRequest) ProtoMessage() {} - -func (x *SubmitManualReviewRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[99] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubmitManualReviewRequest.ProtoReflect.Descriptor instead. -func (*SubmitManualReviewRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{99} -} - -func (x *SubmitManualReviewRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *SubmitManualReviewRequest) GetOverallOutcome() string { - if x != nil { - return x.OverallOutcome - } - return "" -} - -func (x *SubmitManualReviewRequest) GetSummary() string { - if x != nil { - return x.Summary - } - return "" -} - -func (x *SubmitManualReviewRequest) GetPerCriterionVerdicts() []*CriterionVerdict { - if x != nil { - return x.PerCriterionVerdicts - } - return nil -} - -type SubmitManualReviewResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Item *BacklogItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SubmitManualReviewResponse) Reset() { - *x = SubmitManualReviewResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[100] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SubmitManualReviewResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubmitManualReviewResponse) ProtoMessage() {} - -func (x *SubmitManualReviewResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[100] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubmitManualReviewResponse.ProtoReflect.Descriptor instead. -func (*SubmitManualReviewResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{100} -} - -func (x *SubmitManualReviewResponse) GetItem() *BacklogItem { - if x != nil { - return x.Item - } - return nil -} - -// StuckBacklogItem is a single open (unresolved, un-snoozed) BacklogStuckState -// row joined with its parent item's rendering-relevant fields. -type StuckBacklogItem struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` - Reason StuckReason `protobuf:"varint,4,opt,name=reason,proto3,enum=session.v1.StuckReason" json:"reason,omitempty"` - FirstDetectedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=first_detected_at,json=firstDetectedAt,proto3" json:"first_detected_at,omitempty"` - LastCheckedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_checked_at,json=lastCheckedAt,proto3" json:"last_checked_at,omitempty"` - PrNumber int32 `protobuf:"varint,7,opt,name=pr_number,json=prNumber,proto3" json:"pr_number,omitempty"` - PrUrl string `protobuf:"bytes,8,opt,name=pr_url,json=prUrl,proto3" json:"pr_url,omitempty"` - Context string `protobuf:"bytes,9,opt,name=context,proto3" json:"context,omitempty"` - // snoozed_until is present only when the row was already scheduled to - // become un-snoozed at query time (ListStuckBacklogItems only ever returns - // rows that are currently un-snoozed, so this is normally unset). - SnoozedUntil *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=snoozed_until,json=snoozedUntil,proto3" json:"snoozed_until,omitempty"` - // allow_auto_merge surfaces the repo's GitHub auto-merge setting, read-only - // and best-effort (see plan.md Story 4.1.4 / ADR discussion). This field is - // declared here so the Phase 4 frontend work doesn't require a second - // proto-gen round-trip, but it is intentionally left unset (not populated) - // by the ListStuckBacklogItems handler added in this change — Phase 4 owns - // fetching and populating it. Unset means "not fetched / unknown", not - // "auto-merge disabled". - AllowAutoMerge *bool `protobuf:"varint,11,opt,name=allow_auto_merge,json=allowAutoMerge,proto3,oneof" json:"allow_auto_merge,omitempty"` - // remediation_attempts is how many automated (or operator-triggered via - // TriggerRemediationNow) remediation attempts have been made for this open - // row. remediation_attempts >= 5 means the row is "parked" — automated - // remediation has stopped until ResetStuckRemediation is called. - RemediationAttempts int32 `protobuf:"varint,12,opt,name=remediation_attempts,json=remediationAttempts,proto3" json:"remediation_attempts,omitempty"` - // next_remediation_at is when this row becomes eligible for the next - // automated remediation attempt. Unset means either no attempt has been - // made yet (remediation_attempts == 0, eligible immediately) or the row is - // parked (remediation_attempts >= 5) — check remediation_attempts to tell - // the two apart. - NextRemediationAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=next_remediation_at,json=nextRemediationAt,proto3,oneof" json:"next_remediation_at,omitempty"` - // plan_artifacts_path mirrors BacklogItem.plan_artifacts_path — empty means - // no plan exists yet. Lets the frontend gate the PLAN_NOT_APPROVED - // "Approve Plan" affordance on an actual plan existing, instead of trusting - // `reason` alone (which only refreshes on the next ReconcileStuck tick). - PlanArtifactsPath string `protobuf:"bytes,14,opt,name=plan_artifacts_path,json=planArtifactsPath,proto3" json:"plan_artifacts_path,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StuckBacklogItem) Reset() { - *x = StuckBacklogItem{} - mi := &file_session_v1_backlog_proto_msgTypes[101] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StuckBacklogItem) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StuckBacklogItem) ProtoMessage() {} - -func (x *StuckBacklogItem) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[101] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StuckBacklogItem.ProtoReflect.Descriptor instead. -func (*StuckBacklogItem) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{101} -} - -func (x *StuckBacklogItem) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *StuckBacklogItem) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *StuckBacklogItem) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *StuckBacklogItem) GetReason() StuckReason { - if x != nil { - return x.Reason - } - return StuckReason_STUCK_REASON_UNSPECIFIED -} - -func (x *StuckBacklogItem) GetFirstDetectedAt() *timestamppb.Timestamp { - if x != nil { - return x.FirstDetectedAt - } - return nil -} - -func (x *StuckBacklogItem) GetLastCheckedAt() *timestamppb.Timestamp { - if x != nil { - return x.LastCheckedAt - } - return nil -} - -func (x *StuckBacklogItem) GetPrNumber() int32 { - if x != nil { - return x.PrNumber - } - return 0 -} - -func (x *StuckBacklogItem) GetPrUrl() string { - if x != nil { - return x.PrUrl - } - return "" -} - -func (x *StuckBacklogItem) GetContext() string { - if x != nil { - return x.Context - } - return "" -} - -func (x *StuckBacklogItem) GetSnoozedUntil() *timestamppb.Timestamp { - if x != nil { - return x.SnoozedUntil - } - return nil -} - -func (x *StuckBacklogItem) GetAllowAutoMerge() bool { - if x != nil && x.AllowAutoMerge != nil { - return *x.AllowAutoMerge - } - return false -} - -func (x *StuckBacklogItem) GetRemediationAttempts() int32 { - if x != nil { - return x.RemediationAttempts - } - return 0 -} - -func (x *StuckBacklogItem) GetNextRemediationAt() *timestamppb.Timestamp { - if x != nil { - return x.NextRemediationAt - } - return nil -} - -func (x *StuckBacklogItem) GetPlanArtifactsPath() string { - if x != nil { - return x.PlanArtifactsPath - } - return "" -} - -type ListStuckBacklogItemsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListStuckBacklogItemsRequest) Reset() { - *x = ListStuckBacklogItemsRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[102] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListStuckBacklogItemsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListStuckBacklogItemsRequest) ProtoMessage() {} - -func (x *ListStuckBacklogItemsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[102] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListStuckBacklogItemsRequest.ProtoReflect.Descriptor instead. -func (*ListStuckBacklogItemsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{102} -} - -type ListStuckBacklogItemsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Items []*StuckBacklogItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListStuckBacklogItemsResponse) Reset() { - *x = ListStuckBacklogItemsResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[103] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListStuckBacklogItemsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListStuckBacklogItemsResponse) ProtoMessage() {} - -func (x *ListStuckBacklogItemsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[103] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListStuckBacklogItemsResponse.ProtoReflect.Descriptor instead. -func (*ListStuckBacklogItemsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{103} -} - -func (x *ListStuckBacklogItemsResponse) GetItems() []*StuckBacklogItem { - if x != nil { - return x.Items - } - return nil -} - -type SnoozeStuckItemRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - Reason StuckReason `protobuf:"varint,2,opt,name=reason,proto3,enum=session.v1.StuckReason" json:"reason,omitempty"` - Until *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=until,proto3" json:"until,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SnoozeStuckItemRequest) Reset() { - *x = SnoozeStuckItemRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[104] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SnoozeStuckItemRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SnoozeStuckItemRequest) ProtoMessage() {} - -func (x *SnoozeStuckItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[104] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SnoozeStuckItemRequest.ProtoReflect.Descriptor instead. -func (*SnoozeStuckItemRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{104} -} - -func (x *SnoozeStuckItemRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *SnoozeStuckItemRequest) GetReason() StuckReason { - if x != nil { - return x.Reason - } - return StuckReason_STUCK_REASON_UNSPECIFIED -} - -func (x *SnoozeStuckItemRequest) GetUntil() *timestamppb.Timestamp { - if x != nil { - return x.Until - } - return nil -} - -type SnoozeStuckItemResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // applied is true when an open row matching (item_id, reason) was found - // and snoozed; false when no such open row exists (not an error). - Applied bool `protobuf:"varint,1,opt,name=applied,proto3" json:"applied,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SnoozeStuckItemResponse) Reset() { - *x = SnoozeStuckItemResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[105] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SnoozeStuckItemResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SnoozeStuckItemResponse) ProtoMessage() {} - -func (x *SnoozeStuckItemResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[105] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SnoozeStuckItemResponse.ProtoReflect.Descriptor instead. -func (*SnoozeStuckItemResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{105} -} - -func (x *SnoozeStuckItemResponse) GetApplied() bool { - if x != nil { - return x.Applied - } - return false -} - -type ResetStuckRemediationRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - Reason StuckReason `protobuf:"varint,2,opt,name=reason,proto3,enum=session.v1.StuckReason" json:"reason,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResetStuckRemediationRequest) Reset() { - *x = ResetStuckRemediationRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[106] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResetStuckRemediationRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResetStuckRemediationRequest) ProtoMessage() {} - -func (x *ResetStuckRemediationRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[106] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResetStuckRemediationRequest.ProtoReflect.Descriptor instead. -func (*ResetStuckRemediationRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{106} -} - -func (x *ResetStuckRemediationRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *ResetStuckRemediationRequest) GetReason() StuckReason { - if x != nil { - return x.Reason - } - return StuckReason_STUCK_REASON_UNSPECIFIED -} - -type ResetStuckRemediationResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // applied is true when an open row matching (item_id, reason) was found - // and reset; false when no such open row exists (not an error). - Applied bool `protobuf:"varint,1,opt,name=applied,proto3" json:"applied,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResetStuckRemediationResponse) Reset() { - *x = ResetStuckRemediationResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[107] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResetStuckRemediationResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResetStuckRemediationResponse) ProtoMessage() {} - -func (x *ResetStuckRemediationResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[107] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResetStuckRemediationResponse.ProtoReflect.Descriptor instead. -func (*ResetStuckRemediationResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{107} -} - -func (x *ResetStuckRemediationResponse) GetApplied() bool { - if x != nil { - return x.Applied - } - return false -} - -type BulkResetStuckRemediationRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // reason filters to a single stuck reason; unset (STUCK_REASON_UNSPECIFIED) - // resets matching rows across every reason. - Reason StuckReason `protobuf:"varint,1,opt,name=reason,proto3,enum=session.v1.StuckReason" json:"reason,omitempty"` - // only_parked restricts the reset to rows that actually hit the 5-attempt - // cap. Defaults to true at the RPC layer when unset — see - // only_parked_explicitly_set. - OnlyParked bool `protobuf:"varint,2,opt,name=only_parked,json=onlyParked,proto3" json:"only_parked,omitempty"` - // only_parked_explicitly_set distinguishes "only_parked=false because the - // caller wants every open row regardless of attempt count" from "the field - // was left at its zero value" — proto3 bool fields cannot otherwise tell - // "explicitly false" apart from "unset". Set true whenever the caller - // deliberately supplied only_parked (either value). - OnlyParkedExplicitlySet bool `protobuf:"varint,3,opt,name=only_parked_explicitly_set,json=onlyParkedExplicitlySet,proto3" json:"only_parked_explicitly_set,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BulkResetStuckRemediationRequest) Reset() { - *x = BulkResetStuckRemediationRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[108] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BulkResetStuckRemediationRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BulkResetStuckRemediationRequest) ProtoMessage() {} - -func (x *BulkResetStuckRemediationRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[108] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BulkResetStuckRemediationRequest.ProtoReflect.Descriptor instead. -func (*BulkResetStuckRemediationRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{108} -} - -func (x *BulkResetStuckRemediationRequest) GetReason() StuckReason { - if x != nil { - return x.Reason - } - return StuckReason_STUCK_REASON_UNSPECIFIED -} - -func (x *BulkResetStuckRemediationRequest) GetOnlyParked() bool { - if x != nil { - return x.OnlyParked - } - return false -} - -func (x *BulkResetStuckRemediationRequest) GetOnlyParkedExplicitlySet() bool { - if x != nil { - return x.OnlyParkedExplicitlySet - } - return false -} - -type BulkResetStuckRemediationResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // reset_count is how many rows were reset by this call. - ResetCount int32 `protobuf:"varint,1,opt,name=reset_count,json=resetCount,proto3" json:"reset_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BulkResetStuckRemediationResponse) Reset() { - *x = BulkResetStuckRemediationResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[109] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BulkResetStuckRemediationResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BulkResetStuckRemediationResponse) ProtoMessage() {} - -func (x *BulkResetStuckRemediationResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[109] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BulkResetStuckRemediationResponse.ProtoReflect.Descriptor instead. -func (*BulkResetStuckRemediationResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{109} -} - -func (x *BulkResetStuckRemediationResponse) GetResetCount() int32 { - if x != nil { - return x.ResetCount - } - return 0 -} - -type TriggerRemediationNowRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - Reason StuckReason `protobuf:"varint,2,opt,name=reason,proto3,enum=session.v1.StuckReason" json:"reason,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriggerRemediationNowRequest) Reset() { - *x = TriggerRemediationNowRequest{} - mi := &file_session_v1_backlog_proto_msgTypes[110] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriggerRemediationNowRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerRemediationNowRequest) ProtoMessage() {} - -func (x *TriggerRemediationNowRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[110] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriggerRemediationNowRequest.ProtoReflect.Descriptor instead. -func (*TriggerRemediationNowRequest) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{110} -} - -func (x *TriggerRemediationNowRequest) GetItemId() string { - if x != nil { - return x.ItemId - } - return "" -} - -func (x *TriggerRemediationNowRequest) GetReason() StuckReason { - if x != nil { - return x.Reason - } - return StuckReason_STUCK_REASON_UNSPECIFIED -} - -type TriggerRemediationNowResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // triggered is true when the remediation action was invoked. False is - // never returned on success — a row that cannot be remediated (no open - // row, already parked, no action registered for this reason yet) is - // reported as an RPC error instead, so the frontend can show a specific - // reason rather than a bare "nothing happened". - Triggered bool `protobuf:"varint,1,opt,name=triggered,proto3" json:"triggered,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TriggerRemediationNowResponse) Reset() { - *x = TriggerRemediationNowResponse{} - mi := &file_session_v1_backlog_proto_msgTypes[111] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TriggerRemediationNowResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerRemediationNowResponse) ProtoMessage() {} - -func (x *TriggerRemediationNowResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_backlog_proto_msgTypes[111] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriggerRemediationNowResponse.ProtoReflect.Descriptor instead. -func (*TriggerRemediationNowResponse) Descriptor() ([]byte, []int) { - return file_session_v1_backlog_proto_rawDescGZIP(), []int{111} -} - -func (x *TriggerRemediationNowResponse) GetTriggered() bool { - if x != nil { - return x.Triggered - } - return false -} - -var File_session_v1_backlog_proto protoreflect.FileDescriptor - -const file_session_v1_backlog_proto_rawDesc = "" + - "\n" + - "\x18session/v1/backlog.proto\x12\n" + - "session.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x16session/v1/types.proto\"O\n" + - "\vAcCriterion\x12\x14\n" + - "\x05index\x18\x01 \x01(\x05R\x05index\x12\x12\n" + - "\x04text\x18\x02 \x01(\tR\x04text\x12\x16\n" + - "\x06status\x18\x03 \x01(\tR\x06status\"q\n" + - "\x10CriterionVerdict\x12'\n" + - "\x0fcriterion_index\x18\x01 \x01(\x05R\x0ecriterionIndex\x12\x18\n" + - "\aoutcome\x18\x02 \x01(\tR\aoutcome\x12\x1a\n" + - "\bevidence\x18\x03 \x01(\tR\bevidence\"\xd5\x03\n" + - "\rReviewVerdict\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12'\n" + - "\x0foverall_outcome\x18\x02 \x01(\tR\x0eoverallOutcome\x12A\n" + - "\rper_criterion\x18\x03 \x03(\v2\x1c.session.v1.CriterionVerdictR\fperCriterion\x12\x18\n" + - "\asummary\x18\x04 \x01(\tR\asummary\x12\x1b\n" + - "\tdiff_hash\x18\x05 \x01(\tR\bdiffHash\x12(\n" + - "\x10diff_token_count\x18\x06 \x01(\x05R\x0ediffTokenCount\x12%\n" + - "\x0ediff_truncated\x18\a \x01(\bR\rdiffTruncated\x12\x1f\n" + - "\voverride_by\x18\b \x01(\tR\n" + - "overrideBy\x12'\n" + - "\x0foverride_reason\x18\t \x01(\tR\x0eoverrideReason\x12;\n" + - "\voverride_at\x18\n" + - " \x01(\v2\x1a.google.protobuf.TimestampR\n" + - "overrideAt\x129\n" + - "\n" + - "created_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"D\n" + - "\x10TriageSuggestion\x12\x12\n" + - "\x04text\x18\x01 \x01(\tR\x04text\x12\x1c\n" + - "\trationale\x18\x02 \x01(\tR\trationale\"X\n" + - "\n" + - "TriageTask\x12\x12\n" + - "\x04text\x18\x01 \x01(\tR\x04text\x12\x1a\n" + - "\bestimate\x18\x02 \x01(\tR\bestimate\x12\x1a\n" + - "\bcategory\x18\x03 \x01(\tR\bcategory\"\x83\x02\n" + - "\fTriageResult\x12\x18\n" + - "\asummary\x18\x01 \x01(\tR\asummary\x12>\n" + - "\vsuggestions\x18\x02 \x03(\v2\x1c.session.v1.TriageSuggestionR\vsuggestions\x121\n" + - "\x14clarifying_questions\x18\x03 \x03(\tR\x13clarifyingQuestions\x12,\n" + - "\x05tasks\x18\x04 \x03(\v2\x16.session.v1.TriageTaskR\x05tasks\x12\x1c\n" + - "\titeration\x18\x05 \x01(\x05R\titeration\x12\x1a\n" + - "\bfeedback\x18\x06 \x01(\tR\bfeedback\"\xf6\x06\n" + - "\vItemSession\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12!\n" + - "\fsession_uuid\x18\x02 \x01(\tR\vsessionUuid\x12!\n" + - "\fsession_role\x18\x03 \x01(\tR\vsessionRole\x129\n" + - "\n" + - "started_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x125\n" + - "\bended_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\aendedAt\x12.\n" + - "\x13last_commit_message\x18\x06 \x01(\tR\x11lastCommitMessage\x12@\n" + - "\x0elast_commit_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\flastCommitAt\x127\n" + - "\x18commit_count_since_spawn\x18\b \x01(\x05R\x15commitCountSinceSpawn\x12G\n" + - "\x12last_file_touch_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x0flastFileTouchAt\x129\n" + - "\n" + - "created_at\x18\n" + - " \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12@\n" + - "\x0ereview_verdict\x18\v \x01(\v2\x19.session.v1.ReviewVerdictR\rreviewVerdict\x12=\n" + - "\rtriage_result\x18\f \x01(\v2\x18.session.v1.TriageResultR\ftriageResult\x12,\n" + - "\x12estimated_cost_usd\x18\r \x01(\x01R\x10estimatedCostUsd\x12'\n" + - "\x0fworktree_branch\x18\x0e \x01(\tR\x0eworktreeBranch\x12#\n" + - "\rworktree_path\x18\x0f \x01(\tR\fworktreePath\x124\n" + - "\x16pipeline_mode_snapshot\x18\x10 \x01(\tR\x14pipelineModeSnapshot\x12=\n" + - "\x1bpipeline_mode_snapshot_hash\x18\x11 \x01(\tR\x18pipelineModeSnapshotHash\"\xe2\x01\n" + - "\x12BacklogStatusEvent\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + - "\vfrom_status\x18\x02 \x01(\tR\n" + - "fromStatus\x12\x1b\n" + - "\tto_status\x18\x03 \x01(\tR\btoStatus\x12!\n" + - "\ftriggered_by\x18\x04 \x01(\tR\vtriggeredBy\x129\n" + - "\n" + - "created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x17\n" + - "\x04note\x18\x06 \x01(\tH\x00R\x04note\x88\x01\x01B\a\n" + - "\x05_note\"\xb5\x01\n" + - "\x13BacklogProgressNote\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12'\n" + - "\x0fcriterion_index\x18\x02 \x01(\x05R\x0ecriterionIndex\x12\x12\n" + - "\x04note\x18\x03 \x01(\tR\x04note\x12\x16\n" + - "\x06status\x18\x04 \x01(\tR\x06status\x129\n" + - "\n" + - "created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"\xa6\v\n" + - "\vBacklogItem\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + - "\x05title\x18\x02 \x01(\tR\x05title\x12 \n" + - "\vdescription\x18\x03 \x01(\tR\vdescription\x12H\n" + - "\x13acceptance_criteria\x18\x04 \x03(\v2\x17.session.v1.AcCriterionR\x12acceptanceCriteria\x12\x1a\n" + - "\bpriority\x18\x05 \x01(\x05R\bpriority\x12\x16\n" + - "\x06status\x18\x06 \x01(\tR\x06status\x12\x1b\n" + - "\trepo_path\x18\a \x01(\tR\brepoPath\x12(\n" + - "\x10skip_review_gate\x18\b \x01(\bR\x0eskipReviewGate\x12#\n" + - "\rskip_planning\x18\t \x01(\bR\fskipPlanning\x12#\n" + - "\rplan_approved\x18\n" + - " \x01(\bR\fplanApproved\x12D\n" + - "\x10plan_approved_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\x0eplanApprovedAt\x12.\n" + - "\x13plan_artifacts_path\x18\f \x01(\tR\x11planArtifactsPath\x12\x14\n" + - "\x05notes\x18\r \x01(\tR\x05notes\x12\x1f\n" + - "\vexternal_id\x18\x0e \x01(\tR\n" + - "externalId\x12;\n" + - "\varchived_at\x18\x0f \x01(\v2\x1a.google.protobuf.TimestampR\n" + - "archivedAt\x129\n" + - "\n" + - "created_at\x18\x10 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + - "\n" + - "updated_at\x18\x11 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12<\n" + - "\ritem_sessions\x18\x12 \x03(\v2\x17.session.v1.ItemSessionR\fitemSessions\x12\x1b\n" + - "\tsource_id\x18\x13 \x01(\tR\bsourceId\x12C\n" + - "\rstatus_events\x18\x14 \x03(\v2\x1e.session.v1.BacklogStatusEventR\fstatusEvents\x127\n" + - "\x18total_estimated_cost_usd\x18\x15 \x01(\x01R\x15totalEstimatedCostUsd\x12\x15\n" + - "\x06pr_url\x18\x16 \x01(\tR\x05prUrl\x12\x1b\n" + - "\tpr_number\x18\x17 \x01(\x05R\bprNumber\x12,\n" + - "\x12auto_spawn_session\x18\x18 \x01(\bR\x10autoSpawnSession\x12(\n" + - "\rpipeline_mode\x18\x19 \x01(\tH\x00R\fpipelineMode\x88\x01\x01\x12$\n" + - "\x0eauto_create_pr\x18\x1a \x01(\bR\fautoCreatePr\x12F\n" + - "\x0eprogress_notes\x18\x1b \x03(\v2\x1f.session.v1.BacklogProgressNoteR\rprogressNotes\x123\n" + - "\x13rework_cap_override\x18\x1c \x01(\x05H\x01R\x11reworkCapOverride\x88\x01\x01\x12\x1f\n" + - "\bcategory\x18\x1d \x01(\tH\x02R\bcategory\x88\x01\x01\x12&\n" + - "\fexternal_url\x18\x1e \x01(\tH\x03R\vexternalUrl\x88\x01\x01\x12\x16\n" + - "\x06labels\x18\x1f \x03(\tR\x06labels\x12/\n" + - "\x13allowed_transitions\x18 \x03(\tR\x12allowedTransitionsB\x10\n" + - "\x0e_pipeline_modeB\x16\n" + - "\x14_rework_cap_overrideB\v\n" + - "\t_categoryB\x0f\n" + - "\r_external_url\"\xf8\x03\n" + - "\n" + - "ItemSource\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n" + - "\tplugin_id\x18\x02 \x01(\tR\bpluginId\x12!\n" + - "\fdisplay_name\x18\x03 \x01(\tR\vdisplayName\x12\x18\n" + - "\aenabled\x18\x04 \x01(\bR\aenabled\x12@\n" + - "\x0elast_synced_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\flastSyncedAt\x12)\n" + - "\x10token_configured\x18\x06 \x01(\bR\x0ftokenConfigured\x129\n" + - "\n" + - "created_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + - "\n" + - "updated_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x120\n" + - "\x14forward_sync_enabled\x18\t \x01(\bR\x12forwardSyncEnabled\x122\n" + - "\x15backward_sync_enabled\x18\n" + - " \x01(\bR\x13backwardSyncEnabled\x127\n" + - "\x18forward_sync_close_label\x18\v \x01(\tR\x15forwardSyncCloseLabel\"\xff\x05\n" + - "\fPipelineMode\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + - "\x04slug\x18\x02 \x01(\tR\x04slug\x12\x12\n" + - "\x04name\x18\x03 \x01(\tR\x04name\x12 \n" + - "\vdescription\x18\x04 \x01(\tR\vdescription\x12\x18\n" + - "\aenabled\x18\x05 \x01(\bR\aenabled\x126\n" + - "\x17status_command_template\x18\x06 \x01(\tR\x15statusCommandTemplate\x122\n" + - "\x15done_command_template\x18\a \x01(\tR\x13doneCommandTemplate\x122\n" + - "\x15fail_command_template\x18\b \x01(\tR\x13failCommandTemplate\x126\n" + - "\x17review_command_template\x18\t \x01(\tR\x15reviewCommandTemplate\x122\n" + - "\x15ship_command_template\x18\n" + - " \x01(\tR\x13shipCommandTemplate\x122\n" + - "\x15help_command_template\x18\v \x01(\tR\x13helpCommandTemplate\x124\n" + - "\x16triage_prompt_template\x18\f \x01(\tR\x14triagePromptTemplate\x124\n" + - "\x16review_prompt_template\x18\r \x01(\tR\x14reviewPromptTemplate\x126\n" + - "\x17initial_prompt_template\x18\x0e \x01(\tR\x15initialPromptTemplate\x129\n" + - "\n" + - "created_at\x18\x0f \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + - "\n" + - "updated_at\x18\x10 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12!\n" + - "\fcontent_hash\x18\x11 \x01(\tR\vcontentHash\"\xd2\x02\n" + - "\x0fSourceSyncEvent\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x129\n" + - "\n" + - "started_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12;\n" + - "\vfinished_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + - "finishedAt\x12#\n" + - "\ritems_created\x18\x04 \x01(\x05R\fitemsCreated\x12#\n" + - "\ritems_updated\x18\x05 \x01(\x05R\fitemsUpdated\x12#\n" + - "\ritems_skipped\x18\x06 \x01(\x05R\fitemsSkipped\x12#\n" + - "\ritems_errored\x18\a \x01(\x05R\fitemsErrored\x12#\n" + - "\rerror_message\x18\b \x01(\tR\ferrorMessage\"\x99\x04\n" + - "\x18CreateBacklogItemRequest\x12\x14\n" + - "\x05title\x18\x01 \x01(\tR\x05title\x12 \n" + - "\vdescription\x18\x02 \x01(\tR\vdescription\x12H\n" + - "\x13acceptance_criteria\x18\x03 \x03(\v2\x17.session.v1.AcCriterionR\x12acceptanceCriteria\x12\x1a\n" + - "\bpriority\x18\x04 \x01(\x05R\bpriority\x12(\n" + - "\x10skip_review_gate\x18\x05 \x01(\bR\x0eskipReviewGate\x12#\n" + - "\rskip_planning\x18\x06 \x01(\bR\fskipPlanning\x12\x1b\n" + - "\trepo_path\x18\a \x01(\tR\brepoPath\x12\x14\n" + - "\x05notes\x18\b \x01(\tR\x05notes\x12\x1f\n" + - "\vskip_triage\x18\t \x01(\bR\n" + - "skipTriage\x12,\n" + - "\x12auto_spawn_session\x18\n" + - " \x01(\bR\x10autoSpawnSession\x12(\n" + - "\rpipeline_mode\x18\v \x01(\tH\x00R\fpipelineMode\x88\x01\x01\x12$\n" + - "\x0eauto_create_pr\x18\f \x01(\bR\fautoCreatePr\x12\x1f\n" + - "\bcategory\x18\r \x01(\tH\x01R\bcategory\x88\x01\x01B\x10\n" + - "\x0e_pipeline_modeB\v\n" + - "\t_category\"s\n" + - "\x19CreateBacklogItemResponse\x12+\n" + - "\x04item\x18\x01 \x01(\v2\x17.session.v1.BacklogItemR\x04item\x12)\n" + - "\x10triage_triggered\x18\x02 \x01(\bR\x0ftriageTriggered\"0\n" + - "\x15GetBacklogItemRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\"E\n" + - "\x16GetBacklogItemResponse\x12+\n" + - "\x04item\x18\x01 \x01(\v2\x17.session.v1.BacklogItemR\x04item\"\xb5\x06\n" + - "\x15BacklogItemShipStatus\x12\x18\n" + - "\ashipped\x18\x01 \x01(\bR\ashipped\x12\x1f\n" + - "\vshipped_via\x18\x02 \x01(\tR\n" + - "shippedVia\x12\x15\n" + - "\x06pr_url\x18\x03 \x01(\tR\x05prUrl\x12\x1f\n" + - "\vbranch_name\x18\x04 \x01(\tR\n" + - "branchName\x12#\n" + - "\rbranch_exists\x18\x05 \x01(\bR\fbranchExists\x12\"\n" + - "\rahead_of_main\x18\x06 \x01(\x05R\vaheadOfMain\x12\x1f\n" + - "\vbehind_main\x18\a \x01(\x05R\n" + - "behindMain\x12&\n" + - "\x0flast_commit_sha\x18\b \x01(\tR\rlastCommitSha\x12.\n" + - "\x13last_commit_message\x18\t \x01(\tR\x11lastCommitMessage\x12@\n" + - "\x0elast_commit_at\x18\n" + - " \x01(\v2\x1a.google.protobuf.TimestampR\flastCommitAt\x12\x14\n" + - "\x05error\x18\v \x01(\tR\x05error\x123\n" + - "\acommits\x18\f \x03(\v2\x19.session.v1.ShippedCommitR\acommits\x128\n" + - "\x18shipped_check_conclusion\x18\r \x01(\tR\x16shippedCheckConclusion\x124\n" + - "\x16shipped_approved_count\x18\x0e \x01(\x05R\x14shippedApprovedCount\x129\n" + - "\x19shipped_changes_req_count\x18\x0f \x01(\x05R\x16shippedChangesReqCount\x12:\n" + - "\n" + - "file_stats\x18\x10 \x03(\v2\x1b.session.v1.ShippedFileStatR\tfileStats\x12;\n" + - "\vsnapshot_at\x18\x11 \x01(\v2\x1a.google.protobuf.TimestampR\n" + - "snapshotAt\x126\n" + - "\x17snapshot_capture_failed\x18\x12 \x01(\bR\x15snapshotCaptureFailed\"\x99\x01\n" + - "\rShippedCommit\x12\x10\n" + - "\x03sha\x18\x01 \x01(\tR\x03sha\x12\x18\n" + - "\asummary\x18\x02 \x01(\tR\asummary\x12\x1f\n" + - "\vauthor_name\x18\x03 \x01(\tR\n" + - "authorName\x12;\n" + - "\vauthored_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\n" + - "authoredAt\"\x91\x01\n" + - "\x0fShippedFileStat\x12\x12\n" + - "\x04path\x18\x01 \x01(\tR\x04path\x12.\n" + - "\x06status\x18\x02 \x01(\x0e2\x16.session.v1.FileStatusR\x06status\x12\x1c\n" + - "\tadditions\x18\x03 \x01(\x05R\tadditions\x12\x1c\n" + - "\tdeletions\x18\x04 \x01(\x05R\tdeletions\":\n" + - "\x1fGetBacklogItemShipStatusRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\"]\n" + - " GetBacklogItemShipStatusResponse\x129\n" + - "\x06status\x18\x01 \x01(\v2!.session.v1.BacklogItemShipStatusR\x06status\"\xbc\x01\n" + - "\x17ListBacklogItemsRequest\x12\x16\n" + - "\x06status\x18\x01 \x03(\tR\x06status\x12\x1a\n" + - "\bpriority\x18\x02 \x03(\x05R\bpriority\x12\x17\n" + - "\asort_by\x18\x03 \x01(\tR\x06sortBy\x12)\n" + - "\x10include_terminal\x18\x04 \x01(\bR\x0fincludeTerminal\x12)\n" + - "\x10include_archived\x18\x05 \x01(\bR\x0fincludeArchived\"I\n" + - "\x18ListBacklogItemsResponse\x12-\n" + - "\x05items\x18\x01 \x03(\v2\x17.session.v1.BacklogItemR\x05items\"\xaa\x06\n" + - "\x18UpdateBacklogItemRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12\x14\n" + - "\x05title\x18\x02 \x01(\tR\x05title\x12 \n" + - "\vdescription\x18\x03 \x01(\tR\vdescription\x12H\n" + - "\x13acceptance_criteria\x18\x04 \x03(\v2\x17.session.v1.AcCriterionR\x12acceptanceCriteria\x12\x1a\n" + - "\bpriority\x18\x05 \x01(\x05R\bpriority\x12(\n" + - "\x10skip_review_gate\x18\x06 \x01(\bR\x0eskipReviewGate\x12#\n" + - "\rskip_planning\x18\a \x01(\bR\fskipPlanning\x12\x1b\n" + - "\trepo_path\x18\b \x01(\tR\brepoPath\x12\x14\n" + - "\x05notes\x18\t \x01(\tR\x05notes\x12'\n" + - "\x0fexpected_status\x18\n" + - " \x01(\tR\x0eexpectedStatus\x12J\n" + - "\x13expected_updated_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\x11expectedUpdatedAt\x12,\n" + - "\x12auto_spawn_session\x18\f \x01(\bR\x10autoSpawnSession\x12(\n" + - "\rpipeline_mode\x18\r \x01(\tH\x00R\fpipelineMode\x88\x01\x01\x12$\n" + - "\x0eauto_create_pr\x18\x0e \x01(\bR\fautoCreatePr\x123\n" + - "\x13rework_cap_override\x18\x0f \x01(\x05H\x01R\x11reworkCapOverride\x88\x01\x01\x12\x1f\n" + - "\bcategory\x18\x10 \x01(\tH\x02R\bcategory\x88\x01\x01\x12\x1a\n" + - "\x06pr_url\x18\x11 \x01(\tH\x03R\x05prUrl\x88\x01\x01\x12 \n" + - "\tpr_number\x18\x12 \x01(\x05H\x04R\bprNumber\x88\x01\x01B\x10\n" + - "\x0e_pipeline_modeB\x16\n" + - "\x14_rework_cap_overrideB\v\n" + - "\t_categoryB\t\n" + - "\a_pr_urlB\f\n" + - "\n" + - "_pr_number\"H\n" + - "\x19UpdateBacklogItemResponse\x12+\n" + - "\x04item\x18\x01 \x01(\v2\x17.session.v1.BacklogItemR\x04item\"4\n" + - "\x19ArchiveBacklogItemRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\"I\n" + - "\x1aArchiveBacklogItemResponse\x12+\n" + - "\x04item\x18\x01 \x01(\v2\x17.session.v1.BacklogItemR\x04item\"3\n" + - "\x18DeleteBacklogItemRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\"\x1b\n" + - "\x19DeleteBacklogItemResponse\"\x80\x02\n" + - "\"TransitionBacklogItemStatusRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12#\n" + - "\rtarget_status\x18\x02 \x01(\tR\ftargetStatus\x12'\n" + - "\x0fexpected_status\x18\x03 \x01(\tR\x0eexpectedStatus\x12J\n" + - "\x13expected_updated_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\x11expectedUpdatedAt\x12'\n" + - "\x0foverride_reason\x18\x05 \x01(\tR\x0eoverrideReason\"R\n" + - "#TransitionBacklogItemStatusResponse\x12+\n" + - "\x04item\x18\x01 \x01(\v2\x17.session.v1.BacklogItemR\x04item\"l\n" + - "\x1bSpawnSessionFromItemRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12\x1e\n" + - "\n" + - "autonomous\x18\x03 \x01(\bR\n" + - "autonomous\x12\x14\n" + - "\x05force\x18\x04 \x01(\bR\x05force\"\x95\x01\n" + - "\x1cSpawnSessionFromItemResponse\x12!\n" + - "\fsession_uuid\x18\x01 \x01(\tR\vsessionUuid\x12:\n" + - "\fitem_session\x18\x02 \x01(\v2\x17.session.v1.ItemSessionR\vitemSession\x12\x16\n" + - "\x06queued\x18\x03 \x01(\bR\x06queued\"X\n" + - "\x1aAttachSessionToItemRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12!\n" + - "\fsession_uuid\x18\x02 \x01(\tR\vsessionUuid\"Y\n" + - "\x1bAttachSessionToItemResponse\x12:\n" + - "\fitem_session\x18\x01 \x01(\v2\x17.session.v1.ItemSessionR\vitemSession\"K\n" + - "\x14TriggerTriageRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12\x1a\n" + - "\bfeedback\x18\x02 \x01(\tR\bfeedback\"S\n" + - "\x15TriggerTriageResponse\x12:\n" + - "\fitem_session\x18\x01 \x01(\v2\x17.session.v1.ItemSessionR\vitemSession\"-\n" + - "\x12ApprovePlanRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\"B\n" + - "\x13ApprovePlanResponse\x12+\n" + - "\x04item\x18\x01 \x01(\v2\x17.session.v1.BacklogItemR\x04item\"\x18\n" + - "\x16SuggestNextItemRequest\"\x82\x01\n" + - "\x17SuggestNextItemResponse\x12:\n" + - "\fitem_session\x18\x01 \x01(\v2\x17.session.v1.ItemSessionR\vitemSession\x12+\n" + - "\x04item\x18\x02 \x01(\v2\x17.session.v1.BacklogItemR\x04item\"\x86\x01\n" + - "\x16OverrideVerdictRequest\x12&\n" + - "\x0fitem_session_id\x18\x01 \x01(\tR\ritemSessionId\x12\x1b\n" + - "\tto_status\x18\x02 \x01(\tR\btoStatus\x12'\n" + - "\x0foverride_reason\x18\x03 \x01(\tR\x0eoverrideReason\"F\n" + - "\x17OverrideVerdictResponse\x12+\n" + - "\x04item\x18\x01 \x01(\v2\x17.session.v1.BacklogItemR\x04item\"1\n" + - "\x16TriggerReReviewRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\"U\n" + - "\x17TriggerReReviewResponse\x12:\n" + - "\fitem_session\x18\x01 \x01(\v2\x17.session.v1.ItemSessionR\vitemSession\"/\n" + - "\x14TriggerShipPRRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\".\n" + - "\x15TriggerShipPRResponse\x12\x15\n" + - "\x06pr_url\x18\x01 \x01(\tR\x05prUrl\"1\n" + - "\x12TriggerSyncRequest\x12\x1b\n" + - "\tsource_id\x18\x01 \x01(\tR\bsourceId\"\x15\n" + - "\x13TriggerSyncResponse\"\x90\x01\n" + - "\x17CreateItemSourceRequest\x12\x1b\n" + - "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12!\n" + - "\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12\x1f\n" + - "\vconfig_json\x18\x03 \x01(\tR\n" + - "configJson\x12\x14\n" + - "\x05token\x18\x04 \x01(\tR\x05token\"J\n" + - "\x18CreateItemSourceResponse\x12.\n" + - "\x06source\x18\x01 \x01(\v2\x16.session.v1.ItemSourceR\x06source\"\x18\n" + - "\x16ListItemSourcesRequest\"K\n" + - "\x17ListItemSourcesResponse\x120\n" + - "\asources\x18\x01 \x03(\v2\x16.session.v1.ItemSourceR\asources\"\xa8\x02\n" + - "\x17UpdateItemSourceRequest\x12\x1b\n" + - "\tsource_id\x18\x01 \x01(\tR\bsourceId\x12!\n" + - "\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12\x18\n" + - "\aenabled\x18\x03 \x01(\bR\aenabled\x12\x14\n" + - "\x05token\x18\x04 \x01(\tR\x05token\x120\n" + - "\x14forward_sync_enabled\x18\x05 \x01(\bR\x12forwardSyncEnabled\x122\n" + - "\x15backward_sync_enabled\x18\x06 \x01(\bR\x13backwardSyncEnabled\x127\n" + - "\x18forward_sync_close_label\x18\a \x01(\tR\x15forwardSyncCloseLabel\"J\n" + - "\x18UpdateItemSourceResponse\x12.\n" + - "\x06source\x18\x01 \x01(\v2\x16.session.v1.ItemSourceR\x06source\"6\n" + - "\x17DeleteItemSourceRequest\x12\x1b\n" + - "\tsource_id\x18\x01 \x01(\tR\bsourceId\"\x1a\n" + - "\x18DeleteItemSourceResponse\"4\n" + - "\x15GetSyncHistoryRequest\x12\x1b\n" + - "\tsource_id\x18\x01 \x01(\tR\bsourceId\"k\n" + - "\x16GetSyncHistoryResponse\x123\n" + - "\x06events\x18\x01 \x03(\v2\x1b.session.v1.SourceSyncEventR\x06events\x12\x1c\n" + - "\ttruncated\x18\x02 \x01(\bR\ttruncated\"?\n" + - " PreviewBackwardSyncImpactRequest\x12\x1b\n" + - "\tsource_id\x18\x01 \x01(\tR\bsourceId\"\x98\x01\n" + - "!PreviewBackwardSyncImpactResponse\x12\x1d\n" + - "\n" + - "item_count\x18\x01 \x01(\x05R\titemCount\x12#\n" + - "\rsample_titles\x18\x02 \x03(\tR\fsampleTitles\x12/\n" + - "\x13possibly_incomplete\x18\x03 \x01(\bR\x12possiblyIncomplete\"\xe3\x04\n" + - "\x19CreatePipelineModeRequest\x12\x12\n" + - "\x04slug\x18\x01 \x01(\tR\x04slug\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + - "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x18\n" + - "\aenabled\x18\x04 \x01(\bR\aenabled\x126\n" + - "\x17status_command_template\x18\x05 \x01(\tR\x15statusCommandTemplate\x122\n" + - "\x15done_command_template\x18\x06 \x01(\tR\x13doneCommandTemplate\x122\n" + - "\x15fail_command_template\x18\a \x01(\tR\x13failCommandTemplate\x126\n" + - "\x17review_command_template\x18\b \x01(\tR\x15reviewCommandTemplate\x122\n" + - "\x15ship_command_template\x18\t \x01(\tR\x13shipCommandTemplate\x122\n" + - "\x15help_command_template\x18\n" + - " \x01(\tR\x13helpCommandTemplate\x124\n" + - "\x16triage_prompt_template\x18\v \x01(\tR\x14triagePromptTemplate\x124\n" + - "\x16review_prompt_template\x18\f \x01(\tR\x14reviewPromptTemplate\x126\n" + - "\x17initial_prompt_template\x18\r \x01(\tR\x15initialPromptTemplate\"J\n" + - "\x1aCreatePipelineModeResponse\x12,\n" + - "\x04item\x18\x01 \x01(\v2\x18.session.v1.PipelineModeR\x04item\"\xb2\a\n" + - "\x19UpdatePipelineModeRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n" + - "\x04name\x18\x02 \x01(\tH\x00R\x04name\x88\x01\x01\x12%\n" + - "\vdescription\x18\x03 \x01(\tH\x01R\vdescription\x88\x01\x01\x12\x1d\n" + - "\aenabled\x18\x04 \x01(\bH\x02R\aenabled\x88\x01\x01\x12;\n" + - "\x17status_command_template\x18\x05 \x01(\tH\x03R\x15statusCommandTemplate\x88\x01\x01\x127\n" + - "\x15done_command_template\x18\x06 \x01(\tH\x04R\x13doneCommandTemplate\x88\x01\x01\x127\n" + - "\x15fail_command_template\x18\a \x01(\tH\x05R\x13failCommandTemplate\x88\x01\x01\x12;\n" + - "\x17review_command_template\x18\b \x01(\tH\x06R\x15reviewCommandTemplate\x88\x01\x01\x127\n" + - "\x15ship_command_template\x18\t \x01(\tH\aR\x13shipCommandTemplate\x88\x01\x01\x127\n" + - "\x15help_command_template\x18\n" + - " \x01(\tH\bR\x13helpCommandTemplate\x88\x01\x01\x129\n" + - "\x16triage_prompt_template\x18\v \x01(\tH\tR\x14triagePromptTemplate\x88\x01\x01\x129\n" + - "\x16review_prompt_template\x18\f \x01(\tH\n" + - "R\x14reviewPromptTemplate\x88\x01\x01\x12;\n" + - "\x17initial_prompt_template\x18\r \x01(\tH\vR\x15initialPromptTemplate\x88\x01\x01B\a\n" + - "\x05_nameB\x0e\n" + - "\f_descriptionB\n" + - "\n" + - "\b_enabledB\x1a\n" + - "\x18_status_command_templateB\x18\n" + - "\x16_done_command_templateB\x18\n" + - "\x16_fail_command_templateB\x1a\n" + - "\x18_review_command_templateB\x18\n" + - "\x16_ship_command_templateB\x18\n" + - "\x16_help_command_templateB\x19\n" + - "\x17_triage_prompt_templateB\x19\n" + - "\x17_review_prompt_templateB\x1a\n" + - "\x18_initial_prompt_template\"J\n" + - "\x1aUpdatePipelineModeResponse\x12,\n" + - "\x04item\x18\x01 \x01(\v2\x18.session.v1.PipelineModeR\x04item\"+\n" + - "\x19DeletePipelineModeRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"\x1c\n" + - "\x1aDeletePipelineModeResponse\",\n" + - "\x16GetPipelineModeRequest\x12\x12\n" + - "\x04slug\x18\x01 \x01(\tR\x04slug\"G\n" + - "\x17GetPipelineModeResponse\x12,\n" + - "\x04item\x18\x01 \x01(\v2\x18.session.v1.PipelineModeR\x04item\"\x1a\n" + - "\x18ListPipelineModesRequest\"K\n" + - "\x19ListPipelineModesResponse\x12.\n" + - "\x05items\x18\x01 \x03(\v2\x18.session.v1.PipelineModeR\x05items\"\xa9\x05\n" + - "\x10BacklogItemEvent\x128\n" + - "\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12R\n" + - "\x0estatus_changed\x18\x02 \x01(\v2).session.v1.BacklogItemStatusChangedEventH\x00R\rstatusChanged\x12X\n" + - "\x10verdict_recorded\x18\x03 \x01(\v2+.session.v1.BacklogItemVerdictRecordedEventH\x00R\x0fverdictRecorded\x12X\n" + - "\x10session_attached\x18\x04 \x01(\v2+.session.v1.BacklogItemSessionAttachedEventH\x00R\x0fsessionAttached\x12H\n" + - "\fitem_updated\x18\x05 \x01(\v2#.session.v1.BacklogItemUpdatedEventH\x00R\vitemUpdated\x12K\n" + - "\ritem_archived\x18\x06 \x01(\v2$.session.v1.BacklogItemArchivedEventH\x00R\fitemArchived\x12H\n" + - "\fitem_removed\x18\a \x01(\v2#.session.v1.BacklogItemRemovedEventH\x00R\vitemRemoved\x12W\n" + - "\x11snapshot_complete\x18\t \x01(\v2(.session.v1.BacklogSnapshotCompleteEventH\x00R\x10snapshotComplete\x12\x10\n" + - "\x03seq\x18\b \x01(\x04R\x03seqB\a\n" + - "\x05event\"\xc4\x01\n" + - "\x1dBacklogItemStatusChangedEvent\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12\x1d\n" + - "\n" + - "old_status\x18\x02 \x01(\tR\toldStatus\x12\x1d\n" + - "\n" + - "new_status\x18\x03 \x01(\tR\tnewStatus\x12+\n" + - "\x04item\x18\x04 \x01(\v2\x17.session.v1.BacklogItemR\x04item\x12\x1f\n" + - "\vis_snapshot\x18\x05 \x01(\bR\n" + - "isSnapshot\"\xbd\x01\n" + - "\x1fBacklogItemVerdictRecordedEvent\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x123\n" + - "\averdict\x18\x02 \x01(\v2\x19.session.v1.ReviewVerdictR\averdict\x12+\n" + - "\x04item\x18\x03 \x01(\v2\x17.session.v1.BacklogItemR\x04item\x12\x1f\n" + - "\vis_snapshot\x18\x04 \x01(\bR\n" + - "isSnapshot\"\xa7\x01\n" + - "\x1fBacklogItemSessionAttachedEvent\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12\x1d\n" + - "\n" + - "session_id\x18\x02 \x01(\tR\tsessionId\x12+\n" + - "\x04item\x18\x03 \x01(\v2\x17.session.v1.BacklogItemR\x04item\x12\x1f\n" + - "\vis_snapshot\x18\x04 \x01(\bR\n" + - "isSnapshot\"\xa7\x01\n" + - "\x17BacklogItemUpdatedEvent\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12%\n" + - "\x0eupdated_fields\x18\x02 \x03(\tR\rupdatedFields\x12+\n" + - "\x04item\x18\x03 \x01(\v2\x17.session.v1.BacklogItemR\x04item\x12\x1f\n" + - "\vis_snapshot\x18\x04 \x01(\bR\n" + - "isSnapshot\"\x91\x01\n" + - "\x18BacklogItemArchivedEvent\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12;\n" + - "\varchived_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\n" + - "archivedAt\x12\x1f\n" + - "\vis_snapshot\x18\x03 \x01(\bR\n" + - "isSnapshot\"J\n" + - "\x17BacklogItemRemovedEvent\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12\x16\n" + - "\x06reason\x18\x02 \x01(\tR\x06reason\"\x1e\n" + - "\x1cBacklogSnapshotCompleteEvent\"\x85\x01\n" + - "\x18WatchBacklogItemsRequest\x12#\n" + - "\rstatus_filter\x18\x01 \x03(\tR\fstatusFilter\x12'\n" + - "\x0fcategory_filter\x18\x02 \x03(\tR\x0ecategoryFilter\x12\x1b\n" + - "\tafter_seq\x18\x03 \x01(\x04R\bafterSeq\"\xa4\x01\n" + - "\x18ImportGitHubIssueRequest\x12\x1b\n" + - "\tissue_url\x18\x01 \x01(\tR\bissueUrl\x12\x1b\n" + - "\trepo_path\x18\x02 \x01(\tR\brepoPath\x12#\n" + - "\rskip_planning\x18\x03 \x01(\bR\fskipPlanning\x12)\n" + - "\x10account_username\x18\x04 \x01(\tR\x0faccountUsername\"s\n" + - "\x19ImportGitHubIssueResponse\x12+\n" + - "\x04item\x18\x01 \x01(\v2\x17.session.v1.BacklogItemR\x04item\x12)\n" + - "\x10triage_triggered\x18\x02 \x01(\bR\x0ftriageTriggered\".\n" + - "\x13CancelTriageRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\"4\n" + - "\x14CancelTriageResponse\x12\x1c\n" + - "\tcancelled\x18\x01 \x01(\bR\tcancelled\"\x97\x01\n" + - "\x0fGitHubRepoEntry\x12\x14\n" + - "\x05owner\x18\x01 \x01(\tR\x05owner\x12\x12\n" + - "\x04repo\x18\x02 \x01(\tR\x04repo\x12\x19\n" + - "\bis_local\x18\x03 \x01(\bR\aisLocal\x12\x1d\n" + - "\n" + - "local_path\x18\x04 \x01(\tR\tlocalPath\x12 \n" + - "\vdescription\x18\x05 \x01(\tR\vdescription\"\xb7\x02\n" + - "\x10GitHubIssueEntry\x12\x16\n" + - "\x06number\x18\x01 \x01(\x05R\x06number\x12\x14\n" + - "\x05title\x18\x02 \x01(\tR\x05title\x12\x14\n" + - "\x05state\x18\x03 \x01(\tR\x05state\x12\x10\n" + - "\x03url\x18\x04 \x01(\tR\x03url\x12\x16\n" + - "\x06labels\x18\x05 \x03(\tR\x06labels\x12\x12\n" + - "\x04body\x18\x06 \x01(\tR\x04body\x129\n" + - "\n" + - "created_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + - "\n" + - "updated_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x13\n" + - "\x05is_pr\x18\t \x01(\bR\x04isPr\x12\x16\n" + - "\x06author\x18\n" + - " \x01(\tR\x06author\"F\n" + - "\x18SearchGitHubReposRequest\x12\x14\n" + - "\x05query\x18\x01 \x01(\tR\x05query\x12\x14\n" + - "\x05limit\x18\x02 \x01(\x05R\x05limit\"N\n" + - "\x19SearchGitHubReposResponse\x121\n" + - "\x05repos\x18\x01 \x03(\v2\x1b.session.v1.GitHubRepoEntryR\x05repos\"\x87\x01\n" + - "\x17ListGitHubIssuesRequest\x12\x14\n" + - "\x05owner\x18\x01 \x01(\tR\x05owner\x12\x12\n" + - "\x04repo\x18\x02 \x01(\tR\x04repo\x12\x14\n" + - "\x05state\x18\x03 \x01(\tR\x05state\x12\x16\n" + - "\x06search\x18\x04 \x01(\tR\x06search\x12\x14\n" + - "\x05limit\x18\x05 \x01(\x05R\x05limit\"P\n" + - "\x18ListGitHubIssuesResponse\x124\n" + - "\x06issues\x18\x01 \x03(\v2\x1c.session.v1.GitHubIssueEntryR\x06issues\"4\n" + - "\x19GetBacklogItemDiffRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\"`\n" + - "\x1aGetBacklogItemDiffResponse\x12\x12\n" + - "\x04diff\x18\x01 \x01(\tR\x04diff\x12\x14\n" + - "\x05added\x18\x02 \x01(\x05R\x05added\x12\x18\n" + - "\aremoved\x18\x03 \x01(\x05R\aremoved\"\xca\x01\n" + - "\x10SessionCostEntry\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12!\n" + - "\fsession_role\x18\x02 \x01(\tR\vsessionRole\x12,\n" + - "\x12estimated_cost_usd\x18\x03 \x01(\x01R\x10estimatedCostUsd\x12!\n" + - "\finput_tokens\x18\x04 \x01(\x03R\vinputTokens\x12#\n" + - "\routput_tokens\x18\x05 \x01(\x03R\foutputTokens\"4\n" + - "\x19GetBacklogItemCostRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\"|\n" + - "\x1aGetBacklogItemCostResponse\x12$\n" + - "\x0etotal_cost_usd\x18\x01 \x01(\x01R\ftotalCostUsd\x128\n" + - "\bsessions\x18\x02 \x03(\v2\x1c.session.v1.SessionCostEntryR\bsessions\"\xb4\x01\n" + - "\x13BacklogSessionEntry\x12!\n" + - "\fsession_uuid\x18\x01 \x01(\tR\vsessionUuid\x12\x17\n" + - "\aitem_id\x18\x02 \x01(\tR\x06itemId\x12\x1d\n" + - "\n" + - "item_title\x18\x03 \x01(\tR\titemTitle\x12\x1f\n" + - "\vitem_status\x18\x04 \x01(\tR\n" + - "itemStatus\x12!\n" + - "\fsession_role\x18\x05 \x01(\tR\vsessionRole\"\x1f\n" + - "\x1dGetSessionBacklogIndexRequest\"[\n" + - "\x1eGetSessionBacklogIndexResponse\x129\n" + - "\aentries\x18\x01 \x03(\v2\x1f.session.v1.BacklogSessionEntryR\aentries\"\xcb\x01\n" + - "\x19SubmitManualReviewRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12'\n" + - "\x0foverall_outcome\x18\x02 \x01(\tR\x0eoverallOutcome\x12\x18\n" + - "\asummary\x18\x03 \x01(\tR\asummary\x12R\n" + - "\x16per_criterion_verdicts\x18\x04 \x03(\v2\x1c.session.v1.CriterionVerdictR\x14perCriterionVerdicts\"I\n" + - "\x1aSubmitManualReviewResponse\x12+\n" + - "\x04item\x18\x01 \x01(\v2\x17.session.v1.BacklogItemR\x04item\"\xb5\x05\n" + - "\x10StuckBacklogItem\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12\x14\n" + - "\x05title\x18\x02 \x01(\tR\x05title\x12\x16\n" + - "\x06status\x18\x03 \x01(\tR\x06status\x12/\n" + - "\x06reason\x18\x04 \x01(\x0e2\x17.session.v1.StuckReasonR\x06reason\x12F\n" + - "\x11first_detected_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\x0ffirstDetectedAt\x12B\n" + - "\x0flast_checked_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\rlastCheckedAt\x12\x1b\n" + - "\tpr_number\x18\a \x01(\x05R\bprNumber\x12\x15\n" + - "\x06pr_url\x18\b \x01(\tR\x05prUrl\x12\x18\n" + - "\acontext\x18\t \x01(\tR\acontext\x12?\n" + - "\rsnoozed_until\x18\n" + - " \x01(\v2\x1a.google.protobuf.TimestampR\fsnoozedUntil\x12-\n" + - "\x10allow_auto_merge\x18\v \x01(\bH\x00R\x0eallowAutoMerge\x88\x01\x01\x121\n" + - "\x14remediation_attempts\x18\f \x01(\x05R\x13remediationAttempts\x12O\n" + - "\x13next_remediation_at\x18\r \x01(\v2\x1a.google.protobuf.TimestampH\x01R\x11nextRemediationAt\x88\x01\x01\x12.\n" + - "\x13plan_artifacts_path\x18\x0e \x01(\tR\x11planArtifactsPathB\x13\n" + - "\x11_allow_auto_mergeB\x16\n" + - "\x14_next_remediation_at\"\x1e\n" + - "\x1cListStuckBacklogItemsRequest\"S\n" + - "\x1dListStuckBacklogItemsResponse\x122\n" + - "\x05items\x18\x01 \x03(\v2\x1c.session.v1.StuckBacklogItemR\x05items\"\x94\x01\n" + - "\x16SnoozeStuckItemRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12/\n" + - "\x06reason\x18\x02 \x01(\x0e2\x17.session.v1.StuckReasonR\x06reason\x120\n" + - "\x05until\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\x05until\"3\n" + - "\x17SnoozeStuckItemResponse\x12\x18\n" + - "\aapplied\x18\x01 \x01(\bR\aapplied\"h\n" + - "\x1cResetStuckRemediationRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12/\n" + - "\x06reason\x18\x02 \x01(\x0e2\x17.session.v1.StuckReasonR\x06reason\"9\n" + - "\x1dResetStuckRemediationResponse\x12\x18\n" + - "\aapplied\x18\x01 \x01(\bR\aapplied\"\xb1\x01\n" + - " BulkResetStuckRemediationRequest\x12/\n" + - "\x06reason\x18\x01 \x01(\x0e2\x17.session.v1.StuckReasonR\x06reason\x12\x1f\n" + - "\vonly_parked\x18\x02 \x01(\bR\n" + - "onlyParked\x12;\n" + - "\x1aonly_parked_explicitly_set\x18\x03 \x01(\bR\x17onlyParkedExplicitlySet\"D\n" + - "!BulkResetStuckRemediationResponse\x12\x1f\n" + - "\vreset_count\x18\x01 \x01(\x05R\n" + - "resetCount\"h\n" + - "\x1cTriggerRemediationNowRequest\x12\x17\n" + - "\aitem_id\x18\x01 \x01(\tR\x06itemId\x12/\n" + - "\x06reason\x18\x02 \x01(\x0e2\x17.session.v1.StuckReasonR\x06reason\"=\n" + - "\x1dTriggerRemediationNowResponse\x12\x1c\n" + - "\ttriggered\x18\x01 \x01(\bR\ttriggered*\x9e\x04\n" + - "\vStuckReason\x12\x1c\n" + - "\x18STUCK_REASON_UNSPECIFIED\x10\x00\x12\"\n" + - "\x1eSTUCK_REASON_PR_READY_UNMERGED\x10\x01\x12\x1b\n" + - "\x17STUCK_REASON_REWORK_CAP\x10\x02\x12!\n" + - "\x1dSTUCK_REASON_ABANDONED_REVIEW\x10\x03\x12\x1b\n" + - "\x17STUCK_REASON_STALE_WORK\x10\x04\x12\x19\n" + - "\x15STUCK_REASON_BOUNCING\x10\x05\x12\x1c\n" + - "\x18STUCK_REASON_PUSH_FAILED\x10\x06\x12 \n" + - "\x1cSTUCK_REASON_ORPHANED_TRIAGE\x10\a\x12!\n" + - "\x1dSTUCK_REASON_AUTONOMOUS_STUCK\x10\b\x12\x1d\n" + - "\x19STUCK_REASON_SPAWN_FAILED\x10\t\x12\"\n" + - "\x1eSTUCK_REASON_PLAN_NOT_APPROVED\x10\n" + - "\x12!\n" + - "\x1dSTUCK_REASON_PR_PENDING_NO_PR\x10\v\x12%\n" + - "!STUCK_REASON_REWORK_BLOCKED_STALE\x10\f\x12\x1d\n" + - "\x19STUCK_REASON_PR_NEEDS_FIX\x10\r\x12'\n" + - "#STUCK_REASON_RESPAWN_BLOCKED_ACTIVE\x10\x0e\x12\x1d\n" + - "\x19STUCK_REASON_LIKELY_FLAKY\x10\x0f2\x9c!\n" + - "\x0eBacklogService\x12b\n" + - "\x11CreateBacklogItem\x12$.session.v1.CreateBacklogItemRequest\x1a%.session.v1.CreateBacklogItemResponse\"\x00\x12Y\n" + - "\x0eGetBacklogItem\x12!.session.v1.GetBacklogItemRequest\x1a\".session.v1.GetBacklogItemResponse\"\x00\x12w\n" + - "\x18GetBacklogItemShipStatus\x12+.session.v1.GetBacklogItemShipStatusRequest\x1a,.session.v1.GetBacklogItemShipStatusResponse\"\x00\x12_\n" + - "\x10ListBacklogItems\x12#.session.v1.ListBacklogItemsRequest\x1a$.session.v1.ListBacklogItemsResponse\"\x00\x12b\n" + - "\x11UpdateBacklogItem\x12$.session.v1.UpdateBacklogItemRequest\x1a%.session.v1.UpdateBacklogItemResponse\"\x00\x12e\n" + - "\x12ArchiveBacklogItem\x12%.session.v1.ArchiveBacklogItemRequest\x1a&.session.v1.ArchiveBacklogItemResponse\"\x00\x12b\n" + - "\x11DeleteBacklogItem\x12$.session.v1.DeleteBacklogItemRequest\x1a%.session.v1.DeleteBacklogItemResponse\"\x00\x12\x80\x01\n" + - "\x1bTransitionBacklogItemStatus\x12..session.v1.TransitionBacklogItemStatusRequest\x1a/.session.v1.TransitionBacklogItemStatusResponse\"\x00\x12k\n" + - "\x14SpawnSessionFromItem\x12'.session.v1.SpawnSessionFromItemRequest\x1a(.session.v1.SpawnSessionFromItemResponse\"\x00\x12h\n" + - "\x13AttachSessionToItem\x12&.session.v1.AttachSessionToItemRequest\x1a'.session.v1.AttachSessionToItemResponse\"\x00\x12V\n" + - "\rTriggerTriage\x12 .session.v1.TriggerTriageRequest\x1a!.session.v1.TriggerTriageResponse\"\x00\x12S\n" + - "\fCancelTriage\x12\x1f.session.v1.CancelTriageRequest\x1a .session.v1.CancelTriageResponse\"\x00\x12P\n" + - "\vApprovePlan\x12\x1e.session.v1.ApprovePlanRequest\x1a\x1f.session.v1.ApprovePlanResponse\"\x00\x12\\\n" + - "\x0fSuggestNextItem\x12\".session.v1.SuggestNextItemRequest\x1a#.session.v1.SuggestNextItemResponse\"\x00\x12\\\n" + - "\x0fOverrideVerdict\x12\".session.v1.OverrideVerdictRequest\x1a#.session.v1.OverrideVerdictResponse\"\x00\x12\\\n" + - "\x0fTriggerReReview\x12\".session.v1.TriggerReReviewRequest\x1a#.session.v1.TriggerReReviewResponse\"\x00\x12V\n" + - "\rTriggerShipPR\x12 .session.v1.TriggerShipPRRequest\x1a!.session.v1.TriggerShipPRResponse\"\x00\x12P\n" + - "\vTriggerSync\x12\x1e.session.v1.TriggerSyncRequest\x1a\x1f.session.v1.TriggerSyncResponse\"\x00\x12_\n" + - "\x10CreateItemSource\x12#.session.v1.CreateItemSourceRequest\x1a$.session.v1.CreateItemSourceResponse\"\x00\x12\\\n" + - "\x0fListItemSources\x12\".session.v1.ListItemSourcesRequest\x1a#.session.v1.ListItemSourcesResponse\"\x00\x12_\n" + - "\x10UpdateItemSource\x12#.session.v1.UpdateItemSourceRequest\x1a$.session.v1.UpdateItemSourceResponse\"\x00\x12_\n" + - "\x10DeleteItemSource\x12#.session.v1.DeleteItemSourceRequest\x1a$.session.v1.DeleteItemSourceResponse\"\x00\x12Y\n" + - "\x0eGetSyncHistory\x12!.session.v1.GetSyncHistoryRequest\x1a\".session.v1.GetSyncHistoryResponse\"\x00\x12z\n" + - "\x19PreviewBackwardSyncImpact\x12,.session.v1.PreviewBackwardSyncImpactRequest\x1a-.session.v1.PreviewBackwardSyncImpactResponse\"\x00\x12e\n" + - "\x12CreatePipelineMode\x12%.session.v1.CreatePipelineModeRequest\x1a&.session.v1.CreatePipelineModeResponse\"\x00\x12e\n" + - "\x12UpdatePipelineMode\x12%.session.v1.UpdatePipelineModeRequest\x1a&.session.v1.UpdatePipelineModeResponse\"\x00\x12e\n" + - "\x12DeletePipelineMode\x12%.session.v1.DeletePipelineModeRequest\x1a&.session.v1.DeletePipelineModeResponse\"\x00\x12\\\n" + - "\x0fGetPipelineMode\x12\".session.v1.GetPipelineModeRequest\x1a#.session.v1.GetPipelineModeResponse\"\x00\x12b\n" + - "\x11ListPipelineModes\x12$.session.v1.ListPipelineModesRequest\x1a%.session.v1.ListPipelineModesResponse\"\x00\x12b\n" + - "\x11ImportGitHubIssue\x12$.session.v1.ImportGitHubIssueRequest\x1a%.session.v1.ImportGitHubIssueResponse\"\x00\x12b\n" + - "\x11SearchGitHubRepos\x12$.session.v1.SearchGitHubReposRequest\x1a%.session.v1.SearchGitHubReposResponse\"\x00\x12_\n" + - "\x10ListGitHubIssues\x12#.session.v1.ListGitHubIssuesRequest\x1a$.session.v1.ListGitHubIssuesResponse\"\x00\x12e\n" + - "\x12GetBacklogItemDiff\x12%.session.v1.GetBacklogItemDiffRequest\x1a&.session.v1.GetBacklogItemDiffResponse\"\x00\x12e\n" + - "\x12GetBacklogItemCost\x12%.session.v1.GetBacklogItemCostRequest\x1a&.session.v1.GetBacklogItemCostResponse\"\x00\x12q\n" + - "\x16GetSessionBacklogIndex\x12).session.v1.GetSessionBacklogIndexRequest\x1a*.session.v1.GetSessionBacklogIndexResponse\"\x00\x12e\n" + - "\x12SubmitManualReview\x12%.session.v1.SubmitManualReviewRequest\x1a&.session.v1.SubmitManualReviewResponse\"\x00\x12n\n" + - "\x15ListStuckBacklogItems\x12(.session.v1.ListStuckBacklogItemsRequest\x1a).session.v1.ListStuckBacklogItemsResponse\"\x00\x12\\\n" + - "\x0fSnoozeStuckItem\x12\".session.v1.SnoozeStuckItemRequest\x1a#.session.v1.SnoozeStuckItemResponse\"\x00\x12n\n" + - "\x15ResetStuckRemediation\x12(.session.v1.ResetStuckRemediationRequest\x1a).session.v1.ResetStuckRemediationResponse\"\x00\x12z\n" + - "\x19BulkResetStuckRemediation\x12,.session.v1.BulkResetStuckRemediationRequest\x1a-.session.v1.BulkResetStuckRemediationResponse\"\x00\x12n\n" + - "\x15TriggerRemediationNow\x12(.session.v1.TriggerRemediationNowRequest\x1a).session.v1.TriggerRemediationNowResponse\"\x00\x12[\n" + - "\x11WatchBacklogItems\x12$.session.v1.WatchBacklogItemsRequest\x1a\x1c.session.v1.BacklogItemEvent\"\x000\x01B\xac\x01\n" + - "\x0ecom.session.v1B\fBacklogProtoP\x01ZCgithub.com/tstapler/stapler-squad/gen/proto/go/session/v1;sessionv1\xa2\x02\x03SXX\xaa\x02\n" + - "Session.V1\xca\x02\n" + - "Session\\V1\xe2\x02\x16Session\\V1\\GPBMetadata\xea\x02\vSession::V1b\x06proto3" - -var ( - file_session_v1_backlog_proto_rawDescOnce sync.Once - file_session_v1_backlog_proto_rawDescData []byte -) - -func file_session_v1_backlog_proto_rawDescGZIP() []byte { - file_session_v1_backlog_proto_rawDescOnce.Do(func() { - file_session_v1_backlog_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_session_v1_backlog_proto_rawDesc), len(file_session_v1_backlog_proto_rawDesc))) - }) - return file_session_v1_backlog_proto_rawDescData -} - -var file_session_v1_backlog_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_session_v1_backlog_proto_msgTypes = make([]protoimpl.MessageInfo, 112) -var file_session_v1_backlog_proto_goTypes = []any{ - (StuckReason)(0), // 0: session.v1.StuckReason - (*AcCriterion)(nil), // 1: session.v1.AcCriterion - (*CriterionVerdict)(nil), // 2: session.v1.CriterionVerdict - (*ReviewVerdict)(nil), // 3: session.v1.ReviewVerdict - (*TriageSuggestion)(nil), // 4: session.v1.TriageSuggestion - (*TriageTask)(nil), // 5: session.v1.TriageTask - (*TriageResult)(nil), // 6: session.v1.TriageResult - (*ItemSession)(nil), // 7: session.v1.ItemSession - (*BacklogStatusEvent)(nil), // 8: session.v1.BacklogStatusEvent - (*BacklogProgressNote)(nil), // 9: session.v1.BacklogProgressNote - (*BacklogItem)(nil), // 10: session.v1.BacklogItem - (*ItemSource)(nil), // 11: session.v1.ItemSource - (*PipelineMode)(nil), // 12: session.v1.PipelineMode - (*SourceSyncEvent)(nil), // 13: session.v1.SourceSyncEvent - (*CreateBacklogItemRequest)(nil), // 14: session.v1.CreateBacklogItemRequest - (*CreateBacklogItemResponse)(nil), // 15: session.v1.CreateBacklogItemResponse - (*GetBacklogItemRequest)(nil), // 16: session.v1.GetBacklogItemRequest - (*GetBacklogItemResponse)(nil), // 17: session.v1.GetBacklogItemResponse - (*BacklogItemShipStatus)(nil), // 18: session.v1.BacklogItemShipStatus - (*ShippedCommit)(nil), // 19: session.v1.ShippedCommit - (*ShippedFileStat)(nil), // 20: session.v1.ShippedFileStat - (*GetBacklogItemShipStatusRequest)(nil), // 21: session.v1.GetBacklogItemShipStatusRequest - (*GetBacklogItemShipStatusResponse)(nil), // 22: session.v1.GetBacklogItemShipStatusResponse - (*ListBacklogItemsRequest)(nil), // 23: session.v1.ListBacklogItemsRequest - (*ListBacklogItemsResponse)(nil), // 24: session.v1.ListBacklogItemsResponse - (*UpdateBacklogItemRequest)(nil), // 25: session.v1.UpdateBacklogItemRequest - (*UpdateBacklogItemResponse)(nil), // 26: session.v1.UpdateBacklogItemResponse - (*ArchiveBacklogItemRequest)(nil), // 27: session.v1.ArchiveBacklogItemRequest - (*ArchiveBacklogItemResponse)(nil), // 28: session.v1.ArchiveBacklogItemResponse - (*DeleteBacklogItemRequest)(nil), // 29: session.v1.DeleteBacklogItemRequest - (*DeleteBacklogItemResponse)(nil), // 30: session.v1.DeleteBacklogItemResponse - (*TransitionBacklogItemStatusRequest)(nil), // 31: session.v1.TransitionBacklogItemStatusRequest - (*TransitionBacklogItemStatusResponse)(nil), // 32: session.v1.TransitionBacklogItemStatusResponse - (*SpawnSessionFromItemRequest)(nil), // 33: session.v1.SpawnSessionFromItemRequest - (*SpawnSessionFromItemResponse)(nil), // 34: session.v1.SpawnSessionFromItemResponse - (*AttachSessionToItemRequest)(nil), // 35: session.v1.AttachSessionToItemRequest - (*AttachSessionToItemResponse)(nil), // 36: session.v1.AttachSessionToItemResponse - (*TriggerTriageRequest)(nil), // 37: session.v1.TriggerTriageRequest - (*TriggerTriageResponse)(nil), // 38: session.v1.TriggerTriageResponse - (*ApprovePlanRequest)(nil), // 39: session.v1.ApprovePlanRequest - (*ApprovePlanResponse)(nil), // 40: session.v1.ApprovePlanResponse - (*SuggestNextItemRequest)(nil), // 41: session.v1.SuggestNextItemRequest - (*SuggestNextItemResponse)(nil), // 42: session.v1.SuggestNextItemResponse - (*OverrideVerdictRequest)(nil), // 43: session.v1.OverrideVerdictRequest - (*OverrideVerdictResponse)(nil), // 44: session.v1.OverrideVerdictResponse - (*TriggerReReviewRequest)(nil), // 45: session.v1.TriggerReReviewRequest - (*TriggerReReviewResponse)(nil), // 46: session.v1.TriggerReReviewResponse - (*TriggerShipPRRequest)(nil), // 47: session.v1.TriggerShipPRRequest - (*TriggerShipPRResponse)(nil), // 48: session.v1.TriggerShipPRResponse - (*TriggerSyncRequest)(nil), // 49: session.v1.TriggerSyncRequest - (*TriggerSyncResponse)(nil), // 50: session.v1.TriggerSyncResponse - (*CreateItemSourceRequest)(nil), // 51: session.v1.CreateItemSourceRequest - (*CreateItemSourceResponse)(nil), // 52: session.v1.CreateItemSourceResponse - (*ListItemSourcesRequest)(nil), // 53: session.v1.ListItemSourcesRequest - (*ListItemSourcesResponse)(nil), // 54: session.v1.ListItemSourcesResponse - (*UpdateItemSourceRequest)(nil), // 55: session.v1.UpdateItemSourceRequest - (*UpdateItemSourceResponse)(nil), // 56: session.v1.UpdateItemSourceResponse - (*DeleteItemSourceRequest)(nil), // 57: session.v1.DeleteItemSourceRequest - (*DeleteItemSourceResponse)(nil), // 58: session.v1.DeleteItemSourceResponse - (*GetSyncHistoryRequest)(nil), // 59: session.v1.GetSyncHistoryRequest - (*GetSyncHistoryResponse)(nil), // 60: session.v1.GetSyncHistoryResponse - (*PreviewBackwardSyncImpactRequest)(nil), // 61: session.v1.PreviewBackwardSyncImpactRequest - (*PreviewBackwardSyncImpactResponse)(nil), // 62: session.v1.PreviewBackwardSyncImpactResponse - (*CreatePipelineModeRequest)(nil), // 63: session.v1.CreatePipelineModeRequest - (*CreatePipelineModeResponse)(nil), // 64: session.v1.CreatePipelineModeResponse - (*UpdatePipelineModeRequest)(nil), // 65: session.v1.UpdatePipelineModeRequest - (*UpdatePipelineModeResponse)(nil), // 66: session.v1.UpdatePipelineModeResponse - (*DeletePipelineModeRequest)(nil), // 67: session.v1.DeletePipelineModeRequest - (*DeletePipelineModeResponse)(nil), // 68: session.v1.DeletePipelineModeResponse - (*GetPipelineModeRequest)(nil), // 69: session.v1.GetPipelineModeRequest - (*GetPipelineModeResponse)(nil), // 70: session.v1.GetPipelineModeResponse - (*ListPipelineModesRequest)(nil), // 71: session.v1.ListPipelineModesRequest - (*ListPipelineModesResponse)(nil), // 72: session.v1.ListPipelineModesResponse - (*BacklogItemEvent)(nil), // 73: session.v1.BacklogItemEvent - (*BacklogItemStatusChangedEvent)(nil), // 74: session.v1.BacklogItemStatusChangedEvent - (*BacklogItemVerdictRecordedEvent)(nil), // 75: session.v1.BacklogItemVerdictRecordedEvent - (*BacklogItemSessionAttachedEvent)(nil), // 76: session.v1.BacklogItemSessionAttachedEvent - (*BacklogItemUpdatedEvent)(nil), // 77: session.v1.BacklogItemUpdatedEvent - (*BacklogItemArchivedEvent)(nil), // 78: session.v1.BacklogItemArchivedEvent - (*BacklogItemRemovedEvent)(nil), // 79: session.v1.BacklogItemRemovedEvent - (*BacklogSnapshotCompleteEvent)(nil), // 80: session.v1.BacklogSnapshotCompleteEvent - (*WatchBacklogItemsRequest)(nil), // 81: session.v1.WatchBacklogItemsRequest - (*ImportGitHubIssueRequest)(nil), // 82: session.v1.ImportGitHubIssueRequest - (*ImportGitHubIssueResponse)(nil), // 83: session.v1.ImportGitHubIssueResponse - (*CancelTriageRequest)(nil), // 84: session.v1.CancelTriageRequest - (*CancelTriageResponse)(nil), // 85: session.v1.CancelTriageResponse - (*GitHubRepoEntry)(nil), // 86: session.v1.GitHubRepoEntry - (*GitHubIssueEntry)(nil), // 87: session.v1.GitHubIssueEntry - (*SearchGitHubReposRequest)(nil), // 88: session.v1.SearchGitHubReposRequest - (*SearchGitHubReposResponse)(nil), // 89: session.v1.SearchGitHubReposResponse - (*ListGitHubIssuesRequest)(nil), // 90: session.v1.ListGitHubIssuesRequest - (*ListGitHubIssuesResponse)(nil), // 91: session.v1.ListGitHubIssuesResponse - (*GetBacklogItemDiffRequest)(nil), // 92: session.v1.GetBacklogItemDiffRequest - (*GetBacklogItemDiffResponse)(nil), // 93: session.v1.GetBacklogItemDiffResponse - (*SessionCostEntry)(nil), // 94: session.v1.SessionCostEntry - (*GetBacklogItemCostRequest)(nil), // 95: session.v1.GetBacklogItemCostRequest - (*GetBacklogItemCostResponse)(nil), // 96: session.v1.GetBacklogItemCostResponse - (*BacklogSessionEntry)(nil), // 97: session.v1.BacklogSessionEntry - (*GetSessionBacklogIndexRequest)(nil), // 98: session.v1.GetSessionBacklogIndexRequest - (*GetSessionBacklogIndexResponse)(nil), // 99: session.v1.GetSessionBacklogIndexResponse - (*SubmitManualReviewRequest)(nil), // 100: session.v1.SubmitManualReviewRequest - (*SubmitManualReviewResponse)(nil), // 101: session.v1.SubmitManualReviewResponse - (*StuckBacklogItem)(nil), // 102: session.v1.StuckBacklogItem - (*ListStuckBacklogItemsRequest)(nil), // 103: session.v1.ListStuckBacklogItemsRequest - (*ListStuckBacklogItemsResponse)(nil), // 104: session.v1.ListStuckBacklogItemsResponse - (*SnoozeStuckItemRequest)(nil), // 105: session.v1.SnoozeStuckItemRequest - (*SnoozeStuckItemResponse)(nil), // 106: session.v1.SnoozeStuckItemResponse - (*ResetStuckRemediationRequest)(nil), // 107: session.v1.ResetStuckRemediationRequest - (*ResetStuckRemediationResponse)(nil), // 108: session.v1.ResetStuckRemediationResponse - (*BulkResetStuckRemediationRequest)(nil), // 109: session.v1.BulkResetStuckRemediationRequest - (*BulkResetStuckRemediationResponse)(nil), // 110: session.v1.BulkResetStuckRemediationResponse - (*TriggerRemediationNowRequest)(nil), // 111: session.v1.TriggerRemediationNowRequest - (*TriggerRemediationNowResponse)(nil), // 112: session.v1.TriggerRemediationNowResponse - (*timestamppb.Timestamp)(nil), // 113: google.protobuf.Timestamp - (FileStatus)(0), // 114: session.v1.FileStatus -} -var file_session_v1_backlog_proto_depIdxs = []int32{ - 2, // 0: session.v1.ReviewVerdict.per_criterion:type_name -> session.v1.CriterionVerdict - 113, // 1: session.v1.ReviewVerdict.override_at:type_name -> google.protobuf.Timestamp - 113, // 2: session.v1.ReviewVerdict.created_at:type_name -> google.protobuf.Timestamp - 4, // 3: session.v1.TriageResult.suggestions:type_name -> session.v1.TriageSuggestion - 5, // 4: session.v1.TriageResult.tasks:type_name -> session.v1.TriageTask - 113, // 5: session.v1.ItemSession.started_at:type_name -> google.protobuf.Timestamp - 113, // 6: session.v1.ItemSession.ended_at:type_name -> google.protobuf.Timestamp - 113, // 7: session.v1.ItemSession.last_commit_at:type_name -> google.protobuf.Timestamp - 113, // 8: session.v1.ItemSession.last_file_touch_at:type_name -> google.protobuf.Timestamp - 113, // 9: session.v1.ItemSession.created_at:type_name -> google.protobuf.Timestamp - 3, // 10: session.v1.ItemSession.review_verdict:type_name -> session.v1.ReviewVerdict - 6, // 11: session.v1.ItemSession.triage_result:type_name -> session.v1.TriageResult - 113, // 12: session.v1.BacklogStatusEvent.created_at:type_name -> google.protobuf.Timestamp - 113, // 13: session.v1.BacklogProgressNote.created_at:type_name -> google.protobuf.Timestamp - 1, // 14: session.v1.BacklogItem.acceptance_criteria:type_name -> session.v1.AcCriterion - 113, // 15: session.v1.BacklogItem.plan_approved_at:type_name -> google.protobuf.Timestamp - 113, // 16: session.v1.BacklogItem.archived_at:type_name -> google.protobuf.Timestamp - 113, // 17: session.v1.BacklogItem.created_at:type_name -> google.protobuf.Timestamp - 113, // 18: session.v1.BacklogItem.updated_at:type_name -> google.protobuf.Timestamp - 7, // 19: session.v1.BacklogItem.item_sessions:type_name -> session.v1.ItemSession - 8, // 20: session.v1.BacklogItem.status_events:type_name -> session.v1.BacklogStatusEvent - 9, // 21: session.v1.BacklogItem.progress_notes:type_name -> session.v1.BacklogProgressNote - 113, // 22: session.v1.ItemSource.last_synced_at:type_name -> google.protobuf.Timestamp - 113, // 23: session.v1.ItemSource.created_at:type_name -> google.protobuf.Timestamp - 113, // 24: session.v1.ItemSource.updated_at:type_name -> google.protobuf.Timestamp - 113, // 25: session.v1.PipelineMode.created_at:type_name -> google.protobuf.Timestamp - 113, // 26: session.v1.PipelineMode.updated_at:type_name -> google.protobuf.Timestamp - 113, // 27: session.v1.SourceSyncEvent.started_at:type_name -> google.protobuf.Timestamp - 113, // 28: session.v1.SourceSyncEvent.finished_at:type_name -> google.protobuf.Timestamp - 1, // 29: session.v1.CreateBacklogItemRequest.acceptance_criteria:type_name -> session.v1.AcCriterion - 10, // 30: session.v1.CreateBacklogItemResponse.item:type_name -> session.v1.BacklogItem - 10, // 31: session.v1.GetBacklogItemResponse.item:type_name -> session.v1.BacklogItem - 113, // 32: session.v1.BacklogItemShipStatus.last_commit_at:type_name -> google.protobuf.Timestamp - 19, // 33: session.v1.BacklogItemShipStatus.commits:type_name -> session.v1.ShippedCommit - 20, // 34: session.v1.BacklogItemShipStatus.file_stats:type_name -> session.v1.ShippedFileStat - 113, // 35: session.v1.BacklogItemShipStatus.snapshot_at:type_name -> google.protobuf.Timestamp - 113, // 36: session.v1.ShippedCommit.authored_at:type_name -> google.protobuf.Timestamp - 114, // 37: session.v1.ShippedFileStat.status:type_name -> session.v1.FileStatus - 18, // 38: session.v1.GetBacklogItemShipStatusResponse.status:type_name -> session.v1.BacklogItemShipStatus - 10, // 39: session.v1.ListBacklogItemsResponse.items:type_name -> session.v1.BacklogItem - 1, // 40: session.v1.UpdateBacklogItemRequest.acceptance_criteria:type_name -> session.v1.AcCriterion - 113, // 41: session.v1.UpdateBacklogItemRequest.expected_updated_at:type_name -> google.protobuf.Timestamp - 10, // 42: session.v1.UpdateBacklogItemResponse.item:type_name -> session.v1.BacklogItem - 10, // 43: session.v1.ArchiveBacklogItemResponse.item:type_name -> session.v1.BacklogItem - 113, // 44: session.v1.TransitionBacklogItemStatusRequest.expected_updated_at:type_name -> google.protobuf.Timestamp - 10, // 45: session.v1.TransitionBacklogItemStatusResponse.item:type_name -> session.v1.BacklogItem - 7, // 46: session.v1.SpawnSessionFromItemResponse.item_session:type_name -> session.v1.ItemSession - 7, // 47: session.v1.AttachSessionToItemResponse.item_session:type_name -> session.v1.ItemSession - 7, // 48: session.v1.TriggerTriageResponse.item_session:type_name -> session.v1.ItemSession - 10, // 49: session.v1.ApprovePlanResponse.item:type_name -> session.v1.BacklogItem - 7, // 50: session.v1.SuggestNextItemResponse.item_session:type_name -> session.v1.ItemSession - 10, // 51: session.v1.SuggestNextItemResponse.item:type_name -> session.v1.BacklogItem - 10, // 52: session.v1.OverrideVerdictResponse.item:type_name -> session.v1.BacklogItem - 7, // 53: session.v1.TriggerReReviewResponse.item_session:type_name -> session.v1.ItemSession - 11, // 54: session.v1.CreateItemSourceResponse.source:type_name -> session.v1.ItemSource - 11, // 55: session.v1.ListItemSourcesResponse.sources:type_name -> session.v1.ItemSource - 11, // 56: session.v1.UpdateItemSourceResponse.source:type_name -> session.v1.ItemSource - 13, // 57: session.v1.GetSyncHistoryResponse.events:type_name -> session.v1.SourceSyncEvent - 12, // 58: session.v1.CreatePipelineModeResponse.item:type_name -> session.v1.PipelineMode - 12, // 59: session.v1.UpdatePipelineModeResponse.item:type_name -> session.v1.PipelineMode - 12, // 60: session.v1.GetPipelineModeResponse.item:type_name -> session.v1.PipelineMode - 12, // 61: session.v1.ListPipelineModesResponse.items:type_name -> session.v1.PipelineMode - 113, // 62: session.v1.BacklogItemEvent.timestamp:type_name -> google.protobuf.Timestamp - 74, // 63: session.v1.BacklogItemEvent.status_changed:type_name -> session.v1.BacklogItemStatusChangedEvent - 75, // 64: session.v1.BacklogItemEvent.verdict_recorded:type_name -> session.v1.BacklogItemVerdictRecordedEvent - 76, // 65: session.v1.BacklogItemEvent.session_attached:type_name -> session.v1.BacklogItemSessionAttachedEvent - 77, // 66: session.v1.BacklogItemEvent.item_updated:type_name -> session.v1.BacklogItemUpdatedEvent - 78, // 67: session.v1.BacklogItemEvent.item_archived:type_name -> session.v1.BacklogItemArchivedEvent - 79, // 68: session.v1.BacklogItemEvent.item_removed:type_name -> session.v1.BacklogItemRemovedEvent - 80, // 69: session.v1.BacklogItemEvent.snapshot_complete:type_name -> session.v1.BacklogSnapshotCompleteEvent - 10, // 70: session.v1.BacklogItemStatusChangedEvent.item:type_name -> session.v1.BacklogItem - 3, // 71: session.v1.BacklogItemVerdictRecordedEvent.verdict:type_name -> session.v1.ReviewVerdict - 10, // 72: session.v1.BacklogItemVerdictRecordedEvent.item:type_name -> session.v1.BacklogItem - 10, // 73: session.v1.BacklogItemSessionAttachedEvent.item:type_name -> session.v1.BacklogItem - 10, // 74: session.v1.BacklogItemUpdatedEvent.item:type_name -> session.v1.BacklogItem - 113, // 75: session.v1.BacklogItemArchivedEvent.archived_at:type_name -> google.protobuf.Timestamp - 10, // 76: session.v1.ImportGitHubIssueResponse.item:type_name -> session.v1.BacklogItem - 113, // 77: session.v1.GitHubIssueEntry.created_at:type_name -> google.protobuf.Timestamp - 113, // 78: session.v1.GitHubIssueEntry.updated_at:type_name -> google.protobuf.Timestamp - 86, // 79: session.v1.SearchGitHubReposResponse.repos:type_name -> session.v1.GitHubRepoEntry - 87, // 80: session.v1.ListGitHubIssuesResponse.issues:type_name -> session.v1.GitHubIssueEntry - 94, // 81: session.v1.GetBacklogItemCostResponse.sessions:type_name -> session.v1.SessionCostEntry - 97, // 82: session.v1.GetSessionBacklogIndexResponse.entries:type_name -> session.v1.BacklogSessionEntry - 2, // 83: session.v1.SubmitManualReviewRequest.per_criterion_verdicts:type_name -> session.v1.CriterionVerdict - 10, // 84: session.v1.SubmitManualReviewResponse.item:type_name -> session.v1.BacklogItem - 0, // 85: session.v1.StuckBacklogItem.reason:type_name -> session.v1.StuckReason - 113, // 86: session.v1.StuckBacklogItem.first_detected_at:type_name -> google.protobuf.Timestamp - 113, // 87: session.v1.StuckBacklogItem.last_checked_at:type_name -> google.protobuf.Timestamp - 113, // 88: session.v1.StuckBacklogItem.snoozed_until:type_name -> google.protobuf.Timestamp - 113, // 89: session.v1.StuckBacklogItem.next_remediation_at:type_name -> google.protobuf.Timestamp - 102, // 90: session.v1.ListStuckBacklogItemsResponse.items:type_name -> session.v1.StuckBacklogItem - 0, // 91: session.v1.SnoozeStuckItemRequest.reason:type_name -> session.v1.StuckReason - 113, // 92: session.v1.SnoozeStuckItemRequest.until:type_name -> google.protobuf.Timestamp - 0, // 93: session.v1.ResetStuckRemediationRequest.reason:type_name -> session.v1.StuckReason - 0, // 94: session.v1.BulkResetStuckRemediationRequest.reason:type_name -> session.v1.StuckReason - 0, // 95: session.v1.TriggerRemediationNowRequest.reason:type_name -> session.v1.StuckReason - 14, // 96: session.v1.BacklogService.CreateBacklogItem:input_type -> session.v1.CreateBacklogItemRequest - 16, // 97: session.v1.BacklogService.GetBacklogItem:input_type -> session.v1.GetBacklogItemRequest - 21, // 98: session.v1.BacklogService.GetBacklogItemShipStatus:input_type -> session.v1.GetBacklogItemShipStatusRequest - 23, // 99: session.v1.BacklogService.ListBacklogItems:input_type -> session.v1.ListBacklogItemsRequest - 25, // 100: session.v1.BacklogService.UpdateBacklogItem:input_type -> session.v1.UpdateBacklogItemRequest - 27, // 101: session.v1.BacklogService.ArchiveBacklogItem:input_type -> session.v1.ArchiveBacklogItemRequest - 29, // 102: session.v1.BacklogService.DeleteBacklogItem:input_type -> session.v1.DeleteBacklogItemRequest - 31, // 103: session.v1.BacklogService.TransitionBacklogItemStatus:input_type -> session.v1.TransitionBacklogItemStatusRequest - 33, // 104: session.v1.BacklogService.SpawnSessionFromItem:input_type -> session.v1.SpawnSessionFromItemRequest - 35, // 105: session.v1.BacklogService.AttachSessionToItem:input_type -> session.v1.AttachSessionToItemRequest - 37, // 106: session.v1.BacklogService.TriggerTriage:input_type -> session.v1.TriggerTriageRequest - 84, // 107: session.v1.BacklogService.CancelTriage:input_type -> session.v1.CancelTriageRequest - 39, // 108: session.v1.BacklogService.ApprovePlan:input_type -> session.v1.ApprovePlanRequest - 41, // 109: session.v1.BacklogService.SuggestNextItem:input_type -> session.v1.SuggestNextItemRequest - 43, // 110: session.v1.BacklogService.OverrideVerdict:input_type -> session.v1.OverrideVerdictRequest - 45, // 111: session.v1.BacklogService.TriggerReReview:input_type -> session.v1.TriggerReReviewRequest - 47, // 112: session.v1.BacklogService.TriggerShipPR:input_type -> session.v1.TriggerShipPRRequest - 49, // 113: session.v1.BacklogService.TriggerSync:input_type -> session.v1.TriggerSyncRequest - 51, // 114: session.v1.BacklogService.CreateItemSource:input_type -> session.v1.CreateItemSourceRequest - 53, // 115: session.v1.BacklogService.ListItemSources:input_type -> session.v1.ListItemSourcesRequest - 55, // 116: session.v1.BacklogService.UpdateItemSource:input_type -> session.v1.UpdateItemSourceRequest - 57, // 117: session.v1.BacklogService.DeleteItemSource:input_type -> session.v1.DeleteItemSourceRequest - 59, // 118: session.v1.BacklogService.GetSyncHistory:input_type -> session.v1.GetSyncHistoryRequest - 61, // 119: session.v1.BacklogService.PreviewBackwardSyncImpact:input_type -> session.v1.PreviewBackwardSyncImpactRequest - 63, // 120: session.v1.BacklogService.CreatePipelineMode:input_type -> session.v1.CreatePipelineModeRequest - 65, // 121: session.v1.BacklogService.UpdatePipelineMode:input_type -> session.v1.UpdatePipelineModeRequest - 67, // 122: session.v1.BacklogService.DeletePipelineMode:input_type -> session.v1.DeletePipelineModeRequest - 69, // 123: session.v1.BacklogService.GetPipelineMode:input_type -> session.v1.GetPipelineModeRequest - 71, // 124: session.v1.BacklogService.ListPipelineModes:input_type -> session.v1.ListPipelineModesRequest - 82, // 125: session.v1.BacklogService.ImportGitHubIssue:input_type -> session.v1.ImportGitHubIssueRequest - 88, // 126: session.v1.BacklogService.SearchGitHubRepos:input_type -> session.v1.SearchGitHubReposRequest - 90, // 127: session.v1.BacklogService.ListGitHubIssues:input_type -> session.v1.ListGitHubIssuesRequest - 92, // 128: session.v1.BacklogService.GetBacklogItemDiff:input_type -> session.v1.GetBacklogItemDiffRequest - 95, // 129: session.v1.BacklogService.GetBacklogItemCost:input_type -> session.v1.GetBacklogItemCostRequest - 98, // 130: session.v1.BacklogService.GetSessionBacklogIndex:input_type -> session.v1.GetSessionBacklogIndexRequest - 100, // 131: session.v1.BacklogService.SubmitManualReview:input_type -> session.v1.SubmitManualReviewRequest - 103, // 132: session.v1.BacklogService.ListStuckBacklogItems:input_type -> session.v1.ListStuckBacklogItemsRequest - 105, // 133: session.v1.BacklogService.SnoozeStuckItem:input_type -> session.v1.SnoozeStuckItemRequest - 107, // 134: session.v1.BacklogService.ResetStuckRemediation:input_type -> session.v1.ResetStuckRemediationRequest - 109, // 135: session.v1.BacklogService.BulkResetStuckRemediation:input_type -> session.v1.BulkResetStuckRemediationRequest - 111, // 136: session.v1.BacklogService.TriggerRemediationNow:input_type -> session.v1.TriggerRemediationNowRequest - 81, // 137: session.v1.BacklogService.WatchBacklogItems:input_type -> session.v1.WatchBacklogItemsRequest - 15, // 138: session.v1.BacklogService.CreateBacklogItem:output_type -> session.v1.CreateBacklogItemResponse - 17, // 139: session.v1.BacklogService.GetBacklogItem:output_type -> session.v1.GetBacklogItemResponse - 22, // 140: session.v1.BacklogService.GetBacklogItemShipStatus:output_type -> session.v1.GetBacklogItemShipStatusResponse - 24, // 141: session.v1.BacklogService.ListBacklogItems:output_type -> session.v1.ListBacklogItemsResponse - 26, // 142: session.v1.BacklogService.UpdateBacklogItem:output_type -> session.v1.UpdateBacklogItemResponse - 28, // 143: session.v1.BacklogService.ArchiveBacklogItem:output_type -> session.v1.ArchiveBacklogItemResponse - 30, // 144: session.v1.BacklogService.DeleteBacklogItem:output_type -> session.v1.DeleteBacklogItemResponse - 32, // 145: session.v1.BacklogService.TransitionBacklogItemStatus:output_type -> session.v1.TransitionBacklogItemStatusResponse - 34, // 146: session.v1.BacklogService.SpawnSessionFromItem:output_type -> session.v1.SpawnSessionFromItemResponse - 36, // 147: session.v1.BacklogService.AttachSessionToItem:output_type -> session.v1.AttachSessionToItemResponse - 38, // 148: session.v1.BacklogService.TriggerTriage:output_type -> session.v1.TriggerTriageResponse - 85, // 149: session.v1.BacklogService.CancelTriage:output_type -> session.v1.CancelTriageResponse - 40, // 150: session.v1.BacklogService.ApprovePlan:output_type -> session.v1.ApprovePlanResponse - 42, // 151: session.v1.BacklogService.SuggestNextItem:output_type -> session.v1.SuggestNextItemResponse - 44, // 152: session.v1.BacklogService.OverrideVerdict:output_type -> session.v1.OverrideVerdictResponse - 46, // 153: session.v1.BacklogService.TriggerReReview:output_type -> session.v1.TriggerReReviewResponse - 48, // 154: session.v1.BacklogService.TriggerShipPR:output_type -> session.v1.TriggerShipPRResponse - 50, // 155: session.v1.BacklogService.TriggerSync:output_type -> session.v1.TriggerSyncResponse - 52, // 156: session.v1.BacklogService.CreateItemSource:output_type -> session.v1.CreateItemSourceResponse - 54, // 157: session.v1.BacklogService.ListItemSources:output_type -> session.v1.ListItemSourcesResponse - 56, // 158: session.v1.BacklogService.UpdateItemSource:output_type -> session.v1.UpdateItemSourceResponse - 58, // 159: session.v1.BacklogService.DeleteItemSource:output_type -> session.v1.DeleteItemSourceResponse - 60, // 160: session.v1.BacklogService.GetSyncHistory:output_type -> session.v1.GetSyncHistoryResponse - 62, // 161: session.v1.BacklogService.PreviewBackwardSyncImpact:output_type -> session.v1.PreviewBackwardSyncImpactResponse - 64, // 162: session.v1.BacklogService.CreatePipelineMode:output_type -> session.v1.CreatePipelineModeResponse - 66, // 163: session.v1.BacklogService.UpdatePipelineMode:output_type -> session.v1.UpdatePipelineModeResponse - 68, // 164: session.v1.BacklogService.DeletePipelineMode:output_type -> session.v1.DeletePipelineModeResponse - 70, // 165: session.v1.BacklogService.GetPipelineMode:output_type -> session.v1.GetPipelineModeResponse - 72, // 166: session.v1.BacklogService.ListPipelineModes:output_type -> session.v1.ListPipelineModesResponse - 83, // 167: session.v1.BacklogService.ImportGitHubIssue:output_type -> session.v1.ImportGitHubIssueResponse - 89, // 168: session.v1.BacklogService.SearchGitHubRepos:output_type -> session.v1.SearchGitHubReposResponse - 91, // 169: session.v1.BacklogService.ListGitHubIssues:output_type -> session.v1.ListGitHubIssuesResponse - 93, // 170: session.v1.BacklogService.GetBacklogItemDiff:output_type -> session.v1.GetBacklogItemDiffResponse - 96, // 171: session.v1.BacklogService.GetBacklogItemCost:output_type -> session.v1.GetBacklogItemCostResponse - 99, // 172: session.v1.BacklogService.GetSessionBacklogIndex:output_type -> session.v1.GetSessionBacklogIndexResponse - 101, // 173: session.v1.BacklogService.SubmitManualReview:output_type -> session.v1.SubmitManualReviewResponse - 104, // 174: session.v1.BacklogService.ListStuckBacklogItems:output_type -> session.v1.ListStuckBacklogItemsResponse - 106, // 175: session.v1.BacklogService.SnoozeStuckItem:output_type -> session.v1.SnoozeStuckItemResponse - 108, // 176: session.v1.BacklogService.ResetStuckRemediation:output_type -> session.v1.ResetStuckRemediationResponse - 110, // 177: session.v1.BacklogService.BulkResetStuckRemediation:output_type -> session.v1.BulkResetStuckRemediationResponse - 112, // 178: session.v1.BacklogService.TriggerRemediationNow:output_type -> session.v1.TriggerRemediationNowResponse - 73, // 179: session.v1.BacklogService.WatchBacklogItems:output_type -> session.v1.BacklogItemEvent - 138, // [138:180] is the sub-list for method output_type - 96, // [96:138] is the sub-list for method input_type - 96, // [96:96] is the sub-list for extension type_name - 96, // [96:96] is the sub-list for extension extendee - 0, // [0:96] is the sub-list for field type_name -} - -func init() { file_session_v1_backlog_proto_init() } -func file_session_v1_backlog_proto_init() { - if File_session_v1_backlog_proto != nil { - return - } - file_session_v1_types_proto_init() - file_session_v1_backlog_proto_msgTypes[7].OneofWrappers = []any{} - file_session_v1_backlog_proto_msgTypes[9].OneofWrappers = []any{} - file_session_v1_backlog_proto_msgTypes[13].OneofWrappers = []any{} - file_session_v1_backlog_proto_msgTypes[24].OneofWrappers = []any{} - file_session_v1_backlog_proto_msgTypes[64].OneofWrappers = []any{} - file_session_v1_backlog_proto_msgTypes[72].OneofWrappers = []any{ - (*BacklogItemEvent_StatusChanged)(nil), - (*BacklogItemEvent_VerdictRecorded)(nil), - (*BacklogItemEvent_SessionAttached)(nil), - (*BacklogItemEvent_ItemUpdated)(nil), - (*BacklogItemEvent_ItemArchived)(nil), - (*BacklogItemEvent_ItemRemoved)(nil), - (*BacklogItemEvent_SnapshotComplete)(nil), - } - file_session_v1_backlog_proto_msgTypes[101].OneofWrappers = []any{} - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_session_v1_backlog_proto_rawDesc), len(file_session_v1_backlog_proto_rawDesc)), - NumEnums: 1, - NumMessages: 112, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_session_v1_backlog_proto_goTypes, - DependencyIndexes: file_session_v1_backlog_proto_depIdxs, - EnumInfos: file_session_v1_backlog_proto_enumTypes, - MessageInfos: file_session_v1_backlog_proto_msgTypes, - }.Build() - File_session_v1_backlog_proto = out.File - file_session_v1_backlog_proto_goTypes = nil - file_session_v1_backlog_proto_depIdxs = nil -} diff --git a/gen/proto/go/session/v1/events.pb.go b/gen/proto/go/session/v1/events.pb.go deleted file mode 100644 index 6d8102ab7..000000000 --- a/gen/proto/go/session/v1/events.pb.go +++ /dev/null @@ -1,2550 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.12 -// protoc (unknown) -// source: session/v1/events.proto - -package sessionv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// Interaction types -type UserInteractionEvent_InteractionType int32 - -const ( - UserInteractionEvent_INTERACTION_TYPE_UNSPECIFIED UserInteractionEvent_InteractionType = 0 - // User typed input in terminal - UserInteractionEvent_INTERACTION_TYPE_TERMINAL_INPUT UserInteractionEvent_InteractionType = 1 - // User approved a prompt - UserInteractionEvent_INTERACTION_TYPE_APPROVAL_GIVEN UserInteractionEvent_InteractionType = 2 - // User denied/rejected a prompt - UserInteractionEvent_INTERACTION_TYPE_APPROVAL_DENIED UserInteractionEvent_InteractionType = 3 - // User executed a command - UserInteractionEvent_INTERACTION_TYPE_COMMAND_EXECUTED UserInteractionEvent_InteractionType = 4 - // User attached to session - UserInteractionEvent_INTERACTION_TYPE_SESSION_ATTACHED UserInteractionEvent_InteractionType = 5 - // User detached from session - UserInteractionEvent_INTERACTION_TYPE_SESSION_DETACHED UserInteractionEvent_InteractionType = 6 - // User opened notification panel - UserInteractionEvent_INTERACTION_TYPE_NOTIFICATION_PANEL_OPENED UserInteractionEvent_InteractionType = 7 - // User closed notification panel - UserInteractionEvent_INTERACTION_TYPE_NOTIFICATION_PANEL_CLOSED UserInteractionEvent_InteractionType = 8 - // User viewed a notification - UserInteractionEvent_INTERACTION_TYPE_NOTIFICATION_VIEWED UserInteractionEvent_InteractionType = 9 - // User dismissed a notification - UserInteractionEvent_INTERACTION_TYPE_NOTIFICATION_DISMISSED UserInteractionEvent_InteractionType = 10 - // User marked notification as read - UserInteractionEvent_INTERACTION_TYPE_NOTIFICATION_MARKED_READ UserInteractionEvent_InteractionType = 11 - // User marked all notifications as read - UserInteractionEvent_INTERACTION_TYPE_NOTIFICATION_MARKED_ALL_READ UserInteractionEvent_InteractionType = 12 - // User removed notification from history - UserInteractionEvent_INTERACTION_TYPE_NOTIFICATION_REMOVED UserInteractionEvent_InteractionType = 13 - // User cleared notification history - UserInteractionEvent_INTERACTION_TYPE_NOTIFICATION_HISTORY_CLEARED UserInteractionEvent_InteractionType = 14 - // User clicked notification to view session - UserInteractionEvent_INTERACTION_TYPE_NOTIFICATION_SESSION_VIEWED UserInteractionEvent_InteractionType = 15 -) - -// Enum value maps for UserInteractionEvent_InteractionType. -var ( - UserInteractionEvent_InteractionType_name = map[int32]string{ - 0: "INTERACTION_TYPE_UNSPECIFIED", - 1: "INTERACTION_TYPE_TERMINAL_INPUT", - 2: "INTERACTION_TYPE_APPROVAL_GIVEN", - 3: "INTERACTION_TYPE_APPROVAL_DENIED", - 4: "INTERACTION_TYPE_COMMAND_EXECUTED", - 5: "INTERACTION_TYPE_SESSION_ATTACHED", - 6: "INTERACTION_TYPE_SESSION_DETACHED", - 7: "INTERACTION_TYPE_NOTIFICATION_PANEL_OPENED", - 8: "INTERACTION_TYPE_NOTIFICATION_PANEL_CLOSED", - 9: "INTERACTION_TYPE_NOTIFICATION_VIEWED", - 10: "INTERACTION_TYPE_NOTIFICATION_DISMISSED", - 11: "INTERACTION_TYPE_NOTIFICATION_MARKED_READ", - 12: "INTERACTION_TYPE_NOTIFICATION_MARKED_ALL_READ", - 13: "INTERACTION_TYPE_NOTIFICATION_REMOVED", - 14: "INTERACTION_TYPE_NOTIFICATION_HISTORY_CLEARED", - 15: "INTERACTION_TYPE_NOTIFICATION_SESSION_VIEWED", - } - UserInteractionEvent_InteractionType_value = map[string]int32{ - "INTERACTION_TYPE_UNSPECIFIED": 0, - "INTERACTION_TYPE_TERMINAL_INPUT": 1, - "INTERACTION_TYPE_APPROVAL_GIVEN": 2, - "INTERACTION_TYPE_APPROVAL_DENIED": 3, - "INTERACTION_TYPE_COMMAND_EXECUTED": 4, - "INTERACTION_TYPE_SESSION_ATTACHED": 5, - "INTERACTION_TYPE_SESSION_DETACHED": 6, - "INTERACTION_TYPE_NOTIFICATION_PANEL_OPENED": 7, - "INTERACTION_TYPE_NOTIFICATION_PANEL_CLOSED": 8, - "INTERACTION_TYPE_NOTIFICATION_VIEWED": 9, - "INTERACTION_TYPE_NOTIFICATION_DISMISSED": 10, - "INTERACTION_TYPE_NOTIFICATION_MARKED_READ": 11, - "INTERACTION_TYPE_NOTIFICATION_MARKED_ALL_READ": 12, - "INTERACTION_TYPE_NOTIFICATION_REMOVED": 13, - "INTERACTION_TYPE_NOTIFICATION_HISTORY_CLEARED": 14, - "INTERACTION_TYPE_NOTIFICATION_SESSION_VIEWED": 15, - } -) - -func (x UserInteractionEvent_InteractionType) Enum() *UserInteractionEvent_InteractionType { - p := new(UserInteractionEvent_InteractionType) - *p = x - return p -} - -func (x UserInteractionEvent_InteractionType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (UserInteractionEvent_InteractionType) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_events_proto_enumTypes[0].Descriptor() -} - -func (UserInteractionEvent_InteractionType) Type() protoreflect.EnumType { - return &file_session_v1_events_proto_enumTypes[0] -} - -func (x UserInteractionEvent_InteractionType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use UserInteractionEvent_InteractionType.Descriptor instead. -func (UserInteractionEvent_InteractionType) EnumDescriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{17, 0} -} - -// SessionEvent represents a real-time event about session state changes. -// Used for WatchSessions streaming RPC to push updates to clients. -type SessionEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Timestamp when the event occurred - Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Event type (one of the following) - // - // Types that are valid to be assigned to Event: - // - // *SessionEvent_SessionCreated - // *SessionEvent_SessionUpdated - // *SessionEvent_SessionDeleted - // *SessionEvent_UserInteraction - // *SessionEvent_SessionAcknowledged - // *SessionEvent_ApprovalResponse - // *SessionEvent_Notification - Event isSessionEvent_Event `protobuf_oneof:"event"` - // Monotonically increasing sequence number assigned by the server EventBus. - // Clients should track the highest seq they have received and pass it as - // after_seq in WatchSessionsRequest on reconnect to replay missed events. - // Events are retained for up to one hour. - Seq uint64 `protobuf:"varint,10,opt,name=seq,proto3" json:"seq,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionEvent) Reset() { - *x = SessionEvent{} - mi := &file_session_v1_events_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionEvent) ProtoMessage() {} - -func (x *SessionEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionEvent.ProtoReflect.Descriptor instead. -func (*SessionEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{0} -} - -func (x *SessionEvent) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -func (x *SessionEvent) GetEvent() isSessionEvent_Event { - if x != nil { - return x.Event - } - return nil -} - -func (x *SessionEvent) GetSessionCreated() *SessionCreatedEvent { - if x != nil { - if x, ok := x.Event.(*SessionEvent_SessionCreated); ok { - return x.SessionCreated - } - } - return nil -} - -func (x *SessionEvent) GetSessionUpdated() *SessionUpdatedEvent { - if x != nil { - if x, ok := x.Event.(*SessionEvent_SessionUpdated); ok { - return x.SessionUpdated - } - } - return nil -} - -func (x *SessionEvent) GetSessionDeleted() *SessionDeletedEvent { - if x != nil { - if x, ok := x.Event.(*SessionEvent_SessionDeleted); ok { - return x.SessionDeleted - } - } - return nil -} - -func (x *SessionEvent) GetUserInteraction() *UserInteractionEvent { - if x != nil { - if x, ok := x.Event.(*SessionEvent_UserInteraction); ok { - return x.UserInteraction - } - } - return nil -} - -func (x *SessionEvent) GetSessionAcknowledged() *SessionAcknowledgedEvent { - if x != nil { - if x, ok := x.Event.(*SessionEvent_SessionAcknowledged); ok { - return x.SessionAcknowledged - } - } - return nil -} - -func (x *SessionEvent) GetApprovalResponse() *ApprovalResponseEvent { - if x != nil { - if x, ok := x.Event.(*SessionEvent_ApprovalResponse); ok { - return x.ApprovalResponse - } - } - return nil -} - -func (x *SessionEvent) GetNotification() *NotificationEvent { - if x != nil { - if x, ok := x.Event.(*SessionEvent_Notification); ok { - return x.Notification - } - } - return nil -} - -func (x *SessionEvent) GetSeq() uint64 { - if x != nil { - return x.Seq - } - return 0 -} - -type isSessionEvent_Event interface { - isSessionEvent_Event() -} - -type SessionEvent_SessionCreated struct { - SessionCreated *SessionCreatedEvent `protobuf:"bytes,2,opt,name=session_created,json=sessionCreated,proto3,oneof"` -} - -type SessionEvent_SessionUpdated struct { - SessionUpdated *SessionUpdatedEvent `protobuf:"bytes,3,opt,name=session_updated,json=sessionUpdated,proto3,oneof"` -} - -type SessionEvent_SessionDeleted struct { - SessionDeleted *SessionDeletedEvent `protobuf:"bytes,4,opt,name=session_deleted,json=sessionDeleted,proto3,oneof"` -} - -type SessionEvent_UserInteraction struct { - // field 5 (status_changed / SessionStatusChangedEvent) removed in Epic 4 - UserInteraction *UserInteractionEvent `protobuf:"bytes,6,opt,name=user_interaction,json=userInteraction,proto3,oneof"` -} - -type SessionEvent_SessionAcknowledged struct { - SessionAcknowledged *SessionAcknowledgedEvent `protobuf:"bytes,7,opt,name=session_acknowledged,json=sessionAcknowledged,proto3,oneof"` -} - -type SessionEvent_ApprovalResponse struct { - ApprovalResponse *ApprovalResponseEvent `protobuf:"bytes,8,opt,name=approval_response,json=approvalResponse,proto3,oneof"` -} - -type SessionEvent_Notification struct { - Notification *NotificationEvent `protobuf:"bytes,9,opt,name=notification,proto3,oneof"` -} - -func (*SessionEvent_SessionCreated) isSessionEvent_Event() {} - -func (*SessionEvent_SessionUpdated) isSessionEvent_Event() {} - -func (*SessionEvent_SessionDeleted) isSessionEvent_Event() {} - -func (*SessionEvent_UserInteraction) isSessionEvent_Event() {} - -func (*SessionEvent_SessionAcknowledged) isSessionEvent_Event() {} - -func (*SessionEvent_ApprovalResponse) isSessionEvent_Event() {} - -func (*SessionEvent_Notification) isSessionEvent_Event() {} - -// SessionCreatedEvent is emitted when a new session is created -type SessionCreatedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionCreatedEvent) Reset() { - *x = SessionCreatedEvent{} - mi := &file_session_v1_events_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionCreatedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionCreatedEvent) ProtoMessage() {} - -func (x *SessionCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionCreatedEvent.ProtoReflect.Descriptor instead. -func (*SessionCreatedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{1} -} - -func (x *SessionCreatedEvent) GetSession() *Session { - if x != nil { - return x.Session - } - return nil -} - -// SessionUpdatedEvent is emitted when session properties are modified -type SessionUpdatedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - // Fields that were updated (for efficient client updates) - UpdatedFields []string `protobuf:"bytes,2,rep,name=updated_fields,json=updatedFields,proto3" json:"updated_fields,omitempty"` - // Fine-grained detected status at event publish time. Transitional shortcut for the - // migration period; populated when the detection layer has a registered controller. - // Deprecated once StatusBadge reads from session.detected_status directly (Epic 5). - DetectedStatus DetectedStatus `protobuf:"varint,3,opt,name=detected_status,json=detectedStatus,proto3,enum=session.v1.DetectedStatus" json:"detected_status,omitempty"` - // Human-readable context string from the terminal pattern detector. - // Empty when detected_status is UNSPECIFIED. - DetectedContext string `protobuf:"bytes,4,opt,name=detected_context,json=detectedContext,proto3" json:"detected_context,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionUpdatedEvent) Reset() { - *x = SessionUpdatedEvent{} - mi := &file_session_v1_events_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionUpdatedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionUpdatedEvent) ProtoMessage() {} - -func (x *SessionUpdatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionUpdatedEvent.ProtoReflect.Descriptor instead. -func (*SessionUpdatedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{2} -} - -func (x *SessionUpdatedEvent) GetSession() *Session { - if x != nil { - return x.Session - } - return nil -} - -func (x *SessionUpdatedEvent) GetUpdatedFields() []string { - if x != nil { - return x.UpdatedFields - } - return nil -} - -func (x *SessionUpdatedEvent) GetDetectedStatus() DetectedStatus { - if x != nil { - return x.DetectedStatus - } - return DetectedStatus_DETECTED_STATUS_UNSPECIFIED -} - -func (x *SessionUpdatedEvent) GetDetectedContext() string { - if x != nil { - return x.DetectedContext - } - return "" -} - -// SessionDeletedEvent is emitted when a session is deleted -type SessionDeletedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` // Optional deletion reason - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionDeletedEvent) Reset() { - *x = SessionDeletedEvent{} - mi := &file_session_v1_events_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionDeletedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionDeletedEvent) ProtoMessage() {} - -func (x *SessionDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionDeletedEvent.ProtoReflect.Descriptor instead. -func (*SessionDeletedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{3} -} - -func (x *SessionDeletedEvent) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *SessionDeletedEvent) GetReason() string { - if x != nil { - return x.Reason - } - return "" -} - -// TerminalData represents terminal I/O for bidirectional streaming. -// Used for StreamTerminal RPC to provide real-time terminal access. -type TerminalData struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Terminal message type - // - // Types that are valid to be assigned to Data: - // - // *TerminalData_Output - // *TerminalData_Input - // *TerminalData_Resize - // *TerminalData_Error - // *TerminalData_ScrollbackRequest - // *TerminalData_ScrollbackResponse - // *TerminalData_CurrentPaneRequest - // *TerminalData_CurrentPaneResponse - // *TerminalData_FlowControl - // *TerminalData_ResizeQuiescence - // *TerminalData_ShellStatusUpdate - Data isTerminalData_Data `protobuf_oneof:"data"` - // Optional shell identifier. When non-empty, this TerminalData message is - // scoped to a custom shell (sibling tmux session) rather than the main session. - ShellId string `protobuf:"bytes,17,opt,name=shell_id,json=shellId,proto3" json:"shell_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TerminalData) Reset() { - *x = TerminalData{} - mi := &file_session_v1_events_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TerminalData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TerminalData) ProtoMessage() {} - -func (x *TerminalData) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TerminalData.ProtoReflect.Descriptor instead. -func (*TerminalData) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{4} -} - -func (x *TerminalData) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *TerminalData) GetData() isTerminalData_Data { - if x != nil { - return x.Data - } - return nil -} - -func (x *TerminalData) GetOutput() *TerminalOutput { - if x != nil { - if x, ok := x.Data.(*TerminalData_Output); ok { - return x.Output - } - } - return nil -} - -func (x *TerminalData) GetInput() *TerminalInput { - if x != nil { - if x, ok := x.Data.(*TerminalData_Input); ok { - return x.Input - } - } - return nil -} - -func (x *TerminalData) GetResize() *TerminalResize { - if x != nil { - if x, ok := x.Data.(*TerminalData_Resize); ok { - return x.Resize - } - } - return nil -} - -func (x *TerminalData) GetError() *TerminalError { - if x != nil { - if x, ok := x.Data.(*TerminalData_Error); ok { - return x.Error - } - } - return nil -} - -func (x *TerminalData) GetScrollbackRequest() *ScrollbackRequest { - if x != nil { - if x, ok := x.Data.(*TerminalData_ScrollbackRequest); ok { - return x.ScrollbackRequest - } - } - return nil -} - -func (x *TerminalData) GetScrollbackResponse() *ScrollbackResponse { - if x != nil { - if x, ok := x.Data.(*TerminalData_ScrollbackResponse); ok { - return x.ScrollbackResponse - } - } - return nil -} - -func (x *TerminalData) GetCurrentPaneRequest() *CurrentPaneRequest { - if x != nil { - if x, ok := x.Data.(*TerminalData_CurrentPaneRequest); ok { - return x.CurrentPaneRequest - } - } - return nil -} - -func (x *TerminalData) GetCurrentPaneResponse() *CurrentPaneResponse { - if x != nil { - if x, ok := x.Data.(*TerminalData_CurrentPaneResponse); ok { - return x.CurrentPaneResponse - } - } - return nil -} - -func (x *TerminalData) GetFlowControl() *FlowControl { - if x != nil { - if x, ok := x.Data.(*TerminalData_FlowControl); ok { - return x.FlowControl - } - } - return nil -} - -func (x *TerminalData) GetResizeQuiescence() *ResizeQuiescence { - if x != nil { - if x, ok := x.Data.(*TerminalData_ResizeQuiescence); ok { - return x.ResizeQuiescence - } - } - return nil -} - -func (x *TerminalData) GetShellStatusUpdate() *ShellStatusUpdate { - if x != nil { - if x, ok := x.Data.(*TerminalData_ShellStatusUpdate); ok { - return x.ShellStatusUpdate - } - } - return nil -} - -func (x *TerminalData) GetShellId() string { - if x != nil { - return x.ShellId - } - return "" -} - -type isTerminalData_Data interface { - isTerminalData_Data() -} - -type TerminalData_Output struct { - Output *TerminalOutput `protobuf:"bytes,2,opt,name=output,proto3,oneof"` -} - -type TerminalData_Input struct { - Input *TerminalInput `protobuf:"bytes,3,opt,name=input,proto3,oneof"` -} - -type TerminalData_Resize struct { - Resize *TerminalResize `protobuf:"bytes,4,opt,name=resize,proto3,oneof"` -} - -type TerminalData_Error struct { - Error *TerminalError `protobuf:"bytes,5,opt,name=error,proto3,oneof"` -} - -type TerminalData_ScrollbackRequest struct { - ScrollbackRequest *ScrollbackRequest `protobuf:"bytes,6,opt,name=scrollback_request,json=scrollbackRequest,proto3,oneof"` -} - -type TerminalData_ScrollbackResponse struct { - ScrollbackResponse *ScrollbackResponse `protobuf:"bytes,7,opt,name=scrollback_response,json=scrollbackResponse,proto3,oneof"` -} - -type TerminalData_CurrentPaneRequest struct { - CurrentPaneRequest *CurrentPaneRequest `protobuf:"bytes,9,opt,name=current_pane_request,json=currentPaneRequest,proto3,oneof"` // Request current tmux pane content -} - -type TerminalData_CurrentPaneResponse struct { - CurrentPaneResponse *CurrentPaneResponse `protobuf:"bytes,10,opt,name=current_pane_response,json=currentPaneResponse,proto3,oneof"` // Response with current pane content -} - -type TerminalData_FlowControl struct { - FlowControl *FlowControl `protobuf:"bytes,11,opt,name=flow_control,json=flowControl,proto3,oneof"` // Flow control signals for backpressure management (xterm.js best practice) -} - -type TerminalData_ResizeQuiescence struct { - // Resize quiescence signal — sent before/after server-side tmux reflow wait - ResizeQuiescence *ResizeQuiescence `protobuf:"bytes,16,opt,name=resize_quiescence,json=resizeQuiescence,proto3,oneof"` -} - -type TerminalData_ShellStatusUpdate struct { - // Shell status update event (server → client); shell_id identifies the shell. - ShellStatusUpdate *ShellStatusUpdate `protobuf:"bytes,18,opt,name=shell_status_update,json=shellStatusUpdate,proto3,oneof"` -} - -func (*TerminalData_Output) isTerminalData_Data() {} - -func (*TerminalData_Input) isTerminalData_Data() {} - -func (*TerminalData_Resize) isTerminalData_Data() {} - -func (*TerminalData_Error) isTerminalData_Data() {} - -func (*TerminalData_ScrollbackRequest) isTerminalData_Data() {} - -func (*TerminalData_ScrollbackResponse) isTerminalData_Data() {} - -func (*TerminalData_CurrentPaneRequest) isTerminalData_Data() {} - -func (*TerminalData_CurrentPaneResponse) isTerminalData_Data() {} - -func (*TerminalData_FlowControl) isTerminalData_Data() {} - -func (*TerminalData_ResizeQuiescence) isTerminalData_Data() {} - -func (*TerminalData_ShellStatusUpdate) isTerminalData_Data() {} - -// ShellStatusUpdate notifies the client that a custom shell's status has changed. -// Delivered via the StreamTerminal stream with shell_id set. -type ShellStatusUpdate struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The shell whose status changed. - ShellId string `protobuf:"bytes,1,opt,name=shell_id,json=shellId,proto3" json:"shell_id,omitempty"` - // New lifecycle status. - NewStatus ShellStatus `protobuf:"varint,2,opt,name=new_status,json=newStatus,proto3,enum=session.v1.ShellStatus" json:"new_status,omitempty"` - // Exit code (only meaningful when new_status is STOPPED or ERROR). - ExitCode int32 `protobuf:"varint,3,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ShellStatusUpdate) Reset() { - *x = ShellStatusUpdate{} - mi := &file_session_v1_events_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ShellStatusUpdate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ShellStatusUpdate) ProtoMessage() {} - -func (x *ShellStatusUpdate) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ShellStatusUpdate.ProtoReflect.Descriptor instead. -func (*ShellStatusUpdate) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{5} -} - -func (x *ShellStatusUpdate) GetShellId() string { - if x != nil { - return x.ShellId - } - return "" -} - -func (x *ShellStatusUpdate) GetNewStatus() ShellStatus { - if x != nil { - return x.NewStatus - } - return ShellStatus_SHELL_STATUS_UNSPECIFIED -} - -func (x *ShellStatusUpdate) GetExitCode() int32 { - if x != nil { - return x.ExitCode - } - return 0 -} - -// ResizeQuiescence signals the client that the server is waiting for tmux to -// finish reflowing after a resize (resizing=true) or that the stable post-resize -// snapshot has been sent (resizing=false). Enables the frontend to show/hide a -// non-blocking overlay during the reflow window. -type ResizeQuiescence struct { - state protoimpl.MessageState `protogen:"open.v1"` - Resizing bool `protobuf:"varint,1,opt,name=resizing,proto3" json:"resizing,omitempty"` // true=reflow in progress, false=reflow complete - Cols int32 `protobuf:"varint,2,opt,name=cols,proto3" json:"cols,omitempty"` // Target columns for this resize event - Rows int32 `protobuf:"varint,3,opt,name=rows,proto3" json:"rows,omitempty"` // Target rows for this resize event - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResizeQuiescence) Reset() { - *x = ResizeQuiescence{} - mi := &file_session_v1_events_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResizeQuiescence) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResizeQuiescence) ProtoMessage() {} - -func (x *ResizeQuiescence) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResizeQuiescence.ProtoReflect.Descriptor instead. -func (*ResizeQuiescence) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{6} -} - -func (x *ResizeQuiescence) GetResizing() bool { - if x != nil { - return x.Resizing - } - return false -} - -func (x *ResizeQuiescence) GetCols() int32 { - if x != nil { - return x.Cols - } - return 0 -} - -func (x *ResizeQuiescence) GetRows() int32 { - if x != nil { - return x.Rows - } - return 0 -} - -// TerminalOutput contains data from the terminal (server to client) -type TerminalOutput struct { - state protoimpl.MessageState `protogen:"open.v1"` - Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` // Raw terminal output bytes (ANSI escape codes, etc) - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TerminalOutput) Reset() { - *x = TerminalOutput{} - mi := &file_session_v1_events_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TerminalOutput) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TerminalOutput) ProtoMessage() {} - -func (x *TerminalOutput) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TerminalOutput.ProtoReflect.Descriptor instead. -func (*TerminalOutput) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{7} -} - -func (x *TerminalOutput) GetData() []byte { - if x != nil { - return x.Data - } - return nil -} - -// TerminalInput contains user input for the terminal (client to server) -type TerminalInput struct { - state protoimpl.MessageState `protogen:"open.v1"` - Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` // Raw input bytes (keystrokes, etc) - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TerminalInput) Reset() { - *x = TerminalInput{} - mi := &file_session_v1_events_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TerminalInput) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TerminalInput) ProtoMessage() {} - -func (x *TerminalInput) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TerminalInput.ProtoReflect.Descriptor instead. -func (*TerminalInput) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{8} -} - -func (x *TerminalInput) GetData() []byte { - if x != nil { - return x.Data - } - return nil -} - -// TerminalResize notifies of terminal dimension changes -type TerminalResize struct { - state protoimpl.MessageState `protogen:"open.v1"` - Rows int32 `protobuf:"varint,1,opt,name=rows,proto3" json:"rows,omitempty"` - Cols int32 `protobuf:"varint,2,opt,name=cols,proto3" json:"cols,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TerminalResize) Reset() { - *x = TerminalResize{} - mi := &file_session_v1_events_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TerminalResize) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TerminalResize) ProtoMessage() {} - -func (x *TerminalResize) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TerminalResize.ProtoReflect.Descriptor instead. -func (*TerminalResize) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{9} -} - -func (x *TerminalResize) GetRows() int32 { - if x != nil { - return x.Rows - } - return 0 -} - -func (x *TerminalResize) GetCols() int32 { - if x != nil { - return x.Cols - } - return 0 -} - -// TerminalError indicates a terminal streaming error -type TerminalError struct { - state protoimpl.MessageState `protogen:"open.v1"` - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` // Error code (e.g., "session_not_found", "tmux_error") - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TerminalError) Reset() { - *x = TerminalError{} - mi := &file_session_v1_events_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TerminalError) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TerminalError) ProtoMessage() {} - -func (x *TerminalError) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TerminalError.ProtoReflect.Descriptor instead. -func (*TerminalError) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{10} -} - -func (x *TerminalError) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *TerminalError) GetCode() string { - if x != nil { - return x.Code - } - return "" -} - -// FlowControl manages backpressure between client and server for terminal streaming. -// Implements watermark-based flow control following xterm.js best practices. -// -// Reference: https://xtermjs.org/docs/guides/flowcontrol/ -// -// How it works: -// 1. Client tracks watermark (bytes queued in xterm.js write buffer) -// 2. When watermark exceeds HIGH threshold (100KB), client sends pause=true -// 3. Server stops reading from PTY and buffers data -// 4. When watermark drops below LOW threshold (10KB), client sends pause=false -// 5. Server resumes reading from PTY -// -// This prevents: -// - Browser tab crashes from memory exhaustion -// - Terminal rendering lag from write queue backup -// - Lost data from WebSocket buffer overflow -type FlowControl struct { - state protoimpl.MessageState `protogen:"open.v1"` - // If true, server should pause PTY output (HIGH watermark exceeded) - // If false, server should resume PTY output (LOW watermark reached) - Paused bool `protobuf:"varint,1,opt,name=paused,proto3" json:"paused,omitempty"` - // Current watermark value in bytes (optional, for server-side metrics/debugging) - // Watermark = bytes queued in xterm.js but not yet parsed/rendered - Watermark *uint64 `protobuf:"varint,2,opt,name=watermark,proto3,oneof" json:"watermark,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FlowControl) Reset() { - *x = FlowControl{} - mi := &file_session_v1_events_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FlowControl) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FlowControl) ProtoMessage() {} - -func (x *FlowControl) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FlowControl.ProtoReflect.Descriptor instead. -func (*FlowControl) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{11} -} - -func (x *FlowControl) GetPaused() bool { - if x != nil { - return x.Paused - } - return false -} - -func (x *FlowControl) GetWatermark() uint64 { - if x != nil && x.Watermark != nil { - return *x.Watermark - } - return 0 -} - -// ScrollbackRequest requests historical terminal scrollback -type ScrollbackRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - FromSequence uint64 `protobuf:"varint,1,opt,name=from_sequence,json=fromSequence,proto3" json:"from_sequence,omitempty"` // Start from this sequence (0 for latest) - Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` // Maximum number of lines to return - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ScrollbackRequest) Reset() { - *x = ScrollbackRequest{} - mi := &file_session_v1_events_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ScrollbackRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ScrollbackRequest) ProtoMessage() {} - -func (x *ScrollbackRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ScrollbackRequest.ProtoReflect.Descriptor instead. -func (*ScrollbackRequest) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{12} -} - -func (x *ScrollbackRequest) GetFromSequence() uint64 { - if x != nil { - return x.FromSequence - } - return 0 -} - -func (x *ScrollbackRequest) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 -} - -// ScrollbackResponse contains historical terminal scrollback data -type ScrollbackResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Chunks []*ScrollbackChunk `protobuf:"bytes,1,rep,name=chunks,proto3" json:"chunks,omitempty"` // Scrollback data chunks - HasMore bool `protobuf:"varint,2,opt,name=has_more,json=hasMore,proto3" json:"has_more,omitempty"` // True if more data available - TotalLines uint64 `protobuf:"varint,3,opt,name=total_lines,json=totalLines,proto3" json:"total_lines,omitempty"` // Total lines available - OldestSequence uint64 `protobuf:"varint,4,opt,name=oldest_sequence,json=oldestSequence,proto3" json:"oldest_sequence,omitempty"` // Oldest sequence in storage - NewestSequence uint64 `protobuf:"varint,5,opt,name=newest_sequence,json=newestSequence,proto3" json:"newest_sequence,omitempty"` // Newest sequence in storage - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ScrollbackResponse) Reset() { - *x = ScrollbackResponse{} - mi := &file_session_v1_events_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ScrollbackResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ScrollbackResponse) ProtoMessage() {} - -func (x *ScrollbackResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ScrollbackResponse.ProtoReflect.Descriptor instead. -func (*ScrollbackResponse) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{13} -} - -func (x *ScrollbackResponse) GetChunks() []*ScrollbackChunk { - if x != nil { - return x.Chunks - } - return nil -} - -func (x *ScrollbackResponse) GetHasMore() bool { - if x != nil { - return x.HasMore - } - return false -} - -func (x *ScrollbackResponse) GetTotalLines() uint64 { - if x != nil { - return x.TotalLines - } - return 0 -} - -func (x *ScrollbackResponse) GetOldestSequence() uint64 { - if x != nil { - return x.OldestSequence - } - return 0 -} - -func (x *ScrollbackResponse) GetNewestSequence() uint64 { - if x != nil { - return x.NewestSequence - } - return 0 -} - -// ScrollbackChunk represents a chunk of scrollback data -type ScrollbackChunk struct { - state protoimpl.MessageState `protogen:"open.v1"` - Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` // Terminal output data - Sequence uint64 `protobuf:"varint,2,opt,name=sequence,proto3" json:"sequence,omitempty"` // Sequence number for ordering - TimestampMs int64 `protobuf:"varint,3,opt,name=timestamp_ms,json=timestampMs,proto3" json:"timestamp_ms,omitempty"` // Unix timestamp in milliseconds - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ScrollbackChunk) Reset() { - *x = ScrollbackChunk{} - mi := &file_session_v1_events_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ScrollbackChunk) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ScrollbackChunk) ProtoMessage() {} - -func (x *ScrollbackChunk) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ScrollbackChunk.ProtoReflect.Descriptor instead. -func (*ScrollbackChunk) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{14} -} - -func (x *ScrollbackChunk) GetData() []byte { - if x != nil { - return x.Data - } - return nil -} - -func (x *ScrollbackChunk) GetSequence() uint64 { - if x != nil { - return x.Sequence - } - return 0 -} - -func (x *ScrollbackChunk) GetTimestampMs() int64 { - if x != nil { - return x.TimestampMs - } - return 0 -} - -// CurrentPaneRequest requests the current visible tmux pane content. -// This gives the exact content the user would see if they attached to tmux directly. -type CurrentPaneRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Number of lines to capture from the bottom of the pane (default: 50) - // If 0 or negative, captures the entire visible pane - Lines int32 `protobuf:"varint,1,opt,name=lines,proto3" json:"lines,omitempty"` - // Include escape sequences for colors and formatting (default: true) - IncludeEscapes bool `protobuf:"varint,2,opt,name=include_escapes,json=includeEscapes,proto3" json:"include_escapes,omitempty"` - // Target terminal dimensions (optional) - // If provided, server will resize tmux pane to match BEFORE capturing content - // This prevents size mismatches between client's browser terminal and server's tmux pane - TargetCols *int32 `protobuf:"varint,3,opt,name=target_cols,json=targetCols,proto3,oneof" json:"target_cols,omitempty"` // Target columns (width) - TargetRows *int32 `protobuf:"varint,4,opt,name=target_rows,json=targetRows,proto3,oneof" json:"target_rows,omitempty"` // Target rows (height) - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CurrentPaneRequest) Reset() { - *x = CurrentPaneRequest{} - mi := &file_session_v1_events_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CurrentPaneRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CurrentPaneRequest) ProtoMessage() {} - -func (x *CurrentPaneRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CurrentPaneRequest.ProtoReflect.Descriptor instead. -func (*CurrentPaneRequest) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{15} -} - -func (x *CurrentPaneRequest) GetLines() int32 { - if x != nil { - return x.Lines - } - return 0 -} - -func (x *CurrentPaneRequest) GetIncludeEscapes() bool { - if x != nil { - return x.IncludeEscapes - } - return false -} - -func (x *CurrentPaneRequest) GetTargetCols() int32 { - if x != nil && x.TargetCols != nil { - return *x.TargetCols - } - return 0 -} - -func (x *CurrentPaneRequest) GetTargetRows() int32 { - if x != nil && x.TargetRows != nil { - return *x.TargetRows - } - return 0 -} - -// CurrentPaneResponse contains the current visible tmux pane content -type CurrentPaneResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Raw terminal content from tmux capture-pane - Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` - // Cursor position in the pane - CursorX int32 `protobuf:"varint,2,opt,name=cursor_x,json=cursorX,proto3" json:"cursor_x,omitempty"` // Column (0-based) - CursorY int32 `protobuf:"varint,3,opt,name=cursor_y,json=cursorY,proto3" json:"cursor_y,omitempty"` // Row (0-based) - // Current pane dimensions - PaneWidth int32 `protobuf:"varint,4,opt,name=pane_width,json=paneWidth,proto3" json:"pane_width,omitempty"` // Columns - PaneHeight int32 `protobuf:"varint,5,opt,name=pane_height,json=paneHeight,proto3" json:"pane_height,omitempty"` // Rows - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CurrentPaneResponse) Reset() { - *x = CurrentPaneResponse{} - mi := &file_session_v1_events_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CurrentPaneResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CurrentPaneResponse) ProtoMessage() {} - -func (x *CurrentPaneResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CurrentPaneResponse.ProtoReflect.Descriptor instead. -func (*CurrentPaneResponse) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{16} -} - -func (x *CurrentPaneResponse) GetContent() []byte { - if x != nil { - return x.Content - } - return nil -} - -func (x *CurrentPaneResponse) GetCursorX() int32 { - if x != nil { - return x.CursorX - } - return 0 -} - -func (x *CurrentPaneResponse) GetCursorY() int32 { - if x != nil { - return x.CursorY - } - return 0 -} - -func (x *CurrentPaneResponse) GetPaneWidth() int32 { - if x != nil { - return x.PaneWidth - } - return 0 -} - -func (x *CurrentPaneResponse) GetPaneHeight() int32 { - if x != nil { - return x.PaneHeight - } - return 0 -} - -// UserInteractionEvent is emitted when user interacts with a session. -// Triggers immediate review queue re-evaluation for responsive feedback. -type UserInteractionEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Type of interaction - Type UserInteractionEvent_InteractionType `protobuf:"varint,2,opt,name=type,proto3,enum=session.v1.UserInteractionEvent_InteractionType" json:"type,omitempty"` - // Optional context about the interaction - Context string `protobuf:"bytes,3,opt,name=context,proto3" json:"context,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UserInteractionEvent) Reset() { - *x = UserInteractionEvent{} - mi := &file_session_v1_events_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UserInteractionEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserInteractionEvent) ProtoMessage() {} - -func (x *UserInteractionEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[17] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserInteractionEvent.ProtoReflect.Descriptor instead. -func (*UserInteractionEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{17} -} - -func (x *UserInteractionEvent) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *UserInteractionEvent) GetType() UserInteractionEvent_InteractionType { - if x != nil { - return x.Type - } - return UserInteractionEvent_INTERACTION_TYPE_UNSPECIFIED -} - -func (x *UserInteractionEvent) GetContext() string { - if x != nil { - return x.Context - } - return "" -} - -// SessionAcknowledgedEvent is emitted when user acknowledges/skips a session. -// Session is immediately removed from review queue until next update. -type SessionAcknowledgedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // When the acknowledgment occurred - AcknowledgedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=acknowledged_at,json=acknowledgedAt,proto3" json:"acknowledged_at,omitempty"` - // Optional reason for acknowledgment - Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionAcknowledgedEvent) Reset() { - *x = SessionAcknowledgedEvent{} - mi := &file_session_v1_events_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionAcknowledgedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionAcknowledgedEvent) ProtoMessage() {} - -func (x *SessionAcknowledgedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[18] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionAcknowledgedEvent.ProtoReflect.Descriptor instead. -func (*SessionAcknowledgedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{18} -} - -func (x *SessionAcknowledgedEvent) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *SessionAcknowledgedEvent) GetAcknowledgedAt() *timestamppb.Timestamp { - if x != nil { - return x.AcknowledgedAt - } - return nil -} - -func (x *SessionAcknowledgedEvent) GetReason() string { - if x != nil { - return x.Reason - } - return "" -} - -// ApprovalResponseEvent is emitted when user responds to approval dialog. -// Session status is updated and review queue item is removed. -type ApprovalResponseEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Whether user approved (true) or denied (false) - Approved bool `protobuf:"varint,2,opt,name=approved,proto3" json:"approved,omitempty"` - // What was being approved - Context string `protobuf:"bytes,3,opt,name=context,proto3" json:"context,omitempty"` - // When the response occurred - RespondedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=responded_at,json=respondedAt,proto3" json:"responded_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ApprovalResponseEvent) Reset() { - *x = ApprovalResponseEvent{} - mi := &file_session_v1_events_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ApprovalResponseEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApprovalResponseEvent) ProtoMessage() {} - -func (x *ApprovalResponseEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[19] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ApprovalResponseEvent.ProtoReflect.Descriptor instead. -func (*ApprovalResponseEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{19} -} - -func (x *ApprovalResponseEvent) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *ApprovalResponseEvent) GetApproved() bool { - if x != nil { - return x.Approved - } - return false -} - -func (x *ApprovalResponseEvent) GetContext() string { - if x != nil { - return x.Context - } - return "" -} - -func (x *ApprovalResponseEvent) GetRespondedAt() *timestamppb.Timestamp { - if x != nil { - return x.RespondedAt - } - return nil -} - -// ReviewQueueEvent represents changes to the review queue. -// Used for WatchReviewQueue streaming RPC. -type ReviewQueueEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Timestamp when the event occurred - Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Event type - // - // Types that are valid to be assigned to Event: - // - // *ReviewQueueEvent_ItemAdded - // *ReviewQueueEvent_ItemRemoved - // *ReviewQueueEvent_ItemUpdated - // *ReviewQueueEvent_Statistics - Event isReviewQueueEvent_Event `protobuf_oneof:"event"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReviewQueueEvent) Reset() { - *x = ReviewQueueEvent{} - mi := &file_session_v1_events_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReviewQueueEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReviewQueueEvent) ProtoMessage() {} - -func (x *ReviewQueueEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReviewQueueEvent.ProtoReflect.Descriptor instead. -func (*ReviewQueueEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{20} -} - -func (x *ReviewQueueEvent) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -func (x *ReviewQueueEvent) GetEvent() isReviewQueueEvent_Event { - if x != nil { - return x.Event - } - return nil -} - -func (x *ReviewQueueEvent) GetItemAdded() *ReviewQueueItemAddedEvent { - if x != nil { - if x, ok := x.Event.(*ReviewQueueEvent_ItemAdded); ok { - return x.ItemAdded - } - } - return nil -} - -func (x *ReviewQueueEvent) GetItemRemoved() *ReviewQueueItemRemovedEvent { - if x != nil { - if x, ok := x.Event.(*ReviewQueueEvent_ItemRemoved); ok { - return x.ItemRemoved - } - } - return nil -} - -func (x *ReviewQueueEvent) GetItemUpdated() *ReviewQueueItemUpdatedEvent { - if x != nil { - if x, ok := x.Event.(*ReviewQueueEvent_ItemUpdated); ok { - return x.ItemUpdated - } - } - return nil -} - -func (x *ReviewQueueEvent) GetStatistics() *ReviewQueueStatisticsEvent { - if x != nil { - if x, ok := x.Event.(*ReviewQueueEvent_Statistics); ok { - return x.Statistics - } - } - return nil -} - -type isReviewQueueEvent_Event interface { - isReviewQueueEvent_Event() -} - -type ReviewQueueEvent_ItemAdded struct { - ItemAdded *ReviewQueueItemAddedEvent `protobuf:"bytes,2,opt,name=item_added,json=itemAdded,proto3,oneof"` -} - -type ReviewQueueEvent_ItemRemoved struct { - ItemRemoved *ReviewQueueItemRemovedEvent `protobuf:"bytes,3,opt,name=item_removed,json=itemRemoved,proto3,oneof"` -} - -type ReviewQueueEvent_ItemUpdated struct { - ItemUpdated *ReviewQueueItemUpdatedEvent `protobuf:"bytes,4,opt,name=item_updated,json=itemUpdated,proto3,oneof"` -} - -type ReviewQueueEvent_Statistics struct { - Statistics *ReviewQueueStatisticsEvent `protobuf:"bytes,5,opt,name=statistics,proto3,oneof"` -} - -func (*ReviewQueueEvent_ItemAdded) isReviewQueueEvent_Event() {} - -func (*ReviewQueueEvent_ItemRemoved) isReviewQueueEvent_Event() {} - -func (*ReviewQueueEvent_ItemUpdated) isReviewQueueEvent_Event() {} - -func (*ReviewQueueEvent_Statistics) isReviewQueueEvent_Event() {} - -// ReviewQueueItemAddedEvent is emitted when item is added to queue -type ReviewQueueItemAddedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The item that was added - Item *ReviewItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` - // What triggered this addition - Trigger string `protobuf:"bytes,2,opt,name=trigger,proto3" json:"trigger,omitempty"` // "poller", "manual_check", "status_change" - // Whether this item is part of an initial snapshot (sent on WebSocket reconnection). - // Frontend should NOT fire notifications for snapshot items to prevent duplicates. - // - true: Item is part of initial snapshot (existing queue items sent on reconnect) - // - false: Item is a real-time addition (new session needs attention) - IsSnapshot bool `protobuf:"varint,3,opt,name=is_snapshot,json=isSnapshot,proto3" json:"is_snapshot,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReviewQueueItemAddedEvent) Reset() { - *x = ReviewQueueItemAddedEvent{} - mi := &file_session_v1_events_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReviewQueueItemAddedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReviewQueueItemAddedEvent) ProtoMessage() {} - -func (x *ReviewQueueItemAddedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReviewQueueItemAddedEvent.ProtoReflect.Descriptor instead. -func (*ReviewQueueItemAddedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{21} -} - -func (x *ReviewQueueItemAddedEvent) GetItem() *ReviewItem { - if x != nil { - return x.Item - } - return nil -} - -func (x *ReviewQueueItemAddedEvent) GetTrigger() string { - if x != nil { - return x.Trigger - } - return "" -} - -func (x *ReviewQueueItemAddedEvent) GetIsSnapshot() bool { - if x != nil { - return x.IsSnapshot - } - return false -} - -// ReviewQueueItemRemovedEvent is emitted when item is removed from queue -type ReviewQueueItemRemovedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session ID of removed item - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Why it was removed - Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` // "resolved", "dismissed", "timeout", "acknowledged" - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReviewQueueItemRemovedEvent) Reset() { - *x = ReviewQueueItemRemovedEvent{} - mi := &file_session_v1_events_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReviewQueueItemRemovedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReviewQueueItemRemovedEvent) ProtoMessage() {} - -func (x *ReviewQueueItemRemovedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[22] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReviewQueueItemRemovedEvent.ProtoReflect.Descriptor instead. -func (*ReviewQueueItemRemovedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{22} -} - -func (x *ReviewQueueItemRemovedEvent) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *ReviewQueueItemRemovedEvent) GetReason() string { - if x != nil { - return x.Reason - } - return "" -} - -// ReviewQueueItemUpdatedEvent is emitted when item properties change -type ReviewQueueItemUpdatedEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session ID - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Updated item - Item *ReviewItem `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - // What changed - UpdatedFields []string `protobuf:"bytes,3,rep,name=updated_fields,json=updatedFields,proto3" json:"updated_fields,omitempty"` // "priority", "context", "reason" - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReviewQueueItemUpdatedEvent) Reset() { - *x = ReviewQueueItemUpdatedEvent{} - mi := &file_session_v1_events_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReviewQueueItemUpdatedEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReviewQueueItemUpdatedEvent) ProtoMessage() {} - -func (x *ReviewQueueItemUpdatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[23] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReviewQueueItemUpdatedEvent.ProtoReflect.Descriptor instead. -func (*ReviewQueueItemUpdatedEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{23} -} - -func (x *ReviewQueueItemUpdatedEvent) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *ReviewQueueItemUpdatedEvent) GetItem() *ReviewItem { - if x != nil { - return x.Item - } - return nil -} - -func (x *ReviewQueueItemUpdatedEvent) GetUpdatedFields() []string { - if x != nil { - return x.UpdatedFields - } - return nil -} - -// ReviewQueueStatisticsEvent provides aggregate queue statistics -type ReviewQueueStatisticsEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Total items in queue - TotalItems int32 `protobuf:"varint,1,opt,name=total_items,json=totalItems,proto3" json:"total_items,omitempty"` - // Items by priority level - ByPriority map[int32]int32 `protobuf:"bytes,2,rep,name=by_priority,json=byPriority,proto3" json:"by_priority,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - // Items by attention reason - ByReason map[int32]int32 `protobuf:"bytes,3,rep,name=by_reason,json=byReason,proto3" json:"by_reason,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - // Average age in milliseconds - AverageAgeMs int64 `protobuf:"varint,4,opt,name=average_age_ms,json=averageAgeMs,proto3" json:"average_age_ms,omitempty"` - // Sessions that auto-escalated since last statistics - EscalatedItems []string `protobuf:"bytes,5,rep,name=escalated_items,json=escalatedItems,proto3" json:"escalated_items,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReviewQueueStatisticsEvent) Reset() { - *x = ReviewQueueStatisticsEvent{} - mi := &file_session_v1_events_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReviewQueueStatisticsEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReviewQueueStatisticsEvent) ProtoMessage() {} - -func (x *ReviewQueueStatisticsEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[24] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReviewQueueStatisticsEvent.ProtoReflect.Descriptor instead. -func (*ReviewQueueStatisticsEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{24} -} - -func (x *ReviewQueueStatisticsEvent) GetTotalItems() int32 { - if x != nil { - return x.TotalItems - } - return 0 -} - -func (x *ReviewQueueStatisticsEvent) GetByPriority() map[int32]int32 { - if x != nil { - return x.ByPriority - } - return nil -} - -func (x *ReviewQueueStatisticsEvent) GetByReason() map[int32]int32 { - if x != nil { - return x.ByReason - } - return nil -} - -func (x *ReviewQueueStatisticsEvent) GetAverageAgeMs() int64 { - if x != nil { - return x.AverageAgeMs - } - return 0 -} - -func (x *ReviewQueueStatisticsEvent) GetEscalatedItems() []string { - if x != nil { - return x.EscalatedItems - } - return nil -} - -// NotificationEvent is emitted when a tmux session sends a notification. -// Broadcast to all connected clients (web UI and TUI) for display. -type NotificationEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session that sent the notification - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Session name for display - SessionName string `protobuf:"bytes,2,opt,name=session_name,json=sessionName,proto3" json:"session_name,omitempty"` - // Type of notification (determines default UI treatment) - NotificationType NotificationType `protobuf:"varint,3,opt,name=notification_type,json=notificationType,proto3,enum=session.v1.NotificationType" json:"notification_type,omitempty"` - // Priority level (determines audio, visual styling, auto-dismiss) - Priority NotificationPriority `protobuf:"varint,4,opt,name=priority,proto3,enum=session.v1.NotificationPriority" json:"priority,omitempty"` - // Human-readable title - Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` - // Detailed message - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` - // Optional metadata (key-value pairs for additional context) - Metadata map[string]string `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // When the notification was sent (from server) - Timestamp *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Unique notification ID (for tracking) - NotificationId string `protobuf:"bytes,9,opt,name=notification_id,json=notificationId,proto3" json:"notification_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NotificationEvent) Reset() { - *x = NotificationEvent{} - mi := &file_session_v1_events_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NotificationEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NotificationEvent) ProtoMessage() {} - -func (x *NotificationEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_events_proto_msgTypes[25] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NotificationEvent.ProtoReflect.Descriptor instead. -func (*NotificationEvent) Descriptor() ([]byte, []int) { - return file_session_v1_events_proto_rawDescGZIP(), []int{25} -} - -func (x *NotificationEvent) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *NotificationEvent) GetSessionName() string { - if x != nil { - return x.SessionName - } - return "" -} - -func (x *NotificationEvent) GetNotificationType() NotificationType { - if x != nil { - return x.NotificationType - } - return NotificationType_NOTIFICATION_TYPE_UNSPECIFIED -} - -func (x *NotificationEvent) GetPriority() NotificationPriority { - if x != nil { - return x.Priority - } - return NotificationPriority_NOTIFICATION_PRIORITY_UNSPECIFIED -} - -func (x *NotificationEvent) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *NotificationEvent) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *NotificationEvent) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *NotificationEvent) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -func (x *NotificationEvent) GetNotificationId() string { - if x != nil { - return x.NotificationId - } - return "" -} - -var File_session_v1_events_proto protoreflect.FileDescriptor - -const file_session_v1_events_proto_rawDesc = "" + - "\n" + - "\x17session/v1/events.proto\x12\n" + - "session.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x16session/v1/types.proto\"\x9e\x05\n" + - "\fSessionEvent\x128\n" + - "\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12J\n" + - "\x0fsession_created\x18\x02 \x01(\v2\x1f.session.v1.SessionCreatedEventH\x00R\x0esessionCreated\x12J\n" + - "\x0fsession_updated\x18\x03 \x01(\v2\x1f.session.v1.SessionUpdatedEventH\x00R\x0esessionUpdated\x12J\n" + - "\x0fsession_deleted\x18\x04 \x01(\v2\x1f.session.v1.SessionDeletedEventH\x00R\x0esessionDeleted\x12M\n" + - "\x10user_interaction\x18\x06 \x01(\v2 .session.v1.UserInteractionEventH\x00R\x0fuserInteraction\x12Y\n" + - "\x14session_acknowledged\x18\a \x01(\v2$.session.v1.SessionAcknowledgedEventH\x00R\x13sessionAcknowledged\x12P\n" + - "\x11approval_response\x18\b \x01(\v2!.session.v1.ApprovalResponseEventH\x00R\x10approvalResponse\x12C\n" + - "\fnotification\x18\t \x01(\v2\x1d.session.v1.NotificationEventH\x00R\fnotification\x12\x10\n" + - "\x03seq\x18\n" + - " \x01(\x04R\x03seqB\a\n" + - "\x05eventJ\x04\b\x05\x10\x06R\x0estatus_changed\"D\n" + - "\x13SessionCreatedEvent\x12-\n" + - "\asession\x18\x01 \x01(\v2\x13.session.v1.SessionR\asession\"\xdb\x01\n" + - "\x13SessionUpdatedEvent\x12-\n" + - "\asession\x18\x01 \x01(\v2\x13.session.v1.SessionR\asession\x12%\n" + - "\x0eupdated_fields\x18\x02 \x03(\tR\rupdatedFields\x12C\n" + - "\x0fdetected_status\x18\x03 \x01(\x0e2\x1a.session.v1.DetectedStatusR\x0edetectedStatus\x12)\n" + - "\x10detected_context\x18\x04 \x01(\tR\x0fdetectedContext\"L\n" + - "\x13SessionDeletedEvent\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x16\n" + - "\x06reason\x18\x02 \x01(\tR\x06reason\"\x9b\a\n" + - "\fTerminalData\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x124\n" + - "\x06output\x18\x02 \x01(\v2\x1a.session.v1.TerminalOutputH\x00R\x06output\x121\n" + - "\x05input\x18\x03 \x01(\v2\x19.session.v1.TerminalInputH\x00R\x05input\x124\n" + - "\x06resize\x18\x04 \x01(\v2\x1a.session.v1.TerminalResizeH\x00R\x06resize\x121\n" + - "\x05error\x18\x05 \x01(\v2\x19.session.v1.TerminalErrorH\x00R\x05error\x12N\n" + - "\x12scrollback_request\x18\x06 \x01(\v2\x1d.session.v1.ScrollbackRequestH\x00R\x11scrollbackRequest\x12Q\n" + - "\x13scrollback_response\x18\a \x01(\v2\x1e.session.v1.ScrollbackResponseH\x00R\x12scrollbackResponse\x12R\n" + - "\x14current_pane_request\x18\t \x01(\v2\x1e.session.v1.CurrentPaneRequestH\x00R\x12currentPaneRequest\x12U\n" + - "\x15current_pane_response\x18\n" + - " \x01(\v2\x1f.session.v1.CurrentPaneResponseH\x00R\x13currentPaneResponse\x12<\n" + - "\fflow_control\x18\v \x01(\v2\x17.session.v1.FlowControlH\x00R\vflowControl\x12K\n" + - "\x11resize_quiescence\x18\x10 \x01(\v2\x1c.session.v1.ResizeQuiescenceH\x00R\x10resizeQuiescence\x12O\n" + - "\x13shell_status_update\x18\x12 \x01(\v2\x1d.session.v1.ShellStatusUpdateH\x00R\x11shellStatusUpdate\x12\x19\n" + - "\bshell_id\x18\x11 \x01(\tR\ashellIdB\x06\n" + - "\x04dataJ\x04\b\b\x10\tJ\x04\b\f\x10\rJ\x04\b\r\x10\x0eJ\x04\b\x0e\x10\x0fJ\x04\b\x0f\x10\x10R\x05deltaR\x05stateR\x04diffR\n" + - "input_echoR\x0fssp_negotiation\"\x83\x01\n" + - "\x11ShellStatusUpdate\x12\x19\n" + - "\bshell_id\x18\x01 \x01(\tR\ashellId\x126\n" + - "\n" + - "new_status\x18\x02 \x01(\x0e2\x17.session.v1.ShellStatusR\tnewStatus\x12\x1b\n" + - "\texit_code\x18\x03 \x01(\x05R\bexitCode\"V\n" + - "\x10ResizeQuiescence\x12\x1a\n" + - "\bresizing\x18\x01 \x01(\bR\bresizing\x12\x12\n" + - "\x04cols\x18\x02 \x01(\x05R\x04cols\x12\x12\n" + - "\x04rows\x18\x03 \x01(\x05R\x04rows\"$\n" + - "\x0eTerminalOutput\x12\x12\n" + - "\x04data\x18\x01 \x01(\fR\x04data\"#\n" + - "\rTerminalInput\x12\x12\n" + - "\x04data\x18\x01 \x01(\fR\x04data\"8\n" + - "\x0eTerminalResize\x12\x12\n" + - "\x04rows\x18\x01 \x01(\x05R\x04rows\x12\x12\n" + - "\x04cols\x18\x02 \x01(\x05R\x04cols\"=\n" + - "\rTerminalError\x12\x18\n" + - "\amessage\x18\x01 \x01(\tR\amessage\x12\x12\n" + - "\x04code\x18\x02 \x01(\tR\x04code\"V\n" + - "\vFlowControl\x12\x16\n" + - "\x06paused\x18\x01 \x01(\bR\x06paused\x12!\n" + - "\twatermark\x18\x02 \x01(\x04H\x00R\twatermark\x88\x01\x01B\f\n" + - "\n" + - "_watermark\"N\n" + - "\x11ScrollbackRequest\x12#\n" + - "\rfrom_sequence\x18\x01 \x01(\x04R\ffromSequence\x12\x14\n" + - "\x05limit\x18\x02 \x01(\x05R\x05limit\"\xd7\x01\n" + - "\x12ScrollbackResponse\x123\n" + - "\x06chunks\x18\x01 \x03(\v2\x1b.session.v1.ScrollbackChunkR\x06chunks\x12\x19\n" + - "\bhas_more\x18\x02 \x01(\bR\ahasMore\x12\x1f\n" + - "\vtotal_lines\x18\x03 \x01(\x04R\n" + - "totalLines\x12'\n" + - "\x0foldest_sequence\x18\x04 \x01(\x04R\x0eoldestSequence\x12'\n" + - "\x0fnewest_sequence\x18\x05 \x01(\x04R\x0enewestSequence\"d\n" + - "\x0fScrollbackChunk\x12\x12\n" + - "\x04data\x18\x01 \x01(\fR\x04data\x12\x1a\n" + - "\bsequence\x18\x02 \x01(\x04R\bsequence\x12!\n" + - "\ftimestamp_ms\x18\x03 \x01(\x03R\vtimestampMs\"\xd5\x01\n" + - "\x12CurrentPaneRequest\x12\x14\n" + - "\x05lines\x18\x01 \x01(\x05R\x05lines\x12'\n" + - "\x0finclude_escapes\x18\x02 \x01(\bR\x0eincludeEscapes\x12$\n" + - "\vtarget_cols\x18\x03 \x01(\x05H\x00R\n" + - "targetCols\x88\x01\x01\x12$\n" + - "\vtarget_rows\x18\x04 \x01(\x05H\x01R\n" + - "targetRows\x88\x01\x01B\x0e\n" + - "\f_target_colsB\x0e\n" + - "\f_target_rowsJ\x04\b\x05\x10\x06R\x0estreaming_mode\"\xa5\x01\n" + - "\x13CurrentPaneResponse\x12\x18\n" + - "\acontent\x18\x01 \x01(\fR\acontent\x12\x19\n" + - "\bcursor_x\x18\x02 \x01(\x05R\acursorX\x12\x19\n" + - "\bcursor_y\x18\x03 \x01(\x05R\acursorY\x12\x1d\n" + - "\n" + - "pane_width\x18\x04 \x01(\x05R\tpaneWidth\x12\x1f\n" + - "\vpane_height\x18\x05 \x01(\x05R\n" + - "paneHeight\"\xd9\x06\n" + - "\x14UserInteractionEvent\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12D\n" + - "\x04type\x18\x02 \x01(\x0e20.session.v1.UserInteractionEvent.InteractionTypeR\x04type\x12\x18\n" + - "\acontext\x18\x03 \x01(\tR\acontext\"\xc1\x05\n" + - "\x0fInteractionType\x12 \n" + - "\x1cINTERACTION_TYPE_UNSPECIFIED\x10\x00\x12#\n" + - "\x1fINTERACTION_TYPE_TERMINAL_INPUT\x10\x01\x12#\n" + - "\x1fINTERACTION_TYPE_APPROVAL_GIVEN\x10\x02\x12$\n" + - " INTERACTION_TYPE_APPROVAL_DENIED\x10\x03\x12%\n" + - "!INTERACTION_TYPE_COMMAND_EXECUTED\x10\x04\x12%\n" + - "!INTERACTION_TYPE_SESSION_ATTACHED\x10\x05\x12%\n" + - "!INTERACTION_TYPE_SESSION_DETACHED\x10\x06\x12.\n" + - "*INTERACTION_TYPE_NOTIFICATION_PANEL_OPENED\x10\a\x12.\n" + - "*INTERACTION_TYPE_NOTIFICATION_PANEL_CLOSED\x10\b\x12(\n" + - "$INTERACTION_TYPE_NOTIFICATION_VIEWED\x10\t\x12+\n" + - "'INTERACTION_TYPE_NOTIFICATION_DISMISSED\x10\n" + - "\x12-\n" + - ")INTERACTION_TYPE_NOTIFICATION_MARKED_READ\x10\v\x121\n" + - "-INTERACTION_TYPE_NOTIFICATION_MARKED_ALL_READ\x10\f\x12)\n" + - "%INTERACTION_TYPE_NOTIFICATION_REMOVED\x10\r\x121\n" + - "-INTERACTION_TYPE_NOTIFICATION_HISTORY_CLEARED\x10\x0e\x120\n" + - ",INTERACTION_TYPE_NOTIFICATION_SESSION_VIEWED\x10\x0f\"\x96\x01\n" + - "\x18SessionAcknowledgedEvent\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12C\n" + - "\x0facknowledged_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x0eacknowledgedAt\x12\x16\n" + - "\x06reason\x18\x03 \x01(\tR\x06reason\"\xab\x01\n" + - "\x15ApprovalResponseEvent\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x1a\n" + - "\bapproved\x18\x02 \x01(\bR\bapproved\x12\x18\n" + - "\acontext\x18\x03 \x01(\tR\acontext\x12=\n" + - "\fresponded_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\vrespondedAt\"\x83\x03\n" + - "\x10ReviewQueueEvent\x128\n" + - "\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12F\n" + - "\n" + - "item_added\x18\x02 \x01(\v2%.session.v1.ReviewQueueItemAddedEventH\x00R\titemAdded\x12L\n" + - "\fitem_removed\x18\x03 \x01(\v2'.session.v1.ReviewQueueItemRemovedEventH\x00R\vitemRemoved\x12L\n" + - "\fitem_updated\x18\x04 \x01(\v2'.session.v1.ReviewQueueItemUpdatedEventH\x00R\vitemUpdated\x12H\n" + - "\n" + - "statistics\x18\x05 \x01(\v2&.session.v1.ReviewQueueStatisticsEventH\x00R\n" + - "statisticsB\a\n" + - "\x05event\"\x82\x01\n" + - "\x19ReviewQueueItemAddedEvent\x12*\n" + - "\x04item\x18\x01 \x01(\v2\x16.session.v1.ReviewItemR\x04item\x12\x18\n" + - "\atrigger\x18\x02 \x01(\tR\atrigger\x12\x1f\n" + - "\vis_snapshot\x18\x03 \x01(\bR\n" + - "isSnapshot\"T\n" + - "\x1bReviewQueueItemRemovedEvent\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x16\n" + - "\x06reason\x18\x02 \x01(\tR\x06reason\"\x8f\x01\n" + - "\x1bReviewQueueItemUpdatedEvent\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12*\n" + - "\x04item\x18\x02 \x01(\v2\x16.session.v1.ReviewItemR\x04item\x12%\n" + - "\x0eupdated_fields\x18\x03 \x03(\tR\rupdatedFields\"\xb4\x03\n" + - "\x1aReviewQueueStatisticsEvent\x12\x1f\n" + - "\vtotal_items\x18\x01 \x01(\x05R\n" + - "totalItems\x12W\n" + - "\vby_priority\x18\x02 \x03(\v26.session.v1.ReviewQueueStatisticsEvent.ByPriorityEntryR\n" + - "byPriority\x12Q\n" + - "\tby_reason\x18\x03 \x03(\v24.session.v1.ReviewQueueStatisticsEvent.ByReasonEntryR\bbyReason\x12$\n" + - "\x0eaverage_age_ms\x18\x04 \x01(\x03R\faverageAgeMs\x12'\n" + - "\x0fescalated_items\x18\x05 \x03(\tR\x0eescalatedItems\x1a=\n" + - "\x0fByPriorityEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\x1a;\n" + - "\rByReasonEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\"\xf7\x03\n" + - "\x11NotificationEvent\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12!\n" + - "\fsession_name\x18\x02 \x01(\tR\vsessionName\x12I\n" + - "\x11notification_type\x18\x03 \x01(\x0e2\x1c.session.v1.NotificationTypeR\x10notificationType\x12<\n" + - "\bpriority\x18\x04 \x01(\x0e2 .session.v1.NotificationPriorityR\bpriority\x12\x14\n" + - "\x05title\x18\x05 \x01(\tR\x05title\x12\x18\n" + - "\amessage\x18\x06 \x01(\tR\amessage\x12G\n" + - "\bmetadata\x18\a \x03(\v2+.session.v1.NotificationEvent.MetadataEntryR\bmetadata\x128\n" + - "\ttimestamp\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12'\n" + - "\x0fnotification_id\x18\t \x01(\tR\x0enotificationId\x1a;\n" + - "\rMetadataEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\xab\x01\n" + - "\x0ecom.session.v1B\vEventsProtoP\x01ZCgithub.com/tstapler/stapler-squad/gen/proto/go/session/v1;sessionv1\xa2\x02\x03SXX\xaa\x02\n" + - "Session.V1\xca\x02\n" + - "Session\\V1\xe2\x02\x16Session\\V1\\GPBMetadata\xea\x02\vSession::V1b\x06proto3" - -var ( - file_session_v1_events_proto_rawDescOnce sync.Once - file_session_v1_events_proto_rawDescData []byte -) - -func file_session_v1_events_proto_rawDescGZIP() []byte { - file_session_v1_events_proto_rawDescOnce.Do(func() { - file_session_v1_events_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_session_v1_events_proto_rawDesc), len(file_session_v1_events_proto_rawDesc))) - }) - return file_session_v1_events_proto_rawDescData -} - -var file_session_v1_events_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_session_v1_events_proto_msgTypes = make([]protoimpl.MessageInfo, 29) -var file_session_v1_events_proto_goTypes = []any{ - (UserInteractionEvent_InteractionType)(0), // 0: session.v1.UserInteractionEvent.InteractionType - (*SessionEvent)(nil), // 1: session.v1.SessionEvent - (*SessionCreatedEvent)(nil), // 2: session.v1.SessionCreatedEvent - (*SessionUpdatedEvent)(nil), // 3: session.v1.SessionUpdatedEvent - (*SessionDeletedEvent)(nil), // 4: session.v1.SessionDeletedEvent - (*TerminalData)(nil), // 5: session.v1.TerminalData - (*ShellStatusUpdate)(nil), // 6: session.v1.ShellStatusUpdate - (*ResizeQuiescence)(nil), // 7: session.v1.ResizeQuiescence - (*TerminalOutput)(nil), // 8: session.v1.TerminalOutput - (*TerminalInput)(nil), // 9: session.v1.TerminalInput - (*TerminalResize)(nil), // 10: session.v1.TerminalResize - (*TerminalError)(nil), // 11: session.v1.TerminalError - (*FlowControl)(nil), // 12: session.v1.FlowControl - (*ScrollbackRequest)(nil), // 13: session.v1.ScrollbackRequest - (*ScrollbackResponse)(nil), // 14: session.v1.ScrollbackResponse - (*ScrollbackChunk)(nil), // 15: session.v1.ScrollbackChunk - (*CurrentPaneRequest)(nil), // 16: session.v1.CurrentPaneRequest - (*CurrentPaneResponse)(nil), // 17: session.v1.CurrentPaneResponse - (*UserInteractionEvent)(nil), // 18: session.v1.UserInteractionEvent - (*SessionAcknowledgedEvent)(nil), // 19: session.v1.SessionAcknowledgedEvent - (*ApprovalResponseEvent)(nil), // 20: session.v1.ApprovalResponseEvent - (*ReviewQueueEvent)(nil), // 21: session.v1.ReviewQueueEvent - (*ReviewQueueItemAddedEvent)(nil), // 22: session.v1.ReviewQueueItemAddedEvent - (*ReviewQueueItemRemovedEvent)(nil), // 23: session.v1.ReviewQueueItemRemovedEvent - (*ReviewQueueItemUpdatedEvent)(nil), // 24: session.v1.ReviewQueueItemUpdatedEvent - (*ReviewQueueStatisticsEvent)(nil), // 25: session.v1.ReviewQueueStatisticsEvent - (*NotificationEvent)(nil), // 26: session.v1.NotificationEvent - nil, // 27: session.v1.ReviewQueueStatisticsEvent.ByPriorityEntry - nil, // 28: session.v1.ReviewQueueStatisticsEvent.ByReasonEntry - nil, // 29: session.v1.NotificationEvent.MetadataEntry - (*timestamppb.Timestamp)(nil), // 30: google.protobuf.Timestamp - (*Session)(nil), // 31: session.v1.Session - (DetectedStatus)(0), // 32: session.v1.DetectedStatus - (ShellStatus)(0), // 33: session.v1.ShellStatus - (*ReviewItem)(nil), // 34: session.v1.ReviewItem - (NotificationType)(0), // 35: session.v1.NotificationType - (NotificationPriority)(0), // 36: session.v1.NotificationPriority -} -var file_session_v1_events_proto_depIdxs = []int32{ - 30, // 0: session.v1.SessionEvent.timestamp:type_name -> google.protobuf.Timestamp - 2, // 1: session.v1.SessionEvent.session_created:type_name -> session.v1.SessionCreatedEvent - 3, // 2: session.v1.SessionEvent.session_updated:type_name -> session.v1.SessionUpdatedEvent - 4, // 3: session.v1.SessionEvent.session_deleted:type_name -> session.v1.SessionDeletedEvent - 18, // 4: session.v1.SessionEvent.user_interaction:type_name -> session.v1.UserInteractionEvent - 19, // 5: session.v1.SessionEvent.session_acknowledged:type_name -> session.v1.SessionAcknowledgedEvent - 20, // 6: session.v1.SessionEvent.approval_response:type_name -> session.v1.ApprovalResponseEvent - 26, // 7: session.v1.SessionEvent.notification:type_name -> session.v1.NotificationEvent - 31, // 8: session.v1.SessionCreatedEvent.session:type_name -> session.v1.Session - 31, // 9: session.v1.SessionUpdatedEvent.session:type_name -> session.v1.Session - 32, // 10: session.v1.SessionUpdatedEvent.detected_status:type_name -> session.v1.DetectedStatus - 8, // 11: session.v1.TerminalData.output:type_name -> session.v1.TerminalOutput - 9, // 12: session.v1.TerminalData.input:type_name -> session.v1.TerminalInput - 10, // 13: session.v1.TerminalData.resize:type_name -> session.v1.TerminalResize - 11, // 14: session.v1.TerminalData.error:type_name -> session.v1.TerminalError - 13, // 15: session.v1.TerminalData.scrollback_request:type_name -> session.v1.ScrollbackRequest - 14, // 16: session.v1.TerminalData.scrollback_response:type_name -> session.v1.ScrollbackResponse - 16, // 17: session.v1.TerminalData.current_pane_request:type_name -> session.v1.CurrentPaneRequest - 17, // 18: session.v1.TerminalData.current_pane_response:type_name -> session.v1.CurrentPaneResponse - 12, // 19: session.v1.TerminalData.flow_control:type_name -> session.v1.FlowControl - 7, // 20: session.v1.TerminalData.resize_quiescence:type_name -> session.v1.ResizeQuiescence - 6, // 21: session.v1.TerminalData.shell_status_update:type_name -> session.v1.ShellStatusUpdate - 33, // 22: session.v1.ShellStatusUpdate.new_status:type_name -> session.v1.ShellStatus - 15, // 23: session.v1.ScrollbackResponse.chunks:type_name -> session.v1.ScrollbackChunk - 0, // 24: session.v1.UserInteractionEvent.type:type_name -> session.v1.UserInteractionEvent.InteractionType - 30, // 25: session.v1.SessionAcknowledgedEvent.acknowledged_at:type_name -> google.protobuf.Timestamp - 30, // 26: session.v1.ApprovalResponseEvent.responded_at:type_name -> google.protobuf.Timestamp - 30, // 27: session.v1.ReviewQueueEvent.timestamp:type_name -> google.protobuf.Timestamp - 22, // 28: session.v1.ReviewQueueEvent.item_added:type_name -> session.v1.ReviewQueueItemAddedEvent - 23, // 29: session.v1.ReviewQueueEvent.item_removed:type_name -> session.v1.ReviewQueueItemRemovedEvent - 24, // 30: session.v1.ReviewQueueEvent.item_updated:type_name -> session.v1.ReviewQueueItemUpdatedEvent - 25, // 31: session.v1.ReviewQueueEvent.statistics:type_name -> session.v1.ReviewQueueStatisticsEvent - 34, // 32: session.v1.ReviewQueueItemAddedEvent.item:type_name -> session.v1.ReviewItem - 34, // 33: session.v1.ReviewQueueItemUpdatedEvent.item:type_name -> session.v1.ReviewItem - 27, // 34: session.v1.ReviewQueueStatisticsEvent.by_priority:type_name -> session.v1.ReviewQueueStatisticsEvent.ByPriorityEntry - 28, // 35: session.v1.ReviewQueueStatisticsEvent.by_reason:type_name -> session.v1.ReviewQueueStatisticsEvent.ByReasonEntry - 35, // 36: session.v1.NotificationEvent.notification_type:type_name -> session.v1.NotificationType - 36, // 37: session.v1.NotificationEvent.priority:type_name -> session.v1.NotificationPriority - 29, // 38: session.v1.NotificationEvent.metadata:type_name -> session.v1.NotificationEvent.MetadataEntry - 30, // 39: session.v1.NotificationEvent.timestamp:type_name -> google.protobuf.Timestamp - 40, // [40:40] is the sub-list for method output_type - 40, // [40:40] is the sub-list for method input_type - 40, // [40:40] is the sub-list for extension type_name - 40, // [40:40] is the sub-list for extension extendee - 0, // [0:40] is the sub-list for field type_name -} - -func init() { file_session_v1_events_proto_init() } -func file_session_v1_events_proto_init() { - if File_session_v1_events_proto != nil { - return - } - file_session_v1_types_proto_init() - file_session_v1_events_proto_msgTypes[0].OneofWrappers = []any{ - (*SessionEvent_SessionCreated)(nil), - (*SessionEvent_SessionUpdated)(nil), - (*SessionEvent_SessionDeleted)(nil), - (*SessionEvent_UserInteraction)(nil), - (*SessionEvent_SessionAcknowledged)(nil), - (*SessionEvent_ApprovalResponse)(nil), - (*SessionEvent_Notification)(nil), - } - file_session_v1_events_proto_msgTypes[4].OneofWrappers = []any{ - (*TerminalData_Output)(nil), - (*TerminalData_Input)(nil), - (*TerminalData_Resize)(nil), - (*TerminalData_Error)(nil), - (*TerminalData_ScrollbackRequest)(nil), - (*TerminalData_ScrollbackResponse)(nil), - (*TerminalData_CurrentPaneRequest)(nil), - (*TerminalData_CurrentPaneResponse)(nil), - (*TerminalData_FlowControl)(nil), - (*TerminalData_ResizeQuiescence)(nil), - (*TerminalData_ShellStatusUpdate)(nil), - } - file_session_v1_events_proto_msgTypes[11].OneofWrappers = []any{} - file_session_v1_events_proto_msgTypes[15].OneofWrappers = []any{} - file_session_v1_events_proto_msgTypes[20].OneofWrappers = []any{ - (*ReviewQueueEvent_ItemAdded)(nil), - (*ReviewQueueEvent_ItemRemoved)(nil), - (*ReviewQueueEvent_ItemUpdated)(nil), - (*ReviewQueueEvent_Statistics)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_session_v1_events_proto_rawDesc), len(file_session_v1_events_proto_rawDesc)), - NumEnums: 1, - NumMessages: 29, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_session_v1_events_proto_goTypes, - DependencyIndexes: file_session_v1_events_proto_depIdxs, - EnumInfos: file_session_v1_events_proto_enumTypes, - MessageInfos: file_session_v1_events_proto_msgTypes, - }.Build() - File_session_v1_events_proto = out.File - file_session_v1_events_proto_goTypes = nil - file_session_v1_events_proto_depIdxs = nil -} diff --git a/gen/proto/go/session/v1/github_user.pb.go b/gen/proto/go/session/v1/github_user.pb.go deleted file mode 100644 index 8f95b034e..000000000 --- a/gen/proto/go/session/v1/github_user.pb.go +++ /dev/null @@ -1,1364 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.12 -// protoc (unknown) -// source: session/v1/github_user.proto - -package sessionv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// DeviceAuthStatus describes the outcome of a single poll attempt. -type DeviceAuthStatus int32 - -const ( - DeviceAuthStatus_DEVICE_AUTH_STATUS_UNSPECIFIED DeviceAuthStatus = 0 - DeviceAuthStatus_DEVICE_AUTH_STATUS_PENDING DeviceAuthStatus = 1 // waiting for user to authorize - DeviceAuthStatus_DEVICE_AUTH_STATUS_COMPLETE DeviceAuthStatus = 2 // token received and stored in keychain - DeviceAuthStatus_DEVICE_AUTH_STATUS_EXPIRED DeviceAuthStatus = 3 // device code expired; restart the flow - DeviceAuthStatus_DEVICE_AUTH_STATUS_ERROR DeviceAuthStatus = 4 // unexpected error -) - -// Enum value maps for DeviceAuthStatus. -var ( - DeviceAuthStatus_name = map[int32]string{ - 0: "DEVICE_AUTH_STATUS_UNSPECIFIED", - 1: "DEVICE_AUTH_STATUS_PENDING", - 2: "DEVICE_AUTH_STATUS_COMPLETE", - 3: "DEVICE_AUTH_STATUS_EXPIRED", - 4: "DEVICE_AUTH_STATUS_ERROR", - } - DeviceAuthStatus_value = map[string]int32{ - "DEVICE_AUTH_STATUS_UNSPECIFIED": 0, - "DEVICE_AUTH_STATUS_PENDING": 1, - "DEVICE_AUTH_STATUS_COMPLETE": 2, - "DEVICE_AUTH_STATUS_EXPIRED": 3, - "DEVICE_AUTH_STATUS_ERROR": 4, - } -) - -func (x DeviceAuthStatus) Enum() *DeviceAuthStatus { - p := new(DeviceAuthStatus) - *p = x - return p -} - -func (x DeviceAuthStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DeviceAuthStatus) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_github_user_proto_enumTypes[0].Descriptor() -} - -func (DeviceAuthStatus) Type() protoreflect.EnumType { - return &file_session_v1_github_user_proto_enumTypes[0] -} - -func (x DeviceAuthStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DeviceAuthStatus.Descriptor instead. -func (DeviceAuthStatus) EnumDescriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{0} -} - -// GitHubAccount is a single connected GitHub account. -type GitHubAccount struct { - state protoimpl.MessageState `protogen:"open.v1"` - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - IsEnvToken bool `protobuf:"varint,2,opt,name=is_env_token,json=isEnvToken,proto3" json:"is_env_token,omitempty"` // true when sourced from GITHUB_TOKEN/GH_TOKEN env var - Host string `protobuf:"bytes,3,opt,name=host,proto3" json:"host,omitempty"` // GitHub host, e.g. "github.com" or a GHES hostname; empty means github.com - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GitHubAccount) Reset() { - *x = GitHubAccount{} - mi := &file_session_v1_github_user_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GitHubAccount) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GitHubAccount) ProtoMessage() {} - -func (x *GitHubAccount) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GitHubAccount.ProtoReflect.Descriptor instead. -func (*GitHubAccount) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{0} -} - -func (x *GitHubAccount) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} - -func (x *GitHubAccount) GetIsEnvToken() bool { - if x != nil { - return x.IsEnvToken - } - return false -} - -func (x *GitHubAccount) GetHost() string { - if x != nil { - return x.Host - } - return "" -} - -// GitHubAuthState describes the current GitHub authentication status. -type GitHubAuthState struct { - state protoimpl.MessageState `protogen:"open.v1"` - Available bool `protobuf:"varint,1,opt,name=available,proto3" json:"available,omitempty"` // true when a token is present and /user returned 200 - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` // primary (first) GitHub login; empty when available=false - ErrorMessage string `protobuf:"bytes,3,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` // human-readable reason when available=false - Accounts []*GitHubAccount `protobuf:"bytes,4,rep,name=accounts,proto3" json:"accounts,omitempty"` // all connected accounts - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GitHubAuthState) Reset() { - *x = GitHubAuthState{} - mi := &file_session_v1_github_user_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GitHubAuthState) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GitHubAuthState) ProtoMessage() {} - -func (x *GitHubAuthState) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GitHubAuthState.ProtoReflect.Descriptor instead. -func (*GitHubAuthState) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{1} -} - -func (x *GitHubAuthState) GetAvailable() bool { - if x != nil { - return x.Available - } - return false -} - -func (x *GitHubAuthState) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} - -func (x *GitHubAuthState) GetErrorMessage() string { - if x != nil { - return x.ErrorMessage - } - return "" -} - -func (x *GitHubAuthState) GetAccounts() []*GitHubAccount { - if x != nil { - return x.Accounts - } - return nil -} - -type ListUserPRsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListUserPRsRequest) Reset() { - *x = ListUserPRsRequest{} - mi := &file_session_v1_github_user_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListUserPRsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListUserPRsRequest) ProtoMessage() {} - -func (x *ListUserPRsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListUserPRsRequest.ProtoReflect.Descriptor instead. -func (*ListUserPRsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{2} -} - -type ListUserPRsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Prs []*UserPR `protobuf:"bytes,1,rep,name=prs,proto3" json:"prs,omitempty"` - AuthState *GitHubAuthState `protobuf:"bytes,2,opt,name=auth_state,json=authState,proto3" json:"auth_state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListUserPRsResponse) Reset() { - *x = ListUserPRsResponse{} - mi := &file_session_v1_github_user_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListUserPRsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListUserPRsResponse) ProtoMessage() {} - -func (x *ListUserPRsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListUserPRsResponse.ProtoReflect.Descriptor instead. -func (*ListUserPRsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{3} -} - -func (x *ListUserPRsResponse) GetPrs() []*UserPR { - if x != nil { - return x.Prs - } - return nil -} - -func (x *ListUserPRsResponse) GetAuthState() *GitHubAuthState { - if x != nil { - return x.AuthState - } - return nil -} - -type WatchUserPRsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *WatchUserPRsRequest) Reset() { - *x = WatchUserPRsRequest{} - mi := &file_session_v1_github_user_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WatchUserPRsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WatchUserPRsRequest) ProtoMessage() {} - -func (x *WatchUserPRsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WatchUserPRsRequest.ProtoReflect.Descriptor instead. -func (*WatchUserPRsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{4} -} - -type UserPREvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // event_type is "snapshot", "added", "updated", or "removed". - EventType string `protobuf:"bytes,1,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` - Prs []*UserPR `protobuf:"bytes,2,rep,name=prs,proto3" json:"prs,omitempty"` // full list for "snapshot"; changed PRs otherwise - AuthState *GitHubAuthState `protobuf:"bytes,3,opt,name=auth_state,json=authState,proto3" json:"auth_state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UserPREvent) Reset() { - *x = UserPREvent{} - mi := &file_session_v1_github_user_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UserPREvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserPREvent) ProtoMessage() {} - -func (x *UserPREvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserPREvent.ProtoReflect.Descriptor instead. -func (*UserPREvent) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{5} -} - -func (x *UserPREvent) GetEventType() string { - if x != nil { - return x.EventType - } - return "" -} - -func (x *UserPREvent) GetPrs() []*UserPR { - if x != nil { - return x.Prs - } - return nil -} - -func (x *UserPREvent) GetAuthState() *GitHubAuthState { - if x != nil { - return x.AuthState - } - return nil -} - -type GetGitHubAuthStateRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetGitHubAuthStateRequest) Reset() { - *x = GetGitHubAuthStateRequest{} - mi := &file_session_v1_github_user_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetGitHubAuthStateRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetGitHubAuthStateRequest) ProtoMessage() {} - -func (x *GetGitHubAuthStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetGitHubAuthStateRequest.ProtoReflect.Descriptor instead. -func (*GetGitHubAuthStateRequest) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{6} -} - -type GetGitHubAuthStateResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - AuthState *GitHubAuthState `protobuf:"bytes,1,opt,name=auth_state,json=authState,proto3" json:"auth_state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetGitHubAuthStateResponse) Reset() { - *x = GetGitHubAuthStateResponse{} - mi := &file_session_v1_github_user_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetGitHubAuthStateResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetGitHubAuthStateResponse) ProtoMessage() {} - -func (x *GetGitHubAuthStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetGitHubAuthStateResponse.ProtoReflect.Descriptor instead. -func (*GetGitHubAuthStateResponse) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{7} -} - -func (x *GetGitHubAuthStateResponse) GetAuthState() *GitHubAuthState { - if x != nil { - return x.AuthState - } - return nil -} - -type StartGitHubDeviceAuthRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` // GitHub host to authenticate against; empty means github.com - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StartGitHubDeviceAuthRequest) Reset() { - *x = StartGitHubDeviceAuthRequest{} - mi := &file_session_v1_github_user_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StartGitHubDeviceAuthRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StartGitHubDeviceAuthRequest) ProtoMessage() {} - -func (x *StartGitHubDeviceAuthRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StartGitHubDeviceAuthRequest.ProtoReflect.Descriptor instead. -func (*StartGitHubDeviceAuthRequest) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{8} -} - -func (x *StartGitHubDeviceAuthRequest) GetHost() string { - if x != nil { - return x.Host - } - return "" -} - -type StartGitHubDeviceAuthResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - DeviceCode string `protobuf:"bytes,1,opt,name=device_code,json=deviceCode,proto3" json:"device_code,omitempty"` // opaque code passed back to PollGitHubDeviceAuth - UserCode string `protobuf:"bytes,2,opt,name=user_code,json=userCode,proto3" json:"user_code,omitempty"` // 8-char code the user enters at verification_uri - VerificationUri string `protobuf:"bytes,3,opt,name=verification_uri,json=verificationUri,proto3" json:"verification_uri,omitempty"` // URL to open (e.g. https://github.com/login/device) - ExpiresIn int32 `protobuf:"varint,4,opt,name=expires_in,json=expiresIn,proto3" json:"expires_in,omitempty"` // seconds until the device_code expires - Interval int32 `protobuf:"varint,5,opt,name=interval,proto3" json:"interval,omitempty"` // minimum poll interval in seconds - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StartGitHubDeviceAuthResponse) Reset() { - *x = StartGitHubDeviceAuthResponse{} - mi := &file_session_v1_github_user_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StartGitHubDeviceAuthResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StartGitHubDeviceAuthResponse) ProtoMessage() {} - -func (x *StartGitHubDeviceAuthResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StartGitHubDeviceAuthResponse.ProtoReflect.Descriptor instead. -func (*StartGitHubDeviceAuthResponse) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{9} -} - -func (x *StartGitHubDeviceAuthResponse) GetDeviceCode() string { - if x != nil { - return x.DeviceCode - } - return "" -} - -func (x *StartGitHubDeviceAuthResponse) GetUserCode() string { - if x != nil { - return x.UserCode - } - return "" -} - -func (x *StartGitHubDeviceAuthResponse) GetVerificationUri() string { - if x != nil { - return x.VerificationUri - } - return "" -} - -func (x *StartGitHubDeviceAuthResponse) GetExpiresIn() int32 { - if x != nil { - return x.ExpiresIn - } - return 0 -} - -func (x *StartGitHubDeviceAuthResponse) GetInterval() int32 { - if x != nil { - return x.Interval - } - return 0 -} - -type PollGitHubDeviceAuthRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - DeviceCode string `protobuf:"bytes,1,opt,name=device_code,json=deviceCode,proto3" json:"device_code,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PollGitHubDeviceAuthRequest) Reset() { - *x = PollGitHubDeviceAuthRequest{} - mi := &file_session_v1_github_user_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PollGitHubDeviceAuthRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PollGitHubDeviceAuthRequest) ProtoMessage() {} - -func (x *PollGitHubDeviceAuthRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PollGitHubDeviceAuthRequest.ProtoReflect.Descriptor instead. -func (*PollGitHubDeviceAuthRequest) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{10} -} - -func (x *PollGitHubDeviceAuthRequest) GetDeviceCode() string { - if x != nil { - return x.DeviceCode - } - return "" -} - -type PollGitHubDeviceAuthResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Status DeviceAuthStatus `protobuf:"varint,1,opt,name=status,proto3,enum=session.v1.DeviceAuthStatus" json:"status,omitempty"` - Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` // set when status == ERROR - AuthState *GitHubAuthState `protobuf:"bytes,3,opt,name=auth_state,json=authState,proto3" json:"auth_state,omitempty"` // set when status == COMPLETE - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PollGitHubDeviceAuthResponse) Reset() { - *x = PollGitHubDeviceAuthResponse{} - mi := &file_session_v1_github_user_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PollGitHubDeviceAuthResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PollGitHubDeviceAuthResponse) ProtoMessage() {} - -func (x *PollGitHubDeviceAuthResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PollGitHubDeviceAuthResponse.ProtoReflect.Descriptor instead. -func (*PollGitHubDeviceAuthResponse) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{11} -} - -func (x *PollGitHubDeviceAuthResponse) GetStatus() DeviceAuthStatus { - if x != nil { - return x.Status - } - return DeviceAuthStatus_DEVICE_AUTH_STATUS_UNSPECIFIED -} - -func (x *PollGitHubDeviceAuthResponse) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -func (x *PollGitHubDeviceAuthResponse) GetAuthState() *GitHubAuthState { - if x != nil { - return x.AuthState - } - return nil -} - -type RevokeGitHubTokenRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` // if set, remove only this account; otherwise remove the legacy single-account token - Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"` // host the account belongs to; empty means github.com - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RevokeGitHubTokenRequest) Reset() { - *x = RevokeGitHubTokenRequest{} - mi := &file_session_v1_github_user_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RevokeGitHubTokenRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RevokeGitHubTokenRequest) ProtoMessage() {} - -func (x *RevokeGitHubTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RevokeGitHubTokenRequest.ProtoReflect.Descriptor instead. -func (*RevokeGitHubTokenRequest) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{12} -} - -func (x *RevokeGitHubTokenRequest) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} - -func (x *RevokeGitHubTokenRequest) GetHost() string { - if x != nil { - return x.Host - } - return "" -} - -type RevokeGitHubTokenResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RevokeGitHubTokenResponse) Reset() { - *x = RevokeGitHubTokenResponse{} - mi := &file_session_v1_github_user_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RevokeGitHubTokenResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RevokeGitHubTokenResponse) ProtoMessage() {} - -func (x *RevokeGitHubTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RevokeGitHubTokenResponse.ProtoReflect.Descriptor instead. -func (*RevokeGitHubTokenResponse) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{13} -} - -type ListGitHubAccountsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListGitHubAccountsRequest) Reset() { - *x = ListGitHubAccountsRequest{} - mi := &file_session_v1_github_user_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListGitHubAccountsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListGitHubAccountsRequest) ProtoMessage() {} - -func (x *ListGitHubAccountsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListGitHubAccountsRequest.ProtoReflect.Descriptor instead. -func (*ListGitHubAccountsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{14} -} - -type ListGitHubAccountsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Accounts []*GitHubAccount `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty"` - // enterprise_hosts lists the GHES hostnames configured on the server - // (github.com is always implicitly available and not included here). - EnterpriseHosts []string `protobuf:"bytes,2,rep,name=enterprise_hosts,json=enterpriseHosts,proto3" json:"enterprise_hosts,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListGitHubAccountsResponse) Reset() { - *x = ListGitHubAccountsResponse{} - mi := &file_session_v1_github_user_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListGitHubAccountsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListGitHubAccountsResponse) ProtoMessage() {} - -func (x *ListGitHubAccountsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListGitHubAccountsResponse.ProtoReflect.Descriptor instead. -func (*ListGitHubAccountsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{15} -} - -func (x *ListGitHubAccountsResponse) GetAccounts() []*GitHubAccount { - if x != nil { - return x.Accounts - } - return nil -} - -func (x *ListGitHubAccountsResponse) GetEnterpriseHosts() []string { - if x != nil { - return x.EnterpriseHosts - } - return nil -} - -type AddGitHubAccountWithTokenRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` // GitHub host to authenticate against; empty means github.com - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` // personal access token - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AddGitHubAccountWithTokenRequest) Reset() { - *x = AddGitHubAccountWithTokenRequest{} - mi := &file_session_v1_github_user_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AddGitHubAccountWithTokenRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddGitHubAccountWithTokenRequest) ProtoMessage() {} - -func (x *AddGitHubAccountWithTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AddGitHubAccountWithTokenRequest.ProtoReflect.Descriptor instead. -func (*AddGitHubAccountWithTokenRequest) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{16} -} - -func (x *AddGitHubAccountWithTokenRequest) GetHost() string { - if x != nil { - return x.Host - } - return "" -} - -func (x *AddGitHubAccountWithTokenRequest) GetToken() string { - if x != nil { - return x.Token - } - return "" -} - -type AddGitHubAccountWithTokenResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - AuthState *GitHubAuthState `protobuf:"bytes,1,opt,name=auth_state,json=authState,proto3" json:"auth_state,omitempty"` // updated state on success - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AddGitHubAccountWithTokenResponse) Reset() { - *x = AddGitHubAccountWithTokenResponse{} - mi := &file_session_v1_github_user_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AddGitHubAccountWithTokenResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddGitHubAccountWithTokenResponse) ProtoMessage() {} - -func (x *AddGitHubAccountWithTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[17] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AddGitHubAccountWithTokenResponse.ProtoReflect.Descriptor instead. -func (*AddGitHubAccountWithTokenResponse) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{17} -} - -func (x *AddGitHubAccountWithTokenResponse) GetAuthState() *GitHubAuthState { - if x != nil { - return x.AuthState - } - return nil -} - -// GitHubCLIHost is a host the local `gh` CLI is already authenticated to. -type GitHubCLIHost struct { - state protoimpl.MessageState `protogen:"open.v1"` - Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` // normalized host, e.g. "github.com" or a GHES hostname - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` // gh CLI's recorded username for this host, if known - AlreadyAdded bool `protobuf:"varint,3,opt,name=already_added,json=alreadyAdded,proto3" json:"already_added,omitempty"` // true when this host+username is already a connected account - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GitHubCLIHost) Reset() { - *x = GitHubCLIHost{} - mi := &file_session_v1_github_user_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GitHubCLIHost) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GitHubCLIHost) ProtoMessage() {} - -func (x *GitHubCLIHost) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[18] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GitHubCLIHost.ProtoReflect.Descriptor instead. -func (*GitHubCLIHost) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{18} -} - -func (x *GitHubCLIHost) GetHost() string { - if x != nil { - return x.Host - } - return "" -} - -func (x *GitHubCLIHost) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} - -func (x *GitHubCLIHost) GetAlreadyAdded() bool { - if x != nil { - return x.AlreadyAdded - } - return false -} - -type ListGitHubCLIHostsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListGitHubCLIHostsRequest) Reset() { - *x = ListGitHubCLIHostsRequest{} - mi := &file_session_v1_github_user_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListGitHubCLIHostsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListGitHubCLIHostsRequest) ProtoMessage() {} - -func (x *ListGitHubCLIHostsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[19] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListGitHubCLIHostsRequest.ProtoReflect.Descriptor instead. -func (*ListGitHubCLIHostsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{19} -} - -type ListGitHubCLIHostsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Hosts []*GitHubCLIHost `protobuf:"bytes,1,rep,name=hosts,proto3" json:"hosts,omitempty"` - GhAvailable bool `protobuf:"varint,2,opt,name=gh_available,json=ghAvailable,proto3" json:"gh_available,omitempty"` // false when the gh CLI config could not be read (not installed / never logged in) - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListGitHubCLIHostsResponse) Reset() { - *x = ListGitHubCLIHostsResponse{} - mi := &file_session_v1_github_user_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListGitHubCLIHostsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListGitHubCLIHostsResponse) ProtoMessage() {} - -func (x *ListGitHubCLIHostsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListGitHubCLIHostsResponse.ProtoReflect.Descriptor instead. -func (*ListGitHubCLIHostsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{20} -} - -func (x *ListGitHubCLIHostsResponse) GetHosts() []*GitHubCLIHost { - if x != nil { - return x.Hosts - } - return nil -} - -func (x *ListGitHubCLIHostsResponse) GetGhAvailable() bool { - if x != nil { - return x.GhAvailable - } - return false -} - -type AddGitHubAccountFromCLIRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` // host to import, as returned by ListGitHubCLIHosts - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AddGitHubAccountFromCLIRequest) Reset() { - *x = AddGitHubAccountFromCLIRequest{} - mi := &file_session_v1_github_user_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AddGitHubAccountFromCLIRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddGitHubAccountFromCLIRequest) ProtoMessage() {} - -func (x *AddGitHubAccountFromCLIRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_github_user_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AddGitHubAccountFromCLIRequest.ProtoReflect.Descriptor instead. -func (*AddGitHubAccountFromCLIRequest) Descriptor() ([]byte, []int) { - return file_session_v1_github_user_proto_rawDescGZIP(), []int{21} -} - -func (x *AddGitHubAccountFromCLIRequest) GetHost() string { - if x != nil { - return x.Host - } - return "" -} - -var File_session_v1_github_user_proto protoreflect.FileDescriptor - -const file_session_v1_github_user_proto_rawDesc = "" + - "\n" + - "\x1csession/v1/github_user.proto\x12\n" + - "session.v1\x1a\x16session/v1/types.proto\"a\n" + - "\rGitHubAccount\x12\x1a\n" + - "\busername\x18\x01 \x01(\tR\busername\x12 \n" + - "\fis_env_token\x18\x02 \x01(\bR\n" + - "isEnvToken\x12\x12\n" + - "\x04host\x18\x03 \x01(\tR\x04host\"\xa7\x01\n" + - "\x0fGitHubAuthState\x12\x1c\n" + - "\tavailable\x18\x01 \x01(\bR\tavailable\x12\x1a\n" + - "\busername\x18\x02 \x01(\tR\busername\x12#\n" + - "\rerror_message\x18\x03 \x01(\tR\ferrorMessage\x125\n" + - "\baccounts\x18\x04 \x03(\v2\x19.session.v1.GitHubAccountR\baccounts\"\x14\n" + - "\x12ListUserPRsRequest\"w\n" + - "\x13ListUserPRsResponse\x12$\n" + - "\x03prs\x18\x01 \x03(\v2\x12.session.v1.UserPRR\x03prs\x12:\n" + - "\n" + - "auth_state\x18\x02 \x01(\v2\x1b.session.v1.GitHubAuthStateR\tauthState\"\x15\n" + - "\x13WatchUserPRsRequest\"\x8e\x01\n" + - "\vUserPREvent\x12\x1d\n" + - "\n" + - "event_type\x18\x01 \x01(\tR\teventType\x12$\n" + - "\x03prs\x18\x02 \x03(\v2\x12.session.v1.UserPRR\x03prs\x12:\n" + - "\n" + - "auth_state\x18\x03 \x01(\v2\x1b.session.v1.GitHubAuthStateR\tauthState\"\x1b\n" + - "\x19GetGitHubAuthStateRequest\"X\n" + - "\x1aGetGitHubAuthStateResponse\x12:\n" + - "\n" + - "auth_state\x18\x01 \x01(\v2\x1b.session.v1.GitHubAuthStateR\tauthState\"2\n" + - "\x1cStartGitHubDeviceAuthRequest\x12\x12\n" + - "\x04host\x18\x01 \x01(\tR\x04host\"\xc3\x01\n" + - "\x1dStartGitHubDeviceAuthResponse\x12\x1f\n" + - "\vdevice_code\x18\x01 \x01(\tR\n" + - "deviceCode\x12\x1b\n" + - "\tuser_code\x18\x02 \x01(\tR\buserCode\x12)\n" + - "\x10verification_uri\x18\x03 \x01(\tR\x0fverificationUri\x12\x1d\n" + - "\n" + - "expires_in\x18\x04 \x01(\x05R\texpiresIn\x12\x1a\n" + - "\binterval\x18\x05 \x01(\x05R\binterval\">\n" + - "\x1bPollGitHubDeviceAuthRequest\x12\x1f\n" + - "\vdevice_code\x18\x01 \x01(\tR\n" + - "deviceCode\"\xa6\x01\n" + - "\x1cPollGitHubDeviceAuthResponse\x124\n" + - "\x06status\x18\x01 \x01(\x0e2\x1c.session.v1.DeviceAuthStatusR\x06status\x12\x14\n" + - "\x05error\x18\x02 \x01(\tR\x05error\x12:\n" + - "\n" + - "auth_state\x18\x03 \x01(\v2\x1b.session.v1.GitHubAuthStateR\tauthState\"J\n" + - "\x18RevokeGitHubTokenRequest\x12\x1a\n" + - "\busername\x18\x01 \x01(\tR\busername\x12\x12\n" + - "\x04host\x18\x02 \x01(\tR\x04host\"\x1b\n" + - "\x19RevokeGitHubTokenResponse\"\x1b\n" + - "\x19ListGitHubAccountsRequest\"~\n" + - "\x1aListGitHubAccountsResponse\x125\n" + - "\baccounts\x18\x01 \x03(\v2\x19.session.v1.GitHubAccountR\baccounts\x12)\n" + - "\x10enterprise_hosts\x18\x02 \x03(\tR\x0fenterpriseHosts\"L\n" + - " AddGitHubAccountWithTokenRequest\x12\x12\n" + - "\x04host\x18\x01 \x01(\tR\x04host\x12\x14\n" + - "\x05token\x18\x02 \x01(\tR\x05token\"_\n" + - "!AddGitHubAccountWithTokenResponse\x12:\n" + - "\n" + - "auth_state\x18\x01 \x01(\v2\x1b.session.v1.GitHubAuthStateR\tauthState\"d\n" + - "\rGitHubCLIHost\x12\x12\n" + - "\x04host\x18\x01 \x01(\tR\x04host\x12\x1a\n" + - "\busername\x18\x02 \x01(\tR\busername\x12#\n" + - "\ralready_added\x18\x03 \x01(\bR\falreadyAdded\"\x1b\n" + - "\x19ListGitHubCLIHostsRequest\"p\n" + - "\x1aListGitHubCLIHostsResponse\x12/\n" + - "\x05hosts\x18\x01 \x03(\v2\x19.session.v1.GitHubCLIHostR\x05hosts\x12!\n" + - "\fgh_available\x18\x02 \x01(\bR\vghAvailable\"4\n" + - "\x1eAddGitHubAccountFromCLIRequest\x12\x12\n" + - "\x04host\x18\x01 \x01(\tR\x04host*\xb5\x01\n" + - "\x10DeviceAuthStatus\x12\"\n" + - "\x1eDEVICE_AUTH_STATUS_UNSPECIFIED\x10\x00\x12\x1e\n" + - "\x1aDEVICE_AUTH_STATUS_PENDING\x10\x01\x12\x1f\n" + - "\x1bDEVICE_AUTH_STATUS_COMPLETE\x10\x02\x12\x1e\n" + - "\x1aDEVICE_AUTH_STATUS_EXPIRED\x10\x03\x12\x1c\n" + - "\x18DEVICE_AUTH_STATUS_ERROR\x10\x042\x9d\b\n" + - "\x11GitHubUserService\x12P\n" + - "\vListUserPRs\x12\x1e.session.v1.ListUserPRsRequest\x1a\x1f.session.v1.ListUserPRsResponse\"\x00\x12L\n" + - "\fWatchUserPRs\x12\x1f.session.v1.WatchUserPRsRequest\x1a\x17.session.v1.UserPREvent\"\x000\x01\x12e\n" + - "\x12GetGitHubAuthState\x12%.session.v1.GetGitHubAuthStateRequest\x1a&.session.v1.GetGitHubAuthStateResponse\"\x00\x12n\n" + - "\x15StartGitHubDeviceAuth\x12(.session.v1.StartGitHubDeviceAuthRequest\x1a).session.v1.StartGitHubDeviceAuthResponse\"\x00\x12k\n" + - "\x14PollGitHubDeviceAuth\x12'.session.v1.PollGitHubDeviceAuthRequest\x1a(.session.v1.PollGitHubDeviceAuthResponse\"\x00\x12b\n" + - "\x11RevokeGitHubToken\x12$.session.v1.RevokeGitHubTokenRequest\x1a%.session.v1.RevokeGitHubTokenResponse\"\x00\x12e\n" + - "\x12ListGitHubAccounts\x12%.session.v1.ListGitHubAccountsRequest\x1a&.session.v1.ListGitHubAccountsResponse\"\x00\x12z\n" + - "\x19AddGitHubAccountWithToken\x12,.session.v1.AddGitHubAccountWithTokenRequest\x1a-.session.v1.AddGitHubAccountWithTokenResponse\"\x00\x12e\n" + - "\x12ListGitHubCLIHosts\x12%.session.v1.ListGitHubCLIHostsRequest\x1a&.session.v1.ListGitHubCLIHostsResponse\"\x00\x12v\n" + - "\x17AddGitHubAccountFromCLI\x12*.session.v1.AddGitHubAccountFromCLIRequest\x1a-.session.v1.AddGitHubAccountWithTokenResponse\"\x00B\xaf\x01\n" + - "\x0ecom.session.v1B\x0fGithubUserProtoP\x01ZCgithub.com/tstapler/stapler-squad/gen/proto/go/session/v1;sessionv1\xa2\x02\x03SXX\xaa\x02\n" + - "Session.V1\xca\x02\n" + - "Session\\V1\xe2\x02\x16Session\\V1\\GPBMetadata\xea\x02\vSession::V1b\x06proto3" - -var ( - file_session_v1_github_user_proto_rawDescOnce sync.Once - file_session_v1_github_user_proto_rawDescData []byte -) - -func file_session_v1_github_user_proto_rawDescGZIP() []byte { - file_session_v1_github_user_proto_rawDescOnce.Do(func() { - file_session_v1_github_user_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_session_v1_github_user_proto_rawDesc), len(file_session_v1_github_user_proto_rawDesc))) - }) - return file_session_v1_github_user_proto_rawDescData -} - -var file_session_v1_github_user_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_session_v1_github_user_proto_msgTypes = make([]protoimpl.MessageInfo, 22) -var file_session_v1_github_user_proto_goTypes = []any{ - (DeviceAuthStatus)(0), // 0: session.v1.DeviceAuthStatus - (*GitHubAccount)(nil), // 1: session.v1.GitHubAccount - (*GitHubAuthState)(nil), // 2: session.v1.GitHubAuthState - (*ListUserPRsRequest)(nil), // 3: session.v1.ListUserPRsRequest - (*ListUserPRsResponse)(nil), // 4: session.v1.ListUserPRsResponse - (*WatchUserPRsRequest)(nil), // 5: session.v1.WatchUserPRsRequest - (*UserPREvent)(nil), // 6: session.v1.UserPREvent - (*GetGitHubAuthStateRequest)(nil), // 7: session.v1.GetGitHubAuthStateRequest - (*GetGitHubAuthStateResponse)(nil), // 8: session.v1.GetGitHubAuthStateResponse - (*StartGitHubDeviceAuthRequest)(nil), // 9: session.v1.StartGitHubDeviceAuthRequest - (*StartGitHubDeviceAuthResponse)(nil), // 10: session.v1.StartGitHubDeviceAuthResponse - (*PollGitHubDeviceAuthRequest)(nil), // 11: session.v1.PollGitHubDeviceAuthRequest - (*PollGitHubDeviceAuthResponse)(nil), // 12: session.v1.PollGitHubDeviceAuthResponse - (*RevokeGitHubTokenRequest)(nil), // 13: session.v1.RevokeGitHubTokenRequest - (*RevokeGitHubTokenResponse)(nil), // 14: session.v1.RevokeGitHubTokenResponse - (*ListGitHubAccountsRequest)(nil), // 15: session.v1.ListGitHubAccountsRequest - (*ListGitHubAccountsResponse)(nil), // 16: session.v1.ListGitHubAccountsResponse - (*AddGitHubAccountWithTokenRequest)(nil), // 17: session.v1.AddGitHubAccountWithTokenRequest - (*AddGitHubAccountWithTokenResponse)(nil), // 18: session.v1.AddGitHubAccountWithTokenResponse - (*GitHubCLIHost)(nil), // 19: session.v1.GitHubCLIHost - (*ListGitHubCLIHostsRequest)(nil), // 20: session.v1.ListGitHubCLIHostsRequest - (*ListGitHubCLIHostsResponse)(nil), // 21: session.v1.ListGitHubCLIHostsResponse - (*AddGitHubAccountFromCLIRequest)(nil), // 22: session.v1.AddGitHubAccountFromCLIRequest - (*UserPR)(nil), // 23: session.v1.UserPR -} -var file_session_v1_github_user_proto_depIdxs = []int32{ - 1, // 0: session.v1.GitHubAuthState.accounts:type_name -> session.v1.GitHubAccount - 23, // 1: session.v1.ListUserPRsResponse.prs:type_name -> session.v1.UserPR - 2, // 2: session.v1.ListUserPRsResponse.auth_state:type_name -> session.v1.GitHubAuthState - 23, // 3: session.v1.UserPREvent.prs:type_name -> session.v1.UserPR - 2, // 4: session.v1.UserPREvent.auth_state:type_name -> session.v1.GitHubAuthState - 2, // 5: session.v1.GetGitHubAuthStateResponse.auth_state:type_name -> session.v1.GitHubAuthState - 0, // 6: session.v1.PollGitHubDeviceAuthResponse.status:type_name -> session.v1.DeviceAuthStatus - 2, // 7: session.v1.PollGitHubDeviceAuthResponse.auth_state:type_name -> session.v1.GitHubAuthState - 1, // 8: session.v1.ListGitHubAccountsResponse.accounts:type_name -> session.v1.GitHubAccount - 2, // 9: session.v1.AddGitHubAccountWithTokenResponse.auth_state:type_name -> session.v1.GitHubAuthState - 19, // 10: session.v1.ListGitHubCLIHostsResponse.hosts:type_name -> session.v1.GitHubCLIHost - 3, // 11: session.v1.GitHubUserService.ListUserPRs:input_type -> session.v1.ListUserPRsRequest - 5, // 12: session.v1.GitHubUserService.WatchUserPRs:input_type -> session.v1.WatchUserPRsRequest - 7, // 13: session.v1.GitHubUserService.GetGitHubAuthState:input_type -> session.v1.GetGitHubAuthStateRequest - 9, // 14: session.v1.GitHubUserService.StartGitHubDeviceAuth:input_type -> session.v1.StartGitHubDeviceAuthRequest - 11, // 15: session.v1.GitHubUserService.PollGitHubDeviceAuth:input_type -> session.v1.PollGitHubDeviceAuthRequest - 13, // 16: session.v1.GitHubUserService.RevokeGitHubToken:input_type -> session.v1.RevokeGitHubTokenRequest - 15, // 17: session.v1.GitHubUserService.ListGitHubAccounts:input_type -> session.v1.ListGitHubAccountsRequest - 17, // 18: session.v1.GitHubUserService.AddGitHubAccountWithToken:input_type -> session.v1.AddGitHubAccountWithTokenRequest - 20, // 19: session.v1.GitHubUserService.ListGitHubCLIHosts:input_type -> session.v1.ListGitHubCLIHostsRequest - 22, // 20: session.v1.GitHubUserService.AddGitHubAccountFromCLI:input_type -> session.v1.AddGitHubAccountFromCLIRequest - 4, // 21: session.v1.GitHubUserService.ListUserPRs:output_type -> session.v1.ListUserPRsResponse - 6, // 22: session.v1.GitHubUserService.WatchUserPRs:output_type -> session.v1.UserPREvent - 8, // 23: session.v1.GitHubUserService.GetGitHubAuthState:output_type -> session.v1.GetGitHubAuthStateResponse - 10, // 24: session.v1.GitHubUserService.StartGitHubDeviceAuth:output_type -> session.v1.StartGitHubDeviceAuthResponse - 12, // 25: session.v1.GitHubUserService.PollGitHubDeviceAuth:output_type -> session.v1.PollGitHubDeviceAuthResponse - 14, // 26: session.v1.GitHubUserService.RevokeGitHubToken:output_type -> session.v1.RevokeGitHubTokenResponse - 16, // 27: session.v1.GitHubUserService.ListGitHubAccounts:output_type -> session.v1.ListGitHubAccountsResponse - 18, // 28: session.v1.GitHubUserService.AddGitHubAccountWithToken:output_type -> session.v1.AddGitHubAccountWithTokenResponse - 21, // 29: session.v1.GitHubUserService.ListGitHubCLIHosts:output_type -> session.v1.ListGitHubCLIHostsResponse - 18, // 30: session.v1.GitHubUserService.AddGitHubAccountFromCLI:output_type -> session.v1.AddGitHubAccountWithTokenResponse - 21, // [21:31] is the sub-list for method output_type - 11, // [11:21] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name -} - -func init() { file_session_v1_github_user_proto_init() } -func file_session_v1_github_user_proto_init() { - if File_session_v1_github_user_proto != nil { - return - } - file_session_v1_types_proto_init() - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_session_v1_github_user_proto_rawDesc), len(file_session_v1_github_user_proto_rawDesc)), - NumEnums: 1, - NumMessages: 22, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_session_v1_github_user_proto_goTypes, - DependencyIndexes: file_session_v1_github_user_proto_depIdxs, - EnumInfos: file_session_v1_github_user_proto_enumTypes, - MessageInfos: file_session_v1_github_user_proto_msgTypes, - }.Build() - File_session_v1_github_user_proto = out.File - file_session_v1_github_user_proto_goTypes = nil - file_session_v1_github_user_proto_depIdxs = nil -} diff --git a/gen/proto/go/session/v1/headless.pb.go b/gen/proto/go/session/v1/headless.pb.go deleted file mode 100644 index 94e85accd..000000000 --- a/gen/proto/go/session/v1/headless.pb.go +++ /dev/null @@ -1,264 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.12 -// protoc (unknown) -// source: session/v1/headless.proto - -package sessionv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// RunHeadlessCallRequest specifies the parameters for a headless LLM call. -type RunHeadlessCallRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // feature_key identifies which AI feature session pool to use. - // Allowed values: "review", "summarize", "pr-description", "commit-message", "custom". - FeatureKey string `protobuf:"bytes,1,opt,name=feature_key,json=featureKey,proto3" json:"feature_key,omitempty"` - // system_prompt is the stable system-level instruction sent on first call. - SystemPrompt string `protobuf:"bytes,2,opt,name=system_prompt,json=systemPrompt,proto3" json:"system_prompt,omitempty"` - // user_prompt is the per-call user message. - UserPrompt string `protobuf:"bytes,3,opt,name=user_prompt,json=userPrompt,proto3" json:"user_prompt,omitempty"` - // model overrides the pool's default model for this call. - Model string `protobuf:"bytes,4,opt,name=model,proto3" json:"model,omitempty"` - // timeout_seconds overrides the default timeout (default: 900s, max: 1800s). - TimeoutSeconds int32 `protobuf:"varint,5,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RunHeadlessCallRequest) Reset() { - *x = RunHeadlessCallRequest{} - mi := &file_session_v1_headless_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RunHeadlessCallRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RunHeadlessCallRequest) ProtoMessage() {} - -func (x *RunHeadlessCallRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_headless_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RunHeadlessCallRequest.ProtoReflect.Descriptor instead. -func (*RunHeadlessCallRequest) Descriptor() ([]byte, []int) { - return file_session_v1_headless_proto_rawDescGZIP(), []int{0} -} - -func (x *RunHeadlessCallRequest) GetFeatureKey() string { - if x != nil { - return x.FeatureKey - } - return "" -} - -func (x *RunHeadlessCallRequest) GetSystemPrompt() string { - if x != nil { - return x.SystemPrompt - } - return "" -} - -func (x *RunHeadlessCallRequest) GetUserPrompt() string { - if x != nil { - return x.UserPrompt - } - return "" -} - -func (x *RunHeadlessCallRequest) GetModel() string { - if x != nil { - return x.Model - } - return "" -} - -func (x *RunHeadlessCallRequest) GetTimeoutSeconds() int32 { - if x != nil { - return x.TimeoutSeconds - } - return 0 -} - -// RunHeadlessCallResponse is a single streaming chunk from the LLM response. -type RunHeadlessCallResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // text is the streamed text fragment. May be empty for error/done-only messages. - Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` - // done is true when this is the final chunk. - Done bool `protobuf:"varint,2,opt,name=done,proto3" json:"done,omitempty"` - // is_error is true when an error occurred. - IsError bool `protobuf:"varint,3,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"` - // error_message contains the error description when is_error is true. - ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - // cost_usd is the estimated cost for this call (only set on the final chunk). - CostUsd float64 `protobuf:"fixed64,5,opt,name=cost_usd,json=costUsd,proto3" json:"cost_usd,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RunHeadlessCallResponse) Reset() { - *x = RunHeadlessCallResponse{} - mi := &file_session_v1_headless_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RunHeadlessCallResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RunHeadlessCallResponse) ProtoMessage() {} - -func (x *RunHeadlessCallResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_headless_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RunHeadlessCallResponse.ProtoReflect.Descriptor instead. -func (*RunHeadlessCallResponse) Descriptor() ([]byte, []int) { - return file_session_v1_headless_proto_rawDescGZIP(), []int{1} -} - -func (x *RunHeadlessCallResponse) GetText() string { - if x != nil { - return x.Text - } - return "" -} - -func (x *RunHeadlessCallResponse) GetDone() bool { - if x != nil { - return x.Done - } - return false -} - -func (x *RunHeadlessCallResponse) GetIsError() bool { - if x != nil { - return x.IsError - } - return false -} - -func (x *RunHeadlessCallResponse) GetErrorMessage() string { - if x != nil { - return x.ErrorMessage - } - return "" -} - -func (x *RunHeadlessCallResponse) GetCostUsd() float64 { - if x != nil { - return x.CostUsd - } - return 0 -} - -var File_session_v1_headless_proto protoreflect.FileDescriptor - -const file_session_v1_headless_proto_rawDesc = "" + - "\n" + - "\x19session/v1/headless.proto\x12\n" + - "session.v1\"\xbe\x01\n" + - "\x16RunHeadlessCallRequest\x12\x1f\n" + - "\vfeature_key\x18\x01 \x01(\tR\n" + - "featureKey\x12#\n" + - "\rsystem_prompt\x18\x02 \x01(\tR\fsystemPrompt\x12\x1f\n" + - "\vuser_prompt\x18\x03 \x01(\tR\n" + - "userPrompt\x12\x14\n" + - "\x05model\x18\x04 \x01(\tR\x05model\x12'\n" + - "\x0ftimeout_seconds\x18\x05 \x01(\x05R\x0etimeoutSeconds\"\x9c\x01\n" + - "\x17RunHeadlessCallResponse\x12\x12\n" + - "\x04text\x18\x01 \x01(\tR\x04text\x12\x12\n" + - "\x04done\x18\x02 \x01(\bR\x04done\x12\x19\n" + - "\bis_error\x18\x03 \x01(\bR\aisError\x12#\n" + - "\rerror_message\x18\x04 \x01(\tR\ferrorMessage\x12\x19\n" + - "\bcost_usd\x18\x05 \x01(\x01R\acostUsd2q\n" + - "\x0fHeadlessService\x12^\n" + - "\x0fRunHeadlessCall\x12\".session.v1.RunHeadlessCallRequest\x1a#.session.v1.RunHeadlessCallResponse\"\x000\x01B\xad\x01\n" + - "\x0ecom.session.v1B\rHeadlessProtoP\x01ZCgithub.com/tstapler/stapler-squad/gen/proto/go/session/v1;sessionv1\xa2\x02\x03SXX\xaa\x02\n" + - "Session.V1\xca\x02\n" + - "Session\\V1\xe2\x02\x16Session\\V1\\GPBMetadata\xea\x02\vSession::V1b\x06proto3" - -var ( - file_session_v1_headless_proto_rawDescOnce sync.Once - file_session_v1_headless_proto_rawDescData []byte -) - -func file_session_v1_headless_proto_rawDescGZIP() []byte { - file_session_v1_headless_proto_rawDescOnce.Do(func() { - file_session_v1_headless_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_session_v1_headless_proto_rawDesc), len(file_session_v1_headless_proto_rawDesc))) - }) - return file_session_v1_headless_proto_rawDescData -} - -var file_session_v1_headless_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_session_v1_headless_proto_goTypes = []any{ - (*RunHeadlessCallRequest)(nil), // 0: session.v1.RunHeadlessCallRequest - (*RunHeadlessCallResponse)(nil), // 1: session.v1.RunHeadlessCallResponse -} -var file_session_v1_headless_proto_depIdxs = []int32{ - 0, // 0: session.v1.HeadlessService.RunHeadlessCall:input_type -> session.v1.RunHeadlessCallRequest - 1, // 1: session.v1.HeadlessService.RunHeadlessCall:output_type -> session.v1.RunHeadlessCallResponse - 1, // [1:2] is the sub-list for method output_type - 0, // [0:1] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_session_v1_headless_proto_init() } -func file_session_v1_headless_proto_init() { - if File_session_v1_headless_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_session_v1_headless_proto_rawDesc), len(file_session_v1_headless_proto_rawDesc)), - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_session_v1_headless_proto_goTypes, - DependencyIndexes: file_session_v1_headless_proto_depIdxs, - MessageInfos: file_session_v1_headless_proto_msgTypes, - }.Build() - File_session_v1_headless_proto = out.File - file_session_v1_headless_proto_goTypes = nil - file_session_v1_headless_proto_depIdxs = nil -} diff --git a/gen/proto/go/session/v1/import.pb.go b/gen/proto/go/session/v1/import.pb.go deleted file mode 100644 index 8baeabd92..000000000 --- a/gen/proto/go/session/v1/import.pb.go +++ /dev/null @@ -1,1244 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.12 -// protoc (unknown) -// source: session/v1/import.proto - -package sessionv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// ImportSourceKind mirrors session.ImportSourceKind. -type ImportSourceKind int32 - -const ( - ImportSourceKind_IMPORT_SOURCE_KIND_UNSPECIFIED ImportSourceKind = 0 - ImportSourceKind_IMPORT_SOURCE_KIND_MUX_DISCOVERED ImportSourceKind = 1 - ImportSourceKind_IMPORT_SOURCE_KIND_PLAIN_TMUX ImportSourceKind = 2 -) - -// Enum value maps for ImportSourceKind. -var ( - ImportSourceKind_name = map[int32]string{ - 0: "IMPORT_SOURCE_KIND_UNSPECIFIED", - 1: "IMPORT_SOURCE_KIND_MUX_DISCOVERED", - 2: "IMPORT_SOURCE_KIND_PLAIN_TMUX", - } - ImportSourceKind_value = map[string]int32{ - "IMPORT_SOURCE_KIND_UNSPECIFIED": 0, - "IMPORT_SOURCE_KIND_MUX_DISCOVERED": 1, - "IMPORT_SOURCE_KIND_PLAIN_TMUX": 2, - } -) - -func (x ImportSourceKind) Enum() *ImportSourceKind { - p := new(ImportSourceKind) - *p = x - return p -} - -func (x ImportSourceKind) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ImportSourceKind) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_import_proto_enumTypes[0].Descriptor() -} - -func (ImportSourceKind) Type() protoreflect.EnumType { - return &file_session_v1_import_proto_enumTypes[0] -} - -func (x ImportSourceKind) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ImportSourceKind.Descriptor instead. -func (ImportSourceKind) EnumDescriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{0} -} - -// CorrelationKind mirrors session.CorrelationKind. Ambiguous and NotFound -// are valid, non-error outcomes and must never be silently collapsed. -type CorrelationKind int32 - -const ( - CorrelationKind_CORRELATION_KIND_UNSPECIFIED CorrelationKind = 0 - CorrelationKind_CORRELATION_KIND_NOT_FOUND CorrelationKind = 1 - CorrelationKind_CORRELATION_KIND_RESOLVED CorrelationKind = 2 - CorrelationKind_CORRELATION_KIND_AMBIGUOUS CorrelationKind = 3 -) - -// Enum value maps for CorrelationKind. -var ( - CorrelationKind_name = map[int32]string{ - 0: "CORRELATION_KIND_UNSPECIFIED", - 1: "CORRELATION_KIND_NOT_FOUND", - 2: "CORRELATION_KIND_RESOLVED", - 3: "CORRELATION_KIND_AMBIGUOUS", - } - CorrelationKind_value = map[string]int32{ - "CORRELATION_KIND_UNSPECIFIED": 0, - "CORRELATION_KIND_NOT_FOUND": 1, - "CORRELATION_KIND_RESOLVED": 2, - "CORRELATION_KIND_AMBIGUOUS": 3, - } -) - -func (x CorrelationKind) Enum() *CorrelationKind { - p := new(CorrelationKind) - *p = x - return p -} - -func (x CorrelationKind) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CorrelationKind) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_import_proto_enumTypes[1].Descriptor() -} - -func (CorrelationKind) Type() protoreflect.EnumType { - return &file_session_v1_import_proto_enumTypes[1] -} - -func (x CorrelationKind) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use CorrelationKind.Descriptor instead. -func (CorrelationKind) EnumDescriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{1} -} - -// CorrelationConfidence mirrors session.CorrelationConfidence. -type CorrelationConfidence int32 - -const ( - CorrelationConfidence_CORRELATION_CONFIDENCE_UNSPECIFIED CorrelationConfidence = 0 - CorrelationConfidence_CORRELATION_CONFIDENCE_NONE CorrelationConfidence = 1 - CorrelationConfidence_CORRELATION_CONFIDENCE_PID_EXACT CorrelationConfidence = 2 - CorrelationConfidence_CORRELATION_CONFIDENCE_PATH_HEURISTIC CorrelationConfidence = 3 -) - -// Enum value maps for CorrelationConfidence. -var ( - CorrelationConfidence_name = map[int32]string{ - 0: "CORRELATION_CONFIDENCE_UNSPECIFIED", - 1: "CORRELATION_CONFIDENCE_NONE", - 2: "CORRELATION_CONFIDENCE_PID_EXACT", - 3: "CORRELATION_CONFIDENCE_PATH_HEURISTIC", - } - CorrelationConfidence_value = map[string]int32{ - "CORRELATION_CONFIDENCE_UNSPECIFIED": 0, - "CORRELATION_CONFIDENCE_NONE": 1, - "CORRELATION_CONFIDENCE_PID_EXACT": 2, - "CORRELATION_CONFIDENCE_PATH_HEURISTIC": 3, - } -) - -func (x CorrelationConfidence) Enum() *CorrelationConfidence { - p := new(CorrelationConfidence) - *p = x - return p -} - -func (x CorrelationConfidence) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CorrelationConfidence) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_import_proto_enumTypes[2].Descriptor() -} - -func (CorrelationConfidence) Type() protoreflect.EnumType { - return &file_session_v1_import_proto_enumTypes[2] -} - -func (x CorrelationConfidence) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use CorrelationConfidence.Descriptor instead. -func (CorrelationConfidence) EnumDescriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{2} -} - -type ImportStatus int32 - -const ( - ImportStatus_IMPORT_STATUS_UNSPECIFIED ImportStatus = 0 - ImportStatus_IMPORT_STATUS_COMMITTED ImportStatus = 1 - ImportStatus_IMPORT_STATUS_FAILED ImportStatus = 2 -) - -// Enum value maps for ImportStatus. -var ( - ImportStatus_name = map[int32]string{ - 0: "IMPORT_STATUS_UNSPECIFIED", - 1: "IMPORT_STATUS_COMMITTED", - 2: "IMPORT_STATUS_FAILED", - } - ImportStatus_value = map[string]int32{ - "IMPORT_STATUS_UNSPECIFIED": 0, - "IMPORT_STATUS_COMMITTED": 1, - "IMPORT_STATUS_FAILED": 2, - } -) - -func (x ImportStatus) Enum() *ImportStatus { - p := new(ImportStatus) - *p = x - return p -} - -func (x ImportStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ImportStatus) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_import_proto_enumTypes[3].Descriptor() -} - -func (ImportStatus) Type() protoreflect.EnumType { - return &file_session_v1_import_proto_enumTypes[3] -} - -func (x ImportStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ImportStatus.Descriptor instead. -func (ImportStatus) EnumDescriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{3} -} - -type KillStatus int32 - -const ( - KillStatus_KILL_STATUS_UNSPECIFIED KillStatus = 0 - KillStatus_KILL_STATUS_KILLED KillStatus = 1 - // already_gone means IsAlive re-verification failed (PID reused or - // process already exited) -- no signal was sent. - KillStatus_KILL_STATUS_ALREADY_GONE KillStatus = 2 - // failed means the kill primitive (tmux kill-session) itself failed; the - // original process is left SIGSTOP'd, never auto-resumed. - KillStatus_KILL_STATUS_FAILED KillStatus = 3 -) - -// Enum value maps for KillStatus. -var ( - KillStatus_name = map[int32]string{ - 0: "KILL_STATUS_UNSPECIFIED", - 1: "KILL_STATUS_KILLED", - 2: "KILL_STATUS_ALREADY_GONE", - 3: "KILL_STATUS_FAILED", - } - KillStatus_value = map[string]int32{ - "KILL_STATUS_UNSPECIFIED": 0, - "KILL_STATUS_KILLED": 1, - "KILL_STATUS_ALREADY_GONE": 2, - "KILL_STATUS_FAILED": 3, - } -) - -func (x KillStatus) Enum() *KillStatus { - p := new(KillStatus) - *p = x - return p -} - -func (x KillStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (KillStatus) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_import_proto_enumTypes[4].Descriptor() -} - -func (KillStatus) Type() protoreflect.EnumType { - return &file_session_v1_import_proto_enumTypes[4] -} - -func (x KillStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use KillStatus.Descriptor instead. -func (KillStatus) EnumDescriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{4} -} - -// PIDIdentity pins a process identity to a specific PID + creation time so -// that ProcessInspector.IsAlive can detect PID reuse before signaling. -// Minted once at preview time (from the original process) and threaded -// verbatim through the commit request. The commit response mints a FRESH -// PIDIdentity (re-read from the still-suspended original process) for use -// by the subsequent ConfirmKillExternalSession/CancelPendingKill call, -// since more time elapses between commit and kill than between preview and -// commit. -type PIDIdentity struct { - state protoimpl.MessageState `protogen:"open.v1"` - Pid int32 `protobuf:"varint,1,opt,name=pid,proto3" json:"pid,omitempty"` - CreateTimeMs int64 `protobuf:"varint,2,opt,name=create_time_ms,json=createTimeMs,proto3" json:"create_time_ms,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PIDIdentity) Reset() { - *x = PIDIdentity{} - mi := &file_session_v1_import_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PIDIdentity) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PIDIdentity) ProtoMessage() {} - -func (x *PIDIdentity) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_import_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PIDIdentity.ProtoReflect.Descriptor instead. -func (*PIDIdentity) Descriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{0} -} - -func (x *PIDIdentity) GetPid() int32 { - if x != nil { - return x.Pid - } - return 0 -} - -func (x *PIDIdentity) GetCreateTimeMs() int64 { - if x != nil { - return x.CreateTimeMs - } - return 0 -} - -// ExternalSessionCandidateRef identifies the discovered, unmanaged -// candidate a preview/commit call refers to. The client round-trips this -// verbatim from whatever discovery list surfaced it. -type ExternalSessionCandidateRef struct { - state protoimpl.MessageState `protogen:"open.v1"` - SourceKind ImportSourceKind `protobuf:"varint,1,opt,name=source_kind,json=sourceKind,proto3,enum=session.v1.ImportSourceKind" json:"source_kind,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - Program string `protobuf:"bytes,3,opt,name=program,proto3" json:"program,omitempty"` - Pid int32 `protobuf:"varint,4,opt,name=pid,proto3" json:"pid,omitempty"` - TmuxSession string `protobuf:"bytes,5,opt,name=tmux_session,json=tmuxSession,proto3" json:"tmux_session,omitempty"` - // socket_path is empty for PLAIN_TMUX candidates. - SocketPath string `protobuf:"bytes,6,opt,name=socket_path,json=socketPath,proto3" json:"socket_path,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ExternalSessionCandidateRef) Reset() { - *x = ExternalSessionCandidateRef{} - mi := &file_session_v1_import_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExternalSessionCandidateRef) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExternalSessionCandidateRef) ProtoMessage() {} - -func (x *ExternalSessionCandidateRef) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_import_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExternalSessionCandidateRef.ProtoReflect.Descriptor instead. -func (*ExternalSessionCandidateRef) Descriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{1} -} - -func (x *ExternalSessionCandidateRef) GetSourceKind() ImportSourceKind { - if x != nil { - return x.SourceKind - } - return ImportSourceKind_IMPORT_SOURCE_KIND_UNSPECIFIED -} - -func (x *ExternalSessionCandidateRef) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *ExternalSessionCandidateRef) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *ExternalSessionCandidateRef) GetPid() int32 { - if x != nil { - return x.Pid - } - return 0 -} - -func (x *ExternalSessionCandidateRef) GetTmuxSession() string { - if x != nil { - return x.TmuxSession - } - return "" -} - -func (x *ExternalSessionCandidateRef) GetSocketPath() string { - if x != nil { - return x.SocketPath - } - return "" -} - -// HistoryFileCandidate mirrors session.HistoryFileInfo, surfaced to the -// client when CorrelationResult.kind == AMBIGUOUS so the user can pick one. -type HistoryFileCandidate struct { - state protoimpl.MessageState `protogen:"open.v1"` - ConversationUuid string `protobuf:"bytes,1,opt,name=conversation_uuid,json=conversationUuid,proto3" json:"conversation_uuid,omitempty"` - HistoryFilePath string `protobuf:"bytes,2,opt,name=history_file_path,json=historyFilePath,proto3" json:"history_file_path,omitempty"` - ProjectDir string `protobuf:"bytes,3,opt,name=project_dir,json=projectDir,proto3" json:"project_dir,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *HistoryFileCandidate) Reset() { - *x = HistoryFileCandidate{} - mi := &file_session_v1_import_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *HistoryFileCandidate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HistoryFileCandidate) ProtoMessage() {} - -func (x *HistoryFileCandidate) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_import_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HistoryFileCandidate.ProtoReflect.Descriptor instead. -func (*HistoryFileCandidate) Descriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{2} -} - -func (x *HistoryFileCandidate) GetConversationUuid() string { - if x != nil { - return x.ConversationUuid - } - return "" -} - -func (x *HistoryFileCandidate) GetHistoryFilePath() string { - if x != nil { - return x.HistoryFilePath - } - return "" -} - -func (x *HistoryFileCandidate) GetProjectDir() string { - if x != nil { - return x.ProjectDir - } - return "" -} - -// CorrelationResultProto mirrors session.CorrelationResult. -type CorrelationResultProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - Kind CorrelationKind `protobuf:"varint,1,opt,name=kind,proto3,enum=session.v1.CorrelationKind" json:"kind,omitempty"` - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` - Confidence CorrelationConfidence `protobuf:"varint,3,opt,name=confidence,proto3,enum=session.v1.CorrelationConfidence" json:"confidence,omitempty"` - // candidates is populated only when kind == AMBIGUOUS. - Candidates []*HistoryFileCandidate `protobuf:"bytes,4,rep,name=candidates,proto3" json:"candidates,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CorrelationResultProto) Reset() { - *x = CorrelationResultProto{} - mi := &file_session_v1_import_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CorrelationResultProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CorrelationResultProto) ProtoMessage() {} - -func (x *CorrelationResultProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_import_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CorrelationResultProto.ProtoReflect.Descriptor instead. -func (*CorrelationResultProto) Descriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{3} -} - -func (x *CorrelationResultProto) GetKind() CorrelationKind { - if x != nil { - return x.Kind - } - return CorrelationKind_CORRELATION_KIND_UNSPECIFIED -} - -func (x *CorrelationResultProto) GetUuid() string { - if x != nil { - return x.Uuid - } - return "" -} - -func (x *CorrelationResultProto) GetConfidence() CorrelationConfidence { - if x != nil { - return x.Confidence - } - return CorrelationConfidence_CORRELATION_CONFIDENCE_UNSPECIFIED -} - -func (x *CorrelationResultProto) GetCandidates() []*HistoryFileCandidate { - if x != nil { - return x.Candidates - } - return nil -} - -type PreviewImportExternalSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Candidate *ExternalSessionCandidateRef `protobuf:"bytes,1,opt,name=candidate,proto3" json:"candidate,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PreviewImportExternalSessionRequest) Reset() { - *x = PreviewImportExternalSessionRequest{} - mi := &file_session_v1_import_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PreviewImportExternalSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PreviewImportExternalSessionRequest) ProtoMessage() {} - -func (x *PreviewImportExternalSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_import_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PreviewImportExternalSessionRequest.ProtoReflect.Descriptor instead. -func (*PreviewImportExternalSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{4} -} - -func (x *PreviewImportExternalSessionRequest) GetCandidate() *ExternalSessionCandidateRef { - if x != nil { - return x.Candidate - } - return nil -} - -type PreviewImportExternalSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Program string `protobuf:"bytes,1,opt,name=program,proto3" json:"program,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - Correlation *CorrelationResultProto `protobuf:"bytes,3,opt,name=correlation,proto3" json:"correlation,omitempty"` - // turn_count and last_message_excerpt are populated only when - // correlation.kind == RESOLVED (a single history file could be read). - TurnCount int32 `protobuf:"varint,4,opt,name=turn_count,json=turnCount,proto3" json:"turn_count,omitempty"` - LastMessageExcerpt string `protobuf:"bytes,5,opt,name=last_message_excerpt,json=lastMessageExcerpt,proto3" json:"last_message_excerpt,omitempty"` - // pid_identity is populated only when candidate.pid > 0 and the process - // is currently alive; the client must echo it verbatim in the commit - // request. - PidIdentity *PIDIdentity `protobuf:"bytes,6,opt,name=pid_identity,json=pidIdentity,proto3" json:"pid_identity,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PreviewImportExternalSessionResponse) Reset() { - *x = PreviewImportExternalSessionResponse{} - mi := &file_session_v1_import_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PreviewImportExternalSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PreviewImportExternalSessionResponse) ProtoMessage() {} - -func (x *PreviewImportExternalSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_import_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PreviewImportExternalSessionResponse.ProtoReflect.Descriptor instead. -func (*PreviewImportExternalSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{5} -} - -func (x *PreviewImportExternalSessionResponse) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *PreviewImportExternalSessionResponse) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *PreviewImportExternalSessionResponse) GetCorrelation() *CorrelationResultProto { - if x != nil { - return x.Correlation - } - return nil -} - -func (x *PreviewImportExternalSessionResponse) GetTurnCount() int32 { - if x != nil { - return x.TurnCount - } - return 0 -} - -func (x *PreviewImportExternalSessionResponse) GetLastMessageExcerpt() string { - if x != nil { - return x.LastMessageExcerpt - } - return "" -} - -func (x *PreviewImportExternalSessionResponse) GetPidIdentity() *PIDIdentity { - if x != nil { - return x.PidIdentity - } - return nil -} - -type CommitImportExternalSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Candidate *ExternalSessionCandidateRef `protobuf:"bytes,1,opt,name=candidate,proto3" json:"candidate,omitempty"` - // expected_correlation is exactly what PreviewImportExternalSession - // returned. Commit re-runs correlation fresh and aborts with - // FAILED_PRECONDITION if the fresh result disagrees (correlation drift). - ExpectedCorrelation *CorrelationResultProto `protobuf:"bytes,2,opt,name=expected_correlation,json=expectedCorrelation,proto3" json:"expected_correlation,omitempty"` - // disambiguation_choice selects one of expected_correlation.candidates by - // conversation_uuid when expected_correlation.kind == AMBIGUOUS. Must be - // empty when kind == RESOLVED. - DisambiguationChoice string `protobuf:"bytes,3,opt,name=disambiguation_choice,json=disambiguationChoice,proto3" json:"disambiguation_choice,omitempty"` - PidIdentity *PIDIdentity `protobuf:"bytes,4,opt,name=pid_identity,json=pidIdentity,proto3" json:"pid_identity,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CommitImportExternalSessionRequest) Reset() { - *x = CommitImportExternalSessionRequest{} - mi := &file_session_v1_import_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CommitImportExternalSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CommitImportExternalSessionRequest) ProtoMessage() {} - -func (x *CommitImportExternalSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_import_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CommitImportExternalSessionRequest.ProtoReflect.Descriptor instead. -func (*CommitImportExternalSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{6} -} - -func (x *CommitImportExternalSessionRequest) GetCandidate() *ExternalSessionCandidateRef { - if x != nil { - return x.Candidate - } - return nil -} - -func (x *CommitImportExternalSessionRequest) GetExpectedCorrelation() *CorrelationResultProto { - if x != nil { - return x.ExpectedCorrelation - } - return nil -} - -func (x *CommitImportExternalSessionRequest) GetDisambiguationChoice() string { - if x != nil { - return x.DisambiguationChoice - } - return "" -} - -func (x *CommitImportExternalSessionRequest) GetPidIdentity() *PIDIdentity { - if x != nil { - return x.PidIdentity - } - return nil -} - -type CommitImportExternalSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Status ImportStatus `protobuf:"varint,1,opt,name=status,proto3,enum=session.v1.ImportStatus" json:"status,omitempty"` - InstanceId string `protobuf:"bytes,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` - Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` - // pid_identity echoes a freshly re-read identity of the original, - // now-SIGSTOP'd process for use by a subsequent - // ConfirmKillExternalSession/CancelPendingKill call. Absent when status - // == FAILED. - PidIdentity *PIDIdentity `protobuf:"bytes,4,opt,name=pid_identity,json=pidIdentity,proto3" json:"pid_identity,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CommitImportExternalSessionResponse) Reset() { - *x = CommitImportExternalSessionResponse{} - mi := &file_session_v1_import_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CommitImportExternalSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CommitImportExternalSessionResponse) ProtoMessage() {} - -func (x *CommitImportExternalSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_import_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CommitImportExternalSessionResponse.ProtoReflect.Descriptor instead. -func (*CommitImportExternalSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{7} -} - -func (x *CommitImportExternalSessionResponse) GetStatus() ImportStatus { - if x != nil { - return x.Status - } - return ImportStatus_IMPORT_STATUS_UNSPECIFIED -} - -func (x *CommitImportExternalSessionResponse) GetInstanceId() string { - if x != nil { - return x.InstanceId - } - return "" -} - -func (x *CommitImportExternalSessionResponse) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -func (x *CommitImportExternalSessionResponse) GetPidIdentity() *PIDIdentity { - if x != nil { - return x.PidIdentity - } - return nil -} - -type ConfirmKillExternalSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` - PidIdentity *PIDIdentity `protobuf:"bytes,2,opt,name=pid_identity,json=pidIdentity,proto3" json:"pid_identity,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ConfirmKillExternalSessionRequest) Reset() { - *x = ConfirmKillExternalSessionRequest{} - mi := &file_session_v1_import_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ConfirmKillExternalSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConfirmKillExternalSessionRequest) ProtoMessage() {} - -func (x *ConfirmKillExternalSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_import_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ConfirmKillExternalSessionRequest.ProtoReflect.Descriptor instead. -func (*ConfirmKillExternalSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{8} -} - -func (x *ConfirmKillExternalSessionRequest) GetInstanceId() string { - if x != nil { - return x.InstanceId - } - return "" -} - -func (x *ConfirmKillExternalSessionRequest) GetPidIdentity() *PIDIdentity { - if x != nil { - return x.PidIdentity - } - return nil -} - -type ConfirmKillExternalSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Status KillStatus `protobuf:"varint,1,opt,name=status,proto3,enum=session.v1.KillStatus" json:"status,omitempty"` - Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ConfirmKillExternalSessionResponse) Reset() { - *x = ConfirmKillExternalSessionResponse{} - mi := &file_session_v1_import_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ConfirmKillExternalSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConfirmKillExternalSessionResponse) ProtoMessage() {} - -func (x *ConfirmKillExternalSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_import_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ConfirmKillExternalSessionResponse.ProtoReflect.Descriptor instead. -func (*ConfirmKillExternalSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{9} -} - -func (x *ConfirmKillExternalSessionResponse) GetStatus() KillStatus { - if x != nil { - return x.Status - } - return KillStatus_KILL_STATUS_UNSPECIFIED -} - -func (x *ConfirmKillExternalSessionResponse) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -type CancelPendingKillRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` - PidIdentity *PIDIdentity `protobuf:"bytes,2,opt,name=pid_identity,json=pidIdentity,proto3" json:"pid_identity,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CancelPendingKillRequest) Reset() { - *x = CancelPendingKillRequest{} - mi := &file_session_v1_import_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CancelPendingKillRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CancelPendingKillRequest) ProtoMessage() {} - -func (x *CancelPendingKillRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_import_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CancelPendingKillRequest.ProtoReflect.Descriptor instead. -func (*CancelPendingKillRequest) Descriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{10} -} - -func (x *CancelPendingKillRequest) GetInstanceId() string { - if x != nil { - return x.InstanceId - } - return "" -} - -func (x *CancelPendingKillRequest) GetPidIdentity() *PIDIdentity { - if x != nil { - return x.PidIdentity - } - return nil -} - -type CancelPendingKillResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // resumed is true only if the compensating delete of instance_id - // succeeded AND the original process was SIGCONT'd. If the compensating - // delete fails, resumed is false and the original process is left - // SIGSTOP'd -- ResumeOriginalProcess is never called in that case. - Resumed bool `protobuf:"varint,1,opt,name=resumed,proto3" json:"resumed,omitempty"` - Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CancelPendingKillResponse) Reset() { - *x = CancelPendingKillResponse{} - mi := &file_session_v1_import_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CancelPendingKillResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CancelPendingKillResponse) ProtoMessage() {} - -func (x *CancelPendingKillResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_import_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CancelPendingKillResponse.ProtoReflect.Descriptor instead. -func (*CancelPendingKillResponse) Descriptor() ([]byte, []int) { - return file_session_v1_import_proto_rawDescGZIP(), []int{11} -} - -func (x *CancelPendingKillResponse) GetResumed() bool { - if x != nil { - return x.Resumed - } - return false -} - -func (x *CancelPendingKillResponse) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -var File_session_v1_import_proto protoreflect.FileDescriptor - -const file_session_v1_import_proto_rawDesc = "" + - "\n" + - "\x17session/v1/import.proto\x12\n" + - "session.v1\"E\n" + - "\vPIDIdentity\x12\x10\n" + - "\x03pid\x18\x01 \x01(\x05R\x03pid\x12$\n" + - "\x0ecreate_time_ms\x18\x02 \x01(\x03R\fcreateTimeMs\"\xe0\x01\n" + - "\x1bExternalSessionCandidateRef\x12=\n" + - "\vsource_kind\x18\x01 \x01(\x0e2\x1c.session.v1.ImportSourceKindR\n" + - "sourceKind\x12\x12\n" + - "\x04path\x18\x02 \x01(\tR\x04path\x12\x18\n" + - "\aprogram\x18\x03 \x01(\tR\aprogram\x12\x10\n" + - "\x03pid\x18\x04 \x01(\x05R\x03pid\x12!\n" + - "\ftmux_session\x18\x05 \x01(\tR\vtmuxSession\x12\x1f\n" + - "\vsocket_path\x18\x06 \x01(\tR\n" + - "socketPath\"\x90\x01\n" + - "\x14HistoryFileCandidate\x12+\n" + - "\x11conversation_uuid\x18\x01 \x01(\tR\x10conversationUuid\x12*\n" + - "\x11history_file_path\x18\x02 \x01(\tR\x0fhistoryFilePath\x12\x1f\n" + - "\vproject_dir\x18\x03 \x01(\tR\n" + - "projectDir\"\xe2\x01\n" + - "\x16CorrelationResultProto\x12/\n" + - "\x04kind\x18\x01 \x01(\x0e2\x1b.session.v1.CorrelationKindR\x04kind\x12\x12\n" + - "\x04uuid\x18\x02 \x01(\tR\x04uuid\x12A\n" + - "\n" + - "confidence\x18\x03 \x01(\x0e2!.session.v1.CorrelationConfidenceR\n" + - "confidence\x12@\n" + - "\n" + - "candidates\x18\x04 \x03(\v2 .session.v1.HistoryFileCandidateR\n" + - "candidates\"l\n" + - "#PreviewImportExternalSessionRequest\x12E\n" + - "\tcandidate\x18\x01 \x01(\v2'.session.v1.ExternalSessionCandidateRefR\tcandidate\"\xa7\x02\n" + - "$PreviewImportExternalSessionResponse\x12\x18\n" + - "\aprogram\x18\x01 \x01(\tR\aprogram\x12\x12\n" + - "\x04path\x18\x02 \x01(\tR\x04path\x12D\n" + - "\vcorrelation\x18\x03 \x01(\v2\".session.v1.CorrelationResultProtoR\vcorrelation\x12\x1d\n" + - "\n" + - "turn_count\x18\x04 \x01(\x05R\tturnCount\x120\n" + - "\x14last_message_excerpt\x18\x05 \x01(\tR\x12lastMessageExcerpt\x12:\n" + - "\fpid_identity\x18\x06 \x01(\v2\x17.session.v1.PIDIdentityR\vpidIdentity\"\xb3\x02\n" + - "\"CommitImportExternalSessionRequest\x12E\n" + - "\tcandidate\x18\x01 \x01(\v2'.session.v1.ExternalSessionCandidateRefR\tcandidate\x12U\n" + - "\x14expected_correlation\x18\x02 \x01(\v2\".session.v1.CorrelationResultProtoR\x13expectedCorrelation\x123\n" + - "\x15disambiguation_choice\x18\x03 \x01(\tR\x14disambiguationChoice\x12:\n" + - "\fpid_identity\x18\x04 \x01(\v2\x17.session.v1.PIDIdentityR\vpidIdentity\"\xca\x01\n" + - "#CommitImportExternalSessionResponse\x120\n" + - "\x06status\x18\x01 \x01(\x0e2\x18.session.v1.ImportStatusR\x06status\x12\x1f\n" + - "\vinstance_id\x18\x02 \x01(\tR\n" + - "instanceId\x12\x14\n" + - "\x05error\x18\x03 \x01(\tR\x05error\x12:\n" + - "\fpid_identity\x18\x04 \x01(\v2\x17.session.v1.PIDIdentityR\vpidIdentity\"\x80\x01\n" + - "!ConfirmKillExternalSessionRequest\x12\x1f\n" + - "\vinstance_id\x18\x01 \x01(\tR\n" + - "instanceId\x12:\n" + - "\fpid_identity\x18\x02 \x01(\v2\x17.session.v1.PIDIdentityR\vpidIdentity\"j\n" + - "\"ConfirmKillExternalSessionResponse\x12.\n" + - "\x06status\x18\x01 \x01(\x0e2\x16.session.v1.KillStatusR\x06status\x12\x14\n" + - "\x05error\x18\x02 \x01(\tR\x05error\"w\n" + - "\x18CancelPendingKillRequest\x12\x1f\n" + - "\vinstance_id\x18\x01 \x01(\tR\n" + - "instanceId\x12:\n" + - "\fpid_identity\x18\x02 \x01(\v2\x17.session.v1.PIDIdentityR\vpidIdentity\"K\n" + - "\x19CancelPendingKillResponse\x12\x18\n" + - "\aresumed\x18\x01 \x01(\bR\aresumed\x12\x14\n" + - "\x05error\x18\x02 \x01(\tR\x05error*\x80\x01\n" + - "\x10ImportSourceKind\x12\"\n" + - "\x1eIMPORT_SOURCE_KIND_UNSPECIFIED\x10\x00\x12%\n" + - "!IMPORT_SOURCE_KIND_MUX_DISCOVERED\x10\x01\x12!\n" + - "\x1dIMPORT_SOURCE_KIND_PLAIN_TMUX\x10\x02*\x92\x01\n" + - "\x0fCorrelationKind\x12 \n" + - "\x1cCORRELATION_KIND_UNSPECIFIED\x10\x00\x12\x1e\n" + - "\x1aCORRELATION_KIND_NOT_FOUND\x10\x01\x12\x1d\n" + - "\x19CORRELATION_KIND_RESOLVED\x10\x02\x12\x1e\n" + - "\x1aCORRELATION_KIND_AMBIGUOUS\x10\x03*\xb1\x01\n" + - "\x15CorrelationConfidence\x12&\n" + - "\"CORRELATION_CONFIDENCE_UNSPECIFIED\x10\x00\x12\x1f\n" + - "\x1bCORRELATION_CONFIDENCE_NONE\x10\x01\x12$\n" + - " CORRELATION_CONFIDENCE_PID_EXACT\x10\x02\x12)\n" + - "%CORRELATION_CONFIDENCE_PATH_HEURISTIC\x10\x03*d\n" + - "\fImportStatus\x12\x1d\n" + - "\x19IMPORT_STATUS_UNSPECIFIED\x10\x00\x12\x1b\n" + - "\x17IMPORT_STATUS_COMMITTED\x10\x01\x12\x18\n" + - "\x14IMPORT_STATUS_FAILED\x10\x02*w\n" + - "\n" + - "KillStatus\x12\x1b\n" + - "\x17KILL_STATUS_UNSPECIFIED\x10\x00\x12\x16\n" + - "\x12KILL_STATUS_KILLED\x10\x01\x12\x1c\n" + - "\x18KILL_STATUS_ALREADY_GONE\x10\x02\x12\x16\n" + - "\x12KILL_STATUS_FAILED\x10\x032\xfb\x03\n" + - "\rImportService\x12\x83\x01\n" + - "\x1cPreviewImportExternalSession\x12/.session.v1.PreviewImportExternalSessionRequest\x1a0.session.v1.PreviewImportExternalSessionResponse\"\x00\x12\x80\x01\n" + - "\x1bCommitImportExternalSession\x12..session.v1.CommitImportExternalSessionRequest\x1a/.session.v1.CommitImportExternalSessionResponse\"\x00\x12}\n" + - "\x1aConfirmKillExternalSession\x12-.session.v1.ConfirmKillExternalSessionRequest\x1a..session.v1.ConfirmKillExternalSessionResponse\"\x00\x12b\n" + - "\x11CancelPendingKill\x12$.session.v1.CancelPendingKillRequest\x1a%.session.v1.CancelPendingKillResponse\"\x00B\xab\x01\n" + - "\x0ecom.session.v1B\vImportProtoP\x01ZCgithub.com/tstapler/stapler-squad/gen/proto/go/session/v1;sessionv1\xa2\x02\x03SXX\xaa\x02\n" + - "Session.V1\xca\x02\n" + - "Session\\V1\xe2\x02\x16Session\\V1\\GPBMetadata\xea\x02\vSession::V1b\x06proto3" - -var ( - file_session_v1_import_proto_rawDescOnce sync.Once - file_session_v1_import_proto_rawDescData []byte -) - -func file_session_v1_import_proto_rawDescGZIP() []byte { - file_session_v1_import_proto_rawDescOnce.Do(func() { - file_session_v1_import_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_session_v1_import_proto_rawDesc), len(file_session_v1_import_proto_rawDesc))) - }) - return file_session_v1_import_proto_rawDescData -} - -var file_session_v1_import_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_session_v1_import_proto_msgTypes = make([]protoimpl.MessageInfo, 12) -var file_session_v1_import_proto_goTypes = []any{ - (ImportSourceKind)(0), // 0: session.v1.ImportSourceKind - (CorrelationKind)(0), // 1: session.v1.CorrelationKind - (CorrelationConfidence)(0), // 2: session.v1.CorrelationConfidence - (ImportStatus)(0), // 3: session.v1.ImportStatus - (KillStatus)(0), // 4: session.v1.KillStatus - (*PIDIdentity)(nil), // 5: session.v1.PIDIdentity - (*ExternalSessionCandidateRef)(nil), // 6: session.v1.ExternalSessionCandidateRef - (*HistoryFileCandidate)(nil), // 7: session.v1.HistoryFileCandidate - (*CorrelationResultProto)(nil), // 8: session.v1.CorrelationResultProto - (*PreviewImportExternalSessionRequest)(nil), // 9: session.v1.PreviewImportExternalSessionRequest - (*PreviewImportExternalSessionResponse)(nil), // 10: session.v1.PreviewImportExternalSessionResponse - (*CommitImportExternalSessionRequest)(nil), // 11: session.v1.CommitImportExternalSessionRequest - (*CommitImportExternalSessionResponse)(nil), // 12: session.v1.CommitImportExternalSessionResponse - (*ConfirmKillExternalSessionRequest)(nil), // 13: session.v1.ConfirmKillExternalSessionRequest - (*ConfirmKillExternalSessionResponse)(nil), // 14: session.v1.ConfirmKillExternalSessionResponse - (*CancelPendingKillRequest)(nil), // 15: session.v1.CancelPendingKillRequest - (*CancelPendingKillResponse)(nil), // 16: session.v1.CancelPendingKillResponse -} -var file_session_v1_import_proto_depIdxs = []int32{ - 0, // 0: session.v1.ExternalSessionCandidateRef.source_kind:type_name -> session.v1.ImportSourceKind - 1, // 1: session.v1.CorrelationResultProto.kind:type_name -> session.v1.CorrelationKind - 2, // 2: session.v1.CorrelationResultProto.confidence:type_name -> session.v1.CorrelationConfidence - 7, // 3: session.v1.CorrelationResultProto.candidates:type_name -> session.v1.HistoryFileCandidate - 6, // 4: session.v1.PreviewImportExternalSessionRequest.candidate:type_name -> session.v1.ExternalSessionCandidateRef - 8, // 5: session.v1.PreviewImportExternalSessionResponse.correlation:type_name -> session.v1.CorrelationResultProto - 5, // 6: session.v1.PreviewImportExternalSessionResponse.pid_identity:type_name -> session.v1.PIDIdentity - 6, // 7: session.v1.CommitImportExternalSessionRequest.candidate:type_name -> session.v1.ExternalSessionCandidateRef - 8, // 8: session.v1.CommitImportExternalSessionRequest.expected_correlation:type_name -> session.v1.CorrelationResultProto - 5, // 9: session.v1.CommitImportExternalSessionRequest.pid_identity:type_name -> session.v1.PIDIdentity - 3, // 10: session.v1.CommitImportExternalSessionResponse.status:type_name -> session.v1.ImportStatus - 5, // 11: session.v1.CommitImportExternalSessionResponse.pid_identity:type_name -> session.v1.PIDIdentity - 5, // 12: session.v1.ConfirmKillExternalSessionRequest.pid_identity:type_name -> session.v1.PIDIdentity - 4, // 13: session.v1.ConfirmKillExternalSessionResponse.status:type_name -> session.v1.KillStatus - 5, // 14: session.v1.CancelPendingKillRequest.pid_identity:type_name -> session.v1.PIDIdentity - 9, // 15: session.v1.ImportService.PreviewImportExternalSession:input_type -> session.v1.PreviewImportExternalSessionRequest - 11, // 16: session.v1.ImportService.CommitImportExternalSession:input_type -> session.v1.CommitImportExternalSessionRequest - 13, // 17: session.v1.ImportService.ConfirmKillExternalSession:input_type -> session.v1.ConfirmKillExternalSessionRequest - 15, // 18: session.v1.ImportService.CancelPendingKill:input_type -> session.v1.CancelPendingKillRequest - 10, // 19: session.v1.ImportService.PreviewImportExternalSession:output_type -> session.v1.PreviewImportExternalSessionResponse - 12, // 20: session.v1.ImportService.CommitImportExternalSession:output_type -> session.v1.CommitImportExternalSessionResponse - 14, // 21: session.v1.ImportService.ConfirmKillExternalSession:output_type -> session.v1.ConfirmKillExternalSessionResponse - 16, // 22: session.v1.ImportService.CancelPendingKill:output_type -> session.v1.CancelPendingKillResponse - 19, // [19:23] is the sub-list for method output_type - 15, // [15:19] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name -} - -func init() { file_session_v1_import_proto_init() } -func file_session_v1_import_proto_init() { - if File_session_v1_import_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_session_v1_import_proto_rawDesc), len(file_session_v1_import_proto_rawDesc)), - NumEnums: 5, - NumMessages: 12, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_session_v1_import_proto_goTypes, - DependencyIndexes: file_session_v1_import_proto_depIdxs, - EnumInfos: file_session_v1_import_proto_enumTypes, - MessageInfos: file_session_v1_import_proto_msgTypes, - }.Build() - File_session_v1_import_proto = out.File - file_session_v1_import_proto_goTypes = nil - file_session_v1_import_proto_depIdxs = nil -} diff --git a/gen/proto/go/session/v1/insights.pb.go b/gen/proto/go/session/v1/insights.pb.go deleted file mode 100644 index c46acbb92..000000000 --- a/gen/proto/go/session/v1/insights.pb.go +++ /dev/null @@ -1,1426 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.12 -// protoc (unknown) -// source: session/v1/insights.proto - -package sessionv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// SessionTokenSummary is the per-session aggregated token record. -type SessionTokenSummary struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // stapler-squad session ID (may be empty for orphans) - ConversationId string `protobuf:"bytes,2,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` // JSONL conversation UUID - ProjectPath string `protobuf:"bytes,3,opt,name=project_path,json=projectPath,proto3" json:"project_path,omitempty"` - PrimaryModel string `protobuf:"bytes,4,opt,name=primary_model,json=primaryModel,proto3" json:"primary_model,omitempty"` - TotalInputTokens int64 `protobuf:"varint,5,opt,name=total_input_tokens,json=totalInputTokens,proto3" json:"total_input_tokens,omitempty"` - TotalOutputTokens int64 `protobuf:"varint,6,opt,name=total_output_tokens,json=totalOutputTokens,proto3" json:"total_output_tokens,omitempty"` - CacheCreationTokens int64 `protobuf:"varint,7,opt,name=cache_creation_tokens,json=cacheCreationTokens,proto3" json:"cache_creation_tokens,omitempty"` - CacheReadTokens int64 `protobuf:"varint,8,opt,name=cache_read_tokens,json=cacheReadTokens,proto3" json:"cache_read_tokens,omitempty"` - EstimatedCostUsd float64 `protobuf:"fixed64,9,opt,name=estimated_cost_usd,json=estimatedCostUsd,proto3" json:"estimated_cost_usd,omitempty"` - CacheHitRate float64 `protobuf:"fixed64,10,opt,name=cache_hit_rate,json=cacheHitRate,proto3" json:"cache_hit_rate,omitempty"` // cache_read / (input + cache_read) - MessageCount int32 `protobuf:"varint,11,opt,name=message_count,json=messageCount,proto3" json:"message_count,omitempty"` - FirstMessageAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=first_message_at,json=firstMessageAt,proto3" json:"first_message_at,omitempty"` - LastMessageAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=last_message_at,json=lastMessageAt,proto3" json:"last_message_at,omitempty"` - IsOrphan bool `protobuf:"varint,14,opt,name=is_orphan,json=isOrphan,proto3" json:"is_orphan,omitempty"` // true = no matching stapler-squad session - SkillActivations []string `protobuf:"bytes,15,rep,name=skill_activations,json=skillActivations,proto3" json:"skill_activations,omitempty"` - TopTools []*TopToolEntry `protobuf:"bytes,16,rep,name=top_tools,json=topTools,proto3" json:"top_tools,omitempty"` - // unpriced_models lists ModelFamily values with usage but no pricing entry, for this session. - UnpricedModels []string `protobuf:"bytes,17,rep,name=unpriced_models,json=unpricedModels,proto3" json:"unpriced_models,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionTokenSummary) Reset() { - *x = SessionTokenSummary{} - mi := &file_session_v1_insights_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionTokenSummary) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionTokenSummary) ProtoMessage() {} - -func (x *SessionTokenSummary) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionTokenSummary.ProtoReflect.Descriptor instead. -func (*SessionTokenSummary) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{0} -} - -func (x *SessionTokenSummary) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *SessionTokenSummary) GetConversationId() string { - if x != nil { - return x.ConversationId - } - return "" -} - -func (x *SessionTokenSummary) GetProjectPath() string { - if x != nil { - return x.ProjectPath - } - return "" -} - -func (x *SessionTokenSummary) GetPrimaryModel() string { - if x != nil { - return x.PrimaryModel - } - return "" -} - -func (x *SessionTokenSummary) GetTotalInputTokens() int64 { - if x != nil { - return x.TotalInputTokens - } - return 0 -} - -func (x *SessionTokenSummary) GetTotalOutputTokens() int64 { - if x != nil { - return x.TotalOutputTokens - } - return 0 -} - -func (x *SessionTokenSummary) GetCacheCreationTokens() int64 { - if x != nil { - return x.CacheCreationTokens - } - return 0 -} - -func (x *SessionTokenSummary) GetCacheReadTokens() int64 { - if x != nil { - return x.CacheReadTokens - } - return 0 -} - -func (x *SessionTokenSummary) GetEstimatedCostUsd() float64 { - if x != nil { - return x.EstimatedCostUsd - } - return 0 -} - -func (x *SessionTokenSummary) GetCacheHitRate() float64 { - if x != nil { - return x.CacheHitRate - } - return 0 -} - -func (x *SessionTokenSummary) GetMessageCount() int32 { - if x != nil { - return x.MessageCount - } - return 0 -} - -func (x *SessionTokenSummary) GetFirstMessageAt() *timestamppb.Timestamp { - if x != nil { - return x.FirstMessageAt - } - return nil -} - -func (x *SessionTokenSummary) GetLastMessageAt() *timestamppb.Timestamp { - if x != nil { - return x.LastMessageAt - } - return nil -} - -func (x *SessionTokenSummary) GetIsOrphan() bool { - if x != nil { - return x.IsOrphan - } - return false -} - -func (x *SessionTokenSummary) GetSkillActivations() []string { - if x != nil { - return x.SkillActivations - } - return nil -} - -func (x *SessionTokenSummary) GetTopTools() []*TopToolEntry { - if x != nil { - return x.TopTools - } - return nil -} - -func (x *SessionTokenSummary) GetUnpricedModels() []string { - if x != nil { - return x.UnpricedModels - } - return nil -} - -// TopToolEntry records a tool name and its call count in a session. -type TopToolEntry struct { - state protoimpl.MessageState `protogen:"open.v1"` - ToolName string `protobuf:"bytes,1,opt,name=tool_name,json=toolName,proto3" json:"tool_name,omitempty"` - CallCount int32 `protobuf:"varint,2,opt,name=call_count,json=callCount,proto3" json:"call_count,omitempty"` - McpServer string `protobuf:"bytes,3,opt,name=mcp_server,json=mcpServer,proto3" json:"mcp_server,omitempty"` // non-empty for mcp____ - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TopToolEntry) Reset() { - *x = TopToolEntry{} - mi := &file_session_v1_insights_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TopToolEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TopToolEntry) ProtoMessage() {} - -func (x *TopToolEntry) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TopToolEntry.ProtoReflect.Descriptor instead. -func (*TopToolEntry) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{1} -} - -func (x *TopToolEntry) GetToolName() string { - if x != nil { - return x.ToolName - } - return "" -} - -func (x *TopToolEntry) GetCallCount() int32 { - if x != nil { - return x.CallCount - } - return 0 -} - -func (x *TopToolEntry) GetMcpServer() string { - if x != nil { - return x.McpServer - } - return "" -} - -// DailyTokenBucket aggregates token usage for one calendar day. -type DailyTokenBucket struct { - state protoimpl.MessageState `protogen:"open.v1"` - Date *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=date,proto3" json:"date,omitempty"` - TotalInputTokens int64 `protobuf:"varint,2,opt,name=total_input_tokens,json=totalInputTokens,proto3" json:"total_input_tokens,omitempty"` - TotalOutputTokens int64 `protobuf:"varint,3,opt,name=total_output_tokens,json=totalOutputTokens,proto3" json:"total_output_tokens,omitempty"` - CacheReadTokens int64 `protobuf:"varint,4,opt,name=cache_read_tokens,json=cacheReadTokens,proto3" json:"cache_read_tokens,omitempty"` - EstimatedCostUsd float64 `protobuf:"fixed64,5,opt,name=estimated_cost_usd,json=estimatedCostUsd,proto3" json:"estimated_cost_usd,omitempty"` - SessionCount int32 `protobuf:"varint,6,opt,name=session_count,json=sessionCount,proto3" json:"session_count,omitempty"` - // cost_by_model maps normalized model family (e.g. "claude-sonnet-4") to USD cost for that day. - CostByModel map[string]float64 `protobuf:"bytes,7,rep,name=cost_by_model,json=costByModel,proto3" json:"cost_by_model,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"` - // tokens_by_model maps normalized model family to total token count (input+output) for that day. - TokensByModel map[string]int64 `protobuf:"bytes,8,rep,name=tokens_by_model,json=tokensByModel,proto3" json:"tokens_by_model,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - // unpriced_models is the union of unpriced ModelFamily values across sessions rolled into this day. - UnpricedModels []string `protobuf:"bytes,9,rep,name=unpriced_models,json=unpricedModels,proto3" json:"unpriced_models,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DailyTokenBucket) Reset() { - *x = DailyTokenBucket{} - mi := &file_session_v1_insights_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DailyTokenBucket) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DailyTokenBucket) ProtoMessage() {} - -func (x *DailyTokenBucket) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DailyTokenBucket.ProtoReflect.Descriptor instead. -func (*DailyTokenBucket) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{2} -} - -func (x *DailyTokenBucket) GetDate() *timestamppb.Timestamp { - if x != nil { - return x.Date - } - return nil -} - -func (x *DailyTokenBucket) GetTotalInputTokens() int64 { - if x != nil { - return x.TotalInputTokens - } - return 0 -} - -func (x *DailyTokenBucket) GetTotalOutputTokens() int64 { - if x != nil { - return x.TotalOutputTokens - } - return 0 -} - -func (x *DailyTokenBucket) GetCacheReadTokens() int64 { - if x != nil { - return x.CacheReadTokens - } - return 0 -} - -func (x *DailyTokenBucket) GetEstimatedCostUsd() float64 { - if x != nil { - return x.EstimatedCostUsd - } - return 0 -} - -func (x *DailyTokenBucket) GetSessionCount() int32 { - if x != nil { - return x.SessionCount - } - return 0 -} - -func (x *DailyTokenBucket) GetCostByModel() map[string]float64 { - if x != nil { - return x.CostByModel - } - return nil -} - -func (x *DailyTokenBucket) GetTokensByModel() map[string]int64 { - if x != nil { - return x.TokensByModel - } - return nil -} - -func (x *DailyTokenBucket) GetUnpricedModels() []string { - if x != nil { - return x.UnpricedModels - } - return nil -} - -// ModelBreakdown aggregates token usage by model family. -type ModelBreakdown struct { - state protoimpl.MessageState `protogen:"open.v1"` - ModelFamily string `protobuf:"bytes,1,opt,name=model_family,json=modelFamily,proto3" json:"model_family,omitempty"` // normalized, e.g. "claude-sonnet-4" - TotalInputTokens int64 `protobuf:"varint,2,opt,name=total_input_tokens,json=totalInputTokens,proto3" json:"total_input_tokens,omitempty"` - TotalOutputTokens int64 `protobuf:"varint,3,opt,name=total_output_tokens,json=totalOutputTokens,proto3" json:"total_output_tokens,omitempty"` - CacheReadTokens int64 `protobuf:"varint,4,opt,name=cache_read_tokens,json=cacheReadTokens,proto3" json:"cache_read_tokens,omitempty"` - EstimatedCostUsd float64 `protobuf:"fixed64,5,opt,name=estimated_cost_usd,json=estimatedCostUsd,proto3" json:"estimated_cost_usd,omitempty"` - SessionCount int32 `protobuf:"varint,6,opt,name=session_count,json=sessionCount,proto3" json:"session_count,omitempty"` - // pricing_unavailable is true when total_input_tokens/total_output_tokens > 0 but no - // PricingTable entry exists for model_family. - PricingUnavailable bool `protobuf:"varint,7,opt,name=pricing_unavailable,json=pricingUnavailable,proto3" json:"pricing_unavailable,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ModelBreakdown) Reset() { - *x = ModelBreakdown{} - mi := &file_session_v1_insights_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ModelBreakdown) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ModelBreakdown) ProtoMessage() {} - -func (x *ModelBreakdown) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ModelBreakdown.ProtoReflect.Descriptor instead. -func (*ModelBreakdown) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{3} -} - -func (x *ModelBreakdown) GetModelFamily() string { - if x != nil { - return x.ModelFamily - } - return "" -} - -func (x *ModelBreakdown) GetTotalInputTokens() int64 { - if x != nil { - return x.TotalInputTokens - } - return 0 -} - -func (x *ModelBreakdown) GetTotalOutputTokens() int64 { - if x != nil { - return x.TotalOutputTokens - } - return 0 -} - -func (x *ModelBreakdown) GetCacheReadTokens() int64 { - if x != nil { - return x.CacheReadTokens - } - return 0 -} - -func (x *ModelBreakdown) GetEstimatedCostUsd() float64 { - if x != nil { - return x.EstimatedCostUsd - } - return 0 -} - -func (x *ModelBreakdown) GetSessionCount() int32 { - if x != nil { - return x.SessionCount - } - return 0 -} - -func (x *ModelBreakdown) GetPricingUnavailable() bool { - if x != nil { - return x.PricingUnavailable - } - return false -} - -// TopEntry is a generic name/value pair for top-N tables. -type TopEntry struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - TokenCount int64 `protobuf:"varint,2,opt,name=token_count,json=tokenCount,proto3" json:"token_count,omitempty"` - ActivationCount int32 `protobuf:"varint,3,opt,name=activation_count,json=activationCount,proto3" json:"activation_count,omitempty"` - CostUsd float64 `protobuf:"fixed64,4,opt,name=cost_usd,json=costUsd,proto3" json:"cost_usd,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TopEntry) Reset() { - *x = TopEntry{} - mi := &file_session_v1_insights_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TopEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TopEntry) ProtoMessage() {} - -func (x *TopEntry) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TopEntry.ProtoReflect.Descriptor instead. -func (*TopEntry) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{4} -} - -func (x *TopEntry) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *TopEntry) GetTokenCount() int64 { - if x != nil { - return x.TokenCount - } - return 0 -} - -func (x *TopEntry) GetActivationCount() int32 { - if x != nil { - return x.ActivationCount - } - return 0 -} - -func (x *TopEntry) GetCostUsd() float64 { - if x != nil { - return x.CostUsd - } - return 0 -} - -// GetInsightsSummaryRequest filters the summary response. -type GetInsightsSummaryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - From *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - To *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` - ModelFilter *string `protobuf:"bytes,3,opt,name=model_filter,json=modelFilter,proto3,oneof" json:"model_filter,omitempty"` - SessionIdFilter *string `protobuf:"bytes,4,opt,name=session_id_filter,json=sessionIdFilter,proto3,oneof" json:"session_id_filter,omitempty"` - IncludeOrphans bool `protobuf:"varint,5,opt,name=include_orphans,json=includeOrphans,proto3" json:"include_orphans,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetInsightsSummaryRequest) Reset() { - *x = GetInsightsSummaryRequest{} - mi := &file_session_v1_insights_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetInsightsSummaryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetInsightsSummaryRequest) ProtoMessage() {} - -func (x *GetInsightsSummaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetInsightsSummaryRequest.ProtoReflect.Descriptor instead. -func (*GetInsightsSummaryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{5} -} - -func (x *GetInsightsSummaryRequest) GetFrom() *timestamppb.Timestamp { - if x != nil { - return x.From - } - return nil -} - -func (x *GetInsightsSummaryRequest) GetTo() *timestamppb.Timestamp { - if x != nil { - return x.To - } - return nil -} - -func (x *GetInsightsSummaryRequest) GetModelFilter() string { - if x != nil && x.ModelFilter != nil { - return *x.ModelFilter - } - return "" -} - -func (x *GetInsightsSummaryRequest) GetSessionIdFilter() string { - if x != nil && x.SessionIdFilter != nil { - return *x.SessionIdFilter - } - return "" -} - -func (x *GetInsightsSummaryRequest) GetIncludeOrphans() bool { - if x != nil { - return x.IncludeOrphans - } - return false -} - -// GetInsightsSummaryResponse returns the full dashboard dataset. -type GetInsightsSummaryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Sessions []*SessionTokenSummary `protobuf:"bytes,1,rep,name=sessions,proto3" json:"sessions,omitempty"` - TotalCostUsd float64 `protobuf:"fixed64,2,opt,name=total_cost_usd,json=totalCostUsd,proto3" json:"total_cost_usd,omitempty"` - TotalInputTokens int64 `protobuf:"varint,3,opt,name=total_input_tokens,json=totalInputTokens,proto3" json:"total_input_tokens,omitempty"` - TotalOutputTokens int64 `protobuf:"varint,4,opt,name=total_output_tokens,json=totalOutputTokens,proto3" json:"total_output_tokens,omitempty"` - TotalCacheReadTokens int64 `protobuf:"varint,5,opt,name=total_cache_read_tokens,json=totalCacheReadTokens,proto3" json:"total_cache_read_tokens,omitempty"` - OverallCacheHitRate float64 `protobuf:"fixed64,6,opt,name=overall_cache_hit_rate,json=overallCacheHitRate,proto3" json:"overall_cache_hit_rate,omitempty"` - Daily []*DailyTokenBucket `protobuf:"bytes,7,rep,name=daily,proto3" json:"daily,omitempty"` - Models []*ModelBreakdown `protobuf:"bytes,8,rep,name=models,proto3" json:"models,omitempty"` - TopSkills []*TopEntry `protobuf:"bytes,9,rep,name=top_skills,json=topSkills,proto3" json:"top_skills,omitempty"` - TopTools []*TopEntry `protobuf:"bytes,10,rep,name=top_tools,json=topTools,proto3" json:"top_tools,omitempty"` - IsLoading bool `protobuf:"varint,11,opt,name=is_loading,json=isLoading,proto3" json:"is_loading,omitempty"` // true = background parse still in progress - PricingAsOf *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=pricing_as_of,json=pricingAsOf,proto3" json:"pricing_as_of,omitempty"` - // unpriced_models is the aggregate union across all sessions in this response, for a dashboard-level banner. - UnpricedModels []string `protobuf:"bytes,13,rep,name=unpriced_models,json=unpricedModels,proto3" json:"unpriced_models,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetInsightsSummaryResponse) Reset() { - *x = GetInsightsSummaryResponse{} - mi := &file_session_v1_insights_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetInsightsSummaryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetInsightsSummaryResponse) ProtoMessage() {} - -func (x *GetInsightsSummaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetInsightsSummaryResponse.ProtoReflect.Descriptor instead. -func (*GetInsightsSummaryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{6} -} - -func (x *GetInsightsSummaryResponse) GetSessions() []*SessionTokenSummary { - if x != nil { - return x.Sessions - } - return nil -} - -func (x *GetInsightsSummaryResponse) GetTotalCostUsd() float64 { - if x != nil { - return x.TotalCostUsd - } - return 0 -} - -func (x *GetInsightsSummaryResponse) GetTotalInputTokens() int64 { - if x != nil { - return x.TotalInputTokens - } - return 0 -} - -func (x *GetInsightsSummaryResponse) GetTotalOutputTokens() int64 { - if x != nil { - return x.TotalOutputTokens - } - return 0 -} - -func (x *GetInsightsSummaryResponse) GetTotalCacheReadTokens() int64 { - if x != nil { - return x.TotalCacheReadTokens - } - return 0 -} - -func (x *GetInsightsSummaryResponse) GetOverallCacheHitRate() float64 { - if x != nil { - return x.OverallCacheHitRate - } - return 0 -} - -func (x *GetInsightsSummaryResponse) GetDaily() []*DailyTokenBucket { - if x != nil { - return x.Daily - } - return nil -} - -func (x *GetInsightsSummaryResponse) GetModels() []*ModelBreakdown { - if x != nil { - return x.Models - } - return nil -} - -func (x *GetInsightsSummaryResponse) GetTopSkills() []*TopEntry { - if x != nil { - return x.TopSkills - } - return nil -} - -func (x *GetInsightsSummaryResponse) GetTopTools() []*TopEntry { - if x != nil { - return x.TopTools - } - return nil -} - -func (x *GetInsightsSummaryResponse) GetIsLoading() bool { - if x != nil { - return x.IsLoading - } - return false -} - -func (x *GetInsightsSummaryResponse) GetPricingAsOf() *timestamppb.Timestamp { - if x != nil { - return x.PricingAsOf - } - return nil -} - -func (x *GetInsightsSummaryResponse) GetUnpricedModels() []string { - if x != nil { - return x.UnpricedModels - } - return nil -} - -// ListSessionTokensRequest supports paginated session listing. -type ListSessionTokensRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - From *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - To *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` - SortBy string `protobuf:"bytes,3,opt,name=sort_by,json=sortBy,proto3" json:"sort_by,omitempty"` // "cost" | "tokens" | "date" (default: "date") - SortDesc bool `protobuf:"varint,4,opt,name=sort_desc,json=sortDesc,proto3" json:"sort_desc,omitempty"` - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - PageToken string `protobuf:"bytes,6,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListSessionTokensRequest) Reset() { - *x = ListSessionTokensRequest{} - mi := &file_session_v1_insights_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListSessionTokensRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListSessionTokensRequest) ProtoMessage() {} - -func (x *ListSessionTokensRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListSessionTokensRequest.ProtoReflect.Descriptor instead. -func (*ListSessionTokensRequest) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{7} -} - -func (x *ListSessionTokensRequest) GetFrom() *timestamppb.Timestamp { - if x != nil { - return x.From - } - return nil -} - -func (x *ListSessionTokensRequest) GetTo() *timestamppb.Timestamp { - if x != nil { - return x.To - } - return nil -} - -func (x *ListSessionTokensRequest) GetSortBy() string { - if x != nil { - return x.SortBy - } - return "" -} - -func (x *ListSessionTokensRequest) GetSortDesc() bool { - if x != nil { - return x.SortDesc - } - return false -} - -func (x *ListSessionTokensRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *ListSessionTokensRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" -} - -// ListSessionTokensResponse returns paginated session summaries. -type ListSessionTokensResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Sessions []*SessionTokenSummary `protobuf:"bytes,1,rep,name=sessions,proto3" json:"sessions,omitempty"` - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListSessionTokensResponse) Reset() { - *x = ListSessionTokensResponse{} - mi := &file_session_v1_insights_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListSessionTokensResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListSessionTokensResponse) ProtoMessage() {} - -func (x *ListSessionTokensResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListSessionTokensResponse.ProtoReflect.Descriptor instead. -func (*ListSessionTokensResponse) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{8} -} - -func (x *ListSessionTokensResponse) GetSessions() []*SessionTokenSummary { - if x != nil { - return x.Sessions - } - return nil -} - -func (x *ListSessionTokensResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken - } - return "" -} - -func (x *ListSessionTokensResponse) GetTotalCount() int32 { - if x != nil { - return x.TotalCount - } - return 0 -} - -// WatchInsightsRequest initiates a streaming subscription. -type WatchInsightsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - From *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - To *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *WatchInsightsRequest) Reset() { - *x = WatchInsightsRequest{} - mi := &file_session_v1_insights_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WatchInsightsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WatchInsightsRequest) ProtoMessage() {} - -func (x *WatchInsightsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WatchInsightsRequest.ProtoReflect.Descriptor instead. -func (*WatchInsightsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{9} -} - -func (x *WatchInsightsRequest) GetFrom() *timestamppb.Timestamp { - if x != nil { - return x.From - } - return nil -} - -func (x *WatchInsightsRequest) GetTo() *timestamppb.Timestamp { - if x != nil { - return x.To - } - return nil -} - -// InsightsEvent is pushed when TokenStore processes a new or updated JSONL file. -type InsightsEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - EventType string `protobuf:"bytes,1,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` // "update" | "parse_complete" - Session *SessionTokenSummary `protobuf:"bytes,2,opt,name=session,proto3,oneof" json:"session,omitempty"` - AllParsed bool `protobuf:"varint,3,opt,name=all_parsed,json=allParsed,proto3" json:"all_parsed,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *InsightsEvent) Reset() { - *x = InsightsEvent{} - mi := &file_session_v1_insights_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *InsightsEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*InsightsEvent) ProtoMessage() {} - -func (x *InsightsEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use InsightsEvent.ProtoReflect.Descriptor instead. -func (*InsightsEvent) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{10} -} - -func (x *InsightsEvent) GetEventType() string { - if x != nil { - return x.EventType - } - return "" -} - -func (x *InsightsEvent) GetSession() *SessionTokenSummary { - if x != nil { - return x.Session - } - return nil -} - -func (x *InsightsEvent) GetAllParsed() bool { - if x != nil { - return x.AllParsed - } - return false -} - -// TurnTokenStat is one assistant turn's token usage (per-turn breakdown tables). -type TurnTokenStat struct { - state protoimpl.MessageState `protogen:"open.v1"` - Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // unset if the turn has no timestamp - Model string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"` - InputTokens int64 `protobuf:"varint,3,opt,name=input_tokens,json=inputTokens,proto3" json:"input_tokens,omitempty"` - OutputTokens int64 `protobuf:"varint,4,opt,name=output_tokens,json=outputTokens,proto3" json:"output_tokens,omitempty"` - CacheCreationTokens int64 `protobuf:"varint,5,opt,name=cache_creation_tokens,json=cacheCreationTokens,proto3" json:"cache_creation_tokens,omitempty"` - CacheReadTokens int64 `protobuf:"varint,6,opt,name=cache_read_tokens,json=cacheReadTokens,proto3" json:"cache_read_tokens,omitempty"` - ToolNames []string `protobuf:"bytes,7,rep,name=tool_names,json=toolNames,proto3" json:"tool_names,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TurnTokenStat) Reset() { - *x = TurnTokenStat{} - mi := &file_session_v1_insights_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TurnTokenStat) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TurnTokenStat) ProtoMessage() {} - -func (x *TurnTokenStat) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TurnTokenStat.ProtoReflect.Descriptor instead. -func (*TurnTokenStat) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{11} -} - -func (x *TurnTokenStat) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -func (x *TurnTokenStat) GetModel() string { - if x != nil { - return x.Model - } - return "" -} - -func (x *TurnTokenStat) GetInputTokens() int64 { - if x != nil { - return x.InputTokens - } - return 0 -} - -func (x *TurnTokenStat) GetOutputTokens() int64 { - if x != nil { - return x.OutputTokens - } - return 0 -} - -func (x *TurnTokenStat) GetCacheCreationTokens() int64 { - if x != nil { - return x.CacheCreationTokens - } - return 0 -} - -func (x *TurnTokenStat) GetCacheReadTokens() int64 { - if x != nil { - return x.CacheReadTokens - } - return 0 -} - -func (x *TurnTokenStat) GetToolNames() []string { - if x != nil { - return x.ToolNames - } - return nil -} - -// GetSessionTurnTimelineRequest looks up per-turn stats for a single session, -// fetched on-demand when the session detail drawer opens. -type GetSessionTurnTimelineRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ConversationId string `protobuf:"bytes,1,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` // JSONL conversation UUID (SessionTokenSummary.conversation_id) - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionTurnTimelineRequest) Reset() { - *x = GetSessionTurnTimelineRequest{} - mi := &file_session_v1_insights_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionTurnTimelineRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionTurnTimelineRequest) ProtoMessage() {} - -func (x *GetSessionTurnTimelineRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionTurnTimelineRequest.ProtoReflect.Descriptor instead. -func (*GetSessionTurnTimelineRequest) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{12} -} - -func (x *GetSessionTurnTimelineRequest) GetConversationId() string { - if x != nil { - return x.ConversationId - } - return "" -} - -// GetSessionTurnTimelineResponse returns the per-turn breakdown for one session. -type GetSessionTurnTimelineResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Turns []*TurnTokenStat `protobuf:"bytes,1,rep,name=turns,proto3" json:"turns,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionTurnTimelineResponse) Reset() { - *x = GetSessionTurnTimelineResponse{} - mi := &file_session_v1_insights_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionTurnTimelineResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionTurnTimelineResponse) ProtoMessage() {} - -func (x *GetSessionTurnTimelineResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_insights_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionTurnTimelineResponse.ProtoReflect.Descriptor instead. -func (*GetSessionTurnTimelineResponse) Descriptor() ([]byte, []int) { - return file_session_v1_insights_proto_rawDescGZIP(), []int{13} -} - -func (x *GetSessionTurnTimelineResponse) GetTurns() []*TurnTokenStat { - if x != nil { - return x.Turns - } - return nil -} - -var File_session_v1_insights_proto protoreflect.FileDescriptor - -const file_session_v1_insights_proto_rawDesc = "" + - "\n" + - "\x19session/v1/insights.proto\x12\n" + - "session.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\x90\x06\n" + - "\x13SessionTokenSummary\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12'\n" + - "\x0fconversation_id\x18\x02 \x01(\tR\x0econversationId\x12!\n" + - "\fproject_path\x18\x03 \x01(\tR\vprojectPath\x12#\n" + - "\rprimary_model\x18\x04 \x01(\tR\fprimaryModel\x12,\n" + - "\x12total_input_tokens\x18\x05 \x01(\x03R\x10totalInputTokens\x12.\n" + - "\x13total_output_tokens\x18\x06 \x01(\x03R\x11totalOutputTokens\x122\n" + - "\x15cache_creation_tokens\x18\a \x01(\x03R\x13cacheCreationTokens\x12*\n" + - "\x11cache_read_tokens\x18\b \x01(\x03R\x0fcacheReadTokens\x12,\n" + - "\x12estimated_cost_usd\x18\t \x01(\x01R\x10estimatedCostUsd\x12$\n" + - "\x0ecache_hit_rate\x18\n" + - " \x01(\x01R\fcacheHitRate\x12#\n" + - "\rmessage_count\x18\v \x01(\x05R\fmessageCount\x12D\n" + - "\x10first_message_at\x18\f \x01(\v2\x1a.google.protobuf.TimestampR\x0efirstMessageAt\x12B\n" + - "\x0flast_message_at\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\rlastMessageAt\x12\x1b\n" + - "\tis_orphan\x18\x0e \x01(\bR\bisOrphan\x12+\n" + - "\x11skill_activations\x18\x0f \x03(\tR\x10skillActivations\x125\n" + - "\ttop_tools\x18\x10 \x03(\v2\x18.session.v1.TopToolEntryR\btopTools\x12'\n" + - "\x0funpriced_models\x18\x11 \x03(\tR\x0eunpricedModels\"i\n" + - "\fTopToolEntry\x12\x1b\n" + - "\ttool_name\x18\x01 \x01(\tR\btoolName\x12\x1d\n" + - "\n" + - "call_count\x18\x02 \x01(\x05R\tcallCount\x12\x1d\n" + - "\n" + - "mcp_server\x18\x03 \x01(\tR\tmcpServer\"\xf6\x04\n" + - "\x10DailyTokenBucket\x12.\n" + - "\x04date\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\x04date\x12,\n" + - "\x12total_input_tokens\x18\x02 \x01(\x03R\x10totalInputTokens\x12.\n" + - "\x13total_output_tokens\x18\x03 \x01(\x03R\x11totalOutputTokens\x12*\n" + - "\x11cache_read_tokens\x18\x04 \x01(\x03R\x0fcacheReadTokens\x12,\n" + - "\x12estimated_cost_usd\x18\x05 \x01(\x01R\x10estimatedCostUsd\x12#\n" + - "\rsession_count\x18\x06 \x01(\x05R\fsessionCount\x12Q\n" + - "\rcost_by_model\x18\a \x03(\v2-.session.v1.DailyTokenBucket.CostByModelEntryR\vcostByModel\x12W\n" + - "\x0ftokens_by_model\x18\b \x03(\v2/.session.v1.DailyTokenBucket.TokensByModelEntryR\rtokensByModel\x12'\n" + - "\x0funpriced_models\x18\t \x03(\tR\x0eunpricedModels\x1a>\n" + - "\x10CostByModelEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\x01R\x05value:\x028\x01\x1a@\n" + - "\x12TokensByModelEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\x03R\x05value:\x028\x01\"\xc1\x02\n" + - "\x0eModelBreakdown\x12!\n" + - "\fmodel_family\x18\x01 \x01(\tR\vmodelFamily\x12,\n" + - "\x12total_input_tokens\x18\x02 \x01(\x03R\x10totalInputTokens\x12.\n" + - "\x13total_output_tokens\x18\x03 \x01(\x03R\x11totalOutputTokens\x12*\n" + - "\x11cache_read_tokens\x18\x04 \x01(\x03R\x0fcacheReadTokens\x12,\n" + - "\x12estimated_cost_usd\x18\x05 \x01(\x01R\x10estimatedCostUsd\x12#\n" + - "\rsession_count\x18\x06 \x01(\x05R\fsessionCount\x12/\n" + - "\x13pricing_unavailable\x18\a \x01(\bR\x12pricingUnavailable\"\x85\x01\n" + - "\bTopEntry\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n" + - "\vtoken_count\x18\x02 \x01(\x03R\n" + - "tokenCount\x12)\n" + - "\x10activation_count\x18\x03 \x01(\x05R\x0factivationCount\x12\x19\n" + - "\bcost_usd\x18\x04 \x01(\x01R\acostUsd\"\xa0\x02\n" + - "\x19GetInsightsSummaryRequest\x12.\n" + - "\x04from\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\x04from\x12*\n" + - "\x02to\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x02to\x12&\n" + - "\fmodel_filter\x18\x03 \x01(\tH\x00R\vmodelFilter\x88\x01\x01\x12/\n" + - "\x11session_id_filter\x18\x04 \x01(\tH\x01R\x0fsessionIdFilter\x88\x01\x01\x12'\n" + - "\x0finclude_orphans\x18\x05 \x01(\bR\x0eincludeOrphansB\x0f\n" + - "\r_model_filterB\x14\n" + - "\x12_session_id_filter\"\xa1\x05\n" + - "\x1aGetInsightsSummaryResponse\x12;\n" + - "\bsessions\x18\x01 \x03(\v2\x1f.session.v1.SessionTokenSummaryR\bsessions\x12$\n" + - "\x0etotal_cost_usd\x18\x02 \x01(\x01R\ftotalCostUsd\x12,\n" + - "\x12total_input_tokens\x18\x03 \x01(\x03R\x10totalInputTokens\x12.\n" + - "\x13total_output_tokens\x18\x04 \x01(\x03R\x11totalOutputTokens\x125\n" + - "\x17total_cache_read_tokens\x18\x05 \x01(\x03R\x14totalCacheReadTokens\x123\n" + - "\x16overall_cache_hit_rate\x18\x06 \x01(\x01R\x13overallCacheHitRate\x122\n" + - "\x05daily\x18\a \x03(\v2\x1c.session.v1.DailyTokenBucketR\x05daily\x122\n" + - "\x06models\x18\b \x03(\v2\x1a.session.v1.ModelBreakdownR\x06models\x123\n" + - "\n" + - "top_skills\x18\t \x03(\v2\x14.session.v1.TopEntryR\ttopSkills\x121\n" + - "\ttop_tools\x18\n" + - " \x03(\v2\x14.session.v1.TopEntryR\btopTools\x12\x1d\n" + - "\n" + - "is_loading\x18\v \x01(\bR\tisLoading\x12>\n" + - "\rpricing_as_of\x18\f \x01(\v2\x1a.google.protobuf.TimestampR\vpricingAsOf\x12'\n" + - "\x0funpriced_models\x18\r \x03(\tR\x0eunpricedModels\"\xe8\x01\n" + - "\x18ListSessionTokensRequest\x12.\n" + - "\x04from\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\x04from\x12*\n" + - "\x02to\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x02to\x12\x17\n" + - "\asort_by\x18\x03 \x01(\tR\x06sortBy\x12\x1b\n" + - "\tsort_desc\x18\x04 \x01(\bR\bsortDesc\x12\x1b\n" + - "\tpage_size\x18\x05 \x01(\x05R\bpageSize\x12\x1d\n" + - "\n" + - "page_token\x18\x06 \x01(\tR\tpageToken\"\xa1\x01\n" + - "\x19ListSessionTokensResponse\x12;\n" + - "\bsessions\x18\x01 \x03(\v2\x1f.session.v1.SessionTokenSummaryR\bsessions\x12&\n" + - "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12\x1f\n" + - "\vtotal_count\x18\x03 \x01(\x05R\n" + - "totalCount\"r\n" + - "\x14WatchInsightsRequest\x12.\n" + - "\x04from\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\x04from\x12*\n" + - "\x02to\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x02to\"\x99\x01\n" + - "\rInsightsEvent\x12\x1d\n" + - "\n" + - "event_type\x18\x01 \x01(\tR\teventType\x12>\n" + - "\asession\x18\x02 \x01(\v2\x1f.session.v1.SessionTokenSummaryH\x00R\asession\x88\x01\x01\x12\x1d\n" + - "\n" + - "all_parsed\x18\x03 \x01(\bR\tallParsedB\n" + - "\n" + - "\b_session\"\xa6\x02\n" + - "\rTurnTokenStat\x128\n" + - "\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12\x14\n" + - "\x05model\x18\x02 \x01(\tR\x05model\x12!\n" + - "\finput_tokens\x18\x03 \x01(\x03R\vinputTokens\x12#\n" + - "\routput_tokens\x18\x04 \x01(\x03R\foutputTokens\x122\n" + - "\x15cache_creation_tokens\x18\x05 \x01(\x03R\x13cacheCreationTokens\x12*\n" + - "\x11cache_read_tokens\x18\x06 \x01(\x03R\x0fcacheReadTokens\x12\x1d\n" + - "\n" + - "tool_names\x18\a \x03(\tR\ttoolNames\"H\n" + - "\x1dGetSessionTurnTimelineRequest\x12'\n" + - "\x0fconversation_id\x18\x01 \x01(\tR\x0econversationId\"Q\n" + - "\x1eGetSessionTurnTimelineResponse\x12/\n" + - "\x05turns\x18\x01 \x03(\v2\x19.session.v1.TurnTokenStatR\x05turns2\xa1\x03\n" + - "\x0fInsightsService\x12e\n" + - "\x12GetInsightsSummary\x12%.session.v1.GetInsightsSummaryRequest\x1a&.session.v1.GetInsightsSummaryResponse\"\x00\x12b\n" + - "\x11ListSessionTokens\x12$.session.v1.ListSessionTokensRequest\x1a%.session.v1.ListSessionTokensResponse\"\x00\x12P\n" + - "\rWatchInsights\x12 .session.v1.WatchInsightsRequest\x1a\x19.session.v1.InsightsEvent\"\x000\x01\x12q\n" + - "\x16GetSessionTurnTimeline\x12).session.v1.GetSessionTurnTimelineRequest\x1a*.session.v1.GetSessionTurnTimelineResponse\"\x00B\xad\x01\n" + - "\x0ecom.session.v1B\rInsightsProtoP\x01ZCgithub.com/tstapler/stapler-squad/gen/proto/go/session/v1;sessionv1\xa2\x02\x03SXX\xaa\x02\n" + - "Session.V1\xca\x02\n" + - "Session\\V1\xe2\x02\x16Session\\V1\\GPBMetadata\xea\x02\vSession::V1b\x06proto3" - -var ( - file_session_v1_insights_proto_rawDescOnce sync.Once - file_session_v1_insights_proto_rawDescData []byte -) - -func file_session_v1_insights_proto_rawDescGZIP() []byte { - file_session_v1_insights_proto_rawDescOnce.Do(func() { - file_session_v1_insights_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_session_v1_insights_proto_rawDesc), len(file_session_v1_insights_proto_rawDesc))) - }) - return file_session_v1_insights_proto_rawDescData -} - -var file_session_v1_insights_proto_msgTypes = make([]protoimpl.MessageInfo, 16) -var file_session_v1_insights_proto_goTypes = []any{ - (*SessionTokenSummary)(nil), // 0: session.v1.SessionTokenSummary - (*TopToolEntry)(nil), // 1: session.v1.TopToolEntry - (*DailyTokenBucket)(nil), // 2: session.v1.DailyTokenBucket - (*ModelBreakdown)(nil), // 3: session.v1.ModelBreakdown - (*TopEntry)(nil), // 4: session.v1.TopEntry - (*GetInsightsSummaryRequest)(nil), // 5: session.v1.GetInsightsSummaryRequest - (*GetInsightsSummaryResponse)(nil), // 6: session.v1.GetInsightsSummaryResponse - (*ListSessionTokensRequest)(nil), // 7: session.v1.ListSessionTokensRequest - (*ListSessionTokensResponse)(nil), // 8: session.v1.ListSessionTokensResponse - (*WatchInsightsRequest)(nil), // 9: session.v1.WatchInsightsRequest - (*InsightsEvent)(nil), // 10: session.v1.InsightsEvent - (*TurnTokenStat)(nil), // 11: session.v1.TurnTokenStat - (*GetSessionTurnTimelineRequest)(nil), // 12: session.v1.GetSessionTurnTimelineRequest - (*GetSessionTurnTimelineResponse)(nil), // 13: session.v1.GetSessionTurnTimelineResponse - nil, // 14: session.v1.DailyTokenBucket.CostByModelEntry - nil, // 15: session.v1.DailyTokenBucket.TokensByModelEntry - (*timestamppb.Timestamp)(nil), // 16: google.protobuf.Timestamp -} -var file_session_v1_insights_proto_depIdxs = []int32{ - 16, // 0: session.v1.SessionTokenSummary.first_message_at:type_name -> google.protobuf.Timestamp - 16, // 1: session.v1.SessionTokenSummary.last_message_at:type_name -> google.protobuf.Timestamp - 1, // 2: session.v1.SessionTokenSummary.top_tools:type_name -> session.v1.TopToolEntry - 16, // 3: session.v1.DailyTokenBucket.date:type_name -> google.protobuf.Timestamp - 14, // 4: session.v1.DailyTokenBucket.cost_by_model:type_name -> session.v1.DailyTokenBucket.CostByModelEntry - 15, // 5: session.v1.DailyTokenBucket.tokens_by_model:type_name -> session.v1.DailyTokenBucket.TokensByModelEntry - 16, // 6: session.v1.GetInsightsSummaryRequest.from:type_name -> google.protobuf.Timestamp - 16, // 7: session.v1.GetInsightsSummaryRequest.to:type_name -> google.protobuf.Timestamp - 0, // 8: session.v1.GetInsightsSummaryResponse.sessions:type_name -> session.v1.SessionTokenSummary - 2, // 9: session.v1.GetInsightsSummaryResponse.daily:type_name -> session.v1.DailyTokenBucket - 3, // 10: session.v1.GetInsightsSummaryResponse.models:type_name -> session.v1.ModelBreakdown - 4, // 11: session.v1.GetInsightsSummaryResponse.top_skills:type_name -> session.v1.TopEntry - 4, // 12: session.v1.GetInsightsSummaryResponse.top_tools:type_name -> session.v1.TopEntry - 16, // 13: session.v1.GetInsightsSummaryResponse.pricing_as_of:type_name -> google.protobuf.Timestamp - 16, // 14: session.v1.ListSessionTokensRequest.from:type_name -> google.protobuf.Timestamp - 16, // 15: session.v1.ListSessionTokensRequest.to:type_name -> google.protobuf.Timestamp - 0, // 16: session.v1.ListSessionTokensResponse.sessions:type_name -> session.v1.SessionTokenSummary - 16, // 17: session.v1.WatchInsightsRequest.from:type_name -> google.protobuf.Timestamp - 16, // 18: session.v1.WatchInsightsRequest.to:type_name -> google.protobuf.Timestamp - 0, // 19: session.v1.InsightsEvent.session:type_name -> session.v1.SessionTokenSummary - 16, // 20: session.v1.TurnTokenStat.timestamp:type_name -> google.protobuf.Timestamp - 11, // 21: session.v1.GetSessionTurnTimelineResponse.turns:type_name -> session.v1.TurnTokenStat - 5, // 22: session.v1.InsightsService.GetInsightsSummary:input_type -> session.v1.GetInsightsSummaryRequest - 7, // 23: session.v1.InsightsService.ListSessionTokens:input_type -> session.v1.ListSessionTokensRequest - 9, // 24: session.v1.InsightsService.WatchInsights:input_type -> session.v1.WatchInsightsRequest - 12, // 25: session.v1.InsightsService.GetSessionTurnTimeline:input_type -> session.v1.GetSessionTurnTimelineRequest - 6, // 26: session.v1.InsightsService.GetInsightsSummary:output_type -> session.v1.GetInsightsSummaryResponse - 8, // 27: session.v1.InsightsService.ListSessionTokens:output_type -> session.v1.ListSessionTokensResponse - 10, // 28: session.v1.InsightsService.WatchInsights:output_type -> session.v1.InsightsEvent - 13, // 29: session.v1.InsightsService.GetSessionTurnTimeline:output_type -> session.v1.GetSessionTurnTimelineResponse - 26, // [26:30] is the sub-list for method output_type - 22, // [22:26] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 22, // [22:22] is the sub-list for extension extendee - 0, // [0:22] is the sub-list for field type_name -} - -func init() { file_session_v1_insights_proto_init() } -func file_session_v1_insights_proto_init() { - if File_session_v1_insights_proto != nil { - return - } - file_session_v1_insights_proto_msgTypes[5].OneofWrappers = []any{} - file_session_v1_insights_proto_msgTypes[10].OneofWrappers = []any{} - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_session_v1_insights_proto_rawDesc), len(file_session_v1_insights_proto_rawDesc)), - NumEnums: 0, - NumMessages: 16, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_session_v1_insights_proto_goTypes, - DependencyIndexes: file_session_v1_insights_proto_depIdxs, - MessageInfos: file_session_v1_insights_proto_msgTypes, - }.Build() - File_session_v1_insights_proto = out.File - file_session_v1_insights_proto_goTypes = nil - file_session_v1_insights_proto_depIdxs = nil -} diff --git a/gen/proto/go/session/v1/session.pb.go b/gen/proto/go/session/v1/session.pb.go deleted file mode 100644 index 65422e385..000000000 --- a/gen/proto/go/session/v1/session.pb.go +++ /dev/null @@ -1,17804 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.12 -// protoc (unknown) -// source: session/v1/session.proto - -package sessionv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// ListSessionsRequest allows filtering sessions by various criteria. -type ListSessionsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Filter by session status (e.g., RUNNING, PAUSED). - Status *SessionStatus `protobuf:"varint,1,opt,name=status,proto3,enum=session.v1.SessionStatus,oneof" json:"status,omitempty"` - // Filter by category name. - Category *string `protobuf:"bytes,2,opt,name=category,proto3,oneof" json:"category,omitempty"` - // Hide paused sessions from results. - HidePaused bool `protobuf:"varint,3,opt,name=hide_paused,json=hidePaused,proto3" json:"hide_paused,omitempty"` - // Search query for fuzzy matching across title, path, branch. - SearchQuery *string `protobuf:"bytes,4,opt,name=search_query,json=searchQuery,proto3,oneof" json:"search_query,omitempty"` - // Filter by project ID (only return sessions in this project). - ProjectId *string `protobuf:"bytes,5,opt,name=project_id,json=projectId,proto3,oneof" json:"project_id,omitempty"` - // When true, include hidden (system/background) sessions in results. - // Defaults to false — hidden sessions are excluded unless explicitly requested. - IncludeHidden bool `protobuf:"varint,6,opt,name=include_hidden,json=includeHidden,proto3" json:"include_hidden,omitempty"` - // Filter by the workflow that created the session. - WorkflowId *string `protobuf:"bytes,7,opt,name=workflow_id,json=workflowId,proto3,oneof" json:"workflow_id,omitempty"` - // When true, include archived sessions in results. - // Defaults to false — archived sessions are excluded unless explicitly requested. - IncludeArchived bool `protobuf:"varint,8,opt,name=include_archived,json=includeArchived,proto3" json:"include_archived,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListSessionsRequest) Reset() { - *x = ListSessionsRequest{} - mi := &file_session_v1_session_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListSessionsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListSessionsRequest) ProtoMessage() {} - -func (x *ListSessionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListSessionsRequest.ProtoReflect.Descriptor instead. -func (*ListSessionsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{0} -} - -func (x *ListSessionsRequest) GetStatus() SessionStatus { - if x != nil && x.Status != nil { - return *x.Status - } - return SessionStatus_SESSION_STATUS_UNSPECIFIED -} - -func (x *ListSessionsRequest) GetCategory() string { - if x != nil && x.Category != nil { - return *x.Category - } - return "" -} - -func (x *ListSessionsRequest) GetHidePaused() bool { - if x != nil { - return x.HidePaused - } - return false -} - -func (x *ListSessionsRequest) GetSearchQuery() string { - if x != nil && x.SearchQuery != nil { - return *x.SearchQuery - } - return "" -} - -func (x *ListSessionsRequest) GetProjectId() string { - if x != nil && x.ProjectId != nil { - return *x.ProjectId - } - return "" -} - -func (x *ListSessionsRequest) GetIncludeHidden() bool { - if x != nil { - return x.IncludeHidden - } - return false -} - -func (x *ListSessionsRequest) GetWorkflowId() string { - if x != nil && x.WorkflowId != nil { - return *x.WorkflowId - } - return "" -} - -func (x *ListSessionsRequest) GetIncludeArchived() bool { - if x != nil { - return x.IncludeArchived - } - return false -} - -type ListSessionsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Sessions []*Session `protobuf:"bytes,1,rep,name=sessions,proto3" json:"sessions,omitempty"` - // System-wide memory usage percentage (0–100). Populated by the server on each response. - // Zero when measurement is unavailable (e.g., macOS without /proc). - SystemMemoryPct float32 `protobuf:"fixed32,2,opt,name=system_memory_pct,json=systemMemoryPct,proto3" json:"system_memory_pct,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListSessionsResponse) Reset() { - *x = ListSessionsResponse{} - mi := &file_session_v1_session_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListSessionsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListSessionsResponse) ProtoMessage() {} - -func (x *ListSessionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListSessionsResponse.ProtoReflect.Descriptor instead. -func (*ListSessionsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{1} -} - -func (x *ListSessionsResponse) GetSessions() []*Session { - if x != nil { - return x.Sessions - } - return nil -} - -func (x *ListSessionsResponse) GetSystemMemoryPct() float32 { - if x != nil { - return x.SystemMemoryPct - } - return 0 -} - -type GetSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier (uses session title as ID). - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionRequest) Reset() { - *x = GetSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionRequest) ProtoMessage() {} - -func (x *GetSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionRequest.ProtoReflect.Descriptor instead. -func (*GetSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{2} -} - -func (x *GetSessionRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type GetSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionResponse) Reset() { - *x = GetSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionResponse) ProtoMessage() {} - -func (x *GetSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionResponse.ProtoReflect.Descriptor instead. -func (*GetSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{3} -} - -func (x *GetSessionResponse) GetSession() *Session { - if x != nil { - return x.Session - } - return nil -} - -type CreateSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Required: Human-readable session title. - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - // Required: Path to workspace repository root. - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - // Optional: Directory within repository to start in. - WorkingDir string `protobuf:"bytes,3,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` - // Optional: Git branch name (creates new branch if doesn't exist). - Branch string `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` - // Optional: Program to run (default: "claude"). - Program string `protobuf:"bytes,5,opt,name=program,proto3" json:"program,omitempty"` - // Optional: Category for organization. - Category string `protobuf:"bytes,6,opt,name=category,proto3" json:"category,omitempty"` - // Optional: prompt passed as a CLI argument at process-spawn time (fresh spawns / one-shot - // only). See initial_prompt for the tmux-typed alternative used for resume/attach flows — - // the two are independent and may both be set on the same request. - Prompt string `protobuf:"bytes,7,opt,name=prompt,proto3" json:"prompt,omitempty"` - // Optional: Auto-approve prompts without user interaction. - AutoYes bool `protobuf:"varint,8,opt,name=auto_yes,json=autoYes,proto3" json:"auto_yes,omitempty"` - // Optional: Reuse existing worktree at this path. - ExistingWorktree string `protobuf:"bytes,9,opt,name=existing_worktree,json=existingWorktree,proto3" json:"existing_worktree,omitempty"` - // Optional: Resume an existing Claude conversation by ID. - // This ID comes from ClaudeHistoryEntry.id and will use Claude's --resume flag. - ResumeId string `protobuf:"bytes,10,opt,name=resume_id,json=resumeId,proto3" json:"resume_id,omitempty"` - // Optional: Apply a named profile's defaults before creation. - Profile string `protobuf:"bytes,11,opt,name=profile,proto3" json:"profile,omitempty"` - // Optional: Skip all session defaults (explicit override — form values used as-is). - SkipDefaults bool `protobuf:"varint,12,opt,name=skip_defaults,json=skipDefaults,proto3" json:"skip_defaults,omitempty"` - // Optional: Session type (directory, new_worktree, existing_worktree). - // If not specified, backend will infer from other fields (branch, existing_worktree). - SessionType SessionType `protobuf:"varint,13,opt,name=session_type,json=sessionType,proto3,enum=session.v1.SessionType" json:"session_type,omitempty"` - // Optional: prompt typed into the tmux pane as simulated keystrokes once the session reaches - // Ready state (no size limit; shell-safe) — used for resume/attach flows where a CLI arg can - // no longer be injected. See prompt (field 7) for the CLI-arg alternative. - InitialPrompt string `protobuf:"bytes,15,opt,name=initial_prompt,json=initialPrompt,proto3" json:"initial_prompt,omitempty"` - // Optional: Run claude in one-shot mode (-p flag); session exits after task completes. - OneShot bool `protobuf:"varint,16,opt,name=one_shot,json=oneShot,proto3" json:"one_shot,omitempty"` - // Optional: Associate session with a project ID. - ProjectId string `protobuf:"bytes,17,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - // Optional: When session_type is DIRECTORY and the path does not exist, - // setting this to true will create the directory and initialize a git repo. - // The backend returns CodeNotFound when path is missing and this is false. - CreateIfMissing bool `protobuf:"varint,18,opt,name=create_if_missing,json=createIfMissing,proto3" json:"create_if_missing,omitempty"` - // Optional: History entry ID to fork from (ClaudeHistoryEntry.id). - // When set, the handler calls ForkClaudeConversation to produce a new - // conversation file, sets resume_id to the forked UUID, and proceeds - // with the normal session-start flow. - ForkSourceId string `protobuf:"bytes,19,opt,name=fork_source_id,json=forkSourceId,proto3" json:"fork_source_id,omitempty"` - // Optional: Truncate the forked conversation to the first N messages. - // 0 means copy all messages. Only meaningful when fork_source_id is set. - ForkAtMessage int32 `protobuf:"varint,20,opt,name=fork_at_message,json=forkAtMessage,proto3" json:"fork_at_message,omitempty"` - // allowed_tools pre-approves specific Claude Code tool calls, avoiding permission prompts. - // Format: "Bash,Read,Edit" or "Bash(git commit *),Read". - AllowedTools string `protobuf:"bytes,21,opt,name=allowed_tools,json=allowedTools,proto3" json:"allowed_tools,omitempty"` - // permission_mode sets Claude Code's permission handling mode. - // Values: "default", "acceptEdits", "bypassPermissions", "auto". - PermissionMode string `protobuf:"bytes,22,opt,name=permission_mode,json=permissionMode,proto3" json:"permission_mode,omitempty"` - // Optional: If true, start an AutonomousDriver that injects orchestrator - // prompts when the session is idle, running the session to completion. - AutonomousMode bool `protobuf:"varint,23,opt,name=autonomous_mode,json=autonomousMode,proto3" json:"autonomous_mode,omitempty"` - // workflow_id associates the new session with a workflow. - // Set by the scheduler when firing a workflow; not intended for direct client use. - WorkflowId string `protobuf:"bytes,24,opt,name=workflow_id,json=workflowId,proto3" json:"workflow_id,omitempty"` - // env_vars are additional environment variables passed to the new session. - // Applied on top of any defaults-resolved env vars. - EnvVars map[string]string `protobuf:"bytes,25,rep,name=env_vars,json=envVars,proto3" json:"env_vars,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // cli_flags are additional CLI flags appended to the program launch command. - // Applied on top of any defaults-resolved flags. - CliFlags string `protobuf:"bytes,26,opt,name=cli_flags,json=cliFlags,proto3" json:"cli_flags,omitempty"` - // alias_name, when non-empty, resolves session defaults via the named alias preset. - // Path and profile are resolved from the alias config; path from req is used as override if non-empty. - AliasName string `protobuf:"bytes,27,opt,name=alias_name,json=aliasName,proto3" json:"alias_name,omitempty"` - // auto_approve injects a per-agent CLI flag that skips permission/approval - // prompts entirely (e.g. --dangerously-skip-permissions for Claude Code). - // Independent of auto_yes — see auto_yes's own comment for the distinction. - // Defaults to false; never implicitly set true. Rejected server-side if the - // resolved program isn't a supported agent (see AutoApproveSupported). - AutoApprove bool `protobuf:"varint,28,opt,name=auto_approve,json=autoApprove,proto3" json:"auto_approve,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateSessionRequest) Reset() { - *x = CreateSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateSessionRequest) ProtoMessage() {} - -func (x *CreateSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateSessionRequest.ProtoReflect.Descriptor instead. -func (*CreateSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{4} -} - -func (x *CreateSessionRequest) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *CreateSessionRequest) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *CreateSessionRequest) GetWorkingDir() string { - if x != nil { - return x.WorkingDir - } - return "" -} - -func (x *CreateSessionRequest) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -func (x *CreateSessionRequest) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *CreateSessionRequest) GetCategory() string { - if x != nil { - return x.Category - } - return "" -} - -func (x *CreateSessionRequest) GetPrompt() string { - if x != nil { - return x.Prompt - } - return "" -} - -func (x *CreateSessionRequest) GetAutoYes() bool { - if x != nil { - return x.AutoYes - } - return false -} - -func (x *CreateSessionRequest) GetExistingWorktree() string { - if x != nil { - return x.ExistingWorktree - } - return "" -} - -func (x *CreateSessionRequest) GetResumeId() string { - if x != nil { - return x.ResumeId - } - return "" -} - -func (x *CreateSessionRequest) GetProfile() string { - if x != nil { - return x.Profile - } - return "" -} - -func (x *CreateSessionRequest) GetSkipDefaults() bool { - if x != nil { - return x.SkipDefaults - } - return false -} - -func (x *CreateSessionRequest) GetSessionType() SessionType { - if x != nil { - return x.SessionType - } - return SessionType_SESSION_TYPE_UNSPECIFIED -} - -func (x *CreateSessionRequest) GetInitialPrompt() string { - if x != nil { - return x.InitialPrompt - } - return "" -} - -func (x *CreateSessionRequest) GetOneShot() bool { - if x != nil { - return x.OneShot - } - return false -} - -func (x *CreateSessionRequest) GetProjectId() string { - if x != nil { - return x.ProjectId - } - return "" -} - -func (x *CreateSessionRequest) GetCreateIfMissing() bool { - if x != nil { - return x.CreateIfMissing - } - return false -} - -func (x *CreateSessionRequest) GetForkSourceId() string { - if x != nil { - return x.ForkSourceId - } - return "" -} - -func (x *CreateSessionRequest) GetForkAtMessage() int32 { - if x != nil { - return x.ForkAtMessage - } - return 0 -} - -func (x *CreateSessionRequest) GetAllowedTools() string { - if x != nil { - return x.AllowedTools - } - return "" -} - -func (x *CreateSessionRequest) GetPermissionMode() string { - if x != nil { - return x.PermissionMode - } - return "" -} - -func (x *CreateSessionRequest) GetAutonomousMode() bool { - if x != nil { - return x.AutonomousMode - } - return false -} - -func (x *CreateSessionRequest) GetWorkflowId() string { - if x != nil { - return x.WorkflowId - } - return "" -} - -func (x *CreateSessionRequest) GetEnvVars() map[string]string { - if x != nil { - return x.EnvVars - } - return nil -} - -func (x *CreateSessionRequest) GetCliFlags() string { - if x != nil { - return x.CliFlags - } - return "" -} - -func (x *CreateSessionRequest) GetAliasName() string { - if x != nil { - return x.AliasName - } - return "" -} - -func (x *CreateSessionRequest) GetAutoApprove() bool { - if x != nil { - return x.AutoApprove - } - return false -} - -type CreateSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateSessionResponse) Reset() { - *x = CreateSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateSessionResponse) ProtoMessage() {} - -func (x *CreateSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateSessionResponse.ProtoReflect.Descriptor instead. -func (*CreateSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{5} -} - -func (x *CreateSessionResponse) GetSession() *Session { - if x != nil { - return x.Session - } - return nil -} - -type UpdateSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Update session status (pause/resume). - Status *SessionStatus `protobuf:"varint,2,opt,name=status,proto3,enum=session.v1.SessionStatus,oneof" json:"status,omitempty"` - // Update category. - Category *string `protobuf:"bytes,3,opt,name=category,proto3,oneof" json:"category,omitempty"` - // Update title. - Title *string `protobuf:"bytes,4,opt,name=title,proto3,oneof" json:"title,omitempty"` - // Update program command. - Program *string `protobuf:"bytes,5,opt,name=program,proto3,oneof" json:"program,omitempty"` - // Update session tags. If non-empty, replaces all existing tags. - // To clear all tags, send tags=[""] (single empty string). - Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` - // Update working directory. Empty string clears the override (uses workspace root). - WorkingDir *string `protobuf:"bytes,7,opt,name=working_dir,json=workingDir,proto3,oneof" json:"working_dir,omitempty"` - // Update whether rate limit auto-resume is enabled for this session. - RateLimitEnabled *bool `protobuf:"varint,8,opt,name=rate_limit_enabled,json=rateLimitEnabled,proto3,oneof" json:"rate_limit_enabled,omitempty"` - // Reason for pausing (only meaningful when status is set to PAUSED). - // If empty when pausing, defaults to "manual" in the backend handler. - PauseReason *string `protobuf:"bytes,9,opt,name=pause_reason,json=pauseReason,proto3,oneof" json:"pause_reason,omitempty"` - // Enable or disable autonomous mode (AutonomousDriver) on a running session. - // When set to true, an AutonomousDriver is started if one is not already running. - // When set to false, the running driver is stopped. - AutonomousMode *bool `protobuf:"varint,10,opt,name=autonomous_mode,json=autonomousMode,proto3,oneof" json:"autonomous_mode,omitempty"` - // Steering message to inject into an autonomous session mid-run. - // Sends the text immediately via SendCommandImmediate. Only meaningful when autonomous_mode is true. - SteerMessage *string `protobuf:"bytes,11,opt,name=steer_message,json=steerMessage,proto3,oneof" json:"steer_message,omitempty"` - // Update the session's free-form note. Capped at 10,000 bytes. - Note *string `protobuf:"bytes,12,opt,name=note,proto3,oneof" json:"note,omitempty"` - // Enable or disable auto-approve (yolo mode) on a session. Injects a - // per-agent CLI flag that skips permission/approval prompts entirely. - // Independent of autonomous_mode and of auto_yes (create-time only, - // not updatable). Toggling this on an Active session restarts it so the - // flag takes effect (see SetAutoApprove's doc comment). - AutoApprove *bool `protobuf:"varint,13,opt,name=auto_approve,json=autoApprove,proto3,oneof" json:"auto_approve,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateSessionRequest) Reset() { - *x = UpdateSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateSessionRequest) ProtoMessage() {} - -func (x *UpdateSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateSessionRequest.ProtoReflect.Descriptor instead. -func (*UpdateSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{6} -} - -func (x *UpdateSessionRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *UpdateSessionRequest) GetStatus() SessionStatus { - if x != nil && x.Status != nil { - return *x.Status - } - return SessionStatus_SESSION_STATUS_UNSPECIFIED -} - -func (x *UpdateSessionRequest) GetCategory() string { - if x != nil && x.Category != nil { - return *x.Category - } - return "" -} - -func (x *UpdateSessionRequest) GetTitle() string { - if x != nil && x.Title != nil { - return *x.Title - } - return "" -} - -func (x *UpdateSessionRequest) GetProgram() string { - if x != nil && x.Program != nil { - return *x.Program - } - return "" -} - -func (x *UpdateSessionRequest) GetTags() []string { - if x != nil { - return x.Tags - } - return nil -} - -func (x *UpdateSessionRequest) GetWorkingDir() string { - if x != nil && x.WorkingDir != nil { - return *x.WorkingDir - } - return "" -} - -func (x *UpdateSessionRequest) GetRateLimitEnabled() bool { - if x != nil && x.RateLimitEnabled != nil { - return *x.RateLimitEnabled - } - return false -} - -func (x *UpdateSessionRequest) GetPauseReason() string { - if x != nil && x.PauseReason != nil { - return *x.PauseReason - } - return "" -} - -func (x *UpdateSessionRequest) GetAutonomousMode() bool { - if x != nil && x.AutonomousMode != nil { - return *x.AutonomousMode - } - return false -} - -func (x *UpdateSessionRequest) GetSteerMessage() string { - if x != nil && x.SteerMessage != nil { - return *x.SteerMessage - } - return "" -} - -func (x *UpdateSessionRequest) GetNote() string { - if x != nil && x.Note != nil { - return *x.Note - } - return "" -} - -func (x *UpdateSessionRequest) GetAutoApprove() bool { - if x != nil && x.AutoApprove != nil { - return *x.AutoApprove - } - return false -} - -type UpdateSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateSessionResponse) Reset() { - *x = UpdateSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateSessionResponse) ProtoMessage() {} - -func (x *UpdateSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateSessionResponse.ProtoReflect.Descriptor instead. -func (*UpdateSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{7} -} - -func (x *UpdateSessionResponse) GetSession() *Session { - if x != nil { - return x.Session - } - return nil -} - -type DeleteSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Force deletion even if session is running. - Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteSessionRequest) Reset() { - *x = DeleteSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteSessionRequest) ProtoMessage() {} - -func (x *DeleteSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteSessionRequest.ProtoReflect.Descriptor instead. -func (*DeleteSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{8} -} - -func (x *DeleteSessionRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *DeleteSessionRequest) GetForce() bool { - if x != nil { - return x.Force - } - return false -} - -type DeleteSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether deletion was successful. - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Human-readable message. - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteSessionResponse) Reset() { - *x = DeleteSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteSessionResponse) ProtoMessage() {} - -func (x *DeleteSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteSessionResponse.ProtoReflect.Descriptor instead. -func (*DeleteSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{9} -} - -func (x *DeleteSessionResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *DeleteSessionResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type WatchSessionsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Optional: Only watch sessions matching this category. - CategoryFilter *string `protobuf:"bytes,1,opt,name=category_filter,json=categoryFilter,proto3,oneof" json:"category_filter,omitempty"` - // Optional: Only watch sessions with this status. - StatusFilter *SessionStatus `protobuf:"varint,2,opt,name=status_filter,json=statusFilter,proto3,enum=session.v1.SessionStatus,oneof" json:"status_filter,omitempty"` - // Optional: If non-zero, replay buffered events with seq > after_seq before - // going live. Pass the last seq received before disconnecting. Events up to - // one hour old are available; older events are not guaranteed to be present. - AfterSeq uint64 `protobuf:"varint,3,opt,name=after_seq,json=afterSeq,proto3" json:"after_seq,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *WatchSessionsRequest) Reset() { - *x = WatchSessionsRequest{} - mi := &file_session_v1_session_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WatchSessionsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WatchSessionsRequest) ProtoMessage() {} - -func (x *WatchSessionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WatchSessionsRequest.ProtoReflect.Descriptor instead. -func (*WatchSessionsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{10} -} - -func (x *WatchSessionsRequest) GetCategoryFilter() string { - if x != nil && x.CategoryFilter != nil { - return *x.CategoryFilter - } - return "" -} - -func (x *WatchSessionsRequest) GetStatusFilter() SessionStatus { - if x != nil && x.StatusFilter != nil { - return *x.StatusFilter - } - return SessionStatus_SESSION_STATUS_UNSPECIFIED -} - -func (x *WatchSessionsRequest) GetAfterSeq() uint64 { - if x != nil { - return x.AfterSeq - } - return 0 -} - -type GetSessionDiffRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionDiffRequest) Reset() { - *x = GetSessionDiffRequest{} - mi := &file_session_v1_session_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionDiffRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionDiffRequest) ProtoMessage() {} - -func (x *GetSessionDiffRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionDiffRequest.ProtoReflect.Descriptor instead. -func (*GetSessionDiffRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{11} -} - -func (x *GetSessionDiffRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type GetSessionDiffResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Git diff statistics. - DiffStats *DiffStats `protobuf:"bytes,1,opt,name=diff_stats,json=diffStats,proto3" json:"diff_stats,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionDiffResponse) Reset() { - *x = GetSessionDiffResponse{} - mi := &file_session_v1_session_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionDiffResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionDiffResponse) ProtoMessage() {} - -func (x *GetSessionDiffResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionDiffResponse.ProtoReflect.Descriptor instead. -func (*GetSessionDiffResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{12} -} - -func (x *GetSessionDiffResponse) GetDiffStats() *DiffStats { - if x != nil { - return x.DiffStats - } - return nil -} - -type GetVCSStatusRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetVCSStatusRequest) Reset() { - *x = GetVCSStatusRequest{} - mi := &file_session_v1_session_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetVCSStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetVCSStatusRequest) ProtoMessage() {} - -func (x *GetVCSStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetVCSStatusRequest.ProtoReflect.Descriptor instead. -func (*GetVCSStatusRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{13} -} - -func (x *GetVCSStatusRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type GetVCSStatusResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // VCS status for the session's working directory. - VcsStatus *VCSStatus `protobuf:"bytes,1,opt,name=vcs_status,json=vcsStatus,proto3" json:"vcs_status,omitempty"` - // Error message if VCS status couldn't be retrieved. - Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetVCSStatusResponse) Reset() { - *x = GetVCSStatusResponse{} - mi := &file_session_v1_session_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetVCSStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetVCSStatusResponse) ProtoMessage() {} - -func (x *GetVCSStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetVCSStatusResponse.ProtoReflect.Descriptor instead. -func (*GetVCSStatusResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{14} -} - -func (x *GetVCSStatusResponse) GetVcsStatus() *VCSStatus { - if x != nil { - return x.VcsStatus - } - return nil -} - -func (x *GetVCSStatusResponse) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -type GetReviewQueueRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Optional: Filter by priority level. - PriorityFilter *Priority `protobuf:"varint,1,opt,name=priority_filter,json=priorityFilter,proto3,enum=session.v1.Priority,oneof" json:"priority_filter,omitempty"` - // Optional: Filter by attention reason. - ReasonFilter *AttentionReason `protobuf:"varint,2,opt,name=reason_filter,json=reasonFilter,proto3,enum=session.v1.AttentionReason,oneof" json:"reason_filter,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetReviewQueueRequest) Reset() { - *x = GetReviewQueueRequest{} - mi := &file_session_v1_session_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetReviewQueueRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetReviewQueueRequest) ProtoMessage() {} - -func (x *GetReviewQueueRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetReviewQueueRequest.ProtoReflect.Descriptor instead. -func (*GetReviewQueueRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{15} -} - -func (x *GetReviewQueueRequest) GetPriorityFilter() Priority { - if x != nil && x.PriorityFilter != nil { - return *x.PriorityFilter - } - return Priority_PRIORITY_UNSPECIFIED -} - -func (x *GetReviewQueueRequest) GetReasonFilter() AttentionReason { - if x != nil && x.ReasonFilter != nil { - return *x.ReasonFilter - } - return AttentionReason_ATTENTION_REASON_UNSPECIFIED -} - -type GetReviewQueueResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Review queue with all items and statistics. - ReviewQueue *ReviewQueue `protobuf:"bytes,1,opt,name=review_queue,json=reviewQueue,proto3" json:"review_queue,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetReviewQueueResponse) Reset() { - *x = GetReviewQueueResponse{} - mi := &file_session_v1_session_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetReviewQueueResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetReviewQueueResponse) ProtoMessage() {} - -func (x *GetReviewQueueResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetReviewQueueResponse.ProtoReflect.Descriptor instead. -func (*GetReviewQueueResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{16} -} - -func (x *GetReviewQueueResponse) GetReviewQueue() *ReviewQueue { - if x != nil { - return x.ReviewQueue - } - return nil -} - -type AcknowledgeSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier to acknowledge. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AcknowledgeSessionRequest) Reset() { - *x = AcknowledgeSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AcknowledgeSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AcknowledgeSessionRequest) ProtoMessage() {} - -func (x *AcknowledgeSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[17] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AcknowledgeSessionRequest.ProtoReflect.Descriptor instead. -func (*AcknowledgeSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{17} -} - -func (x *AcknowledgeSessionRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type AcknowledgeSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether acknowledgment was successful. - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Human-readable message. - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AcknowledgeSessionResponse) Reset() { - *x = AcknowledgeSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AcknowledgeSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AcknowledgeSessionResponse) ProtoMessage() {} - -func (x *AcknowledgeSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[18] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AcknowledgeSessionResponse.ProtoReflect.Descriptor instead. -func (*AcknowledgeSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{18} -} - -func (x *AcknowledgeSessionResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *AcknowledgeSessionResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type GetLogsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Optional: Search query to filter log entries by content. - SearchQuery *string `protobuf:"bytes,1,opt,name=search_query,json=searchQuery,proto3,oneof" json:"search_query,omitempty"` - // Optional: Filter by log level (DEBUG, INFO, WARNING, ERROR). - // Deprecated: prefer levels for multi-level filtering. If both are set, levels takes precedence. - Level *string `protobuf:"bytes,2,opt,name=level,proto3,oneof" json:"level,omitempty"` - // Optional: Start time for log range (RFC3339 format). - StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"` - // Optional: End time for log range (RFC3339 format). - EndTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"` - // Optional: Maximum number of log entries to return (default: 100). - Limit *int32 `protobuf:"varint,5,opt,name=limit,proto3,oneof" json:"limit,omitempty"` - // Optional: Number of entries to skip for pagination (default: 0). - Offset *int32 `protobuf:"varint,6,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Optional: Filter to a specific session's log file. Uses session title/id. - SessionId *string `protobuf:"bytes,7,opt,name=session_id,json=sessionId,proto3,oneof" json:"session_id,omitempty"` - // Optional: Filter by multiple log levels using OR logic (e.g., ["ERROR", "WARN"]). - // Takes precedence over the single level field when non-empty. - Levels []string `protobuf:"bytes,8,rep,name=levels,proto3" json:"levels,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetLogsRequest) Reset() { - *x = GetLogsRequest{} - mi := &file_session_v1_session_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetLogsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetLogsRequest) ProtoMessage() {} - -func (x *GetLogsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[19] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetLogsRequest.ProtoReflect.Descriptor instead. -func (*GetLogsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{19} -} - -func (x *GetLogsRequest) GetSearchQuery() string { - if x != nil && x.SearchQuery != nil { - return *x.SearchQuery - } - return "" -} - -func (x *GetLogsRequest) GetLevel() string { - if x != nil && x.Level != nil { - return *x.Level - } - return "" -} - -func (x *GetLogsRequest) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime - } - return nil -} - -func (x *GetLogsRequest) GetEndTime() *timestamppb.Timestamp { - if x != nil { - return x.EndTime - } - return nil -} - -func (x *GetLogsRequest) GetLimit() int32 { - if x != nil && x.Limit != nil { - return *x.Limit - } - return 0 -} - -func (x *GetLogsRequest) GetOffset() int32 { - if x != nil && x.Offset != nil { - return *x.Offset - } - return 0 -} - -func (x *GetLogsRequest) GetSessionId() string { - if x != nil && x.SessionId != nil { - return *x.SessionId - } - return "" -} - -func (x *GetLogsRequest) GetLevels() []string { - if x != nil { - return x.Levels - } - return nil -} - -type GetLogsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Log entries matching the filter criteria. - Entries []*LogEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` - // Total number of log entries matching the filter (before limit/offset). - TotalCount int32 `protobuf:"varint,2,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` - // Whether there are more logs available to fetch. - HasMore bool `protobuf:"varint,3,opt,name=has_more,json=hasMore,proto3" json:"has_more,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetLogsResponse) Reset() { - *x = GetLogsResponse{} - mi := &file_session_v1_session_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetLogsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetLogsResponse) ProtoMessage() {} - -func (x *GetLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetLogsResponse.ProtoReflect.Descriptor instead. -func (*GetLogsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{20} -} - -func (x *GetLogsResponse) GetEntries() []*LogEntry { - if x != nil { - return x.Entries - } - return nil -} - -func (x *GetLogsResponse) GetTotalCount() int32 { - if x != nil { - return x.TotalCount - } - return 0 -} - -func (x *GetLogsResponse) GetHasMore() bool { - if x != nil { - return x.HasMore - } - return false -} - -type LogEntry struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Timestamp of the log entry. - Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Log level (DEBUG, INFO, WARNING, ERROR). - Level string `protobuf:"bytes,2,opt,name=level,proto3" json:"level,omitempty"` - // Log message content. - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - // Source file and line number (e.g., "app.go:123"). - Source *string `protobuf:"bytes,4,opt,name=source,proto3,oneof" json:"source,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *LogEntry) Reset() { - *x = LogEntry{} - mi := &file_session_v1_session_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *LogEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LogEntry) ProtoMessage() {} - -func (x *LogEntry) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LogEntry.ProtoReflect.Descriptor instead. -func (*LogEntry) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{21} -} - -func (x *LogEntry) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -func (x *LogEntry) GetLevel() string { - if x != nil { - return x.Level - } - return "" -} - -func (x *LogEntry) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *LogEntry) GetSource() string { - if x != nil && x.Source != nil { - return *x.Source - } - return "" -} - -type WatchReviewQueueRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Optional: Filter by priority level (only receive events for these priorities). - PriorityFilter []Priority `protobuf:"varint,1,rep,packed,name=priority_filter,json=priorityFilter,proto3,enum=session.v1.Priority" json:"priority_filter,omitempty"` - // Optional: Filter by attention reason. - ReasonFilter []AttentionReason `protobuf:"varint,2,rep,packed,name=reason_filter,json=reasonFilter,proto3,enum=session.v1.AttentionReason" json:"reason_filter,omitempty"` - // Include statistics events (aggregate queue stats). - IncludeStatistics bool `protobuf:"varint,3,opt,name=include_statistics,json=includeStatistics,proto3" json:"include_statistics,omitempty"` - // Send initial snapshot of current queue state. - InitialSnapshot bool `protobuf:"varint,4,opt,name=initial_snapshot,json=initialSnapshot,proto3" json:"initial_snapshot,omitempty"` - // Optional: Only events for specific sessions. - SessionIds []string `protobuf:"bytes,5,rep,name=session_ids,json=sessionIds,proto3" json:"session_ids,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *WatchReviewQueueRequest) Reset() { - *x = WatchReviewQueueRequest{} - mi := &file_session_v1_session_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WatchReviewQueueRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WatchReviewQueueRequest) ProtoMessage() {} - -func (x *WatchReviewQueueRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[22] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WatchReviewQueueRequest.ProtoReflect.Descriptor instead. -func (*WatchReviewQueueRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{22} -} - -func (x *WatchReviewQueueRequest) GetPriorityFilter() []Priority { - if x != nil { - return x.PriorityFilter - } - return nil -} - -func (x *WatchReviewQueueRequest) GetReasonFilter() []AttentionReason { - if x != nil { - return x.ReasonFilter - } - return nil -} - -func (x *WatchReviewQueueRequest) GetIncludeStatistics() bool { - if x != nil { - return x.IncludeStatistics - } - return false -} - -func (x *WatchReviewQueueRequest) GetInitialSnapshot() bool { - if x != nil { - return x.InitialSnapshot - } - return false -} - -func (x *WatchReviewQueueRequest) GetSessionIds() []string { - if x != nil { - return x.SessionIds - } - return nil -} - -type LogUserInteractionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier (optional - may be empty for panel-level actions). - SessionId *string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3,oneof" json:"session_id,omitempty"` - // Type of interaction (from UserInteractionEvent.InteractionType enum). - InteractionType UserInteractionEvent_InteractionType `protobuf:"varint,2,opt,name=interaction_type,json=interactionType,proto3,enum=session.v1.UserInteractionEvent_InteractionType" json:"interaction_type,omitempty"` - // Additional context about the interaction. - Context *string `protobuf:"bytes,3,opt,name=context,proto3,oneof" json:"context,omitempty"` - // Optional: Notification ID if this interaction involves a notification. - NotificationId *string `protobuf:"bytes,4,opt,name=notification_id,json=notificationId,proto3,oneof" json:"notification_id,omitempty"` - // Optional: Additional metadata as key-value pairs. - Metadata map[string]string `protobuf:"bytes,5,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *LogUserInteractionRequest) Reset() { - *x = LogUserInteractionRequest{} - mi := &file_session_v1_session_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *LogUserInteractionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LogUserInteractionRequest) ProtoMessage() {} - -func (x *LogUserInteractionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[23] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LogUserInteractionRequest.ProtoReflect.Descriptor instead. -func (*LogUserInteractionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{23} -} - -func (x *LogUserInteractionRequest) GetSessionId() string { - if x != nil && x.SessionId != nil { - return *x.SessionId - } - return "" -} - -func (x *LogUserInteractionRequest) GetInteractionType() UserInteractionEvent_InteractionType { - if x != nil { - return x.InteractionType - } - return UserInteractionEvent_INTERACTION_TYPE_UNSPECIFIED -} - -func (x *LogUserInteractionRequest) GetContext() string { - if x != nil && x.Context != nil { - return *x.Context - } - return "" -} - -func (x *LogUserInteractionRequest) GetNotificationId() string { - if x != nil && x.NotificationId != nil { - return *x.NotificationId - } - return "" -} - -func (x *LogUserInteractionRequest) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -type LogUserInteractionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether the log was successfully recorded. - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Optional: Error message if logging failed. - Error *string `protobuf:"bytes,2,opt,name=error,proto3,oneof" json:"error,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *LogUserInteractionResponse) Reset() { - *x = LogUserInteractionResponse{} - mi := &file_session_v1_session_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *LogUserInteractionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LogUserInteractionResponse) ProtoMessage() {} - -func (x *LogUserInteractionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[24] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LogUserInteractionResponse.ProtoReflect.Descriptor instead. -func (*LogUserInteractionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{24} -} - -func (x *LogUserInteractionResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *LogUserInteractionResponse) GetError() string { - if x != nil && x.Error != nil { - return *x.Error - } - return "" -} - -type GetClaudeConfigRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Filename to retrieve (e.g., "CLAUDE.md", "settings.json", "agents.md") - Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetClaudeConfigRequest) Reset() { - *x = GetClaudeConfigRequest{} - mi := &file_session_v1_session_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetClaudeConfigRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetClaudeConfigRequest) ProtoMessage() {} - -func (x *GetClaudeConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[25] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetClaudeConfigRequest.ProtoReflect.Descriptor instead. -func (*GetClaudeConfigRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{25} -} - -func (x *GetClaudeConfigRequest) GetFilename() string { - if x != nil { - return x.Filename - } - return "" -} - -type GetClaudeConfigResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Configuration file data - Config *ClaudeConfigFile `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetClaudeConfigResponse) Reset() { - *x = GetClaudeConfigResponse{} - mi := &file_session_v1_session_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetClaudeConfigResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetClaudeConfigResponse) ProtoMessage() {} - -func (x *GetClaudeConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[26] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetClaudeConfigResponse.ProtoReflect.Descriptor instead. -func (*GetClaudeConfigResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{26} -} - -func (x *GetClaudeConfigResponse) GetConfig() *ClaudeConfigFile { - if x != nil { - return x.Config - } - return nil -} - -type ListClaudeConfigsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListClaudeConfigsRequest) Reset() { - *x = ListClaudeConfigsRequest{} - mi := &file_session_v1_session_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListClaudeConfigsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListClaudeConfigsRequest) ProtoMessage() {} - -func (x *ListClaudeConfigsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[27] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListClaudeConfigsRequest.ProtoReflect.Descriptor instead. -func (*ListClaudeConfigsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{27} -} - -type ListClaudeConfigsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // List of all configuration files - Configs []*ClaudeConfigFile `protobuf:"bytes,1,rep,name=configs,proto3" json:"configs,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListClaudeConfigsResponse) Reset() { - *x = ListClaudeConfigsResponse{} - mi := &file_session_v1_session_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListClaudeConfigsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListClaudeConfigsResponse) ProtoMessage() {} - -func (x *ListClaudeConfigsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[28] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListClaudeConfigsResponse.ProtoReflect.Descriptor instead. -func (*ListClaudeConfigsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{28} -} - -func (x *ListClaudeConfigsResponse) GetConfigs() []*ClaudeConfigFile { - if x != nil { - return x.Configs - } - return nil -} - -type UpdateClaudeConfigRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Filename to update - Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"` - // New file content - Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` - // If true, validate JSON content before writing (for .json files) - Validate bool `protobuf:"varint,3,opt,name=validate,proto3" json:"validate,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateClaudeConfigRequest) Reset() { - *x = UpdateClaudeConfigRequest{} - mi := &file_session_v1_session_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateClaudeConfigRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateClaudeConfigRequest) ProtoMessage() {} - -func (x *UpdateClaudeConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[29] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateClaudeConfigRequest.ProtoReflect.Descriptor instead. -func (*UpdateClaudeConfigRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{29} -} - -func (x *UpdateClaudeConfigRequest) GetFilename() string { - if x != nil { - return x.Filename - } - return "" -} - -func (x *UpdateClaudeConfigRequest) GetContent() string { - if x != nil { - return x.Content - } - return "" -} - -func (x *UpdateClaudeConfigRequest) GetValidate() bool { - if x != nil { - return x.Validate - } - return false -} - -type UpdateClaudeConfigResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Updated configuration file data - Config *ClaudeConfigFile `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateClaudeConfigResponse) Reset() { - *x = UpdateClaudeConfigResponse{} - mi := &file_session_v1_session_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateClaudeConfigResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateClaudeConfigResponse) ProtoMessage() {} - -func (x *UpdateClaudeConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[30] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateClaudeConfigResponse.ProtoReflect.Descriptor instead. -func (*UpdateClaudeConfigResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{30} -} - -func (x *UpdateClaudeConfigResponse) GetConfig() *ClaudeConfigFile { - if x != nil { - return x.Config - } - return nil -} - -type ClaudeConfigFile struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Filename (e.g., "CLAUDE.md", "settings.json") - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Absolute path to the file - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - // File content - Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` - // Last modification timestamp - ModTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=mod_time,json=modTime,proto3" json:"mod_time,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClaudeConfigFile) Reset() { - *x = ClaudeConfigFile{} - mi := &file_session_v1_session_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClaudeConfigFile) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClaudeConfigFile) ProtoMessage() {} - -func (x *ClaudeConfigFile) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[31] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClaudeConfigFile.ProtoReflect.Descriptor instead. -func (*ClaudeConfigFile) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{31} -} - -func (x *ClaudeConfigFile) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ClaudeConfigFile) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *ClaudeConfigFile) GetContent() string { - if x != nil { - return x.Content - } - return "" -} - -func (x *ClaudeConfigFile) GetModTime() *timestamppb.Timestamp { - if x != nil { - return x.ModTime - } - return nil -} - -type ListClaudeHistoryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Optional project path filter - Project *string `protobuf:"bytes,1,opt,name=project,proto3,oneof" json:"project,omitempty"` - // Optional search query (searches name and project) - SearchQuery *string `protobuf:"bytes,2,opt,name=search_query,json=searchQuery,proto3,oneof" json:"search_query,omitempty"` - // Legacy limit field; prefer page_size for new callers. - Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` - // Maximum number of results per page (default 100, max 500). - // When combined with page_token this enables cursor-based pagination. - PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // Opaque pagination token returned by a previous ListClaudeHistory call. - // When set, returns the page of results after the cursor position. - // Leave empty to start from the beginning. - PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // When true, best-effort exclude sessions whose live Instance has - // Hidden=true — same semantics as SearchClaudeHistoryRequest's field of - // the same name. Default false. - ExcludeAutomationSessions *bool `protobuf:"varint,6,opt,name=exclude_automation_sessions,json=excludeAutomationSessions,proto3,oneof" json:"exclude_automation_sessions,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListClaudeHistoryRequest) Reset() { - *x = ListClaudeHistoryRequest{} - mi := &file_session_v1_session_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListClaudeHistoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListClaudeHistoryRequest) ProtoMessage() {} - -func (x *ListClaudeHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[32] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListClaudeHistoryRequest.ProtoReflect.Descriptor instead. -func (*ListClaudeHistoryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{32} -} - -func (x *ListClaudeHistoryRequest) GetProject() string { - if x != nil && x.Project != nil { - return *x.Project - } - return "" -} - -func (x *ListClaudeHistoryRequest) GetSearchQuery() string { - if x != nil && x.SearchQuery != nil { - return *x.SearchQuery - } - return "" -} - -func (x *ListClaudeHistoryRequest) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 -} - -func (x *ListClaudeHistoryRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *ListClaudeHistoryRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" -} - -func (x *ListClaudeHistoryRequest) GetExcludeAutomationSessions() bool { - if x != nil && x.ExcludeAutomationSessions != nil { - return *x.ExcludeAutomationSessions - } - return false -} - -type ListClaudeHistoryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // List of history entries for this page - Entries []*ClaudeHistoryEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` - // Total count of matching entries across all pages - TotalCount int32 `protobuf:"varint,2,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` - // Opaque token to pass as page_token in the next request. - // Empty string indicates this is the last page. - NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListClaudeHistoryResponse) Reset() { - *x = ListClaudeHistoryResponse{} - mi := &file_session_v1_session_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListClaudeHistoryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListClaudeHistoryResponse) ProtoMessage() {} - -func (x *ListClaudeHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[33] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListClaudeHistoryResponse.ProtoReflect.Descriptor instead. -func (*ListClaudeHistoryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{33} -} - -func (x *ListClaudeHistoryResponse) GetEntries() []*ClaudeHistoryEntry { - if x != nil { - return x.Entries - } - return nil -} - -func (x *ListClaudeHistoryResponse) GetTotalCount() int32 { - if x != nil { - return x.TotalCount - } - return 0 -} - -func (x *ListClaudeHistoryResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken - } - return "" -} - -type GetClaudeHistoryDetailRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // History entry ID - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetClaudeHistoryDetailRequest) Reset() { - *x = GetClaudeHistoryDetailRequest{} - mi := &file_session_v1_session_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetClaudeHistoryDetailRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetClaudeHistoryDetailRequest) ProtoMessage() {} - -func (x *GetClaudeHistoryDetailRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[34] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetClaudeHistoryDetailRequest.ProtoReflect.Descriptor instead. -func (*GetClaudeHistoryDetailRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{34} -} - -func (x *GetClaudeHistoryDetailRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type GetClaudeHistoryDetailResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Detailed history entry - Entry *ClaudeHistoryEntry `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetClaudeHistoryDetailResponse) Reset() { - *x = GetClaudeHistoryDetailResponse{} - mi := &file_session_v1_session_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetClaudeHistoryDetailResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetClaudeHistoryDetailResponse) ProtoMessage() {} - -func (x *GetClaudeHistoryDetailResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[35] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetClaudeHistoryDetailResponse.ProtoReflect.Descriptor instead. -func (*GetClaudeHistoryDetailResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{35} -} - -func (x *GetClaudeHistoryDetailResponse) GetEntry() *ClaudeHistoryEntry { - if x != nil { - return x.Entry - } - return nil -} - -type ClaudeHistoryEntry struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Unique conversation identifier - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Conversation title/name - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // Project/directory path - Project string `protobuf:"bytes,3,opt,name=project,proto3" json:"project,omitempty"` - // Conversation creation timestamp - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Last update timestamp - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Claude model used (e.g., "claude-sonnet-4") - Model string `protobuf:"bytes,6,opt,name=model,proto3" json:"model,omitempty"` - // Number of messages in the conversation - MessageCount int32 `protobuf:"varint,7,opt,name=message_count,json=messageCount,proto3" json:"message_count,omitempty"` - // VCS state for the project directory — populated only by GetClaudeHistoryDetail - // (lazy enrichment, not included in list responses). Null/absent means the - // directory is not a version-controlled repo or state was not requested. - VcsStatus *VCSStatus `protobuf:"bytes,8,opt,name=vcs_status,json=vcsStatus,proto3" json:"vcs_status,omitempty"` - // Git branch the project directory was on when last observed (60s TTL cache). - // Empty when the directory is not a git repo or branch could not be resolved. - Branch string `protobuf:"bytes,9,opt,name=branch,proto3" json:"branch,omitempty"` - // Live session status, cross-referenced with in-memory session store via ResumeId. - // SESSION_STATUS_UNSPECIFIED means no live session matches this history entry. - SessionStatus SessionStatus `protobuf:"varint,10,opt,name=session_status,json=sessionStatus,proto3,enum=session.v1.SessionStatus" json:"session_status,omitempty"` - // Short git status summary (e.g. "2 modified, 1 untracked"). - // Only populated when a live worktree exists for this entry. - GitStatusSummary string `protobuf:"bytes,11,opt,name=git_status_summary,json=gitStatusSummary,proto3" json:"git_status_summary,omitempty"` - // Message of the most recent git commit in the project directory. - // Only populated when a live worktree exists for this entry. - LastCommitMessage string `protobuf:"bytes,12,opt,name=last_commit_message,json=lastCommitMessage,proto3" json:"last_commit_message,omitempty"` - // Number of files changed in the worktree diff vs HEAD. - // Only populated when a live worktree exists for this entry. - DiffFileCount int32 `protobuf:"varint,13,opt,name=diff_file_count,json=diffFileCount,proto3" json:"diff_file_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClaudeHistoryEntry) Reset() { - *x = ClaudeHistoryEntry{} - mi := &file_session_v1_session_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClaudeHistoryEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClaudeHistoryEntry) ProtoMessage() {} - -func (x *ClaudeHistoryEntry) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[36] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClaudeHistoryEntry.ProtoReflect.Descriptor instead. -func (*ClaudeHistoryEntry) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{36} -} - -func (x *ClaudeHistoryEntry) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *ClaudeHistoryEntry) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ClaudeHistoryEntry) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *ClaudeHistoryEntry) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *ClaudeHistoryEntry) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *ClaudeHistoryEntry) GetModel() string { - if x != nil { - return x.Model - } - return "" -} - -func (x *ClaudeHistoryEntry) GetMessageCount() int32 { - if x != nil { - return x.MessageCount - } - return 0 -} - -func (x *ClaudeHistoryEntry) GetVcsStatus() *VCSStatus { - if x != nil { - return x.VcsStatus - } - return nil -} - -func (x *ClaudeHistoryEntry) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -func (x *ClaudeHistoryEntry) GetSessionStatus() SessionStatus { - if x != nil { - return x.SessionStatus - } - return SessionStatus_SESSION_STATUS_UNSPECIFIED -} - -func (x *ClaudeHistoryEntry) GetGitStatusSummary() string { - if x != nil { - return x.GitStatusSummary - } - return "" -} - -func (x *ClaudeHistoryEntry) GetLastCommitMessage() string { - if x != nil { - return x.LastCommitMessage - } - return "" -} - -func (x *ClaudeHistoryEntry) GetDiffFileCount() int32 { - if x != nil { - return x.DiffFileCount - } - return 0 -} - -type GetClaudeHistoryMessagesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // History entry ID (session ID) - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Optional limit on number of messages to return - Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` - // Optional offset for pagination (reads from the start of the conversation) - Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` - // When true and limit > 0, return the last `limit` messages instead of the - // first `limit` messages. Used by the preview panel to efficiently read - // the tail of a large conversation file without loading the whole file. - // Mutually exclusive with offset. - Tail bool `protobuf:"varint,4,opt,name=tail,proto3" json:"tail,omitempty"` - // When set, overrides offset: the server centers the returned page on - // this message index (offset = max(0, anchor_index - limit/2)), - // enabling forward/backward scroll paging without re-running search. - // Mutually exclusive with tail. - AnchorIndex *int32 `protobuf:"varint,5,opt,name=anchor_index,json=anchorIndex,proto3,oneof" json:"anchor_index,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetClaudeHistoryMessagesRequest) Reset() { - *x = GetClaudeHistoryMessagesRequest{} - mi := &file_session_v1_session_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetClaudeHistoryMessagesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetClaudeHistoryMessagesRequest) ProtoMessage() {} - -func (x *GetClaudeHistoryMessagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[37] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetClaudeHistoryMessagesRequest.ProtoReflect.Descriptor instead. -func (*GetClaudeHistoryMessagesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{37} -} - -func (x *GetClaudeHistoryMessagesRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *GetClaudeHistoryMessagesRequest) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 -} - -func (x *GetClaudeHistoryMessagesRequest) GetOffset() int32 { - if x != nil { - return x.Offset - } - return 0 -} - -func (x *GetClaudeHistoryMessagesRequest) GetTail() bool { - if x != nil { - return x.Tail - } - return false -} - -func (x *GetClaudeHistoryMessagesRequest) GetAnchorIndex() int32 { - if x != nil && x.AnchorIndex != nil { - return *x.AnchorIndex - } - return 0 -} - -type GetClaudeHistoryMessagesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Messages from the conversation - Messages []*ClaudeMessage `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` - // Total number of messages in the conversation - TotalCount int32 `protobuf:"varint,2,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetClaudeHistoryMessagesResponse) Reset() { - *x = GetClaudeHistoryMessagesResponse{} - mi := &file_session_v1_session_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetClaudeHistoryMessagesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetClaudeHistoryMessagesResponse) ProtoMessage() {} - -func (x *GetClaudeHistoryMessagesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[38] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetClaudeHistoryMessagesResponse.ProtoReflect.Descriptor instead. -func (*GetClaudeHistoryMessagesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{38} -} - -func (x *GetClaudeHistoryMessagesResponse) GetMessages() []*ClaudeMessage { - if x != nil { - return x.Messages - } - return nil -} - -func (x *GetClaudeHistoryMessagesResponse) GetTotalCount() int32 { - if x != nil { - return x.TotalCount - } - return 0 -} - -type ClaudeMessage struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Message role (user or assistant) - Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` - // Message content (text or JSON string) - Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` - // Message timestamp - Timestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Model used (for assistant messages) - Model string `protobuf:"bytes,4,opt,name=model,proto3" json:"model,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClaudeMessage) Reset() { - *x = ClaudeMessage{} - mi := &file_session_v1_session_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClaudeMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClaudeMessage) ProtoMessage() {} - -func (x *ClaudeMessage) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[39] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClaudeMessage.ProtoReflect.Descriptor instead. -func (*ClaudeMessage) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{39} -} - -func (x *ClaudeMessage) GetRole() string { - if x != nil { - return x.Role - } - return "" -} - -func (x *ClaudeMessage) GetContent() string { - if x != nil { - return x.Content - } - return "" -} - -func (x *ClaudeMessage) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -func (x *ClaudeMessage) GetModel() string { - if x != nil { - return x.Model - } - return "" -} - -type SearchClaudeHistoryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Search query (required). Supports natural language queries. - Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` - // Optional project path filter. - Project *string `protobuf:"bytes,2,opt,name=project,proto3,oneof" json:"project,omitempty"` - // Optional model filter (e.g., "claude-sonnet-4"). - Model *string `protobuf:"bytes,3,opt,name=model,proto3,oneof" json:"model,omitempty"` - // Optional start of date range filter. - StartTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"` - // Optional end of date range filter. - EndTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"` - // Maximum number of results to return (default: 20, max: 100). - Limit int32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` - // Number of results to skip for pagination (default: 0). - Offset int32 `protobuf:"varint,7,opt,name=offset,proto3" json:"offset,omitempty"` - // When true, collapse results to one entry per session (highest-scored - // hit kept; others counted via more_matches_in_session_count). Default false. - GroupBySession *bool `protobuf:"varint,8,opt,name=group_by_session,json=groupBySession,proto3,oneof" json:"group_by_session,omitempty"` - // When true, populate context_window/bookend_first/bookend_last on each - // retained result. Default false. - IncludeContext *bool `protobuf:"varint,9,opt,name=include_context,json=includeContext,proto3,oneof" json:"include_context,omitempty"` - // When true, best-effort exclude sessions whose live Instance has - // Hidden=true. Sessions with no live Instance record are NOT excluded - // (signal unavailable, not assumed absent). Default false. - ExcludeAutomationSessions *bool `protobuf:"varint,10,opt,name=exclude_automation_sessions,json=excludeAutomationSessions,proto3,oneof" json:"exclude_automation_sessions,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SearchClaudeHistoryRequest) Reset() { - *x = SearchClaudeHistoryRequest{} - mi := &file_session_v1_session_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SearchClaudeHistoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SearchClaudeHistoryRequest) ProtoMessage() {} - -func (x *SearchClaudeHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[40] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SearchClaudeHistoryRequest.ProtoReflect.Descriptor instead. -func (*SearchClaudeHistoryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{40} -} - -func (x *SearchClaudeHistoryRequest) GetQuery() string { - if x != nil { - return x.Query - } - return "" -} - -func (x *SearchClaudeHistoryRequest) GetProject() string { - if x != nil && x.Project != nil { - return *x.Project - } - return "" -} - -func (x *SearchClaudeHistoryRequest) GetModel() string { - if x != nil && x.Model != nil { - return *x.Model - } - return "" -} - -func (x *SearchClaudeHistoryRequest) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime - } - return nil -} - -func (x *SearchClaudeHistoryRequest) GetEndTime() *timestamppb.Timestamp { - if x != nil { - return x.EndTime - } - return nil -} - -func (x *SearchClaudeHistoryRequest) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 -} - -func (x *SearchClaudeHistoryRequest) GetOffset() int32 { - if x != nil { - return x.Offset - } - return 0 -} - -func (x *SearchClaudeHistoryRequest) GetGroupBySession() bool { - if x != nil && x.GroupBySession != nil { - return *x.GroupBySession - } - return false -} - -func (x *SearchClaudeHistoryRequest) GetIncludeContext() bool { - if x != nil && x.IncludeContext != nil { - return *x.IncludeContext - } - return false -} - -func (x *SearchClaudeHistoryRequest) GetExcludeAutomationSessions() bool { - if x != nil && x.ExcludeAutomationSessions != nil { - return *x.ExcludeAutomationSessions - } - return false -} - -type SearchClaudeHistoryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // List of search results, ranked by relevance. - Results []*SearchResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` - // Total number of matching documents (before pagination). - TotalMatches int32 `protobuf:"varint,2,opt,name=total_matches,json=totalMatches,proto3" json:"total_matches,omitempty"` - // Query execution time in milliseconds. - QueryTimeMs int64 `protobuf:"varint,3,opt,name=query_time_ms,json=queryTimeMs,proto3" json:"query_time_ms,omitempty"` - // Indicates if there are more results available. - HasMore bool `protobuf:"varint,4,opt,name=has_more,json=hasMore,proto3" json:"has_more,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SearchClaudeHistoryResponse) Reset() { - *x = SearchClaudeHistoryResponse{} - mi := &file_session_v1_session_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SearchClaudeHistoryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SearchClaudeHistoryResponse) ProtoMessage() {} - -func (x *SearchClaudeHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[41] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SearchClaudeHistoryResponse.ProtoReflect.Descriptor instead. -func (*SearchClaudeHistoryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{41} -} - -func (x *SearchClaudeHistoryResponse) GetResults() []*SearchResult { - if x != nil { - return x.Results - } - return nil -} - -func (x *SearchClaudeHistoryResponse) GetTotalMatches() int32 { - if x != nil { - return x.TotalMatches - } - return 0 -} - -func (x *SearchClaudeHistoryResponse) GetQueryTimeMs() int64 { - if x != nil { - return x.QueryTimeMs - } - return 0 -} - -func (x *SearchClaudeHistoryResponse) GetHasMore() bool { - if x != nil { - return x.HasMore - } - return false -} - -type SearchResult struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The conversation/session ID containing this match. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Conversation name/title. - SessionName string `protobuf:"bytes,2,opt,name=session_name,json=sessionName,proto3" json:"session_name,omitempty"` - // Project/directory path. - Project string `protobuf:"bytes,3,opt,name=project,proto3" json:"project,omitempty"` - // Index of the matched message within the conversation. - MessageIndex int32 `protobuf:"varint,4,opt,name=message_index,json=messageIndex,proto3" json:"message_index,omitempty"` - // BM25 relevance score (higher is more relevant). - Score float32 `protobuf:"fixed32,5,opt,name=score,proto3" json:"score,omitempty"` - // Contextual snippets showing where the query terms appear. - Snippets []*SearchSnippet `protobuf:"bytes,6,rep,name=snippets,proto3" json:"snippets,omitempty"` - // Metadata about the match source. - Metadata *SearchResultMetadata `protobuf:"bytes,7,opt,name=metadata,proto3" json:"metadata,omitempty"` - // Count of additional matching messages in this session beyond this hit. - // Only meaningful when the request set group_by_session=true. - MoreMatchesInSessionCount int32 `protobuf:"varint,8,opt,name=more_matches_in_session_count,json=moreMatchesInSessionCount,proto3" json:"more_matches_in_session_count,omitempty"` - // ±5 messages around message_index, read from the raw conversation file. - // Populated only when the request set include_context=true. - ContextWindow []*ClaudeMessage `protobuf:"bytes,9,rep,name=context_window,json=contextWindow,proto3" json:"context_window,omitempty"` - // First 3 messages of the session. Empty when context_window already - // spans the full session (see contextWindowAndBookends). - BookendFirst []*ClaudeMessage `protobuf:"bytes,10,rep,name=bookend_first,json=bookendFirst,proto3" json:"bookend_first,omitempty"` - // Last 3 messages of the session. Empty when context_window already - // spans the full session. - BookendLast []*ClaudeMessage `protobuf:"bytes,11,rep,name=bookend_last,json=bookendLast,proto3" json:"bookend_last,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SearchResult) Reset() { - *x = SearchResult{} - mi := &file_session_v1_session_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SearchResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SearchResult) ProtoMessage() {} - -func (x *SearchResult) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[42] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SearchResult.ProtoReflect.Descriptor instead. -func (*SearchResult) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{42} -} - -func (x *SearchResult) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *SearchResult) GetSessionName() string { - if x != nil { - return x.SessionName - } - return "" -} - -func (x *SearchResult) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *SearchResult) GetMessageIndex() int32 { - if x != nil { - return x.MessageIndex - } - return 0 -} - -func (x *SearchResult) GetScore() float32 { - if x != nil { - return x.Score - } - return 0 -} - -func (x *SearchResult) GetSnippets() []*SearchSnippet { - if x != nil { - return x.Snippets - } - return nil -} - -func (x *SearchResult) GetMetadata() *SearchResultMetadata { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *SearchResult) GetMoreMatchesInSessionCount() int32 { - if x != nil { - return x.MoreMatchesInSessionCount - } - return 0 -} - -func (x *SearchResult) GetContextWindow() []*ClaudeMessage { - if x != nil { - return x.ContextWindow - } - return nil -} - -func (x *SearchResult) GetBookendFirst() []*ClaudeMessage { - if x != nil { - return x.BookendFirst - } - return nil -} - -func (x *SearchResult) GetBookendLast() []*ClaudeMessage { - if x != nil { - return x.BookendLast - } - return nil -} - -type SearchSnippet struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Snippet text with surrounding context. - Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` - // Ranges within text that should be highlighted. - HighlightRanges []*HighlightRange `protobuf:"bytes,2,rep,name=highlight_ranges,json=highlightRanges,proto3" json:"highlight_ranges,omitempty"` - // Role of the message (user, assistant, system). - MessageRole string `protobuf:"bytes,3,opt,name=message_role,json=messageRole,proto3" json:"message_role,omitempty"` - // When the message was created. - MessageTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=message_time,json=messageTime,proto3" json:"message_time,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SearchSnippet) Reset() { - *x = SearchSnippet{} - mi := &file_session_v1_session_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SearchSnippet) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SearchSnippet) ProtoMessage() {} - -func (x *SearchSnippet) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[43] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SearchSnippet.ProtoReflect.Descriptor instead. -func (*SearchSnippet) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{43} -} - -func (x *SearchSnippet) GetText() string { - if x != nil { - return x.Text - } - return "" -} - -func (x *SearchSnippet) GetHighlightRanges() []*HighlightRange { - if x != nil { - return x.HighlightRanges - } - return nil -} - -func (x *SearchSnippet) GetMessageRole() string { - if x != nil { - return x.MessageRole - } - return "" -} - -func (x *SearchSnippet) GetMessageTime() *timestamppb.Timestamp { - if x != nil { - return x.MessageTime - } - return nil -} - -type HighlightRange struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Start position in text (character offset). - Start int32 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` - // End position in text (character offset). - End int32 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *HighlightRange) Reset() { - *x = HighlightRange{} - mi := &file_session_v1_session_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *HighlightRange) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HighlightRange) ProtoMessage() {} - -func (x *HighlightRange) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[44] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HighlightRange.ProtoReflect.Descriptor instead. -func (*HighlightRange) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{44} -} - -func (x *HighlightRange) GetStart() int32 { - if x != nil { - return x.Start - } - return 0 -} - -func (x *HighlightRange) GetEnd() int32 { - if x != nil { - return x.End - } - return 0 -} - -type SearchResultMetadata struct { - state protoimpl.MessageState `protogen:"open.v1"` - // True if match is in session name/project (vs message content). - IsMetadataMatch bool `protobuf:"varint,1,opt,name=is_metadata_match,json=isMetadataMatch,proto3" json:"is_metadata_match,omitempty"` - // Source of the match: "session_name", "project", "message_content". - MatchSource string `protobuf:"bytes,2,opt,name=match_source,json=matchSource,proto3" json:"match_source,omitempty"` - // Claude model used in this conversation. - Model string `protobuf:"bytes,3,opt,name=model,proto3" json:"model,omitempty"` - // Conversation creation timestamp. - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SearchResultMetadata) Reset() { - *x = SearchResultMetadata{} - mi := &file_session_v1_session_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SearchResultMetadata) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SearchResultMetadata) ProtoMessage() {} - -func (x *SearchResultMetadata) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[45] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SearchResultMetadata.ProtoReflect.Descriptor instead. -func (*SearchResultMetadata) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{45} -} - -func (x *SearchResultMetadata) GetIsMetadataMatch() bool { - if x != nil { - return x.IsMetadataMatch - } - return false -} - -func (x *SearchResultMetadata) GetMatchSource() string { - if x != nil { - return x.MatchSource - } - return "" -} - -func (x *SearchResultMetadata) GetModel() string { - if x != nil { - return x.Model - } - return "" -} - -func (x *SearchResultMetadata) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -type GetPRInfoRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier (must be a PR session) - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetPRInfoRequest) Reset() { - *x = GetPRInfoRequest{} - mi := &file_session_v1_session_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetPRInfoRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetPRInfoRequest) ProtoMessage() {} - -func (x *GetPRInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[46] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetPRInfoRequest.ProtoReflect.Descriptor instead. -func (*GetPRInfoRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{46} -} - -func (x *GetPRInfoRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type GetPRInfoResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // PR metadata - PrInfo *PRInfo `protobuf:"bytes,1,opt,name=pr_info,json=prInfo,proto3" json:"pr_info,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetPRInfoResponse) Reset() { - *x = GetPRInfoResponse{} - mi := &file_session_v1_session_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetPRInfoResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetPRInfoResponse) ProtoMessage() {} - -func (x *GetPRInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[47] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetPRInfoResponse.ProtoReflect.Descriptor instead. -func (*GetPRInfoResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{47} -} - -func (x *GetPRInfoResponse) GetPrInfo() *PRInfo { - if x != nil { - return x.PrInfo - } - return nil -} - -type GetPRCommentsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier (must be a PR session) - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetPRCommentsRequest) Reset() { - *x = GetPRCommentsRequest{} - mi := &file_session_v1_session_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetPRCommentsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetPRCommentsRequest) ProtoMessage() {} - -func (x *GetPRCommentsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[48] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetPRCommentsRequest.ProtoReflect.Descriptor instead. -func (*GetPRCommentsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{48} -} - -func (x *GetPRCommentsRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type GetPRCommentsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // List of PR comments - Comments []*PRComment `protobuf:"bytes,1,rep,name=comments,proto3" json:"comments,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetPRCommentsResponse) Reset() { - *x = GetPRCommentsResponse{} - mi := &file_session_v1_session_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetPRCommentsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetPRCommentsResponse) ProtoMessage() {} - -func (x *GetPRCommentsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[49] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetPRCommentsResponse.ProtoReflect.Descriptor instead. -func (*GetPRCommentsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{49} -} - -func (x *GetPRCommentsResponse) GetComments() []*PRComment { - if x != nil { - return x.Comments - } - return nil -} - -type PostPRCommentRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier (must be a PR session) - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Comment body (required) - Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PostPRCommentRequest) Reset() { - *x = PostPRCommentRequest{} - mi := &file_session_v1_session_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PostPRCommentRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PostPRCommentRequest) ProtoMessage() {} - -func (x *PostPRCommentRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[50] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PostPRCommentRequest.ProtoReflect.Descriptor instead. -func (*PostPRCommentRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{50} -} - -func (x *PostPRCommentRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *PostPRCommentRequest) GetBody() string { - if x != nil { - return x.Body - } - return "" -} - -type PostPRCommentResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether the comment was successfully posted - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Human-readable message - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PostPRCommentResponse) Reset() { - *x = PostPRCommentResponse{} - mi := &file_session_v1_session_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PostPRCommentResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PostPRCommentResponse) ProtoMessage() {} - -func (x *PostPRCommentResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[51] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PostPRCommentResponse.ProtoReflect.Descriptor instead. -func (*PostPRCommentResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{51} -} - -func (x *PostPRCommentResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *PostPRCommentResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type MergePRRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier (must be a PR session) - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Merge method: "merge", "squash", or "rebase" (default: "merge") - Method *string `protobuf:"bytes,2,opt,name=method,proto3,oneof" json:"method,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *MergePRRequest) Reset() { - *x = MergePRRequest{} - mi := &file_session_v1_session_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MergePRRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MergePRRequest) ProtoMessage() {} - -func (x *MergePRRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[52] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MergePRRequest.ProtoReflect.Descriptor instead. -func (*MergePRRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{52} -} - -func (x *MergePRRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *MergePRRequest) GetMethod() string { - if x != nil && x.Method != nil { - return *x.Method - } - return "" -} - -type MergePRResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether the PR was successfully merged - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Human-readable message - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *MergePRResponse) Reset() { - *x = MergePRResponse{} - mi := &file_session_v1_session_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MergePRResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MergePRResponse) ProtoMessage() {} - -func (x *MergePRResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[53] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MergePRResponse.ProtoReflect.Descriptor instead. -func (*MergePRResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{53} -} - -func (x *MergePRResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *MergePRResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type ClosePRRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier (must be a PR session) - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClosePRRequest) Reset() { - *x = ClosePRRequest{} - mi := &file_session_v1_session_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClosePRRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClosePRRequest) ProtoMessage() {} - -func (x *ClosePRRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[54] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClosePRRequest.ProtoReflect.Descriptor instead. -func (*ClosePRRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{54} -} - -func (x *ClosePRRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type ClosePRResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether the PR was successfully closed - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Human-readable message - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClosePRResponse) Reset() { - *x = ClosePRResponse{} - mi := &file_session_v1_session_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClosePRResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClosePRResponse) ProtoMessage() {} - -func (x *ClosePRResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[55] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClosePRResponse.ProtoReflect.Descriptor instead. -func (*ClosePRResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{55} -} - -func (x *ClosePRResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *ClosePRResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -// SendNotificationRequest allows tmux sessions to send notifications. -type SendNotificationRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier sending the notification (required) - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Type of notification (determines default priority and UI treatment) - NotificationType NotificationType `protobuf:"varint,2,opt,name=notification_type,json=notificationType,proto3,enum=session.v1.NotificationType" json:"notification_type,omitempty"` - // Priority level (optional, overrides default for notification type) - Priority NotificationPriority `protobuf:"varint,3,opt,name=priority,proto3,enum=session.v1.NotificationPriority" json:"priority,omitempty"` - // Human-readable title (required) - Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` - // Detailed message (optional) - Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` - // Optional metadata (key-value pairs for additional context) - // Common keys: "command", "file", "duration", "error_code" - Metadata map[string]string `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SendNotificationRequest) Reset() { - *x = SendNotificationRequest{} - mi := &file_session_v1_session_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SendNotificationRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SendNotificationRequest) ProtoMessage() {} - -func (x *SendNotificationRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[56] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SendNotificationRequest.ProtoReflect.Descriptor instead. -func (*SendNotificationRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{56} -} - -func (x *SendNotificationRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *SendNotificationRequest) GetNotificationType() NotificationType { - if x != nil { - return x.NotificationType - } - return NotificationType_NOTIFICATION_TYPE_UNSPECIFIED -} - -func (x *SendNotificationRequest) GetPriority() NotificationPriority { - if x != nil { - return x.Priority - } - return NotificationPriority_NOTIFICATION_PRIORITY_UNSPECIFIED -} - -func (x *SendNotificationRequest) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *SendNotificationRequest) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *SendNotificationRequest) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -// SendNotificationResponse confirms notification was received. -type SendNotificationResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether notification was accepted and broadcast - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Human-readable response message - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - // Notification ID (for tracking/debugging) - NotificationId string `protobuf:"bytes,3,opt,name=notification_id,json=notificationId,proto3" json:"notification_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SendNotificationResponse) Reset() { - *x = SendNotificationResponse{} - mi := &file_session_v1_session_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SendNotificationResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SendNotificationResponse) ProtoMessage() {} - -func (x *SendNotificationResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[57] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SendNotificationResponse.ProtoReflect.Descriptor instead. -func (*SendNotificationResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{57} -} - -func (x *SendNotificationResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *SendNotificationResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *SendNotificationResponse) GetNotificationId() string { - if x != nil { - return x.NotificationId - } - return "" -} - -// FocusWindowRequest specifies which application window to bring to front. -type FocusWindowRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // macOS bundle identifier (e.g., "com.jetbrains.intellij", "com.microsoft.VSCode") - // This is the preferred method for window activation. - BundleId *string `protobuf:"bytes,1,opt,name=bundle_id,json=bundleId,proto3,oneof" json:"bundle_id,omitempty"` - // Application name (e.g., "IntelliJ IDEA", "Visual Studio Code") - // Used as fallback if bundle_id is not provided. - AppName *string `protobuf:"bytes,2,opt,name=app_name,json=appName,proto3,oneof" json:"app_name,omitempty"` - // Process ID (optional, for more specific targeting) - Pid *int32 `protobuf:"varint,3,opt,name=pid,proto3,oneof" json:"pid,omitempty"` - // Project name/path (for IDEs that support project-specific activation) - Project *string `protobuf:"bytes,4,opt,name=project,proto3,oneof" json:"project,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FocusWindowRequest) Reset() { - *x = FocusWindowRequest{} - mi := &file_session_v1_session_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FocusWindowRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FocusWindowRequest) ProtoMessage() {} - -func (x *FocusWindowRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[58] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FocusWindowRequest.ProtoReflect.Descriptor instead. -func (*FocusWindowRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{58} -} - -func (x *FocusWindowRequest) GetBundleId() string { - if x != nil && x.BundleId != nil { - return *x.BundleId - } - return "" -} - -func (x *FocusWindowRequest) GetAppName() string { - if x != nil && x.AppName != nil { - return *x.AppName - } - return "" -} - -func (x *FocusWindowRequest) GetPid() int32 { - if x != nil && x.Pid != nil { - return *x.Pid - } - return 0 -} - -func (x *FocusWindowRequest) GetProject() string { - if x != nil && x.Project != nil { - return *x.Project - } - return "" -} - -// FocusWindowResponse indicates whether window activation succeeded. -type FocusWindowResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether the window was successfully activated - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Human-readable message (error details if failed) - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - // Platform (e.g., "darwin", "linux", "windows") - Platform string `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FocusWindowResponse) Reset() { - *x = FocusWindowResponse{} - mi := &file_session_v1_session_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FocusWindowResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FocusWindowResponse) ProtoMessage() {} - -func (x *FocusWindowResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[59] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FocusWindowResponse.ProtoReflect.Descriptor instead. -func (*FocusWindowResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{59} -} - -func (x *FocusWindowResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *FocusWindowResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *FocusWindowResponse) GetPlatform() string { - if x != nil { - return x.Platform - } - return "" -} - -// RenameSessionRequest changes the title of an existing session. -type RenameSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier (uses session title as ID). - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // New title for the session (must be unique). - NewTitle string `protobuf:"bytes,2,opt,name=new_title,json=newTitle,proto3" json:"new_title,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RenameSessionRequest) Reset() { - *x = RenameSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RenameSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RenameSessionRequest) ProtoMessage() {} - -func (x *RenameSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[60] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RenameSessionRequest.ProtoReflect.Descriptor instead. -func (*RenameSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{60} -} - -func (x *RenameSessionRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *RenameSessionRequest) GetNewTitle() string { - if x != nil { - return x.NewTitle - } - return "" -} - -// RenameSessionResponse returns the updated session. -type RenameSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Updated session with new title. - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RenameSessionResponse) Reset() { - *x = RenameSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RenameSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RenameSessionResponse) ProtoMessage() {} - -func (x *RenameSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[61] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RenameSessionResponse.ProtoReflect.Descriptor instead. -func (*RenameSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{61} -} - -func (x *RenameSessionResponse) GetSession() *Session { - if x != nil { - return x.Session - } - return nil -} - -// RestartSessionRequest restarts a session. -type RestartSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier (uses session title as ID). - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Optional: preserve terminal output before restart (default: false). - PreserveOutput bool `protobuf:"varint,2,opt,name=preserve_output,json=preserveOutput,proto3" json:"preserve_output,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RestartSessionRequest) Reset() { - *x = RestartSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RestartSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RestartSessionRequest) ProtoMessage() {} - -func (x *RestartSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[62] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RestartSessionRequest.ProtoReflect.Descriptor instead. -func (*RestartSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{62} -} - -func (x *RestartSessionRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *RestartSessionRequest) GetPreserveOutput() bool { - if x != nil { - return x.PreserveOutput - } - return false -} - -// RestartSessionResponse indicates restart success. -type RestartSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Restarted session. - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - // Whether the restart was successful. - Success bool `protobuf:"varint,2,opt,name=success,proto3" json:"success,omitempty"` - // Human-readable message (error details if failed). - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RestartSessionResponse) Reset() { - *x = RestartSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RestartSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RestartSessionResponse) ProtoMessage() {} - -func (x *RestartSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[63] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RestartSessionResponse.ProtoReflect.Descriptor instead. -func (*RestartSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{63} -} - -func (x *RestartSessionResponse) GetSession() *Session { - if x != nil { - return x.Session - } - return nil -} - -func (x *RestartSessionResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *RestartSessionResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -// GetWorkspaceInfoRequest retrieves VCS information for a session. -type GetWorkspaceInfoRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetWorkspaceInfoRequest) Reset() { - *x = GetWorkspaceInfoRequest{} - mi := &file_session_v1_session_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetWorkspaceInfoRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetWorkspaceInfoRequest) ProtoMessage() {} - -func (x *GetWorkspaceInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[64] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetWorkspaceInfoRequest.ProtoReflect.Descriptor instead. -func (*GetWorkspaceInfoRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{64} -} - -func (x *GetWorkspaceInfoRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -// GetWorkspaceInfoResponse returns VCS and workspace information. -type GetWorkspaceInfoResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // VCS and workspace information. - VcsInfo *VCSInfo `protobuf:"bytes,1,opt,name=vcs_info,json=vcsInfo,proto3" json:"vcs_info,omitempty"` - // Error message if VCS info couldn't be retrieved. - Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetWorkspaceInfoResponse) Reset() { - *x = GetWorkspaceInfoResponse{} - mi := &file_session_v1_session_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetWorkspaceInfoResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetWorkspaceInfoResponse) ProtoMessage() {} - -func (x *GetWorkspaceInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[65] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetWorkspaceInfoResponse.ProtoReflect.Descriptor instead. -func (*GetWorkspaceInfoResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{65} -} - -func (x *GetWorkspaceInfoResponse) GetVcsInfo() *VCSInfo { - if x != nil { - return x.VcsInfo - } - return nil -} - -func (x *GetWorkspaceInfoResponse) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -// ListWorkspaceTargetsRequest retrieves available switch targets for a session. -type ListWorkspaceTargetsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListWorkspaceTargetsRequest) Reset() { - *x = ListWorkspaceTargetsRequest{} - mi := &file_session_v1_session_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListWorkspaceTargetsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListWorkspaceTargetsRequest) ProtoMessage() {} - -func (x *ListWorkspaceTargetsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[66] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListWorkspaceTargetsRequest.ProtoReflect.Descriptor instead. -func (*ListWorkspaceTargetsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{66} -} - -func (x *ListWorkspaceTargetsRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -// ListWorkspaceTargetsResponse returns available workspace switch targets. -type ListWorkspaceTargetsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Available switch targets. - Targets *AvailableWorkspaceTargets `protobuf:"bytes,1,opt,name=targets,proto3" json:"targets,omitempty"` - // Error message if targets couldn't be retrieved. - Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListWorkspaceTargetsResponse) Reset() { - *x = ListWorkspaceTargetsResponse{} - mi := &file_session_v1_session_proto_msgTypes[67] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListWorkspaceTargetsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListWorkspaceTargetsResponse) ProtoMessage() {} - -func (x *ListWorkspaceTargetsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[67] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListWorkspaceTargetsResponse.ProtoReflect.Descriptor instead. -func (*ListWorkspaceTargetsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{67} -} - -func (x *ListWorkspaceTargetsResponse) GetTargets() *AvailableWorkspaceTargets { - if x != nil { - return x.Targets - } - return nil -} - -func (x *ListWorkspaceTargetsResponse) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -// SwitchWorkspaceRequest initiates a workspace switch for a session. -type SwitchWorkspaceRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Type of switch operation. - SwitchType WorkspaceSwitchType `protobuf:"varint,2,opt,name=switch_type,json=switchType,proto3,enum=session.v1.WorkspaceSwitchType" json:"switch_type,omitempty"` - // Target destination (branch name, revision ID, worktree path, or directory path). - Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - // Strategy for handling uncommitted changes. - ChangeStrategy ChangeStrategy `protobuf:"varint,4,opt,name=change_strategy,json=changeStrategy,proto3,enum=session.v1.ChangeStrategy" json:"change_strategy,omitempty"` - // Create the bookmark/branch/worktree if it doesn't exist. - CreateIfMissing bool `protobuf:"varint,5,opt,name=create_if_missing,json=createIfMissing,proto3" json:"create_if_missing,omitempty"` - // Base revision for new bookmark creation (empty = current). - BaseRevision string `protobuf:"bytes,6,opt,name=base_revision,json=baseRevision,proto3" json:"base_revision,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SwitchWorkspaceRequest) Reset() { - *x = SwitchWorkspaceRequest{} - mi := &file_session_v1_session_proto_msgTypes[68] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SwitchWorkspaceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SwitchWorkspaceRequest) ProtoMessage() {} - -func (x *SwitchWorkspaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[68] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SwitchWorkspaceRequest.ProtoReflect.Descriptor instead. -func (*SwitchWorkspaceRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{68} -} - -func (x *SwitchWorkspaceRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *SwitchWorkspaceRequest) GetSwitchType() WorkspaceSwitchType { - if x != nil { - return x.SwitchType - } - return WorkspaceSwitchType_WORKSPACE_SWITCH_TYPE_UNSPECIFIED -} - -func (x *SwitchWorkspaceRequest) GetTarget() string { - if x != nil { - return x.Target - } - return "" -} - -func (x *SwitchWorkspaceRequest) GetChangeStrategy() ChangeStrategy { - if x != nil { - return x.ChangeStrategy - } - return ChangeStrategy_CHANGE_STRATEGY_UNSPECIFIED -} - -func (x *SwitchWorkspaceRequest) GetCreateIfMissing() bool { - if x != nil { - return x.CreateIfMissing - } - return false -} - -func (x *SwitchWorkspaceRequest) GetBaseRevision() string { - if x != nil { - return x.BaseRevision - } - return "" -} - -// ResolveApprovalRequest approves or denies a pending tool use request. -type ResolveApprovalRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Unique approval ID (from notification metadata.approval_id). - ApprovalId string `protobuf:"bytes,1,opt,name=approval_id,json=approvalId,proto3" json:"approval_id,omitempty"` - // User's decision: "allow" or "deny". - Decision string `protobuf:"bytes,2,opt,name=decision,proto3" json:"decision,omitempty"` - // Optional reason shown to Claude when denying. - Message *string `protobuf:"bytes,3,opt,name=message,proto3,oneof" json:"message,omitempty"` - // When true, the caller explicitly acknowledges failing CI and re-submits an - // already-blocked approval; the server skips the CI-red guard for this request only. - OverrideCiBlock bool `protobuf:"varint,4,opt,name=override_ci_block,json=overrideCiBlock,proto3" json:"override_ci_block,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResolveApprovalRequest) Reset() { - *x = ResolveApprovalRequest{} - mi := &file_session_v1_session_proto_msgTypes[69] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResolveApprovalRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResolveApprovalRequest) ProtoMessage() {} - -func (x *ResolveApprovalRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[69] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResolveApprovalRequest.ProtoReflect.Descriptor instead. -func (*ResolveApprovalRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{69} -} - -func (x *ResolveApprovalRequest) GetApprovalId() string { - if x != nil { - return x.ApprovalId - } - return "" -} - -func (x *ResolveApprovalRequest) GetDecision() string { - if x != nil { - return x.Decision - } - return "" -} - -func (x *ResolveApprovalRequest) GetMessage() string { - if x != nil && x.Message != nil { - return *x.Message - } - return "" -} - -func (x *ResolveApprovalRequest) GetOverrideCiBlock() bool { - if x != nil { - return x.OverrideCiBlock - } - return false -} - -// ResolveApprovalResponse confirms the decision was received. -type ResolveApprovalResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResolveApprovalResponse) Reset() { - *x = ResolveApprovalResponse{} - mi := &file_session_v1_session_proto_msgTypes[70] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResolveApprovalResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResolveApprovalResponse) ProtoMessage() {} - -func (x *ResolveApprovalResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[70] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResolveApprovalResponse.ProtoReflect.Descriptor instead. -func (*ResolveApprovalResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{70} -} - -func (x *ResolveApprovalResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *ResolveApprovalResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -// ListPendingApprovalsRequest filters pending approvals. -type ListPendingApprovalsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Optional: only return approvals for this session. - SessionId *string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3,oneof" json:"session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListPendingApprovalsRequest) Reset() { - *x = ListPendingApprovalsRequest{} - mi := &file_session_v1_session_proto_msgTypes[71] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListPendingApprovalsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListPendingApprovalsRequest) ProtoMessage() {} - -func (x *ListPendingApprovalsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[71] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListPendingApprovalsRequest.ProtoReflect.Descriptor instead. -func (*ListPendingApprovalsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{71} -} - -func (x *ListPendingApprovalsRequest) GetSessionId() string { - if x != nil && x.SessionId != nil { - return *x.SessionId - } - return "" -} - -// ListPendingApprovalsResponse returns pending approvals. -type ListPendingApprovalsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Approvals []*PendingApprovalProto `protobuf:"bytes,1,rep,name=approvals,proto3" json:"approvals,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListPendingApprovalsResponse) Reset() { - *x = ListPendingApprovalsResponse{} - mi := &file_session_v1_session_proto_msgTypes[72] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListPendingApprovalsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListPendingApprovalsResponse) ProtoMessage() {} - -func (x *ListPendingApprovalsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[72] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListPendingApprovalsResponse.ProtoReflect.Descriptor instead. -func (*ListPendingApprovalsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{72} -} - -func (x *ListPendingApprovalsResponse) GetApprovals() []*PendingApprovalProto { - if x != nil { - return x.Approvals - } - return nil -} - -// SwitchWorkspaceResponse returns the result of a workspace switch operation. -type SwitchWorkspaceResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether the switch was successful. - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Human-readable message (error details if failed). - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - // Revision before the switch. - PreviousRevision string `protobuf:"bytes,3,opt,name=previous_revision,json=previousRevision,proto3" json:"previous_revision,omitempty"` - // Revision after the switch. - CurrentRevision string `protobuf:"bytes,4,opt,name=current_revision,json=currentRevision,proto3" json:"current_revision,omitempty"` - // VCS type that was used. - VcsType VCSType `protobuf:"varint,5,opt,name=vcs_type,json=vcsType,proto3,enum=session.v1.VCSType" json:"vcs_type,omitempty"` - // Description of how uncommitted changes were handled. - ChangesHandled string `protobuf:"bytes,6,opt,name=changes_handled,json=changesHandled,proto3" json:"changes_handled,omitempty"` - // Updated session after the switch. - Session *Session `protobuf:"bytes,7,opt,name=session,proto3" json:"session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SwitchWorkspaceResponse) Reset() { - *x = SwitchWorkspaceResponse{} - mi := &file_session_v1_session_proto_msgTypes[73] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SwitchWorkspaceResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SwitchWorkspaceResponse) ProtoMessage() {} - -func (x *SwitchWorkspaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[73] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SwitchWorkspaceResponse.ProtoReflect.Descriptor instead. -func (*SwitchWorkspaceResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{73} -} - -func (x *SwitchWorkspaceResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *SwitchWorkspaceResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *SwitchWorkspaceResponse) GetPreviousRevision() string { - if x != nil { - return x.PreviousRevision - } - return "" -} - -func (x *SwitchWorkspaceResponse) GetCurrentRevision() string { - if x != nil { - return x.CurrentRevision - } - return "" -} - -func (x *SwitchWorkspaceResponse) GetVcsType() VCSType { - if x != nil { - return x.VcsType - } - return VCSType_VCS_TYPE_UNSPECIFIED -} - -func (x *SwitchWorkspaceResponse) GetChangesHandled() string { - if x != nil { - return x.ChangesHandled - } - return "" -} - -func (x *SwitchWorkspaceResponse) GetSession() *Session { - if x != nil { - return x.Session - } - return nil -} - -// CreateDebugSnapshotRequest triggers a server-side diagnostic snapshot. -type CreateDebugSnapshotRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Optional user note describing the issue being diagnosed. - Note *string `protobuf:"bytes,1,opt,name=note,proto3,oneof" json:"note,omitempty"` - // Optional: Maximum number of recent log lines to include (default: 200). - LogLines *int32 `protobuf:"varint,2,opt,name=log_lines,json=logLines,proto3,oneof" json:"log_lines,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateDebugSnapshotRequest) Reset() { - *x = CreateDebugSnapshotRequest{} - mi := &file_session_v1_session_proto_msgTypes[74] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateDebugSnapshotRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateDebugSnapshotRequest) ProtoMessage() {} - -func (x *CreateDebugSnapshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[74] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateDebugSnapshotRequest.ProtoReflect.Descriptor instead. -func (*CreateDebugSnapshotRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{74} -} - -func (x *CreateDebugSnapshotRequest) GetNote() string { - if x != nil && x.Note != nil { - return *x.Note - } - return "" -} - -func (x *CreateDebugSnapshotRequest) GetLogLines() int32 { - if x != nil && x.LogLines != nil { - return *x.LogLines - } - return 0 -} - -// CreateDebugSnapshotResponse returns the path and summary of the written snapshot. -type CreateDebugSnapshotResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Absolute path to the written snapshot JSON file. - FilePath string `protobuf:"bytes,1,opt,name=file_path,json=filePath,proto3" json:"file_path,omitempty"` - // Human-readable summary (e.g., "Captured 5 sessions, 2 pending approvals, 200 log lines"). - Summary string `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"` - // Timestamp when the snapshot was created (RFC3339). - Timestamp string `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Size of the snapshot file in bytes. - FileSizeBytes int64 `protobuf:"varint,4,opt,name=file_size_bytes,json=fileSizeBytes,proto3" json:"file_size_bytes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateDebugSnapshotResponse) Reset() { - *x = CreateDebugSnapshotResponse{} - mi := &file_session_v1_session_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateDebugSnapshotResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateDebugSnapshotResponse) ProtoMessage() {} - -func (x *CreateDebugSnapshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[75] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateDebugSnapshotResponse.ProtoReflect.Descriptor instead. -func (*CreateDebugSnapshotResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{75} -} - -func (x *CreateDebugSnapshotResponse) GetFilePath() string { - if x != nil { - return x.FilePath - } - return "" -} - -func (x *CreateDebugSnapshotResponse) GetSummary() string { - if x != nil { - return x.Summary - } - return "" -} - -func (x *CreateDebugSnapshotResponse) GetTimestamp() string { - if x != nil { - return x.Timestamp - } - return "" -} - -func (x *CreateDebugSnapshotResponse) GetFileSizeBytes() int64 { - if x != nil { - return x.FileSizeBytes - } - return 0 -} - -// NotificationHistoryRecord represents a persisted notification. -type NotificationHistoryRecord struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - SessionName string `protobuf:"bytes,3,opt,name=session_name,json=sessionName,proto3" json:"session_name,omitempty"` - NotificationType NotificationType `protobuf:"varint,4,opt,name=notification_type,json=notificationType,proto3,enum=session.v1.NotificationType" json:"notification_type,omitempty"` - Priority NotificationPriority `protobuf:"varint,5,opt,name=priority,proto3,enum=session.v1.NotificationPriority" json:"priority,omitempty"` - Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"` - Message string `protobuf:"bytes,7,opt,name=message,proto3" json:"message,omitempty"` - Metadata map[string]string `protobuf:"bytes,8,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - IsRead bool `protobuf:"varint,10,opt,name=is_read,json=isRead,proto3" json:"is_read,omitempty"` - ReadAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=read_at,json=readAt,proto3,oneof" json:"read_at,omitempty"` - // Number of deduplicated occurrences this record represents. - // Default 0 means "1 occurrence" (backward-compatible with old clients). - OccurrenceCount int32 `protobuf:"varint,12,opt,name=occurrence_count,json=occurrenceCount,proto3" json:"occurrence_count,omitempty"` - // Timestamp of the most recent occurrence (may differ from created_at - // which tracks the first occurrence). - LastOccurredAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=last_occurred_at,json=lastOccurredAt,proto3,oneof" json:"last_occurred_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NotificationHistoryRecord) Reset() { - *x = NotificationHistoryRecord{} - mi := &file_session_v1_session_proto_msgTypes[76] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NotificationHistoryRecord) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NotificationHistoryRecord) ProtoMessage() {} - -func (x *NotificationHistoryRecord) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[76] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NotificationHistoryRecord.ProtoReflect.Descriptor instead. -func (*NotificationHistoryRecord) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{76} -} - -func (x *NotificationHistoryRecord) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *NotificationHistoryRecord) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *NotificationHistoryRecord) GetSessionName() string { - if x != nil { - return x.SessionName - } - return "" -} - -func (x *NotificationHistoryRecord) GetNotificationType() NotificationType { - if x != nil { - return x.NotificationType - } - return NotificationType_NOTIFICATION_TYPE_UNSPECIFIED -} - -func (x *NotificationHistoryRecord) GetPriority() NotificationPriority { - if x != nil { - return x.Priority - } - return NotificationPriority_NOTIFICATION_PRIORITY_UNSPECIFIED -} - -func (x *NotificationHistoryRecord) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *NotificationHistoryRecord) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *NotificationHistoryRecord) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *NotificationHistoryRecord) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *NotificationHistoryRecord) GetIsRead() bool { - if x != nil { - return x.IsRead - } - return false -} - -func (x *NotificationHistoryRecord) GetReadAt() *timestamppb.Timestamp { - if x != nil { - return x.ReadAt - } - return nil -} - -func (x *NotificationHistoryRecord) GetOccurrenceCount() int32 { - if x != nil { - return x.OccurrenceCount - } - return 0 -} - -func (x *NotificationHistoryRecord) GetLastOccurredAt() *timestamppb.Timestamp { - if x != nil { - return x.LastOccurredAt - } - return nil -} - -// GetNotificationHistoryRequest filters and paginates notification history. -type GetNotificationHistoryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Limit *int32 `protobuf:"varint,1,opt,name=limit,proto3,oneof" json:"limit,omitempty"` - Offset *int32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - TypeFilter *NotificationType `protobuf:"varint,3,opt,name=type_filter,json=typeFilter,proto3,enum=session.v1.NotificationType,oneof" json:"type_filter,omitempty"` - SessionId *string `protobuf:"bytes,4,opt,name=session_id,json=sessionId,proto3,oneof" json:"session_id,omitempty"` - UnreadOnly *bool `protobuf:"varint,5,opt,name=unread_only,json=unreadOnly,proto3,oneof" json:"unread_only,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetNotificationHistoryRequest) Reset() { - *x = GetNotificationHistoryRequest{} - mi := &file_session_v1_session_proto_msgTypes[77] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetNotificationHistoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetNotificationHistoryRequest) ProtoMessage() {} - -func (x *GetNotificationHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[77] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetNotificationHistoryRequest.ProtoReflect.Descriptor instead. -func (*GetNotificationHistoryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{77} -} - -func (x *GetNotificationHistoryRequest) GetLimit() int32 { - if x != nil && x.Limit != nil { - return *x.Limit - } - return 0 -} - -func (x *GetNotificationHistoryRequest) GetOffset() int32 { - if x != nil && x.Offset != nil { - return *x.Offset - } - return 0 -} - -func (x *GetNotificationHistoryRequest) GetTypeFilter() NotificationType { - if x != nil && x.TypeFilter != nil { - return *x.TypeFilter - } - return NotificationType_NOTIFICATION_TYPE_UNSPECIFIED -} - -func (x *GetNotificationHistoryRequest) GetSessionId() string { - if x != nil && x.SessionId != nil { - return *x.SessionId - } - return "" -} - -func (x *GetNotificationHistoryRequest) GetUnreadOnly() bool { - if x != nil && x.UnreadOnly != nil { - return *x.UnreadOnly - } - return false -} - -// GetNotificationHistoryResponse contains notification history results. -type GetNotificationHistoryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Notifications []*NotificationHistoryRecord `protobuf:"bytes,1,rep,name=notifications,proto3" json:"notifications,omitempty"` - TotalCount int32 `protobuf:"varint,2,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` - UnreadCount int32 `protobuf:"varint,3,opt,name=unread_count,json=unreadCount,proto3" json:"unread_count,omitempty"` - HasMore bool `protobuf:"varint,4,opt,name=has_more,json=hasMore,proto3" json:"has_more,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetNotificationHistoryResponse) Reset() { - *x = GetNotificationHistoryResponse{} - mi := &file_session_v1_session_proto_msgTypes[78] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetNotificationHistoryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetNotificationHistoryResponse) ProtoMessage() {} - -func (x *GetNotificationHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[78] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetNotificationHistoryResponse.ProtoReflect.Descriptor instead. -func (*GetNotificationHistoryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{78} -} - -func (x *GetNotificationHistoryResponse) GetNotifications() []*NotificationHistoryRecord { - if x != nil { - return x.Notifications - } - return nil -} - -func (x *GetNotificationHistoryResponse) GetTotalCount() int32 { - if x != nil { - return x.TotalCount - } - return 0 -} - -func (x *GetNotificationHistoryResponse) GetUnreadCount() int32 { - if x != nil { - return x.UnreadCount - } - return 0 -} - -func (x *GetNotificationHistoryResponse) GetHasMore() bool { - if x != nil { - return x.HasMore - } - return false -} - -// MarkNotificationReadRequest marks notifications as read. -// If notification_ids is empty, all notifications are marked as read. -type MarkNotificationReadRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - NotificationIds []string `protobuf:"bytes,1,rep,name=notification_ids,json=notificationIds,proto3" json:"notification_ids,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *MarkNotificationReadRequest) Reset() { - *x = MarkNotificationReadRequest{} - mi := &file_session_v1_session_proto_msgTypes[79] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MarkNotificationReadRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MarkNotificationReadRequest) ProtoMessage() {} - -func (x *MarkNotificationReadRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[79] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MarkNotificationReadRequest.ProtoReflect.Descriptor instead. -func (*MarkNotificationReadRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{79} -} - -func (x *MarkNotificationReadRequest) GetNotificationIds() []string { - if x != nil { - return x.NotificationIds - } - return nil -} - -// MarkNotificationReadResponse confirms how many notifications were marked. -type MarkNotificationReadResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - MarkedCount int32 `protobuf:"varint,2,opt,name=marked_count,json=markedCount,proto3" json:"marked_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *MarkNotificationReadResponse) Reset() { - *x = MarkNotificationReadResponse{} - mi := &file_session_v1_session_proto_msgTypes[80] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MarkNotificationReadResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MarkNotificationReadResponse) ProtoMessage() {} - -func (x *MarkNotificationReadResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[80] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MarkNotificationReadResponse.ProtoReflect.Descriptor instead. -func (*MarkNotificationReadResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{80} -} - -func (x *MarkNotificationReadResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *MarkNotificationReadResponse) GetMarkedCount() int32 { - if x != nil { - return x.MarkedCount - } - return 0 -} - -// ClearNotificationHistoryRequest removes notifications from history. -type ClearNotificationHistoryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Optional: Clear notifications older than this timestamp (RFC3339 string). - BeforeTimestamp *string `protobuf:"bytes,1,opt,name=before_timestamp,json=beforeTimestamp,proto3,oneof" json:"before_timestamp,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClearNotificationHistoryRequest) Reset() { - *x = ClearNotificationHistoryRequest{} - mi := &file_session_v1_session_proto_msgTypes[81] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClearNotificationHistoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClearNotificationHistoryRequest) ProtoMessage() {} - -func (x *ClearNotificationHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[81] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClearNotificationHistoryRequest.ProtoReflect.Descriptor instead. -func (*ClearNotificationHistoryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{81} -} - -func (x *ClearNotificationHistoryRequest) GetBeforeTimestamp() string { - if x != nil && x.BeforeTimestamp != nil { - return *x.BeforeTimestamp - } - return "" -} - -// ClearNotificationHistoryResponse confirms how many notifications were cleared. -type ClearNotificationHistoryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - ClearedCount int32 `protobuf:"varint,2,opt,name=cleared_count,json=clearedCount,proto3" json:"cleared_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClearNotificationHistoryResponse) Reset() { - *x = ClearNotificationHistoryResponse{} - mi := &file_session_v1_session_proto_msgTypes[82] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClearNotificationHistoryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClearNotificationHistoryResponse) ProtoMessage() {} - -func (x *ClearNotificationHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[82] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClearNotificationHistoryResponse.ProtoReflect.Descriptor instead. -func (*ClearNotificationHistoryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{82} -} - -func (x *ClearNotificationHistoryResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *ClearNotificationHistoryResponse) GetClearedCount() int32 { - if x != nil { - return x.ClearedCount - } - return 0 -} - -type ListApprovalRulesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Optional: filter by source ("user", "seed", "claude-settings"). Empty = all. - SourceFilter *string `protobuf:"bytes,1,opt,name=source_filter,json=sourceFilter,proto3,oneof" json:"source_filter,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListApprovalRulesRequest) Reset() { - *x = ListApprovalRulesRequest{} - mi := &file_session_v1_session_proto_msgTypes[83] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListApprovalRulesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListApprovalRulesRequest) ProtoMessage() {} - -func (x *ListApprovalRulesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[83] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListApprovalRulesRequest.ProtoReflect.Descriptor instead. -func (*ListApprovalRulesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{83} -} - -func (x *ListApprovalRulesRequest) GetSourceFilter() string { - if x != nil && x.SourceFilter != nil { - return *x.SourceFilter - } - return "" -} - -type ListApprovalRulesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Rules []*ApprovalRuleProto `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListApprovalRulesResponse) Reset() { - *x = ListApprovalRulesResponse{} - mi := &file_session_v1_session_proto_msgTypes[84] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListApprovalRulesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListApprovalRulesResponse) ProtoMessage() {} - -func (x *ListApprovalRulesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[84] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListApprovalRulesResponse.ProtoReflect.Descriptor instead. -func (*ListApprovalRulesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{84} -} - -func (x *ListApprovalRulesResponse) GetRules() []*ApprovalRuleProto { - if x != nil { - return x.Rules - } - return nil -} - -type UpsertApprovalRuleRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Rule *ApprovalRuleProto `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpsertApprovalRuleRequest) Reset() { - *x = UpsertApprovalRuleRequest{} - mi := &file_session_v1_session_proto_msgTypes[85] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpsertApprovalRuleRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpsertApprovalRuleRequest) ProtoMessage() {} - -func (x *UpsertApprovalRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[85] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpsertApprovalRuleRequest.ProtoReflect.Descriptor instead. -func (*UpsertApprovalRuleRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{85} -} - -func (x *UpsertApprovalRuleRequest) GetRule() *ApprovalRuleProto { - if x != nil { - return x.Rule - } - return nil -} - -type UpsertApprovalRuleResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Rule *ApprovalRuleProto `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"` - Created bool `protobuf:"varint,2,opt,name=created,proto3" json:"created,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpsertApprovalRuleResponse) Reset() { - *x = UpsertApprovalRuleResponse{} - mi := &file_session_v1_session_proto_msgTypes[86] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpsertApprovalRuleResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpsertApprovalRuleResponse) ProtoMessage() {} - -func (x *UpsertApprovalRuleResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[86] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpsertApprovalRuleResponse.ProtoReflect.Descriptor instead. -func (*UpsertApprovalRuleResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{86} -} - -func (x *UpsertApprovalRuleResponse) GetRule() *ApprovalRuleProto { - if x != nil { - return x.Rule - } - return nil -} - -func (x *UpsertApprovalRuleResponse) GetCreated() bool { - if x != nil { - return x.Created - } - return false -} - -type DeleteApprovalRuleRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteApprovalRuleRequest) Reset() { - *x = DeleteApprovalRuleRequest{} - mi := &file_session_v1_session_proto_msgTypes[87] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteApprovalRuleRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteApprovalRuleRequest) ProtoMessage() {} - -func (x *DeleteApprovalRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[87] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteApprovalRuleRequest.ProtoReflect.Descriptor instead. -func (*DeleteApprovalRuleRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{87} -} - -func (x *DeleteApprovalRuleRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type DeleteApprovalRuleResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteApprovalRuleResponse) Reset() { - *x = DeleteApprovalRuleResponse{} - mi := &file_session_v1_session_proto_msgTypes[88] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteApprovalRuleResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteApprovalRuleResponse) ProtoMessage() {} - -func (x *DeleteApprovalRuleResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[88] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteApprovalRuleResponse.ProtoReflect.Descriptor instead. -func (*DeleteApprovalRuleResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{88} -} - -func (x *DeleteApprovalRuleResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *DeleteApprovalRuleResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type GetApprovalAnalyticsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Time window in days (default 7, max 90). - WindowDays *int32 `protobuf:"varint,1,opt,name=window_days,json=windowDays,proto3,oneof" json:"window_days,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetApprovalAnalyticsRequest) Reset() { - *x = GetApprovalAnalyticsRequest{} - mi := &file_session_v1_session_proto_msgTypes[89] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetApprovalAnalyticsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetApprovalAnalyticsRequest) ProtoMessage() {} - -func (x *GetApprovalAnalyticsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[89] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetApprovalAnalyticsRequest.ProtoReflect.Descriptor instead. -func (*GetApprovalAnalyticsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{89} -} - -func (x *GetApprovalAnalyticsRequest) GetWindowDays() int32 { - if x != nil && x.WindowDays != nil { - return *x.WindowDays - } - return 0 -} - -type GetApprovalAnalyticsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Summary *AnalyticsSummaryProto `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` - // Daily breakdown sorted ascending by date, covering the requested window. - DailyBuckets []*DailyBucketProto `protobuf:"bytes,2,rep,name=daily_buckets,json=dailyBuckets,proto3" json:"daily_buckets,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetApprovalAnalyticsResponse) Reset() { - *x = GetApprovalAnalyticsResponse{} - mi := &file_session_v1_session_proto_msgTypes[90] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetApprovalAnalyticsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetApprovalAnalyticsResponse) ProtoMessage() {} - -func (x *GetApprovalAnalyticsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[90] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetApprovalAnalyticsResponse.ProtoReflect.Descriptor instead. -func (*GetApprovalAnalyticsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{90} -} - -func (x *GetApprovalAnalyticsResponse) GetSummary() *AnalyticsSummaryProto { - if x != nil { - return x.Summary - } - return nil -} - -func (x *GetApprovalAnalyticsResponse) GetDailyBuckets() []*DailyBucketProto { - if x != nil { - return x.DailyBuckets - } - return nil -} - -type GetProgramAnalyticsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // program is the executable name (e.g., "git", "gh", "npm"). - Program string `protobuf:"bytes,1,opt,name=program,proto3" json:"program,omitempty"` - // window_days controls the time window (default 7, max 90). - WindowDays *int32 `protobuf:"varint,2,opt,name=window_days,json=windowDays,proto3,oneof" json:"window_days,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetProgramAnalyticsRequest) Reset() { - *x = GetProgramAnalyticsRequest{} - mi := &file_session_v1_session_proto_msgTypes[91] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetProgramAnalyticsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetProgramAnalyticsRequest) ProtoMessage() {} - -func (x *GetProgramAnalyticsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[91] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetProgramAnalyticsRequest.ProtoReflect.Descriptor instead. -func (*GetProgramAnalyticsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{91} -} - -func (x *GetProgramAnalyticsRequest) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *GetProgramAnalyticsRequest) GetWindowDays() int32 { - if x != nil && x.WindowDays != nil { - return *x.WindowDays - } - return 0 -} - -type GetProgramAnalyticsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // program echoed from the request. - Program string `protobuf:"bytes,1,opt,name=program,proto3" json:"program,omitempty"` - // category is the program's category (e.g., "vcs", "node"). - Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"` - // subcommands contains per-subcommand decision breakdown, sorted by total descending. - Subcommands []*SubcommandBreakdownProto `protobuf:"bytes,3,rep,name=subcommands,proto3" json:"subcommands,omitempty"` - // recent_examples contains the last 20 raw command_preview strings across all subcommands. - RecentExamples []string `protobuf:"bytes,4,rep,name=recent_examples,json=recentExamples,proto3" json:"recent_examples,omitempty"` - // trend contains per-day counts for the whole program in the window. - Trend []*DailyBucketProto `protobuf:"bytes,5,rep,name=trend,proto3" json:"trend,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetProgramAnalyticsResponse) Reset() { - *x = GetProgramAnalyticsResponse{} - mi := &file_session_v1_session_proto_msgTypes[92] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetProgramAnalyticsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetProgramAnalyticsResponse) ProtoMessage() {} - -func (x *GetProgramAnalyticsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[92] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetProgramAnalyticsResponse.ProtoReflect.Descriptor instead. -func (*GetProgramAnalyticsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{92} -} - -func (x *GetProgramAnalyticsResponse) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *GetProgramAnalyticsResponse) GetCategory() string { - if x != nil { - return x.Category - } - return "" -} - -func (x *GetProgramAnalyticsResponse) GetSubcommands() []*SubcommandBreakdownProto { - if x != nil { - return x.Subcommands - } - return nil -} - -func (x *GetProgramAnalyticsResponse) GetRecentExamples() []string { - if x != nil { - return x.RecentExamples - } - return nil -} - -func (x *GetProgramAnalyticsResponse) GetTrend() []*DailyBucketProto { - if x != nil { - return x.Trend - } - return nil -} - -type ListDatabasesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListDatabasesRequest) Reset() { - *x = ListDatabasesRequest{} - mi := &file_session_v1_session_proto_msgTypes[93] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListDatabasesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListDatabasesRequest) ProtoMessage() {} - -func (x *ListDatabasesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[93] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListDatabasesRequest.ProtoReflect.Descriptor instead. -func (*ListDatabasesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{93} -} - -type ListDatabasesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // All discovered workspace databases. - Databases []*DatabaseInfo `protobuf:"bytes,1,rep,name=databases,proto3" json:"databases,omitempty"` - // Workspace ID of the currently active database. - CurrentWorkspaceId string `protobuf:"bytes,2,opt,name=current_workspace_id,json=currentWorkspaceId,proto3" json:"current_workspace_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListDatabasesResponse) Reset() { - *x = ListDatabasesResponse{} - mi := &file_session_v1_session_proto_msgTypes[94] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListDatabasesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListDatabasesResponse) ProtoMessage() {} - -func (x *ListDatabasesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[94] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListDatabasesResponse.ProtoReflect.Descriptor instead. -func (*ListDatabasesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{94} -} - -func (x *ListDatabasesResponse) GetDatabases() []*DatabaseInfo { - if x != nil { - return x.Databases - } - return nil -} - -func (x *ListDatabasesResponse) GetCurrentWorkspaceId() string { - if x != nil { - return x.CurrentWorkspaceId - } - return "" -} - -type GetCurrentDatabaseRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetCurrentDatabaseRequest) Reset() { - *x = GetCurrentDatabaseRequest{} - mi := &file_session_v1_session_proto_msgTypes[95] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetCurrentDatabaseRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetCurrentDatabaseRequest) ProtoMessage() {} - -func (x *GetCurrentDatabaseRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[95] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetCurrentDatabaseRequest.ProtoReflect.Descriptor instead. -func (*GetCurrentDatabaseRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{95} -} - -type GetCurrentDatabaseResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Metadata for the currently active workspace database. - Database *DatabaseInfo `protobuf:"bytes,1,opt,name=database,proto3" json:"database,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetCurrentDatabaseResponse) Reset() { - *x = GetCurrentDatabaseResponse{} - mi := &file_session_v1_session_proto_msgTypes[96] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetCurrentDatabaseResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetCurrentDatabaseResponse) ProtoMessage() {} - -func (x *GetCurrentDatabaseResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[96] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetCurrentDatabaseResponse.ProtoReflect.Descriptor instead. -func (*GetCurrentDatabaseResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{96} -} - -func (x *GetCurrentDatabaseResponse) GetDatabase() *DatabaseInfo { - if x != nil { - return x.Database - } - return nil -} - -// SwitchDatabaseRequest specifies the target workspace to switch to. -type SwitchDatabaseRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Absolute path to the target workspace config directory. - // Must be under ~/.stapler-squad/ for security. - ConfigDir string `protobuf:"bytes,1,opt,name=config_dir,json=configDir,proto3" json:"config_dir,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SwitchDatabaseRequest) Reset() { - *x = SwitchDatabaseRequest{} - mi := &file_session_v1_session_proto_msgTypes[97] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SwitchDatabaseRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SwitchDatabaseRequest) ProtoMessage() {} - -func (x *SwitchDatabaseRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[97] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SwitchDatabaseRequest.ProtoReflect.Descriptor instead. -func (*SwitchDatabaseRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{97} -} - -func (x *SwitchDatabaseRequest) GetConfigDir() string { - if x != nil { - return x.ConfigDir - } - return "" -} - -// SwitchDatabaseResponse confirms the switch was initiated. -type SwitchDatabaseResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether the switch was successfully initiated. - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Human-readable status message. - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SwitchDatabaseResponse) Reset() { - *x = SwitchDatabaseResponse{} - mi := &file_session_v1_session_proto_msgTypes[98] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SwitchDatabaseResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SwitchDatabaseResponse) ProtoMessage() {} - -func (x *SwitchDatabaseResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[98] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SwitchDatabaseResponse.ProtoReflect.Descriptor instead. -func (*SwitchDatabaseResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{98} -} - -func (x *SwitchDatabaseResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *SwitchDatabaseResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -// MergeDatabaseRequest specifies the source workspace to merge sessions from. -type MergeDatabaseRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Absolute path to the source workspace config directory. - // Must be under ~/.stapler-squad/ for security. - ConfigDir string `protobuf:"bytes,1,opt,name=config_dir,json=configDir,proto3" json:"config_dir,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *MergeDatabaseRequest) Reset() { - *x = MergeDatabaseRequest{} - mi := &file_session_v1_session_proto_msgTypes[99] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MergeDatabaseRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MergeDatabaseRequest) ProtoMessage() {} - -func (x *MergeDatabaseRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[99] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MergeDatabaseRequest.ProtoReflect.Descriptor instead. -func (*MergeDatabaseRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{99} -} - -func (x *MergeDatabaseRequest) GetConfigDir() string { - if x != nil { - return x.ConfigDir - } - return "" -} - -// MergeDatabaseResponse reports how many sessions were imported. -type MergeDatabaseResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether the merge completed without error. - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Human-readable status message. - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - // Number of sessions copied into the current database. - SessionsImported int32 `protobuf:"varint,3,opt,name=sessions_imported,json=sessionsImported,proto3" json:"sessions_imported,omitempty"` - // Number of sessions skipped due to title conflicts. - SessionsSkipped int32 `protobuf:"varint,4,opt,name=sessions_skipped,json=sessionsSkipped,proto3" json:"sessions_skipped,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *MergeDatabaseResponse) Reset() { - *x = MergeDatabaseResponse{} - mi := &file_session_v1_session_proto_msgTypes[100] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MergeDatabaseResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MergeDatabaseResponse) ProtoMessage() {} - -func (x *MergeDatabaseResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[100] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MergeDatabaseResponse.ProtoReflect.Descriptor instead. -func (*MergeDatabaseResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{100} -} - -func (x *MergeDatabaseResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *MergeDatabaseResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *MergeDatabaseResponse) GetSessionsImported() int32 { - if x != nil { - return x.SessionsImported - } - return 0 -} - -func (x *MergeDatabaseResponse) GetSessionsSkipped() int32 { - if x != nil { - return x.SessionsSkipped - } - return 0 -} - -type CreateCheckpointRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session ID to checkpoint (uses session title as ID). - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Human-readable label for this checkpoint. - Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateCheckpointRequest) Reset() { - *x = CreateCheckpointRequest{} - mi := &file_session_v1_session_proto_msgTypes[101] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateCheckpointRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateCheckpointRequest) ProtoMessage() {} - -func (x *CreateCheckpointRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[101] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateCheckpointRequest.ProtoReflect.Descriptor instead. -func (*CreateCheckpointRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{101} -} - -func (x *CreateCheckpointRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *CreateCheckpointRequest) GetLabel() string { - if x != nil { - return x.Label - } - return "" -} - -type CreateCheckpointResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The newly created checkpoint. - Checkpoint *CheckpointProto `protobuf:"bytes,1,opt,name=checkpoint,proto3" json:"checkpoint,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateCheckpointResponse) Reset() { - *x = CreateCheckpointResponse{} - mi := &file_session_v1_session_proto_msgTypes[102] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateCheckpointResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateCheckpointResponse) ProtoMessage() {} - -func (x *CreateCheckpointResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[102] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateCheckpointResponse.ProtoReflect.Descriptor instead. -func (*CreateCheckpointResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{102} -} - -func (x *CreateCheckpointResponse) GetCheckpoint() *CheckpointProto { - if x != nil { - return x.Checkpoint - } - return nil -} - -type ListCheckpointsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session ID to list checkpoints for. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListCheckpointsRequest) Reset() { - *x = ListCheckpointsRequest{} - mi := &file_session_v1_session_proto_msgTypes[103] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListCheckpointsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListCheckpointsRequest) ProtoMessage() {} - -func (x *ListCheckpointsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[103] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListCheckpointsRequest.ProtoReflect.Descriptor instead. -func (*ListCheckpointsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{103} -} - -func (x *ListCheckpointsRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -type ListCheckpointsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // All checkpoints for the session, ordered by timestamp ascending. - Checkpoints []*CheckpointProto `protobuf:"bytes,1,rep,name=checkpoints,proto3" json:"checkpoints,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListCheckpointsResponse) Reset() { - *x = ListCheckpointsResponse{} - mi := &file_session_v1_session_proto_msgTypes[104] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListCheckpointsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListCheckpointsResponse) ProtoMessage() {} - -func (x *ListCheckpointsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[104] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListCheckpointsResponse.ProtoReflect.Descriptor instead. -func (*ListCheckpointsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{104} -} - -func (x *ListCheckpointsResponse) GetCheckpoints() []*CheckpointProto { - if x != nil { - return x.Checkpoints - } - return nil -} - -type ForkSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Source session ID to fork from. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Checkpoint ID on the source session to fork from. - CheckpointId string `protobuf:"bytes,2,opt,name=checkpoint_id,json=checkpointId,proto3" json:"checkpoint_id,omitempty"` - // Title for the new forked session. Must be unique. - NewTitle string `protobuf:"bytes,3,opt,name=new_title,json=newTitle,proto3" json:"new_title,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ForkSessionRequest) Reset() { - *x = ForkSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[105] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ForkSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ForkSessionRequest) ProtoMessage() {} - -func (x *ForkSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[105] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ForkSessionRequest.ProtoReflect.Descriptor instead. -func (*ForkSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{105} -} - -func (x *ForkSessionRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *ForkSessionRequest) GetCheckpointId() string { - if x != nil { - return x.CheckpointId - } - return "" -} - -func (x *ForkSessionRequest) GetNewTitle() string { - if x != nil { - return x.NewTitle - } - return "" -} - -type ForkSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The newly created forked session. - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ForkSessionResponse) Reset() { - *x = ForkSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[106] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ForkSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ForkSessionResponse) ProtoMessage() {} - -func (x *ForkSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[106] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ForkSessionResponse.ProtoReflect.Descriptor instead. -func (*ForkSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{106} -} - -func (x *ForkSessionResponse) GetSession() *Session { - if x != nil { - return x.Session - } - return nil -} - -type ListFilesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session ID whose worktree to browse. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Directory path relative to session worktree root. Use "." for root. - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - // If true, gitignored files are included in the response with is_ignored=true. - IncludeIgnored bool `protobuf:"varint,3,opt,name=include_ignored,json=includeIgnored,proto3" json:"include_ignored,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListFilesRequest) Reset() { - *x = ListFilesRequest{} - mi := &file_session_v1_session_proto_msgTypes[107] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListFilesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFilesRequest) ProtoMessage() {} - -func (x *ListFilesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[107] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFilesRequest.ProtoReflect.Descriptor instead. -func (*ListFilesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{107} -} - -func (x *ListFilesRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *ListFilesRequest) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *ListFilesRequest) GetIncludeIgnored() bool { - if x != nil { - return x.IncludeIgnored - } - return false -} - -type ListFilesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Immediate children of the requested directory (dirs first, then files, alphabetical). - Files []*FileNode `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` - // Resolved base path that was listed. - BasePath string `protobuf:"bytes,2,opt,name=base_path,json=basePath,proto3" json:"base_path,omitempty"` - // True if the directory had more than 10,000 entries and the response was capped. - Truncated bool `protobuf:"varint,3,opt,name=truncated,proto3" json:"truncated,omitempty"` - // Total entry count before the cap was applied. - TotalCount int32 `protobuf:"varint,4,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListFilesResponse) Reset() { - *x = ListFilesResponse{} - mi := &file_session_v1_session_proto_msgTypes[108] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListFilesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListFilesResponse) ProtoMessage() {} - -func (x *ListFilesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[108] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListFilesResponse.ProtoReflect.Descriptor instead. -func (*ListFilesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{108} -} - -func (x *ListFilesResponse) GetFiles() []*FileNode { - if x != nil { - return x.Files - } - return nil -} - -func (x *ListFilesResponse) GetBasePath() string { - if x != nil { - return x.BasePath - } - return "" -} - -func (x *ListFilesResponse) GetTruncated() bool { - if x != nil { - return x.Truncated - } - return false -} - -func (x *ListFilesResponse) GetTotalCount() int32 { - if x != nil { - return x.TotalCount - } - return 0 -} - -type GetFileContentRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session ID whose worktree to read from. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // File path relative to session worktree root. - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetFileContentRequest) Reset() { - *x = GetFileContentRequest{} - mi := &file_session_v1_session_proto_msgTypes[109] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetFileContentRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFileContentRequest) ProtoMessage() {} - -func (x *GetFileContentRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[109] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFileContentRequest.ProtoReflect.Descriptor instead. -func (*GetFileContentRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{109} -} - -func (x *GetFileContentRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *GetFileContentRequest) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -type GetFileContentResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // UTF-8 file content. Empty when is_binary=true. - Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` - // Content encoding (always "utf-8" for text files). - Encoding string `protobuf:"bytes,2,opt,name=encoding,proto3" json:"encoding,omitempty"` - // True if the file was detected as binary (no content returned). - IsBinary bool `protobuf:"varint,3,opt,name=is_binary,json=isBinary,proto3" json:"is_binary,omitempty"` - // File size in bytes. - Size int64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` - // MIME content type detected from extension and content sniffing. - ContentType string `protobuf:"bytes,5,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"` - // True if the file exceeded 1MB and was truncated to the first 1MB. - IsTruncated bool `protobuf:"varint,6,opt,name=is_truncated,json=isTruncated,proto3" json:"is_truncated,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetFileContentResponse) Reset() { - *x = GetFileContentResponse{} - mi := &file_session_v1_session_proto_msgTypes[110] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetFileContentResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFileContentResponse) ProtoMessage() {} - -func (x *GetFileContentResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[110] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFileContentResponse.ProtoReflect.Descriptor instead. -func (*GetFileContentResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{110} -} - -func (x *GetFileContentResponse) GetContent() string { - if x != nil { - return x.Content - } - return "" -} - -func (x *GetFileContentResponse) GetEncoding() string { - if x != nil { - return x.Encoding - } - return "" -} - -func (x *GetFileContentResponse) GetIsBinary() bool { - if x != nil { - return x.IsBinary - } - return false -} - -func (x *GetFileContentResponse) GetSize() int64 { - if x != nil { - return x.Size - } - return 0 -} - -func (x *GetFileContentResponse) GetContentType() string { - if x != nil { - return x.ContentType - } - return "" -} - -func (x *GetFileContentResponse) GetIsTruncated() bool { - if x != nil { - return x.IsTruncated - } - return false -} - -type SearchFilesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session ID whose worktree to search. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Substring to match against file names and relative paths (case-insensitive). - // Minimum 2 characters; shorter queries return empty results. - Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` - // If true, gitignored files are included in search results. - IncludeIgnored bool `protobuf:"varint,3,opt,name=include_ignored,json=includeIgnored,proto3" json:"include_ignored,omitempty"` - // Maximum number of results to return. 0 uses the server default (500). - MaxResults int32 `protobuf:"varint,4,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SearchFilesRequest) Reset() { - *x = SearchFilesRequest{} - mi := &file_session_v1_session_proto_msgTypes[111] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SearchFilesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SearchFilesRequest) ProtoMessage() {} - -func (x *SearchFilesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[111] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SearchFilesRequest.ProtoReflect.Descriptor instead. -func (*SearchFilesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{111} -} - -func (x *SearchFilesRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *SearchFilesRequest) GetQuery() string { - if x != nil { - return x.Query - } - return "" -} - -func (x *SearchFilesRequest) GetIncludeIgnored() bool { - if x != nil { - return x.IncludeIgnored - } - return false -} - -func (x *SearchFilesRequest) GetMaxResults() int32 { - if x != nil { - return x.MaxResults - } - return 0 -} - -type SearchFilesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Matching files with full relative paths from worktree root. - Files []*FileNode `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` - // True if the result set was capped at max_results. - Truncated bool `protobuf:"varint,2,opt,name=truncated,proto3" json:"truncated,omitempty"` - // Total matches found before the cap was applied. - TotalMatches int32 `protobuf:"varint,3,opt,name=total_matches,json=totalMatches,proto3" json:"total_matches,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SearchFilesResponse) Reset() { - *x = SearchFilesResponse{} - mi := &file_session_v1_session_proto_msgTypes[112] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SearchFilesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SearchFilesResponse) ProtoMessage() {} - -func (x *SearchFilesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[112] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SearchFilesResponse.ProtoReflect.Descriptor instead. -func (*SearchFilesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{112} -} - -func (x *SearchFilesResponse) GetFiles() []*FileNode { - if x != nil { - return x.Files - } - return nil -} - -func (x *SearchFilesResponse) GetTruncated() bool { - if x != nil { - return x.Truncated - } - return false -} - -func (x *SearchFilesResponse) GetTotalMatches() int32 { - if x != nil { - return x.TotalMatches - } - return 0 -} - -type ListPathCompletionsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Path prefix to complete. The server splits at the last '/' to determine - // the base directory and filter prefix. Supports ~ expansion. - // Examples: "/home/", "/home/ty", "~/projects/my" - PathPrefix string `protobuf:"bytes,1,opt,name=path_prefix,json=pathPrefix,proto3" json:"path_prefix,omitempty"` - // Maximum entries to return. Default: 50, server cap: 500. - // Use 0 for server default. - MaxResults int32 `protobuf:"varint,2,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"` - // If true, only return directory entries (not regular files). - DirectoriesOnly bool `protobuf:"varint,3,opt,name=directories_only,json=directoriesOnly,proto3" json:"directories_only,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListPathCompletionsRequest) Reset() { - *x = ListPathCompletionsRequest{} - mi := &file_session_v1_session_proto_msgTypes[113] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListPathCompletionsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListPathCompletionsRequest) ProtoMessage() {} - -func (x *ListPathCompletionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[113] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListPathCompletionsRequest.ProtoReflect.Descriptor instead. -func (*ListPathCompletionsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{113} -} - -func (x *ListPathCompletionsRequest) GetPathPrefix() string { - if x != nil { - return x.PathPrefix - } - return "" -} - -func (x *ListPathCompletionsRequest) GetMaxResults() int32 { - if x != nil { - return x.MaxResults - } - return 0 -} - -func (x *ListPathCompletionsRequest) GetDirectoriesOnly() bool { - if x != nil { - return x.DirectoriesOnly - } - return false -} - -type ListPathCompletionsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Matching filesystem entries, sorted alphabetically. - Entries []*PathEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` - // The resolved base directory that was listed (after ~ expansion, filepath.Clean). - BaseDir string `protobuf:"bytes,2,opt,name=base_dir,json=baseDir,proto3" json:"base_dir,omitempty"` - // True if results were capped at max_results. - Truncated bool `protobuf:"varint,3,opt,name=truncated,proto3" json:"truncated,omitempty"` - // True if base_dir exists and is a readable directory. - BaseDirExists bool `protobuf:"varint,4,opt,name=base_dir_exists,json=baseDirExists,proto3" json:"base_dir_exists,omitempty"` - // True if the full path_prefix (including partial filename) exists on disk. - PathExists bool `protobuf:"varint,5,opt,name=path_exists,json=pathExists,proto3" json:"path_exists,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListPathCompletionsResponse) Reset() { - *x = ListPathCompletionsResponse{} - mi := &file_session_v1_session_proto_msgTypes[114] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListPathCompletionsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListPathCompletionsResponse) ProtoMessage() {} - -func (x *ListPathCompletionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[114] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListPathCompletionsResponse.ProtoReflect.Descriptor instead. -func (*ListPathCompletionsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{114} -} - -func (x *ListPathCompletionsResponse) GetEntries() []*PathEntry { - if x != nil { - return x.Entries - } - return nil -} - -func (x *ListPathCompletionsResponse) GetBaseDir() string { - if x != nil { - return x.BaseDir - } - return "" -} - -func (x *ListPathCompletionsResponse) GetTruncated() bool { - if x != nil { - return x.Truncated - } - return false -} - -func (x *ListPathCompletionsResponse) GetBaseDirExists() bool { - if x != nil { - return x.BaseDirExists - } - return false -} - -func (x *ListPathCompletionsResponse) GetPathExists() bool { - if x != nil { - return x.PathExists - } - return false -} - -type PathEntry struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Full absolute path to the entry. - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - // Filename component only. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // True if this entry is a directory (symlinks resolved). - IsDirectory bool `protobuf:"varint,3,opt,name=is_directory,json=isDirectory,proto3" json:"is_directory,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PathEntry) Reset() { - *x = PathEntry{} - mi := &file_session_v1_session_proto_msgTypes[115] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PathEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PathEntry) ProtoMessage() {} - -func (x *PathEntry) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[115] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PathEntry.ProtoReflect.Descriptor instead. -func (*PathEntry) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{115} -} - -func (x *PathEntry) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *PathEntry) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *PathEntry) GetIsDirectory() bool { - if x != nil { - return x.IsDirectory - } - return false -} - -// ProfileDefaultsProto holds the configurable fields for a named profile. -type ProfileDefaultsProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - Program string `protobuf:"bytes,3,opt,name=program,proto3" json:"program,omitempty"` - AutoYes bool `protobuf:"varint,4,opt,name=auto_yes,json=autoYes,proto3" json:"auto_yes,omitempty"` - Tags []string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty"` - EnvVars map[string]string `protobuf:"bytes,6,rep,name=env_vars,json=envVars,proto3" json:"env_vars,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - CliFlags string `protobuf:"bytes,7,opt,name=cli_flags,json=cliFlags,proto3" json:"cli_flags,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ProfileDefaultsProto) Reset() { - *x = ProfileDefaultsProto{} - mi := &file_session_v1_session_proto_msgTypes[116] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ProfileDefaultsProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProfileDefaultsProto) ProtoMessage() {} - -func (x *ProfileDefaultsProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[116] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ProfileDefaultsProto.ProtoReflect.Descriptor instead. -func (*ProfileDefaultsProto) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{116} -} - -func (x *ProfileDefaultsProto) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ProfileDefaultsProto) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *ProfileDefaultsProto) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *ProfileDefaultsProto) GetAutoYes() bool { - if x != nil { - return x.AutoYes - } - return false -} - -func (x *ProfileDefaultsProto) GetTags() []string { - if x != nil { - return x.Tags - } - return nil -} - -func (x *ProfileDefaultsProto) GetEnvVars() map[string]string { - if x != nil { - return x.EnvVars - } - return nil -} - -func (x *ProfileDefaultsProto) GetCliFlags() string { - if x != nil { - return x.CliFlags - } - return "" -} - -func (x *ProfileDefaultsProto) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *ProfileDefaultsProto) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -// DirectoryRuleProto associates a working-directory path prefix with defaults. -type DirectoryRuleProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Profile string `protobuf:"bytes,2,opt,name=profile,proto3" json:"profile,omitempty"` - Overrides *ProfileDefaultsProto `protobuf:"bytes,3,opt,name=overrides,proto3" json:"overrides,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DirectoryRuleProto) Reset() { - *x = DirectoryRuleProto{} - mi := &file_session_v1_session_proto_msgTypes[117] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DirectoryRuleProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DirectoryRuleProto) ProtoMessage() {} - -func (x *DirectoryRuleProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[117] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DirectoryRuleProto.ProtoReflect.Descriptor instead. -func (*DirectoryRuleProto) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{117} -} - -func (x *DirectoryRuleProto) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *DirectoryRuleProto) GetProfile() string { - if x != nil { - return x.Profile - } - return "" -} - -func (x *DirectoryRuleProto) GetOverrides() *ProfileDefaultsProto { - if x != nil { - return x.Overrides - } - return nil -} - -// SessionDefaultsConfig is the full defaults configuration returned by GetSessionDefaults. -type SessionDefaultsConfig struct { - state protoimpl.MessageState `protogen:"open.v1"` - Program string `protobuf:"bytes,1,opt,name=program,proto3" json:"program,omitempty"` - AutoYes bool `protobuf:"varint,2,opt,name=auto_yes,json=autoYes,proto3" json:"auto_yes,omitempty"` - Tags []string `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"` - EnvVars map[string]string `protobuf:"bytes,4,rep,name=env_vars,json=envVars,proto3" json:"env_vars,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - CliFlags string `protobuf:"bytes,5,opt,name=cli_flags,json=cliFlags,proto3" json:"cli_flags,omitempty"` - Profiles map[string]*ProfileDefaultsProto `protobuf:"bytes,6,rep,name=profiles,proto3" json:"profiles,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - DirectoryRules []*DirectoryRuleProto `protobuf:"bytes,7,rep,name=directory_rules,json=directoryRules,proto3" json:"directory_rules,omitempty"` - OneOffBaseDir string `protobuf:"bytes,8,opt,name=one_off_base_dir,json=oneOffBaseDir,proto3" json:"one_off_base_dir,omitempty"` - // Base directory where new project folders are created. Defaults to ~/Projects. - NewProjectBaseDir string `protobuf:"bytes,9,opt,name=new_project_base_dir,json=newProjectBaseDir,proto3" json:"new_project_base_dir,omitempty"` - // Max automated rework iterations before a backlog item's auto-reopen loop - // leaves it in review for manual action. 0 in a request means "use the - // server default (3)"; the response always echoes the resolved value. - MaxAutoReworkIterations int32 `protobuf:"varint,10,opt,name=max_auto_rework_iterations,json=maxAutoReworkIterations,proto3" json:"max_auto_rework_iterations,omitempty"` - // Max backlog items that may be in_progress at once. 0 in a request means - // "use the server default (2)"; the response always echoes the resolved value. - MaxConcurrentBacklogWorkItems int32 `protobuf:"varint,11,opt,name=max_concurrent_backlog_work_items,json=maxConcurrentBacklogWorkItems,proto3" json:"max_concurrent_backlog_work_items,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionDefaultsConfig) Reset() { - *x = SessionDefaultsConfig{} - mi := &file_session_v1_session_proto_msgTypes[118] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionDefaultsConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionDefaultsConfig) ProtoMessage() {} - -func (x *SessionDefaultsConfig) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[118] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionDefaultsConfig.ProtoReflect.Descriptor instead. -func (*SessionDefaultsConfig) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{118} -} - -func (x *SessionDefaultsConfig) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *SessionDefaultsConfig) GetAutoYes() bool { - if x != nil { - return x.AutoYes - } - return false -} - -func (x *SessionDefaultsConfig) GetTags() []string { - if x != nil { - return x.Tags - } - return nil -} - -func (x *SessionDefaultsConfig) GetEnvVars() map[string]string { - if x != nil { - return x.EnvVars - } - return nil -} - -func (x *SessionDefaultsConfig) GetCliFlags() string { - if x != nil { - return x.CliFlags - } - return "" -} - -func (x *SessionDefaultsConfig) GetProfiles() map[string]*ProfileDefaultsProto { - if x != nil { - return x.Profiles - } - return nil -} - -func (x *SessionDefaultsConfig) GetDirectoryRules() []*DirectoryRuleProto { - if x != nil { - return x.DirectoryRules - } - return nil -} - -func (x *SessionDefaultsConfig) GetOneOffBaseDir() string { - if x != nil { - return x.OneOffBaseDir - } - return "" -} - -func (x *SessionDefaultsConfig) GetNewProjectBaseDir() string { - if x != nil { - return x.NewProjectBaseDir - } - return "" -} - -func (x *SessionDefaultsConfig) GetMaxAutoReworkIterations() int32 { - if x != nil { - return x.MaxAutoReworkIterations - } - return 0 -} - -func (x *SessionDefaultsConfig) GetMaxConcurrentBacklogWorkItems() int32 { - if x != nil { - return x.MaxConcurrentBacklogWorkItems - } - return 0 -} - -type GetSessionDefaultsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionDefaultsRequest) Reset() { - *x = GetSessionDefaultsRequest{} - mi := &file_session_v1_session_proto_msgTypes[119] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionDefaultsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionDefaultsRequest) ProtoMessage() {} - -func (x *GetSessionDefaultsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[119] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionDefaultsRequest.ProtoReflect.Descriptor instead. -func (*GetSessionDefaultsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{119} -} - -type GetSessionDefaultsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Defaults *SessionDefaultsConfig `protobuf:"bytes,1,opt,name=defaults,proto3" json:"defaults,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionDefaultsResponse) Reset() { - *x = GetSessionDefaultsResponse{} - mi := &file_session_v1_session_proto_msgTypes[120] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionDefaultsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionDefaultsResponse) ProtoMessage() {} - -func (x *GetSessionDefaultsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[120] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionDefaultsResponse.ProtoReflect.Descriptor instead. -func (*GetSessionDefaultsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{120} -} - -func (x *GetSessionDefaultsResponse) GetDefaults() *SessionDefaultsConfig { - if x != nil { - return x.Defaults - } - return nil -} - -type PreviewDestinationPathRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Input string `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` // raw omnibar text (URL/shorthand or local path) - Mode string `protobuf:"bytes,2,opt,name=mode,proto3" json:"mode,omitempty"` // "github_url" | "new_worktree" - client already knows which - RepoPath string `protobuf:"bytes,3,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` // new_worktree only: resolved local repo path - SessionName string `protobuf:"bytes,4,opt,name=session_name,json=sessionName,proto3" json:"session_name,omitempty"` // new_worktree only: source string for the sanitized dir name - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PreviewDestinationPathRequest) Reset() { - *x = PreviewDestinationPathRequest{} - mi := &file_session_v1_session_proto_msgTypes[121] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PreviewDestinationPathRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PreviewDestinationPathRequest) ProtoMessage() {} - -func (x *PreviewDestinationPathRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[121] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PreviewDestinationPathRequest.ProtoReflect.Descriptor instead. -func (*PreviewDestinationPathRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{121} -} - -func (x *PreviewDestinationPathRequest) GetInput() string { - if x != nil { - return x.Input - } - return "" -} - -func (x *PreviewDestinationPathRequest) GetMode() string { - if x != nil { - return x.Mode - } - return "" -} - -func (x *PreviewDestinationPathRequest) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *PreviewDestinationPathRequest) GetSessionName() string { - if x != nil { - return x.SessionName - } - return "" -} - -type PreviewDestinationPathResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // exact for github_url; a directory prefix for new_worktree - IsExact bool `protobuf:"varint,2,opt,name=is_exact,json=isExact,proto3" json:"is_exact,omitempty"` // true only for github_url - UnresolvedReason string `protobuf:"bytes,3,opt,name=unresolved_reason,json=unresolvedReason,proto3" json:"unresolved_reason,omitempty"` // set (non-error) when input isn't resolvable yet - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PreviewDestinationPathResponse) Reset() { - *x = PreviewDestinationPathResponse{} - mi := &file_session_v1_session_proto_msgTypes[122] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PreviewDestinationPathResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PreviewDestinationPathResponse) ProtoMessage() {} - -func (x *PreviewDestinationPathResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[122] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PreviewDestinationPathResponse.ProtoReflect.Descriptor instead. -func (*PreviewDestinationPathResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{122} -} - -func (x *PreviewDestinationPathResponse) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *PreviewDestinationPathResponse) GetIsExact() bool { - if x != nil { - return x.IsExact - } - return false -} - -func (x *PreviewDestinationPathResponse) GetUnresolvedReason() string { - if x != nil { - return x.UnresolvedReason - } - return "" -} - -type ResolveDefaultsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - WorkingDir string `protobuf:"bytes,1,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` - ProfileName string `protobuf:"bytes,2,opt,name=profile_name,json=profileName,proto3" json:"profile_name,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResolveDefaultsRequest) Reset() { - *x = ResolveDefaultsRequest{} - mi := &file_session_v1_session_proto_msgTypes[123] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResolveDefaultsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResolveDefaultsRequest) ProtoMessage() {} - -func (x *ResolveDefaultsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[123] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResolveDefaultsRequest.ProtoReflect.Descriptor instead. -func (*ResolveDefaultsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{123} -} - -func (x *ResolveDefaultsRequest) GetWorkingDir() string { - if x != nil { - return x.WorkingDir - } - return "" -} - -func (x *ResolveDefaultsRequest) GetProfileName() string { - if x != nil { - return x.ProfileName - } - return "" -} - -type ResolveDefaultsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Program string `protobuf:"bytes,1,opt,name=program,proto3" json:"program,omitempty"` - AutoYes bool `protobuf:"varint,2,opt,name=auto_yes,json=autoYes,proto3" json:"auto_yes,omitempty"` - Tags []string `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"` - EnvVars map[string]string `protobuf:"bytes,4,rep,name=env_vars,json=envVars,proto3" json:"env_vars,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - CliFlags string `protobuf:"bytes,5,opt,name=cli_flags,json=cliFlags,proto3" json:"cli_flags,omitempty"` - // Source tracking - UsedGlobal bool `protobuf:"varint,6,opt,name=used_global,json=usedGlobal,proto3" json:"used_global,omitempty"` - UsedDirectory bool `protobuf:"varint,7,opt,name=used_directory,json=usedDirectory,proto3" json:"used_directory,omitempty"` - UsedProfile bool `protobuf:"varint,8,opt,name=used_profile,json=usedProfile,proto3" json:"used_profile,omitempty"` - MatchedDirectory string `protobuf:"bytes,9,opt,name=matched_directory,json=matchedDirectory,proto3" json:"matched_directory,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResolveDefaultsResponse) Reset() { - *x = ResolveDefaultsResponse{} - mi := &file_session_v1_session_proto_msgTypes[124] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResolveDefaultsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResolveDefaultsResponse) ProtoMessage() {} - -func (x *ResolveDefaultsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[124] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResolveDefaultsResponse.ProtoReflect.Descriptor instead. -func (*ResolveDefaultsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{124} -} - -func (x *ResolveDefaultsResponse) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *ResolveDefaultsResponse) GetAutoYes() bool { - if x != nil { - return x.AutoYes - } - return false -} - -func (x *ResolveDefaultsResponse) GetTags() []string { - if x != nil { - return x.Tags - } - return nil -} - -func (x *ResolveDefaultsResponse) GetEnvVars() map[string]string { - if x != nil { - return x.EnvVars - } - return nil -} - -func (x *ResolveDefaultsResponse) GetCliFlags() string { - if x != nil { - return x.CliFlags - } - return "" -} - -func (x *ResolveDefaultsResponse) GetUsedGlobal() bool { - if x != nil { - return x.UsedGlobal - } - return false -} - -func (x *ResolveDefaultsResponse) GetUsedDirectory() bool { - if x != nil { - return x.UsedDirectory - } - return false -} - -func (x *ResolveDefaultsResponse) GetUsedProfile() bool { - if x != nil { - return x.UsedProfile - } - return false -} - -func (x *ResolveDefaultsResponse) GetMatchedDirectory() string { - if x != nil { - return x.MatchedDirectory - } - return "" -} - -type UpdateGlobalDefaultsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Program string `protobuf:"bytes,1,opt,name=program,proto3" json:"program,omitempty"` - AutoYes bool `protobuf:"varint,2,opt,name=auto_yes,json=autoYes,proto3" json:"auto_yes,omitempty"` - Tags []string `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"` - EnvVars map[string]string `protobuf:"bytes,4,rep,name=env_vars,json=envVars,proto3" json:"env_vars,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - CliFlags string `protobuf:"bytes,5,opt,name=cli_flags,json=cliFlags,proto3" json:"cli_flags,omitempty"` - OneOffBaseDir string `protobuf:"bytes,6,opt,name=one_off_base_dir,json=oneOffBaseDir,proto3" json:"one_off_base_dir,omitempty"` - // Base directory where new project folders are created. Defaults to ~/Projects. - NewProjectBaseDir string `protobuf:"bytes,7,opt,name=new_project_base_dir,json=newProjectBaseDir,proto3" json:"new_project_base_dir,omitempty"` - // 0 = use the server default (3). See SessionDefaultsConfig.max_auto_rework_iterations. - MaxAutoReworkIterations int32 `protobuf:"varint,8,opt,name=max_auto_rework_iterations,json=maxAutoReworkIterations,proto3" json:"max_auto_rework_iterations,omitempty"` - // 0 = use the server default (2). See SessionDefaultsConfig.max_concurrent_backlog_work_items. - MaxConcurrentBacklogWorkItems int32 `protobuf:"varint,9,opt,name=max_concurrent_backlog_work_items,json=maxConcurrentBacklogWorkItems,proto3" json:"max_concurrent_backlog_work_items,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateGlobalDefaultsRequest) Reset() { - *x = UpdateGlobalDefaultsRequest{} - mi := &file_session_v1_session_proto_msgTypes[125] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateGlobalDefaultsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateGlobalDefaultsRequest) ProtoMessage() {} - -func (x *UpdateGlobalDefaultsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[125] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateGlobalDefaultsRequest.ProtoReflect.Descriptor instead. -func (*UpdateGlobalDefaultsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{125} -} - -func (x *UpdateGlobalDefaultsRequest) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *UpdateGlobalDefaultsRequest) GetAutoYes() bool { - if x != nil { - return x.AutoYes - } - return false -} - -func (x *UpdateGlobalDefaultsRequest) GetTags() []string { - if x != nil { - return x.Tags - } - return nil -} - -func (x *UpdateGlobalDefaultsRequest) GetEnvVars() map[string]string { - if x != nil { - return x.EnvVars - } - return nil -} - -func (x *UpdateGlobalDefaultsRequest) GetCliFlags() string { - if x != nil { - return x.CliFlags - } - return "" -} - -func (x *UpdateGlobalDefaultsRequest) GetOneOffBaseDir() string { - if x != nil { - return x.OneOffBaseDir - } - return "" -} - -func (x *UpdateGlobalDefaultsRequest) GetNewProjectBaseDir() string { - if x != nil { - return x.NewProjectBaseDir - } - return "" -} - -func (x *UpdateGlobalDefaultsRequest) GetMaxAutoReworkIterations() int32 { - if x != nil { - return x.MaxAutoReworkIterations - } - return 0 -} - -func (x *UpdateGlobalDefaultsRequest) GetMaxConcurrentBacklogWorkItems() int32 { - if x != nil { - return x.MaxConcurrentBacklogWorkItems - } - return 0 -} - -type UpdateGlobalDefaultsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Defaults *SessionDefaultsConfig `protobuf:"bytes,1,opt,name=defaults,proto3" json:"defaults,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateGlobalDefaultsResponse) Reset() { - *x = UpdateGlobalDefaultsResponse{} - mi := &file_session_v1_session_proto_msgTypes[126] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateGlobalDefaultsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateGlobalDefaultsResponse) ProtoMessage() {} - -func (x *UpdateGlobalDefaultsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[126] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateGlobalDefaultsResponse.ProtoReflect.Descriptor instead. -func (*UpdateGlobalDefaultsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{126} -} - -func (x *UpdateGlobalDefaultsResponse) GetDefaults() *SessionDefaultsConfig { - if x != nil { - return x.Defaults - } - return nil -} - -type UpsertProfileRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Profile *ProfileDefaultsProto `protobuf:"bytes,1,opt,name=profile,proto3" json:"profile,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpsertProfileRequest) Reset() { - *x = UpsertProfileRequest{} - mi := &file_session_v1_session_proto_msgTypes[127] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpsertProfileRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpsertProfileRequest) ProtoMessage() {} - -func (x *UpsertProfileRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[127] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpsertProfileRequest.ProtoReflect.Descriptor instead. -func (*UpsertProfileRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{127} -} - -func (x *UpsertProfileRequest) GetProfile() *ProfileDefaultsProto { - if x != nil { - return x.Profile - } - return nil -} - -type UpsertProfileResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Profile *ProfileDefaultsProto `protobuf:"bytes,1,opt,name=profile,proto3" json:"profile,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpsertProfileResponse) Reset() { - *x = UpsertProfileResponse{} - mi := &file_session_v1_session_proto_msgTypes[128] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpsertProfileResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpsertProfileResponse) ProtoMessage() {} - -func (x *UpsertProfileResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[128] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpsertProfileResponse.ProtoReflect.Descriptor instead. -func (*UpsertProfileResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{128} -} - -func (x *UpsertProfileResponse) GetProfile() *ProfileDefaultsProto { - if x != nil { - return x.Profile - } - return nil -} - -type DeleteProfileRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteProfileRequest) Reset() { - *x = DeleteProfileRequest{} - mi := &file_session_v1_session_proto_msgTypes[129] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteProfileRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteProfileRequest) ProtoMessage() {} - -func (x *DeleteProfileRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[129] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteProfileRequest.ProtoReflect.Descriptor instead. -func (*DeleteProfileRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{129} -} - -func (x *DeleteProfileRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -type DeleteProfileResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteProfileResponse) Reset() { - *x = DeleteProfileResponse{} - mi := &file_session_v1_session_proto_msgTypes[130] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteProfileResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteProfileResponse) ProtoMessage() {} - -func (x *DeleteProfileResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[130] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteProfileResponse.ProtoReflect.Descriptor instead. -func (*DeleteProfileResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{130} -} - -type UpsertDirectoryRuleRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Rule *DirectoryRuleProto `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpsertDirectoryRuleRequest) Reset() { - *x = UpsertDirectoryRuleRequest{} - mi := &file_session_v1_session_proto_msgTypes[131] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpsertDirectoryRuleRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpsertDirectoryRuleRequest) ProtoMessage() {} - -func (x *UpsertDirectoryRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[131] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpsertDirectoryRuleRequest.ProtoReflect.Descriptor instead. -func (*UpsertDirectoryRuleRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{131} -} - -func (x *UpsertDirectoryRuleRequest) GetRule() *DirectoryRuleProto { - if x != nil { - return x.Rule - } - return nil -} - -type UpsertDirectoryRuleResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Rule *DirectoryRuleProto `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpsertDirectoryRuleResponse) Reset() { - *x = UpsertDirectoryRuleResponse{} - mi := &file_session_v1_session_proto_msgTypes[132] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpsertDirectoryRuleResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpsertDirectoryRuleResponse) ProtoMessage() {} - -func (x *UpsertDirectoryRuleResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[132] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpsertDirectoryRuleResponse.ProtoReflect.Descriptor instead. -func (*UpsertDirectoryRuleResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{132} -} - -func (x *UpsertDirectoryRuleResponse) GetRule() *DirectoryRuleProto { - if x != nil { - return x.Rule - } - return nil -} - -type DeleteDirectoryRuleRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteDirectoryRuleRequest) Reset() { - *x = DeleteDirectoryRuleRequest{} - mi := &file_session_v1_session_proto_msgTypes[133] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteDirectoryRuleRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteDirectoryRuleRequest) ProtoMessage() {} - -func (x *DeleteDirectoryRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[133] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteDirectoryRuleRequest.ProtoReflect.Descriptor instead. -func (*DeleteDirectoryRuleRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{133} -} - -func (x *DeleteDirectoryRuleRequest) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -type DeleteDirectoryRuleResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteDirectoryRuleResponse) Reset() { - *x = DeleteDirectoryRuleResponse{} - mi := &file_session_v1_session_proto_msgTypes[134] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteDirectoryRuleResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteDirectoryRuleResponse) ProtoMessage() {} - -func (x *DeleteDirectoryRuleResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[134] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteDirectoryRuleResponse.ProtoReflect.Descriptor instead. -func (*DeleteDirectoryRuleResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{134} -} - -// AliasProto represents a named session preset configured in config.json. -type AliasProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Group string `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"` - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - Profile string `protobuf:"bytes,5,opt,name=profile,proto3" json:"profile,omitempty"` - Program string `protobuf:"bytes,6,opt,name=program,proto3" json:"program,omitempty"` - AutoYes bool `protobuf:"varint,7,opt,name=auto_yes,json=autoYes,proto3" json:"auto_yes,omitempty"` - Tags []string `protobuf:"bytes,8,rep,name=tags,proto3" json:"tags,omitempty"` - EnvVars map[string]string `protobuf:"bytes,9,rep,name=env_vars,json=envVars,proto3" json:"env_vars,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - CliFlags string `protobuf:"bytes,10,opt,name=cli_flags,json=cliFlags,proto3" json:"cli_flags,omitempty"` - // session_type overrides the default session creation mode for this alias. - // Unspecified means the default (directory) is used. - SessionType SessionType `protobuf:"varint,11,opt,name=session_type,json=sessionType,proto3,enum=session.v1.SessionType" json:"session_type,omitempty"` - // name_prefix is prepended to the user-supplied session label when naming sessions. - // For example, prefix "ssq-" + label "my-feature" → session name "ssq-my-feature". - NamePrefix string `protobuf:"bytes,12,opt,name=name_prefix,json=namePrefix,proto3" json:"name_prefix,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AliasProto) Reset() { - *x = AliasProto{} - mi := &file_session_v1_session_proto_msgTypes[135] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AliasProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AliasProto) ProtoMessage() {} - -func (x *AliasProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[135] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AliasProto.ProtoReflect.Descriptor instead. -func (*AliasProto) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{135} -} - -func (x *AliasProto) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *AliasProto) GetGroup() string { - if x != nil { - return x.Group - } - return "" -} - -func (x *AliasProto) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *AliasProto) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *AliasProto) GetProfile() string { - if x != nil { - return x.Profile - } - return "" -} - -func (x *AliasProto) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *AliasProto) GetAutoYes() bool { - if x != nil { - return x.AutoYes - } - return false -} - -func (x *AliasProto) GetTags() []string { - if x != nil { - return x.Tags - } - return nil -} - -func (x *AliasProto) GetEnvVars() map[string]string { - if x != nil { - return x.EnvVars - } - return nil -} - -func (x *AliasProto) GetCliFlags() string { - if x != nil { - return x.CliFlags - } - return "" -} - -func (x *AliasProto) GetSessionType() SessionType { - if x != nil { - return x.SessionType - } - return SessionType_SESSION_TYPE_UNSPECIFIED -} - -func (x *AliasProto) GetNamePrefix() string { - if x != nil { - return x.NamePrefix - } - return "" -} - -type ListAliasesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListAliasesRequest) Reset() { - *x = ListAliasesRequest{} - mi := &file_session_v1_session_proto_msgTypes[136] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListAliasesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListAliasesRequest) ProtoMessage() {} - -func (x *ListAliasesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[136] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListAliasesRequest.ProtoReflect.Descriptor instead. -func (*ListAliasesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{136} -} - -type ListAliasesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Aliases []*AliasProto `protobuf:"bytes,1,rep,name=aliases,proto3" json:"aliases,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListAliasesResponse) Reset() { - *x = ListAliasesResponse{} - mi := &file_session_v1_session_proto_msgTypes[137] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListAliasesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListAliasesResponse) ProtoMessage() {} - -func (x *ListAliasesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[137] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListAliasesResponse.ProtoReflect.Descriptor instead. -func (*ListAliasesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{137} -} - -func (x *ListAliasesResponse) GetAliases() []*AliasProto { - if x != nil { - return x.Aliases - } - return nil -} - -type UpsertAliasRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Alias *AliasProto `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpsertAliasRequest) Reset() { - *x = UpsertAliasRequest{} - mi := &file_session_v1_session_proto_msgTypes[138] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpsertAliasRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpsertAliasRequest) ProtoMessage() {} - -func (x *UpsertAliasRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[138] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpsertAliasRequest.ProtoReflect.Descriptor instead. -func (*UpsertAliasRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{138} -} - -func (x *UpsertAliasRequest) GetAlias() *AliasProto { - if x != nil { - return x.Alias - } - return nil -} - -type UpsertAliasResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Alias *AliasProto `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpsertAliasResponse) Reset() { - *x = UpsertAliasResponse{} - mi := &file_session_v1_session_proto_msgTypes[139] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpsertAliasResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpsertAliasResponse) ProtoMessage() {} - -func (x *UpsertAliasResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[139] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpsertAliasResponse.ProtoReflect.Descriptor instead. -func (*UpsertAliasResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{139} -} - -func (x *UpsertAliasResponse) GetAlias() *AliasProto { - if x != nil { - return x.Alias - } - return nil -} - -type DeleteAliasRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteAliasRequest) Reset() { - *x = DeleteAliasRequest{} - mi := &file_session_v1_session_proto_msgTypes[140] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteAliasRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteAliasRequest) ProtoMessage() {} - -func (x *DeleteAliasRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[140] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteAliasRequest.ProtoReflect.Descriptor instead. -func (*DeleteAliasRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{140} -} - -func (x *DeleteAliasRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -type DeleteAliasResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteAliasResponse) Reset() { - *x = DeleteAliasResponse{} - mi := &file_session_v1_session_proto_msgTypes[141] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteAliasResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteAliasResponse) ProtoMessage() {} - -func (x *DeleteAliasResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[141] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteAliasResponse.ProtoReflect.Descriptor instead. -func (*DeleteAliasResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{141} -} - -type ListWorktreesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Absolute path to the git repository root. Supports ~ expansion. - RepoPath string `protobuf:"bytes,1,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListWorktreesRequest) Reset() { - *x = ListWorktreesRequest{} - mi := &file_session_v1_session_proto_msgTypes[142] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListWorktreesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListWorktreesRequest) ProtoMessage() {} - -func (x *ListWorktreesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[142] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListWorktreesRequest.ProtoReflect.Descriptor instead. -func (*ListWorktreesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{142} -} - -func (x *ListWorktreesRequest) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -type WorktreeEntry struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Absolute path to the worktree directory. - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - // Branch checked out in this worktree (empty for detached HEAD). - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - // True if this is the main worktree (not an added worktree). - IsMain bool `protobuf:"varint,3,opt,name=is_main,json=isMain,proto3" json:"is_main,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *WorktreeEntry) Reset() { - *x = WorktreeEntry{} - mi := &file_session_v1_session_proto_msgTypes[143] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WorktreeEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WorktreeEntry) ProtoMessage() {} - -func (x *WorktreeEntry) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[143] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WorktreeEntry.ProtoReflect.Descriptor instead. -func (*WorktreeEntry) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{143} -} - -func (x *WorktreeEntry) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *WorktreeEntry) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -func (x *WorktreeEntry) GetIsMain() bool { - if x != nil { - return x.IsMain - } - return false -} - -type ListWorktreesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Worktrees []*WorktreeEntry `protobuf:"bytes,1,rep,name=worktrees,proto3" json:"worktrees,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListWorktreesResponse) Reset() { - *x = ListWorktreesResponse{} - mi := &file_session_v1_session_proto_msgTypes[144] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListWorktreesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListWorktreesResponse) ProtoMessage() {} - -func (x *ListWorktreesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[144] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListWorktreesResponse.ProtoReflect.Descriptor instead. -func (*ListWorktreesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{144} -} - -func (x *ListWorktreesResponse) GetWorktrees() []*WorktreeEntry { - if x != nil { - return x.Worktrees - } - return nil -} - -type PromptHistoryEntry struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` - Label string `protobuf:"bytes,3,opt,name=label,proto3" json:"label,omitempty"` - UsedCount int32 `protobuf:"varint,4,opt,name=used_count,json=usedCount,proto3" json:"used_count,omitempty"` - LastUsed *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_used,json=lastUsed,proto3" json:"last_used,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PromptHistoryEntry) Reset() { - *x = PromptHistoryEntry{} - mi := &file_session_v1_session_proto_msgTypes[145] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PromptHistoryEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PromptHistoryEntry) ProtoMessage() {} - -func (x *PromptHistoryEntry) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[145] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PromptHistoryEntry.ProtoReflect.Descriptor instead. -func (*PromptHistoryEntry) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{145} -} - -func (x *PromptHistoryEntry) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *PromptHistoryEntry) GetText() string { - if x != nil { - return x.Text - } - return "" -} - -func (x *PromptHistoryEntry) GetLabel() string { - if x != nil { - return x.Label - } - return "" -} - -func (x *PromptHistoryEntry) GetUsedCount() int32 { - if x != nil { - return x.UsedCount - } - return 0 -} - -func (x *PromptHistoryEntry) GetLastUsed() *timestamppb.Timestamp { - if x != nil { - return x.LastUsed - } - return nil -} - -func (x *PromptHistoryEntry) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -type ListPromptHistoryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListPromptHistoryRequest) Reset() { - *x = ListPromptHistoryRequest{} - mi := &file_session_v1_session_proto_msgTypes[146] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListPromptHistoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListPromptHistoryRequest) ProtoMessage() {} - -func (x *ListPromptHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[146] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListPromptHistoryRequest.ProtoReflect.Descriptor instead. -func (*ListPromptHistoryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{146} -} - -func (x *ListPromptHistoryRequest) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 -} - -type ListPromptHistoryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Entries []*PromptHistoryEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListPromptHistoryResponse) Reset() { - *x = ListPromptHistoryResponse{} - mi := &file_session_v1_session_proto_msgTypes[147] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListPromptHistoryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListPromptHistoryResponse) ProtoMessage() {} - -func (x *ListPromptHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[147] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListPromptHistoryResponse.ProtoReflect.Descriptor instead. -func (*ListPromptHistoryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{147} -} - -func (x *ListPromptHistoryResponse) GetEntries() []*PromptHistoryEntry { - if x != nil { - return x.Entries - } - return nil -} - -type DeletePromptHistoryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeletePromptHistoryRequest) Reset() { - *x = DeletePromptHistoryRequest{} - mi := &file_session_v1_session_proto_msgTypes[148] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeletePromptHistoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeletePromptHistoryRequest) ProtoMessage() {} - -func (x *DeletePromptHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[148] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeletePromptHistoryRequest.ProtoReflect.Descriptor instead. -func (*DeletePromptHistoryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{148} -} - -func (x *DeletePromptHistoryRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type DeletePromptHistoryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeletePromptHistoryResponse) Reset() { - *x = DeletePromptHistoryResponse{} - mi := &file_session_v1_session_proto_msgTypes[149] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeletePromptHistoryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeletePromptHistoryResponse) ProtoMessage() {} - -func (x *DeletePromptHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[149] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeletePromptHistoryResponse.ProtoReflect.Descriptor instead. -func (*DeletePromptHistoryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{149} -} - -type BatchSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - WorkingDir string `protobuf:"bytes,3,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` - Branch string `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` - Program string `protobuf:"bytes,5,opt,name=program,proto3" json:"program,omitempty"` - Category string `protobuf:"bytes,6,opt,name=category,proto3" json:"category,omitempty"` - InitialPrompt string `protobuf:"bytes,7,opt,name=initial_prompt,json=initialPrompt,proto3" json:"initial_prompt,omitempty"` - AutoYes bool `protobuf:"varint,8,opt,name=auto_yes,json=autoYes,proto3" json:"auto_yes,omitempty"` - SessionType SessionType `protobuf:"varint,9,opt,name=session_type,json=sessionType,proto3,enum=session.v1.SessionType" json:"session_type,omitempty"` - ProjectId string `protobuf:"bytes,10,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - Tags []string `protobuf:"bytes,11,rep,name=tags,proto3" json:"tags,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BatchSessionRequest) Reset() { - *x = BatchSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[150] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BatchSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BatchSessionRequest) ProtoMessage() {} - -func (x *BatchSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[150] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BatchSessionRequest.ProtoReflect.Descriptor instead. -func (*BatchSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{150} -} - -func (x *BatchSessionRequest) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *BatchSessionRequest) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *BatchSessionRequest) GetWorkingDir() string { - if x != nil { - return x.WorkingDir - } - return "" -} - -func (x *BatchSessionRequest) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -func (x *BatchSessionRequest) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *BatchSessionRequest) GetCategory() string { - if x != nil { - return x.Category - } - return "" -} - -func (x *BatchSessionRequest) GetInitialPrompt() string { - if x != nil { - return x.InitialPrompt - } - return "" -} - -func (x *BatchSessionRequest) GetAutoYes() bool { - if x != nil { - return x.AutoYes - } - return false -} - -func (x *BatchSessionRequest) GetSessionType() SessionType { - if x != nil { - return x.SessionType - } - return SessionType_SESSION_TYPE_UNSPECIFIED -} - -func (x *BatchSessionRequest) GetProjectId() string { - if x != nil { - return x.ProjectId - } - return "" -} - -func (x *BatchSessionRequest) GetTags() []string { - if x != nil { - return x.Tags - } - return nil -} - -type BatchCreateResult struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` - Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BatchCreateResult) Reset() { - *x = BatchCreateResult{} - mi := &file_session_v1_session_proto_msgTypes[151] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BatchCreateResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BatchCreateResult) ProtoMessage() {} - -func (x *BatchCreateResult) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[151] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BatchCreateResult.ProtoReflect.Descriptor instead. -func (*BatchCreateResult) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{151} -} - -func (x *BatchCreateResult) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *BatchCreateResult) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *BatchCreateResult) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -func (x *BatchCreateResult) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -type BatchCreateSessionsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Sessions []*BatchSessionRequest `protobuf:"bytes,1,rep,name=sessions,proto3" json:"sessions,omitempty"` - // Max concurrent worktree creations (capped at 3 server-side). - MaxConcurrency int32 `protobuf:"varint,2,opt,name=max_concurrency,json=maxConcurrency,proto3" json:"max_concurrency,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BatchCreateSessionsRequest) Reset() { - *x = BatchCreateSessionsRequest{} - mi := &file_session_v1_session_proto_msgTypes[152] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BatchCreateSessionsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BatchCreateSessionsRequest) ProtoMessage() {} - -func (x *BatchCreateSessionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[152] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BatchCreateSessionsRequest.ProtoReflect.Descriptor instead. -func (*BatchCreateSessionsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{152} -} - -func (x *BatchCreateSessionsRequest) GetSessions() []*BatchSessionRequest { - if x != nil { - return x.Sessions - } - return nil -} - -func (x *BatchCreateSessionsRequest) GetMaxConcurrency() int32 { - if x != nil { - return x.MaxConcurrency - } - return 0 -} - -type BatchCreateSessionsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Results []*BatchCreateResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` - Succeeded int32 `protobuf:"varint,2,opt,name=succeeded,proto3" json:"succeeded,omitempty"` - Failed int32 `protobuf:"varint,3,opt,name=failed,proto3" json:"failed,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BatchCreateSessionsResponse) Reset() { - *x = BatchCreateSessionsResponse{} - mi := &file_session_v1_session_proto_msgTypes[153] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BatchCreateSessionsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BatchCreateSessionsResponse) ProtoMessage() {} - -func (x *BatchCreateSessionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[153] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BatchCreateSessionsResponse.ProtoReflect.Descriptor instead. -func (*BatchCreateSessionsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{153} -} - -func (x *BatchCreateSessionsResponse) GetResults() []*BatchCreateResult { - if x != nil { - return x.Results - } - return nil -} - -func (x *BatchCreateSessionsResponse) GetSucceeded() int32 { - if x != nil { - return x.Succeeded - } - return 0 -} - -func (x *BatchCreateSessionsResponse) GetFailed() int32 { - if x != nil { - return x.Failed - } - return 0 -} - -type RunOneShotRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - Prompt string `protobuf:"bytes,2,opt,name=prompt,proto3" json:"prompt,omitempty"` - // Timeout in seconds (default: 120, max: 300). - TimeoutSeconds int32 `protobuf:"varint,3,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RunOneShotRequest) Reset() { - *x = RunOneShotRequest{} - mi := &file_session_v1_session_proto_msgTypes[154] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RunOneShotRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RunOneShotRequest) ProtoMessage() {} - -func (x *RunOneShotRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[154] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RunOneShotRequest.ProtoReflect.Descriptor instead. -func (*RunOneShotRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{154} -} - -func (x *RunOneShotRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *RunOneShotRequest) GetPrompt() string { - if x != nil { - return x.Prompt - } - return "" -} - -func (x *RunOneShotRequest) GetTimeoutSeconds() int32 { - if x != nil { - return x.TimeoutSeconds - } - return 0 -} - -type RunOneShotResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Output string `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` - Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` - ExitCode int32 `protobuf:"varint,3,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` - PrUrl string `protobuf:"bytes,4,opt,name=pr_url,json=prUrl,proto3" json:"pr_url,omitempty"` - BranchDivergedFromBase bool `protobuf:"varint,5,opt,name=branch_diverged_from_base,json=branchDivergedFromBase,proto3" json:"branch_diverged_from_base,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RunOneShotResponse) Reset() { - *x = RunOneShotResponse{} - mi := &file_session_v1_session_proto_msgTypes[155] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RunOneShotResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RunOneShotResponse) ProtoMessage() {} - -func (x *RunOneShotResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[155] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RunOneShotResponse.ProtoReflect.Descriptor instead. -func (*RunOneShotResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{155} -} - -func (x *RunOneShotResponse) GetOutput() string { - if x != nil { - return x.Output - } - return "" -} - -func (x *RunOneShotResponse) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -func (x *RunOneShotResponse) GetExitCode() int32 { - if x != nil { - return x.ExitCode - } - return 0 -} - -func (x *RunOneShotResponse) GetPrUrl() string { - if x != nil { - return x.PrUrl - } - return "" -} - -func (x *RunOneShotResponse) GetBranchDivergedFromBase() bool { - if x != nil { - return x.BranchDivergedFromBase - } - return false -} - -type Project struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Aggregate session counts. - SessionCount int32 `protobuf:"varint,6,opt,name=session_count,json=sessionCount,proto3" json:"session_count,omitempty"` - RunningCount int32 `protobuf:"varint,7,opt,name=running_count,json=runningCount,proto3" json:"running_count,omitempty"` - CompleteCount int32 `protobuf:"varint,8,opt,name=complete_count,json=completeCount,proto3" json:"complete_count,omitempty"` - ReviewReadyCount int32 `protobuf:"varint,9,opt,name=review_ready_count,json=reviewReadyCount,proto3" json:"review_ready_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *Project) Reset() { - *x = Project{} - mi := &file_session_v1_session_proto_msgTypes[156] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Project) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Project) ProtoMessage() {} - -func (x *Project) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[156] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Project.ProtoReflect.Descriptor instead. -func (*Project) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{156} -} - -func (x *Project) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Project) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Project) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *Project) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *Project) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *Project) GetSessionCount() int32 { - if x != nil { - return x.SessionCount - } - return 0 -} - -func (x *Project) GetRunningCount() int32 { - if x != nil { - return x.RunningCount - } - return 0 -} - -func (x *Project) GetCompleteCount() int32 { - if x != nil { - return x.CompleteCount - } - return 0 -} - -func (x *Project) GetReviewReadyCount() int32 { - if x != nil { - return x.ReviewReadyCount - } - return 0 -} - -type CreateProjectRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateProjectRequest) Reset() { - *x = CreateProjectRequest{} - mi := &file_session_v1_session_proto_msgTypes[157] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateProjectRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateProjectRequest) ProtoMessage() {} - -func (x *CreateProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[157] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateProjectRequest.ProtoReflect.Descriptor instead. -func (*CreateProjectRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{157} -} - -func (x *CreateProjectRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *CreateProjectRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -type CreateProjectResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateProjectResponse) Reset() { - *x = CreateProjectResponse{} - mi := &file_session_v1_session_proto_msgTypes[158] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateProjectResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateProjectResponse) ProtoMessage() {} - -func (x *CreateProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[158] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateProjectResponse.ProtoReflect.Descriptor instead. -func (*CreateProjectResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{158} -} - -func (x *CreateProjectResponse) GetProject() *Project { - if x != nil { - return x.Project - } - return nil -} - -type ListProjectsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListProjectsRequest) Reset() { - *x = ListProjectsRequest{} - mi := &file_session_v1_session_proto_msgTypes[159] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListProjectsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListProjectsRequest) ProtoMessage() {} - -func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[159] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListProjectsRequest.ProtoReflect.Descriptor instead. -func (*ListProjectsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{159} -} - -type ListProjectsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Projects []*Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListProjectsResponse) Reset() { - *x = ListProjectsResponse{} - mi := &file_session_v1_session_proto_msgTypes[160] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListProjectsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListProjectsResponse) ProtoMessage() {} - -func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[160] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListProjectsResponse.ProtoReflect.Descriptor instead. -func (*ListProjectsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{160} -} - -func (x *ListProjectsResponse) GetProjects() []*Project { - if x != nil { - return x.Projects - } - return nil -} - -type UpdateProjectRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateProjectRequest) Reset() { - *x = UpdateProjectRequest{} - mi := &file_session_v1_session_proto_msgTypes[161] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateProjectRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateProjectRequest) ProtoMessage() {} - -func (x *UpdateProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[161] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateProjectRequest.ProtoReflect.Descriptor instead. -func (*UpdateProjectRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{161} -} - -func (x *UpdateProjectRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *UpdateProjectRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *UpdateProjectRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -type UpdateProjectResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Project *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateProjectResponse) Reset() { - *x = UpdateProjectResponse{} - mi := &file_session_v1_session_proto_msgTypes[162] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateProjectResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateProjectResponse) ProtoMessage() {} - -func (x *UpdateProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[162] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateProjectResponse.ProtoReflect.Descriptor instead. -func (*UpdateProjectResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{162} -} - -func (x *UpdateProjectResponse) GetProject() *Project { - if x != nil { - return x.Project - } - return nil -} - -type DeleteProjectRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteProjectRequest) Reset() { - *x = DeleteProjectRequest{} - mi := &file_session_v1_session_proto_msgTypes[163] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteProjectRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteProjectRequest) ProtoMessage() {} - -func (x *DeleteProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[163] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteProjectRequest.ProtoReflect.Descriptor instead. -func (*DeleteProjectRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{163} -} - -func (x *DeleteProjectRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type DeleteProjectResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteProjectResponse) Reset() { - *x = DeleteProjectResponse{} - mi := &file_session_v1_session_proto_msgTypes[164] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteProjectResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteProjectResponse) ProtoMessage() {} - -func (x *DeleteProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[164] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteProjectResponse.ProtoReflect.Descriptor instead. -func (*DeleteProjectResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{164} -} - -func (x *DeleteProjectResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -type AssignSessionsToProjectRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - SessionIds []string `protobuf:"bytes,2,rep,name=session_ids,json=sessionIds,proto3" json:"session_ids,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AssignSessionsToProjectRequest) Reset() { - *x = AssignSessionsToProjectRequest{} - mi := &file_session_v1_session_proto_msgTypes[165] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AssignSessionsToProjectRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AssignSessionsToProjectRequest) ProtoMessage() {} - -func (x *AssignSessionsToProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[165] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AssignSessionsToProjectRequest.ProtoReflect.Descriptor instead. -func (*AssignSessionsToProjectRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{165} -} - -func (x *AssignSessionsToProjectRequest) GetProjectId() string { - if x != nil { - return x.ProjectId - } - return "" -} - -func (x *AssignSessionsToProjectRequest) GetSessionIds() []string { - if x != nil { - return x.SessionIds - } - return nil -} - -type AssignSessionsToProjectResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - UpdatedCount int32 `protobuf:"varint,1,opt,name=updated_count,json=updatedCount,proto3" json:"updated_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AssignSessionsToProjectResponse) Reset() { - *x = AssignSessionsToProjectResponse{} - mi := &file_session_v1_session_proto_msgTypes[166] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AssignSessionsToProjectResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AssignSessionsToProjectResponse) ProtoMessage() {} - -func (x *AssignSessionsToProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[166] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AssignSessionsToProjectResponse.ProtoReflect.Descriptor instead. -func (*AssignSessionsToProjectResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{166} -} - -func (x *AssignSessionsToProjectResponse) GetUpdatedCount() int32 { - if x != nil { - return x.UpdatedCount - } - return 0 -} - -type ListBranchesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Absolute path to the git repository root. - RepoPath string `protobuf:"bytes,1,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - // Optional substring filter applied in Go (case-insensitive). - Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` - // Maximum number of branches to return (default 200). - MaxResults int32 `protobuf:"varint,3,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"` - // Whether to include remote-tracking branches (default false). - IncludeRemote bool `protobuf:"varint,4,opt,name=include_remote,json=includeRemote,proto3" json:"include_remote,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListBranchesRequest) Reset() { - *x = ListBranchesRequest{} - mi := &file_session_v1_session_proto_msgTypes[167] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListBranchesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListBranchesRequest) ProtoMessage() {} - -func (x *ListBranchesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[167] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListBranchesRequest.ProtoReflect.Descriptor instead. -func (*ListBranchesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{167} -} - -func (x *ListBranchesRequest) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *ListBranchesRequest) GetFilter() string { - if x != nil { - return x.Filter - } - return "" -} - -func (x *ListBranchesRequest) GetMaxResults() int32 { - if x != nil { - return x.MaxResults - } - return 0 -} - -func (x *ListBranchesRequest) GetIncludeRemote() bool { - if x != nil { - return x.IncludeRemote - } - return false -} - -type ListBranchesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Branches []string `protobuf:"bytes,1,rep,name=branches,proto3" json:"branches,omitempty"` - TotalCount int32 `protobuf:"varint,2,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` - // True if the command timed out before all branches were collected. - Truncated bool `protobuf:"varint,3,opt,name=truncated,proto3" json:"truncated,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListBranchesResponse) Reset() { - *x = ListBranchesResponse{} - mi := &file_session_v1_session_proto_msgTypes[168] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListBranchesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListBranchesResponse) ProtoMessage() {} - -func (x *ListBranchesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[168] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListBranchesResponse.ProtoReflect.Descriptor instead. -func (*ListBranchesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{168} -} - -func (x *ListBranchesResponse) GetBranches() []string { - if x != nil { - return x.Branches - } - return nil -} - -func (x *ListBranchesResponse) GetTotalCount() int32 { - if x != nil { - return x.TotalCount - } - return 0 -} - -func (x *ListBranchesResponse) GetTruncated() bool { - if x != nil { - return x.Truncated - } - return false -} - -type GetTerminalSnapshotRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // ID of the session to snapshot. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Number of trailing lines to return (default 20). - LastNLines int32 `protobuf:"varint,2,opt,name=last_n_lines,json=lastNLines,proto3" json:"last_n_lines,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetTerminalSnapshotRequest) Reset() { - *x = GetTerminalSnapshotRequest{} - mi := &file_session_v1_session_proto_msgTypes[169] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetTerminalSnapshotRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetTerminalSnapshotRequest) ProtoMessage() {} - -func (x *GetTerminalSnapshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[169] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetTerminalSnapshotRequest.ProtoReflect.Descriptor instead. -func (*GetTerminalSnapshotRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{169} -} - -func (x *GetTerminalSnapshotRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *GetTerminalSnapshotRequest) GetLastNLines() int32 { - if x != nil { - return x.LastNLines - } - return 0 -} - -type GetTerminalSnapshotResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Terminal content (may include ANSI escape sequences). - Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` - // True when content is entirely whitespace (cleared terminal). - IsEmpty bool `protobuf:"varint,2,opt,name=is_empty,json=isEmpty,proto3" json:"is_empty,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetTerminalSnapshotResponse) Reset() { - *x = GetTerminalSnapshotResponse{} - mi := &file_session_v1_session_proto_msgTypes[170] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetTerminalSnapshotResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetTerminalSnapshotResponse) ProtoMessage() {} - -func (x *GetTerminalSnapshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[170] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetTerminalSnapshotResponse.ProtoReflect.Descriptor instead. -func (*GetTerminalSnapshotResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{170} -} - -func (x *GetTerminalSnapshotResponse) GetContent() string { - if x != nil { - return x.Content - } - return "" -} - -func (x *GetTerminalSnapshotResponse) GetIsEmpty() bool { - if x != nil { - return x.IsEmpty - } - return false -} - -type WriteToSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // ID (title) of the session to write to. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Text to send to the terminal PTY. - Input string `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` - // When true, append a newline after input. Callers should set this explicitly. - PressEnter bool `protobuf:"varint,3,opt,name=press_enter,json=pressEnter,proto3" json:"press_enter,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *WriteToSessionRequest) Reset() { - *x = WriteToSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[171] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WriteToSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WriteToSessionRequest) ProtoMessage() {} - -func (x *WriteToSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[171] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WriteToSessionRequest.ProtoReflect.Descriptor instead. -func (*WriteToSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{171} -} - -func (x *WriteToSessionRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *WriteToSessionRequest) GetInput() string { - if x != nil { - return x.Input - } - return "" -} - -func (x *WriteToSessionRequest) GetPressEnter() bool { - if x != nil { - return x.PressEnter - } - return false -} - -type WriteToSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // True when write was queued successfully. - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *WriteToSessionResponse) Reset() { - *x = WriteToSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[172] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WriteToSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WriteToSessionResponse) ProtoMessage() {} - -func (x *WriteToSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[172] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WriteToSessionResponse.ProtoReflect.Descriptor instead. -func (*WriteToSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{172} -} - -func (x *WriteToSessionResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -type ClientLogEntry struct { - state protoimpl.MessageState `protogen:"open.v1"` - Level string `protobuf:"bytes,1,opt,name=level,proto3" json:"level,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - Timestamp string `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` - UserAgent string `protobuf:"bytes,5,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"` - SessionId string `protobuf:"bytes,6,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClientLogEntry) Reset() { - *x = ClientLogEntry{} - mi := &file_session_v1_session_proto_msgTypes[173] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClientLogEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientLogEntry) ProtoMessage() {} - -func (x *ClientLogEntry) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[173] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClientLogEntry.ProtoReflect.Descriptor instead. -func (*ClientLogEntry) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{173} -} - -func (x *ClientLogEntry) GetLevel() string { - if x != nil { - return x.Level - } - return "" -} - -func (x *ClientLogEntry) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *ClientLogEntry) GetTimestamp() string { - if x != nil { - return x.Timestamp - } - return "" -} - -func (x *ClientLogEntry) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -func (x *ClientLogEntry) GetUserAgent() string { - if x != nil { - return x.UserAgent - } - return "" -} - -func (x *ClientLogEntry) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -type LogClientEventsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Entries []*ClientLogEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *LogClientEventsRequest) Reset() { - *x = LogClientEventsRequest{} - mi := &file_session_v1_session_proto_msgTypes[174] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *LogClientEventsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LogClientEventsRequest) ProtoMessage() {} - -func (x *LogClientEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[174] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LogClientEventsRequest.ProtoReflect.Descriptor instead. -func (*LogClientEventsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{174} -} - -func (x *LogClientEventsRequest) GetEntries() []*ClientLogEntry { - if x != nil { - return x.Entries - } - return nil -} - -type LogClientEventsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *LogClientEventsResponse) Reset() { - *x = LogClientEventsResponse{} - mi := &file_session_v1_session_proto_msgTypes[175] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *LogClientEventsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LogClientEventsResponse) ProtoMessage() {} - -func (x *LogClientEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[175] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LogClientEventsResponse.ProtoReflect.Descriptor instead. -func (*LogClientEventsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{175} -} - -type ListErrorsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // When true, acknowledged error events are included in the response. - IncludeAcknowledged bool `protobuf:"varint,1,opt,name=include_acknowledged,json=includeAcknowledged,proto3" json:"include_acknowledged,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListErrorsRequest) Reset() { - *x = ListErrorsRequest{} - mi := &file_session_v1_session_proto_msgTypes[176] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListErrorsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListErrorsRequest) ProtoMessage() {} - -func (x *ListErrorsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[176] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListErrorsRequest.ProtoReflect.Descriptor instead. -func (*ListErrorsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{176} -} - -func (x *ListErrorsRequest) GetIncludeAcknowledged() bool { - if x != nil { - return x.IncludeAcknowledged - } - return false -} - -// ErrorEventRecord is the wire representation of a persisted RPC error. -type ErrorEventRecord struct { - state protoimpl.MessageState `protogen:"open.v1"` - Fingerprint string `protobuf:"bytes,1,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` - ErrorType string `protobuf:"bytes,2,opt,name=error_type,json=errorType,proto3" json:"error_type,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - StackTrace string `protobuf:"bytes,4,opt,name=stack_trace,json=stackTrace,proto3" json:"stack_trace,omitempty"` - RpcProcedure string `protobuf:"bytes,5,opt,name=rpc_procedure,json=rpcProcedure,proto3" json:"rpc_procedure,omitempty"` - OccurrenceCount int32 `protobuf:"varint,6,opt,name=occurrence_count,json=occurrenceCount,proto3" json:"occurrence_count,omitempty"` - FirstSeen *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=first_seen,json=firstSeen,proto3" json:"first_seen,omitempty"` - LastSeen *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"` - Acknowledged bool `protobuf:"varint,9,opt,name=acknowledged,proto3" json:"acknowledged,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ErrorEventRecord) Reset() { - *x = ErrorEventRecord{} - mi := &file_session_v1_session_proto_msgTypes[177] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ErrorEventRecord) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ErrorEventRecord) ProtoMessage() {} - -func (x *ErrorEventRecord) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[177] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ErrorEventRecord.ProtoReflect.Descriptor instead. -func (*ErrorEventRecord) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{177} -} - -func (x *ErrorEventRecord) GetFingerprint() string { - if x != nil { - return x.Fingerprint - } - return "" -} - -func (x *ErrorEventRecord) GetErrorType() string { - if x != nil { - return x.ErrorType - } - return "" -} - -func (x *ErrorEventRecord) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *ErrorEventRecord) GetStackTrace() string { - if x != nil { - return x.StackTrace - } - return "" -} - -func (x *ErrorEventRecord) GetRpcProcedure() string { - if x != nil { - return x.RpcProcedure - } - return "" -} - -func (x *ErrorEventRecord) GetOccurrenceCount() int32 { - if x != nil { - return x.OccurrenceCount - } - return 0 -} - -func (x *ErrorEventRecord) GetFirstSeen() *timestamppb.Timestamp { - if x != nil { - return x.FirstSeen - } - return nil -} - -func (x *ErrorEventRecord) GetLastSeen() *timestamppb.Timestamp { - if x != nil { - return x.LastSeen - } - return nil -} - -func (x *ErrorEventRecord) GetAcknowledged() bool { - if x != nil { - return x.Acknowledged - } - return false -} - -type ListErrorsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Errors []*ErrorEventRecord `protobuf:"bytes,1,rep,name=errors,proto3" json:"errors,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListErrorsResponse) Reset() { - *x = ListErrorsResponse{} - mi := &file_session_v1_session_proto_msgTypes[178] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListErrorsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListErrorsResponse) ProtoMessage() {} - -func (x *ListErrorsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[178] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListErrorsResponse.ProtoReflect.Descriptor instead. -func (*ListErrorsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{178} -} - -func (x *ListErrorsResponse) GetErrors() []*ErrorEventRecord { - if x != nil { - return x.Errors - } - return nil -} - -type AcknowledgeErrorRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Fingerprint string `protobuf:"bytes,1,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AcknowledgeErrorRequest) Reset() { - *x = AcknowledgeErrorRequest{} - mi := &file_session_v1_session_proto_msgTypes[179] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AcknowledgeErrorRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AcknowledgeErrorRequest) ProtoMessage() {} - -func (x *AcknowledgeErrorRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[179] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AcknowledgeErrorRequest.ProtoReflect.Descriptor instead. -func (*AcknowledgeErrorRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{179} -} - -func (x *AcknowledgeErrorRequest) GetFingerprint() string { - if x != nil { - return x.Fingerprint - } - return "" -} - -type AcknowledgeErrorResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AcknowledgeErrorResponse) Reset() { - *x = AcknowledgeErrorResponse{} - mi := &file_session_v1_session_proto_msgTypes[180] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AcknowledgeErrorResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AcknowledgeErrorResponse) ProtoMessage() {} - -func (x *AcknowledgeErrorResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[180] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AcknowledgeErrorResponse.ProtoReflect.Descriptor instead. -func (*AcknowledgeErrorResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{180} -} - -// ClearConversationStateRequest identifies the session whose conversation UUID should be cleared. -type ClearConversationStateRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier (title or stable UUID). - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClearConversationStateRequest) Reset() { - *x = ClearConversationStateRequest{} - mi := &file_session_v1_session_proto_msgTypes[181] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClearConversationStateRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClearConversationStateRequest) ProtoMessage() {} - -func (x *ClearConversationStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[181] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClearConversationStateRequest.ProtoReflect.Descriptor instead. -func (*ClearConversationStateRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{181} -} - -func (x *ClearConversationStateRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -// ClearConversationStateResponse reports whether the state was cleared. -type ClearConversationStateResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClearConversationStateResponse) Reset() { - *x = ClearConversationStateResponse{} - mi := &file_session_v1_session_proto_msgTypes[182] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClearConversationStateResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClearConversationStateResponse) ProtoMessage() {} - -func (x *ClearConversationStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[182] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClearConversationStateResponse.ProtoReflect.Descriptor instead. -func (*ClearConversationStateResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{182} -} - -func (x *ClearConversationStateResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *ClearConversationStateResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type FeatureFlag struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Machine name of the feature (e.g. "backlog"). - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Whether the feature is currently enabled. - Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` - // Human-readable description of what the feature does. - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // Optional human-readable status line (e.g. why a controller-backed flag is - // currently off). Empty when not applicable. - StatusDetail string `protobuf:"bytes,4,opt,name=status_detail,json=statusDetail,proto3" json:"status_detail,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FeatureFlag) Reset() { - *x = FeatureFlag{} - mi := &file_session_v1_session_proto_msgTypes[183] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FeatureFlag) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FeatureFlag) ProtoMessage() {} - -func (x *FeatureFlag) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[183] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FeatureFlag.ProtoReflect.Descriptor instead. -func (*FeatureFlag) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{183} -} - -func (x *FeatureFlag) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *FeatureFlag) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *FeatureFlag) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *FeatureFlag) GetStatusDetail() string { - if x != nil { - return x.StatusDetail - } - return "" -} - -type GetFeatureFlagsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetFeatureFlagsRequest) Reset() { - *x = GetFeatureFlagsRequest{} - mi := &file_session_v1_session_proto_msgTypes[184] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetFeatureFlagsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFeatureFlagsRequest) ProtoMessage() {} - -func (x *GetFeatureFlagsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[184] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFeatureFlagsRequest.ProtoReflect.Descriptor instead. -func (*GetFeatureFlagsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{184} -} - -type GetFeatureFlagsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Flags []*FeatureFlag `protobuf:"bytes,1,rep,name=flags,proto3" json:"flags,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetFeatureFlagsResponse) Reset() { - *x = GetFeatureFlagsResponse{} - mi := &file_session_v1_session_proto_msgTypes[185] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetFeatureFlagsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetFeatureFlagsResponse) ProtoMessage() {} - -func (x *GetFeatureFlagsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[185] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetFeatureFlagsResponse.ProtoReflect.Descriptor instead. -func (*GetFeatureFlagsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{185} -} - -func (x *GetFeatureFlagsResponse) GetFlags() []*FeatureFlag { - if x != nil { - return x.Flags - } - return nil -} - -type GetHookStatusRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetHookStatusRequest) Reset() { - *x = GetHookStatusRequest{} - mi := &file_session_v1_session_proto_msgTypes[186] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetHookStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetHookStatusRequest) ProtoMessage() {} - -func (x *GetHookStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[186] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetHookStatusRequest.ProtoReflect.Descriptor instead. -func (*GetHookStatusRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{186} -} - -type GetHookStatusResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Whether the PreToolUse rule-enforcement hook (ssq-hooks check) is installed globally. - RulesInstalled bool `protobuf:"varint,1,opt,name=rules_installed,json=rulesInstalled,proto3" json:"rules_installed,omitempty"` - // Whether the Notification/Stop notification hooks (ssq-hook-handler) are installed globally. - NotificationsInstalled bool `protobuf:"varint,2,opt,name=notifications_installed,json=notificationsInstalled,proto3" json:"notifications_installed,omitempty"` - // True when the ssq-hooks binary is available to install the rules hook. - RulesAvailable bool `protobuf:"varint,3,opt,name=rules_available,json=rulesAvailable,proto3" json:"rules_available,omitempty"` - // True when the ssq-hook-handler is available to install the notification hooks. - NotificationsAvailable bool `protobuf:"varint,4,opt,name=notifications_available,json=notificationsAvailable,proto3" json:"notifications_available,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetHookStatusResponse) Reset() { - *x = GetHookStatusResponse{} - mi := &file_session_v1_session_proto_msgTypes[187] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetHookStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetHookStatusResponse) ProtoMessage() {} - -func (x *GetHookStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[187] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetHookStatusResponse.ProtoReflect.Descriptor instead. -func (*GetHookStatusResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{187} -} - -func (x *GetHookStatusResponse) GetRulesInstalled() bool { - if x != nil { - return x.RulesInstalled - } - return false -} - -func (x *GetHookStatusResponse) GetNotificationsInstalled() bool { - if x != nil { - return x.NotificationsInstalled - } - return false -} - -func (x *GetHookStatusResponse) GetRulesAvailable() bool { - if x != nil { - return x.RulesAvailable - } - return false -} - -func (x *GetHookStatusResponse) GetNotificationsAvailable() bool { - if x != nil { - return x.NotificationsAvailable - } - return false -} - -type InstallHooksRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Install the PreToolUse rule-enforcement hook. - InstallRules bool `protobuf:"varint,1,opt,name=install_rules,json=installRules,proto3" json:"install_rules,omitempty"` - // Install the Notification/Stop notification hooks. - InstallNotifications bool `protobuf:"varint,2,opt,name=install_notifications,json=installNotifications,proto3" json:"install_notifications,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *InstallHooksRequest) Reset() { - *x = InstallHooksRequest{} - mi := &file_session_v1_session_proto_msgTypes[188] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *InstallHooksRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*InstallHooksRequest) ProtoMessage() {} - -func (x *InstallHooksRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[188] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use InstallHooksRequest.ProtoReflect.Descriptor instead. -func (*InstallHooksRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{188} -} - -func (x *InstallHooksRequest) GetInstallRules() bool { - if x != nil { - return x.InstallRules - } - return false -} - -func (x *InstallHooksRequest) GetInstallNotifications() bool { - if x != nil { - return x.InstallNotifications - } - return false -} - -type InstallHooksResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Hook status after the install attempt. - Status *GetHookStatusResponse `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - // Human-readable per-hook result messages (e.g. a manual fallback command when a binary is missing). - Messages []string `protobuf:"bytes,2,rep,name=messages,proto3" json:"messages,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *InstallHooksResponse) Reset() { - *x = InstallHooksResponse{} - mi := &file_session_v1_session_proto_msgTypes[189] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *InstallHooksResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*InstallHooksResponse) ProtoMessage() {} - -func (x *InstallHooksResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[189] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use InstallHooksResponse.ProtoReflect.Descriptor instead. -func (*InstallHooksResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{189} -} - -func (x *InstallHooksResponse) GetStatus() *GetHookStatusResponse { - if x != nil { - return x.Status - } - return nil -} - -func (x *InstallHooksResponse) GetMessages() []string { - if x != nil { - return x.Messages - } - return nil -} - -type UpdateFeatureFlagRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The feature name to update (e.g. "backlog"). - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The new enabled state. - Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateFeatureFlagRequest) Reset() { - *x = UpdateFeatureFlagRequest{} - mi := &file_session_v1_session_proto_msgTypes[190] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateFeatureFlagRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateFeatureFlagRequest) ProtoMessage() {} - -func (x *UpdateFeatureFlagRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[190] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateFeatureFlagRequest.ProtoReflect.Descriptor instead. -func (*UpdateFeatureFlagRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{190} -} - -func (x *UpdateFeatureFlagRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *UpdateFeatureFlagRequest) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -type UpdateFeatureFlagResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The updated flag state. - Flag *FeatureFlag `protobuf:"bytes,1,opt,name=flag,proto3" json:"flag,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateFeatureFlagResponse) Reset() { - *x = UpdateFeatureFlagResponse{} - mi := &file_session_v1_session_proto_msgTypes[191] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateFeatureFlagResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateFeatureFlagResponse) ProtoMessage() {} - -func (x *UpdateFeatureFlagResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[191] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateFeatureFlagResponse.ProtoReflect.Descriptor instead. -func (*UpdateFeatureFlagResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{191} -} - -func (x *UpdateFeatureFlagResponse) GetFlag() *FeatureFlag { - if x != nil { - return x.Flag - } - return nil -} - -type EscapeEventProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - Stage string `protobuf:"bytes,3,opt,name=stage,proto3" json:"stage,omitempty"` - SequenceType string `protobuf:"bytes,4,opt,name=sequence_type,json=sequenceType,proto3" json:"sequence_type,omitempty"` - SequenceSubtype string `protobuf:"bytes,5,opt,name=sequence_subtype,json=sequenceSubtype,proto3" json:"sequence_subtype,omitempty"` - ByteLength int32 `protobuf:"varint,6,opt,name=byte_length,json=byteLength,proto3" json:"byte_length,omitempty"` - PayloadHash string `protobuf:"bytes,7,opt,name=payload_hash,json=payloadHash,proto3" json:"payload_hash,omitempty"` - RawBytes []byte `protobuf:"bytes,8,opt,name=raw_bytes,json=rawBytes,proto3" json:"raw_bytes,omitempty"` - Mangled bool `protobuf:"varint,9,opt,name=mangled,proto3" json:"mangled,omitempty"` - MangleType string `protobuf:"bytes,10,opt,name=mangle_type,json=mangleType,proto3" json:"mangle_type,omitempty"` - WallTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=wall_time,json=wallTime,proto3" json:"wall_time,omitempty"` - SessionSeq int64 `protobuf:"varint,12,opt,name=session_seq,json=sessionSeq,proto3" json:"session_seq,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *EscapeEventProto) Reset() { - *x = EscapeEventProto{} - mi := &file_session_v1_session_proto_msgTypes[192] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EscapeEventProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EscapeEventProto) ProtoMessage() {} - -func (x *EscapeEventProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[192] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EscapeEventProto.ProtoReflect.Descriptor instead. -func (*EscapeEventProto) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{192} -} - -func (x *EscapeEventProto) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *EscapeEventProto) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *EscapeEventProto) GetStage() string { - if x != nil { - return x.Stage - } - return "" -} - -func (x *EscapeEventProto) GetSequenceType() string { - if x != nil { - return x.SequenceType - } - return "" -} - -func (x *EscapeEventProto) GetSequenceSubtype() string { - if x != nil { - return x.SequenceSubtype - } - return "" -} - -func (x *EscapeEventProto) GetByteLength() int32 { - if x != nil { - return x.ByteLength - } - return 0 -} - -func (x *EscapeEventProto) GetPayloadHash() string { - if x != nil { - return x.PayloadHash - } - return "" -} - -func (x *EscapeEventProto) GetRawBytes() []byte { - if x != nil { - return x.RawBytes - } - return nil -} - -func (x *EscapeEventProto) GetMangled() bool { - if x != nil { - return x.Mangled - } - return false -} - -func (x *EscapeEventProto) GetMangleType() string { - if x != nil { - return x.MangleType - } - return "" -} - -func (x *EscapeEventProto) GetWallTime() *timestamppb.Timestamp { - if x != nil { - return x.WallTime - } - return nil -} - -func (x *EscapeEventProto) GetSessionSeq() int64 { - if x != nil { - return x.SessionSeq - } - return 0 -} - -type QueryEscapeAnalyticsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` - SequenceType string `protobuf:"bytes,3,opt,name=sequence_type,json=sequenceType,proto3" json:"sequence_type,omitempty"` - MangledOnly bool `protobuf:"varint,4,opt,name=mangled_only,json=mangledOnly,proto3" json:"mangled_only,omitempty"` - StartTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - EndTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` - PageSize int32 `protobuf:"varint,7,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - PageToken string `protobuf:"bytes,8,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *QueryEscapeAnalyticsRequest) Reset() { - *x = QueryEscapeAnalyticsRequest{} - mi := &file_session_v1_session_proto_msgTypes[193] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *QueryEscapeAnalyticsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryEscapeAnalyticsRequest) ProtoMessage() {} - -func (x *QueryEscapeAnalyticsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[193] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QueryEscapeAnalyticsRequest.ProtoReflect.Descriptor instead. -func (*QueryEscapeAnalyticsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{193} -} - -func (x *QueryEscapeAnalyticsRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *QueryEscapeAnalyticsRequest) GetStage() string { - if x != nil { - return x.Stage - } - return "" -} - -func (x *QueryEscapeAnalyticsRequest) GetSequenceType() string { - if x != nil { - return x.SequenceType - } - return "" -} - -func (x *QueryEscapeAnalyticsRequest) GetMangledOnly() bool { - if x != nil { - return x.MangledOnly - } - return false -} - -func (x *QueryEscapeAnalyticsRequest) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime - } - return nil -} - -func (x *QueryEscapeAnalyticsRequest) GetEndTime() *timestamppb.Timestamp { - if x != nil { - return x.EndTime - } - return nil -} - -func (x *QueryEscapeAnalyticsRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *QueryEscapeAnalyticsRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" -} - -type QueryEscapeAnalyticsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Events []*EscapeEventProto `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *QueryEscapeAnalyticsResponse) Reset() { - *x = QueryEscapeAnalyticsResponse{} - mi := &file_session_v1_session_proto_msgTypes[194] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *QueryEscapeAnalyticsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryEscapeAnalyticsResponse) ProtoMessage() {} - -func (x *QueryEscapeAnalyticsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[194] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QueryEscapeAnalyticsResponse.ProtoReflect.Descriptor instead. -func (*QueryEscapeAnalyticsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{194} -} - -func (x *QueryEscapeAnalyticsResponse) GetEvents() []*EscapeEventProto { - if x != nil { - return x.Events - } - return nil -} - -func (x *QueryEscapeAnalyticsResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken - } - return "" -} - -func (x *QueryEscapeAnalyticsResponse) GetTotalCount() int32 { - if x != nil { - return x.TotalCount - } - return 0 -} - -type EscapeSequenceCount struct { - state protoimpl.MessageState `protogen:"open.v1"` - SequenceType string `protobuf:"bytes,1,opt,name=sequence_type,json=sequenceType,proto3" json:"sequence_type,omitempty"` - Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` - MangledCount int64 `protobuf:"varint,3,opt,name=mangled_count,json=mangledCount,proto3" json:"mangled_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *EscapeSequenceCount) Reset() { - *x = EscapeSequenceCount{} - mi := &file_session_v1_session_proto_msgTypes[195] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EscapeSequenceCount) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EscapeSequenceCount) ProtoMessage() {} - -func (x *EscapeSequenceCount) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[195] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EscapeSequenceCount.ProtoReflect.Descriptor instead. -func (*EscapeSequenceCount) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{195} -} - -func (x *EscapeSequenceCount) GetSequenceType() string { - if x != nil { - return x.SequenceType - } - return "" -} - -func (x *EscapeSequenceCount) GetCount() int64 { - if x != nil { - return x.Count - } - return 0 -} - -func (x *EscapeSequenceCount) GetMangledCount() int64 { - if x != nil { - return x.MangledCount - } - return 0 -} - -type GetEscapeAnalyticsSummaryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetEscapeAnalyticsSummaryRequest) Reset() { - *x = GetEscapeAnalyticsSummaryRequest{} - mi := &file_session_v1_session_proto_msgTypes[196] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetEscapeAnalyticsSummaryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetEscapeAnalyticsSummaryRequest) ProtoMessage() {} - -func (x *GetEscapeAnalyticsSummaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[196] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetEscapeAnalyticsSummaryRequest.ProtoReflect.Descriptor instead. -func (*GetEscapeAnalyticsSummaryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{196} -} - -func (x *GetEscapeAnalyticsSummaryRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *GetEscapeAnalyticsSummaryRequest) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime - } - return nil -} - -func (x *GetEscapeAnalyticsSummaryRequest) GetEndTime() *timestamppb.Timestamp { - if x != nil { - return x.EndTime - } - return nil -} - -type GetEscapeAnalyticsSummaryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Histogram []*EscapeSequenceCount `protobuf:"bytes,1,rep,name=histogram,proto3" json:"histogram,omitempty"` - TotalSequences int64 `protobuf:"varint,2,opt,name=total_sequences,json=totalSequences,proto3" json:"total_sequences,omitempty"` - TotalMangled int64 `protobuf:"varint,3,opt,name=total_mangled,json=totalMangled,proto3" json:"total_mangled,omitempty"` - MangleRate float64 `protobuf:"fixed64,4,opt,name=mangle_rate,json=mangleRate,proto3" json:"mangle_rate,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetEscapeAnalyticsSummaryResponse) Reset() { - *x = GetEscapeAnalyticsSummaryResponse{} - mi := &file_session_v1_session_proto_msgTypes[197] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetEscapeAnalyticsSummaryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetEscapeAnalyticsSummaryResponse) ProtoMessage() {} - -func (x *GetEscapeAnalyticsSummaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[197] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetEscapeAnalyticsSummaryResponse.ProtoReflect.Descriptor instead. -func (*GetEscapeAnalyticsSummaryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{197} -} - -func (x *GetEscapeAnalyticsSummaryResponse) GetHistogram() []*EscapeSequenceCount { - if x != nil { - return x.Histogram - } - return nil -} - -func (x *GetEscapeAnalyticsSummaryResponse) GetTotalSequences() int64 { - if x != nil { - return x.TotalSequences - } - return 0 -} - -func (x *GetEscapeAnalyticsSummaryResponse) GetTotalMangled() int64 { - if x != nil { - return x.TotalMangled - } - return 0 -} - -func (x *GetEscapeAnalyticsSummaryResponse) GetMangleRate() float64 { - if x != nil { - return x.MangleRate - } - return 0 -} - -type GetEscapeAnalyticsGlobalSummaryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - StartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"` - EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetEscapeAnalyticsGlobalSummaryRequest) Reset() { - *x = GetEscapeAnalyticsGlobalSummaryRequest{} - mi := &file_session_v1_session_proto_msgTypes[198] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetEscapeAnalyticsGlobalSummaryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetEscapeAnalyticsGlobalSummaryRequest) ProtoMessage() {} - -func (x *GetEscapeAnalyticsGlobalSummaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[198] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetEscapeAnalyticsGlobalSummaryRequest.ProtoReflect.Descriptor instead. -func (*GetEscapeAnalyticsGlobalSummaryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{198} -} - -func (x *GetEscapeAnalyticsGlobalSummaryRequest) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime - } - return nil -} - -func (x *GetEscapeAnalyticsGlobalSummaryRequest) GetEndTime() *timestamppb.Timestamp { - if x != nil { - return x.EndTime - } - return nil -} - -type GetEscapeAnalyticsGlobalSummaryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Histogram []*EscapeSequenceCount `protobuf:"bytes,1,rep,name=histogram,proto3" json:"histogram,omitempty"` - TotalSequences int64 `protobuf:"varint,2,opt,name=total_sequences,json=totalSequences,proto3" json:"total_sequences,omitempty"` - TotalMangled int64 `protobuf:"varint,3,opt,name=total_mangled,json=totalMangled,proto3" json:"total_mangled,omitempty"` - MangleRate float64 `protobuf:"fixed64,4,opt,name=mangle_rate,json=mangleRate,proto3" json:"mangle_rate,omitempty"` - PerSession []*SessionEscapeSummary `protobuf:"bytes,5,rep,name=per_session,json=perSession,proto3" json:"per_session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetEscapeAnalyticsGlobalSummaryResponse) Reset() { - *x = GetEscapeAnalyticsGlobalSummaryResponse{} - mi := &file_session_v1_session_proto_msgTypes[199] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetEscapeAnalyticsGlobalSummaryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetEscapeAnalyticsGlobalSummaryResponse) ProtoMessage() {} - -func (x *GetEscapeAnalyticsGlobalSummaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[199] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetEscapeAnalyticsGlobalSummaryResponse.ProtoReflect.Descriptor instead. -func (*GetEscapeAnalyticsGlobalSummaryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{199} -} - -func (x *GetEscapeAnalyticsGlobalSummaryResponse) GetHistogram() []*EscapeSequenceCount { - if x != nil { - return x.Histogram - } - return nil -} - -func (x *GetEscapeAnalyticsGlobalSummaryResponse) GetTotalSequences() int64 { - if x != nil { - return x.TotalSequences - } - return 0 -} - -func (x *GetEscapeAnalyticsGlobalSummaryResponse) GetTotalMangled() int64 { - if x != nil { - return x.TotalMangled - } - return 0 -} - -func (x *GetEscapeAnalyticsGlobalSummaryResponse) GetMangleRate() float64 { - if x != nil { - return x.MangleRate - } - return 0 -} - -func (x *GetEscapeAnalyticsGlobalSummaryResponse) GetPerSession() []*SessionEscapeSummary { - if x != nil { - return x.PerSession - } - return nil -} - -type SessionEscapeSummary struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - TotalSequences int64 `protobuf:"varint,2,opt,name=total_sequences,json=totalSequences,proto3" json:"total_sequences,omitempty"` - TotalMangled int64 `protobuf:"varint,3,opt,name=total_mangled,json=totalMangled,proto3" json:"total_mangled,omitempty"` - MangleRate float64 `protobuf:"fixed64,4,opt,name=mangle_rate,json=mangleRate,proto3" json:"mangle_rate,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionEscapeSummary) Reset() { - *x = SessionEscapeSummary{} - mi := &file_session_v1_session_proto_msgTypes[200] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionEscapeSummary) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionEscapeSummary) ProtoMessage() {} - -func (x *SessionEscapeSummary) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[200] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionEscapeSummary.ProtoReflect.Descriptor instead. -func (*SessionEscapeSummary) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{200} -} - -func (x *SessionEscapeSummary) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *SessionEscapeSummary) GetTotalSequences() int64 { - if x != nil { - return x.TotalSequences - } - return 0 -} - -func (x *SessionEscapeSummary) GetTotalMangled() int64 { - if x != nil { - return x.TotalMangled - } - return 0 -} - -func (x *SessionEscapeSummary) GetMangleRate() float64 { - if x != nil { - return x.MangleRate - } - return 0 -} - -type SpawnShellRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session to attach the shell to (uses session title as ID). - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Human-readable name for the shell tab (defaults to basename of command). - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // Command to run (defaults to $SHELL or /bin/sh). - Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` - // Working directory (defaults to session workspace root). - WorkingDir string `protobuf:"bytes,4,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SpawnShellRequest) Reset() { - *x = SpawnShellRequest{} - mi := &file_session_v1_session_proto_msgTypes[201] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SpawnShellRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SpawnShellRequest) ProtoMessage() {} - -func (x *SpawnShellRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[201] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SpawnShellRequest.ProtoReflect.Descriptor instead. -func (*SpawnShellRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{201} -} - -func (x *SpawnShellRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *SpawnShellRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *SpawnShellRequest) GetCommand() string { - if x != nil { - return x.Command - } - return "" -} - -func (x *SpawnShellRequest) GetWorkingDir() string { - if x != nil { - return x.WorkingDir - } - return "" -} - -type SpawnShellResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The newly created shell. - Shell *Shell `protobuf:"bytes,1,opt,name=shell,proto3" json:"shell,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SpawnShellResponse) Reset() { - *x = SpawnShellResponse{} - mi := &file_session_v1_session_proto_msgTypes[202] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SpawnShellResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SpawnShellResponse) ProtoMessage() {} - -func (x *SpawnShellResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[202] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SpawnShellResponse.ProtoReflect.Descriptor instead. -func (*SpawnShellResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{202} -} - -func (x *SpawnShellResponse) GetShell() *Shell { - if x != nil { - return x.Shell - } - return nil -} - -type StopShellRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Shell identifier. - ShellId string `protobuf:"bytes,2,opt,name=shell_id,json=shellId,proto3" json:"shell_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StopShellRequest) Reset() { - *x = StopShellRequest{} - mi := &file_session_v1_session_proto_msgTypes[203] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StopShellRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StopShellRequest) ProtoMessage() {} - -func (x *StopShellRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[203] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StopShellRequest.ProtoReflect.Descriptor instead. -func (*StopShellRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{203} -} - -func (x *StopShellRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *StopShellRequest) GetShellId() string { - if x != nil { - return x.ShellId - } - return "" -} - -type StopShellResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StopShellResponse) Reset() { - *x = StopShellResponse{} - mi := &file_session_v1_session_proto_msgTypes[204] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StopShellResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StopShellResponse) ProtoMessage() {} - -func (x *StopShellResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[204] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StopShellResponse.ProtoReflect.Descriptor instead. -func (*StopShellResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{204} -} - -func (x *StopShellResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *StopShellResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type RestartShellRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Shell identifier. - ShellId string `protobuf:"bytes,2,opt,name=shell_id,json=shellId,proto3" json:"shell_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RestartShellRequest) Reset() { - *x = RestartShellRequest{} - mi := &file_session_v1_session_proto_msgTypes[205] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RestartShellRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RestartShellRequest) ProtoMessage() {} - -func (x *RestartShellRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[205] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RestartShellRequest.ProtoReflect.Descriptor instead. -func (*RestartShellRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{205} -} - -func (x *RestartShellRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *RestartShellRequest) GetShellId() string { - if x != nil { - return x.ShellId - } - return "" -} - -type RestartShellResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RestartShellResponse) Reset() { - *x = RestartShellResponse{} - mi := &file_session_v1_session_proto_msgTypes[206] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RestartShellResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RestartShellResponse) ProtoMessage() {} - -func (x *RestartShellResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[206] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RestartShellResponse.ProtoReflect.Descriptor instead. -func (*RestartShellResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{206} -} - -func (x *RestartShellResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *RestartShellResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type ListShellsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListShellsRequest) Reset() { - *x = ListShellsRequest{} - mi := &file_session_v1_session_proto_msgTypes[207] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListShellsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListShellsRequest) ProtoMessage() {} - -func (x *ListShellsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[207] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListShellsRequest.ProtoReflect.Descriptor instead. -func (*ListShellsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{207} -} - -func (x *ListShellsRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -type ListShellsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // All shells for the session, sorted by order_index ascending. - Shells []*Shell `protobuf:"bytes,1,rep,name=shells,proto3" json:"shells,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListShellsResponse) Reset() { - *x = ListShellsResponse{} - mi := &file_session_v1_session_proto_msgTypes[208] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListShellsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListShellsResponse) ProtoMessage() {} - -func (x *ListShellsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[208] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListShellsResponse.ProtoReflect.Descriptor instead. -func (*ListShellsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{208} -} - -func (x *ListShellsResponse) GetShells() []*Shell { - if x != nil { - return x.Shells - } - return nil -} - -type DeleteShellRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Session identifier. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Shell identifier. - ShellId string `protobuf:"bytes,2,opt,name=shell_id,json=shellId,proto3" json:"shell_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteShellRequest) Reset() { - *x = DeleteShellRequest{} - mi := &file_session_v1_session_proto_msgTypes[209] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteShellRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteShellRequest) ProtoMessage() {} - -func (x *DeleteShellRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[209] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteShellRequest.ProtoReflect.Descriptor instead. -func (*DeleteShellRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{209} -} - -func (x *DeleteShellRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *DeleteShellRequest) GetShellId() string { - if x != nil { - return x.ShellId - } - return "" -} - -type DeleteShellResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteShellResponse) Reset() { - *x = DeleteShellResponse{} - mi := &file_session_v1_session_proto_msgTypes[210] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteShellResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteShellResponse) ProtoMessage() {} - -func (x *DeleteShellResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[210] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteShellResponse.ProtoReflect.Descriptor instead. -func (*DeleteShellResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{210} -} - -func (x *DeleteShellResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *DeleteShellResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type GenerateSuggestedRuleRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Source SuggestionSource `protobuf:"varint,1,opt,name=source,proto3,enum=session.v1.SuggestionSource" json:"source,omitempty"` - // For ANALYTICS_GAPS: number of days of history to analyze (1–90, default 7). - WindowDays *int32 `protobuf:"varint,2,opt,name=window_days,json=windowDays,proto3,oneof" json:"window_days,omitempty"` - // For COMMAND_SAMPLE: the raw command string the user pasted. - CommandSample string `protobuf:"bytes,3,opt,name=command_sample,json=commandSample,proto3" json:"command_sample,omitempty"` - // For REVIEW_QUEUE_ITEM: the analytics entry ID of the review item. - AnalyticsItemId string `protobuf:"bytes,4,opt,name=analytics_item_id,json=analyticsItemId,proto3" json:"analytics_item_id,omitempty"` - // For ANALYTICS_GAPS scoped to a single tool/program: optional filter. - ToolNameFilter string `protobuf:"bytes,5,opt,name=tool_name_filter,json=toolNameFilter,proto3" json:"tool_name_filter,omitempty"` - ProgramNameFilter string `protobuf:"bytes,6,opt,name=program_name_filter,json=programNameFilter,proto3" json:"program_name_filter,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GenerateSuggestedRuleRequest) Reset() { - *x = GenerateSuggestedRuleRequest{} - mi := &file_session_v1_session_proto_msgTypes[211] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GenerateSuggestedRuleRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GenerateSuggestedRuleRequest) ProtoMessage() {} - -func (x *GenerateSuggestedRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[211] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GenerateSuggestedRuleRequest.ProtoReflect.Descriptor instead. -func (*GenerateSuggestedRuleRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{211} -} - -func (x *GenerateSuggestedRuleRequest) GetSource() SuggestionSource { - if x != nil { - return x.Source - } - return SuggestionSource_SUGGESTION_SOURCE_UNSPECIFIED -} - -func (x *GenerateSuggestedRuleRequest) GetWindowDays() int32 { - if x != nil && x.WindowDays != nil { - return *x.WindowDays - } - return 0 -} - -func (x *GenerateSuggestedRuleRequest) GetCommandSample() string { - if x != nil { - return x.CommandSample - } - return "" -} - -func (x *GenerateSuggestedRuleRequest) GetAnalyticsItemId() string { - if x != nil { - return x.AnalyticsItemId - } - return "" -} - -func (x *GenerateSuggestedRuleRequest) GetToolNameFilter() string { - if x != nil { - return x.ToolNameFilter - } - return "" -} - -func (x *GenerateSuggestedRuleRequest) GetProgramNameFilter() string { - if x != nil { - return x.ProgramNameFilter - } - return "" -} - -type GenerateSuggestedRuleResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Multiple suggestions are returned so the user can review a batch at once. - // Analytics-gaps calls return up to 5 suggestions (one per top gap cluster). - // Command-sample and review-queue-item calls return exactly 1. - Suggestions []*SuggestedRuleProto `protobuf:"bytes,1,rep,name=suggestions,proto3" json:"suggestions,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GenerateSuggestedRuleResponse) Reset() { - *x = GenerateSuggestedRuleResponse{} - mi := &file_session_v1_session_proto_msgTypes[212] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GenerateSuggestedRuleResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GenerateSuggestedRuleResponse) ProtoMessage() {} - -func (x *GenerateSuggestedRuleResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[212] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GenerateSuggestedRuleResponse.ProtoReflect.Descriptor instead. -func (*GenerateSuggestedRuleResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{212} -} - -func (x *GenerateSuggestedRuleResponse) GetSuggestions() []*SuggestedRuleProto { - if x != nil { - return x.Suggestions - } - return nil -} - -// HibernateSession messages -type HibernateSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // reason identifies why the session is being hibernated. - // Values: "manual", "idle", "resource_pressure". Defaults to "manual". - Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *HibernateSessionRequest) Reset() { - *x = HibernateSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[213] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *HibernateSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HibernateSessionRequest) ProtoMessage() {} - -func (x *HibernateSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[213] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HibernateSessionRequest.ProtoReflect.Descriptor instead. -func (*HibernateSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{213} -} - -func (x *HibernateSessionRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *HibernateSessionRequest) GetReason() string { - if x != nil { - return x.Reason - } - return "" -} - -type HibernateSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *HibernateSessionResponse) Reset() { - *x = HibernateSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[214] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *HibernateSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HibernateSessionResponse) ProtoMessage() {} - -func (x *HibernateSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[214] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HibernateSessionResponse.ProtoReflect.Descriptor instead. -func (*HibernateSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{214} -} - -func (x *HibernateSessionResponse) GetSession() *Session { - if x != nil { - return x.Session - } - return nil -} - -// ResumeHibernatedSession messages -type ResumeHibernatedSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResumeHibernatedSessionRequest) Reset() { - *x = ResumeHibernatedSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[215] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResumeHibernatedSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResumeHibernatedSessionRequest) ProtoMessage() {} - -func (x *ResumeHibernatedSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[215] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResumeHibernatedSessionRequest.ProtoReflect.Descriptor instead. -func (*ResumeHibernatedSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{215} -} - -func (x *ResumeHibernatedSessionRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type ResumeHibernatedSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResumeHibernatedSessionResponse) Reset() { - *x = ResumeHibernatedSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[216] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResumeHibernatedSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResumeHibernatedSessionResponse) ProtoMessage() {} - -func (x *ResumeHibernatedSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[216] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResumeHibernatedSessionResponse.ProtoReflect.Descriptor instead. -func (*ResumeHibernatedSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{216} -} - -func (x *ResumeHibernatedSessionResponse) GetSession() *Session { - if x != nil { - return x.Session - } - return nil -} - -// ResumeCrashedSession messages -type ResumeCrashedSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResumeCrashedSessionRequest) Reset() { - *x = ResumeCrashedSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[217] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResumeCrashedSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResumeCrashedSessionRequest) ProtoMessage() {} - -func (x *ResumeCrashedSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[217] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResumeCrashedSessionRequest.ProtoReflect.Descriptor instead. -func (*ResumeCrashedSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{217} -} - -func (x *ResumeCrashedSessionRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type ResumeCrashedSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Session *Session `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResumeCrashedSessionResponse) Reset() { - *x = ResumeCrashedSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[218] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResumeCrashedSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResumeCrashedSessionResponse) ProtoMessage() {} - -func (x *ResumeCrashedSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[218] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResumeCrashedSessionResponse.ProtoReflect.Descriptor instead. -func (*ResumeCrashedSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{218} -} - -func (x *ResumeCrashedSessionResponse) GetSession() *Session { - if x != nil { - return x.Session - } - return nil -} - -// ValidateRules messages -type ValidateRulesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - YamlContent string `protobuf:"bytes,1,opt,name=yaml_content,json=yamlContent,proto3" json:"yaml_content,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ValidateRulesRequest) Reset() { - *x = ValidateRulesRequest{} - mi := &file_session_v1_session_proto_msgTypes[219] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ValidateRulesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ValidateRulesRequest) ProtoMessage() {} - -func (x *ValidateRulesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[219] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ValidateRulesRequest.ProtoReflect.Descriptor instead. -func (*ValidateRulesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{219} -} - -func (x *ValidateRulesRequest) GetYamlContent() string { - if x != nil { - return x.YamlContent - } - return "" -} - -type ValidateRulesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Results []*ParsedRuleResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` - ValidCount int32 `protobuf:"varint,2,opt,name=valid_count,json=validCount,proto3" json:"valid_count,omitempty"` - ErrorCount int32 `protobuf:"varint,3,opt,name=error_count,json=errorCount,proto3" json:"error_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ValidateRulesResponse) Reset() { - *x = ValidateRulesResponse{} - mi := &file_session_v1_session_proto_msgTypes[220] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ValidateRulesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ValidateRulesResponse) ProtoMessage() {} - -func (x *ValidateRulesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[220] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ValidateRulesResponse.ProtoReflect.Descriptor instead. -func (*ValidateRulesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{220} -} - -func (x *ValidateRulesResponse) GetResults() []*ParsedRuleResult { - if x != nil { - return x.Results - } - return nil -} - -func (x *ValidateRulesResponse) GetValidCount() int32 { - if x != nil { - return x.ValidCount - } - return 0 -} - -func (x *ValidateRulesResponse) GetErrorCount() int32 { - if x != nil { - return x.ErrorCount - } - return 0 -} - -type ParsedRuleResult struct { - state protoimpl.MessageState `protogen:"open.v1"` - Rule *ApprovalRuleProto `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"` - Errors []string `protobuf:"bytes,2,rep,name=errors,proto3" json:"errors,omitempty"` - Valid bool `protobuf:"varint,3,opt,name=valid,proto3" json:"valid,omitempty"` - OriginalName string `protobuf:"bytes,4,opt,name=original_name,json=originalName,proto3" json:"original_name,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ParsedRuleResult) Reset() { - *x = ParsedRuleResult{} - mi := &file_session_v1_session_proto_msgTypes[221] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ParsedRuleResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ParsedRuleResult) ProtoMessage() {} - -func (x *ParsedRuleResult) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[221] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ParsedRuleResult.ProtoReflect.Descriptor instead. -func (*ParsedRuleResult) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{221} -} - -func (x *ParsedRuleResult) GetRule() *ApprovalRuleProto { - if x != nil { - return x.Rule - } - return nil -} - -func (x *ParsedRuleResult) GetErrors() []string { - if x != nil { - return x.Errors - } - return nil -} - -func (x *ParsedRuleResult) GetValid() bool { - if x != nil { - return x.Valid - } - return false -} - -func (x *ParsedRuleResult) GetOriginalName() string { - if x != nil { - return x.OriginalName - } - return "" -} - -// ExportRules messages -type ExportRulesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - RuleIds []string `protobuf:"bytes,1,rep,name=rule_ids,json=ruleIds,proto3" json:"rule_ids,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ExportRulesRequest) Reset() { - *x = ExportRulesRequest{} - mi := &file_session_v1_session_proto_msgTypes[222] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExportRulesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExportRulesRequest) ProtoMessage() {} - -func (x *ExportRulesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[222] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExportRulesRequest.ProtoReflect.Descriptor instead. -func (*ExportRulesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{222} -} - -func (x *ExportRulesRequest) GetRuleIds() []string { - if x != nil { - return x.RuleIds - } - return nil -} - -type ExportRulesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - YamlContent string `protobuf:"bytes,1,opt,name=yaml_content,json=yamlContent,proto3" json:"yaml_content,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ExportRulesResponse) Reset() { - *x = ExportRulesResponse{} - mi := &file_session_v1_session_proto_msgTypes[223] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExportRulesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExportRulesResponse) ProtoMessage() {} - -func (x *ExportRulesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[223] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExportRulesResponse.ProtoReflect.Descriptor instead. -func (*ExportRulesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{223} -} - -func (x *ExportRulesResponse) GetYamlContent() string { - if x != nil { - return x.YamlContent - } - return "" -} - -// BulkUpsertRules messages -type BulkUpsertRulesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Rules []*ApprovalRuleProto `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` - OverwriteDuplicates bool `protobuf:"varint,2,opt,name=overwrite_duplicates,json=overwriteDuplicates,proto3" json:"overwrite_duplicates,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BulkUpsertRulesRequest) Reset() { - *x = BulkUpsertRulesRequest{} - mi := &file_session_v1_session_proto_msgTypes[224] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BulkUpsertRulesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BulkUpsertRulesRequest) ProtoMessage() {} - -func (x *BulkUpsertRulesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[224] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BulkUpsertRulesRequest.ProtoReflect.Descriptor instead. -func (*BulkUpsertRulesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{224} -} - -func (x *BulkUpsertRulesRequest) GetRules() []*ApprovalRuleProto { - if x != nil { - return x.Rules - } - return nil -} - -func (x *BulkUpsertRulesRequest) GetOverwriteDuplicates() bool { - if x != nil { - return x.OverwriteDuplicates - } - return false -} - -type BulkUpsertRulesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Created int32 `protobuf:"varint,1,opt,name=created,proto3" json:"created,omitempty"` - Updated int32 `protobuf:"varint,2,opt,name=updated,proto3" json:"updated,omitempty"` - Skipped int32 `protobuf:"varint,3,opt,name=skipped,proto3" json:"skipped,omitempty"` - Errors []string `protobuf:"bytes,4,rep,name=errors,proto3" json:"errors,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BulkUpsertRulesResponse) Reset() { - *x = BulkUpsertRulesResponse{} - mi := &file_session_v1_session_proto_msgTypes[225] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BulkUpsertRulesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BulkUpsertRulesResponse) ProtoMessage() {} - -func (x *BulkUpsertRulesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[225] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BulkUpsertRulesResponse.ProtoReflect.Descriptor instead. -func (*BulkUpsertRulesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{225} -} - -func (x *BulkUpsertRulesResponse) GetCreated() int32 { - if x != nil { - return x.Created - } - return 0 -} - -func (x *BulkUpsertRulesResponse) GetUpdated() int32 { - if x != nil { - return x.Updated - } - return 0 -} - -func (x *BulkUpsertRulesResponse) GetSkipped() int32 { - if x != nil { - return x.Skipped - } - return 0 -} - -func (x *BulkUpsertRulesResponse) GetErrors() []string { - if x != nil { - return x.Errors - } - return nil -} - -// GetConfigFileRules messages -type GetConfigFileRulesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetConfigFileRulesRequest) Reset() { - *x = GetConfigFileRulesRequest{} - mi := &file_session_v1_session_proto_msgTypes[226] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetConfigFileRulesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetConfigFileRulesRequest) ProtoMessage() {} - -func (x *GetConfigFileRulesRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[226] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetConfigFileRulesRequest.ProtoReflect.Descriptor instead. -func (*GetConfigFileRulesRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{226} -} - -type GetConfigFileRulesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Rules []*ApprovalRuleProto `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` - FilePath string `protobuf:"bytes,2,opt,name=file_path,json=filePath,proto3" json:"file_path,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetConfigFileRulesResponse) Reset() { - *x = GetConfigFileRulesResponse{} - mi := &file_session_v1_session_proto_msgTypes[227] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetConfigFileRulesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetConfigFileRulesResponse) ProtoMessage() {} - -func (x *GetConfigFileRulesResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[227] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetConfigFileRulesResponse.ProtoReflect.Descriptor instead. -func (*GetConfigFileRulesResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{227} -} - -func (x *GetConfigFileRulesResponse) GetRules() []*ApprovalRuleProto { - if x != nil { - return x.Rules - } - return nil -} - -func (x *GetConfigFileRulesResponse) GetFilePath() string { - if x != nil { - return x.FilePath - } - return "" -} - -// SaveRulesToConfigFile messages -type SaveRulesToConfigFileRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - RuleIds []string `protobuf:"bytes,1,rep,name=rule_ids,json=ruleIds,proto3" json:"rule_ids,omitempty"` - Rule *ApprovalRuleProto `protobuf:"bytes,2,opt,name=rule,proto3" json:"rule,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SaveRulesToConfigFileRequest) Reset() { - *x = SaveRulesToConfigFileRequest{} - mi := &file_session_v1_session_proto_msgTypes[228] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SaveRulesToConfigFileRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SaveRulesToConfigFileRequest) ProtoMessage() {} - -func (x *SaveRulesToConfigFileRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[228] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SaveRulesToConfigFileRequest.ProtoReflect.Descriptor instead. -func (*SaveRulesToConfigFileRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{228} -} - -func (x *SaveRulesToConfigFileRequest) GetRuleIds() []string { - if x != nil { - return x.RuleIds - } - return nil -} - -func (x *SaveRulesToConfigFileRequest) GetRule() *ApprovalRuleProto { - if x != nil { - return x.Rule - } - return nil -} - -type SaveRulesToConfigFileResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - FilePath string `protobuf:"bytes,1,opt,name=file_path,json=filePath,proto3" json:"file_path,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SaveRulesToConfigFileResponse) Reset() { - *x = SaveRulesToConfigFileResponse{} - mi := &file_session_v1_session_proto_msgTypes[229] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SaveRulesToConfigFileResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SaveRulesToConfigFileResponse) ProtoMessage() {} - -func (x *SaveRulesToConfigFileResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[229] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SaveRulesToConfigFileResponse.ProtoReflect.Descriptor instead. -func (*SaveRulesToConfigFileResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{229} -} - -func (x *SaveRulesToConfigFileResponse) GetFilePath() string { - if x != nil { - return x.FilePath - } - return "" -} - -type WorkflowProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - Command string `protobuf:"bytes,5,opt,name=command,proto3" json:"command,omitempty"` - TargetDirectory string `protobuf:"bytes,6,opt,name=target_directory,json=targetDirectory,proto3" json:"target_directory,omitempty"` - InputTemplate string `protobuf:"bytes,7,opt,name=input_template,json=inputTemplate,proto3" json:"input_template,omitempty"` - SessionType string `protobuf:"bytes,8,opt,name=session_type,json=sessionType,proto3" json:"session_type,omitempty"` - Model string `protobuf:"bytes,9,opt,name=model,proto3" json:"model,omitempty"` - AgentType string `protobuf:"bytes,10,opt,name=agent_type,json=agentType,proto3" json:"agent_type,omitempty"` - CronExpression string `protobuf:"bytes,11,opt,name=cron_expression,json=cronExpression,proto3" json:"cron_expression,omitempty"` - CronEnabled bool `protobuf:"varint,12,opt,name=cron_enabled,json=cronEnabled,proto3" json:"cron_enabled,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Retention: keep only the N most recent sessions (0 = keep all, i.e. disabled). - KeepSessions *int32 `protobuf:"varint,15,opt,name=keep_sessions,json=keepSessions,proto3,oneof" json:"keep_sessions,omitempty"` - // Retention: auto-archive completed sessions after this many hours (0 = disabled). - ArchiveAfterHours *int32 `protobuf:"varint,16,opt,name=archive_after_hours,json=archiveAfterHours,proto3,oneof" json:"archive_after_hours,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *WorkflowProto) Reset() { - *x = WorkflowProto{} - mi := &file_session_v1_session_proto_msgTypes[230] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WorkflowProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WorkflowProto) ProtoMessage() {} - -func (x *WorkflowProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[230] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WorkflowProto.ProtoReflect.Descriptor instead. -func (*WorkflowProto) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{230} -} - -func (x *WorkflowProto) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *WorkflowProto) GetSlug() string { - if x != nil { - return x.Slug - } - return "" -} - -func (x *WorkflowProto) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *WorkflowProto) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *WorkflowProto) GetCommand() string { - if x != nil { - return x.Command - } - return "" -} - -func (x *WorkflowProto) GetTargetDirectory() string { - if x != nil { - return x.TargetDirectory - } - return "" -} - -func (x *WorkflowProto) GetInputTemplate() string { - if x != nil { - return x.InputTemplate - } - return "" -} - -func (x *WorkflowProto) GetSessionType() string { - if x != nil { - return x.SessionType - } - return "" -} - -func (x *WorkflowProto) GetModel() string { - if x != nil { - return x.Model - } - return "" -} - -func (x *WorkflowProto) GetAgentType() string { - if x != nil { - return x.AgentType - } - return "" -} - -func (x *WorkflowProto) GetCronExpression() string { - if x != nil { - return x.CronExpression - } - return "" -} - -func (x *WorkflowProto) GetCronEnabled() bool { - if x != nil { - return x.CronEnabled - } - return false -} - -func (x *WorkflowProto) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *WorkflowProto) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *WorkflowProto) GetKeepSessions() int32 { - if x != nil && x.KeepSessions != nil { - return *x.KeepSessions - } - return 0 -} - -func (x *WorkflowProto) GetArchiveAfterHours() int32 { - if x != nil && x.ArchiveAfterHours != nil { - return *x.ArchiveAfterHours - } - return 0 -} - -type CreateWorkflowRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Slug string `protobuf:"bytes,1,opt,name=slug,proto3" json:"slug,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Command string `protobuf:"bytes,4,opt,name=command,proto3" json:"command,omitempty"` - TargetDirectory string `protobuf:"bytes,5,opt,name=target_directory,json=targetDirectory,proto3" json:"target_directory,omitempty"` - InputTemplate string `protobuf:"bytes,6,opt,name=input_template,json=inputTemplate,proto3" json:"input_template,omitempty"` - SessionType string `protobuf:"bytes,7,opt,name=session_type,json=sessionType,proto3" json:"session_type,omitempty"` - Model string `protobuf:"bytes,8,opt,name=model,proto3" json:"model,omitempty"` - AgentType string `protobuf:"bytes,9,opt,name=agent_type,json=agentType,proto3" json:"agent_type,omitempty"` - CronExpression string `protobuf:"bytes,10,opt,name=cron_expression,json=cronExpression,proto3" json:"cron_expression,omitempty"` - CronEnabled bool `protobuf:"varint,11,opt,name=cron_enabled,json=cronEnabled,proto3" json:"cron_enabled,omitempty"` - // Retention: keep only the N most recent sessions (0 = keep all). - KeepSessions *int32 `protobuf:"varint,12,opt,name=keep_sessions,json=keepSessions,proto3,oneof" json:"keep_sessions,omitempty"` - // Retention: auto-archive completed sessions after this many hours (0 = disabled). - ArchiveAfterHours *int32 `protobuf:"varint,13,opt,name=archive_after_hours,json=archiveAfterHours,proto3,oneof" json:"archive_after_hours,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateWorkflowRequest) Reset() { - *x = CreateWorkflowRequest{} - mi := &file_session_v1_session_proto_msgTypes[231] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateWorkflowRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateWorkflowRequest) ProtoMessage() {} - -func (x *CreateWorkflowRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[231] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateWorkflowRequest.ProtoReflect.Descriptor instead. -func (*CreateWorkflowRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{231} -} - -func (x *CreateWorkflowRequest) GetSlug() string { - if x != nil { - return x.Slug - } - return "" -} - -func (x *CreateWorkflowRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *CreateWorkflowRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *CreateWorkflowRequest) GetCommand() string { - if x != nil { - return x.Command - } - return "" -} - -func (x *CreateWorkflowRequest) GetTargetDirectory() string { - if x != nil { - return x.TargetDirectory - } - return "" -} - -func (x *CreateWorkflowRequest) GetInputTemplate() string { - if x != nil { - return x.InputTemplate - } - return "" -} - -func (x *CreateWorkflowRequest) GetSessionType() string { - if x != nil { - return x.SessionType - } - return "" -} - -func (x *CreateWorkflowRequest) GetModel() string { - if x != nil { - return x.Model - } - return "" -} - -func (x *CreateWorkflowRequest) GetAgentType() string { - if x != nil { - return x.AgentType - } - return "" -} - -func (x *CreateWorkflowRequest) GetCronExpression() string { - if x != nil { - return x.CronExpression - } - return "" -} - -func (x *CreateWorkflowRequest) GetCronEnabled() bool { - if x != nil { - return x.CronEnabled - } - return false -} - -func (x *CreateWorkflowRequest) GetKeepSessions() int32 { - if x != nil && x.KeepSessions != nil { - return *x.KeepSessions - } - return 0 -} - -func (x *CreateWorkflowRequest) GetArchiveAfterHours() int32 { - if x != nil && x.ArchiveAfterHours != nil { - return *x.ArchiveAfterHours - } - return 0 -} - -type CreateWorkflowResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Workflow *WorkflowProto `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateWorkflowResponse) Reset() { - *x = CreateWorkflowResponse{} - mi := &file_session_v1_session_proto_msgTypes[232] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateWorkflowResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateWorkflowResponse) ProtoMessage() {} - -func (x *CreateWorkflowResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[232] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateWorkflowResponse.ProtoReflect.Descriptor instead. -func (*CreateWorkflowResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{232} -} - -func (x *CreateWorkflowResponse) GetWorkflow() *WorkflowProto { - if x != nil { - return x.Workflow - } - return nil -} - -type UpdateWorkflowRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // All fields optional — only provided fields are updated. - Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` - Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"` - Command *string `protobuf:"bytes,4,opt,name=command,proto3,oneof" json:"command,omitempty"` - TargetDirectory *string `protobuf:"bytes,5,opt,name=target_directory,json=targetDirectory,proto3,oneof" json:"target_directory,omitempty"` - InputTemplate *string `protobuf:"bytes,6,opt,name=input_template,json=inputTemplate,proto3,oneof" json:"input_template,omitempty"` - SessionType *string `protobuf:"bytes,7,opt,name=session_type,json=sessionType,proto3,oneof" json:"session_type,omitempty"` - Model *string `protobuf:"bytes,8,opt,name=model,proto3,oneof" json:"model,omitempty"` - AgentType *string `protobuf:"bytes,9,opt,name=agent_type,json=agentType,proto3,oneof" json:"agent_type,omitempty"` - CronExpression *string `protobuf:"bytes,10,opt,name=cron_expression,json=cronExpression,proto3,oneof" json:"cron_expression,omitempty"` - CronEnabled *bool `protobuf:"varint,11,opt,name=cron_enabled,json=cronEnabled,proto3,oneof" json:"cron_enabled,omitempty"` - // Retention: keep only the N most recent sessions (0 = keep all). - KeepSessions *int32 `protobuf:"varint,12,opt,name=keep_sessions,json=keepSessions,proto3,oneof" json:"keep_sessions,omitempty"` - // Retention: auto-archive completed sessions after this many hours (0 = disabled). - ArchiveAfterHours *int32 `protobuf:"varint,13,opt,name=archive_after_hours,json=archiveAfterHours,proto3,oneof" json:"archive_after_hours,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateWorkflowRequest) Reset() { - *x = UpdateWorkflowRequest{} - mi := &file_session_v1_session_proto_msgTypes[233] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateWorkflowRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateWorkflowRequest) ProtoMessage() {} - -func (x *UpdateWorkflowRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[233] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateWorkflowRequest.ProtoReflect.Descriptor instead. -func (*UpdateWorkflowRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{233} -} - -func (x *UpdateWorkflowRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *UpdateWorkflowRequest) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *UpdateWorkflowRequest) GetDescription() string { - if x != nil && x.Description != nil { - return *x.Description - } - return "" -} - -func (x *UpdateWorkflowRequest) GetCommand() string { - if x != nil && x.Command != nil { - return *x.Command - } - return "" -} - -func (x *UpdateWorkflowRequest) GetTargetDirectory() string { - if x != nil && x.TargetDirectory != nil { - return *x.TargetDirectory - } - return "" -} - -func (x *UpdateWorkflowRequest) GetInputTemplate() string { - if x != nil && x.InputTemplate != nil { - return *x.InputTemplate - } - return "" -} - -func (x *UpdateWorkflowRequest) GetSessionType() string { - if x != nil && x.SessionType != nil { - return *x.SessionType - } - return "" -} - -func (x *UpdateWorkflowRequest) GetModel() string { - if x != nil && x.Model != nil { - return *x.Model - } - return "" -} - -func (x *UpdateWorkflowRequest) GetAgentType() string { - if x != nil && x.AgentType != nil { - return *x.AgentType - } - return "" -} - -func (x *UpdateWorkflowRequest) GetCronExpression() string { - if x != nil && x.CronExpression != nil { - return *x.CronExpression - } - return "" -} - -func (x *UpdateWorkflowRequest) GetCronEnabled() bool { - if x != nil && x.CronEnabled != nil { - return *x.CronEnabled - } - return false -} - -func (x *UpdateWorkflowRequest) GetKeepSessions() int32 { - if x != nil && x.KeepSessions != nil { - return *x.KeepSessions - } - return 0 -} - -func (x *UpdateWorkflowRequest) GetArchiveAfterHours() int32 { - if x != nil && x.ArchiveAfterHours != nil { - return *x.ArchiveAfterHours - } - return 0 -} - -type UpdateWorkflowResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Workflow *WorkflowProto `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateWorkflowResponse) Reset() { - *x = UpdateWorkflowResponse{} - mi := &file_session_v1_session_proto_msgTypes[234] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateWorkflowResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateWorkflowResponse) ProtoMessage() {} - -func (x *UpdateWorkflowResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[234] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateWorkflowResponse.ProtoReflect.Descriptor instead. -func (*UpdateWorkflowResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{234} -} - -func (x *UpdateWorkflowResponse) GetWorkflow() *WorkflowProto { - if x != nil { - return x.Workflow - } - return nil -} - -type DeleteWorkflowRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteWorkflowRequest) Reset() { - *x = DeleteWorkflowRequest{} - mi := &file_session_v1_session_proto_msgTypes[235] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteWorkflowRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteWorkflowRequest) ProtoMessage() {} - -func (x *DeleteWorkflowRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[235] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteWorkflowRequest.ProtoReflect.Descriptor instead. -func (*DeleteWorkflowRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{235} -} - -func (x *DeleteWorkflowRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type DeleteWorkflowResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteWorkflowResponse) Reset() { - *x = DeleteWorkflowResponse{} - mi := &file_session_v1_session_proto_msgTypes[236] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteWorkflowResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteWorkflowResponse) ProtoMessage() {} - -func (x *DeleteWorkflowResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[236] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteWorkflowResponse.ProtoReflect.Descriptor instead. -func (*DeleteWorkflowResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{236} -} - -type ListWorkflowsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListWorkflowsRequest) Reset() { - *x = ListWorkflowsRequest{} - mi := &file_session_v1_session_proto_msgTypes[237] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListWorkflowsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListWorkflowsRequest) ProtoMessage() {} - -func (x *ListWorkflowsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[237] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListWorkflowsRequest.ProtoReflect.Descriptor instead. -func (*ListWorkflowsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{237} -} - -type ListWorkflowsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Workflows []*WorkflowProto `protobuf:"bytes,1,rep,name=workflows,proto3" json:"workflows,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListWorkflowsResponse) Reset() { - *x = ListWorkflowsResponse{} - mi := &file_session_v1_session_proto_msgTypes[238] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListWorkflowsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListWorkflowsResponse) ProtoMessage() {} - -func (x *ListWorkflowsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[238] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListWorkflowsResponse.ProtoReflect.Descriptor instead. -func (*ListWorkflowsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{238} -} - -func (x *ListWorkflowsResponse) GetWorkflows() []*WorkflowProto { - if x != nil { - return x.Workflows - } - return nil -} - -type RunWorkflowRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // arg is injected into input_template if present (replaces {{input}}). - Arg string `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RunWorkflowRequest) Reset() { - *x = RunWorkflowRequest{} - mi := &file_session_v1_session_proto_msgTypes[239] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RunWorkflowRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RunWorkflowRequest) ProtoMessage() {} - -func (x *RunWorkflowRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[239] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RunWorkflowRequest.ProtoReflect.Descriptor instead. -func (*RunWorkflowRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{239} -} - -func (x *RunWorkflowRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *RunWorkflowRequest) GetArg() string { - if x != nil { - return x.Arg - } - return "" -} - -type ListSlashCommandsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Directory to scan for project-level .claude/commands/. May be empty. - TargetDirectory string `protobuf:"bytes,1,opt,name=target_directory,json=targetDirectory,proto3" json:"target_directory,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListSlashCommandsRequest) Reset() { - *x = ListSlashCommandsRequest{} - mi := &file_session_v1_session_proto_msgTypes[240] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListSlashCommandsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListSlashCommandsRequest) ProtoMessage() {} - -func (x *ListSlashCommandsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[240] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListSlashCommandsRequest.ProtoReflect.Descriptor instead. -func (*ListSlashCommandsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{240} -} - -func (x *ListSlashCommandsRequest) GetTargetDirectory() string { - if x != nil { - return x.TargetDirectory - } - return "" -} - -// SlashCommandInfo describes a single slash command available for autocomplete. -type SlashCommandInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Command name without the leading slash, e.g. "code:fix-loop". - // Subdirectory separators are replaced with ":". - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Human-readable title from YAML frontmatter, or the name if absent. - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - // Short description from YAML frontmatter. - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // "builtin" | "user" | "project" - Source string `protobuf:"bytes,4,opt,name=source,proto3" json:"source,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SlashCommandInfo) Reset() { - *x = SlashCommandInfo{} - mi := &file_session_v1_session_proto_msgTypes[241] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SlashCommandInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SlashCommandInfo) ProtoMessage() {} - -func (x *SlashCommandInfo) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[241] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SlashCommandInfo.ProtoReflect.Descriptor instead. -func (*SlashCommandInfo) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{241} -} - -func (x *SlashCommandInfo) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *SlashCommandInfo) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *SlashCommandInfo) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *SlashCommandInfo) GetSource() string { - if x != nil { - return x.Source - } - return "" -} - -type ListSlashCommandsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Commands []*SlashCommandInfo `protobuf:"bytes,1,rep,name=commands,proto3" json:"commands,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListSlashCommandsResponse) Reset() { - *x = ListSlashCommandsResponse{} - mi := &file_session_v1_session_proto_msgTypes[242] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListSlashCommandsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListSlashCommandsResponse) ProtoMessage() {} - -func (x *ListSlashCommandsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[242] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListSlashCommandsResponse.ProtoReflect.Descriptor instead. -func (*ListSlashCommandsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{242} -} - -func (x *ListSlashCommandsResponse) GetCommands() []*SlashCommandInfo { - if x != nil { - return x.Commands - } - return nil -} - -type RunWorkflowResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RunWorkflowResponse) Reset() { - *x = RunWorkflowResponse{} - mi := &file_session_v1_session_proto_msgTypes[243] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RunWorkflowResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RunWorkflowResponse) ProtoMessage() {} - -func (x *RunWorkflowResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[243] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RunWorkflowResponse.ProtoReflect.Descriptor instead. -func (*RunWorkflowResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{243} -} - -func (x *RunWorkflowResponse) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -// DetectionEventProto is the wire representation of a single status-detection event. -type DetectionEventProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - Timestamp *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - MatchedPattern string `protobuf:"bytes,3,opt,name=matched_pattern,json=matchedPattern,proto3" json:"matched_pattern,omitempty"` // pattern Name or "" if no match - MatchedCategory string `protobuf:"bytes,4,opt,name=matched_category,json=matchedCategory,proto3" json:"matched_category,omitempty"` // "active", "idle", "error", etc. - ResultStatus int32 `protobuf:"varint,5,opt,name=result_status,json=resultStatus,proto3" json:"result_status,omitempty"` // maps to DetectedStatus int value - TailSnippet string `protobuf:"bytes,6,opt,name=tail_snippet,json=tailSnippet,proto3" json:"tail_snippet,omitempty"` // last 512 bytes of cleaned terminal output - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DetectionEventProto) Reset() { - *x = DetectionEventProto{} - mi := &file_session_v1_session_proto_msgTypes[244] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DetectionEventProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DetectionEventProto) ProtoMessage() {} - -func (x *DetectionEventProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[244] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DetectionEventProto.ProtoReflect.Descriptor instead. -func (*DetectionEventProto) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{244} -} - -func (x *DetectionEventProto) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *DetectionEventProto) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -func (x *DetectionEventProto) GetMatchedPattern() string { - if x != nil { - return x.MatchedPattern - } - return "" -} - -func (x *DetectionEventProto) GetMatchedCategory() string { - if x != nil { - return x.MatchedCategory - } - return "" -} - -func (x *DetectionEventProto) GetResultStatus() int32 { - if x != nil { - return x.ResultStatus - } - return 0 -} - -func (x *DetectionEventProto) GetTailSnippet() string { - if x != nil { - return x.TailSnippet - } - return "" -} - -type GetDetectionEventsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // max events to return; capped at 100 server-side; 0 means default (20) - Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetDetectionEventsRequest) Reset() { - *x = GetDetectionEventsRequest{} - mi := &file_session_v1_session_proto_msgTypes[245] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetDetectionEventsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetDetectionEventsRequest) ProtoMessage() {} - -func (x *GetDetectionEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[245] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetDetectionEventsRequest.ProtoReflect.Descriptor instead. -func (*GetDetectionEventsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{245} -} - -func (x *GetDetectionEventsRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *GetDetectionEventsRequest) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 -} - -type GetDetectionEventsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Events []*DetectionEventProto `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetDetectionEventsResponse) Reset() { - *x = GetDetectionEventsResponse{} - mi := &file_session_v1_session_proto_msgTypes[246] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetDetectionEventsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetDetectionEventsResponse) ProtoMessage() {} - -func (x *GetDetectionEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[246] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetDetectionEventsResponse.ProtoReflect.Descriptor instead. -func (*GetDetectionEventsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{246} -} - -func (x *GetDetectionEventsResponse) GetEvents() []*DetectionEventProto { - if x != nil { - return x.Events - } - return nil -} - -type ArchiveSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ArchiveSessionRequest) Reset() { - *x = ArchiveSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[247] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ArchiveSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ArchiveSessionRequest) ProtoMessage() {} - -func (x *ArchiveSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[247] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ArchiveSessionRequest.ProtoReflect.Descriptor instead. -func (*ArchiveSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{247} -} - -func (x *ArchiveSessionRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -type ArchiveSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ArchiveSessionResponse) Reset() { - *x = ArchiveSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[248] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ArchiveSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ArchiveSessionResponse) ProtoMessage() {} - -func (x *ArchiveSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[248] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ArchiveSessionResponse.ProtoReflect.Descriptor instead. -func (*ArchiveSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{248} -} - -type UnarchiveSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UnarchiveSessionRequest) Reset() { - *x = UnarchiveSessionRequest{} - mi := &file_session_v1_session_proto_msgTypes[249] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UnarchiveSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UnarchiveSessionRequest) ProtoMessage() {} - -func (x *UnarchiveSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[249] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UnarchiveSessionRequest.ProtoReflect.Descriptor instead. -func (*UnarchiveSessionRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{249} -} - -func (x *UnarchiveSessionRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -type UnarchiveSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UnarchiveSessionResponse) Reset() { - *x = UnarchiveSessionResponse{} - mi := &file_session_v1_session_proto_msgTypes[250] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UnarchiveSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UnarchiveSessionResponse) ProtoMessage() {} - -func (x *UnarchiveSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[250] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UnarchiveSessionResponse.ProtoReflect.Descriptor instead. -func (*UnarchiveSessionResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{250} -} - -type ArchiveWorkflowSessionsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - WorkflowId string `protobuf:"bytes,1,opt,name=workflow_id,json=workflowId,proto3" json:"workflow_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ArchiveWorkflowSessionsRequest) Reset() { - *x = ArchiveWorkflowSessionsRequest{} - mi := &file_session_v1_session_proto_msgTypes[251] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ArchiveWorkflowSessionsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ArchiveWorkflowSessionsRequest) ProtoMessage() {} - -func (x *ArchiveWorkflowSessionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[251] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ArchiveWorkflowSessionsRequest.ProtoReflect.Descriptor instead. -func (*ArchiveWorkflowSessionsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{251} -} - -func (x *ArchiveWorkflowSessionsRequest) GetWorkflowId() string { - if x != nil { - return x.WorkflowId - } - return "" -} - -type ArchiveWorkflowSessionsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Number of sessions that were archived (active/creating/paused are skipped). - ArchivedCount int32 `protobuf:"varint,1,opt,name=archived_count,json=archivedCount,proto3" json:"archived_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ArchiveWorkflowSessionsResponse) Reset() { - *x = ArchiveWorkflowSessionsResponse{} - mi := &file_session_v1_session_proto_msgTypes[252] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ArchiveWorkflowSessionsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ArchiveWorkflowSessionsResponse) ProtoMessage() {} - -func (x *ArchiveWorkflowSessionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[252] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ArchiveWorkflowSessionsResponse.ProtoReflect.Descriptor instead. -func (*ArchiveWorkflowSessionsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{252} -} - -func (x *ArchiveWorkflowSessionsResponse) GetArchivedCount() int32 { - if x != nil { - return x.ArchivedCount - } - return 0 -} - -type DeleteWorkflowFailedSessionsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - WorkflowId string `protobuf:"bytes,1,opt,name=workflow_id,json=workflowId,proto3" json:"workflow_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteWorkflowFailedSessionsRequest) Reset() { - *x = DeleteWorkflowFailedSessionsRequest{} - mi := &file_session_v1_session_proto_msgTypes[253] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteWorkflowFailedSessionsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteWorkflowFailedSessionsRequest) ProtoMessage() {} - -func (x *DeleteWorkflowFailedSessionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[253] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteWorkflowFailedSessionsRequest.ProtoReflect.Descriptor instead. -func (*DeleteWorkflowFailedSessionsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{253} -} - -func (x *DeleteWorkflowFailedSessionsRequest) GetWorkflowId() string { - if x != nil { - return x.WorkflowId - } - return "" -} - -type DeleteWorkflowFailedSessionsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Number of sessions that were archived (soft-deleted). - DeletedCount int32 `protobuf:"varint,1,opt,name=deleted_count,json=deletedCount,proto3" json:"deleted_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteWorkflowFailedSessionsResponse) Reset() { - *x = DeleteWorkflowFailedSessionsResponse{} - mi := &file_session_v1_session_proto_msgTypes[254] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteWorkflowFailedSessionsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteWorkflowFailedSessionsResponse) ProtoMessage() {} - -func (x *DeleteWorkflowFailedSessionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[254] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteWorkflowFailedSessionsResponse.ProtoReflect.Descriptor instead. -func (*DeleteWorkflowFailedSessionsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{254} -} - -func (x *DeleteWorkflowFailedSessionsResponse) GetDeletedCount() int32 { - if x != nil { - return x.DeletedCount - } - return 0 -} - -type GetProviderLimitsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // session title/id - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetProviderLimitsRequest) Reset() { - *x = GetProviderLimitsRequest{} - mi := &file_session_v1_session_proto_msgTypes[255] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetProviderLimitsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetProviderLimitsRequest) ProtoMessage() {} - -func (x *GetProviderLimitsRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[255] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetProviderLimitsRequest.ProtoReflect.Descriptor instead. -func (*GetProviderLimitsRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{255} -} - -func (x *GetProviderLimitsRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -type ProviderLimitsProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - Provider string `protobuf:"bytes,1,opt,name=provider,proto3" json:"provider,omitempty"` - Model string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"` - RequestsLimit int32 `protobuf:"varint,3,opt,name=requests_limit,json=requestsLimit,proto3" json:"requests_limit,omitempty"` - RequestsRemaining int32 `protobuf:"varint,4,opt,name=requests_remaining,json=requestsRemaining,proto3" json:"requests_remaining,omitempty"` - RequestsReset *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=requests_reset,json=requestsReset,proto3" json:"requests_reset,omitempty"` - TokensLimit int32 `protobuf:"varint,6,opt,name=tokens_limit,json=tokensLimit,proto3" json:"tokens_limit,omitempty"` - TokensRemaining int32 `protobuf:"varint,7,opt,name=tokens_remaining,json=tokensRemaining,proto3" json:"tokens_remaining,omitempty"` - TokensReset *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=tokens_reset,json=tokensReset,proto3" json:"tokens_reset,omitempty"` - ContextTokensUsed int32 `protobuf:"varint,9,opt,name=context_tokens_used,json=contextTokensUsed,proto3" json:"context_tokens_used,omitempty"` - ContextTokensMax int32 `protobuf:"varint,10,opt,name=context_tokens_max,json=contextTokensMax,proto3" json:"context_tokens_max,omitempty"` - SessionInputTokens int32 `protobuf:"varint,11,opt,name=session_input_tokens,json=sessionInputTokens,proto3" json:"session_input_tokens,omitempty"` - SessionOutputTokens int32 `protobuf:"varint,12,opt,name=session_output_tokens,json=sessionOutputTokens,proto3" json:"session_output_tokens,omitempty"` - EstimatedCostUsd float64 `protobuf:"fixed64,13,opt,name=estimated_cost_usd,json=estimatedCostUsd,proto3" json:"estimated_cost_usd,omitempty"` - Available bool `protobuf:"varint,14,opt,name=available,proto3" json:"available,omitempty"` - LastErrorCode string `protobuf:"bytes,15,opt,name=last_error_code,json=lastErrorCode,proto3" json:"last_error_code,omitempty"` - FetchedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ProviderLimitsProto) Reset() { - *x = ProviderLimitsProto{} - mi := &file_session_v1_session_proto_msgTypes[256] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ProviderLimitsProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProviderLimitsProto) ProtoMessage() {} - -func (x *ProviderLimitsProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[256] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ProviderLimitsProto.ProtoReflect.Descriptor instead. -func (*ProviderLimitsProto) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{256} -} - -func (x *ProviderLimitsProto) GetProvider() string { - if x != nil { - return x.Provider - } - return "" -} - -func (x *ProviderLimitsProto) GetModel() string { - if x != nil { - return x.Model - } - return "" -} - -func (x *ProviderLimitsProto) GetRequestsLimit() int32 { - if x != nil { - return x.RequestsLimit - } - return 0 -} - -func (x *ProviderLimitsProto) GetRequestsRemaining() int32 { - if x != nil { - return x.RequestsRemaining - } - return 0 -} - -func (x *ProviderLimitsProto) GetRequestsReset() *timestamppb.Timestamp { - if x != nil { - return x.RequestsReset - } - return nil -} - -func (x *ProviderLimitsProto) GetTokensLimit() int32 { - if x != nil { - return x.TokensLimit - } - return 0 -} - -func (x *ProviderLimitsProto) GetTokensRemaining() int32 { - if x != nil { - return x.TokensRemaining - } - return 0 -} - -func (x *ProviderLimitsProto) GetTokensReset() *timestamppb.Timestamp { - if x != nil { - return x.TokensReset - } - return nil -} - -func (x *ProviderLimitsProto) GetContextTokensUsed() int32 { - if x != nil { - return x.ContextTokensUsed - } - return 0 -} - -func (x *ProviderLimitsProto) GetContextTokensMax() int32 { - if x != nil { - return x.ContextTokensMax - } - return 0 -} - -func (x *ProviderLimitsProto) GetSessionInputTokens() int32 { - if x != nil { - return x.SessionInputTokens - } - return 0 -} - -func (x *ProviderLimitsProto) GetSessionOutputTokens() int32 { - if x != nil { - return x.SessionOutputTokens - } - return 0 -} - -func (x *ProviderLimitsProto) GetEstimatedCostUsd() float64 { - if x != nil { - return x.EstimatedCostUsd - } - return 0 -} - -func (x *ProviderLimitsProto) GetAvailable() bool { - if x != nil { - return x.Available - } - return false -} - -func (x *ProviderLimitsProto) GetLastErrorCode() string { - if x != nil { - return x.LastErrorCode - } - return "" -} - -func (x *ProviderLimitsProto) GetFetchedAt() *timestamppb.Timestamp { - if x != nil { - return x.FetchedAt - } - return nil -} - -type GetProviderLimitsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Limits *ProviderLimitsProto `protobuf:"bytes,1,opt,name=limits,proto3" json:"limits,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetProviderLimitsResponse) Reset() { - *x = GetProviderLimitsResponse{} - mi := &file_session_v1_session_proto_msgTypes[257] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetProviderLimitsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetProviderLimitsResponse) ProtoMessage() {} - -func (x *GetProviderLimitsResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_proto_msgTypes[257] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetProviderLimitsResponse.ProtoReflect.Descriptor instead. -func (*GetProviderLimitsResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_proto_rawDescGZIP(), []int{257} -} - -func (x *GetProviderLimitsResponse) GetLimits() *ProviderLimitsProto { - if x != nil { - return x.Limits - } - return nil -} - -var File_session_v1_session_proto protoreflect.FileDescriptor - -const file_session_v1_session_proto_rawDesc = "" + - "\n" + - "\x18session/v1/session.proto\x12\n" + - "session.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x16session/v1/types.proto\x1a\x17session/v1/events.proto\"\x9b\x03\n" + - "\x13ListSessionsRequest\x126\n" + - "\x06status\x18\x01 \x01(\x0e2\x19.session.v1.SessionStatusH\x00R\x06status\x88\x01\x01\x12\x1f\n" + - "\bcategory\x18\x02 \x01(\tH\x01R\bcategory\x88\x01\x01\x12\x1f\n" + - "\vhide_paused\x18\x03 \x01(\bR\n" + - "hidePaused\x12&\n" + - "\fsearch_query\x18\x04 \x01(\tH\x02R\vsearchQuery\x88\x01\x01\x12\"\n" + - "\n" + - "project_id\x18\x05 \x01(\tH\x03R\tprojectId\x88\x01\x01\x12%\n" + - "\x0einclude_hidden\x18\x06 \x01(\bR\rincludeHidden\x12$\n" + - "\vworkflow_id\x18\a \x01(\tH\x04R\n" + - "workflowId\x88\x01\x01\x12)\n" + - "\x10include_archived\x18\b \x01(\bR\x0fincludeArchivedB\t\n" + - "\a_statusB\v\n" + - "\t_categoryB\x0f\n" + - "\r_search_queryB\r\n" + - "\v_project_idB\x0e\n" + - "\f_workflow_id\"s\n" + - "\x14ListSessionsResponse\x12/\n" + - "\bsessions\x18\x01 \x03(\v2\x13.session.v1.SessionR\bsessions\x12*\n" + - "\x11system_memory_pct\x18\x02 \x01(\x02R\x0fsystemMemoryPct\"#\n" + - "\x11GetSessionRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"C\n" + - "\x12GetSessionResponse\x12-\n" + - "\asession\x18\x01 \x01(\v2\x13.session.v1.SessionR\asession\"\x8e\b\n" + - "\x14CreateSessionRequest\x12\x14\n" + - "\x05title\x18\x01 \x01(\tR\x05title\x12\x12\n" + - "\x04path\x18\x02 \x01(\tR\x04path\x12\x1f\n" + - "\vworking_dir\x18\x03 \x01(\tR\n" + - "workingDir\x12\x16\n" + - "\x06branch\x18\x04 \x01(\tR\x06branch\x12\x18\n" + - "\aprogram\x18\x05 \x01(\tR\aprogram\x12\x1a\n" + - "\bcategory\x18\x06 \x01(\tR\bcategory\x12\x16\n" + - "\x06prompt\x18\a \x01(\tR\x06prompt\x12\x19\n" + - "\bauto_yes\x18\b \x01(\bR\aautoYes\x12+\n" + - "\x11existing_worktree\x18\t \x01(\tR\x10existingWorktree\x12\x1b\n" + - "\tresume_id\x18\n" + - " \x01(\tR\bresumeId\x12\x18\n" + - "\aprofile\x18\v \x01(\tR\aprofile\x12#\n" + - "\rskip_defaults\x18\f \x01(\bR\fskipDefaults\x12:\n" + - "\fsession_type\x18\r \x01(\x0e2\x17.session.v1.SessionTypeR\vsessionType\x12%\n" + - "\x0einitial_prompt\x18\x0f \x01(\tR\rinitialPrompt\x12\x19\n" + - "\bone_shot\x18\x10 \x01(\bR\aoneShot\x12\x1d\n" + - "\n" + - "project_id\x18\x11 \x01(\tR\tprojectId\x12*\n" + - "\x11create_if_missing\x18\x12 \x01(\bR\x0fcreateIfMissing\x12$\n" + - "\x0efork_source_id\x18\x13 \x01(\tR\fforkSourceId\x12&\n" + - "\x0ffork_at_message\x18\x14 \x01(\x05R\rforkAtMessage\x12#\n" + - "\rallowed_tools\x18\x15 \x01(\tR\fallowedTools\x12'\n" + - "\x0fpermission_mode\x18\x16 \x01(\tR\x0epermissionMode\x12'\n" + - "\x0fautonomous_mode\x18\x17 \x01(\bR\x0eautonomousMode\x12\x1f\n" + - "\vworkflow_id\x18\x18 \x01(\tR\n" + - "workflowId\x12H\n" + - "\benv_vars\x18\x19 \x03(\v2-.session.v1.CreateSessionRequest.EnvVarsEntryR\aenvVars\x12\x1b\n" + - "\tcli_flags\x18\x1a \x01(\tR\bcliFlags\x12\x1d\n" + - "\n" + - "alias_name\x18\x1b \x01(\tR\taliasName\x12!\n" + - "\fauto_approve\x18\x1c \x01(\bR\vautoApprove\x1a:\n" + - "\fEnvVarsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01J\x04\b\x0e\x10\x0fR\aone_off\"F\n" + - "\x15CreateSessionResponse\x12-\n" + - "\asession\x18\x01 \x01(\v2\x13.session.v1.SessionR\asession\"\x8d\x05\n" + - "\x14UpdateSessionRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x126\n" + - "\x06status\x18\x02 \x01(\x0e2\x19.session.v1.SessionStatusH\x00R\x06status\x88\x01\x01\x12\x1f\n" + - "\bcategory\x18\x03 \x01(\tH\x01R\bcategory\x88\x01\x01\x12\x19\n" + - "\x05title\x18\x04 \x01(\tH\x02R\x05title\x88\x01\x01\x12\x1d\n" + - "\aprogram\x18\x05 \x01(\tH\x03R\aprogram\x88\x01\x01\x12\x12\n" + - "\x04tags\x18\x06 \x03(\tR\x04tags\x12$\n" + - "\vworking_dir\x18\a \x01(\tH\x04R\n" + - "workingDir\x88\x01\x01\x121\n" + - "\x12rate_limit_enabled\x18\b \x01(\bH\x05R\x10rateLimitEnabled\x88\x01\x01\x12&\n" + - "\fpause_reason\x18\t \x01(\tH\x06R\vpauseReason\x88\x01\x01\x12,\n" + - "\x0fautonomous_mode\x18\n" + - " \x01(\bH\aR\x0eautonomousMode\x88\x01\x01\x12(\n" + - "\rsteer_message\x18\v \x01(\tH\bR\fsteerMessage\x88\x01\x01\x12\x17\n" + - "\x04note\x18\f \x01(\tH\tR\x04note\x88\x01\x01\x12&\n" + - "\fauto_approve\x18\r \x01(\bH\n" + - "R\vautoApprove\x88\x01\x01B\t\n" + - "\a_statusB\v\n" + - "\t_categoryB\b\n" + - "\x06_titleB\n" + - "\n" + - "\b_programB\x0e\n" + - "\f_working_dirB\x15\n" + - "\x13_rate_limit_enabledB\x0f\n" + - "\r_pause_reasonB\x12\n" + - "\x10_autonomous_modeB\x10\n" + - "\x0e_steer_messageB\a\n" + - "\x05_noteB\x0f\n" + - "\r_auto_approve\"F\n" + - "\x15UpdateSessionResponse\x12-\n" + - "\asession\x18\x01 \x01(\v2\x13.session.v1.SessionR\asession\"<\n" + - "\x14DeleteSessionRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + - "\x05force\x18\x02 \x01(\bR\x05force\"K\n" + - "\x15DeleteSessionResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"\xcc\x01\n" + - "\x14WatchSessionsRequest\x12,\n" + - "\x0fcategory_filter\x18\x01 \x01(\tH\x00R\x0ecategoryFilter\x88\x01\x01\x12C\n" + - "\rstatus_filter\x18\x02 \x01(\x0e2\x19.session.v1.SessionStatusH\x01R\fstatusFilter\x88\x01\x01\x12\x1b\n" + - "\tafter_seq\x18\x03 \x01(\x04R\bafterSeqB\x12\n" + - "\x10_category_filterB\x10\n" + - "\x0e_status_filter\"'\n" + - "\x15GetSessionDiffRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"N\n" + - "\x16GetSessionDiffResponse\x124\n" + - "\n" + - "diff_stats\x18\x01 \x01(\v2\x15.session.v1.DiffStatsR\tdiffStats\"%\n" + - "\x13GetVCSStatusRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"b\n" + - "\x14GetVCSStatusResponse\x124\n" + - "\n" + - "vcs_status\x18\x01 \x01(\v2\x15.session.v1.VCSStatusR\tvcsStatus\x12\x14\n" + - "\x05error\x18\x02 \x01(\tR\x05error\"\xc8\x01\n" + - "\x15GetReviewQueueRequest\x12B\n" + - "\x0fpriority_filter\x18\x01 \x01(\x0e2\x14.session.v1.PriorityH\x00R\x0epriorityFilter\x88\x01\x01\x12E\n" + - "\rreason_filter\x18\x02 \x01(\x0e2\x1b.session.v1.AttentionReasonH\x01R\freasonFilter\x88\x01\x01B\x12\n" + - "\x10_priority_filterB\x10\n" + - "\x0e_reason_filter\"T\n" + - "\x16GetReviewQueueResponse\x12:\n" + - "\freview_queue\x18\x01 \x01(\v2\x17.session.v1.ReviewQueueR\vreviewQueue\"+\n" + - "\x19AcknowledgeSessionRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"P\n" + - "\x1aAcknowledgeSessionResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"\x9e\x03\n" + - "\x0eGetLogsRequest\x12&\n" + - "\fsearch_query\x18\x01 \x01(\tH\x00R\vsearchQuery\x88\x01\x01\x12\x19\n" + - "\x05level\x18\x02 \x01(\tH\x01R\x05level\x88\x01\x01\x12>\n" + - "\n" + - "start_time\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampH\x02R\tstartTime\x88\x01\x01\x12:\n" + - "\bend_time\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampH\x03R\aendTime\x88\x01\x01\x12\x19\n" + - "\x05limit\x18\x05 \x01(\x05H\x04R\x05limit\x88\x01\x01\x12\x1b\n" + - "\x06offset\x18\x06 \x01(\x05H\x05R\x06offset\x88\x01\x01\x12\"\n" + - "\n" + - "session_id\x18\a \x01(\tH\x06R\tsessionId\x88\x01\x01\x12\x16\n" + - "\x06levels\x18\b \x03(\tR\x06levelsB\x0f\n" + - "\r_search_queryB\b\n" + - "\x06_levelB\r\n" + - "\v_start_timeB\v\n" + - "\t_end_timeB\b\n" + - "\x06_limitB\t\n" + - "\a_offsetB\r\n" + - "\v_session_id\"}\n" + - "\x0fGetLogsResponse\x12.\n" + - "\aentries\x18\x01 \x03(\v2\x14.session.v1.LogEntryR\aentries\x12\x1f\n" + - "\vtotal_count\x18\x02 \x01(\x05R\n" + - "totalCount\x12\x19\n" + - "\bhas_more\x18\x03 \x01(\bR\ahasMore\"\x9c\x01\n" + - "\bLogEntry\x128\n" + - "\ttimestamp\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12\x14\n" + - "\x05level\x18\x02 \x01(\tR\x05level\x12\x18\n" + - "\amessage\x18\x03 \x01(\tR\amessage\x12\x1b\n" + - "\x06source\x18\x04 \x01(\tH\x00R\x06source\x88\x01\x01B\t\n" + - "\a_source\"\x95\x02\n" + - "\x17WatchReviewQueueRequest\x12=\n" + - "\x0fpriority_filter\x18\x01 \x03(\x0e2\x14.session.v1.PriorityR\x0epriorityFilter\x12@\n" + - "\rreason_filter\x18\x02 \x03(\x0e2\x1b.session.v1.AttentionReasonR\freasonFilter\x12-\n" + - "\x12include_statistics\x18\x03 \x01(\bR\x11includeStatistics\x12)\n" + - "\x10initial_snapshot\x18\x04 \x01(\bR\x0finitialSnapshot\x12\x1f\n" + - "\vsession_ids\x18\x05 \x03(\tR\n" + - "sessionIds\"\xa6\x03\n" + - "\x19LogUserInteractionRequest\x12\"\n" + - "\n" + - "session_id\x18\x01 \x01(\tH\x00R\tsessionId\x88\x01\x01\x12[\n" + - "\x10interaction_type\x18\x02 \x01(\x0e20.session.v1.UserInteractionEvent.InteractionTypeR\x0finteractionType\x12\x1d\n" + - "\acontext\x18\x03 \x01(\tH\x01R\acontext\x88\x01\x01\x12,\n" + - "\x0fnotification_id\x18\x04 \x01(\tH\x02R\x0enotificationId\x88\x01\x01\x12O\n" + - "\bmetadata\x18\x05 \x03(\v23.session.v1.LogUserInteractionRequest.MetadataEntryR\bmetadata\x1a;\n" + - "\rMetadataEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\r\n" + - "\v_session_idB\n" + - "\n" + - "\b_contextB\x12\n" + - "\x10_notification_id\"[\n" + - "\x1aLogUserInteractionResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x19\n" + - "\x05error\x18\x02 \x01(\tH\x00R\x05error\x88\x01\x01B\b\n" + - "\x06_error\"4\n" + - "\x16GetClaudeConfigRequest\x12\x1a\n" + - "\bfilename\x18\x01 \x01(\tR\bfilename\"O\n" + - "\x17GetClaudeConfigResponse\x124\n" + - "\x06config\x18\x01 \x01(\v2\x1c.session.v1.ClaudeConfigFileR\x06config\"\x1a\n" + - "\x18ListClaudeConfigsRequest\"S\n" + - "\x19ListClaudeConfigsResponse\x126\n" + - "\aconfigs\x18\x01 \x03(\v2\x1c.session.v1.ClaudeConfigFileR\aconfigs\"m\n" + - "\x19UpdateClaudeConfigRequest\x12\x1a\n" + - "\bfilename\x18\x01 \x01(\tR\bfilename\x12\x18\n" + - "\acontent\x18\x02 \x01(\tR\acontent\x12\x1a\n" + - "\bvalidate\x18\x03 \x01(\bR\bvalidate\"R\n" + - "\x1aUpdateClaudeConfigResponse\x124\n" + - "\x06config\x18\x01 \x01(\v2\x1c.session.v1.ClaudeConfigFileR\x06config\"\x8b\x01\n" + - "\x10ClaudeConfigFile\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" + - "\x04path\x18\x02 \x01(\tR\x04path\x12\x18\n" + - "\acontent\x18\x03 \x01(\tR\acontent\x125\n" + - "\bmod_time\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\amodTime\"\xb5\x02\n" + - "\x18ListClaudeHistoryRequest\x12\x1d\n" + - "\aproject\x18\x01 \x01(\tH\x00R\aproject\x88\x01\x01\x12&\n" + - "\fsearch_query\x18\x02 \x01(\tH\x01R\vsearchQuery\x88\x01\x01\x12\x14\n" + - "\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x1b\n" + - "\tpage_size\x18\x04 \x01(\x05R\bpageSize\x12\x1d\n" + - "\n" + - "page_token\x18\x05 \x01(\tR\tpageToken\x12C\n" + - "\x1bexclude_automation_sessions\x18\x06 \x01(\bH\x02R\x19excludeAutomationSessions\x88\x01\x01B\n" + - "\n" + - "\b_projectB\x0f\n" + - "\r_search_queryB\x1e\n" + - "\x1c_exclude_automation_sessions\"\x9e\x01\n" + - "\x19ListClaudeHistoryResponse\x128\n" + - "\aentries\x18\x01 \x03(\v2\x1e.session.v1.ClaudeHistoryEntryR\aentries\x12\x1f\n" + - "\vtotal_count\x18\x02 \x01(\x05R\n" + - "totalCount\x12&\n" + - "\x0fnext_page_token\x18\x03 \x01(\tR\rnextPageToken\"/\n" + - "\x1dGetClaudeHistoryDetailRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"V\n" + - "\x1eGetClaudeHistoryDetailResponse\x124\n" + - "\x05entry\x18\x01 \x01(\v2\x1e.session.v1.ClaudeHistoryEntryR\x05entry\"\x99\x04\n" + - "\x12ClaudeHistoryEntry\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n" + - "\aproject\x18\x03 \x01(\tR\aproject\x129\n" + - "\n" + - "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + - "\n" + - "updated_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x14\n" + - "\x05model\x18\x06 \x01(\tR\x05model\x12#\n" + - "\rmessage_count\x18\a \x01(\x05R\fmessageCount\x124\n" + - "\n" + - "vcs_status\x18\b \x01(\v2\x15.session.v1.VCSStatusR\tvcsStatus\x12\x16\n" + - "\x06branch\x18\t \x01(\tR\x06branch\x12@\n" + - "\x0esession_status\x18\n" + - " \x01(\x0e2\x19.session.v1.SessionStatusR\rsessionStatus\x12,\n" + - "\x12git_status_summary\x18\v \x01(\tR\x10gitStatusSummary\x12.\n" + - "\x13last_commit_message\x18\f \x01(\tR\x11lastCommitMessage\x12&\n" + - "\x0fdiff_file_count\x18\r \x01(\x05R\rdiffFileCount\"\xac\x01\n" + - "\x1fGetClaudeHistoryMessagesRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + - "\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x16\n" + - "\x06offset\x18\x03 \x01(\x05R\x06offset\x12\x12\n" + - "\x04tail\x18\x04 \x01(\bR\x04tail\x12&\n" + - "\fanchor_index\x18\x05 \x01(\x05H\x00R\vanchorIndex\x88\x01\x01B\x0f\n" + - "\r_anchor_index\"z\n" + - " GetClaudeHistoryMessagesResponse\x125\n" + - "\bmessages\x18\x01 \x03(\v2\x19.session.v1.ClaudeMessageR\bmessages\x12\x1f\n" + - "\vtotal_count\x18\x02 \x01(\x05R\n" + - "totalCount\"\x8d\x01\n" + - "\rClaudeMessage\x12\x12\n" + - "\x04role\x18\x01 \x01(\tR\x04role\x12\x18\n" + - "\acontent\x18\x02 \x01(\tR\acontent\x128\n" + - "\ttimestamp\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12\x14\n" + - "\x05model\x18\x04 \x01(\tR\x05model\"\xb3\x04\n" + - "\x1aSearchClaudeHistoryRequest\x12\x14\n" + - "\x05query\x18\x01 \x01(\tR\x05query\x12\x1d\n" + - "\aproject\x18\x02 \x01(\tH\x00R\aproject\x88\x01\x01\x12\x19\n" + - "\x05model\x18\x03 \x01(\tH\x01R\x05model\x88\x01\x01\x12>\n" + - "\n" + - "start_time\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampH\x02R\tstartTime\x88\x01\x01\x12:\n" + - "\bend_time\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampH\x03R\aendTime\x88\x01\x01\x12\x14\n" + - "\x05limit\x18\x06 \x01(\x05R\x05limit\x12\x16\n" + - "\x06offset\x18\a \x01(\x05R\x06offset\x12-\n" + - "\x10group_by_session\x18\b \x01(\bH\x04R\x0egroupBySession\x88\x01\x01\x12,\n" + - "\x0finclude_context\x18\t \x01(\bH\x05R\x0eincludeContext\x88\x01\x01\x12C\n" + - "\x1bexclude_automation_sessions\x18\n" + - " \x01(\bH\x06R\x19excludeAutomationSessions\x88\x01\x01B\n" + - "\n" + - "\b_projectB\b\n" + - "\x06_modelB\r\n" + - "\v_start_timeB\v\n" + - "\t_end_timeB\x13\n" + - "\x11_group_by_sessionB\x12\n" + - "\x10_include_contextB\x1e\n" + - "\x1c_exclude_automation_sessions\"\xb5\x01\n" + - "\x1bSearchClaudeHistoryResponse\x122\n" + - "\aresults\x18\x01 \x03(\v2\x18.session.v1.SearchResultR\aresults\x12#\n" + - "\rtotal_matches\x18\x02 \x01(\x05R\ftotalMatches\x12\"\n" + - "\rquery_time_ms\x18\x03 \x01(\x03R\vqueryTimeMs\x12\x19\n" + - "\bhas_more\x18\x04 \x01(\bR\ahasMore\"\x9c\x04\n" + - "\fSearchResult\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12!\n" + - "\fsession_name\x18\x02 \x01(\tR\vsessionName\x12\x18\n" + - "\aproject\x18\x03 \x01(\tR\aproject\x12#\n" + - "\rmessage_index\x18\x04 \x01(\x05R\fmessageIndex\x12\x14\n" + - "\x05score\x18\x05 \x01(\x02R\x05score\x125\n" + - "\bsnippets\x18\x06 \x03(\v2\x19.session.v1.SearchSnippetR\bsnippets\x12<\n" + - "\bmetadata\x18\a \x01(\v2 .session.v1.SearchResultMetadataR\bmetadata\x12@\n" + - "\x1dmore_matches_in_session_count\x18\b \x01(\x05R\x19moreMatchesInSessionCount\x12@\n" + - "\x0econtext_window\x18\t \x03(\v2\x19.session.v1.ClaudeMessageR\rcontextWindow\x12>\n" + - "\rbookend_first\x18\n" + - " \x03(\v2\x19.session.v1.ClaudeMessageR\fbookendFirst\x12<\n" + - "\fbookend_last\x18\v \x03(\v2\x19.session.v1.ClaudeMessageR\vbookendLast\"\xcc\x01\n" + - "\rSearchSnippet\x12\x12\n" + - "\x04text\x18\x01 \x01(\tR\x04text\x12E\n" + - "\x10highlight_ranges\x18\x02 \x03(\v2\x1a.session.v1.HighlightRangeR\x0fhighlightRanges\x12!\n" + - "\fmessage_role\x18\x03 \x01(\tR\vmessageRole\x12=\n" + - "\fmessage_time\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\vmessageTime\"8\n" + - "\x0eHighlightRange\x12\x14\n" + - "\x05start\x18\x01 \x01(\x05R\x05start\x12\x10\n" + - "\x03end\x18\x02 \x01(\x05R\x03end\"\xb6\x01\n" + - "\x14SearchResultMetadata\x12*\n" + - "\x11is_metadata_match\x18\x01 \x01(\bR\x0fisMetadataMatch\x12!\n" + - "\fmatch_source\x18\x02 \x01(\tR\vmatchSource\x12\x14\n" + - "\x05model\x18\x03 \x01(\tR\x05model\x129\n" + - "\n" + - "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"\"\n" + - "\x10GetPRInfoRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"@\n" + - "\x11GetPRInfoResponse\x12+\n" + - "\apr_info\x18\x01 \x01(\v2\x12.session.v1.PRInfoR\x06prInfo\"&\n" + - "\x14GetPRCommentsRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"J\n" + - "\x15GetPRCommentsResponse\x121\n" + - "\bcomments\x18\x01 \x03(\v2\x15.session.v1.PRCommentR\bcomments\":\n" + - "\x14PostPRCommentRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + - "\x04body\x18\x02 \x01(\tR\x04body\"K\n" + - "\x15PostPRCommentResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"H\n" + - "\x0eMergePRRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n" + - "\x06method\x18\x02 \x01(\tH\x00R\x06method\x88\x01\x01B\t\n" + - "\a_method\"E\n" + - "\x0fMergePRResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\" \n" + - "\x0eClosePRRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"E\n" + - "\x0fClosePRResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"\xfd\x02\n" + - "\x17SendNotificationRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12I\n" + - "\x11notification_type\x18\x02 \x01(\x0e2\x1c.session.v1.NotificationTypeR\x10notificationType\x12<\n" + - "\bpriority\x18\x03 \x01(\x0e2 .session.v1.NotificationPriorityR\bpriority\x12\x14\n" + - "\x05title\x18\x04 \x01(\tR\x05title\x12\x18\n" + - "\amessage\x18\x05 \x01(\tR\amessage\x12M\n" + - "\bmetadata\x18\x06 \x03(\v21.session.v1.SendNotificationRequest.MetadataEntryR\bmetadata\x1a;\n" + - "\rMetadataEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"w\n" + - "\x18SendNotificationResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\x12'\n" + - "\x0fnotification_id\x18\x03 \x01(\tR\x0enotificationId\"\xbb\x01\n" + - "\x12FocusWindowRequest\x12 \n" + - "\tbundle_id\x18\x01 \x01(\tH\x00R\bbundleId\x88\x01\x01\x12\x1e\n" + - "\bapp_name\x18\x02 \x01(\tH\x01R\aappName\x88\x01\x01\x12\x15\n" + - "\x03pid\x18\x03 \x01(\x05H\x02R\x03pid\x88\x01\x01\x12\x1d\n" + - "\aproject\x18\x04 \x01(\tH\x03R\aproject\x88\x01\x01B\f\n" + - "\n" + - "_bundle_idB\v\n" + - "\t_app_nameB\x06\n" + - "\x04_pidB\n" + - "\n" + - "\b_project\"e\n" + - "\x13FocusWindowResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\x12\x1a\n" + - "\bplatform\x18\x03 \x01(\tR\bplatform\"C\n" + - "\x14RenameSessionRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n" + - "\tnew_title\x18\x02 \x01(\tR\bnewTitle\"F\n" + - "\x15RenameSessionResponse\x12-\n" + - "\asession\x18\x01 \x01(\v2\x13.session.v1.SessionR\asession\"P\n" + - "\x15RestartSessionRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12'\n" + - "\x0fpreserve_output\x18\x02 \x01(\bR\x0epreserveOutput\"{\n" + - "\x16RestartSessionResponse\x12-\n" + - "\asession\x18\x01 \x01(\v2\x13.session.v1.SessionR\asession\x12\x18\n" + - "\asuccess\x18\x02 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x03 \x01(\tR\amessage\")\n" + - "\x17GetWorkspaceInfoRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"`\n" + - "\x18GetWorkspaceInfoResponse\x12.\n" + - "\bvcs_info\x18\x01 \x01(\v2\x13.session.v1.VCSInfoR\avcsInfo\x12\x14\n" + - "\x05error\x18\x02 \x01(\tR\x05error\"-\n" + - "\x1bListWorkspaceTargetsRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"u\n" + - "\x1cListWorkspaceTargetsResponse\x12?\n" + - "\atargets\x18\x01 \x01(\v2%.session.v1.AvailableWorkspaceTargetsR\atargets\x12\x14\n" + - "\x05error\x18\x02 \x01(\tR\x05error\"\x98\x02\n" + - "\x16SwitchWorkspaceRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12@\n" + - "\vswitch_type\x18\x02 \x01(\x0e2\x1f.session.v1.WorkspaceSwitchTypeR\n" + - "switchType\x12\x16\n" + - "\x06target\x18\x03 \x01(\tR\x06target\x12C\n" + - "\x0fchange_strategy\x18\x04 \x01(\x0e2\x1a.session.v1.ChangeStrategyR\x0echangeStrategy\x12*\n" + - "\x11create_if_missing\x18\x05 \x01(\bR\x0fcreateIfMissing\x12#\n" + - "\rbase_revision\x18\x06 \x01(\tR\fbaseRevision\"\xac\x01\n" + - "\x16ResolveApprovalRequest\x12\x1f\n" + - "\vapproval_id\x18\x01 \x01(\tR\n" + - "approvalId\x12\x1a\n" + - "\bdecision\x18\x02 \x01(\tR\bdecision\x12\x1d\n" + - "\amessage\x18\x03 \x01(\tH\x00R\amessage\x88\x01\x01\x12*\n" + - "\x11override_ci_block\x18\x04 \x01(\bR\x0foverrideCiBlockB\n" + - "\n" + - "\b_message\"M\n" + - "\x17ResolveApprovalResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"P\n" + - "\x1bListPendingApprovalsRequest\x12\"\n" + - "\n" + - "session_id\x18\x01 \x01(\tH\x00R\tsessionId\x88\x01\x01B\r\n" + - "\v_session_id\"^\n" + - "\x1cListPendingApprovalsResponse\x12>\n" + - "\tapprovals\x18\x01 \x03(\v2 .session.v1.PendingApprovalProtoR\tapprovals\"\xad\x02\n" + - "\x17SwitchWorkspaceResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\x12+\n" + - "\x11previous_revision\x18\x03 \x01(\tR\x10previousRevision\x12)\n" + - "\x10current_revision\x18\x04 \x01(\tR\x0fcurrentRevision\x12.\n" + - "\bvcs_type\x18\x05 \x01(\x0e2\x13.session.v1.VCSTypeR\avcsType\x12'\n" + - "\x0fchanges_handled\x18\x06 \x01(\tR\x0echangesHandled\x12-\n" + - "\asession\x18\a \x01(\v2\x13.session.v1.SessionR\asession\"n\n" + - "\x1aCreateDebugSnapshotRequest\x12\x17\n" + - "\x04note\x18\x01 \x01(\tH\x00R\x04note\x88\x01\x01\x12 \n" + - "\tlog_lines\x18\x02 \x01(\x05H\x01R\blogLines\x88\x01\x01B\a\n" + - "\x05_noteB\f\n" + - "\n" + - "_log_lines\"\x9a\x01\n" + - "\x1bCreateDebugSnapshotResponse\x12\x1b\n" + - "\tfile_path\x18\x01 \x01(\tR\bfilePath\x12\x18\n" + - "\asummary\x18\x02 \x01(\tR\asummary\x12\x1c\n" + - "\ttimestamp\x18\x03 \x01(\tR\ttimestamp\x12&\n" + - "\x0ffile_size_bytes\x18\x04 \x01(\x03R\rfileSizeBytes\"\xd9\x05\n" + - "\x19NotificationHistoryRecord\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + - "\n" + - "session_id\x18\x02 \x01(\tR\tsessionId\x12!\n" + - "\fsession_name\x18\x03 \x01(\tR\vsessionName\x12I\n" + - "\x11notification_type\x18\x04 \x01(\x0e2\x1c.session.v1.NotificationTypeR\x10notificationType\x12<\n" + - "\bpriority\x18\x05 \x01(\x0e2 .session.v1.NotificationPriorityR\bpriority\x12\x14\n" + - "\x05title\x18\x06 \x01(\tR\x05title\x12\x18\n" + - "\amessage\x18\a \x01(\tR\amessage\x12O\n" + - "\bmetadata\x18\b \x03(\v23.session.v1.NotificationHistoryRecord.MetadataEntryR\bmetadata\x129\n" + - "\n" + - "created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x17\n" + - "\ais_read\x18\n" + - " \x01(\bR\x06isRead\x128\n" + - "\aread_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampH\x00R\x06readAt\x88\x01\x01\x12)\n" + - "\x10occurrence_count\x18\f \x01(\x05R\x0foccurrenceCount\x12I\n" + - "\x10last_occurred_at\x18\r \x01(\v2\x1a.google.protobuf.TimestampH\x01R\x0elastOccurredAt\x88\x01\x01\x1a;\n" + - "\rMetadataEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\n" + - "\n" + - "\b_read_atB\x13\n" + - "\x11_last_occurred_at\"\xa9\x02\n" + - "\x1dGetNotificationHistoryRequest\x12\x19\n" + - "\x05limit\x18\x01 \x01(\x05H\x00R\x05limit\x88\x01\x01\x12\x1b\n" + - "\x06offset\x18\x02 \x01(\x05H\x01R\x06offset\x88\x01\x01\x12B\n" + - "\vtype_filter\x18\x03 \x01(\x0e2\x1c.session.v1.NotificationTypeH\x02R\n" + - "typeFilter\x88\x01\x01\x12\"\n" + - "\n" + - "session_id\x18\x04 \x01(\tH\x03R\tsessionId\x88\x01\x01\x12$\n" + - "\vunread_only\x18\x05 \x01(\bH\x04R\n" + - "unreadOnly\x88\x01\x01B\b\n" + - "\x06_limitB\t\n" + - "\a_offsetB\x0e\n" + - "\f_type_filterB\r\n" + - "\v_session_idB\x0e\n" + - "\f_unread_only\"\xcc\x01\n" + - "\x1eGetNotificationHistoryResponse\x12K\n" + - "\rnotifications\x18\x01 \x03(\v2%.session.v1.NotificationHistoryRecordR\rnotifications\x12\x1f\n" + - "\vtotal_count\x18\x02 \x01(\x05R\n" + - "totalCount\x12!\n" + - "\funread_count\x18\x03 \x01(\x05R\vunreadCount\x12\x19\n" + - "\bhas_more\x18\x04 \x01(\bR\ahasMore\"H\n" + - "\x1bMarkNotificationReadRequest\x12)\n" + - "\x10notification_ids\x18\x01 \x03(\tR\x0fnotificationIds\"[\n" + - "\x1cMarkNotificationReadResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12!\n" + - "\fmarked_count\x18\x02 \x01(\x05R\vmarkedCount\"f\n" + - "\x1fClearNotificationHistoryRequest\x12.\n" + - "\x10before_timestamp\x18\x01 \x01(\tH\x00R\x0fbeforeTimestamp\x88\x01\x01B\x13\n" + - "\x11_before_timestamp\"a\n" + - " ClearNotificationHistoryResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12#\n" + - "\rcleared_count\x18\x02 \x01(\x05R\fclearedCount\"V\n" + - "\x18ListApprovalRulesRequest\x12(\n" + - "\rsource_filter\x18\x01 \x01(\tH\x00R\fsourceFilter\x88\x01\x01B\x10\n" + - "\x0e_source_filter\"P\n" + - "\x19ListApprovalRulesResponse\x123\n" + - "\x05rules\x18\x01 \x03(\v2\x1d.session.v1.ApprovalRuleProtoR\x05rules\"N\n" + - "\x19UpsertApprovalRuleRequest\x121\n" + - "\x04rule\x18\x01 \x01(\v2\x1d.session.v1.ApprovalRuleProtoR\x04rule\"i\n" + - "\x1aUpsertApprovalRuleResponse\x121\n" + - "\x04rule\x18\x01 \x01(\v2\x1d.session.v1.ApprovalRuleProtoR\x04rule\x12\x18\n" + - "\acreated\x18\x02 \x01(\bR\acreated\"+\n" + - "\x19DeleteApprovalRuleRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"P\n" + - "\x1aDeleteApprovalRuleResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"S\n" + - "\x1bGetApprovalAnalyticsRequest\x12$\n" + - "\vwindow_days\x18\x01 \x01(\x05H\x00R\n" + - "windowDays\x88\x01\x01B\x0e\n" + - "\f_window_days\"\x9e\x01\n" + - "\x1cGetApprovalAnalyticsResponse\x12;\n" + - "\asummary\x18\x01 \x01(\v2!.session.v1.AnalyticsSummaryProtoR\asummary\x12A\n" + - "\rdaily_buckets\x18\x02 \x03(\v2\x1c.session.v1.DailyBucketProtoR\fdailyBuckets\"l\n" + - "\x1aGetProgramAnalyticsRequest\x12\x18\n" + - "\aprogram\x18\x01 \x01(\tR\aprogram\x12$\n" + - "\vwindow_days\x18\x02 \x01(\x05H\x00R\n" + - "windowDays\x88\x01\x01B\x0e\n" + - "\f_window_days\"\xf8\x01\n" + - "\x1bGetProgramAnalyticsResponse\x12\x18\n" + - "\aprogram\x18\x01 \x01(\tR\aprogram\x12\x1a\n" + - "\bcategory\x18\x02 \x01(\tR\bcategory\x12F\n" + - "\vsubcommands\x18\x03 \x03(\v2$.session.v1.SubcommandBreakdownProtoR\vsubcommands\x12'\n" + - "\x0frecent_examples\x18\x04 \x03(\tR\x0erecentExamples\x122\n" + - "\x05trend\x18\x05 \x03(\v2\x1c.session.v1.DailyBucketProtoR\x05trend\"\x16\n" + - "\x14ListDatabasesRequest\"\x81\x01\n" + - "\x15ListDatabasesResponse\x126\n" + - "\tdatabases\x18\x01 \x03(\v2\x18.session.v1.DatabaseInfoR\tdatabases\x120\n" + - "\x14current_workspace_id\x18\x02 \x01(\tR\x12currentWorkspaceId\"\x1b\n" + - "\x19GetCurrentDatabaseRequest\"R\n" + - "\x1aGetCurrentDatabaseResponse\x124\n" + - "\bdatabase\x18\x01 \x01(\v2\x18.session.v1.DatabaseInfoR\bdatabase\"6\n" + - "\x15SwitchDatabaseRequest\x12\x1d\n" + - "\n" + - "config_dir\x18\x01 \x01(\tR\tconfigDir\"L\n" + - "\x16SwitchDatabaseResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"5\n" + - "\x14MergeDatabaseRequest\x12\x1d\n" + - "\n" + - "config_dir\x18\x01 \x01(\tR\tconfigDir\"\xa3\x01\n" + - "\x15MergeDatabaseResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\x12+\n" + - "\x11sessions_imported\x18\x03 \x01(\x05R\x10sessionsImported\x12)\n" + - "\x10sessions_skipped\x18\x04 \x01(\x05R\x0fsessionsSkipped\"N\n" + - "\x17CreateCheckpointRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x14\n" + - "\x05label\x18\x02 \x01(\tR\x05label\"W\n" + - "\x18CreateCheckpointResponse\x12;\n" + - "\n" + - "checkpoint\x18\x01 \x01(\v2\x1b.session.v1.CheckpointProtoR\n" + - "checkpoint\"7\n" + - "\x16ListCheckpointsRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\"X\n" + - "\x17ListCheckpointsResponse\x12=\n" + - "\vcheckpoints\x18\x01 \x03(\v2\x1b.session.v1.CheckpointProtoR\vcheckpoints\"u\n" + - "\x12ForkSessionRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12#\n" + - "\rcheckpoint_id\x18\x02 \x01(\tR\fcheckpointId\x12\x1b\n" + - "\tnew_title\x18\x03 \x01(\tR\bnewTitle\"D\n" + - "\x13ForkSessionResponse\x12-\n" + - "\asession\x18\x01 \x01(\v2\x13.session.v1.SessionR\asession\"n\n" + - "\x10ListFilesRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x12\n" + - "\x04path\x18\x02 \x01(\tR\x04path\x12'\n" + - "\x0finclude_ignored\x18\x03 \x01(\bR\x0eincludeIgnored\"\x9b\x01\n" + - "\x11ListFilesResponse\x12*\n" + - "\x05files\x18\x01 \x03(\v2\x14.session.v1.FileNodeR\x05files\x12\x1b\n" + - "\tbase_path\x18\x02 \x01(\tR\bbasePath\x12\x1c\n" + - "\ttruncated\x18\x03 \x01(\bR\ttruncated\x12\x1f\n" + - "\vtotal_count\x18\x04 \x01(\x05R\n" + - "totalCount\"J\n" + - "\x15GetFileContentRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x12\n" + - "\x04path\x18\x02 \x01(\tR\x04path\"\xc5\x01\n" + - "\x16GetFileContentResponse\x12\x18\n" + - "\acontent\x18\x01 \x01(\tR\acontent\x12\x1a\n" + - "\bencoding\x18\x02 \x01(\tR\bencoding\x12\x1b\n" + - "\tis_binary\x18\x03 \x01(\bR\bisBinary\x12\x12\n" + - "\x04size\x18\x04 \x01(\x03R\x04size\x12!\n" + - "\fcontent_type\x18\x05 \x01(\tR\vcontentType\x12!\n" + - "\fis_truncated\x18\x06 \x01(\bR\visTruncated\"\x93\x01\n" + - "\x12SearchFilesRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x14\n" + - "\x05query\x18\x02 \x01(\tR\x05query\x12'\n" + - "\x0finclude_ignored\x18\x03 \x01(\bR\x0eincludeIgnored\x12\x1f\n" + - "\vmax_results\x18\x04 \x01(\x05R\n" + - "maxResults\"\x84\x01\n" + - "\x13SearchFilesResponse\x12*\n" + - "\x05files\x18\x01 \x03(\v2\x14.session.v1.FileNodeR\x05files\x12\x1c\n" + - "\ttruncated\x18\x02 \x01(\bR\ttruncated\x12#\n" + - "\rtotal_matches\x18\x03 \x01(\x05R\ftotalMatches\"\x89\x01\n" + - "\x1aListPathCompletionsRequest\x12\x1f\n" + - "\vpath_prefix\x18\x01 \x01(\tR\n" + - "pathPrefix\x12\x1f\n" + - "\vmax_results\x18\x02 \x01(\x05R\n" + - "maxResults\x12)\n" + - "\x10directories_only\x18\x03 \x01(\bR\x0fdirectoriesOnly\"\xd0\x01\n" + - "\x1bListPathCompletionsResponse\x12/\n" + - "\aentries\x18\x01 \x03(\v2\x15.session.v1.PathEntryR\aentries\x12\x19\n" + - "\bbase_dir\x18\x02 \x01(\tR\abaseDir\x12\x1c\n" + - "\ttruncated\x18\x03 \x01(\bR\ttruncated\x12&\n" + - "\x0fbase_dir_exists\x18\x04 \x01(\bR\rbaseDirExists\x12\x1f\n" + - "\vpath_exists\x18\x05 \x01(\bR\n" + - "pathExists\"V\n" + - "\tPathEntry\x12\x12\n" + - "\x04path\x18\x01 \x01(\tR\x04path\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x12!\n" + - "\fis_directory\x18\x03 \x01(\bR\visDirectory\"\xae\x03\n" + - "\x14ProfileDefaultsProto\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12 \n" + - "\vdescription\x18\x02 \x01(\tR\vdescription\x12\x18\n" + - "\aprogram\x18\x03 \x01(\tR\aprogram\x12\x19\n" + - "\bauto_yes\x18\x04 \x01(\bR\aautoYes\x12\x12\n" + - "\x04tags\x18\x05 \x03(\tR\x04tags\x12H\n" + - "\benv_vars\x18\x06 \x03(\v2-.session.v1.ProfileDefaultsProto.EnvVarsEntryR\aenvVars\x12\x1b\n" + - "\tcli_flags\x18\a \x01(\tR\bcliFlags\x129\n" + - "\n" + - "created_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + - "\n" + - "updated_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x1a:\n" + - "\fEnvVarsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x82\x01\n" + - "\x12DirectoryRuleProto\x12\x12\n" + - "\x04path\x18\x01 \x01(\tR\x04path\x12\x18\n" + - "\aprofile\x18\x02 \x01(\tR\aprofile\x12>\n" + - "\toverrides\x18\x03 \x01(\v2 .session.v1.ProfileDefaultsProtoR\toverrides\"\xda\x05\n" + - "\x15SessionDefaultsConfig\x12\x18\n" + - "\aprogram\x18\x01 \x01(\tR\aprogram\x12\x19\n" + - "\bauto_yes\x18\x02 \x01(\bR\aautoYes\x12\x12\n" + - "\x04tags\x18\x03 \x03(\tR\x04tags\x12I\n" + - "\benv_vars\x18\x04 \x03(\v2..session.v1.SessionDefaultsConfig.EnvVarsEntryR\aenvVars\x12\x1b\n" + - "\tcli_flags\x18\x05 \x01(\tR\bcliFlags\x12K\n" + - "\bprofiles\x18\x06 \x03(\v2/.session.v1.SessionDefaultsConfig.ProfilesEntryR\bprofiles\x12G\n" + - "\x0fdirectory_rules\x18\a \x03(\v2\x1e.session.v1.DirectoryRuleProtoR\x0edirectoryRules\x12'\n" + - "\x10one_off_base_dir\x18\b \x01(\tR\roneOffBaseDir\x12/\n" + - "\x14new_project_base_dir\x18\t \x01(\tR\x11newProjectBaseDir\x12;\n" + - "\x1amax_auto_rework_iterations\x18\n" + - " \x01(\x05R\x17maxAutoReworkIterations\x12H\n" + - "!max_concurrent_backlog_work_items\x18\v \x01(\x05R\x1dmaxConcurrentBacklogWorkItems\x1a:\n" + - "\fEnvVarsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a]\n" + - "\rProfilesEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x126\n" + - "\x05value\x18\x02 \x01(\v2 .session.v1.ProfileDefaultsProtoR\x05value:\x028\x01\"\x1b\n" + - "\x19GetSessionDefaultsRequest\"[\n" + - "\x1aGetSessionDefaultsResponse\x12=\n" + - "\bdefaults\x18\x01 \x01(\v2!.session.v1.SessionDefaultsConfigR\bdefaults\"\x89\x01\n" + - "\x1dPreviewDestinationPathRequest\x12\x14\n" + - "\x05input\x18\x01 \x01(\tR\x05input\x12\x12\n" + - "\x04mode\x18\x02 \x01(\tR\x04mode\x12\x1b\n" + - "\trepo_path\x18\x03 \x01(\tR\brepoPath\x12!\n" + - "\fsession_name\x18\x04 \x01(\tR\vsessionName\"|\n" + - "\x1ePreviewDestinationPathResponse\x12\x12\n" + - "\x04path\x18\x01 \x01(\tR\x04path\x12\x19\n" + - "\bis_exact\x18\x02 \x01(\bR\aisExact\x12+\n" + - "\x11unresolved_reason\x18\x03 \x01(\tR\x10unresolvedReason\"\\\n" + - "\x16ResolveDefaultsRequest\x12\x1f\n" + - "\vworking_dir\x18\x01 \x01(\tR\n" + - "workingDir\x12!\n" + - "\fprofile_name\x18\x02 \x01(\tR\vprofileName\"\xa0\x03\n" + - "\x17ResolveDefaultsResponse\x12\x18\n" + - "\aprogram\x18\x01 \x01(\tR\aprogram\x12\x19\n" + - "\bauto_yes\x18\x02 \x01(\bR\aautoYes\x12\x12\n" + - "\x04tags\x18\x03 \x03(\tR\x04tags\x12K\n" + - "\benv_vars\x18\x04 \x03(\v20.session.v1.ResolveDefaultsResponse.EnvVarsEntryR\aenvVars\x12\x1b\n" + - "\tcli_flags\x18\x05 \x01(\tR\bcliFlags\x12\x1f\n" + - "\vused_global\x18\x06 \x01(\bR\n" + - "usedGlobal\x12%\n" + - "\x0eused_directory\x18\a \x01(\bR\rusedDirectory\x12!\n" + - "\fused_profile\x18\b \x01(\bR\vusedProfile\x12+\n" + - "\x11matched_directory\x18\t \x01(\tR\x10matchedDirectory\x1a:\n" + - "\fEnvVarsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xf1\x03\n" + - "\x1bUpdateGlobalDefaultsRequest\x12\x18\n" + - "\aprogram\x18\x01 \x01(\tR\aprogram\x12\x19\n" + - "\bauto_yes\x18\x02 \x01(\bR\aautoYes\x12\x12\n" + - "\x04tags\x18\x03 \x03(\tR\x04tags\x12O\n" + - "\benv_vars\x18\x04 \x03(\v24.session.v1.UpdateGlobalDefaultsRequest.EnvVarsEntryR\aenvVars\x12\x1b\n" + - "\tcli_flags\x18\x05 \x01(\tR\bcliFlags\x12'\n" + - "\x10one_off_base_dir\x18\x06 \x01(\tR\roneOffBaseDir\x12/\n" + - "\x14new_project_base_dir\x18\a \x01(\tR\x11newProjectBaseDir\x12;\n" + - "\x1amax_auto_rework_iterations\x18\b \x01(\x05R\x17maxAutoReworkIterations\x12H\n" + - "!max_concurrent_backlog_work_items\x18\t \x01(\x05R\x1dmaxConcurrentBacklogWorkItems\x1a:\n" + - "\fEnvVarsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"]\n" + - "\x1cUpdateGlobalDefaultsResponse\x12=\n" + - "\bdefaults\x18\x01 \x01(\v2!.session.v1.SessionDefaultsConfigR\bdefaults\"R\n" + - "\x14UpsertProfileRequest\x12:\n" + - "\aprofile\x18\x01 \x01(\v2 .session.v1.ProfileDefaultsProtoR\aprofile\"S\n" + - "\x15UpsertProfileResponse\x12:\n" + - "\aprofile\x18\x01 \x01(\v2 .session.v1.ProfileDefaultsProtoR\aprofile\"*\n" + - "\x14DeleteProfileRequest\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\"\x17\n" + - "\x15DeleteProfileResponse\"P\n" + - "\x1aUpsertDirectoryRuleRequest\x122\n" + - "\x04rule\x18\x01 \x01(\v2\x1e.session.v1.DirectoryRuleProtoR\x04rule\"Q\n" + - "\x1bUpsertDirectoryRuleResponse\x122\n" + - "\x04rule\x18\x01 \x01(\v2\x1e.session.v1.DirectoryRuleProtoR\x04rule\"0\n" + - "\x1aDeleteDirectoryRuleRequest\x12\x12\n" + - "\x04path\x18\x01 \x01(\tR\x04path\"\x1d\n" + - "\x1bDeleteDirectoryRuleResponse\"\xc5\x03\n" + - "\n" + - "AliasProto\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" + - "\x05group\x18\x02 \x01(\tR\x05group\x12\x12\n" + - "\x04path\x18\x03 \x01(\tR\x04path\x12 \n" + - "\vdescription\x18\x04 \x01(\tR\vdescription\x12\x18\n" + - "\aprofile\x18\x05 \x01(\tR\aprofile\x12\x18\n" + - "\aprogram\x18\x06 \x01(\tR\aprogram\x12\x19\n" + - "\bauto_yes\x18\a \x01(\bR\aautoYes\x12\x12\n" + - "\x04tags\x18\b \x03(\tR\x04tags\x12>\n" + - "\benv_vars\x18\t \x03(\v2#.session.v1.AliasProto.EnvVarsEntryR\aenvVars\x12\x1b\n" + - "\tcli_flags\x18\n" + - " \x01(\tR\bcliFlags\x12:\n" + - "\fsession_type\x18\v \x01(\x0e2\x17.session.v1.SessionTypeR\vsessionType\x12\x1f\n" + - "\vname_prefix\x18\f \x01(\tR\n" + - "namePrefix\x1a:\n" + - "\fEnvVarsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x14\n" + - "\x12ListAliasesRequest\"G\n" + - "\x13ListAliasesResponse\x120\n" + - "\aaliases\x18\x01 \x03(\v2\x16.session.v1.AliasProtoR\aaliases\"B\n" + - "\x12UpsertAliasRequest\x12,\n" + - "\x05alias\x18\x01 \x01(\v2\x16.session.v1.AliasProtoR\x05alias\"C\n" + - "\x13UpsertAliasResponse\x12,\n" + - "\x05alias\x18\x01 \x01(\v2\x16.session.v1.AliasProtoR\x05alias\"(\n" + - "\x12DeleteAliasRequest\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\"\x15\n" + - "\x13DeleteAliasResponse\"3\n" + - "\x14ListWorktreesRequest\x12\x1b\n" + - "\trepo_path\x18\x01 \x01(\tR\brepoPath\"T\n" + - "\rWorktreeEntry\x12\x12\n" + - "\x04path\x18\x01 \x01(\tR\x04path\x12\x16\n" + - "\x06branch\x18\x02 \x01(\tR\x06branch\x12\x17\n" + - "\ais_main\x18\x03 \x01(\bR\x06isMain\"P\n" + - "\x15ListWorktreesResponse\x127\n" + - "\tworktrees\x18\x01 \x03(\v2\x19.session.v1.WorktreeEntryR\tworktrees\"\xe1\x01\n" + - "\x12PromptHistoryEntry\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + - "\x04text\x18\x02 \x01(\tR\x04text\x12\x14\n" + - "\x05label\x18\x03 \x01(\tR\x05label\x12\x1d\n" + - "\n" + - "used_count\x18\x04 \x01(\x05R\tusedCount\x127\n" + - "\tlast_used\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\blastUsed\x129\n" + - "\n" + - "created_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"0\n" + - "\x18ListPromptHistoryRequest\x12\x14\n" + - "\x05limit\x18\x01 \x01(\x05R\x05limit\"U\n" + - "\x19ListPromptHistoryResponse\x128\n" + - "\aentries\x18\x01 \x03(\v2\x1e.session.v1.PromptHistoryEntryR\aentries\",\n" + - "\x1aDeletePromptHistoryRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"\x1d\n" + - "\x1bDeletePromptHistoryResponse\"\xdf\x02\n" + - "\x13BatchSessionRequest\x12\x14\n" + - "\x05title\x18\x01 \x01(\tR\x05title\x12\x12\n" + - "\x04path\x18\x02 \x01(\tR\x04path\x12\x1f\n" + - "\vworking_dir\x18\x03 \x01(\tR\n" + - "workingDir\x12\x16\n" + - "\x06branch\x18\x04 \x01(\tR\x06branch\x12\x18\n" + - "\aprogram\x18\x05 \x01(\tR\aprogram\x12\x1a\n" + - "\bcategory\x18\x06 \x01(\tR\bcategory\x12%\n" + - "\x0einitial_prompt\x18\a \x01(\tR\rinitialPrompt\x12\x19\n" + - "\bauto_yes\x18\b \x01(\bR\aautoYes\x12:\n" + - "\fsession_type\x18\t \x01(\x0e2\x17.session.v1.SessionTypeR\vsessionType\x12\x1d\n" + - "\n" + - "project_id\x18\n" + - " \x01(\tR\tprojectId\x12\x12\n" + - "\x04tags\x18\v \x03(\tR\x04tags\"x\n" + - "\x11BatchCreateResult\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x1d\n" + - "\n" + - "session_id\x18\x02 \x01(\tR\tsessionId\x12\x14\n" + - "\x05error\x18\x03 \x01(\tR\x05error\x12\x14\n" + - "\x05title\x18\x04 \x01(\tR\x05title\"\x82\x01\n" + - "\x1aBatchCreateSessionsRequest\x12;\n" + - "\bsessions\x18\x01 \x03(\v2\x1f.session.v1.BatchSessionRequestR\bsessions\x12'\n" + - "\x0fmax_concurrency\x18\x02 \x01(\x05R\x0emaxConcurrency\"\x8c\x01\n" + - "\x1bBatchCreateSessionsResponse\x127\n" + - "\aresults\x18\x01 \x03(\v2\x1d.session.v1.BatchCreateResultR\aresults\x12\x1c\n" + - "\tsucceeded\x18\x02 \x01(\x05R\tsucceeded\x12\x16\n" + - "\x06failed\x18\x03 \x01(\x05R\x06failed\"s\n" + - "\x11RunOneShotRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x16\n" + - "\x06prompt\x18\x02 \x01(\tR\x06prompt\x12'\n" + - "\x0ftimeout_seconds\x18\x03 \x01(\x05R\x0etimeoutSeconds\"\xb1\x01\n" + - "\x12RunOneShotResponse\x12\x16\n" + - "\x06output\x18\x01 \x01(\tR\x06output\x12\x14\n" + - "\x05error\x18\x02 \x01(\tR\x05error\x12\x1b\n" + - "\texit_code\x18\x03 \x01(\x05R\bexitCode\x12\x15\n" + - "\x06pr_url\x18\x04 \x01(\tR\x05prUrl\x129\n" + - "\x19branch_diverged_from_base\x18\x05 \x01(\bR\x16branchDivergedFromBase\"\xe4\x02\n" + - "\aProject\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + - "\vdescription\x18\x03 \x01(\tR\vdescription\x129\n" + - "\n" + - "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + - "\n" + - "updated_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12#\n" + - "\rsession_count\x18\x06 \x01(\x05R\fsessionCount\x12#\n" + - "\rrunning_count\x18\a \x01(\x05R\frunningCount\x12%\n" + - "\x0ecomplete_count\x18\b \x01(\x05R\rcompleteCount\x12,\n" + - "\x12review_ready_count\x18\t \x01(\x05R\x10reviewReadyCount\"L\n" + - "\x14CreateProjectRequest\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12 \n" + - "\vdescription\x18\x02 \x01(\tR\vdescription\"F\n" + - "\x15CreateProjectResponse\x12-\n" + - "\aproject\x18\x01 \x01(\v2\x13.session.v1.ProjectR\aproject\"\x15\n" + - "\x13ListProjectsRequest\"G\n" + - "\x14ListProjectsResponse\x12/\n" + - "\bprojects\x18\x01 \x03(\v2\x13.session.v1.ProjectR\bprojects\"\\\n" + - "\x14UpdateProjectRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + - "\vdescription\x18\x03 \x01(\tR\vdescription\"F\n" + - "\x15UpdateProjectResponse\x12-\n" + - "\aproject\x18\x01 \x01(\v2\x13.session.v1.ProjectR\aproject\"&\n" + - "\x14DeleteProjectRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"1\n" + - "\x15DeleteProjectResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\"`\n" + - "\x1eAssignSessionsToProjectRequest\x12\x1d\n" + - "\n" + - "project_id\x18\x01 \x01(\tR\tprojectId\x12\x1f\n" + - "\vsession_ids\x18\x02 \x03(\tR\n" + - "sessionIds\"F\n" + - "\x1fAssignSessionsToProjectResponse\x12#\n" + - "\rupdated_count\x18\x01 \x01(\x05R\fupdatedCount\"\x92\x01\n" + - "\x13ListBranchesRequest\x12\x1b\n" + - "\trepo_path\x18\x01 \x01(\tR\brepoPath\x12\x16\n" + - "\x06filter\x18\x02 \x01(\tR\x06filter\x12\x1f\n" + - "\vmax_results\x18\x03 \x01(\x05R\n" + - "maxResults\x12%\n" + - "\x0einclude_remote\x18\x04 \x01(\bR\rincludeRemote\"q\n" + - "\x14ListBranchesResponse\x12\x1a\n" + - "\bbranches\x18\x01 \x03(\tR\bbranches\x12\x1f\n" + - "\vtotal_count\x18\x02 \x01(\x05R\n" + - "totalCount\x12\x1c\n" + - "\ttruncated\x18\x03 \x01(\bR\ttruncated\"]\n" + - "\x1aGetTerminalSnapshotRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12 \n" + - "\flast_n_lines\x18\x02 \x01(\x05R\n" + - "lastNLines\"R\n" + - "\x1bGetTerminalSnapshotResponse\x12\x18\n" + - "\acontent\x18\x01 \x01(\tR\acontent\x12\x19\n" + - "\bis_empty\x18\x02 \x01(\bR\aisEmpty\"m\n" + - "\x15WriteToSessionRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x14\n" + - "\x05input\x18\x02 \x01(\tR\x05input\x12\x1f\n" + - "\vpress_enter\x18\x03 \x01(\bR\n" + - "pressEnter\"2\n" + - "\x16WriteToSessionResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\"\xae\x01\n" + - "\x0eClientLogEntry\x12\x14\n" + - "\x05level\x18\x01 \x01(\tR\x05level\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\x12\x1c\n" + - "\ttimestamp\x18\x03 \x01(\tR\ttimestamp\x12\x10\n" + - "\x03url\x18\x04 \x01(\tR\x03url\x12\x1d\n" + - "\n" + - "user_agent\x18\x05 \x01(\tR\tuserAgent\x12\x1d\n" + - "\n" + - "session_id\x18\x06 \x01(\tR\tsessionId\"N\n" + - "\x16LogClientEventsRequest\x124\n" + - "\aentries\x18\x01 \x03(\v2\x1a.session.v1.ClientLogEntryR\aentries\"\x19\n" + - "\x17LogClientEventsResponse\"F\n" + - "\x11ListErrorsRequest\x121\n" + - "\x14include_acknowledged\x18\x01 \x01(\bR\x13includeAcknowledged\"\xf6\x02\n" + - "\x10ErrorEventRecord\x12 \n" + - "\vfingerprint\x18\x01 \x01(\tR\vfingerprint\x12\x1d\n" + - "\n" + - "error_type\x18\x02 \x01(\tR\terrorType\x12\x18\n" + - "\amessage\x18\x03 \x01(\tR\amessage\x12\x1f\n" + - "\vstack_trace\x18\x04 \x01(\tR\n" + - "stackTrace\x12#\n" + - "\rrpc_procedure\x18\x05 \x01(\tR\frpcProcedure\x12)\n" + - "\x10occurrence_count\x18\x06 \x01(\x05R\x0foccurrenceCount\x129\n" + - "\n" + - "first_seen\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\tfirstSeen\x127\n" + - "\tlast_seen\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\blastSeen\x12\"\n" + - "\facknowledged\x18\t \x01(\bR\facknowledged\"J\n" + - "\x12ListErrorsResponse\x124\n" + - "\x06errors\x18\x01 \x03(\v2\x1c.session.v1.ErrorEventRecordR\x06errors\";\n" + - "\x17AcknowledgeErrorRequest\x12 \n" + - "\vfingerprint\x18\x01 \x01(\tR\vfingerprint\"\x1a\n" + - "\x18AcknowledgeErrorResponse\"/\n" + - "\x1dClearConversationStateRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"T\n" + - "\x1eClearConversationStateResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"\x82\x01\n" + - "\vFeatureFlag\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + - "\aenabled\x18\x02 \x01(\bR\aenabled\x12 \n" + - "\vdescription\x18\x03 \x01(\tR\vdescription\x12#\n" + - "\rstatus_detail\x18\x04 \x01(\tR\fstatusDetail\"\x18\n" + - "\x16GetFeatureFlagsRequest\"H\n" + - "\x17GetFeatureFlagsResponse\x12-\n" + - "\x05flags\x18\x01 \x03(\v2\x17.session.v1.FeatureFlagR\x05flags\"\x16\n" + - "\x14GetHookStatusRequest\"\xdb\x01\n" + - "\x15GetHookStatusResponse\x12'\n" + - "\x0frules_installed\x18\x01 \x01(\bR\x0erulesInstalled\x127\n" + - "\x17notifications_installed\x18\x02 \x01(\bR\x16notificationsInstalled\x12'\n" + - "\x0frules_available\x18\x03 \x01(\bR\x0erulesAvailable\x127\n" + - "\x17notifications_available\x18\x04 \x01(\bR\x16notificationsAvailable\"o\n" + - "\x13InstallHooksRequest\x12#\n" + - "\rinstall_rules\x18\x01 \x01(\bR\finstallRules\x123\n" + - "\x15install_notifications\x18\x02 \x01(\bR\x14installNotifications\"m\n" + - "\x14InstallHooksResponse\x129\n" + - "\x06status\x18\x01 \x01(\v2!.session.v1.GetHookStatusResponseR\x06status\x12\x1a\n" + - "\bmessages\x18\x02 \x03(\tR\bmessages\"H\n" + - "\x18UpdateFeatureFlagRequest\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + - "\aenabled\x18\x02 \x01(\bR\aenabled\"H\n" + - "\x19UpdateFeatureFlagResponse\x12+\n" + - "\x04flag\x18\x01 \x01(\v2\x17.session.v1.FeatureFlagR\x04flag\"\x9d\x03\n" + - "\x10EscapeEventProto\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + - "\n" + - "session_id\x18\x02 \x01(\tR\tsessionId\x12\x14\n" + - "\x05stage\x18\x03 \x01(\tR\x05stage\x12#\n" + - "\rsequence_type\x18\x04 \x01(\tR\fsequenceType\x12)\n" + - "\x10sequence_subtype\x18\x05 \x01(\tR\x0fsequenceSubtype\x12\x1f\n" + - "\vbyte_length\x18\x06 \x01(\x05R\n" + - "byteLength\x12!\n" + - "\fpayload_hash\x18\a \x01(\tR\vpayloadHash\x12\x1b\n" + - "\traw_bytes\x18\b \x01(\fR\brawBytes\x12\x18\n" + - "\amangled\x18\t \x01(\bR\amangled\x12\x1f\n" + - "\vmangle_type\x18\n" + - " \x01(\tR\n" + - "mangleType\x127\n" + - "\twall_time\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\bwallTime\x12\x1f\n" + - "\vsession_seq\x18\f \x01(\x03R\n" + - "sessionSeq\"\xc8\x02\n" + - "\x1bQueryEscapeAnalyticsRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x14\n" + - "\x05stage\x18\x02 \x01(\tR\x05stage\x12#\n" + - "\rsequence_type\x18\x03 \x01(\tR\fsequenceType\x12!\n" + - "\fmangled_only\x18\x04 \x01(\bR\vmangledOnly\x129\n" + - "\n" + - "start_time\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tstartTime\x125\n" + - "\bend_time\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\aendTime\x12\x1b\n" + - "\tpage_size\x18\a \x01(\x05R\bpageSize\x12\x1d\n" + - "\n" + - "page_token\x18\b \x01(\tR\tpageToken\"\x9d\x01\n" + - "\x1cQueryEscapeAnalyticsResponse\x124\n" + - "\x06events\x18\x01 \x03(\v2\x1c.session.v1.EscapeEventProtoR\x06events\x12&\n" + - "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12\x1f\n" + - "\vtotal_count\x18\x03 \x01(\x05R\n" + - "totalCount\"u\n" + - "\x13EscapeSequenceCount\x12#\n" + - "\rsequence_type\x18\x01 \x01(\tR\fsequenceType\x12\x14\n" + - "\x05count\x18\x02 \x01(\x03R\x05count\x12#\n" + - "\rmangled_count\x18\x03 \x01(\x03R\fmangledCount\"\xb3\x01\n" + - " GetEscapeAnalyticsSummaryRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x129\n" + - "\n" + - "start_time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tstartTime\x125\n" + - "\bend_time\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\aendTime\"\xd1\x01\n" + - "!GetEscapeAnalyticsSummaryResponse\x12=\n" + - "\thistogram\x18\x01 \x03(\v2\x1f.session.v1.EscapeSequenceCountR\thistogram\x12'\n" + - "\x0ftotal_sequences\x18\x02 \x01(\x03R\x0etotalSequences\x12#\n" + - "\rtotal_mangled\x18\x03 \x01(\x03R\ftotalMangled\x12\x1f\n" + - "\vmangle_rate\x18\x04 \x01(\x01R\n" + - "mangleRate\"\xc0\x01\n" + - "&GetEscapeAnalyticsGlobalSummaryRequest\x12>\n" + - "\n" + - "start_time\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampH\x00R\tstartTime\x88\x01\x01\x12:\n" + - "\bend_time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampH\x01R\aendTime\x88\x01\x01B\r\n" + - "\v_start_timeB\v\n" + - "\t_end_time\"\x9a\x02\n" + - "'GetEscapeAnalyticsGlobalSummaryResponse\x12=\n" + - "\thistogram\x18\x01 \x03(\v2\x1f.session.v1.EscapeSequenceCountR\thistogram\x12'\n" + - "\x0ftotal_sequences\x18\x02 \x01(\x03R\x0etotalSequences\x12#\n" + - "\rtotal_mangled\x18\x03 \x01(\x03R\ftotalMangled\x12\x1f\n" + - "\vmangle_rate\x18\x04 \x01(\x01R\n" + - "mangleRate\x12A\n" + - "\vper_session\x18\x05 \x03(\v2 .session.v1.SessionEscapeSummaryR\n" + - "perSession\"\xa4\x01\n" + - "\x14SessionEscapeSummary\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12'\n" + - "\x0ftotal_sequences\x18\x02 \x01(\x03R\x0etotalSequences\x12#\n" + - "\rtotal_mangled\x18\x03 \x01(\x03R\ftotalMangled\x12\x1f\n" + - "\vmangle_rate\x18\x04 \x01(\x01R\n" + - "mangleRate\"\x81\x01\n" + - "\x11SpawnShellRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n" + - "\acommand\x18\x03 \x01(\tR\acommand\x12\x1f\n" + - "\vworking_dir\x18\x04 \x01(\tR\n" + - "workingDir\"=\n" + - "\x12SpawnShellResponse\x12'\n" + - "\x05shell\x18\x01 \x01(\v2\x11.session.v1.ShellR\x05shell\"L\n" + - "\x10StopShellRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + - "\bshell_id\x18\x02 \x01(\tR\ashellId\"G\n" + - "\x11StopShellResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"O\n" + - "\x13RestartShellRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + - "\bshell_id\x18\x02 \x01(\tR\ashellId\"J\n" + - "\x14RestartShellResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"2\n" + - "\x11ListShellsRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\"?\n" + - "\x12ListShellsResponse\x12)\n" + - "\x06shells\x18\x01 \x03(\v2\x11.session.v1.ShellR\x06shells\"N\n" + - "\x12DeleteShellRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + - "\bshell_id\x18\x02 \x01(\tR\ashellId\"I\n" + - "\x13DeleteShellResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\"\xb7\x02\n" + - "\x1cGenerateSuggestedRuleRequest\x124\n" + - "\x06source\x18\x01 \x01(\x0e2\x1c.session.v1.SuggestionSourceR\x06source\x12$\n" + - "\vwindow_days\x18\x02 \x01(\x05H\x00R\n" + - "windowDays\x88\x01\x01\x12%\n" + - "\x0ecommand_sample\x18\x03 \x01(\tR\rcommandSample\x12*\n" + - "\x11analytics_item_id\x18\x04 \x01(\tR\x0fanalyticsItemId\x12(\n" + - "\x10tool_name_filter\x18\x05 \x01(\tR\x0etoolNameFilter\x12.\n" + - "\x13program_name_filter\x18\x06 \x01(\tR\x11programNameFilterB\x0e\n" + - "\f_window_days\"a\n" + - "\x1dGenerateSuggestedRuleResponse\x12@\n" + - "\vsuggestions\x18\x01 \x03(\v2\x1e.session.v1.SuggestedRuleProtoR\vsuggestions\"A\n" + - "\x17HibernateSessionRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" + - "\x06reason\x18\x02 \x01(\tR\x06reason\"I\n" + - "\x18HibernateSessionResponse\x12-\n" + - "\asession\x18\x01 \x01(\v2\x13.session.v1.SessionR\asession\"0\n" + - "\x1eResumeHibernatedSessionRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"P\n" + - "\x1fResumeHibernatedSessionResponse\x12-\n" + - "\asession\x18\x01 \x01(\v2\x13.session.v1.SessionR\asession\"-\n" + - "\x1bResumeCrashedSessionRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"M\n" + - "\x1cResumeCrashedSessionResponse\x12-\n" + - "\asession\x18\x01 \x01(\v2\x13.session.v1.SessionR\asession\"9\n" + - "\x14ValidateRulesRequest\x12!\n" + - "\fyaml_content\x18\x01 \x01(\tR\vyamlContent\"\x91\x01\n" + - "\x15ValidateRulesResponse\x126\n" + - "\aresults\x18\x01 \x03(\v2\x1c.session.v1.ParsedRuleResultR\aresults\x12\x1f\n" + - "\vvalid_count\x18\x02 \x01(\x05R\n" + - "validCount\x12\x1f\n" + - "\verror_count\x18\x03 \x01(\x05R\n" + - "errorCount\"\x98\x01\n" + - "\x10ParsedRuleResult\x121\n" + - "\x04rule\x18\x01 \x01(\v2\x1d.session.v1.ApprovalRuleProtoR\x04rule\x12\x16\n" + - "\x06errors\x18\x02 \x03(\tR\x06errors\x12\x14\n" + - "\x05valid\x18\x03 \x01(\bR\x05valid\x12#\n" + - "\roriginal_name\x18\x04 \x01(\tR\foriginalName\"/\n" + - "\x12ExportRulesRequest\x12\x19\n" + - "\brule_ids\x18\x01 \x03(\tR\aruleIds\"8\n" + - "\x13ExportRulesResponse\x12!\n" + - "\fyaml_content\x18\x01 \x01(\tR\vyamlContent\"\x80\x01\n" + - "\x16BulkUpsertRulesRequest\x123\n" + - "\x05rules\x18\x01 \x03(\v2\x1d.session.v1.ApprovalRuleProtoR\x05rules\x121\n" + - "\x14overwrite_duplicates\x18\x02 \x01(\bR\x13overwriteDuplicates\"\x7f\n" + - "\x17BulkUpsertRulesResponse\x12\x18\n" + - "\acreated\x18\x01 \x01(\x05R\acreated\x12\x18\n" + - "\aupdated\x18\x02 \x01(\x05R\aupdated\x12\x18\n" + - "\askipped\x18\x03 \x01(\x05R\askipped\x12\x16\n" + - "\x06errors\x18\x04 \x03(\tR\x06errors\"\x1b\n" + - "\x19GetConfigFileRulesRequest\"n\n" + - "\x1aGetConfigFileRulesResponse\x123\n" + - "\x05rules\x18\x01 \x03(\v2\x1d.session.v1.ApprovalRuleProtoR\x05rules\x12\x1b\n" + - "\tfile_path\x18\x02 \x01(\tR\bfilePath\"l\n" + - "\x1cSaveRulesToConfigFileRequest\x12\x19\n" + - "\brule_ids\x18\x01 \x03(\tR\aruleIds\x121\n" + - "\x04rule\x18\x02 \x01(\v2\x1d.session.v1.ApprovalRuleProtoR\x04rule\"<\n" + - "\x1dSaveRulesToConfigFileResponse\x12\x1b\n" + - "\tfile_path\x18\x01 \x01(\tR\bfilePath\"\xf8\x04\n" + - "\rWorkflowProto\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + - "\x04slug\x18\x02 \x01(\tR\x04slug\x12\x12\n" + - "\x04name\x18\x03 \x01(\tR\x04name\x12 \n" + - "\vdescription\x18\x04 \x01(\tR\vdescription\x12\x18\n" + - "\acommand\x18\x05 \x01(\tR\acommand\x12)\n" + - "\x10target_directory\x18\x06 \x01(\tR\x0ftargetDirectory\x12%\n" + - "\x0einput_template\x18\a \x01(\tR\rinputTemplate\x12!\n" + - "\fsession_type\x18\b \x01(\tR\vsessionType\x12\x14\n" + - "\x05model\x18\t \x01(\tR\x05model\x12\x1d\n" + - "\n" + - "agent_type\x18\n" + - " \x01(\tR\tagentType\x12'\n" + - "\x0fcron_expression\x18\v \x01(\tR\x0ecronExpression\x12!\n" + - "\fcron_enabled\x18\f \x01(\bR\vcronEnabled\x129\n" + - "\n" + - "created_at\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + - "\n" + - "updated_at\x18\x0e \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12(\n" + - "\rkeep_sessions\x18\x0f \x01(\x05H\x00R\fkeepSessions\x88\x01\x01\x123\n" + - "\x13archive_after_hours\x18\x10 \x01(\x05H\x01R\x11archiveAfterHours\x88\x01\x01B\x10\n" + - "\x0e_keep_sessionsB\x16\n" + - "\x14_archive_after_hours\"\xfa\x03\n" + - "\x15CreateWorkflowRequest\x12\x12\n" + - "\x04slug\x18\x01 \x01(\tR\x04slug\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + - "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x18\n" + - "\acommand\x18\x04 \x01(\tR\acommand\x12)\n" + - "\x10target_directory\x18\x05 \x01(\tR\x0ftargetDirectory\x12%\n" + - "\x0einput_template\x18\x06 \x01(\tR\rinputTemplate\x12!\n" + - "\fsession_type\x18\a \x01(\tR\vsessionType\x12\x14\n" + - "\x05model\x18\b \x01(\tR\x05model\x12\x1d\n" + - "\n" + - "agent_type\x18\t \x01(\tR\tagentType\x12'\n" + - "\x0fcron_expression\x18\n" + - " \x01(\tR\x0ecronExpression\x12!\n" + - "\fcron_enabled\x18\v \x01(\bR\vcronEnabled\x12(\n" + - "\rkeep_sessions\x18\f \x01(\x05H\x00R\fkeepSessions\x88\x01\x01\x123\n" + - "\x13archive_after_hours\x18\r \x01(\x05H\x01R\x11archiveAfterHours\x88\x01\x01B\x10\n" + - "\x0e_keep_sessionsB\x16\n" + - "\x14_archive_after_hours\"O\n" + - "\x16CreateWorkflowResponse\x125\n" + - "\bworkflow\x18\x01 \x01(\v2\x19.session.v1.WorkflowProtoR\bworkflow\"\xc4\x05\n" + - "\x15UpdateWorkflowRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n" + - "\x04name\x18\x02 \x01(\tH\x00R\x04name\x88\x01\x01\x12%\n" + - "\vdescription\x18\x03 \x01(\tH\x01R\vdescription\x88\x01\x01\x12\x1d\n" + - "\acommand\x18\x04 \x01(\tH\x02R\acommand\x88\x01\x01\x12.\n" + - "\x10target_directory\x18\x05 \x01(\tH\x03R\x0ftargetDirectory\x88\x01\x01\x12*\n" + - "\x0einput_template\x18\x06 \x01(\tH\x04R\rinputTemplate\x88\x01\x01\x12&\n" + - "\fsession_type\x18\a \x01(\tH\x05R\vsessionType\x88\x01\x01\x12\x19\n" + - "\x05model\x18\b \x01(\tH\x06R\x05model\x88\x01\x01\x12\"\n" + - "\n" + - "agent_type\x18\t \x01(\tH\aR\tagentType\x88\x01\x01\x12,\n" + - "\x0fcron_expression\x18\n" + - " \x01(\tH\bR\x0ecronExpression\x88\x01\x01\x12&\n" + - "\fcron_enabled\x18\v \x01(\bH\tR\vcronEnabled\x88\x01\x01\x12(\n" + - "\rkeep_sessions\x18\f \x01(\x05H\n" + - "R\fkeepSessions\x88\x01\x01\x123\n" + - "\x13archive_after_hours\x18\r \x01(\x05H\vR\x11archiveAfterHours\x88\x01\x01B\a\n" + - "\x05_nameB\x0e\n" + - "\f_descriptionB\n" + - "\n" + - "\b_commandB\x13\n" + - "\x11_target_directoryB\x11\n" + - "\x0f_input_templateB\x0f\n" + - "\r_session_typeB\b\n" + - "\x06_modelB\r\n" + - "\v_agent_typeB\x12\n" + - "\x10_cron_expressionB\x0f\n" + - "\r_cron_enabledB\x10\n" + - "\x0e_keep_sessionsB\x16\n" + - "\x14_archive_after_hours\"O\n" + - "\x16UpdateWorkflowResponse\x125\n" + - "\bworkflow\x18\x01 \x01(\v2\x19.session.v1.WorkflowProtoR\bworkflow\"'\n" + - "\x15DeleteWorkflowRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"\x18\n" + - "\x16DeleteWorkflowResponse\"\x16\n" + - "\x14ListWorkflowsRequest\"P\n" + - "\x15ListWorkflowsResponse\x127\n" + - "\tworkflows\x18\x01 \x03(\v2\x19.session.v1.WorkflowProtoR\tworkflows\"6\n" + - "\x12RunWorkflowRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n" + - "\x03arg\x18\x02 \x01(\tR\x03arg\"E\n" + - "\x18ListSlashCommandsRequest\x12)\n" + - "\x10target_directory\x18\x01 \x01(\tR\x0ftargetDirectory\"v\n" + - "\x10SlashCommandInfo\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" + - "\x05title\x18\x02 \x01(\tR\x05title\x12 \n" + - "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x16\n" + - "\x06source\x18\x04 \x01(\tR\x06source\"U\n" + - "\x19ListSlashCommandsResponse\x128\n" + - "\bcommands\x18\x01 \x03(\v2\x1c.session.v1.SlashCommandInfoR\bcommands\"4\n" + - "\x13RunWorkflowResponse\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\"\x8a\x02\n" + - "\x13DetectionEventProto\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x128\n" + - "\ttimestamp\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12'\n" + - "\x0fmatched_pattern\x18\x03 \x01(\tR\x0ematchedPattern\x12)\n" + - "\x10matched_category\x18\x04 \x01(\tR\x0fmatchedCategory\x12#\n" + - "\rresult_status\x18\x05 \x01(\x05R\fresultStatus\x12!\n" + - "\ftail_snippet\x18\x06 \x01(\tR\vtailSnippet\"P\n" + - "\x19GetDetectionEventsRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x14\n" + - "\x05limit\x18\x02 \x01(\x05R\x05limit\"U\n" + - "\x1aGetDetectionEventsResponse\x127\n" + - "\x06events\x18\x01 \x03(\v2\x1f.session.v1.DetectionEventProtoR\x06events\"6\n" + - "\x15ArchiveSessionRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\"\x18\n" + - "\x16ArchiveSessionResponse\"8\n" + - "\x17UnarchiveSessionRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\"\x1a\n" + - "\x18UnarchiveSessionResponse\"A\n" + - "\x1eArchiveWorkflowSessionsRequest\x12\x1f\n" + - "\vworkflow_id\x18\x01 \x01(\tR\n" + - "workflowId\"H\n" + - "\x1fArchiveWorkflowSessionsResponse\x12%\n" + - "\x0earchived_count\x18\x01 \x01(\x05R\rarchivedCount\"F\n" + - "#DeleteWorkflowFailedSessionsRequest\x12\x1f\n" + - "\vworkflow_id\x18\x01 \x01(\tR\n" + - "workflowId\"K\n" + - "$DeleteWorkflowFailedSessionsResponse\x12#\n" + - "\rdeleted_count\x18\x01 \x01(\x05R\fdeletedCount\"9\n" + - "\x18GetProviderLimitsRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\"\xe0\x05\n" + - "\x13ProviderLimitsProto\x12\x1a\n" + - "\bprovider\x18\x01 \x01(\tR\bprovider\x12\x14\n" + - "\x05model\x18\x02 \x01(\tR\x05model\x12%\n" + - "\x0erequests_limit\x18\x03 \x01(\x05R\rrequestsLimit\x12-\n" + - "\x12requests_remaining\x18\x04 \x01(\x05R\x11requestsRemaining\x12A\n" + - "\x0erequests_reset\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\rrequestsReset\x12!\n" + - "\ftokens_limit\x18\x06 \x01(\x05R\vtokensLimit\x12)\n" + - "\x10tokens_remaining\x18\a \x01(\x05R\x0ftokensRemaining\x12=\n" + - "\ftokens_reset\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\vtokensReset\x12.\n" + - "\x13context_tokens_used\x18\t \x01(\x05R\x11contextTokensUsed\x12,\n" + - "\x12context_tokens_max\x18\n" + - " \x01(\x05R\x10contextTokensMax\x120\n" + - "\x14session_input_tokens\x18\v \x01(\x05R\x12sessionInputTokens\x122\n" + - "\x15session_output_tokens\x18\f \x01(\x05R\x13sessionOutputTokens\x12,\n" + - "\x12estimated_cost_usd\x18\r \x01(\x01R\x10estimatedCostUsd\x12\x1c\n" + - "\tavailable\x18\x0e \x01(\bR\tavailable\x12&\n" + - "\x0flast_error_code\x18\x0f \x01(\tR\rlastErrorCode\x129\n" + - "\n" + - "fetched_at\x18\x10 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\"T\n" + - "\x19GetProviderLimitsResponse\x127\n" + - "\x06limits\x18\x01 \x01(\v2\x1f.session.v1.ProviderLimitsProtoR\x06limits2\xe6V\n" + - "\x0eSessionService\x12S\n" + - "\fListSessions\x12\x1f.session.v1.ListSessionsRequest\x1a .session.v1.ListSessionsResponse\"\x00\x12M\n" + - "\n" + - "GetSession\x12\x1d.session.v1.GetSessionRequest\x1a\x1e.session.v1.GetSessionResponse\"\x00\x12V\n" + - "\rCreateSession\x12 .session.v1.CreateSessionRequest\x1a!.session.v1.CreateSessionResponse\"\x00\x12V\n" + - "\rUpdateSession\x12 .session.v1.UpdateSessionRequest\x1a!.session.v1.UpdateSessionResponse\"\x00\x12V\n" + - "\rDeleteSession\x12 .session.v1.DeleteSessionRequest\x1a!.session.v1.DeleteSessionResponse\"\x00\x12O\n" + - "\rWatchSessions\x12 .session.v1.WatchSessionsRequest\x1a\x18.session.v1.SessionEvent\"\x000\x01\x12J\n" + - "\x0eStreamTerminal\x12\x18.session.v1.TerminalData\x1a\x18.session.v1.TerminalData\"\x00(\x010\x01\x12Y\n" + - "\x0eGetSessionDiff\x12!.session.v1.GetSessionDiffRequest\x1a\".session.v1.GetSessionDiffResponse\"\x00\x12S\n" + - "\fGetVCSStatus\x12\x1f.session.v1.GetVCSStatusRequest\x1a .session.v1.GetVCSStatusResponse\"\x00\x12Y\n" + - "\x0eGetReviewQueue\x12!.session.v1.GetReviewQueueRequest\x1a\".session.v1.GetReviewQueueResponse\"\x00\x12e\n" + - "\x12AcknowledgeSession\x12%.session.v1.AcknowledgeSessionRequest\x1a&.session.v1.AcknowledgeSessionResponse\"\x00\x12D\n" + - "\aGetLogs\x12\x1a.session.v1.GetLogsRequest\x1a\x1b.session.v1.GetLogsResponse\"\x00\x12Y\n" + - "\x10WatchReviewQueue\x12#.session.v1.WatchReviewQueueRequest\x1a\x1c.session.v1.ReviewQueueEvent\"\x000\x01\x12e\n" + - "\x12LogUserInteraction\x12%.session.v1.LogUserInteractionRequest\x1a&.session.v1.LogUserInteractionResponse\"\x00\x12\\\n" + - "\x0fGetClaudeConfig\x12\".session.v1.GetClaudeConfigRequest\x1a#.session.v1.GetClaudeConfigResponse\"\x00\x12b\n" + - "\x11ListClaudeConfigs\x12$.session.v1.ListClaudeConfigsRequest\x1a%.session.v1.ListClaudeConfigsResponse\"\x00\x12e\n" + - "\x12UpdateClaudeConfig\x12%.session.v1.UpdateClaudeConfigRequest\x1a&.session.v1.UpdateClaudeConfigResponse\"\x00\x12b\n" + - "\x11ListClaudeHistory\x12$.session.v1.ListClaudeHistoryRequest\x1a%.session.v1.ListClaudeHistoryResponse\"\x00\x12q\n" + - "\x16GetClaudeHistoryDetail\x12).session.v1.GetClaudeHistoryDetailRequest\x1a*.session.v1.GetClaudeHistoryDetailResponse\"\x00\x12w\n" + - "\x18GetClaudeHistoryMessages\x12+.session.v1.GetClaudeHistoryMessagesRequest\x1a,.session.v1.GetClaudeHistoryMessagesResponse\"\x00\x12h\n" + - "\x13SearchClaudeHistory\x12&.session.v1.SearchClaudeHistoryRequest\x1a'.session.v1.SearchClaudeHistoryResponse\"\x00\x12J\n" + - "\tGetPRInfo\x12\x1c.session.v1.GetPRInfoRequest\x1a\x1d.session.v1.GetPRInfoResponse\"\x00\x12V\n" + - "\rGetPRComments\x12 .session.v1.GetPRCommentsRequest\x1a!.session.v1.GetPRCommentsResponse\"\x00\x12V\n" + - "\rPostPRComment\x12 .session.v1.PostPRCommentRequest\x1a!.session.v1.PostPRCommentResponse\"\x00\x12D\n" + - "\aMergePR\x12\x1a.session.v1.MergePRRequest\x1a\x1b.session.v1.MergePRResponse\"\x00\x12D\n" + - "\aClosePR\x12\x1a.session.v1.ClosePRRequest\x1a\x1b.session.v1.ClosePRResponse\"\x00\x12_\n" + - "\x10SendNotification\x12#.session.v1.SendNotificationRequest\x1a$.session.v1.SendNotificationResponse\"\x00\x12P\n" + - "\vFocusWindow\x12\x1e.session.v1.FocusWindowRequest\x1a\x1f.session.v1.FocusWindowResponse\"\x00\x12V\n" + - "\rRenameSession\x12 .session.v1.RenameSessionRequest\x1a!.session.v1.RenameSessionResponse\"\x00\x12Y\n" + - "\x0eRestartSession\x12!.session.v1.RestartSessionRequest\x1a\".session.v1.RestartSessionResponse\"\x00\x12_\n" + - "\x10GetWorkspaceInfo\x12#.session.v1.GetWorkspaceInfoRequest\x1a$.session.v1.GetWorkspaceInfoResponse\"\x00\x12k\n" + - "\x14ListWorkspaceTargets\x12'.session.v1.ListWorkspaceTargetsRequest\x1a(.session.v1.ListWorkspaceTargetsResponse\"\x00\x12\\\n" + - "\x0fSwitchWorkspace\x12\".session.v1.SwitchWorkspaceRequest\x1a#.session.v1.SwitchWorkspaceResponse\"\x00\x12\\\n" + - "\x0fResolveApproval\x12\".session.v1.ResolveApprovalRequest\x1a#.session.v1.ResolveApprovalResponse\"\x00\x12k\n" + - "\x14ListPendingApprovals\x12'.session.v1.ListPendingApprovalsRequest\x1a(.session.v1.ListPendingApprovalsResponse\"\x00\x12h\n" + - "\x13CreateDebugSnapshot\x12&.session.v1.CreateDebugSnapshotRequest\x1a'.session.v1.CreateDebugSnapshotResponse\"\x00\x12q\n" + - "\x16GetNotificationHistory\x12).session.v1.GetNotificationHistoryRequest\x1a*.session.v1.GetNotificationHistoryResponse\"\x00\x12k\n" + - "\x14MarkNotificationRead\x12'.session.v1.MarkNotificationReadRequest\x1a(.session.v1.MarkNotificationReadResponse\"\x00\x12w\n" + - "\x18ClearNotificationHistory\x12+.session.v1.ClearNotificationHistoryRequest\x1a,.session.v1.ClearNotificationHistoryResponse\"\x00\x12b\n" + - "\x11ListApprovalRules\x12$.session.v1.ListApprovalRulesRequest\x1a%.session.v1.ListApprovalRulesResponse\"\x00\x12e\n" + - "\x12UpsertApprovalRule\x12%.session.v1.UpsertApprovalRuleRequest\x1a&.session.v1.UpsertApprovalRuleResponse\"\x00\x12e\n" + - "\x12DeleteApprovalRule\x12%.session.v1.DeleteApprovalRuleRequest\x1a&.session.v1.DeleteApprovalRuleResponse\"\x00\x12k\n" + - "\x14GetApprovalAnalytics\x12'.session.v1.GetApprovalAnalyticsRequest\x1a(.session.v1.GetApprovalAnalyticsResponse\"\x00\x12h\n" + - "\x13GetProgramAnalytics\x12&.session.v1.GetProgramAnalyticsRequest\x1a'.session.v1.GetProgramAnalyticsResponse\"\x00\x12n\n" + - "\x15GenerateSuggestedRule\x12(.session.v1.GenerateSuggestedRuleRequest\x1a).session.v1.GenerateSuggestedRuleResponse\"\x00\x12V\n" + - "\rValidateRules\x12 .session.v1.ValidateRulesRequest\x1a!.session.v1.ValidateRulesResponse\"\x00\x12P\n" + - "\vExportRules\x12\x1e.session.v1.ExportRulesRequest\x1a\x1f.session.v1.ExportRulesResponse\"\x00\x12\\\n" + - "\x0fBulkUpsertRules\x12\".session.v1.BulkUpsertRulesRequest\x1a#.session.v1.BulkUpsertRulesResponse\"\x00\x12e\n" + - "\x12GetConfigFileRules\x12%.session.v1.GetConfigFileRulesRequest\x1a&.session.v1.GetConfigFileRulesResponse\"\x00\x12n\n" + - "\x15SaveRulesToConfigFile\x12(.session.v1.SaveRulesToConfigFileRequest\x1a).session.v1.SaveRulesToConfigFileResponse\"\x00\x12V\n" + - "\rListDatabases\x12 .session.v1.ListDatabasesRequest\x1a!.session.v1.ListDatabasesResponse\"\x00\x12e\n" + - "\x12GetCurrentDatabase\x12%.session.v1.GetCurrentDatabaseRequest\x1a&.session.v1.GetCurrentDatabaseResponse\"\x00\x12Y\n" + - "\x0eSwitchDatabase\x12!.session.v1.SwitchDatabaseRequest\x1a\".session.v1.SwitchDatabaseResponse\"\x00\x12V\n" + - "\rMergeDatabase\x12 .session.v1.MergeDatabaseRequest\x1a!.session.v1.MergeDatabaseResponse\"\x00\x12_\n" + - "\x10CreateCheckpoint\x12#.session.v1.CreateCheckpointRequest\x1a$.session.v1.CreateCheckpointResponse\"\x00\x12\\\n" + - "\x0fListCheckpoints\x12\".session.v1.ListCheckpointsRequest\x1a#.session.v1.ListCheckpointsResponse\"\x00\x12P\n" + - "\vForkSession\x12\x1e.session.v1.ForkSessionRequest\x1a\x1f.session.v1.ForkSessionResponse\"\x00\x12q\n" + - "\x16ClearConversationState\x12).session.v1.ClearConversationStateRequest\x1a*.session.v1.ClearConversationStateResponse\"\x00\x12J\n" + - "\tListFiles\x12\x1c.session.v1.ListFilesRequest\x1a\x1d.session.v1.ListFilesResponse\"\x00\x12Y\n" + - "\x0eGetFileContent\x12!.session.v1.GetFileContentRequest\x1a\".session.v1.GetFileContentResponse\"\x00\x12P\n" + - "\vSearchFiles\x12\x1e.session.v1.SearchFilesRequest\x1a\x1f.session.v1.SearchFilesResponse\"\x00\x12h\n" + - "\x13ListPathCompletions\x12&.session.v1.ListPathCompletionsRequest\x1a'.session.v1.ListPathCompletionsResponse\"\x00\x12e\n" + - "\x12GetSessionDefaults\x12%.session.v1.GetSessionDefaultsRequest\x1a&.session.v1.GetSessionDefaultsResponse\"\x00\x12\\\n" + - "\x0fResolveDefaults\x12\".session.v1.ResolveDefaultsRequest\x1a#.session.v1.ResolveDefaultsResponse\"\x00\x12q\n" + - "\x16PreviewDestinationPath\x12).session.v1.PreviewDestinationPathRequest\x1a*.session.v1.PreviewDestinationPathResponse\"\x00\x12k\n" + - "\x14UpdateGlobalDefaults\x12'.session.v1.UpdateGlobalDefaultsRequest\x1a(.session.v1.UpdateGlobalDefaultsResponse\"\x00\x12V\n" + - "\rUpsertProfile\x12 .session.v1.UpsertProfileRequest\x1a!.session.v1.UpsertProfileResponse\"\x00\x12V\n" + - "\rDeleteProfile\x12 .session.v1.DeleteProfileRequest\x1a!.session.v1.DeleteProfileResponse\"\x00\x12h\n" + - "\x13UpsertDirectoryRule\x12&.session.v1.UpsertDirectoryRuleRequest\x1a'.session.v1.UpsertDirectoryRuleResponse\"\x00\x12h\n" + - "\x13DeleteDirectoryRule\x12&.session.v1.DeleteDirectoryRuleRequest\x1a'.session.v1.DeleteDirectoryRuleResponse\"\x00\x12V\n" + - "\rListWorktrees\x12 .session.v1.ListWorktreesRequest\x1a!.session.v1.ListWorktreesResponse\"\x00\x12b\n" + - "\x11ListPromptHistory\x12$.session.v1.ListPromptHistoryRequest\x1a%.session.v1.ListPromptHistoryResponse\"\x00\x12h\n" + - "\x13DeletePromptHistory\x12&.session.v1.DeletePromptHistoryRequest\x1a'.session.v1.DeletePromptHistoryResponse\"\x00\x12h\n" + - "\x13BatchCreateSessions\x12&.session.v1.BatchCreateSessionsRequest\x1a'.session.v1.BatchCreateSessionsResponse\"\x00\x12M\n" + - "\n" + - "RunOneShot\x12\x1d.session.v1.RunOneShotRequest\x1a\x1e.session.v1.RunOneShotResponse\"\x00\x12V\n" + - "\rCreateProject\x12 .session.v1.CreateProjectRequest\x1a!.session.v1.CreateProjectResponse\"\x00\x12S\n" + - "\fListProjects\x12\x1f.session.v1.ListProjectsRequest\x1a .session.v1.ListProjectsResponse\"\x00\x12V\n" + - "\rUpdateProject\x12 .session.v1.UpdateProjectRequest\x1a!.session.v1.UpdateProjectResponse\"\x00\x12V\n" + - "\rDeleteProject\x12 .session.v1.DeleteProjectRequest\x1a!.session.v1.DeleteProjectResponse\"\x00\x12t\n" + - "\x17AssignSessionsToProject\x12*.session.v1.AssignSessionsToProjectRequest\x1a+.session.v1.AssignSessionsToProjectResponse\"\x00\x12S\n" + - "\fListBranches\x12\x1f.session.v1.ListBranchesRequest\x1a .session.v1.ListBranchesResponse\"\x00\x12h\n" + - "\x13GetTerminalSnapshot\x12&.session.v1.GetTerminalSnapshotRequest\x1a'.session.v1.GetTerminalSnapshotResponse\"\x00\x12Y\n" + - "\x0eWriteToSession\x12!.session.v1.WriteToSessionRequest\x1a\".session.v1.WriteToSessionResponse\"\x00\x12\\\n" + - "\x0fLogClientEvents\x12\".session.v1.LogClientEventsRequest\x1a#.session.v1.LogClientEventsResponse\"\x00\x12M\n" + - "\n" + - "ListErrors\x12\x1d.session.v1.ListErrorsRequest\x1a\x1e.session.v1.ListErrorsResponse\"\x00\x12_\n" + - "\x10AcknowledgeError\x12#.session.v1.AcknowledgeErrorRequest\x1a$.session.v1.AcknowledgeErrorResponse\"\x00\x12\\\n" + - "\x0fGetFeatureFlags\x12\".session.v1.GetFeatureFlagsRequest\x1a#.session.v1.GetFeatureFlagsResponse\"\x00\x12b\n" + - "\x11UpdateFeatureFlag\x12$.session.v1.UpdateFeatureFlagRequest\x1a%.session.v1.UpdateFeatureFlagResponse\"\x00\x12k\n" + - "\x14QueryEscapeAnalytics\x12'.session.v1.QueryEscapeAnalyticsRequest\x1a(.session.v1.QueryEscapeAnalyticsResponse\"\x00\x12z\n" + - "\x19GetEscapeAnalyticsSummary\x12,.session.v1.GetEscapeAnalyticsSummaryRequest\x1a-.session.v1.GetEscapeAnalyticsSummaryResponse\"\x00\x12\x8c\x01\n" + - "\x1fGetEscapeAnalyticsGlobalSummary\x122.session.v1.GetEscapeAnalyticsGlobalSummaryRequest\x1a3.session.v1.GetEscapeAnalyticsGlobalSummaryResponse\"\x00\x12_\n" + - "\x10HibernateSession\x12#.session.v1.HibernateSessionRequest\x1a$.session.v1.HibernateSessionResponse\"\x00\x12t\n" + - "\x17ResumeHibernatedSession\x12*.session.v1.ResumeHibernatedSessionRequest\x1a+.session.v1.ResumeHibernatedSessionResponse\"\x00\x12k\n" + - "\x14ResumeCrashedSession\x12'.session.v1.ResumeCrashedSessionRequest\x1a(.session.v1.ResumeCrashedSessionResponse\"\x00\x12M\n" + - "\n" + - "SpawnShell\x12\x1d.session.v1.SpawnShellRequest\x1a\x1e.session.v1.SpawnShellResponse\"\x00\x12J\n" + - "\tStopShell\x12\x1c.session.v1.StopShellRequest\x1a\x1d.session.v1.StopShellResponse\"\x00\x12S\n" + - "\fRestartShell\x12\x1f.session.v1.RestartShellRequest\x1a .session.v1.RestartShellResponse\"\x00\x12M\n" + - "\n" + - "ListShells\x12\x1d.session.v1.ListShellsRequest\x1a\x1e.session.v1.ListShellsResponse\"\x00\x12P\n" + - "\vDeleteShell\x12\x1e.session.v1.DeleteShellRequest\x1a\x1f.session.v1.DeleteShellResponse\"\x00\x12Y\n" + - "\x0eCreateWorkflow\x12!.session.v1.CreateWorkflowRequest\x1a\".session.v1.CreateWorkflowResponse\"\x00\x12Y\n" + - "\x0eUpdateWorkflow\x12!.session.v1.UpdateWorkflowRequest\x1a\".session.v1.UpdateWorkflowResponse\"\x00\x12Y\n" + - "\x0eDeleteWorkflow\x12!.session.v1.DeleteWorkflowRequest\x1a\".session.v1.DeleteWorkflowResponse\"\x00\x12V\n" + - "\rListWorkflows\x12 .session.v1.ListWorkflowsRequest\x1a!.session.v1.ListWorkflowsResponse\"\x00\x12P\n" + - "\vRunWorkflow\x12\x1e.session.v1.RunWorkflowRequest\x1a\x1f.session.v1.RunWorkflowResponse\"\x00\x12e\n" + - "\x12GetDetectionEvents\x12%.session.v1.GetDetectionEventsRequest\x1a&.session.v1.GetDetectionEventsResponse\"\x00\x12b\n" + - "\x11ListSlashCommands\x12$.session.v1.ListSlashCommandsRequest\x1a%.session.v1.ListSlashCommandsResponse\"\x00\x12P\n" + - "\vListAliases\x12\x1e.session.v1.ListAliasesRequest\x1a\x1f.session.v1.ListAliasesResponse\"\x00\x12P\n" + - "\vUpsertAlias\x12\x1e.session.v1.UpsertAliasRequest\x1a\x1f.session.v1.UpsertAliasResponse\"\x00\x12P\n" + - "\vDeleteAlias\x12\x1e.session.v1.DeleteAliasRequest\x1a\x1f.session.v1.DeleteAliasResponse\"\x00\x12Y\n" + - "\x0eArchiveSession\x12!.session.v1.ArchiveSessionRequest\x1a\".session.v1.ArchiveSessionResponse\"\x00\x12_\n" + - "\x10UnarchiveSession\x12#.session.v1.UnarchiveSessionRequest\x1a$.session.v1.UnarchiveSessionResponse\"\x00\x12t\n" + - "\x17ArchiveWorkflowSessions\x12*.session.v1.ArchiveWorkflowSessionsRequest\x1a+.session.v1.ArchiveWorkflowSessionsResponse\"\x00\x12\x83\x01\n" + - "\x1cDeleteWorkflowFailedSessions\x12/.session.v1.DeleteWorkflowFailedSessionsRequest\x1a0.session.v1.DeleteWorkflowFailedSessionsResponse\"\x00\x12b\n" + - "\x11GetProviderLimits\x12$.session.v1.GetProviderLimitsRequest\x1a%.session.v1.GetProviderLimitsResponse\"\x00\x12V\n" + - "\rGetHookStatus\x12 .session.v1.GetHookStatusRequest\x1a!.session.v1.GetHookStatusResponse\"\x00\x12S\n" + - "\fInstallHooks\x12\x1f.session.v1.InstallHooksRequest\x1a .session.v1.InstallHooksResponse\"\x00B\xac\x01\n" + - "\x0ecom.session.v1B\fSessionProtoP\x01ZCgithub.com/tstapler/stapler-squad/gen/proto/go/session/v1;sessionv1\xa2\x02\x03SXX\xaa\x02\n" + - "Session.V1\xca\x02\n" + - "Session\\V1\xe2\x02\x16Session\\V1\\GPBMetadata\xea\x02\vSession::V1b\x06proto3" - -var ( - file_session_v1_session_proto_rawDescOnce sync.Once - file_session_v1_session_proto_rawDescData []byte -) - -func file_session_v1_session_proto_rawDescGZIP() []byte { - file_session_v1_session_proto_rawDescOnce.Do(func() { - file_session_v1_session_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_session_v1_session_proto_rawDesc), len(file_session_v1_session_proto_rawDesc))) - }) - return file_session_v1_session_proto_rawDescData -} - -var file_session_v1_session_proto_msgTypes = make([]protoimpl.MessageInfo, 268) -var file_session_v1_session_proto_goTypes = []any{ - (*ListSessionsRequest)(nil), // 0: session.v1.ListSessionsRequest - (*ListSessionsResponse)(nil), // 1: session.v1.ListSessionsResponse - (*GetSessionRequest)(nil), // 2: session.v1.GetSessionRequest - (*GetSessionResponse)(nil), // 3: session.v1.GetSessionResponse - (*CreateSessionRequest)(nil), // 4: session.v1.CreateSessionRequest - (*CreateSessionResponse)(nil), // 5: session.v1.CreateSessionResponse - (*UpdateSessionRequest)(nil), // 6: session.v1.UpdateSessionRequest - (*UpdateSessionResponse)(nil), // 7: session.v1.UpdateSessionResponse - (*DeleteSessionRequest)(nil), // 8: session.v1.DeleteSessionRequest - (*DeleteSessionResponse)(nil), // 9: session.v1.DeleteSessionResponse - (*WatchSessionsRequest)(nil), // 10: session.v1.WatchSessionsRequest - (*GetSessionDiffRequest)(nil), // 11: session.v1.GetSessionDiffRequest - (*GetSessionDiffResponse)(nil), // 12: session.v1.GetSessionDiffResponse - (*GetVCSStatusRequest)(nil), // 13: session.v1.GetVCSStatusRequest - (*GetVCSStatusResponse)(nil), // 14: session.v1.GetVCSStatusResponse - (*GetReviewQueueRequest)(nil), // 15: session.v1.GetReviewQueueRequest - (*GetReviewQueueResponse)(nil), // 16: session.v1.GetReviewQueueResponse - (*AcknowledgeSessionRequest)(nil), // 17: session.v1.AcknowledgeSessionRequest - (*AcknowledgeSessionResponse)(nil), // 18: session.v1.AcknowledgeSessionResponse - (*GetLogsRequest)(nil), // 19: session.v1.GetLogsRequest - (*GetLogsResponse)(nil), // 20: session.v1.GetLogsResponse - (*LogEntry)(nil), // 21: session.v1.LogEntry - (*WatchReviewQueueRequest)(nil), // 22: session.v1.WatchReviewQueueRequest - (*LogUserInteractionRequest)(nil), // 23: session.v1.LogUserInteractionRequest - (*LogUserInteractionResponse)(nil), // 24: session.v1.LogUserInteractionResponse - (*GetClaudeConfigRequest)(nil), // 25: session.v1.GetClaudeConfigRequest - (*GetClaudeConfigResponse)(nil), // 26: session.v1.GetClaudeConfigResponse - (*ListClaudeConfigsRequest)(nil), // 27: session.v1.ListClaudeConfigsRequest - (*ListClaudeConfigsResponse)(nil), // 28: session.v1.ListClaudeConfigsResponse - (*UpdateClaudeConfigRequest)(nil), // 29: session.v1.UpdateClaudeConfigRequest - (*UpdateClaudeConfigResponse)(nil), // 30: session.v1.UpdateClaudeConfigResponse - (*ClaudeConfigFile)(nil), // 31: session.v1.ClaudeConfigFile - (*ListClaudeHistoryRequest)(nil), // 32: session.v1.ListClaudeHistoryRequest - (*ListClaudeHistoryResponse)(nil), // 33: session.v1.ListClaudeHistoryResponse - (*GetClaudeHistoryDetailRequest)(nil), // 34: session.v1.GetClaudeHistoryDetailRequest - (*GetClaudeHistoryDetailResponse)(nil), // 35: session.v1.GetClaudeHistoryDetailResponse - (*ClaudeHistoryEntry)(nil), // 36: session.v1.ClaudeHistoryEntry - (*GetClaudeHistoryMessagesRequest)(nil), // 37: session.v1.GetClaudeHistoryMessagesRequest - (*GetClaudeHistoryMessagesResponse)(nil), // 38: session.v1.GetClaudeHistoryMessagesResponse - (*ClaudeMessage)(nil), // 39: session.v1.ClaudeMessage - (*SearchClaudeHistoryRequest)(nil), // 40: session.v1.SearchClaudeHistoryRequest - (*SearchClaudeHistoryResponse)(nil), // 41: session.v1.SearchClaudeHistoryResponse - (*SearchResult)(nil), // 42: session.v1.SearchResult - (*SearchSnippet)(nil), // 43: session.v1.SearchSnippet - (*HighlightRange)(nil), // 44: session.v1.HighlightRange - (*SearchResultMetadata)(nil), // 45: session.v1.SearchResultMetadata - (*GetPRInfoRequest)(nil), // 46: session.v1.GetPRInfoRequest - (*GetPRInfoResponse)(nil), // 47: session.v1.GetPRInfoResponse - (*GetPRCommentsRequest)(nil), // 48: session.v1.GetPRCommentsRequest - (*GetPRCommentsResponse)(nil), // 49: session.v1.GetPRCommentsResponse - (*PostPRCommentRequest)(nil), // 50: session.v1.PostPRCommentRequest - (*PostPRCommentResponse)(nil), // 51: session.v1.PostPRCommentResponse - (*MergePRRequest)(nil), // 52: session.v1.MergePRRequest - (*MergePRResponse)(nil), // 53: session.v1.MergePRResponse - (*ClosePRRequest)(nil), // 54: session.v1.ClosePRRequest - (*ClosePRResponse)(nil), // 55: session.v1.ClosePRResponse - (*SendNotificationRequest)(nil), // 56: session.v1.SendNotificationRequest - (*SendNotificationResponse)(nil), // 57: session.v1.SendNotificationResponse - (*FocusWindowRequest)(nil), // 58: session.v1.FocusWindowRequest - (*FocusWindowResponse)(nil), // 59: session.v1.FocusWindowResponse - (*RenameSessionRequest)(nil), // 60: session.v1.RenameSessionRequest - (*RenameSessionResponse)(nil), // 61: session.v1.RenameSessionResponse - (*RestartSessionRequest)(nil), // 62: session.v1.RestartSessionRequest - (*RestartSessionResponse)(nil), // 63: session.v1.RestartSessionResponse - (*GetWorkspaceInfoRequest)(nil), // 64: session.v1.GetWorkspaceInfoRequest - (*GetWorkspaceInfoResponse)(nil), // 65: session.v1.GetWorkspaceInfoResponse - (*ListWorkspaceTargetsRequest)(nil), // 66: session.v1.ListWorkspaceTargetsRequest - (*ListWorkspaceTargetsResponse)(nil), // 67: session.v1.ListWorkspaceTargetsResponse - (*SwitchWorkspaceRequest)(nil), // 68: session.v1.SwitchWorkspaceRequest - (*ResolveApprovalRequest)(nil), // 69: session.v1.ResolveApprovalRequest - (*ResolveApprovalResponse)(nil), // 70: session.v1.ResolveApprovalResponse - (*ListPendingApprovalsRequest)(nil), // 71: session.v1.ListPendingApprovalsRequest - (*ListPendingApprovalsResponse)(nil), // 72: session.v1.ListPendingApprovalsResponse - (*SwitchWorkspaceResponse)(nil), // 73: session.v1.SwitchWorkspaceResponse - (*CreateDebugSnapshotRequest)(nil), // 74: session.v1.CreateDebugSnapshotRequest - (*CreateDebugSnapshotResponse)(nil), // 75: session.v1.CreateDebugSnapshotResponse - (*NotificationHistoryRecord)(nil), // 76: session.v1.NotificationHistoryRecord - (*GetNotificationHistoryRequest)(nil), // 77: session.v1.GetNotificationHistoryRequest - (*GetNotificationHistoryResponse)(nil), // 78: session.v1.GetNotificationHistoryResponse - (*MarkNotificationReadRequest)(nil), // 79: session.v1.MarkNotificationReadRequest - (*MarkNotificationReadResponse)(nil), // 80: session.v1.MarkNotificationReadResponse - (*ClearNotificationHistoryRequest)(nil), // 81: session.v1.ClearNotificationHistoryRequest - (*ClearNotificationHistoryResponse)(nil), // 82: session.v1.ClearNotificationHistoryResponse - (*ListApprovalRulesRequest)(nil), // 83: session.v1.ListApprovalRulesRequest - (*ListApprovalRulesResponse)(nil), // 84: session.v1.ListApprovalRulesResponse - (*UpsertApprovalRuleRequest)(nil), // 85: session.v1.UpsertApprovalRuleRequest - (*UpsertApprovalRuleResponse)(nil), // 86: session.v1.UpsertApprovalRuleResponse - (*DeleteApprovalRuleRequest)(nil), // 87: session.v1.DeleteApprovalRuleRequest - (*DeleteApprovalRuleResponse)(nil), // 88: session.v1.DeleteApprovalRuleResponse - (*GetApprovalAnalyticsRequest)(nil), // 89: session.v1.GetApprovalAnalyticsRequest - (*GetApprovalAnalyticsResponse)(nil), // 90: session.v1.GetApprovalAnalyticsResponse - (*GetProgramAnalyticsRequest)(nil), // 91: session.v1.GetProgramAnalyticsRequest - (*GetProgramAnalyticsResponse)(nil), // 92: session.v1.GetProgramAnalyticsResponse - (*ListDatabasesRequest)(nil), // 93: session.v1.ListDatabasesRequest - (*ListDatabasesResponse)(nil), // 94: session.v1.ListDatabasesResponse - (*GetCurrentDatabaseRequest)(nil), // 95: session.v1.GetCurrentDatabaseRequest - (*GetCurrentDatabaseResponse)(nil), // 96: session.v1.GetCurrentDatabaseResponse - (*SwitchDatabaseRequest)(nil), // 97: session.v1.SwitchDatabaseRequest - (*SwitchDatabaseResponse)(nil), // 98: session.v1.SwitchDatabaseResponse - (*MergeDatabaseRequest)(nil), // 99: session.v1.MergeDatabaseRequest - (*MergeDatabaseResponse)(nil), // 100: session.v1.MergeDatabaseResponse - (*CreateCheckpointRequest)(nil), // 101: session.v1.CreateCheckpointRequest - (*CreateCheckpointResponse)(nil), // 102: session.v1.CreateCheckpointResponse - (*ListCheckpointsRequest)(nil), // 103: session.v1.ListCheckpointsRequest - (*ListCheckpointsResponse)(nil), // 104: session.v1.ListCheckpointsResponse - (*ForkSessionRequest)(nil), // 105: session.v1.ForkSessionRequest - (*ForkSessionResponse)(nil), // 106: session.v1.ForkSessionResponse - (*ListFilesRequest)(nil), // 107: session.v1.ListFilesRequest - (*ListFilesResponse)(nil), // 108: session.v1.ListFilesResponse - (*GetFileContentRequest)(nil), // 109: session.v1.GetFileContentRequest - (*GetFileContentResponse)(nil), // 110: session.v1.GetFileContentResponse - (*SearchFilesRequest)(nil), // 111: session.v1.SearchFilesRequest - (*SearchFilesResponse)(nil), // 112: session.v1.SearchFilesResponse - (*ListPathCompletionsRequest)(nil), // 113: session.v1.ListPathCompletionsRequest - (*ListPathCompletionsResponse)(nil), // 114: session.v1.ListPathCompletionsResponse - (*PathEntry)(nil), // 115: session.v1.PathEntry - (*ProfileDefaultsProto)(nil), // 116: session.v1.ProfileDefaultsProto - (*DirectoryRuleProto)(nil), // 117: session.v1.DirectoryRuleProto - (*SessionDefaultsConfig)(nil), // 118: session.v1.SessionDefaultsConfig - (*GetSessionDefaultsRequest)(nil), // 119: session.v1.GetSessionDefaultsRequest - (*GetSessionDefaultsResponse)(nil), // 120: session.v1.GetSessionDefaultsResponse - (*PreviewDestinationPathRequest)(nil), // 121: session.v1.PreviewDestinationPathRequest - (*PreviewDestinationPathResponse)(nil), // 122: session.v1.PreviewDestinationPathResponse - (*ResolveDefaultsRequest)(nil), // 123: session.v1.ResolveDefaultsRequest - (*ResolveDefaultsResponse)(nil), // 124: session.v1.ResolveDefaultsResponse - (*UpdateGlobalDefaultsRequest)(nil), // 125: session.v1.UpdateGlobalDefaultsRequest - (*UpdateGlobalDefaultsResponse)(nil), // 126: session.v1.UpdateGlobalDefaultsResponse - (*UpsertProfileRequest)(nil), // 127: session.v1.UpsertProfileRequest - (*UpsertProfileResponse)(nil), // 128: session.v1.UpsertProfileResponse - (*DeleteProfileRequest)(nil), // 129: session.v1.DeleteProfileRequest - (*DeleteProfileResponse)(nil), // 130: session.v1.DeleteProfileResponse - (*UpsertDirectoryRuleRequest)(nil), // 131: session.v1.UpsertDirectoryRuleRequest - (*UpsertDirectoryRuleResponse)(nil), // 132: session.v1.UpsertDirectoryRuleResponse - (*DeleteDirectoryRuleRequest)(nil), // 133: session.v1.DeleteDirectoryRuleRequest - (*DeleteDirectoryRuleResponse)(nil), // 134: session.v1.DeleteDirectoryRuleResponse - (*AliasProto)(nil), // 135: session.v1.AliasProto - (*ListAliasesRequest)(nil), // 136: session.v1.ListAliasesRequest - (*ListAliasesResponse)(nil), // 137: session.v1.ListAliasesResponse - (*UpsertAliasRequest)(nil), // 138: session.v1.UpsertAliasRequest - (*UpsertAliasResponse)(nil), // 139: session.v1.UpsertAliasResponse - (*DeleteAliasRequest)(nil), // 140: session.v1.DeleteAliasRequest - (*DeleteAliasResponse)(nil), // 141: session.v1.DeleteAliasResponse - (*ListWorktreesRequest)(nil), // 142: session.v1.ListWorktreesRequest - (*WorktreeEntry)(nil), // 143: session.v1.WorktreeEntry - (*ListWorktreesResponse)(nil), // 144: session.v1.ListWorktreesResponse - (*PromptHistoryEntry)(nil), // 145: session.v1.PromptHistoryEntry - (*ListPromptHistoryRequest)(nil), // 146: session.v1.ListPromptHistoryRequest - (*ListPromptHistoryResponse)(nil), // 147: session.v1.ListPromptHistoryResponse - (*DeletePromptHistoryRequest)(nil), // 148: session.v1.DeletePromptHistoryRequest - (*DeletePromptHistoryResponse)(nil), // 149: session.v1.DeletePromptHistoryResponse - (*BatchSessionRequest)(nil), // 150: session.v1.BatchSessionRequest - (*BatchCreateResult)(nil), // 151: session.v1.BatchCreateResult - (*BatchCreateSessionsRequest)(nil), // 152: session.v1.BatchCreateSessionsRequest - (*BatchCreateSessionsResponse)(nil), // 153: session.v1.BatchCreateSessionsResponse - (*RunOneShotRequest)(nil), // 154: session.v1.RunOneShotRequest - (*RunOneShotResponse)(nil), // 155: session.v1.RunOneShotResponse - (*Project)(nil), // 156: session.v1.Project - (*CreateProjectRequest)(nil), // 157: session.v1.CreateProjectRequest - (*CreateProjectResponse)(nil), // 158: session.v1.CreateProjectResponse - (*ListProjectsRequest)(nil), // 159: session.v1.ListProjectsRequest - (*ListProjectsResponse)(nil), // 160: session.v1.ListProjectsResponse - (*UpdateProjectRequest)(nil), // 161: session.v1.UpdateProjectRequest - (*UpdateProjectResponse)(nil), // 162: session.v1.UpdateProjectResponse - (*DeleteProjectRequest)(nil), // 163: session.v1.DeleteProjectRequest - (*DeleteProjectResponse)(nil), // 164: session.v1.DeleteProjectResponse - (*AssignSessionsToProjectRequest)(nil), // 165: session.v1.AssignSessionsToProjectRequest - (*AssignSessionsToProjectResponse)(nil), // 166: session.v1.AssignSessionsToProjectResponse - (*ListBranchesRequest)(nil), // 167: session.v1.ListBranchesRequest - (*ListBranchesResponse)(nil), // 168: session.v1.ListBranchesResponse - (*GetTerminalSnapshotRequest)(nil), // 169: session.v1.GetTerminalSnapshotRequest - (*GetTerminalSnapshotResponse)(nil), // 170: session.v1.GetTerminalSnapshotResponse - (*WriteToSessionRequest)(nil), // 171: session.v1.WriteToSessionRequest - (*WriteToSessionResponse)(nil), // 172: session.v1.WriteToSessionResponse - (*ClientLogEntry)(nil), // 173: session.v1.ClientLogEntry - (*LogClientEventsRequest)(nil), // 174: session.v1.LogClientEventsRequest - (*LogClientEventsResponse)(nil), // 175: session.v1.LogClientEventsResponse - (*ListErrorsRequest)(nil), // 176: session.v1.ListErrorsRequest - (*ErrorEventRecord)(nil), // 177: session.v1.ErrorEventRecord - (*ListErrorsResponse)(nil), // 178: session.v1.ListErrorsResponse - (*AcknowledgeErrorRequest)(nil), // 179: session.v1.AcknowledgeErrorRequest - (*AcknowledgeErrorResponse)(nil), // 180: session.v1.AcknowledgeErrorResponse - (*ClearConversationStateRequest)(nil), // 181: session.v1.ClearConversationStateRequest - (*ClearConversationStateResponse)(nil), // 182: session.v1.ClearConversationStateResponse - (*FeatureFlag)(nil), // 183: session.v1.FeatureFlag - (*GetFeatureFlagsRequest)(nil), // 184: session.v1.GetFeatureFlagsRequest - (*GetFeatureFlagsResponse)(nil), // 185: session.v1.GetFeatureFlagsResponse - (*GetHookStatusRequest)(nil), // 186: session.v1.GetHookStatusRequest - (*GetHookStatusResponse)(nil), // 187: session.v1.GetHookStatusResponse - (*InstallHooksRequest)(nil), // 188: session.v1.InstallHooksRequest - (*InstallHooksResponse)(nil), // 189: session.v1.InstallHooksResponse - (*UpdateFeatureFlagRequest)(nil), // 190: session.v1.UpdateFeatureFlagRequest - (*UpdateFeatureFlagResponse)(nil), // 191: session.v1.UpdateFeatureFlagResponse - (*EscapeEventProto)(nil), // 192: session.v1.EscapeEventProto - (*QueryEscapeAnalyticsRequest)(nil), // 193: session.v1.QueryEscapeAnalyticsRequest - (*QueryEscapeAnalyticsResponse)(nil), // 194: session.v1.QueryEscapeAnalyticsResponse - (*EscapeSequenceCount)(nil), // 195: session.v1.EscapeSequenceCount - (*GetEscapeAnalyticsSummaryRequest)(nil), // 196: session.v1.GetEscapeAnalyticsSummaryRequest - (*GetEscapeAnalyticsSummaryResponse)(nil), // 197: session.v1.GetEscapeAnalyticsSummaryResponse - (*GetEscapeAnalyticsGlobalSummaryRequest)(nil), // 198: session.v1.GetEscapeAnalyticsGlobalSummaryRequest - (*GetEscapeAnalyticsGlobalSummaryResponse)(nil), // 199: session.v1.GetEscapeAnalyticsGlobalSummaryResponse - (*SessionEscapeSummary)(nil), // 200: session.v1.SessionEscapeSummary - (*SpawnShellRequest)(nil), // 201: session.v1.SpawnShellRequest - (*SpawnShellResponse)(nil), // 202: session.v1.SpawnShellResponse - (*StopShellRequest)(nil), // 203: session.v1.StopShellRequest - (*StopShellResponse)(nil), // 204: session.v1.StopShellResponse - (*RestartShellRequest)(nil), // 205: session.v1.RestartShellRequest - (*RestartShellResponse)(nil), // 206: session.v1.RestartShellResponse - (*ListShellsRequest)(nil), // 207: session.v1.ListShellsRequest - (*ListShellsResponse)(nil), // 208: session.v1.ListShellsResponse - (*DeleteShellRequest)(nil), // 209: session.v1.DeleteShellRequest - (*DeleteShellResponse)(nil), // 210: session.v1.DeleteShellResponse - (*GenerateSuggestedRuleRequest)(nil), // 211: session.v1.GenerateSuggestedRuleRequest - (*GenerateSuggestedRuleResponse)(nil), // 212: session.v1.GenerateSuggestedRuleResponse - (*HibernateSessionRequest)(nil), // 213: session.v1.HibernateSessionRequest - (*HibernateSessionResponse)(nil), // 214: session.v1.HibernateSessionResponse - (*ResumeHibernatedSessionRequest)(nil), // 215: session.v1.ResumeHibernatedSessionRequest - (*ResumeHibernatedSessionResponse)(nil), // 216: session.v1.ResumeHibernatedSessionResponse - (*ResumeCrashedSessionRequest)(nil), // 217: session.v1.ResumeCrashedSessionRequest - (*ResumeCrashedSessionResponse)(nil), // 218: session.v1.ResumeCrashedSessionResponse - (*ValidateRulesRequest)(nil), // 219: session.v1.ValidateRulesRequest - (*ValidateRulesResponse)(nil), // 220: session.v1.ValidateRulesResponse - (*ParsedRuleResult)(nil), // 221: session.v1.ParsedRuleResult - (*ExportRulesRequest)(nil), // 222: session.v1.ExportRulesRequest - (*ExportRulesResponse)(nil), // 223: session.v1.ExportRulesResponse - (*BulkUpsertRulesRequest)(nil), // 224: session.v1.BulkUpsertRulesRequest - (*BulkUpsertRulesResponse)(nil), // 225: session.v1.BulkUpsertRulesResponse - (*GetConfigFileRulesRequest)(nil), // 226: session.v1.GetConfigFileRulesRequest - (*GetConfigFileRulesResponse)(nil), // 227: session.v1.GetConfigFileRulesResponse - (*SaveRulesToConfigFileRequest)(nil), // 228: session.v1.SaveRulesToConfigFileRequest - (*SaveRulesToConfigFileResponse)(nil), // 229: session.v1.SaveRulesToConfigFileResponse - (*WorkflowProto)(nil), // 230: session.v1.WorkflowProto - (*CreateWorkflowRequest)(nil), // 231: session.v1.CreateWorkflowRequest - (*CreateWorkflowResponse)(nil), // 232: session.v1.CreateWorkflowResponse - (*UpdateWorkflowRequest)(nil), // 233: session.v1.UpdateWorkflowRequest - (*UpdateWorkflowResponse)(nil), // 234: session.v1.UpdateWorkflowResponse - (*DeleteWorkflowRequest)(nil), // 235: session.v1.DeleteWorkflowRequest - (*DeleteWorkflowResponse)(nil), // 236: session.v1.DeleteWorkflowResponse - (*ListWorkflowsRequest)(nil), // 237: session.v1.ListWorkflowsRequest - (*ListWorkflowsResponse)(nil), // 238: session.v1.ListWorkflowsResponse - (*RunWorkflowRequest)(nil), // 239: session.v1.RunWorkflowRequest - (*ListSlashCommandsRequest)(nil), // 240: session.v1.ListSlashCommandsRequest - (*SlashCommandInfo)(nil), // 241: session.v1.SlashCommandInfo - (*ListSlashCommandsResponse)(nil), // 242: session.v1.ListSlashCommandsResponse - (*RunWorkflowResponse)(nil), // 243: session.v1.RunWorkflowResponse - (*DetectionEventProto)(nil), // 244: session.v1.DetectionEventProto - (*GetDetectionEventsRequest)(nil), // 245: session.v1.GetDetectionEventsRequest - (*GetDetectionEventsResponse)(nil), // 246: session.v1.GetDetectionEventsResponse - (*ArchiveSessionRequest)(nil), // 247: session.v1.ArchiveSessionRequest - (*ArchiveSessionResponse)(nil), // 248: session.v1.ArchiveSessionResponse - (*UnarchiveSessionRequest)(nil), // 249: session.v1.UnarchiveSessionRequest - (*UnarchiveSessionResponse)(nil), // 250: session.v1.UnarchiveSessionResponse - (*ArchiveWorkflowSessionsRequest)(nil), // 251: session.v1.ArchiveWorkflowSessionsRequest - (*ArchiveWorkflowSessionsResponse)(nil), // 252: session.v1.ArchiveWorkflowSessionsResponse - (*DeleteWorkflowFailedSessionsRequest)(nil), // 253: session.v1.DeleteWorkflowFailedSessionsRequest - (*DeleteWorkflowFailedSessionsResponse)(nil), // 254: session.v1.DeleteWorkflowFailedSessionsResponse - (*GetProviderLimitsRequest)(nil), // 255: session.v1.GetProviderLimitsRequest - (*ProviderLimitsProto)(nil), // 256: session.v1.ProviderLimitsProto - (*GetProviderLimitsResponse)(nil), // 257: session.v1.GetProviderLimitsResponse - nil, // 258: session.v1.CreateSessionRequest.EnvVarsEntry - nil, // 259: session.v1.LogUserInteractionRequest.MetadataEntry - nil, // 260: session.v1.SendNotificationRequest.MetadataEntry - nil, // 261: session.v1.NotificationHistoryRecord.MetadataEntry - nil, // 262: session.v1.ProfileDefaultsProto.EnvVarsEntry - nil, // 263: session.v1.SessionDefaultsConfig.EnvVarsEntry - nil, // 264: session.v1.SessionDefaultsConfig.ProfilesEntry - nil, // 265: session.v1.ResolveDefaultsResponse.EnvVarsEntry - nil, // 266: session.v1.UpdateGlobalDefaultsRequest.EnvVarsEntry - nil, // 267: session.v1.AliasProto.EnvVarsEntry - (SessionStatus)(0), // 268: session.v1.SessionStatus - (*Session)(nil), // 269: session.v1.Session - (SessionType)(0), // 270: session.v1.SessionType - (*DiffStats)(nil), // 271: session.v1.DiffStats - (*VCSStatus)(nil), // 272: session.v1.VCSStatus - (Priority)(0), // 273: session.v1.Priority - (AttentionReason)(0), // 274: session.v1.AttentionReason - (*ReviewQueue)(nil), // 275: session.v1.ReviewQueue - (*timestamppb.Timestamp)(nil), // 276: google.protobuf.Timestamp - (UserInteractionEvent_InteractionType)(0), // 277: session.v1.UserInteractionEvent.InteractionType - (*PRInfo)(nil), // 278: session.v1.PRInfo - (*PRComment)(nil), // 279: session.v1.PRComment - (NotificationType)(0), // 280: session.v1.NotificationType - (NotificationPriority)(0), // 281: session.v1.NotificationPriority - (*VCSInfo)(nil), // 282: session.v1.VCSInfo - (*AvailableWorkspaceTargets)(nil), // 283: session.v1.AvailableWorkspaceTargets - (WorkspaceSwitchType)(0), // 284: session.v1.WorkspaceSwitchType - (ChangeStrategy)(0), // 285: session.v1.ChangeStrategy - (*PendingApprovalProto)(nil), // 286: session.v1.PendingApprovalProto - (VCSType)(0), // 287: session.v1.VCSType - (*ApprovalRuleProto)(nil), // 288: session.v1.ApprovalRuleProto - (*AnalyticsSummaryProto)(nil), // 289: session.v1.AnalyticsSummaryProto - (*DailyBucketProto)(nil), // 290: session.v1.DailyBucketProto - (*SubcommandBreakdownProto)(nil), // 291: session.v1.SubcommandBreakdownProto - (*DatabaseInfo)(nil), // 292: session.v1.DatabaseInfo - (*CheckpointProto)(nil), // 293: session.v1.CheckpointProto - (*FileNode)(nil), // 294: session.v1.FileNode - (*Shell)(nil), // 295: session.v1.Shell - (SuggestionSource)(0), // 296: session.v1.SuggestionSource - (*SuggestedRuleProto)(nil), // 297: session.v1.SuggestedRuleProto - (*TerminalData)(nil), // 298: session.v1.TerminalData - (*SessionEvent)(nil), // 299: session.v1.SessionEvent - (*ReviewQueueEvent)(nil), // 300: session.v1.ReviewQueueEvent -} -var file_session_v1_session_proto_depIdxs = []int32{ - 268, // 0: session.v1.ListSessionsRequest.status:type_name -> session.v1.SessionStatus - 269, // 1: session.v1.ListSessionsResponse.sessions:type_name -> session.v1.Session - 269, // 2: session.v1.GetSessionResponse.session:type_name -> session.v1.Session - 270, // 3: session.v1.CreateSessionRequest.session_type:type_name -> session.v1.SessionType - 258, // 4: session.v1.CreateSessionRequest.env_vars:type_name -> session.v1.CreateSessionRequest.EnvVarsEntry - 269, // 5: session.v1.CreateSessionResponse.session:type_name -> session.v1.Session - 268, // 6: session.v1.UpdateSessionRequest.status:type_name -> session.v1.SessionStatus - 269, // 7: session.v1.UpdateSessionResponse.session:type_name -> session.v1.Session - 268, // 8: session.v1.WatchSessionsRequest.status_filter:type_name -> session.v1.SessionStatus - 271, // 9: session.v1.GetSessionDiffResponse.diff_stats:type_name -> session.v1.DiffStats - 272, // 10: session.v1.GetVCSStatusResponse.vcs_status:type_name -> session.v1.VCSStatus - 273, // 11: session.v1.GetReviewQueueRequest.priority_filter:type_name -> session.v1.Priority - 274, // 12: session.v1.GetReviewQueueRequest.reason_filter:type_name -> session.v1.AttentionReason - 275, // 13: session.v1.GetReviewQueueResponse.review_queue:type_name -> session.v1.ReviewQueue - 276, // 14: session.v1.GetLogsRequest.start_time:type_name -> google.protobuf.Timestamp - 276, // 15: session.v1.GetLogsRequest.end_time:type_name -> google.protobuf.Timestamp - 21, // 16: session.v1.GetLogsResponse.entries:type_name -> session.v1.LogEntry - 276, // 17: session.v1.LogEntry.timestamp:type_name -> google.protobuf.Timestamp - 273, // 18: session.v1.WatchReviewQueueRequest.priority_filter:type_name -> session.v1.Priority - 274, // 19: session.v1.WatchReviewQueueRequest.reason_filter:type_name -> session.v1.AttentionReason - 277, // 20: session.v1.LogUserInteractionRequest.interaction_type:type_name -> session.v1.UserInteractionEvent.InteractionType - 259, // 21: session.v1.LogUserInteractionRequest.metadata:type_name -> session.v1.LogUserInteractionRequest.MetadataEntry - 31, // 22: session.v1.GetClaudeConfigResponse.config:type_name -> session.v1.ClaudeConfigFile - 31, // 23: session.v1.ListClaudeConfigsResponse.configs:type_name -> session.v1.ClaudeConfigFile - 31, // 24: session.v1.UpdateClaudeConfigResponse.config:type_name -> session.v1.ClaudeConfigFile - 276, // 25: session.v1.ClaudeConfigFile.mod_time:type_name -> google.protobuf.Timestamp - 36, // 26: session.v1.ListClaudeHistoryResponse.entries:type_name -> session.v1.ClaudeHistoryEntry - 36, // 27: session.v1.GetClaudeHistoryDetailResponse.entry:type_name -> session.v1.ClaudeHistoryEntry - 276, // 28: session.v1.ClaudeHistoryEntry.created_at:type_name -> google.protobuf.Timestamp - 276, // 29: session.v1.ClaudeHistoryEntry.updated_at:type_name -> google.protobuf.Timestamp - 272, // 30: session.v1.ClaudeHistoryEntry.vcs_status:type_name -> session.v1.VCSStatus - 268, // 31: session.v1.ClaudeHistoryEntry.session_status:type_name -> session.v1.SessionStatus - 39, // 32: session.v1.GetClaudeHistoryMessagesResponse.messages:type_name -> session.v1.ClaudeMessage - 276, // 33: session.v1.ClaudeMessage.timestamp:type_name -> google.protobuf.Timestamp - 276, // 34: session.v1.SearchClaudeHistoryRequest.start_time:type_name -> google.protobuf.Timestamp - 276, // 35: session.v1.SearchClaudeHistoryRequest.end_time:type_name -> google.protobuf.Timestamp - 42, // 36: session.v1.SearchClaudeHistoryResponse.results:type_name -> session.v1.SearchResult - 43, // 37: session.v1.SearchResult.snippets:type_name -> session.v1.SearchSnippet - 45, // 38: session.v1.SearchResult.metadata:type_name -> session.v1.SearchResultMetadata - 39, // 39: session.v1.SearchResult.context_window:type_name -> session.v1.ClaudeMessage - 39, // 40: session.v1.SearchResult.bookend_first:type_name -> session.v1.ClaudeMessage - 39, // 41: session.v1.SearchResult.bookend_last:type_name -> session.v1.ClaudeMessage - 44, // 42: session.v1.SearchSnippet.highlight_ranges:type_name -> session.v1.HighlightRange - 276, // 43: session.v1.SearchSnippet.message_time:type_name -> google.protobuf.Timestamp - 276, // 44: session.v1.SearchResultMetadata.created_at:type_name -> google.protobuf.Timestamp - 278, // 45: session.v1.GetPRInfoResponse.pr_info:type_name -> session.v1.PRInfo - 279, // 46: session.v1.GetPRCommentsResponse.comments:type_name -> session.v1.PRComment - 280, // 47: session.v1.SendNotificationRequest.notification_type:type_name -> session.v1.NotificationType - 281, // 48: session.v1.SendNotificationRequest.priority:type_name -> session.v1.NotificationPriority - 260, // 49: session.v1.SendNotificationRequest.metadata:type_name -> session.v1.SendNotificationRequest.MetadataEntry - 269, // 50: session.v1.RenameSessionResponse.session:type_name -> session.v1.Session - 269, // 51: session.v1.RestartSessionResponse.session:type_name -> session.v1.Session - 282, // 52: session.v1.GetWorkspaceInfoResponse.vcs_info:type_name -> session.v1.VCSInfo - 283, // 53: session.v1.ListWorkspaceTargetsResponse.targets:type_name -> session.v1.AvailableWorkspaceTargets - 284, // 54: session.v1.SwitchWorkspaceRequest.switch_type:type_name -> session.v1.WorkspaceSwitchType - 285, // 55: session.v1.SwitchWorkspaceRequest.change_strategy:type_name -> session.v1.ChangeStrategy - 286, // 56: session.v1.ListPendingApprovalsResponse.approvals:type_name -> session.v1.PendingApprovalProto - 287, // 57: session.v1.SwitchWorkspaceResponse.vcs_type:type_name -> session.v1.VCSType - 269, // 58: session.v1.SwitchWorkspaceResponse.session:type_name -> session.v1.Session - 280, // 59: session.v1.NotificationHistoryRecord.notification_type:type_name -> session.v1.NotificationType - 281, // 60: session.v1.NotificationHistoryRecord.priority:type_name -> session.v1.NotificationPriority - 261, // 61: session.v1.NotificationHistoryRecord.metadata:type_name -> session.v1.NotificationHistoryRecord.MetadataEntry - 276, // 62: session.v1.NotificationHistoryRecord.created_at:type_name -> google.protobuf.Timestamp - 276, // 63: session.v1.NotificationHistoryRecord.read_at:type_name -> google.protobuf.Timestamp - 276, // 64: session.v1.NotificationHistoryRecord.last_occurred_at:type_name -> google.protobuf.Timestamp - 280, // 65: session.v1.GetNotificationHistoryRequest.type_filter:type_name -> session.v1.NotificationType - 76, // 66: session.v1.GetNotificationHistoryResponse.notifications:type_name -> session.v1.NotificationHistoryRecord - 288, // 67: session.v1.ListApprovalRulesResponse.rules:type_name -> session.v1.ApprovalRuleProto - 288, // 68: session.v1.UpsertApprovalRuleRequest.rule:type_name -> session.v1.ApprovalRuleProto - 288, // 69: session.v1.UpsertApprovalRuleResponse.rule:type_name -> session.v1.ApprovalRuleProto - 289, // 70: session.v1.GetApprovalAnalyticsResponse.summary:type_name -> session.v1.AnalyticsSummaryProto - 290, // 71: session.v1.GetApprovalAnalyticsResponse.daily_buckets:type_name -> session.v1.DailyBucketProto - 291, // 72: session.v1.GetProgramAnalyticsResponse.subcommands:type_name -> session.v1.SubcommandBreakdownProto - 290, // 73: session.v1.GetProgramAnalyticsResponse.trend:type_name -> session.v1.DailyBucketProto - 292, // 74: session.v1.ListDatabasesResponse.databases:type_name -> session.v1.DatabaseInfo - 292, // 75: session.v1.GetCurrentDatabaseResponse.database:type_name -> session.v1.DatabaseInfo - 293, // 76: session.v1.CreateCheckpointResponse.checkpoint:type_name -> session.v1.CheckpointProto - 293, // 77: session.v1.ListCheckpointsResponse.checkpoints:type_name -> session.v1.CheckpointProto - 269, // 78: session.v1.ForkSessionResponse.session:type_name -> session.v1.Session - 294, // 79: session.v1.ListFilesResponse.files:type_name -> session.v1.FileNode - 294, // 80: session.v1.SearchFilesResponse.files:type_name -> session.v1.FileNode - 115, // 81: session.v1.ListPathCompletionsResponse.entries:type_name -> session.v1.PathEntry - 262, // 82: session.v1.ProfileDefaultsProto.env_vars:type_name -> session.v1.ProfileDefaultsProto.EnvVarsEntry - 276, // 83: session.v1.ProfileDefaultsProto.created_at:type_name -> google.protobuf.Timestamp - 276, // 84: session.v1.ProfileDefaultsProto.updated_at:type_name -> google.protobuf.Timestamp - 116, // 85: session.v1.DirectoryRuleProto.overrides:type_name -> session.v1.ProfileDefaultsProto - 263, // 86: session.v1.SessionDefaultsConfig.env_vars:type_name -> session.v1.SessionDefaultsConfig.EnvVarsEntry - 264, // 87: session.v1.SessionDefaultsConfig.profiles:type_name -> session.v1.SessionDefaultsConfig.ProfilesEntry - 117, // 88: session.v1.SessionDefaultsConfig.directory_rules:type_name -> session.v1.DirectoryRuleProto - 118, // 89: session.v1.GetSessionDefaultsResponse.defaults:type_name -> session.v1.SessionDefaultsConfig - 265, // 90: session.v1.ResolveDefaultsResponse.env_vars:type_name -> session.v1.ResolveDefaultsResponse.EnvVarsEntry - 266, // 91: session.v1.UpdateGlobalDefaultsRequest.env_vars:type_name -> session.v1.UpdateGlobalDefaultsRequest.EnvVarsEntry - 118, // 92: session.v1.UpdateGlobalDefaultsResponse.defaults:type_name -> session.v1.SessionDefaultsConfig - 116, // 93: session.v1.UpsertProfileRequest.profile:type_name -> session.v1.ProfileDefaultsProto - 116, // 94: session.v1.UpsertProfileResponse.profile:type_name -> session.v1.ProfileDefaultsProto - 117, // 95: session.v1.UpsertDirectoryRuleRequest.rule:type_name -> session.v1.DirectoryRuleProto - 117, // 96: session.v1.UpsertDirectoryRuleResponse.rule:type_name -> session.v1.DirectoryRuleProto - 267, // 97: session.v1.AliasProto.env_vars:type_name -> session.v1.AliasProto.EnvVarsEntry - 270, // 98: session.v1.AliasProto.session_type:type_name -> session.v1.SessionType - 135, // 99: session.v1.ListAliasesResponse.aliases:type_name -> session.v1.AliasProto - 135, // 100: session.v1.UpsertAliasRequest.alias:type_name -> session.v1.AliasProto - 135, // 101: session.v1.UpsertAliasResponse.alias:type_name -> session.v1.AliasProto - 143, // 102: session.v1.ListWorktreesResponse.worktrees:type_name -> session.v1.WorktreeEntry - 276, // 103: session.v1.PromptHistoryEntry.last_used:type_name -> google.protobuf.Timestamp - 276, // 104: session.v1.PromptHistoryEntry.created_at:type_name -> google.protobuf.Timestamp - 145, // 105: session.v1.ListPromptHistoryResponse.entries:type_name -> session.v1.PromptHistoryEntry - 270, // 106: session.v1.BatchSessionRequest.session_type:type_name -> session.v1.SessionType - 150, // 107: session.v1.BatchCreateSessionsRequest.sessions:type_name -> session.v1.BatchSessionRequest - 151, // 108: session.v1.BatchCreateSessionsResponse.results:type_name -> session.v1.BatchCreateResult - 276, // 109: session.v1.Project.created_at:type_name -> google.protobuf.Timestamp - 276, // 110: session.v1.Project.updated_at:type_name -> google.protobuf.Timestamp - 156, // 111: session.v1.CreateProjectResponse.project:type_name -> session.v1.Project - 156, // 112: session.v1.ListProjectsResponse.projects:type_name -> session.v1.Project - 156, // 113: session.v1.UpdateProjectResponse.project:type_name -> session.v1.Project - 173, // 114: session.v1.LogClientEventsRequest.entries:type_name -> session.v1.ClientLogEntry - 276, // 115: session.v1.ErrorEventRecord.first_seen:type_name -> google.protobuf.Timestamp - 276, // 116: session.v1.ErrorEventRecord.last_seen:type_name -> google.protobuf.Timestamp - 177, // 117: session.v1.ListErrorsResponse.errors:type_name -> session.v1.ErrorEventRecord - 183, // 118: session.v1.GetFeatureFlagsResponse.flags:type_name -> session.v1.FeatureFlag - 187, // 119: session.v1.InstallHooksResponse.status:type_name -> session.v1.GetHookStatusResponse - 183, // 120: session.v1.UpdateFeatureFlagResponse.flag:type_name -> session.v1.FeatureFlag - 276, // 121: session.v1.EscapeEventProto.wall_time:type_name -> google.protobuf.Timestamp - 276, // 122: session.v1.QueryEscapeAnalyticsRequest.start_time:type_name -> google.protobuf.Timestamp - 276, // 123: session.v1.QueryEscapeAnalyticsRequest.end_time:type_name -> google.protobuf.Timestamp - 192, // 124: session.v1.QueryEscapeAnalyticsResponse.events:type_name -> session.v1.EscapeEventProto - 276, // 125: session.v1.GetEscapeAnalyticsSummaryRequest.start_time:type_name -> google.protobuf.Timestamp - 276, // 126: session.v1.GetEscapeAnalyticsSummaryRequest.end_time:type_name -> google.protobuf.Timestamp - 195, // 127: session.v1.GetEscapeAnalyticsSummaryResponse.histogram:type_name -> session.v1.EscapeSequenceCount - 276, // 128: session.v1.GetEscapeAnalyticsGlobalSummaryRequest.start_time:type_name -> google.protobuf.Timestamp - 276, // 129: session.v1.GetEscapeAnalyticsGlobalSummaryRequest.end_time:type_name -> google.protobuf.Timestamp - 195, // 130: session.v1.GetEscapeAnalyticsGlobalSummaryResponse.histogram:type_name -> session.v1.EscapeSequenceCount - 200, // 131: session.v1.GetEscapeAnalyticsGlobalSummaryResponse.per_session:type_name -> session.v1.SessionEscapeSummary - 295, // 132: session.v1.SpawnShellResponse.shell:type_name -> session.v1.Shell - 295, // 133: session.v1.ListShellsResponse.shells:type_name -> session.v1.Shell - 296, // 134: session.v1.GenerateSuggestedRuleRequest.source:type_name -> session.v1.SuggestionSource - 297, // 135: session.v1.GenerateSuggestedRuleResponse.suggestions:type_name -> session.v1.SuggestedRuleProto - 269, // 136: session.v1.HibernateSessionResponse.session:type_name -> session.v1.Session - 269, // 137: session.v1.ResumeHibernatedSessionResponse.session:type_name -> session.v1.Session - 269, // 138: session.v1.ResumeCrashedSessionResponse.session:type_name -> session.v1.Session - 221, // 139: session.v1.ValidateRulesResponse.results:type_name -> session.v1.ParsedRuleResult - 288, // 140: session.v1.ParsedRuleResult.rule:type_name -> session.v1.ApprovalRuleProto - 288, // 141: session.v1.BulkUpsertRulesRequest.rules:type_name -> session.v1.ApprovalRuleProto - 288, // 142: session.v1.GetConfigFileRulesResponse.rules:type_name -> session.v1.ApprovalRuleProto - 288, // 143: session.v1.SaveRulesToConfigFileRequest.rule:type_name -> session.v1.ApprovalRuleProto - 276, // 144: session.v1.WorkflowProto.created_at:type_name -> google.protobuf.Timestamp - 276, // 145: session.v1.WorkflowProto.updated_at:type_name -> google.protobuf.Timestamp - 230, // 146: session.v1.CreateWorkflowResponse.workflow:type_name -> session.v1.WorkflowProto - 230, // 147: session.v1.UpdateWorkflowResponse.workflow:type_name -> session.v1.WorkflowProto - 230, // 148: session.v1.ListWorkflowsResponse.workflows:type_name -> session.v1.WorkflowProto - 241, // 149: session.v1.ListSlashCommandsResponse.commands:type_name -> session.v1.SlashCommandInfo - 276, // 150: session.v1.DetectionEventProto.timestamp:type_name -> google.protobuf.Timestamp - 244, // 151: session.v1.GetDetectionEventsResponse.events:type_name -> session.v1.DetectionEventProto - 276, // 152: session.v1.ProviderLimitsProto.requests_reset:type_name -> google.protobuf.Timestamp - 276, // 153: session.v1.ProviderLimitsProto.tokens_reset:type_name -> google.protobuf.Timestamp - 276, // 154: session.v1.ProviderLimitsProto.fetched_at:type_name -> google.protobuf.Timestamp - 256, // 155: session.v1.GetProviderLimitsResponse.limits:type_name -> session.v1.ProviderLimitsProto - 116, // 156: session.v1.SessionDefaultsConfig.ProfilesEntry.value:type_name -> session.v1.ProfileDefaultsProto - 0, // 157: session.v1.SessionService.ListSessions:input_type -> session.v1.ListSessionsRequest - 2, // 158: session.v1.SessionService.GetSession:input_type -> session.v1.GetSessionRequest - 4, // 159: session.v1.SessionService.CreateSession:input_type -> session.v1.CreateSessionRequest - 6, // 160: session.v1.SessionService.UpdateSession:input_type -> session.v1.UpdateSessionRequest - 8, // 161: session.v1.SessionService.DeleteSession:input_type -> session.v1.DeleteSessionRequest - 10, // 162: session.v1.SessionService.WatchSessions:input_type -> session.v1.WatchSessionsRequest - 298, // 163: session.v1.SessionService.StreamTerminal:input_type -> session.v1.TerminalData - 11, // 164: session.v1.SessionService.GetSessionDiff:input_type -> session.v1.GetSessionDiffRequest - 13, // 165: session.v1.SessionService.GetVCSStatus:input_type -> session.v1.GetVCSStatusRequest - 15, // 166: session.v1.SessionService.GetReviewQueue:input_type -> session.v1.GetReviewQueueRequest - 17, // 167: session.v1.SessionService.AcknowledgeSession:input_type -> session.v1.AcknowledgeSessionRequest - 19, // 168: session.v1.SessionService.GetLogs:input_type -> session.v1.GetLogsRequest - 22, // 169: session.v1.SessionService.WatchReviewQueue:input_type -> session.v1.WatchReviewQueueRequest - 23, // 170: session.v1.SessionService.LogUserInteraction:input_type -> session.v1.LogUserInteractionRequest - 25, // 171: session.v1.SessionService.GetClaudeConfig:input_type -> session.v1.GetClaudeConfigRequest - 27, // 172: session.v1.SessionService.ListClaudeConfigs:input_type -> session.v1.ListClaudeConfigsRequest - 29, // 173: session.v1.SessionService.UpdateClaudeConfig:input_type -> session.v1.UpdateClaudeConfigRequest - 32, // 174: session.v1.SessionService.ListClaudeHistory:input_type -> session.v1.ListClaudeHistoryRequest - 34, // 175: session.v1.SessionService.GetClaudeHistoryDetail:input_type -> session.v1.GetClaudeHistoryDetailRequest - 37, // 176: session.v1.SessionService.GetClaudeHistoryMessages:input_type -> session.v1.GetClaudeHistoryMessagesRequest - 40, // 177: session.v1.SessionService.SearchClaudeHistory:input_type -> session.v1.SearchClaudeHistoryRequest - 46, // 178: session.v1.SessionService.GetPRInfo:input_type -> session.v1.GetPRInfoRequest - 48, // 179: session.v1.SessionService.GetPRComments:input_type -> session.v1.GetPRCommentsRequest - 50, // 180: session.v1.SessionService.PostPRComment:input_type -> session.v1.PostPRCommentRequest - 52, // 181: session.v1.SessionService.MergePR:input_type -> session.v1.MergePRRequest - 54, // 182: session.v1.SessionService.ClosePR:input_type -> session.v1.ClosePRRequest - 56, // 183: session.v1.SessionService.SendNotification:input_type -> session.v1.SendNotificationRequest - 58, // 184: session.v1.SessionService.FocusWindow:input_type -> session.v1.FocusWindowRequest - 60, // 185: session.v1.SessionService.RenameSession:input_type -> session.v1.RenameSessionRequest - 62, // 186: session.v1.SessionService.RestartSession:input_type -> session.v1.RestartSessionRequest - 64, // 187: session.v1.SessionService.GetWorkspaceInfo:input_type -> session.v1.GetWorkspaceInfoRequest - 66, // 188: session.v1.SessionService.ListWorkspaceTargets:input_type -> session.v1.ListWorkspaceTargetsRequest - 68, // 189: session.v1.SessionService.SwitchWorkspace:input_type -> session.v1.SwitchWorkspaceRequest - 69, // 190: session.v1.SessionService.ResolveApproval:input_type -> session.v1.ResolveApprovalRequest - 71, // 191: session.v1.SessionService.ListPendingApprovals:input_type -> session.v1.ListPendingApprovalsRequest - 74, // 192: session.v1.SessionService.CreateDebugSnapshot:input_type -> session.v1.CreateDebugSnapshotRequest - 77, // 193: session.v1.SessionService.GetNotificationHistory:input_type -> session.v1.GetNotificationHistoryRequest - 79, // 194: session.v1.SessionService.MarkNotificationRead:input_type -> session.v1.MarkNotificationReadRequest - 81, // 195: session.v1.SessionService.ClearNotificationHistory:input_type -> session.v1.ClearNotificationHistoryRequest - 83, // 196: session.v1.SessionService.ListApprovalRules:input_type -> session.v1.ListApprovalRulesRequest - 85, // 197: session.v1.SessionService.UpsertApprovalRule:input_type -> session.v1.UpsertApprovalRuleRequest - 87, // 198: session.v1.SessionService.DeleteApprovalRule:input_type -> session.v1.DeleteApprovalRuleRequest - 89, // 199: session.v1.SessionService.GetApprovalAnalytics:input_type -> session.v1.GetApprovalAnalyticsRequest - 91, // 200: session.v1.SessionService.GetProgramAnalytics:input_type -> session.v1.GetProgramAnalyticsRequest - 211, // 201: session.v1.SessionService.GenerateSuggestedRule:input_type -> session.v1.GenerateSuggestedRuleRequest - 219, // 202: session.v1.SessionService.ValidateRules:input_type -> session.v1.ValidateRulesRequest - 222, // 203: session.v1.SessionService.ExportRules:input_type -> session.v1.ExportRulesRequest - 224, // 204: session.v1.SessionService.BulkUpsertRules:input_type -> session.v1.BulkUpsertRulesRequest - 226, // 205: session.v1.SessionService.GetConfigFileRules:input_type -> session.v1.GetConfigFileRulesRequest - 228, // 206: session.v1.SessionService.SaveRulesToConfigFile:input_type -> session.v1.SaveRulesToConfigFileRequest - 93, // 207: session.v1.SessionService.ListDatabases:input_type -> session.v1.ListDatabasesRequest - 95, // 208: session.v1.SessionService.GetCurrentDatabase:input_type -> session.v1.GetCurrentDatabaseRequest - 97, // 209: session.v1.SessionService.SwitchDatabase:input_type -> session.v1.SwitchDatabaseRequest - 99, // 210: session.v1.SessionService.MergeDatabase:input_type -> session.v1.MergeDatabaseRequest - 101, // 211: session.v1.SessionService.CreateCheckpoint:input_type -> session.v1.CreateCheckpointRequest - 103, // 212: session.v1.SessionService.ListCheckpoints:input_type -> session.v1.ListCheckpointsRequest - 105, // 213: session.v1.SessionService.ForkSession:input_type -> session.v1.ForkSessionRequest - 181, // 214: session.v1.SessionService.ClearConversationState:input_type -> session.v1.ClearConversationStateRequest - 107, // 215: session.v1.SessionService.ListFiles:input_type -> session.v1.ListFilesRequest - 109, // 216: session.v1.SessionService.GetFileContent:input_type -> session.v1.GetFileContentRequest - 111, // 217: session.v1.SessionService.SearchFiles:input_type -> session.v1.SearchFilesRequest - 113, // 218: session.v1.SessionService.ListPathCompletions:input_type -> session.v1.ListPathCompletionsRequest - 119, // 219: session.v1.SessionService.GetSessionDefaults:input_type -> session.v1.GetSessionDefaultsRequest - 123, // 220: session.v1.SessionService.ResolveDefaults:input_type -> session.v1.ResolveDefaultsRequest - 121, // 221: session.v1.SessionService.PreviewDestinationPath:input_type -> session.v1.PreviewDestinationPathRequest - 125, // 222: session.v1.SessionService.UpdateGlobalDefaults:input_type -> session.v1.UpdateGlobalDefaultsRequest - 127, // 223: session.v1.SessionService.UpsertProfile:input_type -> session.v1.UpsertProfileRequest - 129, // 224: session.v1.SessionService.DeleteProfile:input_type -> session.v1.DeleteProfileRequest - 131, // 225: session.v1.SessionService.UpsertDirectoryRule:input_type -> session.v1.UpsertDirectoryRuleRequest - 133, // 226: session.v1.SessionService.DeleteDirectoryRule:input_type -> session.v1.DeleteDirectoryRuleRequest - 142, // 227: session.v1.SessionService.ListWorktrees:input_type -> session.v1.ListWorktreesRequest - 146, // 228: session.v1.SessionService.ListPromptHistory:input_type -> session.v1.ListPromptHistoryRequest - 148, // 229: session.v1.SessionService.DeletePromptHistory:input_type -> session.v1.DeletePromptHistoryRequest - 152, // 230: session.v1.SessionService.BatchCreateSessions:input_type -> session.v1.BatchCreateSessionsRequest - 154, // 231: session.v1.SessionService.RunOneShot:input_type -> session.v1.RunOneShotRequest - 157, // 232: session.v1.SessionService.CreateProject:input_type -> session.v1.CreateProjectRequest - 159, // 233: session.v1.SessionService.ListProjects:input_type -> session.v1.ListProjectsRequest - 161, // 234: session.v1.SessionService.UpdateProject:input_type -> session.v1.UpdateProjectRequest - 163, // 235: session.v1.SessionService.DeleteProject:input_type -> session.v1.DeleteProjectRequest - 165, // 236: session.v1.SessionService.AssignSessionsToProject:input_type -> session.v1.AssignSessionsToProjectRequest - 167, // 237: session.v1.SessionService.ListBranches:input_type -> session.v1.ListBranchesRequest - 169, // 238: session.v1.SessionService.GetTerminalSnapshot:input_type -> session.v1.GetTerminalSnapshotRequest - 171, // 239: session.v1.SessionService.WriteToSession:input_type -> session.v1.WriteToSessionRequest - 174, // 240: session.v1.SessionService.LogClientEvents:input_type -> session.v1.LogClientEventsRequest - 176, // 241: session.v1.SessionService.ListErrors:input_type -> session.v1.ListErrorsRequest - 179, // 242: session.v1.SessionService.AcknowledgeError:input_type -> session.v1.AcknowledgeErrorRequest - 184, // 243: session.v1.SessionService.GetFeatureFlags:input_type -> session.v1.GetFeatureFlagsRequest - 190, // 244: session.v1.SessionService.UpdateFeatureFlag:input_type -> session.v1.UpdateFeatureFlagRequest - 193, // 245: session.v1.SessionService.QueryEscapeAnalytics:input_type -> session.v1.QueryEscapeAnalyticsRequest - 196, // 246: session.v1.SessionService.GetEscapeAnalyticsSummary:input_type -> session.v1.GetEscapeAnalyticsSummaryRequest - 198, // 247: session.v1.SessionService.GetEscapeAnalyticsGlobalSummary:input_type -> session.v1.GetEscapeAnalyticsGlobalSummaryRequest - 213, // 248: session.v1.SessionService.HibernateSession:input_type -> session.v1.HibernateSessionRequest - 215, // 249: session.v1.SessionService.ResumeHibernatedSession:input_type -> session.v1.ResumeHibernatedSessionRequest - 217, // 250: session.v1.SessionService.ResumeCrashedSession:input_type -> session.v1.ResumeCrashedSessionRequest - 201, // 251: session.v1.SessionService.SpawnShell:input_type -> session.v1.SpawnShellRequest - 203, // 252: session.v1.SessionService.StopShell:input_type -> session.v1.StopShellRequest - 205, // 253: session.v1.SessionService.RestartShell:input_type -> session.v1.RestartShellRequest - 207, // 254: session.v1.SessionService.ListShells:input_type -> session.v1.ListShellsRequest - 209, // 255: session.v1.SessionService.DeleteShell:input_type -> session.v1.DeleteShellRequest - 231, // 256: session.v1.SessionService.CreateWorkflow:input_type -> session.v1.CreateWorkflowRequest - 233, // 257: session.v1.SessionService.UpdateWorkflow:input_type -> session.v1.UpdateWorkflowRequest - 235, // 258: session.v1.SessionService.DeleteWorkflow:input_type -> session.v1.DeleteWorkflowRequest - 237, // 259: session.v1.SessionService.ListWorkflows:input_type -> session.v1.ListWorkflowsRequest - 239, // 260: session.v1.SessionService.RunWorkflow:input_type -> session.v1.RunWorkflowRequest - 245, // 261: session.v1.SessionService.GetDetectionEvents:input_type -> session.v1.GetDetectionEventsRequest - 240, // 262: session.v1.SessionService.ListSlashCommands:input_type -> session.v1.ListSlashCommandsRequest - 136, // 263: session.v1.SessionService.ListAliases:input_type -> session.v1.ListAliasesRequest - 138, // 264: session.v1.SessionService.UpsertAlias:input_type -> session.v1.UpsertAliasRequest - 140, // 265: session.v1.SessionService.DeleteAlias:input_type -> session.v1.DeleteAliasRequest - 247, // 266: session.v1.SessionService.ArchiveSession:input_type -> session.v1.ArchiveSessionRequest - 249, // 267: session.v1.SessionService.UnarchiveSession:input_type -> session.v1.UnarchiveSessionRequest - 251, // 268: session.v1.SessionService.ArchiveWorkflowSessions:input_type -> session.v1.ArchiveWorkflowSessionsRequest - 253, // 269: session.v1.SessionService.DeleteWorkflowFailedSessions:input_type -> session.v1.DeleteWorkflowFailedSessionsRequest - 255, // 270: session.v1.SessionService.GetProviderLimits:input_type -> session.v1.GetProviderLimitsRequest - 186, // 271: session.v1.SessionService.GetHookStatus:input_type -> session.v1.GetHookStatusRequest - 188, // 272: session.v1.SessionService.InstallHooks:input_type -> session.v1.InstallHooksRequest - 1, // 273: session.v1.SessionService.ListSessions:output_type -> session.v1.ListSessionsResponse - 3, // 274: session.v1.SessionService.GetSession:output_type -> session.v1.GetSessionResponse - 5, // 275: session.v1.SessionService.CreateSession:output_type -> session.v1.CreateSessionResponse - 7, // 276: session.v1.SessionService.UpdateSession:output_type -> session.v1.UpdateSessionResponse - 9, // 277: session.v1.SessionService.DeleteSession:output_type -> session.v1.DeleteSessionResponse - 299, // 278: session.v1.SessionService.WatchSessions:output_type -> session.v1.SessionEvent - 298, // 279: session.v1.SessionService.StreamTerminal:output_type -> session.v1.TerminalData - 12, // 280: session.v1.SessionService.GetSessionDiff:output_type -> session.v1.GetSessionDiffResponse - 14, // 281: session.v1.SessionService.GetVCSStatus:output_type -> session.v1.GetVCSStatusResponse - 16, // 282: session.v1.SessionService.GetReviewQueue:output_type -> session.v1.GetReviewQueueResponse - 18, // 283: session.v1.SessionService.AcknowledgeSession:output_type -> session.v1.AcknowledgeSessionResponse - 20, // 284: session.v1.SessionService.GetLogs:output_type -> session.v1.GetLogsResponse - 300, // 285: session.v1.SessionService.WatchReviewQueue:output_type -> session.v1.ReviewQueueEvent - 24, // 286: session.v1.SessionService.LogUserInteraction:output_type -> session.v1.LogUserInteractionResponse - 26, // 287: session.v1.SessionService.GetClaudeConfig:output_type -> session.v1.GetClaudeConfigResponse - 28, // 288: session.v1.SessionService.ListClaudeConfigs:output_type -> session.v1.ListClaudeConfigsResponse - 30, // 289: session.v1.SessionService.UpdateClaudeConfig:output_type -> session.v1.UpdateClaudeConfigResponse - 33, // 290: session.v1.SessionService.ListClaudeHistory:output_type -> session.v1.ListClaudeHistoryResponse - 35, // 291: session.v1.SessionService.GetClaudeHistoryDetail:output_type -> session.v1.GetClaudeHistoryDetailResponse - 38, // 292: session.v1.SessionService.GetClaudeHistoryMessages:output_type -> session.v1.GetClaudeHistoryMessagesResponse - 41, // 293: session.v1.SessionService.SearchClaudeHistory:output_type -> session.v1.SearchClaudeHistoryResponse - 47, // 294: session.v1.SessionService.GetPRInfo:output_type -> session.v1.GetPRInfoResponse - 49, // 295: session.v1.SessionService.GetPRComments:output_type -> session.v1.GetPRCommentsResponse - 51, // 296: session.v1.SessionService.PostPRComment:output_type -> session.v1.PostPRCommentResponse - 53, // 297: session.v1.SessionService.MergePR:output_type -> session.v1.MergePRResponse - 55, // 298: session.v1.SessionService.ClosePR:output_type -> session.v1.ClosePRResponse - 57, // 299: session.v1.SessionService.SendNotification:output_type -> session.v1.SendNotificationResponse - 59, // 300: session.v1.SessionService.FocusWindow:output_type -> session.v1.FocusWindowResponse - 61, // 301: session.v1.SessionService.RenameSession:output_type -> session.v1.RenameSessionResponse - 63, // 302: session.v1.SessionService.RestartSession:output_type -> session.v1.RestartSessionResponse - 65, // 303: session.v1.SessionService.GetWorkspaceInfo:output_type -> session.v1.GetWorkspaceInfoResponse - 67, // 304: session.v1.SessionService.ListWorkspaceTargets:output_type -> session.v1.ListWorkspaceTargetsResponse - 73, // 305: session.v1.SessionService.SwitchWorkspace:output_type -> session.v1.SwitchWorkspaceResponse - 70, // 306: session.v1.SessionService.ResolveApproval:output_type -> session.v1.ResolveApprovalResponse - 72, // 307: session.v1.SessionService.ListPendingApprovals:output_type -> session.v1.ListPendingApprovalsResponse - 75, // 308: session.v1.SessionService.CreateDebugSnapshot:output_type -> session.v1.CreateDebugSnapshotResponse - 78, // 309: session.v1.SessionService.GetNotificationHistory:output_type -> session.v1.GetNotificationHistoryResponse - 80, // 310: session.v1.SessionService.MarkNotificationRead:output_type -> session.v1.MarkNotificationReadResponse - 82, // 311: session.v1.SessionService.ClearNotificationHistory:output_type -> session.v1.ClearNotificationHistoryResponse - 84, // 312: session.v1.SessionService.ListApprovalRules:output_type -> session.v1.ListApprovalRulesResponse - 86, // 313: session.v1.SessionService.UpsertApprovalRule:output_type -> session.v1.UpsertApprovalRuleResponse - 88, // 314: session.v1.SessionService.DeleteApprovalRule:output_type -> session.v1.DeleteApprovalRuleResponse - 90, // 315: session.v1.SessionService.GetApprovalAnalytics:output_type -> session.v1.GetApprovalAnalyticsResponse - 92, // 316: session.v1.SessionService.GetProgramAnalytics:output_type -> session.v1.GetProgramAnalyticsResponse - 212, // 317: session.v1.SessionService.GenerateSuggestedRule:output_type -> session.v1.GenerateSuggestedRuleResponse - 220, // 318: session.v1.SessionService.ValidateRules:output_type -> session.v1.ValidateRulesResponse - 223, // 319: session.v1.SessionService.ExportRules:output_type -> session.v1.ExportRulesResponse - 225, // 320: session.v1.SessionService.BulkUpsertRules:output_type -> session.v1.BulkUpsertRulesResponse - 227, // 321: session.v1.SessionService.GetConfigFileRules:output_type -> session.v1.GetConfigFileRulesResponse - 229, // 322: session.v1.SessionService.SaveRulesToConfigFile:output_type -> session.v1.SaveRulesToConfigFileResponse - 94, // 323: session.v1.SessionService.ListDatabases:output_type -> session.v1.ListDatabasesResponse - 96, // 324: session.v1.SessionService.GetCurrentDatabase:output_type -> session.v1.GetCurrentDatabaseResponse - 98, // 325: session.v1.SessionService.SwitchDatabase:output_type -> session.v1.SwitchDatabaseResponse - 100, // 326: session.v1.SessionService.MergeDatabase:output_type -> session.v1.MergeDatabaseResponse - 102, // 327: session.v1.SessionService.CreateCheckpoint:output_type -> session.v1.CreateCheckpointResponse - 104, // 328: session.v1.SessionService.ListCheckpoints:output_type -> session.v1.ListCheckpointsResponse - 106, // 329: session.v1.SessionService.ForkSession:output_type -> session.v1.ForkSessionResponse - 182, // 330: session.v1.SessionService.ClearConversationState:output_type -> session.v1.ClearConversationStateResponse - 108, // 331: session.v1.SessionService.ListFiles:output_type -> session.v1.ListFilesResponse - 110, // 332: session.v1.SessionService.GetFileContent:output_type -> session.v1.GetFileContentResponse - 112, // 333: session.v1.SessionService.SearchFiles:output_type -> session.v1.SearchFilesResponse - 114, // 334: session.v1.SessionService.ListPathCompletions:output_type -> session.v1.ListPathCompletionsResponse - 120, // 335: session.v1.SessionService.GetSessionDefaults:output_type -> session.v1.GetSessionDefaultsResponse - 124, // 336: session.v1.SessionService.ResolveDefaults:output_type -> session.v1.ResolveDefaultsResponse - 122, // 337: session.v1.SessionService.PreviewDestinationPath:output_type -> session.v1.PreviewDestinationPathResponse - 126, // 338: session.v1.SessionService.UpdateGlobalDefaults:output_type -> session.v1.UpdateGlobalDefaultsResponse - 128, // 339: session.v1.SessionService.UpsertProfile:output_type -> session.v1.UpsertProfileResponse - 130, // 340: session.v1.SessionService.DeleteProfile:output_type -> session.v1.DeleteProfileResponse - 132, // 341: session.v1.SessionService.UpsertDirectoryRule:output_type -> session.v1.UpsertDirectoryRuleResponse - 134, // 342: session.v1.SessionService.DeleteDirectoryRule:output_type -> session.v1.DeleteDirectoryRuleResponse - 144, // 343: session.v1.SessionService.ListWorktrees:output_type -> session.v1.ListWorktreesResponse - 147, // 344: session.v1.SessionService.ListPromptHistory:output_type -> session.v1.ListPromptHistoryResponse - 149, // 345: session.v1.SessionService.DeletePromptHistory:output_type -> session.v1.DeletePromptHistoryResponse - 153, // 346: session.v1.SessionService.BatchCreateSessions:output_type -> session.v1.BatchCreateSessionsResponse - 155, // 347: session.v1.SessionService.RunOneShot:output_type -> session.v1.RunOneShotResponse - 158, // 348: session.v1.SessionService.CreateProject:output_type -> session.v1.CreateProjectResponse - 160, // 349: session.v1.SessionService.ListProjects:output_type -> session.v1.ListProjectsResponse - 162, // 350: session.v1.SessionService.UpdateProject:output_type -> session.v1.UpdateProjectResponse - 164, // 351: session.v1.SessionService.DeleteProject:output_type -> session.v1.DeleteProjectResponse - 166, // 352: session.v1.SessionService.AssignSessionsToProject:output_type -> session.v1.AssignSessionsToProjectResponse - 168, // 353: session.v1.SessionService.ListBranches:output_type -> session.v1.ListBranchesResponse - 170, // 354: session.v1.SessionService.GetTerminalSnapshot:output_type -> session.v1.GetTerminalSnapshotResponse - 172, // 355: session.v1.SessionService.WriteToSession:output_type -> session.v1.WriteToSessionResponse - 175, // 356: session.v1.SessionService.LogClientEvents:output_type -> session.v1.LogClientEventsResponse - 178, // 357: session.v1.SessionService.ListErrors:output_type -> session.v1.ListErrorsResponse - 180, // 358: session.v1.SessionService.AcknowledgeError:output_type -> session.v1.AcknowledgeErrorResponse - 185, // 359: session.v1.SessionService.GetFeatureFlags:output_type -> session.v1.GetFeatureFlagsResponse - 191, // 360: session.v1.SessionService.UpdateFeatureFlag:output_type -> session.v1.UpdateFeatureFlagResponse - 194, // 361: session.v1.SessionService.QueryEscapeAnalytics:output_type -> session.v1.QueryEscapeAnalyticsResponse - 197, // 362: session.v1.SessionService.GetEscapeAnalyticsSummary:output_type -> session.v1.GetEscapeAnalyticsSummaryResponse - 199, // 363: session.v1.SessionService.GetEscapeAnalyticsGlobalSummary:output_type -> session.v1.GetEscapeAnalyticsGlobalSummaryResponse - 214, // 364: session.v1.SessionService.HibernateSession:output_type -> session.v1.HibernateSessionResponse - 216, // 365: session.v1.SessionService.ResumeHibernatedSession:output_type -> session.v1.ResumeHibernatedSessionResponse - 218, // 366: session.v1.SessionService.ResumeCrashedSession:output_type -> session.v1.ResumeCrashedSessionResponse - 202, // 367: session.v1.SessionService.SpawnShell:output_type -> session.v1.SpawnShellResponse - 204, // 368: session.v1.SessionService.StopShell:output_type -> session.v1.StopShellResponse - 206, // 369: session.v1.SessionService.RestartShell:output_type -> session.v1.RestartShellResponse - 208, // 370: session.v1.SessionService.ListShells:output_type -> session.v1.ListShellsResponse - 210, // 371: session.v1.SessionService.DeleteShell:output_type -> session.v1.DeleteShellResponse - 232, // 372: session.v1.SessionService.CreateWorkflow:output_type -> session.v1.CreateWorkflowResponse - 234, // 373: session.v1.SessionService.UpdateWorkflow:output_type -> session.v1.UpdateWorkflowResponse - 236, // 374: session.v1.SessionService.DeleteWorkflow:output_type -> session.v1.DeleteWorkflowResponse - 238, // 375: session.v1.SessionService.ListWorkflows:output_type -> session.v1.ListWorkflowsResponse - 243, // 376: session.v1.SessionService.RunWorkflow:output_type -> session.v1.RunWorkflowResponse - 246, // 377: session.v1.SessionService.GetDetectionEvents:output_type -> session.v1.GetDetectionEventsResponse - 242, // 378: session.v1.SessionService.ListSlashCommands:output_type -> session.v1.ListSlashCommandsResponse - 137, // 379: session.v1.SessionService.ListAliases:output_type -> session.v1.ListAliasesResponse - 139, // 380: session.v1.SessionService.UpsertAlias:output_type -> session.v1.UpsertAliasResponse - 141, // 381: session.v1.SessionService.DeleteAlias:output_type -> session.v1.DeleteAliasResponse - 248, // 382: session.v1.SessionService.ArchiveSession:output_type -> session.v1.ArchiveSessionResponse - 250, // 383: session.v1.SessionService.UnarchiveSession:output_type -> session.v1.UnarchiveSessionResponse - 252, // 384: session.v1.SessionService.ArchiveWorkflowSessions:output_type -> session.v1.ArchiveWorkflowSessionsResponse - 254, // 385: session.v1.SessionService.DeleteWorkflowFailedSessions:output_type -> session.v1.DeleteWorkflowFailedSessionsResponse - 257, // 386: session.v1.SessionService.GetProviderLimits:output_type -> session.v1.GetProviderLimitsResponse - 187, // 387: session.v1.SessionService.GetHookStatus:output_type -> session.v1.GetHookStatusResponse - 189, // 388: session.v1.SessionService.InstallHooks:output_type -> session.v1.InstallHooksResponse - 273, // [273:389] is the sub-list for method output_type - 157, // [157:273] is the sub-list for method input_type - 157, // [157:157] is the sub-list for extension type_name - 157, // [157:157] is the sub-list for extension extendee - 0, // [0:157] is the sub-list for field type_name -} - -func init() { file_session_v1_session_proto_init() } -func file_session_v1_session_proto_init() { - if File_session_v1_session_proto != nil { - return - } - file_session_v1_types_proto_init() - file_session_v1_events_proto_init() - file_session_v1_session_proto_msgTypes[0].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[6].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[10].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[15].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[19].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[21].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[23].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[24].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[32].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[37].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[40].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[52].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[58].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[69].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[71].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[74].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[76].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[77].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[81].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[83].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[89].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[91].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[198].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[211].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[230].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[231].OneofWrappers = []any{} - file_session_v1_session_proto_msgTypes[233].OneofWrappers = []any{} - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_session_v1_session_proto_rawDesc), len(file_session_v1_session_proto_rawDesc)), - NumEnums: 0, - NumMessages: 268, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_session_v1_session_proto_goTypes, - DependencyIndexes: file_session_v1_session_proto_depIdxs, - MessageInfos: file_session_v1_session_proto_msgTypes, - }.Build() - File_session_v1_session_proto = out.File - file_session_v1_session_proto_goTypes = nil - file_session_v1_session_proto_depIdxs = nil -} diff --git a/gen/proto/go/session/v1/session_summary.pb.go b/gen/proto/go/session/v1/session_summary.pb.go deleted file mode 100644 index f000ec213..000000000 --- a/gen/proto/go/session/v1/session_summary.pb.go +++ /dev/null @@ -1,739 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.12 -// protoc (unknown) -// source: session/v1/session_summary.proto - -package sessionv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// SessionSummaryProto is the completion summary for a single session. -type SessionSummaryProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - SessionTitle string `protobuf:"bytes,2,opt,name=session_title,json=sessionTitle,proto3" json:"session_title,omitempty"` - Status SessionSummaryStatus `protobuf:"varint,3,opt,name=status,proto3,enum=session.v1.SessionSummaryStatus" json:"status,omitempty"` - Narrative string `protobuf:"bytes,4,opt,name=narrative,proto3" json:"narrative,omitempty"` - NarrativeFallbackUsed bool `protobuf:"varint,5,opt,name=narrative_fallback_used,json=narrativeFallbackUsed,proto3" json:"narrative_fallback_used,omitempty"` - Diff *SessionSummaryProto_Diff `protobuf:"bytes,6,opt,name=diff,proto3" json:"diff,omitempty"` - Decisions *SessionSummaryProto_Decisions `protobuf:"bytes,7,opt,name=decisions,proto3" json:"decisions,omitempty"` - Timeline *SessionSummaryProto_Timeline `protobuf:"bytes,8,opt,name=timeline,proto3" json:"timeline,omitempty"` - Cost *SessionSummaryProto_Cost `protobuf:"bytes,9,opt,name=cost,proto3" json:"cost,omitempty"` - Markdown string `protobuf:"bytes,10,opt,name=markdown,proto3" json:"markdown,omitempty"` - ErrorMessage string `protobuf:"bytes,11,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - ErrorStage string `protobuf:"bytes,12,opt,name=error_stage,json=errorStage,proto3" json:"error_stage,omitempty"` - GeneratedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=generated_at,json=generatedAt,proto3" json:"generated_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionSummaryProto) Reset() { - *x = SessionSummaryProto{} - mi := &file_session_v1_session_summary_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionSummaryProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionSummaryProto) ProtoMessage() {} - -func (x *SessionSummaryProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_summary_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionSummaryProto.ProtoReflect.Descriptor instead. -func (*SessionSummaryProto) Descriptor() ([]byte, []int) { - return file_session_v1_session_summary_proto_rawDescGZIP(), []int{0} -} - -func (x *SessionSummaryProto) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *SessionSummaryProto) GetSessionTitle() string { - if x != nil { - return x.SessionTitle - } - return "" -} - -func (x *SessionSummaryProto) GetStatus() SessionSummaryStatus { - if x != nil { - return x.Status - } - return SessionSummaryStatus_SESSION_SUMMARY_STATUS_UNSPECIFIED -} - -func (x *SessionSummaryProto) GetNarrative() string { - if x != nil { - return x.Narrative - } - return "" -} - -func (x *SessionSummaryProto) GetNarrativeFallbackUsed() bool { - if x != nil { - return x.NarrativeFallbackUsed - } - return false -} - -func (x *SessionSummaryProto) GetDiff() *SessionSummaryProto_Diff { - if x != nil { - return x.Diff - } - return nil -} - -func (x *SessionSummaryProto) GetDecisions() *SessionSummaryProto_Decisions { - if x != nil { - return x.Decisions - } - return nil -} - -func (x *SessionSummaryProto) GetTimeline() *SessionSummaryProto_Timeline { - if x != nil { - return x.Timeline - } - return nil -} - -func (x *SessionSummaryProto) GetCost() *SessionSummaryProto_Cost { - if x != nil { - return x.Cost - } - return nil -} - -func (x *SessionSummaryProto) GetMarkdown() string { - if x != nil { - return x.Markdown - } - return "" -} - -func (x *SessionSummaryProto) GetErrorMessage() string { - if x != nil { - return x.ErrorMessage - } - return "" -} - -func (x *SessionSummaryProto) GetErrorStage() string { - if x != nil { - return x.ErrorStage - } - return "" -} - -func (x *SessionSummaryProto) GetGeneratedAt() *timestamppb.Timestamp { - if x != nil { - return x.GeneratedAt - } - return nil -} - -type GetSessionSummaryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionSummaryRequest) Reset() { - *x = GetSessionSummaryRequest{} - mi := &file_session_v1_session_summary_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionSummaryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionSummaryRequest) ProtoMessage() {} - -func (x *GetSessionSummaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_summary_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionSummaryRequest.ProtoReflect.Descriptor instead. -func (*GetSessionSummaryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_summary_proto_rawDescGZIP(), []int{1} -} - -func (x *GetSessionSummaryRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -type GetSessionSummaryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // summary is unset/null when no row exists yet (e.g. session still running). - Summary *SessionSummaryProto `protobuf:"bytes,1,opt,name=summary,proto3,oneof" json:"summary,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionSummaryResponse) Reset() { - *x = GetSessionSummaryResponse{} - mi := &file_session_v1_session_summary_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionSummaryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionSummaryResponse) ProtoMessage() {} - -func (x *GetSessionSummaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_summary_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSessionSummaryResponse.ProtoReflect.Descriptor instead. -func (*GetSessionSummaryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_summary_proto_rawDescGZIP(), []int{2} -} - -func (x *GetSessionSummaryResponse) GetSummary() *SessionSummaryProto { - if x != nil { - return x.Summary - } - return nil -} - -type RegenerateSessionSummaryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RegenerateSessionSummaryRequest) Reset() { - *x = RegenerateSessionSummaryRequest{} - mi := &file_session_v1_session_summary_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RegenerateSessionSummaryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RegenerateSessionSummaryRequest) ProtoMessage() {} - -func (x *RegenerateSessionSummaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_summary_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RegenerateSessionSummaryRequest.ProtoReflect.Descriptor instead. -func (*RegenerateSessionSummaryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_session_summary_proto_rawDescGZIP(), []int{3} -} - -func (x *RegenerateSessionSummaryRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -type RegenerateSessionSummaryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Summary *SessionSummaryProto `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RegenerateSessionSummaryResponse) Reset() { - *x = RegenerateSessionSummaryResponse{} - mi := &file_session_v1_session_summary_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RegenerateSessionSummaryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RegenerateSessionSummaryResponse) ProtoMessage() {} - -func (x *RegenerateSessionSummaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_summary_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RegenerateSessionSummaryResponse.ProtoReflect.Descriptor instead. -func (*RegenerateSessionSummaryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_session_summary_proto_rawDescGZIP(), []int{4} -} - -func (x *RegenerateSessionSummaryResponse) GetSummary() *SessionSummaryProto { - if x != nil { - return x.Summary - } - return nil -} - -// Diff aggregates file change stats for the session. -type SessionSummaryProto_Diff struct { - state protoimpl.MessageState `protogen:"open.v1"` - FilesChanged int32 `protobuf:"varint,1,opt,name=files_changed,json=filesChanged,proto3" json:"files_changed,omitempty"` - Added int32 `protobuf:"varint,2,opt,name=added,proto3" json:"added,omitempty"` - Removed int32 `protobuf:"varint,3,opt,name=removed,proto3" json:"removed,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionSummaryProto_Diff) Reset() { - *x = SessionSummaryProto_Diff{} - mi := &file_session_v1_session_summary_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionSummaryProto_Diff) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionSummaryProto_Diff) ProtoMessage() {} - -func (x *SessionSummaryProto_Diff) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_summary_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionSummaryProto_Diff.ProtoReflect.Descriptor instead. -func (*SessionSummaryProto_Diff) Descriptor() ([]byte, []int) { - return file_session_v1_session_summary_proto_rawDescGZIP(), []int{0, 0} -} - -func (x *SessionSummaryProto_Diff) GetFilesChanged() int32 { - if x != nil { - return x.FilesChanged - } - return 0 -} - -func (x *SessionSummaryProto_Diff) GetAdded() int32 { - if x != nil { - return x.Added - } - return 0 -} - -func (x *SessionSummaryProto_Diff) GetRemoved() int32 { - if x != nil { - return x.Removed - } - return 0 -} - -// Decisions aggregates review/approval outcomes for the session. -type SessionSummaryProto_Decisions struct { - state protoimpl.MessageState `protogen:"open.v1"` - AutoApproved int32 `protobuf:"varint,1,opt,name=auto_approved,json=autoApproved,proto3" json:"auto_approved,omitempty"` - ManuallyApproved int32 `protobuf:"varint,2,opt,name=manually_approved,json=manuallyApproved,proto3" json:"manually_approved,omitempty"` - Denied int32 `protobuf:"varint,3,opt,name=denied,proto3" json:"denied,omitempty"` - ReviewQueueResolved int32 `protobuf:"varint,4,opt,name=review_queue_resolved,json=reviewQueueResolved,proto3" json:"review_queue_resolved,omitempty"` - StillOpen int32 `protobuf:"varint,5,opt,name=still_open,json=stillOpen,proto3" json:"still_open,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionSummaryProto_Decisions) Reset() { - *x = SessionSummaryProto_Decisions{} - mi := &file_session_v1_session_summary_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionSummaryProto_Decisions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionSummaryProto_Decisions) ProtoMessage() {} - -func (x *SessionSummaryProto_Decisions) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_summary_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionSummaryProto_Decisions.ProtoReflect.Descriptor instead. -func (*SessionSummaryProto_Decisions) Descriptor() ([]byte, []int) { - return file_session_v1_session_summary_proto_rawDescGZIP(), []int{0, 1} -} - -func (x *SessionSummaryProto_Decisions) GetAutoApproved() int32 { - if x != nil { - return x.AutoApproved - } - return 0 -} - -func (x *SessionSummaryProto_Decisions) GetManuallyApproved() int32 { - if x != nil { - return x.ManuallyApproved - } - return 0 -} - -func (x *SessionSummaryProto_Decisions) GetDenied() int32 { - if x != nil { - return x.Denied - } - return 0 -} - -func (x *SessionSummaryProto_Decisions) GetReviewQueueResolved() int32 { - if x != nil { - return x.ReviewQueueResolved - } - return 0 -} - -func (x *SessionSummaryProto_Decisions) GetStillOpen() int32 { - if x != nil { - return x.StillOpen - } - return 0 -} - -// Timeline records when the session ran and for how long. -type SessionSummaryProto_Timeline struct { - state protoimpl.MessageState `protogen:"open.v1"` - StartedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` - StoppedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=stopped_at,json=stoppedAt,proto3" json:"stopped_at,omitempty"` - DurationMs int64 `protobuf:"varint,3,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionSummaryProto_Timeline) Reset() { - *x = SessionSummaryProto_Timeline{} - mi := &file_session_v1_session_summary_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionSummaryProto_Timeline) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionSummaryProto_Timeline) ProtoMessage() {} - -func (x *SessionSummaryProto_Timeline) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_summary_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionSummaryProto_Timeline.ProtoReflect.Descriptor instead. -func (*SessionSummaryProto_Timeline) Descriptor() ([]byte, []int) { - return file_session_v1_session_summary_proto_rawDescGZIP(), []int{0, 2} -} - -func (x *SessionSummaryProto_Timeline) GetStartedAt() *timestamppb.Timestamp { - if x != nil { - return x.StartedAt - } - return nil -} - -func (x *SessionSummaryProto_Timeline) GetStoppedAt() *timestamppb.Timestamp { - if x != nil { - return x.StoppedAt - } - return nil -} - -func (x *SessionSummaryProto_Timeline) GetDurationMs() int64 { - if x != nil { - return x.DurationMs - } - return 0 -} - -// Cost aggregates token usage and estimated spend for the session. -type SessionSummaryProto_Cost struct { - state protoimpl.MessageState `protogen:"open.v1"` - TotalTokens int64 `protobuf:"varint,1,opt,name=total_tokens,json=totalTokens,proto3" json:"total_tokens,omitempty"` - EstimatedCostUsd float64 `protobuf:"fixed64,2,opt,name=estimated_cost_usd,json=estimatedCostUsd,proto3" json:"estimated_cost_usd,omitempty"` - DataUnavailable bool `protobuf:"varint,3,opt,name=data_unavailable,json=dataUnavailable,proto3" json:"data_unavailable,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionSummaryProto_Cost) Reset() { - *x = SessionSummaryProto_Cost{} - mi := &file_session_v1_session_summary_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionSummaryProto_Cost) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionSummaryProto_Cost) ProtoMessage() {} - -func (x *SessionSummaryProto_Cost) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_session_summary_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionSummaryProto_Cost.ProtoReflect.Descriptor instead. -func (*SessionSummaryProto_Cost) Descriptor() ([]byte, []int) { - return file_session_v1_session_summary_proto_rawDescGZIP(), []int{0, 3} -} - -func (x *SessionSummaryProto_Cost) GetTotalTokens() int64 { - if x != nil { - return x.TotalTokens - } - return 0 -} - -func (x *SessionSummaryProto_Cost) GetEstimatedCostUsd() float64 { - if x != nil { - return x.EstimatedCostUsd - } - return 0 -} - -func (x *SessionSummaryProto_Cost) GetDataUnavailable() bool { - if x != nil { - return x.DataUnavailable - } - return false -} - -var File_session_v1_session_summary_proto protoreflect.FileDescriptor - -const file_session_v1_session_summary_proto_rawDesc = "" + - "\n" + - " session/v1/session_summary.proto\x12\n" + - "session.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x16session/v1/types.proto\"\xde\t\n" + - "\x13SessionSummaryProto\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12#\n" + - "\rsession_title\x18\x02 \x01(\tR\fsessionTitle\x128\n" + - "\x06status\x18\x03 \x01(\x0e2 .session.v1.SessionSummaryStatusR\x06status\x12\x1c\n" + - "\tnarrative\x18\x04 \x01(\tR\tnarrative\x126\n" + - "\x17narrative_fallback_used\x18\x05 \x01(\bR\x15narrativeFallbackUsed\x128\n" + - "\x04diff\x18\x06 \x01(\v2$.session.v1.SessionSummaryProto.DiffR\x04diff\x12G\n" + - "\tdecisions\x18\a \x01(\v2).session.v1.SessionSummaryProto.DecisionsR\tdecisions\x12D\n" + - "\btimeline\x18\b \x01(\v2(.session.v1.SessionSummaryProto.TimelineR\btimeline\x128\n" + - "\x04cost\x18\t \x01(\v2$.session.v1.SessionSummaryProto.CostR\x04cost\x12\x1a\n" + - "\bmarkdown\x18\n" + - " \x01(\tR\bmarkdown\x12#\n" + - "\rerror_message\x18\v \x01(\tR\ferrorMessage\x12\x1f\n" + - "\verror_stage\x18\f \x01(\tR\n" + - "errorStage\x12=\n" + - "\fgenerated_at\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\vgeneratedAt\x1a[\n" + - "\x04Diff\x12#\n" + - "\rfiles_changed\x18\x01 \x01(\x05R\ffilesChanged\x12\x14\n" + - "\x05added\x18\x02 \x01(\x05R\x05added\x12\x18\n" + - "\aremoved\x18\x03 \x01(\x05R\aremoved\x1a\xc8\x01\n" + - "\tDecisions\x12#\n" + - "\rauto_approved\x18\x01 \x01(\x05R\fautoApproved\x12+\n" + - "\x11manually_approved\x18\x02 \x01(\x05R\x10manuallyApproved\x12\x16\n" + - "\x06denied\x18\x03 \x01(\x05R\x06denied\x122\n" + - "\x15review_queue_resolved\x18\x04 \x01(\x05R\x13reviewQueueResolved\x12\x1d\n" + - "\n" + - "still_open\x18\x05 \x01(\x05R\tstillOpen\x1a\xa1\x01\n" + - "\bTimeline\x129\n" + - "\n" + - "started_at\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x129\n" + - "\n" + - "stopped_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tstoppedAt\x12\x1f\n" + - "\vduration_ms\x18\x03 \x01(\x03R\n" + - "durationMs\x1a\x82\x01\n" + - "\x04Cost\x12!\n" + - "\ftotal_tokens\x18\x01 \x01(\x03R\vtotalTokens\x12,\n" + - "\x12estimated_cost_usd\x18\x02 \x01(\x01R\x10estimatedCostUsd\x12)\n" + - "\x10data_unavailable\x18\x03 \x01(\bR\x0fdataUnavailable\"9\n" + - "\x18GetSessionSummaryRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\"g\n" + - "\x19GetSessionSummaryResponse\x12>\n" + - "\asummary\x18\x01 \x01(\v2\x1f.session.v1.SessionSummaryProtoH\x00R\asummary\x88\x01\x01B\n" + - "\n" + - "\b_summary\"@\n" + - "\x1fRegenerateSessionSummaryRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\"]\n" + - " RegenerateSessionSummaryResponse\x129\n" + - "\asummary\x18\x01 \x01(\v2\x1f.session.v1.SessionSummaryProtoR\asummary2\xf4\x01\n" + - "\x15SessionSummaryService\x12b\n" + - "\x11GetSessionSummary\x12$.session.v1.GetSessionSummaryRequest\x1a%.session.v1.GetSessionSummaryResponse\"\x00\x12w\n" + - "\x18RegenerateSessionSummary\x12+.session.v1.RegenerateSessionSummaryRequest\x1a,.session.v1.RegenerateSessionSummaryResponse\"\x00B\xb3\x01\n" + - "\x0ecom.session.v1B\x13SessionSummaryProtoP\x01ZCgithub.com/tstapler/stapler-squad/gen/proto/go/session/v1;sessionv1\xa2\x02\x03SXX\xaa\x02\n" + - "Session.V1\xca\x02\n" + - "Session\\V1\xe2\x02\x16Session\\V1\\GPBMetadata\xea\x02\vSession::V1b\x06proto3" - -var ( - file_session_v1_session_summary_proto_rawDescOnce sync.Once - file_session_v1_session_summary_proto_rawDescData []byte -) - -func file_session_v1_session_summary_proto_rawDescGZIP() []byte { - file_session_v1_session_summary_proto_rawDescOnce.Do(func() { - file_session_v1_session_summary_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_session_v1_session_summary_proto_rawDesc), len(file_session_v1_session_summary_proto_rawDesc))) - }) - return file_session_v1_session_summary_proto_rawDescData -} - -var file_session_v1_session_summary_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_session_v1_session_summary_proto_goTypes = []any{ - (*SessionSummaryProto)(nil), // 0: session.v1.SessionSummaryProto - (*GetSessionSummaryRequest)(nil), // 1: session.v1.GetSessionSummaryRequest - (*GetSessionSummaryResponse)(nil), // 2: session.v1.GetSessionSummaryResponse - (*RegenerateSessionSummaryRequest)(nil), // 3: session.v1.RegenerateSessionSummaryRequest - (*RegenerateSessionSummaryResponse)(nil), // 4: session.v1.RegenerateSessionSummaryResponse - (*SessionSummaryProto_Diff)(nil), // 5: session.v1.SessionSummaryProto.Diff - (*SessionSummaryProto_Decisions)(nil), // 6: session.v1.SessionSummaryProto.Decisions - (*SessionSummaryProto_Timeline)(nil), // 7: session.v1.SessionSummaryProto.Timeline - (*SessionSummaryProto_Cost)(nil), // 8: session.v1.SessionSummaryProto.Cost - (SessionSummaryStatus)(0), // 9: session.v1.SessionSummaryStatus - (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp -} -var file_session_v1_session_summary_proto_depIdxs = []int32{ - 9, // 0: session.v1.SessionSummaryProto.status:type_name -> session.v1.SessionSummaryStatus - 5, // 1: session.v1.SessionSummaryProto.diff:type_name -> session.v1.SessionSummaryProto.Diff - 6, // 2: session.v1.SessionSummaryProto.decisions:type_name -> session.v1.SessionSummaryProto.Decisions - 7, // 3: session.v1.SessionSummaryProto.timeline:type_name -> session.v1.SessionSummaryProto.Timeline - 8, // 4: session.v1.SessionSummaryProto.cost:type_name -> session.v1.SessionSummaryProto.Cost - 10, // 5: session.v1.SessionSummaryProto.generated_at:type_name -> google.protobuf.Timestamp - 0, // 6: session.v1.GetSessionSummaryResponse.summary:type_name -> session.v1.SessionSummaryProto - 0, // 7: session.v1.RegenerateSessionSummaryResponse.summary:type_name -> session.v1.SessionSummaryProto - 10, // 8: session.v1.SessionSummaryProto.Timeline.started_at:type_name -> google.protobuf.Timestamp - 10, // 9: session.v1.SessionSummaryProto.Timeline.stopped_at:type_name -> google.protobuf.Timestamp - 1, // 10: session.v1.SessionSummaryService.GetSessionSummary:input_type -> session.v1.GetSessionSummaryRequest - 3, // 11: session.v1.SessionSummaryService.RegenerateSessionSummary:input_type -> session.v1.RegenerateSessionSummaryRequest - 2, // 12: session.v1.SessionSummaryService.GetSessionSummary:output_type -> session.v1.GetSessionSummaryResponse - 4, // 13: session.v1.SessionSummaryService.RegenerateSessionSummary:output_type -> session.v1.RegenerateSessionSummaryResponse - 12, // [12:14] is the sub-list for method output_type - 10, // [10:12] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name -} - -func init() { file_session_v1_session_summary_proto_init() } -func file_session_v1_session_summary_proto_init() { - if File_session_v1_session_summary_proto != nil { - return - } - file_session_v1_types_proto_init() - file_session_v1_session_summary_proto_msgTypes[2].OneofWrappers = []any{} - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_session_v1_session_summary_proto_rawDesc), len(file_session_v1_session_summary_proto_rawDesc)), - NumEnums: 0, - NumMessages: 9, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_session_v1_session_summary_proto_goTypes, - DependencyIndexes: file_session_v1_session_summary_proto_depIdxs, - MessageInfos: file_session_v1_session_summary_proto_msgTypes, - }.Build() - File_session_v1_session_summary_proto = out.File - file_session_v1_session_summary_proto_goTypes = nil - file_session_v1_session_summary_proto_depIdxs = nil -} diff --git a/gen/proto/go/session/v1/sessionv1connect/backlog.connect.go b/gen/proto/go/session/v1/sessionv1connect/backlog.connect.go deleted file mode 100644 index 7ab74ed25..000000000 --- a/gen/proto/go/session/v1/sessionv1connect/backlog.connect.go +++ /dev/null @@ -1,1448 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: session/v1/backlog.proto - -package sessionv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/tstapler/stapler-squad/gen/proto/go/session/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion1_13_0 - -const ( - // BacklogServiceName is the fully-qualified name of the BacklogService service. - BacklogServiceName = "session.v1.BacklogService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // BacklogServiceCreateBacklogItemProcedure is the fully-qualified name of the BacklogService's - // CreateBacklogItem RPC. - BacklogServiceCreateBacklogItemProcedure = "/session.v1.BacklogService/CreateBacklogItem" - // BacklogServiceGetBacklogItemProcedure is the fully-qualified name of the BacklogService's - // GetBacklogItem RPC. - BacklogServiceGetBacklogItemProcedure = "/session.v1.BacklogService/GetBacklogItem" - // BacklogServiceGetBacklogItemShipStatusProcedure is the fully-qualified name of the - // BacklogService's GetBacklogItemShipStatus RPC. - BacklogServiceGetBacklogItemShipStatusProcedure = "/session.v1.BacklogService/GetBacklogItemShipStatus" - // BacklogServiceListBacklogItemsProcedure is the fully-qualified name of the BacklogService's - // ListBacklogItems RPC. - BacklogServiceListBacklogItemsProcedure = "/session.v1.BacklogService/ListBacklogItems" - // BacklogServiceUpdateBacklogItemProcedure is the fully-qualified name of the BacklogService's - // UpdateBacklogItem RPC. - BacklogServiceUpdateBacklogItemProcedure = "/session.v1.BacklogService/UpdateBacklogItem" - // BacklogServiceArchiveBacklogItemProcedure is the fully-qualified name of the BacklogService's - // ArchiveBacklogItem RPC. - BacklogServiceArchiveBacklogItemProcedure = "/session.v1.BacklogService/ArchiveBacklogItem" - // BacklogServiceDeleteBacklogItemProcedure is the fully-qualified name of the BacklogService's - // DeleteBacklogItem RPC. - BacklogServiceDeleteBacklogItemProcedure = "/session.v1.BacklogService/DeleteBacklogItem" - // BacklogServiceTransitionBacklogItemStatusProcedure is the fully-qualified name of the - // BacklogService's TransitionBacklogItemStatus RPC. - BacklogServiceTransitionBacklogItemStatusProcedure = "/session.v1.BacklogService/TransitionBacklogItemStatus" - // BacklogServiceSpawnSessionFromItemProcedure is the fully-qualified name of the BacklogService's - // SpawnSessionFromItem RPC. - BacklogServiceSpawnSessionFromItemProcedure = "/session.v1.BacklogService/SpawnSessionFromItem" - // BacklogServiceAttachSessionToItemProcedure is the fully-qualified name of the BacklogService's - // AttachSessionToItem RPC. - BacklogServiceAttachSessionToItemProcedure = "/session.v1.BacklogService/AttachSessionToItem" - // BacklogServiceTriggerTriageProcedure is the fully-qualified name of the BacklogService's - // TriggerTriage RPC. - BacklogServiceTriggerTriageProcedure = "/session.v1.BacklogService/TriggerTriage" - // BacklogServiceCancelTriageProcedure is the fully-qualified name of the BacklogService's - // CancelTriage RPC. - BacklogServiceCancelTriageProcedure = "/session.v1.BacklogService/CancelTriage" - // BacklogServiceApprovePlanProcedure is the fully-qualified name of the BacklogService's - // ApprovePlan RPC. - BacklogServiceApprovePlanProcedure = "/session.v1.BacklogService/ApprovePlan" - // BacklogServiceSuggestNextItemProcedure is the fully-qualified name of the BacklogService's - // SuggestNextItem RPC. - BacklogServiceSuggestNextItemProcedure = "/session.v1.BacklogService/SuggestNextItem" - // BacklogServiceOverrideVerdictProcedure is the fully-qualified name of the BacklogService's - // OverrideVerdict RPC. - BacklogServiceOverrideVerdictProcedure = "/session.v1.BacklogService/OverrideVerdict" - // BacklogServiceTriggerReReviewProcedure is the fully-qualified name of the BacklogService's - // TriggerReReview RPC. - BacklogServiceTriggerReReviewProcedure = "/session.v1.BacklogService/TriggerReReview" - // BacklogServiceTriggerShipPRProcedure is the fully-qualified name of the BacklogService's - // TriggerShipPR RPC. - BacklogServiceTriggerShipPRProcedure = "/session.v1.BacklogService/TriggerShipPR" - // BacklogServiceTriggerSyncProcedure is the fully-qualified name of the BacklogService's - // TriggerSync RPC. - BacklogServiceTriggerSyncProcedure = "/session.v1.BacklogService/TriggerSync" - // BacklogServiceCreateItemSourceProcedure is the fully-qualified name of the BacklogService's - // CreateItemSource RPC. - BacklogServiceCreateItemSourceProcedure = "/session.v1.BacklogService/CreateItemSource" - // BacklogServiceListItemSourcesProcedure is the fully-qualified name of the BacklogService's - // ListItemSources RPC. - BacklogServiceListItemSourcesProcedure = "/session.v1.BacklogService/ListItemSources" - // BacklogServiceUpdateItemSourceProcedure is the fully-qualified name of the BacklogService's - // UpdateItemSource RPC. - BacklogServiceUpdateItemSourceProcedure = "/session.v1.BacklogService/UpdateItemSource" - // BacklogServiceDeleteItemSourceProcedure is the fully-qualified name of the BacklogService's - // DeleteItemSource RPC. - BacklogServiceDeleteItemSourceProcedure = "/session.v1.BacklogService/DeleteItemSource" - // BacklogServiceGetSyncHistoryProcedure is the fully-qualified name of the BacklogService's - // GetSyncHistory RPC. - BacklogServiceGetSyncHistoryProcedure = "/session.v1.BacklogService/GetSyncHistory" - // BacklogServicePreviewBackwardSyncImpactProcedure is the fully-qualified name of the - // BacklogService's PreviewBackwardSyncImpact RPC. - BacklogServicePreviewBackwardSyncImpactProcedure = "/session.v1.BacklogService/PreviewBackwardSyncImpact" - // BacklogServiceCreatePipelineModeProcedure is the fully-qualified name of the BacklogService's - // CreatePipelineMode RPC. - BacklogServiceCreatePipelineModeProcedure = "/session.v1.BacklogService/CreatePipelineMode" - // BacklogServiceUpdatePipelineModeProcedure is the fully-qualified name of the BacklogService's - // UpdatePipelineMode RPC. - BacklogServiceUpdatePipelineModeProcedure = "/session.v1.BacklogService/UpdatePipelineMode" - // BacklogServiceDeletePipelineModeProcedure is the fully-qualified name of the BacklogService's - // DeletePipelineMode RPC. - BacklogServiceDeletePipelineModeProcedure = "/session.v1.BacklogService/DeletePipelineMode" - // BacklogServiceGetPipelineModeProcedure is the fully-qualified name of the BacklogService's - // GetPipelineMode RPC. - BacklogServiceGetPipelineModeProcedure = "/session.v1.BacklogService/GetPipelineMode" - // BacklogServiceListPipelineModesProcedure is the fully-qualified name of the BacklogService's - // ListPipelineModes RPC. - BacklogServiceListPipelineModesProcedure = "/session.v1.BacklogService/ListPipelineModes" - // BacklogServiceImportGitHubIssueProcedure is the fully-qualified name of the BacklogService's - // ImportGitHubIssue RPC. - BacklogServiceImportGitHubIssueProcedure = "/session.v1.BacklogService/ImportGitHubIssue" - // BacklogServiceSearchGitHubReposProcedure is the fully-qualified name of the BacklogService's - // SearchGitHubRepos RPC. - BacklogServiceSearchGitHubReposProcedure = "/session.v1.BacklogService/SearchGitHubRepos" - // BacklogServiceListGitHubIssuesProcedure is the fully-qualified name of the BacklogService's - // ListGitHubIssues RPC. - BacklogServiceListGitHubIssuesProcedure = "/session.v1.BacklogService/ListGitHubIssues" - // BacklogServiceGetBacklogItemDiffProcedure is the fully-qualified name of the BacklogService's - // GetBacklogItemDiff RPC. - BacklogServiceGetBacklogItemDiffProcedure = "/session.v1.BacklogService/GetBacklogItemDiff" - // BacklogServiceGetBacklogItemCostProcedure is the fully-qualified name of the BacklogService's - // GetBacklogItemCost RPC. - BacklogServiceGetBacklogItemCostProcedure = "/session.v1.BacklogService/GetBacklogItemCost" - // BacklogServiceGetSessionBacklogIndexProcedure is the fully-qualified name of the BacklogService's - // GetSessionBacklogIndex RPC. - BacklogServiceGetSessionBacklogIndexProcedure = "/session.v1.BacklogService/GetSessionBacklogIndex" - // BacklogServiceSubmitManualReviewProcedure is the fully-qualified name of the BacklogService's - // SubmitManualReview RPC. - BacklogServiceSubmitManualReviewProcedure = "/session.v1.BacklogService/SubmitManualReview" - // BacklogServiceListStuckBacklogItemsProcedure is the fully-qualified name of the BacklogService's - // ListStuckBacklogItems RPC. - BacklogServiceListStuckBacklogItemsProcedure = "/session.v1.BacklogService/ListStuckBacklogItems" - // BacklogServiceSnoozeStuckItemProcedure is the fully-qualified name of the BacklogService's - // SnoozeStuckItem RPC. - BacklogServiceSnoozeStuckItemProcedure = "/session.v1.BacklogService/SnoozeStuckItem" - // BacklogServiceResetStuckRemediationProcedure is the fully-qualified name of the BacklogService's - // ResetStuckRemediation RPC. - BacklogServiceResetStuckRemediationProcedure = "/session.v1.BacklogService/ResetStuckRemediation" - // BacklogServiceBulkResetStuckRemediationProcedure is the fully-qualified name of the - // BacklogService's BulkResetStuckRemediation RPC. - BacklogServiceBulkResetStuckRemediationProcedure = "/session.v1.BacklogService/BulkResetStuckRemediation" - // BacklogServiceTriggerRemediationNowProcedure is the fully-qualified name of the BacklogService's - // TriggerRemediationNow RPC. - BacklogServiceTriggerRemediationNowProcedure = "/session.v1.BacklogService/TriggerRemediationNow" - // BacklogServiceWatchBacklogItemsProcedure is the fully-qualified name of the BacklogService's - // WatchBacklogItems RPC. - BacklogServiceWatchBacklogItemsProcedure = "/session.v1.BacklogService/WatchBacklogItems" -) - -// BacklogServiceClient is a client for the session.v1.BacklogService service. -type BacklogServiceClient interface { - // CreateBacklogItem adds a new item to the backlog. - CreateBacklogItem(context.Context, *connect.Request[v1.CreateBacklogItemRequest]) (*connect.Response[v1.CreateBacklogItemResponse], error) - // GetBacklogItem retrieves a single backlog item by ID. - GetBacklogItem(context.Context, *connect.Request[v1.GetBacklogItemRequest]) (*connect.Response[v1.GetBacklogItemResponse], error) - // GetBacklogItemShipStatus answers "did this item's code actually ship" from - // repo_path + the most recent work session's commit — works even once the - // work session's own worktree has been cleaned up (e.g. a "done" item), - // unlike the live per-session VCSStatus widget. - GetBacklogItemShipStatus(context.Context, *connect.Request[v1.GetBacklogItemShipStatusRequest]) (*connect.Response[v1.GetBacklogItemShipStatusResponse], error) - // ListBacklogItems returns backlog items with optional filtering and sorting. - ListBacklogItems(context.Context, *connect.Request[v1.ListBacklogItemsRequest]) (*connect.Response[v1.ListBacklogItemsResponse], error) - // UpdateBacklogItem modifies the properties of an existing backlog item. - UpdateBacklogItem(context.Context, *connect.Request[v1.UpdateBacklogItemRequest]) (*connect.Response[v1.UpdateBacklogItemResponse], error) - // ArchiveBacklogItem soft-deletes an item by setting its archived_at timestamp. - ArchiveBacklogItem(context.Context, *connect.Request[v1.ArchiveBacklogItemRequest]) (*connect.Response[v1.ArchiveBacklogItemResponse], error) - // DeleteBacklogItem permanently removes an item and all its child records. - DeleteBacklogItem(context.Context, *connect.Request[v1.DeleteBacklogItemRequest]) (*connect.Response[v1.DeleteBacklogItemResponse], error) - // TransitionBacklogItemStatus moves an item through the status state machine. - TransitionBacklogItemStatus(context.Context, *connect.Request[v1.TransitionBacklogItemStatusRequest]) (*connect.Response[v1.TransitionBacklogItemStatusResponse], error) - // SpawnSessionFromItem creates a new AI agent session for a backlog item. - SpawnSessionFromItem(context.Context, *connect.Request[v1.SpawnSessionFromItemRequest]) (*connect.Response[v1.SpawnSessionFromItemResponse], error) - // AttachSessionToItem links an existing session to a backlog item. - AttachSessionToItem(context.Context, *connect.Request[v1.AttachSessionToItemRequest]) (*connect.Response[v1.AttachSessionToItemResponse], error) - // TriggerTriage kicks off a triage session for a backlog item. - TriggerTriage(context.Context, *connect.Request[v1.TriggerTriageRequest]) (*connect.Response[v1.TriggerTriageResponse], error) - // CancelTriage stops a running triage session for a backlog item. - CancelTriage(context.Context, *connect.Request[v1.CancelTriageRequest]) (*connect.Response[v1.CancelTriageResponse], error) - // ApprovePlan marks the planning artifacts for an item as approved. - ApprovePlan(context.Context, *connect.Request[v1.ApprovePlanRequest]) (*connect.Response[v1.ApprovePlanResponse], error) - // SuggestNextItem recommends the highest-priority actionable backlog item. - SuggestNextItem(context.Context, *connect.Request[v1.SuggestNextItemRequest]) (*connect.Response[v1.SuggestNextItemResponse], error) - // OverrideVerdict manually overrides a review verdict for an item session. - OverrideVerdict(context.Context, *connect.Request[v1.OverrideVerdictRequest]) (*connect.Response[v1.OverrideVerdictResponse], error) - // TriggerReReview re-runs the review gate for a backlog item. - TriggerReReview(context.Context, *connect.Request[v1.TriggerReReviewRequest]) (*connect.Response[v1.TriggerReReviewResponse], error) - // TriggerShipPR manually runs the same one-shot PR-creation flow the opt-in - // AutoCreatePR policy uses, for an item sitting in review (or done with no PR - // yet) with no PR of its own — the self-service "Ship PR" action on the item - // detail page. - TriggerShipPR(context.Context, *connect.Request[v1.TriggerShipPRRequest]) (*connect.Response[v1.TriggerShipPRResponse], error) - // TriggerSync initiates a sync run for an external item source. - TriggerSync(context.Context, *connect.Request[v1.TriggerSyncRequest]) (*connect.Response[v1.TriggerSyncResponse], error) - // CreateItemSource registers a new external plugin source. - CreateItemSource(context.Context, *connect.Request[v1.CreateItemSourceRequest]) (*connect.Response[v1.CreateItemSourceResponse], error) - // ListItemSources returns all registered external item sources. - ListItemSources(context.Context, *connect.Request[v1.ListItemSourcesRequest]) (*connect.Response[v1.ListItemSourcesResponse], error) - // UpdateItemSource modifies configuration for an existing item source. - UpdateItemSource(context.Context, *connect.Request[v1.UpdateItemSourceRequest]) (*connect.Response[v1.UpdateItemSourceResponse], error) - // DeleteItemSource removes an external item source registration. - DeleteItemSource(context.Context, *connect.Request[v1.DeleteItemSourceRequest]) (*connect.Response[v1.DeleteItemSourceResponse], error) - // GetSyncHistory returns the sync event history for an item source. - GetSyncHistory(context.Context, *connect.Request[v1.GetSyncHistoryRequest]) (*connect.Response[v1.GetSyncHistoryResponse], error) - // PreviewBackwardSyncImpact reports how many already-imported items for a - // source would immediately transition (per ADR-002's determineBackwardSyncTarget) - // if backward sync were enabled right now — used to gate the Settings UI's - // first-enable confirmation dialog (Epic 4.4) so a user can see the blast - // radius of already-closed linked issues before opting in. - PreviewBackwardSyncImpact(context.Context, *connect.Request[v1.PreviewBackwardSyncImpactRequest]) (*connect.Response[v1.PreviewBackwardSyncImpactResponse], error) - // CreatePipelineMode registers a new runtime-definable pipeline mode. - CreatePipelineMode(context.Context, *connect.Request[v1.CreatePipelineModeRequest]) (*connect.Response[v1.CreatePipelineModeResponse], error) - // UpdatePipelineMode modifies an existing pipeline mode's fields. - UpdatePipelineMode(context.Context, *connect.Request[v1.UpdatePipelineModeRequest]) (*connect.Response[v1.UpdatePipelineModeResponse], error) - // DeletePipelineMode removes a pipeline mode definition. - DeletePipelineMode(context.Context, *connect.Request[v1.DeletePipelineModeRequest]) (*connect.Response[v1.DeletePipelineModeResponse], error) - // GetPipelineMode retrieves a single pipeline mode by slug. - GetPipelineMode(context.Context, *connect.Request[v1.GetPipelineModeRequest]) (*connect.Response[v1.GetPipelineModeResponse], error) - // ListPipelineModes returns all pipeline modes, including disabled ones. - ListPipelineModes(context.Context, *connect.Request[v1.ListPipelineModesRequest]) (*connect.Response[v1.ListPipelineModesResponse], error) - // ImportGitHubIssue creates a backlog item pre-populated from a GitHub issue. - ImportGitHubIssue(context.Context, *connect.Request[v1.ImportGitHubIssueRequest]) (*connect.Response[v1.ImportGitHubIssueResponse], error) - // SearchGitHubRepos returns GitHub repos accessible to the authenticated user. - SearchGitHubRepos(context.Context, *connect.Request[v1.SearchGitHubReposRequest]) (*connect.Response[v1.SearchGitHubReposResponse], error) - // ListGitHubIssues returns issues for a specific GitHub repo. - ListGitHubIssues(context.Context, *connect.Request[v1.ListGitHubIssuesRequest]) (*connect.Response[v1.ListGitHubIssuesResponse], error) - // GetBacklogItemDiff returns the committed diff for a backlog item's work sessions - // (from the earliest work session base SHA to the current HEAD). - GetBacklogItemDiff(context.Context, *connect.Request[v1.GetBacklogItemDiffRequest]) (*connect.Response[v1.GetBacklogItemDiffResponse], error) - // GetBacklogItemCost returns the estimated token cost for all sessions linked to an item. - GetBacklogItemCost(context.Context, *connect.Request[v1.GetBacklogItemCostRequest]) (*connect.Response[v1.GetBacklogItemCostResponse], error) - // GetSessionBacklogIndex returns all item sessions mapped to their backlog item metadata. - // Used by the Insights dashboard to annotate sessions with backlog context. - GetSessionBacklogIndex(context.Context, *connect.Request[v1.GetSessionBacklogIndexRequest]) (*connect.Response[v1.GetSessionBacklogIndexResponse], error) - // SubmitManualReview allows a user to submit a review verdict directly, - // without running an AI review session. - SubmitManualReview(context.Context, *connect.Request[v1.SubmitManualReviewRequest]) (*connect.Response[v1.SubmitManualReviewResponse], error) - // ListStuckBacklogItems returns open (unresolved, un-snoozed) stuck backlog - // items — items that have stopped progressing toward merge, with a reason, - // since-when, and PR context. - ListStuckBacklogItems(context.Context, *connect.Request[v1.ListStuckBacklogItemsRequest]) (*connect.Response[v1.ListStuckBacklogItemsResponse], error) - // SnoozeStuckItem suppresses a stuck row from the active view and from - // re-notification until the given time. - SnoozeStuckItem(context.Context, *connect.Request[v1.SnoozeStuckItemRequest]) (*connect.Response[v1.SnoozeStuckItemResponse], error) - // ResetStuckRemediation clears the automated-remediation counters - // (remediation_attempts, next_remediation_at, notified_at) on a single open - // stuck row, letting a fresh automated attempt/notification cycle fire - // immediately instead of waiting on stale backoff/dedup state. Distinct - // from TriggerRemediationNow: this never itself invokes a remediation - // action, it only un-parks the row. - ResetStuckRemediation(context.Context, *connect.Request[v1.ResetStuckRemediationRequest]) (*connect.Response[v1.ResetStuckRemediationResponse], error) - // BulkResetStuckRemediation applies ResetStuckRemediation's reset to every - // open stuck row matching the optional reason filter — the "something - // upstream broke a batch of these, give them all a fresh shot" admin - // action, e.g. after an OOM-restart storm inflated attempt counts across - // many items at once. - BulkResetStuckRemediation(context.Context, *connect.Request[v1.BulkResetStuckRemediationRequest]) (*connect.Response[v1.BulkResetStuckRemediationResponse], error) - // TriggerRemediationNow immediately runs the reason-specific remediation - // action for a single open stuck row, bypassing only the next_remediation_at - // backoff timer — every other safety gate (the 5-attempt cap, the wrapped - // action's own circuit breaker) still applies, and this attempt still - // counts toward remediation_attempts like any dispatcher-triggered one. - // Rejects with an error (rather than silently un-parking) when the row has - // already exhausted its attempt budget — use ResetStuckRemediation first. - TriggerRemediationNow(context.Context, *connect.Request[v1.TriggerRemediationNowRequest]) (*connect.Response[v1.TriggerRemediationNowResponse], error) - // WatchBacklogItems streams real-time backlog item events (status changes, - // verdicts, session attachments, updates, archival, removal). - // Server-streaming RPC for live backlog updates without polling. - WatchBacklogItems(context.Context, *connect.Request[v1.WatchBacklogItemsRequest]) (*connect.ServerStreamForClient[v1.BacklogItemEvent], error) -} - -// NewBacklogServiceClient constructs a client for the session.v1.BacklogService service. By -// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, -// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the -// connect.WithGRPC() or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewBacklogServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) BacklogServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - backlogServiceMethods := v1.File_session_v1_backlog_proto.Services().ByName("BacklogService").Methods() - return &backlogServiceClient{ - createBacklogItem: connect.NewClient[v1.CreateBacklogItemRequest, v1.CreateBacklogItemResponse]( - httpClient, - baseURL+BacklogServiceCreateBacklogItemProcedure, - connect.WithSchema(backlogServiceMethods.ByName("CreateBacklogItem")), - connect.WithClientOptions(opts...), - ), - getBacklogItem: connect.NewClient[v1.GetBacklogItemRequest, v1.GetBacklogItemResponse]( - httpClient, - baseURL+BacklogServiceGetBacklogItemProcedure, - connect.WithSchema(backlogServiceMethods.ByName("GetBacklogItem")), - connect.WithClientOptions(opts...), - ), - getBacklogItemShipStatus: connect.NewClient[v1.GetBacklogItemShipStatusRequest, v1.GetBacklogItemShipStatusResponse]( - httpClient, - baseURL+BacklogServiceGetBacklogItemShipStatusProcedure, - connect.WithSchema(backlogServiceMethods.ByName("GetBacklogItemShipStatus")), - connect.WithClientOptions(opts...), - ), - listBacklogItems: connect.NewClient[v1.ListBacklogItemsRequest, v1.ListBacklogItemsResponse]( - httpClient, - baseURL+BacklogServiceListBacklogItemsProcedure, - connect.WithSchema(backlogServiceMethods.ByName("ListBacklogItems")), - connect.WithClientOptions(opts...), - ), - updateBacklogItem: connect.NewClient[v1.UpdateBacklogItemRequest, v1.UpdateBacklogItemResponse]( - httpClient, - baseURL+BacklogServiceUpdateBacklogItemProcedure, - connect.WithSchema(backlogServiceMethods.ByName("UpdateBacklogItem")), - connect.WithClientOptions(opts...), - ), - archiveBacklogItem: connect.NewClient[v1.ArchiveBacklogItemRequest, v1.ArchiveBacklogItemResponse]( - httpClient, - baseURL+BacklogServiceArchiveBacklogItemProcedure, - connect.WithSchema(backlogServiceMethods.ByName("ArchiveBacklogItem")), - connect.WithClientOptions(opts...), - ), - deleteBacklogItem: connect.NewClient[v1.DeleteBacklogItemRequest, v1.DeleteBacklogItemResponse]( - httpClient, - baseURL+BacklogServiceDeleteBacklogItemProcedure, - connect.WithSchema(backlogServiceMethods.ByName("DeleteBacklogItem")), - connect.WithClientOptions(opts...), - ), - transitionBacklogItemStatus: connect.NewClient[v1.TransitionBacklogItemStatusRequest, v1.TransitionBacklogItemStatusResponse]( - httpClient, - baseURL+BacklogServiceTransitionBacklogItemStatusProcedure, - connect.WithSchema(backlogServiceMethods.ByName("TransitionBacklogItemStatus")), - connect.WithClientOptions(opts...), - ), - spawnSessionFromItem: connect.NewClient[v1.SpawnSessionFromItemRequest, v1.SpawnSessionFromItemResponse]( - httpClient, - baseURL+BacklogServiceSpawnSessionFromItemProcedure, - connect.WithSchema(backlogServiceMethods.ByName("SpawnSessionFromItem")), - connect.WithClientOptions(opts...), - ), - attachSessionToItem: connect.NewClient[v1.AttachSessionToItemRequest, v1.AttachSessionToItemResponse]( - httpClient, - baseURL+BacklogServiceAttachSessionToItemProcedure, - connect.WithSchema(backlogServiceMethods.ByName("AttachSessionToItem")), - connect.WithClientOptions(opts...), - ), - triggerTriage: connect.NewClient[v1.TriggerTriageRequest, v1.TriggerTriageResponse]( - httpClient, - baseURL+BacklogServiceTriggerTriageProcedure, - connect.WithSchema(backlogServiceMethods.ByName("TriggerTriage")), - connect.WithClientOptions(opts...), - ), - cancelTriage: connect.NewClient[v1.CancelTriageRequest, v1.CancelTriageResponse]( - httpClient, - baseURL+BacklogServiceCancelTriageProcedure, - connect.WithSchema(backlogServiceMethods.ByName("CancelTriage")), - connect.WithClientOptions(opts...), - ), - approvePlan: connect.NewClient[v1.ApprovePlanRequest, v1.ApprovePlanResponse]( - httpClient, - baseURL+BacklogServiceApprovePlanProcedure, - connect.WithSchema(backlogServiceMethods.ByName("ApprovePlan")), - connect.WithClientOptions(opts...), - ), - suggestNextItem: connect.NewClient[v1.SuggestNextItemRequest, v1.SuggestNextItemResponse]( - httpClient, - baseURL+BacklogServiceSuggestNextItemProcedure, - connect.WithSchema(backlogServiceMethods.ByName("SuggestNextItem")), - connect.WithClientOptions(opts...), - ), - overrideVerdict: connect.NewClient[v1.OverrideVerdictRequest, v1.OverrideVerdictResponse]( - httpClient, - baseURL+BacklogServiceOverrideVerdictProcedure, - connect.WithSchema(backlogServiceMethods.ByName("OverrideVerdict")), - connect.WithClientOptions(opts...), - ), - triggerReReview: connect.NewClient[v1.TriggerReReviewRequest, v1.TriggerReReviewResponse]( - httpClient, - baseURL+BacklogServiceTriggerReReviewProcedure, - connect.WithSchema(backlogServiceMethods.ByName("TriggerReReview")), - connect.WithClientOptions(opts...), - ), - triggerShipPR: connect.NewClient[v1.TriggerShipPRRequest, v1.TriggerShipPRResponse]( - httpClient, - baseURL+BacklogServiceTriggerShipPRProcedure, - connect.WithSchema(backlogServiceMethods.ByName("TriggerShipPR")), - connect.WithClientOptions(opts...), - ), - triggerSync: connect.NewClient[v1.TriggerSyncRequest, v1.TriggerSyncResponse]( - httpClient, - baseURL+BacklogServiceTriggerSyncProcedure, - connect.WithSchema(backlogServiceMethods.ByName("TriggerSync")), - connect.WithClientOptions(opts...), - ), - createItemSource: connect.NewClient[v1.CreateItemSourceRequest, v1.CreateItemSourceResponse]( - httpClient, - baseURL+BacklogServiceCreateItemSourceProcedure, - connect.WithSchema(backlogServiceMethods.ByName("CreateItemSource")), - connect.WithClientOptions(opts...), - ), - listItemSources: connect.NewClient[v1.ListItemSourcesRequest, v1.ListItemSourcesResponse]( - httpClient, - baseURL+BacklogServiceListItemSourcesProcedure, - connect.WithSchema(backlogServiceMethods.ByName("ListItemSources")), - connect.WithClientOptions(opts...), - ), - updateItemSource: connect.NewClient[v1.UpdateItemSourceRequest, v1.UpdateItemSourceResponse]( - httpClient, - baseURL+BacklogServiceUpdateItemSourceProcedure, - connect.WithSchema(backlogServiceMethods.ByName("UpdateItemSource")), - connect.WithClientOptions(opts...), - ), - deleteItemSource: connect.NewClient[v1.DeleteItemSourceRequest, v1.DeleteItemSourceResponse]( - httpClient, - baseURL+BacklogServiceDeleteItemSourceProcedure, - connect.WithSchema(backlogServiceMethods.ByName("DeleteItemSource")), - connect.WithClientOptions(opts...), - ), - getSyncHistory: connect.NewClient[v1.GetSyncHistoryRequest, v1.GetSyncHistoryResponse]( - httpClient, - baseURL+BacklogServiceGetSyncHistoryProcedure, - connect.WithSchema(backlogServiceMethods.ByName("GetSyncHistory")), - connect.WithClientOptions(opts...), - ), - previewBackwardSyncImpact: connect.NewClient[v1.PreviewBackwardSyncImpactRequest, v1.PreviewBackwardSyncImpactResponse]( - httpClient, - baseURL+BacklogServicePreviewBackwardSyncImpactProcedure, - connect.WithSchema(backlogServiceMethods.ByName("PreviewBackwardSyncImpact")), - connect.WithClientOptions(opts...), - ), - createPipelineMode: connect.NewClient[v1.CreatePipelineModeRequest, v1.CreatePipelineModeResponse]( - httpClient, - baseURL+BacklogServiceCreatePipelineModeProcedure, - connect.WithSchema(backlogServiceMethods.ByName("CreatePipelineMode")), - connect.WithClientOptions(opts...), - ), - updatePipelineMode: connect.NewClient[v1.UpdatePipelineModeRequest, v1.UpdatePipelineModeResponse]( - httpClient, - baseURL+BacklogServiceUpdatePipelineModeProcedure, - connect.WithSchema(backlogServiceMethods.ByName("UpdatePipelineMode")), - connect.WithClientOptions(opts...), - ), - deletePipelineMode: connect.NewClient[v1.DeletePipelineModeRequest, v1.DeletePipelineModeResponse]( - httpClient, - baseURL+BacklogServiceDeletePipelineModeProcedure, - connect.WithSchema(backlogServiceMethods.ByName("DeletePipelineMode")), - connect.WithClientOptions(opts...), - ), - getPipelineMode: connect.NewClient[v1.GetPipelineModeRequest, v1.GetPipelineModeResponse]( - httpClient, - baseURL+BacklogServiceGetPipelineModeProcedure, - connect.WithSchema(backlogServiceMethods.ByName("GetPipelineMode")), - connect.WithClientOptions(opts...), - ), - listPipelineModes: connect.NewClient[v1.ListPipelineModesRequest, v1.ListPipelineModesResponse]( - httpClient, - baseURL+BacklogServiceListPipelineModesProcedure, - connect.WithSchema(backlogServiceMethods.ByName("ListPipelineModes")), - connect.WithClientOptions(opts...), - ), - importGitHubIssue: connect.NewClient[v1.ImportGitHubIssueRequest, v1.ImportGitHubIssueResponse]( - httpClient, - baseURL+BacklogServiceImportGitHubIssueProcedure, - connect.WithSchema(backlogServiceMethods.ByName("ImportGitHubIssue")), - connect.WithClientOptions(opts...), - ), - searchGitHubRepos: connect.NewClient[v1.SearchGitHubReposRequest, v1.SearchGitHubReposResponse]( - httpClient, - baseURL+BacklogServiceSearchGitHubReposProcedure, - connect.WithSchema(backlogServiceMethods.ByName("SearchGitHubRepos")), - connect.WithClientOptions(opts...), - ), - listGitHubIssues: connect.NewClient[v1.ListGitHubIssuesRequest, v1.ListGitHubIssuesResponse]( - httpClient, - baseURL+BacklogServiceListGitHubIssuesProcedure, - connect.WithSchema(backlogServiceMethods.ByName("ListGitHubIssues")), - connect.WithClientOptions(opts...), - ), - getBacklogItemDiff: connect.NewClient[v1.GetBacklogItemDiffRequest, v1.GetBacklogItemDiffResponse]( - httpClient, - baseURL+BacklogServiceGetBacklogItemDiffProcedure, - connect.WithSchema(backlogServiceMethods.ByName("GetBacklogItemDiff")), - connect.WithClientOptions(opts...), - ), - getBacklogItemCost: connect.NewClient[v1.GetBacklogItemCostRequest, v1.GetBacklogItemCostResponse]( - httpClient, - baseURL+BacklogServiceGetBacklogItemCostProcedure, - connect.WithSchema(backlogServiceMethods.ByName("GetBacklogItemCost")), - connect.WithClientOptions(opts...), - ), - getSessionBacklogIndex: connect.NewClient[v1.GetSessionBacklogIndexRequest, v1.GetSessionBacklogIndexResponse]( - httpClient, - baseURL+BacklogServiceGetSessionBacklogIndexProcedure, - connect.WithSchema(backlogServiceMethods.ByName("GetSessionBacklogIndex")), - connect.WithClientOptions(opts...), - ), - submitManualReview: connect.NewClient[v1.SubmitManualReviewRequest, v1.SubmitManualReviewResponse]( - httpClient, - baseURL+BacklogServiceSubmitManualReviewProcedure, - connect.WithSchema(backlogServiceMethods.ByName("SubmitManualReview")), - connect.WithClientOptions(opts...), - ), - listStuckBacklogItems: connect.NewClient[v1.ListStuckBacklogItemsRequest, v1.ListStuckBacklogItemsResponse]( - httpClient, - baseURL+BacklogServiceListStuckBacklogItemsProcedure, - connect.WithSchema(backlogServiceMethods.ByName("ListStuckBacklogItems")), - connect.WithClientOptions(opts...), - ), - snoozeStuckItem: connect.NewClient[v1.SnoozeStuckItemRequest, v1.SnoozeStuckItemResponse]( - httpClient, - baseURL+BacklogServiceSnoozeStuckItemProcedure, - connect.WithSchema(backlogServiceMethods.ByName("SnoozeStuckItem")), - connect.WithClientOptions(opts...), - ), - resetStuckRemediation: connect.NewClient[v1.ResetStuckRemediationRequest, v1.ResetStuckRemediationResponse]( - httpClient, - baseURL+BacklogServiceResetStuckRemediationProcedure, - connect.WithSchema(backlogServiceMethods.ByName("ResetStuckRemediation")), - connect.WithClientOptions(opts...), - ), - bulkResetStuckRemediation: connect.NewClient[v1.BulkResetStuckRemediationRequest, v1.BulkResetStuckRemediationResponse]( - httpClient, - baseURL+BacklogServiceBulkResetStuckRemediationProcedure, - connect.WithSchema(backlogServiceMethods.ByName("BulkResetStuckRemediation")), - connect.WithClientOptions(opts...), - ), - triggerRemediationNow: connect.NewClient[v1.TriggerRemediationNowRequest, v1.TriggerRemediationNowResponse]( - httpClient, - baseURL+BacklogServiceTriggerRemediationNowProcedure, - connect.WithSchema(backlogServiceMethods.ByName("TriggerRemediationNow")), - connect.WithClientOptions(opts...), - ), - watchBacklogItems: connect.NewClient[v1.WatchBacklogItemsRequest, v1.BacklogItemEvent]( - httpClient, - baseURL+BacklogServiceWatchBacklogItemsProcedure, - connect.WithSchema(backlogServiceMethods.ByName("WatchBacklogItems")), - connect.WithClientOptions(opts...), - ), - } -} - -// backlogServiceClient implements BacklogServiceClient. -type backlogServiceClient struct { - createBacklogItem *connect.Client[v1.CreateBacklogItemRequest, v1.CreateBacklogItemResponse] - getBacklogItem *connect.Client[v1.GetBacklogItemRequest, v1.GetBacklogItemResponse] - getBacklogItemShipStatus *connect.Client[v1.GetBacklogItemShipStatusRequest, v1.GetBacklogItemShipStatusResponse] - listBacklogItems *connect.Client[v1.ListBacklogItemsRequest, v1.ListBacklogItemsResponse] - updateBacklogItem *connect.Client[v1.UpdateBacklogItemRequest, v1.UpdateBacklogItemResponse] - archiveBacklogItem *connect.Client[v1.ArchiveBacklogItemRequest, v1.ArchiveBacklogItemResponse] - deleteBacklogItem *connect.Client[v1.DeleteBacklogItemRequest, v1.DeleteBacklogItemResponse] - transitionBacklogItemStatus *connect.Client[v1.TransitionBacklogItemStatusRequest, v1.TransitionBacklogItemStatusResponse] - spawnSessionFromItem *connect.Client[v1.SpawnSessionFromItemRequest, v1.SpawnSessionFromItemResponse] - attachSessionToItem *connect.Client[v1.AttachSessionToItemRequest, v1.AttachSessionToItemResponse] - triggerTriage *connect.Client[v1.TriggerTriageRequest, v1.TriggerTriageResponse] - cancelTriage *connect.Client[v1.CancelTriageRequest, v1.CancelTriageResponse] - approvePlan *connect.Client[v1.ApprovePlanRequest, v1.ApprovePlanResponse] - suggestNextItem *connect.Client[v1.SuggestNextItemRequest, v1.SuggestNextItemResponse] - overrideVerdict *connect.Client[v1.OverrideVerdictRequest, v1.OverrideVerdictResponse] - triggerReReview *connect.Client[v1.TriggerReReviewRequest, v1.TriggerReReviewResponse] - triggerShipPR *connect.Client[v1.TriggerShipPRRequest, v1.TriggerShipPRResponse] - triggerSync *connect.Client[v1.TriggerSyncRequest, v1.TriggerSyncResponse] - createItemSource *connect.Client[v1.CreateItemSourceRequest, v1.CreateItemSourceResponse] - listItemSources *connect.Client[v1.ListItemSourcesRequest, v1.ListItemSourcesResponse] - updateItemSource *connect.Client[v1.UpdateItemSourceRequest, v1.UpdateItemSourceResponse] - deleteItemSource *connect.Client[v1.DeleteItemSourceRequest, v1.DeleteItemSourceResponse] - getSyncHistory *connect.Client[v1.GetSyncHistoryRequest, v1.GetSyncHistoryResponse] - previewBackwardSyncImpact *connect.Client[v1.PreviewBackwardSyncImpactRequest, v1.PreviewBackwardSyncImpactResponse] - createPipelineMode *connect.Client[v1.CreatePipelineModeRequest, v1.CreatePipelineModeResponse] - updatePipelineMode *connect.Client[v1.UpdatePipelineModeRequest, v1.UpdatePipelineModeResponse] - deletePipelineMode *connect.Client[v1.DeletePipelineModeRequest, v1.DeletePipelineModeResponse] - getPipelineMode *connect.Client[v1.GetPipelineModeRequest, v1.GetPipelineModeResponse] - listPipelineModes *connect.Client[v1.ListPipelineModesRequest, v1.ListPipelineModesResponse] - importGitHubIssue *connect.Client[v1.ImportGitHubIssueRequest, v1.ImportGitHubIssueResponse] - searchGitHubRepos *connect.Client[v1.SearchGitHubReposRequest, v1.SearchGitHubReposResponse] - listGitHubIssues *connect.Client[v1.ListGitHubIssuesRequest, v1.ListGitHubIssuesResponse] - getBacklogItemDiff *connect.Client[v1.GetBacklogItemDiffRequest, v1.GetBacklogItemDiffResponse] - getBacklogItemCost *connect.Client[v1.GetBacklogItemCostRequest, v1.GetBacklogItemCostResponse] - getSessionBacklogIndex *connect.Client[v1.GetSessionBacklogIndexRequest, v1.GetSessionBacklogIndexResponse] - submitManualReview *connect.Client[v1.SubmitManualReviewRequest, v1.SubmitManualReviewResponse] - listStuckBacklogItems *connect.Client[v1.ListStuckBacklogItemsRequest, v1.ListStuckBacklogItemsResponse] - snoozeStuckItem *connect.Client[v1.SnoozeStuckItemRequest, v1.SnoozeStuckItemResponse] - resetStuckRemediation *connect.Client[v1.ResetStuckRemediationRequest, v1.ResetStuckRemediationResponse] - bulkResetStuckRemediation *connect.Client[v1.BulkResetStuckRemediationRequest, v1.BulkResetStuckRemediationResponse] - triggerRemediationNow *connect.Client[v1.TriggerRemediationNowRequest, v1.TriggerRemediationNowResponse] - watchBacklogItems *connect.Client[v1.WatchBacklogItemsRequest, v1.BacklogItemEvent] -} - -// CreateBacklogItem calls session.v1.BacklogService.CreateBacklogItem. -func (c *backlogServiceClient) CreateBacklogItem(ctx context.Context, req *connect.Request[v1.CreateBacklogItemRequest]) (*connect.Response[v1.CreateBacklogItemResponse], error) { - return c.createBacklogItem.CallUnary(ctx, req) -} - -// GetBacklogItem calls session.v1.BacklogService.GetBacklogItem. -func (c *backlogServiceClient) GetBacklogItem(ctx context.Context, req *connect.Request[v1.GetBacklogItemRequest]) (*connect.Response[v1.GetBacklogItemResponse], error) { - return c.getBacklogItem.CallUnary(ctx, req) -} - -// GetBacklogItemShipStatus calls session.v1.BacklogService.GetBacklogItemShipStatus. -func (c *backlogServiceClient) GetBacklogItemShipStatus(ctx context.Context, req *connect.Request[v1.GetBacklogItemShipStatusRequest]) (*connect.Response[v1.GetBacklogItemShipStatusResponse], error) { - return c.getBacklogItemShipStatus.CallUnary(ctx, req) -} - -// ListBacklogItems calls session.v1.BacklogService.ListBacklogItems. -func (c *backlogServiceClient) ListBacklogItems(ctx context.Context, req *connect.Request[v1.ListBacklogItemsRequest]) (*connect.Response[v1.ListBacklogItemsResponse], error) { - return c.listBacklogItems.CallUnary(ctx, req) -} - -// UpdateBacklogItem calls session.v1.BacklogService.UpdateBacklogItem. -func (c *backlogServiceClient) UpdateBacklogItem(ctx context.Context, req *connect.Request[v1.UpdateBacklogItemRequest]) (*connect.Response[v1.UpdateBacklogItemResponse], error) { - return c.updateBacklogItem.CallUnary(ctx, req) -} - -// ArchiveBacklogItem calls session.v1.BacklogService.ArchiveBacklogItem. -func (c *backlogServiceClient) ArchiveBacklogItem(ctx context.Context, req *connect.Request[v1.ArchiveBacklogItemRequest]) (*connect.Response[v1.ArchiveBacklogItemResponse], error) { - return c.archiveBacklogItem.CallUnary(ctx, req) -} - -// DeleteBacklogItem calls session.v1.BacklogService.DeleteBacklogItem. -func (c *backlogServiceClient) DeleteBacklogItem(ctx context.Context, req *connect.Request[v1.DeleteBacklogItemRequest]) (*connect.Response[v1.DeleteBacklogItemResponse], error) { - return c.deleteBacklogItem.CallUnary(ctx, req) -} - -// TransitionBacklogItemStatus calls session.v1.BacklogService.TransitionBacklogItemStatus. -func (c *backlogServiceClient) TransitionBacklogItemStatus(ctx context.Context, req *connect.Request[v1.TransitionBacklogItemStatusRequest]) (*connect.Response[v1.TransitionBacklogItemStatusResponse], error) { - return c.transitionBacklogItemStatus.CallUnary(ctx, req) -} - -// SpawnSessionFromItem calls session.v1.BacklogService.SpawnSessionFromItem. -func (c *backlogServiceClient) SpawnSessionFromItem(ctx context.Context, req *connect.Request[v1.SpawnSessionFromItemRequest]) (*connect.Response[v1.SpawnSessionFromItemResponse], error) { - return c.spawnSessionFromItem.CallUnary(ctx, req) -} - -// AttachSessionToItem calls session.v1.BacklogService.AttachSessionToItem. -func (c *backlogServiceClient) AttachSessionToItem(ctx context.Context, req *connect.Request[v1.AttachSessionToItemRequest]) (*connect.Response[v1.AttachSessionToItemResponse], error) { - return c.attachSessionToItem.CallUnary(ctx, req) -} - -// TriggerTriage calls session.v1.BacklogService.TriggerTriage. -func (c *backlogServiceClient) TriggerTriage(ctx context.Context, req *connect.Request[v1.TriggerTriageRequest]) (*connect.Response[v1.TriggerTriageResponse], error) { - return c.triggerTriage.CallUnary(ctx, req) -} - -// CancelTriage calls session.v1.BacklogService.CancelTriage. -func (c *backlogServiceClient) CancelTriage(ctx context.Context, req *connect.Request[v1.CancelTriageRequest]) (*connect.Response[v1.CancelTriageResponse], error) { - return c.cancelTriage.CallUnary(ctx, req) -} - -// ApprovePlan calls session.v1.BacklogService.ApprovePlan. -func (c *backlogServiceClient) ApprovePlan(ctx context.Context, req *connect.Request[v1.ApprovePlanRequest]) (*connect.Response[v1.ApprovePlanResponse], error) { - return c.approvePlan.CallUnary(ctx, req) -} - -// SuggestNextItem calls session.v1.BacklogService.SuggestNextItem. -func (c *backlogServiceClient) SuggestNextItem(ctx context.Context, req *connect.Request[v1.SuggestNextItemRequest]) (*connect.Response[v1.SuggestNextItemResponse], error) { - return c.suggestNextItem.CallUnary(ctx, req) -} - -// OverrideVerdict calls session.v1.BacklogService.OverrideVerdict. -func (c *backlogServiceClient) OverrideVerdict(ctx context.Context, req *connect.Request[v1.OverrideVerdictRequest]) (*connect.Response[v1.OverrideVerdictResponse], error) { - return c.overrideVerdict.CallUnary(ctx, req) -} - -// TriggerReReview calls session.v1.BacklogService.TriggerReReview. -func (c *backlogServiceClient) TriggerReReview(ctx context.Context, req *connect.Request[v1.TriggerReReviewRequest]) (*connect.Response[v1.TriggerReReviewResponse], error) { - return c.triggerReReview.CallUnary(ctx, req) -} - -// TriggerShipPR calls session.v1.BacklogService.TriggerShipPR. -func (c *backlogServiceClient) TriggerShipPR(ctx context.Context, req *connect.Request[v1.TriggerShipPRRequest]) (*connect.Response[v1.TriggerShipPRResponse], error) { - return c.triggerShipPR.CallUnary(ctx, req) -} - -// TriggerSync calls session.v1.BacklogService.TriggerSync. -func (c *backlogServiceClient) TriggerSync(ctx context.Context, req *connect.Request[v1.TriggerSyncRequest]) (*connect.Response[v1.TriggerSyncResponse], error) { - return c.triggerSync.CallUnary(ctx, req) -} - -// CreateItemSource calls session.v1.BacklogService.CreateItemSource. -func (c *backlogServiceClient) CreateItemSource(ctx context.Context, req *connect.Request[v1.CreateItemSourceRequest]) (*connect.Response[v1.CreateItemSourceResponse], error) { - return c.createItemSource.CallUnary(ctx, req) -} - -// ListItemSources calls session.v1.BacklogService.ListItemSources. -func (c *backlogServiceClient) ListItemSources(ctx context.Context, req *connect.Request[v1.ListItemSourcesRequest]) (*connect.Response[v1.ListItemSourcesResponse], error) { - return c.listItemSources.CallUnary(ctx, req) -} - -// UpdateItemSource calls session.v1.BacklogService.UpdateItemSource. -func (c *backlogServiceClient) UpdateItemSource(ctx context.Context, req *connect.Request[v1.UpdateItemSourceRequest]) (*connect.Response[v1.UpdateItemSourceResponse], error) { - return c.updateItemSource.CallUnary(ctx, req) -} - -// DeleteItemSource calls session.v1.BacklogService.DeleteItemSource. -func (c *backlogServiceClient) DeleteItemSource(ctx context.Context, req *connect.Request[v1.DeleteItemSourceRequest]) (*connect.Response[v1.DeleteItemSourceResponse], error) { - return c.deleteItemSource.CallUnary(ctx, req) -} - -// GetSyncHistory calls session.v1.BacklogService.GetSyncHistory. -func (c *backlogServiceClient) GetSyncHistory(ctx context.Context, req *connect.Request[v1.GetSyncHistoryRequest]) (*connect.Response[v1.GetSyncHistoryResponse], error) { - return c.getSyncHistory.CallUnary(ctx, req) -} - -// PreviewBackwardSyncImpact calls session.v1.BacklogService.PreviewBackwardSyncImpact. -func (c *backlogServiceClient) PreviewBackwardSyncImpact(ctx context.Context, req *connect.Request[v1.PreviewBackwardSyncImpactRequest]) (*connect.Response[v1.PreviewBackwardSyncImpactResponse], error) { - return c.previewBackwardSyncImpact.CallUnary(ctx, req) -} - -// CreatePipelineMode calls session.v1.BacklogService.CreatePipelineMode. -func (c *backlogServiceClient) CreatePipelineMode(ctx context.Context, req *connect.Request[v1.CreatePipelineModeRequest]) (*connect.Response[v1.CreatePipelineModeResponse], error) { - return c.createPipelineMode.CallUnary(ctx, req) -} - -// UpdatePipelineMode calls session.v1.BacklogService.UpdatePipelineMode. -func (c *backlogServiceClient) UpdatePipelineMode(ctx context.Context, req *connect.Request[v1.UpdatePipelineModeRequest]) (*connect.Response[v1.UpdatePipelineModeResponse], error) { - return c.updatePipelineMode.CallUnary(ctx, req) -} - -// DeletePipelineMode calls session.v1.BacklogService.DeletePipelineMode. -func (c *backlogServiceClient) DeletePipelineMode(ctx context.Context, req *connect.Request[v1.DeletePipelineModeRequest]) (*connect.Response[v1.DeletePipelineModeResponse], error) { - return c.deletePipelineMode.CallUnary(ctx, req) -} - -// GetPipelineMode calls session.v1.BacklogService.GetPipelineMode. -func (c *backlogServiceClient) GetPipelineMode(ctx context.Context, req *connect.Request[v1.GetPipelineModeRequest]) (*connect.Response[v1.GetPipelineModeResponse], error) { - return c.getPipelineMode.CallUnary(ctx, req) -} - -// ListPipelineModes calls session.v1.BacklogService.ListPipelineModes. -func (c *backlogServiceClient) ListPipelineModes(ctx context.Context, req *connect.Request[v1.ListPipelineModesRequest]) (*connect.Response[v1.ListPipelineModesResponse], error) { - return c.listPipelineModes.CallUnary(ctx, req) -} - -// ImportGitHubIssue calls session.v1.BacklogService.ImportGitHubIssue. -func (c *backlogServiceClient) ImportGitHubIssue(ctx context.Context, req *connect.Request[v1.ImportGitHubIssueRequest]) (*connect.Response[v1.ImportGitHubIssueResponse], error) { - return c.importGitHubIssue.CallUnary(ctx, req) -} - -// SearchGitHubRepos calls session.v1.BacklogService.SearchGitHubRepos. -func (c *backlogServiceClient) SearchGitHubRepos(ctx context.Context, req *connect.Request[v1.SearchGitHubReposRequest]) (*connect.Response[v1.SearchGitHubReposResponse], error) { - return c.searchGitHubRepos.CallUnary(ctx, req) -} - -// ListGitHubIssues calls session.v1.BacklogService.ListGitHubIssues. -func (c *backlogServiceClient) ListGitHubIssues(ctx context.Context, req *connect.Request[v1.ListGitHubIssuesRequest]) (*connect.Response[v1.ListGitHubIssuesResponse], error) { - return c.listGitHubIssues.CallUnary(ctx, req) -} - -// GetBacklogItemDiff calls session.v1.BacklogService.GetBacklogItemDiff. -func (c *backlogServiceClient) GetBacklogItemDiff(ctx context.Context, req *connect.Request[v1.GetBacklogItemDiffRequest]) (*connect.Response[v1.GetBacklogItemDiffResponse], error) { - return c.getBacklogItemDiff.CallUnary(ctx, req) -} - -// GetBacklogItemCost calls session.v1.BacklogService.GetBacklogItemCost. -func (c *backlogServiceClient) GetBacklogItemCost(ctx context.Context, req *connect.Request[v1.GetBacklogItemCostRequest]) (*connect.Response[v1.GetBacklogItemCostResponse], error) { - return c.getBacklogItemCost.CallUnary(ctx, req) -} - -// GetSessionBacklogIndex calls session.v1.BacklogService.GetSessionBacklogIndex. -func (c *backlogServiceClient) GetSessionBacklogIndex(ctx context.Context, req *connect.Request[v1.GetSessionBacklogIndexRequest]) (*connect.Response[v1.GetSessionBacklogIndexResponse], error) { - return c.getSessionBacklogIndex.CallUnary(ctx, req) -} - -// SubmitManualReview calls session.v1.BacklogService.SubmitManualReview. -func (c *backlogServiceClient) SubmitManualReview(ctx context.Context, req *connect.Request[v1.SubmitManualReviewRequest]) (*connect.Response[v1.SubmitManualReviewResponse], error) { - return c.submitManualReview.CallUnary(ctx, req) -} - -// ListStuckBacklogItems calls session.v1.BacklogService.ListStuckBacklogItems. -func (c *backlogServiceClient) ListStuckBacklogItems(ctx context.Context, req *connect.Request[v1.ListStuckBacklogItemsRequest]) (*connect.Response[v1.ListStuckBacklogItemsResponse], error) { - return c.listStuckBacklogItems.CallUnary(ctx, req) -} - -// SnoozeStuckItem calls session.v1.BacklogService.SnoozeStuckItem. -func (c *backlogServiceClient) SnoozeStuckItem(ctx context.Context, req *connect.Request[v1.SnoozeStuckItemRequest]) (*connect.Response[v1.SnoozeStuckItemResponse], error) { - return c.snoozeStuckItem.CallUnary(ctx, req) -} - -// ResetStuckRemediation calls session.v1.BacklogService.ResetStuckRemediation. -func (c *backlogServiceClient) ResetStuckRemediation(ctx context.Context, req *connect.Request[v1.ResetStuckRemediationRequest]) (*connect.Response[v1.ResetStuckRemediationResponse], error) { - return c.resetStuckRemediation.CallUnary(ctx, req) -} - -// BulkResetStuckRemediation calls session.v1.BacklogService.BulkResetStuckRemediation. -func (c *backlogServiceClient) BulkResetStuckRemediation(ctx context.Context, req *connect.Request[v1.BulkResetStuckRemediationRequest]) (*connect.Response[v1.BulkResetStuckRemediationResponse], error) { - return c.bulkResetStuckRemediation.CallUnary(ctx, req) -} - -// TriggerRemediationNow calls session.v1.BacklogService.TriggerRemediationNow. -func (c *backlogServiceClient) TriggerRemediationNow(ctx context.Context, req *connect.Request[v1.TriggerRemediationNowRequest]) (*connect.Response[v1.TriggerRemediationNowResponse], error) { - return c.triggerRemediationNow.CallUnary(ctx, req) -} - -// WatchBacklogItems calls session.v1.BacklogService.WatchBacklogItems. -func (c *backlogServiceClient) WatchBacklogItems(ctx context.Context, req *connect.Request[v1.WatchBacklogItemsRequest]) (*connect.ServerStreamForClient[v1.BacklogItemEvent], error) { - return c.watchBacklogItems.CallServerStream(ctx, req) -} - -// BacklogServiceHandler is an implementation of the session.v1.BacklogService service. -type BacklogServiceHandler interface { - // CreateBacklogItem adds a new item to the backlog. - CreateBacklogItem(context.Context, *connect.Request[v1.CreateBacklogItemRequest]) (*connect.Response[v1.CreateBacklogItemResponse], error) - // GetBacklogItem retrieves a single backlog item by ID. - GetBacklogItem(context.Context, *connect.Request[v1.GetBacklogItemRequest]) (*connect.Response[v1.GetBacklogItemResponse], error) - // GetBacklogItemShipStatus answers "did this item's code actually ship" from - // repo_path + the most recent work session's commit — works even once the - // work session's own worktree has been cleaned up (e.g. a "done" item), - // unlike the live per-session VCSStatus widget. - GetBacklogItemShipStatus(context.Context, *connect.Request[v1.GetBacklogItemShipStatusRequest]) (*connect.Response[v1.GetBacklogItemShipStatusResponse], error) - // ListBacklogItems returns backlog items with optional filtering and sorting. - ListBacklogItems(context.Context, *connect.Request[v1.ListBacklogItemsRequest]) (*connect.Response[v1.ListBacklogItemsResponse], error) - // UpdateBacklogItem modifies the properties of an existing backlog item. - UpdateBacklogItem(context.Context, *connect.Request[v1.UpdateBacklogItemRequest]) (*connect.Response[v1.UpdateBacklogItemResponse], error) - // ArchiveBacklogItem soft-deletes an item by setting its archived_at timestamp. - ArchiveBacklogItem(context.Context, *connect.Request[v1.ArchiveBacklogItemRequest]) (*connect.Response[v1.ArchiveBacklogItemResponse], error) - // DeleteBacklogItem permanently removes an item and all its child records. - DeleteBacklogItem(context.Context, *connect.Request[v1.DeleteBacklogItemRequest]) (*connect.Response[v1.DeleteBacklogItemResponse], error) - // TransitionBacklogItemStatus moves an item through the status state machine. - TransitionBacklogItemStatus(context.Context, *connect.Request[v1.TransitionBacklogItemStatusRequest]) (*connect.Response[v1.TransitionBacklogItemStatusResponse], error) - // SpawnSessionFromItem creates a new AI agent session for a backlog item. - SpawnSessionFromItem(context.Context, *connect.Request[v1.SpawnSessionFromItemRequest]) (*connect.Response[v1.SpawnSessionFromItemResponse], error) - // AttachSessionToItem links an existing session to a backlog item. - AttachSessionToItem(context.Context, *connect.Request[v1.AttachSessionToItemRequest]) (*connect.Response[v1.AttachSessionToItemResponse], error) - // TriggerTriage kicks off a triage session for a backlog item. - TriggerTriage(context.Context, *connect.Request[v1.TriggerTriageRequest]) (*connect.Response[v1.TriggerTriageResponse], error) - // CancelTriage stops a running triage session for a backlog item. - CancelTriage(context.Context, *connect.Request[v1.CancelTriageRequest]) (*connect.Response[v1.CancelTriageResponse], error) - // ApprovePlan marks the planning artifacts for an item as approved. - ApprovePlan(context.Context, *connect.Request[v1.ApprovePlanRequest]) (*connect.Response[v1.ApprovePlanResponse], error) - // SuggestNextItem recommends the highest-priority actionable backlog item. - SuggestNextItem(context.Context, *connect.Request[v1.SuggestNextItemRequest]) (*connect.Response[v1.SuggestNextItemResponse], error) - // OverrideVerdict manually overrides a review verdict for an item session. - OverrideVerdict(context.Context, *connect.Request[v1.OverrideVerdictRequest]) (*connect.Response[v1.OverrideVerdictResponse], error) - // TriggerReReview re-runs the review gate for a backlog item. - TriggerReReview(context.Context, *connect.Request[v1.TriggerReReviewRequest]) (*connect.Response[v1.TriggerReReviewResponse], error) - // TriggerShipPR manually runs the same one-shot PR-creation flow the opt-in - // AutoCreatePR policy uses, for an item sitting in review (or done with no PR - // yet) with no PR of its own — the self-service "Ship PR" action on the item - // detail page. - TriggerShipPR(context.Context, *connect.Request[v1.TriggerShipPRRequest]) (*connect.Response[v1.TriggerShipPRResponse], error) - // TriggerSync initiates a sync run for an external item source. - TriggerSync(context.Context, *connect.Request[v1.TriggerSyncRequest]) (*connect.Response[v1.TriggerSyncResponse], error) - // CreateItemSource registers a new external plugin source. - CreateItemSource(context.Context, *connect.Request[v1.CreateItemSourceRequest]) (*connect.Response[v1.CreateItemSourceResponse], error) - // ListItemSources returns all registered external item sources. - ListItemSources(context.Context, *connect.Request[v1.ListItemSourcesRequest]) (*connect.Response[v1.ListItemSourcesResponse], error) - // UpdateItemSource modifies configuration for an existing item source. - UpdateItemSource(context.Context, *connect.Request[v1.UpdateItemSourceRequest]) (*connect.Response[v1.UpdateItemSourceResponse], error) - // DeleteItemSource removes an external item source registration. - DeleteItemSource(context.Context, *connect.Request[v1.DeleteItemSourceRequest]) (*connect.Response[v1.DeleteItemSourceResponse], error) - // GetSyncHistory returns the sync event history for an item source. - GetSyncHistory(context.Context, *connect.Request[v1.GetSyncHistoryRequest]) (*connect.Response[v1.GetSyncHistoryResponse], error) - // PreviewBackwardSyncImpact reports how many already-imported items for a - // source would immediately transition (per ADR-002's determineBackwardSyncTarget) - // if backward sync were enabled right now — used to gate the Settings UI's - // first-enable confirmation dialog (Epic 4.4) so a user can see the blast - // radius of already-closed linked issues before opting in. - PreviewBackwardSyncImpact(context.Context, *connect.Request[v1.PreviewBackwardSyncImpactRequest]) (*connect.Response[v1.PreviewBackwardSyncImpactResponse], error) - // CreatePipelineMode registers a new runtime-definable pipeline mode. - CreatePipelineMode(context.Context, *connect.Request[v1.CreatePipelineModeRequest]) (*connect.Response[v1.CreatePipelineModeResponse], error) - // UpdatePipelineMode modifies an existing pipeline mode's fields. - UpdatePipelineMode(context.Context, *connect.Request[v1.UpdatePipelineModeRequest]) (*connect.Response[v1.UpdatePipelineModeResponse], error) - // DeletePipelineMode removes a pipeline mode definition. - DeletePipelineMode(context.Context, *connect.Request[v1.DeletePipelineModeRequest]) (*connect.Response[v1.DeletePipelineModeResponse], error) - // GetPipelineMode retrieves a single pipeline mode by slug. - GetPipelineMode(context.Context, *connect.Request[v1.GetPipelineModeRequest]) (*connect.Response[v1.GetPipelineModeResponse], error) - // ListPipelineModes returns all pipeline modes, including disabled ones. - ListPipelineModes(context.Context, *connect.Request[v1.ListPipelineModesRequest]) (*connect.Response[v1.ListPipelineModesResponse], error) - // ImportGitHubIssue creates a backlog item pre-populated from a GitHub issue. - ImportGitHubIssue(context.Context, *connect.Request[v1.ImportGitHubIssueRequest]) (*connect.Response[v1.ImportGitHubIssueResponse], error) - // SearchGitHubRepos returns GitHub repos accessible to the authenticated user. - SearchGitHubRepos(context.Context, *connect.Request[v1.SearchGitHubReposRequest]) (*connect.Response[v1.SearchGitHubReposResponse], error) - // ListGitHubIssues returns issues for a specific GitHub repo. - ListGitHubIssues(context.Context, *connect.Request[v1.ListGitHubIssuesRequest]) (*connect.Response[v1.ListGitHubIssuesResponse], error) - // GetBacklogItemDiff returns the committed diff for a backlog item's work sessions - // (from the earliest work session base SHA to the current HEAD). - GetBacklogItemDiff(context.Context, *connect.Request[v1.GetBacklogItemDiffRequest]) (*connect.Response[v1.GetBacklogItemDiffResponse], error) - // GetBacklogItemCost returns the estimated token cost for all sessions linked to an item. - GetBacklogItemCost(context.Context, *connect.Request[v1.GetBacklogItemCostRequest]) (*connect.Response[v1.GetBacklogItemCostResponse], error) - // GetSessionBacklogIndex returns all item sessions mapped to their backlog item metadata. - // Used by the Insights dashboard to annotate sessions with backlog context. - GetSessionBacklogIndex(context.Context, *connect.Request[v1.GetSessionBacklogIndexRequest]) (*connect.Response[v1.GetSessionBacklogIndexResponse], error) - // SubmitManualReview allows a user to submit a review verdict directly, - // without running an AI review session. - SubmitManualReview(context.Context, *connect.Request[v1.SubmitManualReviewRequest]) (*connect.Response[v1.SubmitManualReviewResponse], error) - // ListStuckBacklogItems returns open (unresolved, un-snoozed) stuck backlog - // items — items that have stopped progressing toward merge, with a reason, - // since-when, and PR context. - ListStuckBacklogItems(context.Context, *connect.Request[v1.ListStuckBacklogItemsRequest]) (*connect.Response[v1.ListStuckBacklogItemsResponse], error) - // SnoozeStuckItem suppresses a stuck row from the active view and from - // re-notification until the given time. - SnoozeStuckItem(context.Context, *connect.Request[v1.SnoozeStuckItemRequest]) (*connect.Response[v1.SnoozeStuckItemResponse], error) - // ResetStuckRemediation clears the automated-remediation counters - // (remediation_attempts, next_remediation_at, notified_at) on a single open - // stuck row, letting a fresh automated attempt/notification cycle fire - // immediately instead of waiting on stale backoff/dedup state. Distinct - // from TriggerRemediationNow: this never itself invokes a remediation - // action, it only un-parks the row. - ResetStuckRemediation(context.Context, *connect.Request[v1.ResetStuckRemediationRequest]) (*connect.Response[v1.ResetStuckRemediationResponse], error) - // BulkResetStuckRemediation applies ResetStuckRemediation's reset to every - // open stuck row matching the optional reason filter — the "something - // upstream broke a batch of these, give them all a fresh shot" admin - // action, e.g. after an OOM-restart storm inflated attempt counts across - // many items at once. - BulkResetStuckRemediation(context.Context, *connect.Request[v1.BulkResetStuckRemediationRequest]) (*connect.Response[v1.BulkResetStuckRemediationResponse], error) - // TriggerRemediationNow immediately runs the reason-specific remediation - // action for a single open stuck row, bypassing only the next_remediation_at - // backoff timer — every other safety gate (the 5-attempt cap, the wrapped - // action's own circuit breaker) still applies, and this attempt still - // counts toward remediation_attempts like any dispatcher-triggered one. - // Rejects with an error (rather than silently un-parking) when the row has - // already exhausted its attempt budget — use ResetStuckRemediation first. - TriggerRemediationNow(context.Context, *connect.Request[v1.TriggerRemediationNowRequest]) (*connect.Response[v1.TriggerRemediationNowResponse], error) - // WatchBacklogItems streams real-time backlog item events (status changes, - // verdicts, session attachments, updates, archival, removal). - // Server-streaming RPC for live backlog updates without polling. - WatchBacklogItems(context.Context, *connect.Request[v1.WatchBacklogItemsRequest], *connect.ServerStream[v1.BacklogItemEvent]) error -} - -// NewBacklogServiceHandler builds an HTTP handler from the service implementation. It returns the -// path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewBacklogServiceHandler(svc BacklogServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - backlogServiceMethods := v1.File_session_v1_backlog_proto.Services().ByName("BacklogService").Methods() - backlogServiceCreateBacklogItemHandler := connect.NewUnaryHandler( - BacklogServiceCreateBacklogItemProcedure, - svc.CreateBacklogItem, - connect.WithSchema(backlogServiceMethods.ByName("CreateBacklogItem")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceGetBacklogItemHandler := connect.NewUnaryHandler( - BacklogServiceGetBacklogItemProcedure, - svc.GetBacklogItem, - connect.WithSchema(backlogServiceMethods.ByName("GetBacklogItem")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceGetBacklogItemShipStatusHandler := connect.NewUnaryHandler( - BacklogServiceGetBacklogItemShipStatusProcedure, - svc.GetBacklogItemShipStatus, - connect.WithSchema(backlogServiceMethods.ByName("GetBacklogItemShipStatus")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceListBacklogItemsHandler := connect.NewUnaryHandler( - BacklogServiceListBacklogItemsProcedure, - svc.ListBacklogItems, - connect.WithSchema(backlogServiceMethods.ByName("ListBacklogItems")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceUpdateBacklogItemHandler := connect.NewUnaryHandler( - BacklogServiceUpdateBacklogItemProcedure, - svc.UpdateBacklogItem, - connect.WithSchema(backlogServiceMethods.ByName("UpdateBacklogItem")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceArchiveBacklogItemHandler := connect.NewUnaryHandler( - BacklogServiceArchiveBacklogItemProcedure, - svc.ArchiveBacklogItem, - connect.WithSchema(backlogServiceMethods.ByName("ArchiveBacklogItem")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceDeleteBacklogItemHandler := connect.NewUnaryHandler( - BacklogServiceDeleteBacklogItemProcedure, - svc.DeleteBacklogItem, - connect.WithSchema(backlogServiceMethods.ByName("DeleteBacklogItem")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceTransitionBacklogItemStatusHandler := connect.NewUnaryHandler( - BacklogServiceTransitionBacklogItemStatusProcedure, - svc.TransitionBacklogItemStatus, - connect.WithSchema(backlogServiceMethods.ByName("TransitionBacklogItemStatus")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceSpawnSessionFromItemHandler := connect.NewUnaryHandler( - BacklogServiceSpawnSessionFromItemProcedure, - svc.SpawnSessionFromItem, - connect.WithSchema(backlogServiceMethods.ByName("SpawnSessionFromItem")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceAttachSessionToItemHandler := connect.NewUnaryHandler( - BacklogServiceAttachSessionToItemProcedure, - svc.AttachSessionToItem, - connect.WithSchema(backlogServiceMethods.ByName("AttachSessionToItem")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceTriggerTriageHandler := connect.NewUnaryHandler( - BacklogServiceTriggerTriageProcedure, - svc.TriggerTriage, - connect.WithSchema(backlogServiceMethods.ByName("TriggerTriage")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceCancelTriageHandler := connect.NewUnaryHandler( - BacklogServiceCancelTriageProcedure, - svc.CancelTriage, - connect.WithSchema(backlogServiceMethods.ByName("CancelTriage")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceApprovePlanHandler := connect.NewUnaryHandler( - BacklogServiceApprovePlanProcedure, - svc.ApprovePlan, - connect.WithSchema(backlogServiceMethods.ByName("ApprovePlan")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceSuggestNextItemHandler := connect.NewUnaryHandler( - BacklogServiceSuggestNextItemProcedure, - svc.SuggestNextItem, - connect.WithSchema(backlogServiceMethods.ByName("SuggestNextItem")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceOverrideVerdictHandler := connect.NewUnaryHandler( - BacklogServiceOverrideVerdictProcedure, - svc.OverrideVerdict, - connect.WithSchema(backlogServiceMethods.ByName("OverrideVerdict")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceTriggerReReviewHandler := connect.NewUnaryHandler( - BacklogServiceTriggerReReviewProcedure, - svc.TriggerReReview, - connect.WithSchema(backlogServiceMethods.ByName("TriggerReReview")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceTriggerShipPRHandler := connect.NewUnaryHandler( - BacklogServiceTriggerShipPRProcedure, - svc.TriggerShipPR, - connect.WithSchema(backlogServiceMethods.ByName("TriggerShipPR")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceTriggerSyncHandler := connect.NewUnaryHandler( - BacklogServiceTriggerSyncProcedure, - svc.TriggerSync, - connect.WithSchema(backlogServiceMethods.ByName("TriggerSync")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceCreateItemSourceHandler := connect.NewUnaryHandler( - BacklogServiceCreateItemSourceProcedure, - svc.CreateItemSource, - connect.WithSchema(backlogServiceMethods.ByName("CreateItemSource")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceListItemSourcesHandler := connect.NewUnaryHandler( - BacklogServiceListItemSourcesProcedure, - svc.ListItemSources, - connect.WithSchema(backlogServiceMethods.ByName("ListItemSources")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceUpdateItemSourceHandler := connect.NewUnaryHandler( - BacklogServiceUpdateItemSourceProcedure, - svc.UpdateItemSource, - connect.WithSchema(backlogServiceMethods.ByName("UpdateItemSource")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceDeleteItemSourceHandler := connect.NewUnaryHandler( - BacklogServiceDeleteItemSourceProcedure, - svc.DeleteItemSource, - connect.WithSchema(backlogServiceMethods.ByName("DeleteItemSource")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceGetSyncHistoryHandler := connect.NewUnaryHandler( - BacklogServiceGetSyncHistoryProcedure, - svc.GetSyncHistory, - connect.WithSchema(backlogServiceMethods.ByName("GetSyncHistory")), - connect.WithHandlerOptions(opts...), - ) - backlogServicePreviewBackwardSyncImpactHandler := connect.NewUnaryHandler( - BacklogServicePreviewBackwardSyncImpactProcedure, - svc.PreviewBackwardSyncImpact, - connect.WithSchema(backlogServiceMethods.ByName("PreviewBackwardSyncImpact")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceCreatePipelineModeHandler := connect.NewUnaryHandler( - BacklogServiceCreatePipelineModeProcedure, - svc.CreatePipelineMode, - connect.WithSchema(backlogServiceMethods.ByName("CreatePipelineMode")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceUpdatePipelineModeHandler := connect.NewUnaryHandler( - BacklogServiceUpdatePipelineModeProcedure, - svc.UpdatePipelineMode, - connect.WithSchema(backlogServiceMethods.ByName("UpdatePipelineMode")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceDeletePipelineModeHandler := connect.NewUnaryHandler( - BacklogServiceDeletePipelineModeProcedure, - svc.DeletePipelineMode, - connect.WithSchema(backlogServiceMethods.ByName("DeletePipelineMode")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceGetPipelineModeHandler := connect.NewUnaryHandler( - BacklogServiceGetPipelineModeProcedure, - svc.GetPipelineMode, - connect.WithSchema(backlogServiceMethods.ByName("GetPipelineMode")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceListPipelineModesHandler := connect.NewUnaryHandler( - BacklogServiceListPipelineModesProcedure, - svc.ListPipelineModes, - connect.WithSchema(backlogServiceMethods.ByName("ListPipelineModes")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceImportGitHubIssueHandler := connect.NewUnaryHandler( - BacklogServiceImportGitHubIssueProcedure, - svc.ImportGitHubIssue, - connect.WithSchema(backlogServiceMethods.ByName("ImportGitHubIssue")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceSearchGitHubReposHandler := connect.NewUnaryHandler( - BacklogServiceSearchGitHubReposProcedure, - svc.SearchGitHubRepos, - connect.WithSchema(backlogServiceMethods.ByName("SearchGitHubRepos")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceListGitHubIssuesHandler := connect.NewUnaryHandler( - BacklogServiceListGitHubIssuesProcedure, - svc.ListGitHubIssues, - connect.WithSchema(backlogServiceMethods.ByName("ListGitHubIssues")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceGetBacklogItemDiffHandler := connect.NewUnaryHandler( - BacklogServiceGetBacklogItemDiffProcedure, - svc.GetBacklogItemDiff, - connect.WithSchema(backlogServiceMethods.ByName("GetBacklogItemDiff")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceGetBacklogItemCostHandler := connect.NewUnaryHandler( - BacklogServiceGetBacklogItemCostProcedure, - svc.GetBacklogItemCost, - connect.WithSchema(backlogServiceMethods.ByName("GetBacklogItemCost")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceGetSessionBacklogIndexHandler := connect.NewUnaryHandler( - BacklogServiceGetSessionBacklogIndexProcedure, - svc.GetSessionBacklogIndex, - connect.WithSchema(backlogServiceMethods.ByName("GetSessionBacklogIndex")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceSubmitManualReviewHandler := connect.NewUnaryHandler( - BacklogServiceSubmitManualReviewProcedure, - svc.SubmitManualReview, - connect.WithSchema(backlogServiceMethods.ByName("SubmitManualReview")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceListStuckBacklogItemsHandler := connect.NewUnaryHandler( - BacklogServiceListStuckBacklogItemsProcedure, - svc.ListStuckBacklogItems, - connect.WithSchema(backlogServiceMethods.ByName("ListStuckBacklogItems")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceSnoozeStuckItemHandler := connect.NewUnaryHandler( - BacklogServiceSnoozeStuckItemProcedure, - svc.SnoozeStuckItem, - connect.WithSchema(backlogServiceMethods.ByName("SnoozeStuckItem")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceResetStuckRemediationHandler := connect.NewUnaryHandler( - BacklogServiceResetStuckRemediationProcedure, - svc.ResetStuckRemediation, - connect.WithSchema(backlogServiceMethods.ByName("ResetStuckRemediation")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceBulkResetStuckRemediationHandler := connect.NewUnaryHandler( - BacklogServiceBulkResetStuckRemediationProcedure, - svc.BulkResetStuckRemediation, - connect.WithSchema(backlogServiceMethods.ByName("BulkResetStuckRemediation")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceTriggerRemediationNowHandler := connect.NewUnaryHandler( - BacklogServiceTriggerRemediationNowProcedure, - svc.TriggerRemediationNow, - connect.WithSchema(backlogServiceMethods.ByName("TriggerRemediationNow")), - connect.WithHandlerOptions(opts...), - ) - backlogServiceWatchBacklogItemsHandler := connect.NewServerStreamHandler( - BacklogServiceWatchBacklogItemsProcedure, - svc.WatchBacklogItems, - connect.WithSchema(backlogServiceMethods.ByName("WatchBacklogItems")), - connect.WithHandlerOptions(opts...), - ) - return "/session.v1.BacklogService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case BacklogServiceCreateBacklogItemProcedure: - backlogServiceCreateBacklogItemHandler.ServeHTTP(w, r) - case BacklogServiceGetBacklogItemProcedure: - backlogServiceGetBacklogItemHandler.ServeHTTP(w, r) - case BacklogServiceGetBacklogItemShipStatusProcedure: - backlogServiceGetBacklogItemShipStatusHandler.ServeHTTP(w, r) - case BacklogServiceListBacklogItemsProcedure: - backlogServiceListBacklogItemsHandler.ServeHTTP(w, r) - case BacklogServiceUpdateBacklogItemProcedure: - backlogServiceUpdateBacklogItemHandler.ServeHTTP(w, r) - case BacklogServiceArchiveBacklogItemProcedure: - backlogServiceArchiveBacklogItemHandler.ServeHTTP(w, r) - case BacklogServiceDeleteBacklogItemProcedure: - backlogServiceDeleteBacklogItemHandler.ServeHTTP(w, r) - case BacklogServiceTransitionBacklogItemStatusProcedure: - backlogServiceTransitionBacklogItemStatusHandler.ServeHTTP(w, r) - case BacklogServiceSpawnSessionFromItemProcedure: - backlogServiceSpawnSessionFromItemHandler.ServeHTTP(w, r) - case BacklogServiceAttachSessionToItemProcedure: - backlogServiceAttachSessionToItemHandler.ServeHTTP(w, r) - case BacklogServiceTriggerTriageProcedure: - backlogServiceTriggerTriageHandler.ServeHTTP(w, r) - case BacklogServiceCancelTriageProcedure: - backlogServiceCancelTriageHandler.ServeHTTP(w, r) - case BacklogServiceApprovePlanProcedure: - backlogServiceApprovePlanHandler.ServeHTTP(w, r) - case BacklogServiceSuggestNextItemProcedure: - backlogServiceSuggestNextItemHandler.ServeHTTP(w, r) - case BacklogServiceOverrideVerdictProcedure: - backlogServiceOverrideVerdictHandler.ServeHTTP(w, r) - case BacklogServiceTriggerReReviewProcedure: - backlogServiceTriggerReReviewHandler.ServeHTTP(w, r) - case BacklogServiceTriggerShipPRProcedure: - backlogServiceTriggerShipPRHandler.ServeHTTP(w, r) - case BacklogServiceTriggerSyncProcedure: - backlogServiceTriggerSyncHandler.ServeHTTP(w, r) - case BacklogServiceCreateItemSourceProcedure: - backlogServiceCreateItemSourceHandler.ServeHTTP(w, r) - case BacklogServiceListItemSourcesProcedure: - backlogServiceListItemSourcesHandler.ServeHTTP(w, r) - case BacklogServiceUpdateItemSourceProcedure: - backlogServiceUpdateItemSourceHandler.ServeHTTP(w, r) - case BacklogServiceDeleteItemSourceProcedure: - backlogServiceDeleteItemSourceHandler.ServeHTTP(w, r) - case BacklogServiceGetSyncHistoryProcedure: - backlogServiceGetSyncHistoryHandler.ServeHTTP(w, r) - case BacklogServicePreviewBackwardSyncImpactProcedure: - backlogServicePreviewBackwardSyncImpactHandler.ServeHTTP(w, r) - case BacklogServiceCreatePipelineModeProcedure: - backlogServiceCreatePipelineModeHandler.ServeHTTP(w, r) - case BacklogServiceUpdatePipelineModeProcedure: - backlogServiceUpdatePipelineModeHandler.ServeHTTP(w, r) - case BacklogServiceDeletePipelineModeProcedure: - backlogServiceDeletePipelineModeHandler.ServeHTTP(w, r) - case BacklogServiceGetPipelineModeProcedure: - backlogServiceGetPipelineModeHandler.ServeHTTP(w, r) - case BacklogServiceListPipelineModesProcedure: - backlogServiceListPipelineModesHandler.ServeHTTP(w, r) - case BacklogServiceImportGitHubIssueProcedure: - backlogServiceImportGitHubIssueHandler.ServeHTTP(w, r) - case BacklogServiceSearchGitHubReposProcedure: - backlogServiceSearchGitHubReposHandler.ServeHTTP(w, r) - case BacklogServiceListGitHubIssuesProcedure: - backlogServiceListGitHubIssuesHandler.ServeHTTP(w, r) - case BacklogServiceGetBacklogItemDiffProcedure: - backlogServiceGetBacklogItemDiffHandler.ServeHTTP(w, r) - case BacklogServiceGetBacklogItemCostProcedure: - backlogServiceGetBacklogItemCostHandler.ServeHTTP(w, r) - case BacklogServiceGetSessionBacklogIndexProcedure: - backlogServiceGetSessionBacklogIndexHandler.ServeHTTP(w, r) - case BacklogServiceSubmitManualReviewProcedure: - backlogServiceSubmitManualReviewHandler.ServeHTTP(w, r) - case BacklogServiceListStuckBacklogItemsProcedure: - backlogServiceListStuckBacklogItemsHandler.ServeHTTP(w, r) - case BacklogServiceSnoozeStuckItemProcedure: - backlogServiceSnoozeStuckItemHandler.ServeHTTP(w, r) - case BacklogServiceResetStuckRemediationProcedure: - backlogServiceResetStuckRemediationHandler.ServeHTTP(w, r) - case BacklogServiceBulkResetStuckRemediationProcedure: - backlogServiceBulkResetStuckRemediationHandler.ServeHTTP(w, r) - case BacklogServiceTriggerRemediationNowProcedure: - backlogServiceTriggerRemediationNowHandler.ServeHTTP(w, r) - case BacklogServiceWatchBacklogItemsProcedure: - backlogServiceWatchBacklogItemsHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedBacklogServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedBacklogServiceHandler struct{} - -func (UnimplementedBacklogServiceHandler) CreateBacklogItem(context.Context, *connect.Request[v1.CreateBacklogItemRequest]) (*connect.Response[v1.CreateBacklogItemResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.CreateBacklogItem is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) GetBacklogItem(context.Context, *connect.Request[v1.GetBacklogItemRequest]) (*connect.Response[v1.GetBacklogItemResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.GetBacklogItem is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) GetBacklogItemShipStatus(context.Context, *connect.Request[v1.GetBacklogItemShipStatusRequest]) (*connect.Response[v1.GetBacklogItemShipStatusResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.GetBacklogItemShipStatus is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) ListBacklogItems(context.Context, *connect.Request[v1.ListBacklogItemsRequest]) (*connect.Response[v1.ListBacklogItemsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.ListBacklogItems is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) UpdateBacklogItem(context.Context, *connect.Request[v1.UpdateBacklogItemRequest]) (*connect.Response[v1.UpdateBacklogItemResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.UpdateBacklogItem is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) ArchiveBacklogItem(context.Context, *connect.Request[v1.ArchiveBacklogItemRequest]) (*connect.Response[v1.ArchiveBacklogItemResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.ArchiveBacklogItem is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) DeleteBacklogItem(context.Context, *connect.Request[v1.DeleteBacklogItemRequest]) (*connect.Response[v1.DeleteBacklogItemResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.DeleteBacklogItem is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) TransitionBacklogItemStatus(context.Context, *connect.Request[v1.TransitionBacklogItemStatusRequest]) (*connect.Response[v1.TransitionBacklogItemStatusResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.TransitionBacklogItemStatus is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) SpawnSessionFromItem(context.Context, *connect.Request[v1.SpawnSessionFromItemRequest]) (*connect.Response[v1.SpawnSessionFromItemResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.SpawnSessionFromItem is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) AttachSessionToItem(context.Context, *connect.Request[v1.AttachSessionToItemRequest]) (*connect.Response[v1.AttachSessionToItemResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.AttachSessionToItem is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) TriggerTriage(context.Context, *connect.Request[v1.TriggerTriageRequest]) (*connect.Response[v1.TriggerTriageResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.TriggerTriage is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) CancelTriage(context.Context, *connect.Request[v1.CancelTriageRequest]) (*connect.Response[v1.CancelTriageResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.CancelTriage is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) ApprovePlan(context.Context, *connect.Request[v1.ApprovePlanRequest]) (*connect.Response[v1.ApprovePlanResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.ApprovePlan is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) SuggestNextItem(context.Context, *connect.Request[v1.SuggestNextItemRequest]) (*connect.Response[v1.SuggestNextItemResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.SuggestNextItem is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) OverrideVerdict(context.Context, *connect.Request[v1.OverrideVerdictRequest]) (*connect.Response[v1.OverrideVerdictResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.OverrideVerdict is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) TriggerReReview(context.Context, *connect.Request[v1.TriggerReReviewRequest]) (*connect.Response[v1.TriggerReReviewResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.TriggerReReview is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) TriggerShipPR(context.Context, *connect.Request[v1.TriggerShipPRRequest]) (*connect.Response[v1.TriggerShipPRResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.TriggerShipPR is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) TriggerSync(context.Context, *connect.Request[v1.TriggerSyncRequest]) (*connect.Response[v1.TriggerSyncResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.TriggerSync is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) CreateItemSource(context.Context, *connect.Request[v1.CreateItemSourceRequest]) (*connect.Response[v1.CreateItemSourceResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.CreateItemSource is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) ListItemSources(context.Context, *connect.Request[v1.ListItemSourcesRequest]) (*connect.Response[v1.ListItemSourcesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.ListItemSources is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) UpdateItemSource(context.Context, *connect.Request[v1.UpdateItemSourceRequest]) (*connect.Response[v1.UpdateItemSourceResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.UpdateItemSource is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) DeleteItemSource(context.Context, *connect.Request[v1.DeleteItemSourceRequest]) (*connect.Response[v1.DeleteItemSourceResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.DeleteItemSource is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) GetSyncHistory(context.Context, *connect.Request[v1.GetSyncHistoryRequest]) (*connect.Response[v1.GetSyncHistoryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.GetSyncHistory is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) PreviewBackwardSyncImpact(context.Context, *connect.Request[v1.PreviewBackwardSyncImpactRequest]) (*connect.Response[v1.PreviewBackwardSyncImpactResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.PreviewBackwardSyncImpact is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) CreatePipelineMode(context.Context, *connect.Request[v1.CreatePipelineModeRequest]) (*connect.Response[v1.CreatePipelineModeResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.CreatePipelineMode is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) UpdatePipelineMode(context.Context, *connect.Request[v1.UpdatePipelineModeRequest]) (*connect.Response[v1.UpdatePipelineModeResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.UpdatePipelineMode is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) DeletePipelineMode(context.Context, *connect.Request[v1.DeletePipelineModeRequest]) (*connect.Response[v1.DeletePipelineModeResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.DeletePipelineMode is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) GetPipelineMode(context.Context, *connect.Request[v1.GetPipelineModeRequest]) (*connect.Response[v1.GetPipelineModeResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.GetPipelineMode is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) ListPipelineModes(context.Context, *connect.Request[v1.ListPipelineModesRequest]) (*connect.Response[v1.ListPipelineModesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.ListPipelineModes is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) ImportGitHubIssue(context.Context, *connect.Request[v1.ImportGitHubIssueRequest]) (*connect.Response[v1.ImportGitHubIssueResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.ImportGitHubIssue is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) SearchGitHubRepos(context.Context, *connect.Request[v1.SearchGitHubReposRequest]) (*connect.Response[v1.SearchGitHubReposResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.SearchGitHubRepos is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) ListGitHubIssues(context.Context, *connect.Request[v1.ListGitHubIssuesRequest]) (*connect.Response[v1.ListGitHubIssuesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.ListGitHubIssues is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) GetBacklogItemDiff(context.Context, *connect.Request[v1.GetBacklogItemDiffRequest]) (*connect.Response[v1.GetBacklogItemDiffResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.GetBacklogItemDiff is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) GetBacklogItemCost(context.Context, *connect.Request[v1.GetBacklogItemCostRequest]) (*connect.Response[v1.GetBacklogItemCostResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.GetBacklogItemCost is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) GetSessionBacklogIndex(context.Context, *connect.Request[v1.GetSessionBacklogIndexRequest]) (*connect.Response[v1.GetSessionBacklogIndexResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.GetSessionBacklogIndex is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) SubmitManualReview(context.Context, *connect.Request[v1.SubmitManualReviewRequest]) (*connect.Response[v1.SubmitManualReviewResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.SubmitManualReview is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) ListStuckBacklogItems(context.Context, *connect.Request[v1.ListStuckBacklogItemsRequest]) (*connect.Response[v1.ListStuckBacklogItemsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.ListStuckBacklogItems is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) SnoozeStuckItem(context.Context, *connect.Request[v1.SnoozeStuckItemRequest]) (*connect.Response[v1.SnoozeStuckItemResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.SnoozeStuckItem is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) ResetStuckRemediation(context.Context, *connect.Request[v1.ResetStuckRemediationRequest]) (*connect.Response[v1.ResetStuckRemediationResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.ResetStuckRemediation is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) BulkResetStuckRemediation(context.Context, *connect.Request[v1.BulkResetStuckRemediationRequest]) (*connect.Response[v1.BulkResetStuckRemediationResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.BulkResetStuckRemediation is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) TriggerRemediationNow(context.Context, *connect.Request[v1.TriggerRemediationNowRequest]) (*connect.Response[v1.TriggerRemediationNowResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.TriggerRemediationNow is not implemented")) -} - -func (UnimplementedBacklogServiceHandler) WatchBacklogItems(context.Context, *connect.Request[v1.WatchBacklogItemsRequest], *connect.ServerStream[v1.BacklogItemEvent]) error { - return connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.BacklogService.WatchBacklogItems is not implemented")) -} diff --git a/gen/proto/go/session/v1/sessionv1connect/github_user.connect.go b/gen/proto/go/session/v1/sessionv1connect/github_user.connect.go deleted file mode 100644 index d9b049928..000000000 --- a/gen/proto/go/session/v1/sessionv1connect/github_user.connect.go +++ /dev/null @@ -1,422 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: session/v1/github_user.proto - -package sessionv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/tstapler/stapler-squad/gen/proto/go/session/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion1_13_0 - -const ( - // GitHubUserServiceName is the fully-qualified name of the GitHubUserService service. - GitHubUserServiceName = "session.v1.GitHubUserService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // GitHubUserServiceListUserPRsProcedure is the fully-qualified name of the GitHubUserService's - // ListUserPRs RPC. - GitHubUserServiceListUserPRsProcedure = "/session.v1.GitHubUserService/ListUserPRs" - // GitHubUserServiceWatchUserPRsProcedure is the fully-qualified name of the GitHubUserService's - // WatchUserPRs RPC. - GitHubUserServiceWatchUserPRsProcedure = "/session.v1.GitHubUserService/WatchUserPRs" - // GitHubUserServiceGetGitHubAuthStateProcedure is the fully-qualified name of the - // GitHubUserService's GetGitHubAuthState RPC. - GitHubUserServiceGetGitHubAuthStateProcedure = "/session.v1.GitHubUserService/GetGitHubAuthState" - // GitHubUserServiceStartGitHubDeviceAuthProcedure is the fully-qualified name of the - // GitHubUserService's StartGitHubDeviceAuth RPC. - GitHubUserServiceStartGitHubDeviceAuthProcedure = "/session.v1.GitHubUserService/StartGitHubDeviceAuth" - // GitHubUserServicePollGitHubDeviceAuthProcedure is the fully-qualified name of the - // GitHubUserService's PollGitHubDeviceAuth RPC. - GitHubUserServicePollGitHubDeviceAuthProcedure = "/session.v1.GitHubUserService/PollGitHubDeviceAuth" - // GitHubUserServiceRevokeGitHubTokenProcedure is the fully-qualified name of the - // GitHubUserService's RevokeGitHubToken RPC. - GitHubUserServiceRevokeGitHubTokenProcedure = "/session.v1.GitHubUserService/RevokeGitHubToken" - // GitHubUserServiceListGitHubAccountsProcedure is the fully-qualified name of the - // GitHubUserService's ListGitHubAccounts RPC. - GitHubUserServiceListGitHubAccountsProcedure = "/session.v1.GitHubUserService/ListGitHubAccounts" - // GitHubUserServiceAddGitHubAccountWithTokenProcedure is the fully-qualified name of the - // GitHubUserService's AddGitHubAccountWithToken RPC. - GitHubUserServiceAddGitHubAccountWithTokenProcedure = "/session.v1.GitHubUserService/AddGitHubAccountWithToken" - // GitHubUserServiceListGitHubCLIHostsProcedure is the fully-qualified name of the - // GitHubUserService's ListGitHubCLIHosts RPC. - GitHubUserServiceListGitHubCLIHostsProcedure = "/session.v1.GitHubUserService/ListGitHubCLIHosts" - // GitHubUserServiceAddGitHubAccountFromCLIProcedure is the fully-qualified name of the - // GitHubUserService's AddGitHubAccountFromCLI RPC. - GitHubUserServiceAddGitHubAccountFromCLIProcedure = "/session.v1.GitHubUserService/AddGitHubAccountFromCLI" -) - -// GitHubUserServiceClient is a client for the session.v1.GitHubUserService service. -type GitHubUserServiceClient interface { - // ListUserPRs returns all open PRs authored by the authenticated user, - // annotated with any matching local session IDs and worktree paths. - // Returns an empty list with auth_state.available=false when unauthenticated. - ListUserPRs(context.Context, *connect.Request[v1.ListUserPRsRequest]) (*connect.Response[v1.ListUserPRsResponse], error) - // WatchUserPRs streams UserPREvent messages whenever the UserPRCache - // refreshes. The first event always contains a full snapshot. - WatchUserPRs(context.Context, *connect.Request[v1.WatchUserPRsRequest]) (*connect.ServerStreamForClient[v1.UserPREvent], error) - // GetGitHubAuthState returns current auth availability and username. - // Used by the frontend to show/hide the GitHub PRs section and render - // the auth banner when the user has not authenticated. - GetGitHubAuthState(context.Context, *connect.Request[v1.GetGitHubAuthStateRequest]) (*connect.Response[v1.GetGitHubAuthStateResponse], error) - // StartGitHubDeviceAuth initiates the GitHub Device Flow OAuth. Returns the - // user_code to display and verification_uri to open. The caller should then - // poll PollGitHubDeviceAuth until auth completes or expires. - StartGitHubDeviceAuth(context.Context, *connect.Request[v1.StartGitHubDeviceAuthRequest]) (*connect.Response[v1.StartGitHubDeviceAuthResponse], error) - // PollGitHubDeviceAuth polls GitHub's token endpoint once. Returns the - // current status: pending, complete (token stored in keychain), or expired. - PollGitHubDeviceAuth(context.Context, *connect.Request[v1.PollGitHubDeviceAuthRequest]) (*connect.Response[v1.PollGitHubDeviceAuthResponse], error) - // RevokeGitHubToken removes the keychain-stored GitHub token and clears - // the auth state. Does not revoke the token on GitHub's side. - RevokeGitHubToken(context.Context, *connect.Request[v1.RevokeGitHubTokenRequest]) (*connect.Response[v1.RevokeGitHubTokenResponse], error) - // ListGitHubAccounts returns all connected GitHub accounts (from keychain and env vars). - ListGitHubAccounts(context.Context, *connect.Request[v1.ListGitHubAccountsRequest]) (*connect.Response[v1.ListGitHubAccountsResponse], error) - // AddGitHubAccountWithToken validates a personal access token against the - // host's /user endpoint and stores it in the keychain on success. Use this - // for hosts that don't support OAuth Device Flow (e.g. some GHES instances). - AddGitHubAccountWithToken(context.Context, *connect.Request[v1.AddGitHubAccountWithTokenRequest]) (*connect.Response[v1.AddGitHubAccountWithTokenResponse], error) - // ListGitHubCLIHosts discovers hosts the local `gh` CLI is already - // authenticated to (via its hosts.yml config), so the UI can offer them as - // one-click imports instead of requiring the user to paste a token. - ListGitHubCLIHosts(context.Context, *connect.Request[v1.ListGitHubCLIHostsRequest]) (*connect.Response[v1.ListGitHubCLIHostsResponse], error) - // AddGitHubAccountFromCLI fetches the token gh CLI already holds for host - // (via `gh auth token --hostname `), validates it, and stores it in - // the keychain on success — the same outcome as AddGitHubAccountWithToken - // but without the user needing to locate/paste the token by hand. - AddGitHubAccountFromCLI(context.Context, *connect.Request[v1.AddGitHubAccountFromCLIRequest]) (*connect.Response[v1.AddGitHubAccountWithTokenResponse], error) -} - -// NewGitHubUserServiceClient constructs a client for the session.v1.GitHubUserService service. By -// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, -// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the -// connect.WithGRPC() or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewGitHubUserServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) GitHubUserServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - gitHubUserServiceMethods := v1.File_session_v1_github_user_proto.Services().ByName("GitHubUserService").Methods() - return &gitHubUserServiceClient{ - listUserPRs: connect.NewClient[v1.ListUserPRsRequest, v1.ListUserPRsResponse]( - httpClient, - baseURL+GitHubUserServiceListUserPRsProcedure, - connect.WithSchema(gitHubUserServiceMethods.ByName("ListUserPRs")), - connect.WithClientOptions(opts...), - ), - watchUserPRs: connect.NewClient[v1.WatchUserPRsRequest, v1.UserPREvent]( - httpClient, - baseURL+GitHubUserServiceWatchUserPRsProcedure, - connect.WithSchema(gitHubUserServiceMethods.ByName("WatchUserPRs")), - connect.WithClientOptions(opts...), - ), - getGitHubAuthState: connect.NewClient[v1.GetGitHubAuthStateRequest, v1.GetGitHubAuthStateResponse]( - httpClient, - baseURL+GitHubUserServiceGetGitHubAuthStateProcedure, - connect.WithSchema(gitHubUserServiceMethods.ByName("GetGitHubAuthState")), - connect.WithClientOptions(opts...), - ), - startGitHubDeviceAuth: connect.NewClient[v1.StartGitHubDeviceAuthRequest, v1.StartGitHubDeviceAuthResponse]( - httpClient, - baseURL+GitHubUserServiceStartGitHubDeviceAuthProcedure, - connect.WithSchema(gitHubUserServiceMethods.ByName("StartGitHubDeviceAuth")), - connect.WithClientOptions(opts...), - ), - pollGitHubDeviceAuth: connect.NewClient[v1.PollGitHubDeviceAuthRequest, v1.PollGitHubDeviceAuthResponse]( - httpClient, - baseURL+GitHubUserServicePollGitHubDeviceAuthProcedure, - connect.WithSchema(gitHubUserServiceMethods.ByName("PollGitHubDeviceAuth")), - connect.WithClientOptions(opts...), - ), - revokeGitHubToken: connect.NewClient[v1.RevokeGitHubTokenRequest, v1.RevokeGitHubTokenResponse]( - httpClient, - baseURL+GitHubUserServiceRevokeGitHubTokenProcedure, - connect.WithSchema(gitHubUserServiceMethods.ByName("RevokeGitHubToken")), - connect.WithClientOptions(opts...), - ), - listGitHubAccounts: connect.NewClient[v1.ListGitHubAccountsRequest, v1.ListGitHubAccountsResponse]( - httpClient, - baseURL+GitHubUserServiceListGitHubAccountsProcedure, - connect.WithSchema(gitHubUserServiceMethods.ByName("ListGitHubAccounts")), - connect.WithClientOptions(opts...), - ), - addGitHubAccountWithToken: connect.NewClient[v1.AddGitHubAccountWithTokenRequest, v1.AddGitHubAccountWithTokenResponse]( - httpClient, - baseURL+GitHubUserServiceAddGitHubAccountWithTokenProcedure, - connect.WithSchema(gitHubUserServiceMethods.ByName("AddGitHubAccountWithToken")), - connect.WithClientOptions(opts...), - ), - listGitHubCLIHosts: connect.NewClient[v1.ListGitHubCLIHostsRequest, v1.ListGitHubCLIHostsResponse]( - httpClient, - baseURL+GitHubUserServiceListGitHubCLIHostsProcedure, - connect.WithSchema(gitHubUserServiceMethods.ByName("ListGitHubCLIHosts")), - connect.WithClientOptions(opts...), - ), - addGitHubAccountFromCLI: connect.NewClient[v1.AddGitHubAccountFromCLIRequest, v1.AddGitHubAccountWithTokenResponse]( - httpClient, - baseURL+GitHubUserServiceAddGitHubAccountFromCLIProcedure, - connect.WithSchema(gitHubUserServiceMethods.ByName("AddGitHubAccountFromCLI")), - connect.WithClientOptions(opts...), - ), - } -} - -// gitHubUserServiceClient implements GitHubUserServiceClient. -type gitHubUserServiceClient struct { - listUserPRs *connect.Client[v1.ListUserPRsRequest, v1.ListUserPRsResponse] - watchUserPRs *connect.Client[v1.WatchUserPRsRequest, v1.UserPREvent] - getGitHubAuthState *connect.Client[v1.GetGitHubAuthStateRequest, v1.GetGitHubAuthStateResponse] - startGitHubDeviceAuth *connect.Client[v1.StartGitHubDeviceAuthRequest, v1.StartGitHubDeviceAuthResponse] - pollGitHubDeviceAuth *connect.Client[v1.PollGitHubDeviceAuthRequest, v1.PollGitHubDeviceAuthResponse] - revokeGitHubToken *connect.Client[v1.RevokeGitHubTokenRequest, v1.RevokeGitHubTokenResponse] - listGitHubAccounts *connect.Client[v1.ListGitHubAccountsRequest, v1.ListGitHubAccountsResponse] - addGitHubAccountWithToken *connect.Client[v1.AddGitHubAccountWithTokenRequest, v1.AddGitHubAccountWithTokenResponse] - listGitHubCLIHosts *connect.Client[v1.ListGitHubCLIHostsRequest, v1.ListGitHubCLIHostsResponse] - addGitHubAccountFromCLI *connect.Client[v1.AddGitHubAccountFromCLIRequest, v1.AddGitHubAccountWithTokenResponse] -} - -// ListUserPRs calls session.v1.GitHubUserService.ListUserPRs. -func (c *gitHubUserServiceClient) ListUserPRs(ctx context.Context, req *connect.Request[v1.ListUserPRsRequest]) (*connect.Response[v1.ListUserPRsResponse], error) { - return c.listUserPRs.CallUnary(ctx, req) -} - -// WatchUserPRs calls session.v1.GitHubUserService.WatchUserPRs. -func (c *gitHubUserServiceClient) WatchUserPRs(ctx context.Context, req *connect.Request[v1.WatchUserPRsRequest]) (*connect.ServerStreamForClient[v1.UserPREvent], error) { - return c.watchUserPRs.CallServerStream(ctx, req) -} - -// GetGitHubAuthState calls session.v1.GitHubUserService.GetGitHubAuthState. -func (c *gitHubUserServiceClient) GetGitHubAuthState(ctx context.Context, req *connect.Request[v1.GetGitHubAuthStateRequest]) (*connect.Response[v1.GetGitHubAuthStateResponse], error) { - return c.getGitHubAuthState.CallUnary(ctx, req) -} - -// StartGitHubDeviceAuth calls session.v1.GitHubUserService.StartGitHubDeviceAuth. -func (c *gitHubUserServiceClient) StartGitHubDeviceAuth(ctx context.Context, req *connect.Request[v1.StartGitHubDeviceAuthRequest]) (*connect.Response[v1.StartGitHubDeviceAuthResponse], error) { - return c.startGitHubDeviceAuth.CallUnary(ctx, req) -} - -// PollGitHubDeviceAuth calls session.v1.GitHubUserService.PollGitHubDeviceAuth. -func (c *gitHubUserServiceClient) PollGitHubDeviceAuth(ctx context.Context, req *connect.Request[v1.PollGitHubDeviceAuthRequest]) (*connect.Response[v1.PollGitHubDeviceAuthResponse], error) { - return c.pollGitHubDeviceAuth.CallUnary(ctx, req) -} - -// RevokeGitHubToken calls session.v1.GitHubUserService.RevokeGitHubToken. -func (c *gitHubUserServiceClient) RevokeGitHubToken(ctx context.Context, req *connect.Request[v1.RevokeGitHubTokenRequest]) (*connect.Response[v1.RevokeGitHubTokenResponse], error) { - return c.revokeGitHubToken.CallUnary(ctx, req) -} - -// ListGitHubAccounts calls session.v1.GitHubUserService.ListGitHubAccounts. -func (c *gitHubUserServiceClient) ListGitHubAccounts(ctx context.Context, req *connect.Request[v1.ListGitHubAccountsRequest]) (*connect.Response[v1.ListGitHubAccountsResponse], error) { - return c.listGitHubAccounts.CallUnary(ctx, req) -} - -// AddGitHubAccountWithToken calls session.v1.GitHubUserService.AddGitHubAccountWithToken. -func (c *gitHubUserServiceClient) AddGitHubAccountWithToken(ctx context.Context, req *connect.Request[v1.AddGitHubAccountWithTokenRequest]) (*connect.Response[v1.AddGitHubAccountWithTokenResponse], error) { - return c.addGitHubAccountWithToken.CallUnary(ctx, req) -} - -// ListGitHubCLIHosts calls session.v1.GitHubUserService.ListGitHubCLIHosts. -func (c *gitHubUserServiceClient) ListGitHubCLIHosts(ctx context.Context, req *connect.Request[v1.ListGitHubCLIHostsRequest]) (*connect.Response[v1.ListGitHubCLIHostsResponse], error) { - return c.listGitHubCLIHosts.CallUnary(ctx, req) -} - -// AddGitHubAccountFromCLI calls session.v1.GitHubUserService.AddGitHubAccountFromCLI. -func (c *gitHubUserServiceClient) AddGitHubAccountFromCLI(ctx context.Context, req *connect.Request[v1.AddGitHubAccountFromCLIRequest]) (*connect.Response[v1.AddGitHubAccountWithTokenResponse], error) { - return c.addGitHubAccountFromCLI.CallUnary(ctx, req) -} - -// GitHubUserServiceHandler is an implementation of the session.v1.GitHubUserService service. -type GitHubUserServiceHandler interface { - // ListUserPRs returns all open PRs authored by the authenticated user, - // annotated with any matching local session IDs and worktree paths. - // Returns an empty list with auth_state.available=false when unauthenticated. - ListUserPRs(context.Context, *connect.Request[v1.ListUserPRsRequest]) (*connect.Response[v1.ListUserPRsResponse], error) - // WatchUserPRs streams UserPREvent messages whenever the UserPRCache - // refreshes. The first event always contains a full snapshot. - WatchUserPRs(context.Context, *connect.Request[v1.WatchUserPRsRequest], *connect.ServerStream[v1.UserPREvent]) error - // GetGitHubAuthState returns current auth availability and username. - // Used by the frontend to show/hide the GitHub PRs section and render - // the auth banner when the user has not authenticated. - GetGitHubAuthState(context.Context, *connect.Request[v1.GetGitHubAuthStateRequest]) (*connect.Response[v1.GetGitHubAuthStateResponse], error) - // StartGitHubDeviceAuth initiates the GitHub Device Flow OAuth. Returns the - // user_code to display and verification_uri to open. The caller should then - // poll PollGitHubDeviceAuth until auth completes or expires. - StartGitHubDeviceAuth(context.Context, *connect.Request[v1.StartGitHubDeviceAuthRequest]) (*connect.Response[v1.StartGitHubDeviceAuthResponse], error) - // PollGitHubDeviceAuth polls GitHub's token endpoint once. Returns the - // current status: pending, complete (token stored in keychain), or expired. - PollGitHubDeviceAuth(context.Context, *connect.Request[v1.PollGitHubDeviceAuthRequest]) (*connect.Response[v1.PollGitHubDeviceAuthResponse], error) - // RevokeGitHubToken removes the keychain-stored GitHub token and clears - // the auth state. Does not revoke the token on GitHub's side. - RevokeGitHubToken(context.Context, *connect.Request[v1.RevokeGitHubTokenRequest]) (*connect.Response[v1.RevokeGitHubTokenResponse], error) - // ListGitHubAccounts returns all connected GitHub accounts (from keychain and env vars). - ListGitHubAccounts(context.Context, *connect.Request[v1.ListGitHubAccountsRequest]) (*connect.Response[v1.ListGitHubAccountsResponse], error) - // AddGitHubAccountWithToken validates a personal access token against the - // host's /user endpoint and stores it in the keychain on success. Use this - // for hosts that don't support OAuth Device Flow (e.g. some GHES instances). - AddGitHubAccountWithToken(context.Context, *connect.Request[v1.AddGitHubAccountWithTokenRequest]) (*connect.Response[v1.AddGitHubAccountWithTokenResponse], error) - // ListGitHubCLIHosts discovers hosts the local `gh` CLI is already - // authenticated to (via its hosts.yml config), so the UI can offer them as - // one-click imports instead of requiring the user to paste a token. - ListGitHubCLIHosts(context.Context, *connect.Request[v1.ListGitHubCLIHostsRequest]) (*connect.Response[v1.ListGitHubCLIHostsResponse], error) - // AddGitHubAccountFromCLI fetches the token gh CLI already holds for host - // (via `gh auth token --hostname `), validates it, and stores it in - // the keychain on success — the same outcome as AddGitHubAccountWithToken - // but without the user needing to locate/paste the token by hand. - AddGitHubAccountFromCLI(context.Context, *connect.Request[v1.AddGitHubAccountFromCLIRequest]) (*connect.Response[v1.AddGitHubAccountWithTokenResponse], error) -} - -// NewGitHubUserServiceHandler builds an HTTP handler from the service implementation. It returns -// the path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewGitHubUserServiceHandler(svc GitHubUserServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - gitHubUserServiceMethods := v1.File_session_v1_github_user_proto.Services().ByName("GitHubUserService").Methods() - gitHubUserServiceListUserPRsHandler := connect.NewUnaryHandler( - GitHubUserServiceListUserPRsProcedure, - svc.ListUserPRs, - connect.WithSchema(gitHubUserServiceMethods.ByName("ListUserPRs")), - connect.WithHandlerOptions(opts...), - ) - gitHubUserServiceWatchUserPRsHandler := connect.NewServerStreamHandler( - GitHubUserServiceWatchUserPRsProcedure, - svc.WatchUserPRs, - connect.WithSchema(gitHubUserServiceMethods.ByName("WatchUserPRs")), - connect.WithHandlerOptions(opts...), - ) - gitHubUserServiceGetGitHubAuthStateHandler := connect.NewUnaryHandler( - GitHubUserServiceGetGitHubAuthStateProcedure, - svc.GetGitHubAuthState, - connect.WithSchema(gitHubUserServiceMethods.ByName("GetGitHubAuthState")), - connect.WithHandlerOptions(opts...), - ) - gitHubUserServiceStartGitHubDeviceAuthHandler := connect.NewUnaryHandler( - GitHubUserServiceStartGitHubDeviceAuthProcedure, - svc.StartGitHubDeviceAuth, - connect.WithSchema(gitHubUserServiceMethods.ByName("StartGitHubDeviceAuth")), - connect.WithHandlerOptions(opts...), - ) - gitHubUserServicePollGitHubDeviceAuthHandler := connect.NewUnaryHandler( - GitHubUserServicePollGitHubDeviceAuthProcedure, - svc.PollGitHubDeviceAuth, - connect.WithSchema(gitHubUserServiceMethods.ByName("PollGitHubDeviceAuth")), - connect.WithHandlerOptions(opts...), - ) - gitHubUserServiceRevokeGitHubTokenHandler := connect.NewUnaryHandler( - GitHubUserServiceRevokeGitHubTokenProcedure, - svc.RevokeGitHubToken, - connect.WithSchema(gitHubUserServiceMethods.ByName("RevokeGitHubToken")), - connect.WithHandlerOptions(opts...), - ) - gitHubUserServiceListGitHubAccountsHandler := connect.NewUnaryHandler( - GitHubUserServiceListGitHubAccountsProcedure, - svc.ListGitHubAccounts, - connect.WithSchema(gitHubUserServiceMethods.ByName("ListGitHubAccounts")), - connect.WithHandlerOptions(opts...), - ) - gitHubUserServiceAddGitHubAccountWithTokenHandler := connect.NewUnaryHandler( - GitHubUserServiceAddGitHubAccountWithTokenProcedure, - svc.AddGitHubAccountWithToken, - connect.WithSchema(gitHubUserServiceMethods.ByName("AddGitHubAccountWithToken")), - connect.WithHandlerOptions(opts...), - ) - gitHubUserServiceListGitHubCLIHostsHandler := connect.NewUnaryHandler( - GitHubUserServiceListGitHubCLIHostsProcedure, - svc.ListGitHubCLIHosts, - connect.WithSchema(gitHubUserServiceMethods.ByName("ListGitHubCLIHosts")), - connect.WithHandlerOptions(opts...), - ) - gitHubUserServiceAddGitHubAccountFromCLIHandler := connect.NewUnaryHandler( - GitHubUserServiceAddGitHubAccountFromCLIProcedure, - svc.AddGitHubAccountFromCLI, - connect.WithSchema(gitHubUserServiceMethods.ByName("AddGitHubAccountFromCLI")), - connect.WithHandlerOptions(opts...), - ) - return "/session.v1.GitHubUserService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case GitHubUserServiceListUserPRsProcedure: - gitHubUserServiceListUserPRsHandler.ServeHTTP(w, r) - case GitHubUserServiceWatchUserPRsProcedure: - gitHubUserServiceWatchUserPRsHandler.ServeHTTP(w, r) - case GitHubUserServiceGetGitHubAuthStateProcedure: - gitHubUserServiceGetGitHubAuthStateHandler.ServeHTTP(w, r) - case GitHubUserServiceStartGitHubDeviceAuthProcedure: - gitHubUserServiceStartGitHubDeviceAuthHandler.ServeHTTP(w, r) - case GitHubUserServicePollGitHubDeviceAuthProcedure: - gitHubUserServicePollGitHubDeviceAuthHandler.ServeHTTP(w, r) - case GitHubUserServiceRevokeGitHubTokenProcedure: - gitHubUserServiceRevokeGitHubTokenHandler.ServeHTTP(w, r) - case GitHubUserServiceListGitHubAccountsProcedure: - gitHubUserServiceListGitHubAccountsHandler.ServeHTTP(w, r) - case GitHubUserServiceAddGitHubAccountWithTokenProcedure: - gitHubUserServiceAddGitHubAccountWithTokenHandler.ServeHTTP(w, r) - case GitHubUserServiceListGitHubCLIHostsProcedure: - gitHubUserServiceListGitHubCLIHostsHandler.ServeHTTP(w, r) - case GitHubUserServiceAddGitHubAccountFromCLIProcedure: - gitHubUserServiceAddGitHubAccountFromCLIHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedGitHubUserServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedGitHubUserServiceHandler struct{} - -func (UnimplementedGitHubUserServiceHandler) ListUserPRs(context.Context, *connect.Request[v1.ListUserPRsRequest]) (*connect.Response[v1.ListUserPRsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.GitHubUserService.ListUserPRs is not implemented")) -} - -func (UnimplementedGitHubUserServiceHandler) WatchUserPRs(context.Context, *connect.Request[v1.WatchUserPRsRequest], *connect.ServerStream[v1.UserPREvent]) error { - return connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.GitHubUserService.WatchUserPRs is not implemented")) -} - -func (UnimplementedGitHubUserServiceHandler) GetGitHubAuthState(context.Context, *connect.Request[v1.GetGitHubAuthStateRequest]) (*connect.Response[v1.GetGitHubAuthStateResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.GitHubUserService.GetGitHubAuthState is not implemented")) -} - -func (UnimplementedGitHubUserServiceHandler) StartGitHubDeviceAuth(context.Context, *connect.Request[v1.StartGitHubDeviceAuthRequest]) (*connect.Response[v1.StartGitHubDeviceAuthResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.GitHubUserService.StartGitHubDeviceAuth is not implemented")) -} - -func (UnimplementedGitHubUserServiceHandler) PollGitHubDeviceAuth(context.Context, *connect.Request[v1.PollGitHubDeviceAuthRequest]) (*connect.Response[v1.PollGitHubDeviceAuthResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.GitHubUserService.PollGitHubDeviceAuth is not implemented")) -} - -func (UnimplementedGitHubUserServiceHandler) RevokeGitHubToken(context.Context, *connect.Request[v1.RevokeGitHubTokenRequest]) (*connect.Response[v1.RevokeGitHubTokenResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.GitHubUserService.RevokeGitHubToken is not implemented")) -} - -func (UnimplementedGitHubUserServiceHandler) ListGitHubAccounts(context.Context, *connect.Request[v1.ListGitHubAccountsRequest]) (*connect.Response[v1.ListGitHubAccountsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.GitHubUserService.ListGitHubAccounts is not implemented")) -} - -func (UnimplementedGitHubUserServiceHandler) AddGitHubAccountWithToken(context.Context, *connect.Request[v1.AddGitHubAccountWithTokenRequest]) (*connect.Response[v1.AddGitHubAccountWithTokenResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.GitHubUserService.AddGitHubAccountWithToken is not implemented")) -} - -func (UnimplementedGitHubUserServiceHandler) ListGitHubCLIHosts(context.Context, *connect.Request[v1.ListGitHubCLIHostsRequest]) (*connect.Response[v1.ListGitHubCLIHostsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.GitHubUserService.ListGitHubCLIHosts is not implemented")) -} - -func (UnimplementedGitHubUserServiceHandler) AddGitHubAccountFromCLI(context.Context, *connect.Request[v1.AddGitHubAccountFromCLIRequest]) (*connect.Response[v1.AddGitHubAccountWithTokenResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.GitHubUserService.AddGitHubAccountFromCLI is not implemented")) -} diff --git a/gen/proto/go/session/v1/sessionv1connect/headless.connect.go b/gen/proto/go/session/v1/sessionv1connect/headless.connect.go deleted file mode 100644 index 8d7150df9..000000000 --- a/gen/proto/go/session/v1/sessionv1connect/headless.connect.go +++ /dev/null @@ -1,111 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: session/v1/headless.proto - -package sessionv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/tstapler/stapler-squad/gen/proto/go/session/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion1_13_0 - -const ( - // HeadlessServiceName is the fully-qualified name of the HeadlessService service. - HeadlessServiceName = "session.v1.HeadlessService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // HeadlessServiceRunHeadlessCallProcedure is the fully-qualified name of the HeadlessService's - // RunHeadlessCall RPC. - HeadlessServiceRunHeadlessCallProcedure = "/session.v1.HeadlessService/RunHeadlessCall" -) - -// HeadlessServiceClient is a client for the session.v1.HeadlessService service. -type HeadlessServiceClient interface { - // RunHeadlessCall runs a headless LLM call and streams chunks back to the client. - RunHeadlessCall(context.Context, *connect.Request[v1.RunHeadlessCallRequest]) (*connect.ServerStreamForClient[v1.RunHeadlessCallResponse], error) -} - -// NewHeadlessServiceClient constructs a client for the session.v1.HeadlessService service. By -// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, -// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the -// connect.WithGRPC() or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewHeadlessServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) HeadlessServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - headlessServiceMethods := v1.File_session_v1_headless_proto.Services().ByName("HeadlessService").Methods() - return &headlessServiceClient{ - runHeadlessCall: connect.NewClient[v1.RunHeadlessCallRequest, v1.RunHeadlessCallResponse]( - httpClient, - baseURL+HeadlessServiceRunHeadlessCallProcedure, - connect.WithSchema(headlessServiceMethods.ByName("RunHeadlessCall")), - connect.WithClientOptions(opts...), - ), - } -} - -// headlessServiceClient implements HeadlessServiceClient. -type headlessServiceClient struct { - runHeadlessCall *connect.Client[v1.RunHeadlessCallRequest, v1.RunHeadlessCallResponse] -} - -// RunHeadlessCall calls session.v1.HeadlessService.RunHeadlessCall. -func (c *headlessServiceClient) RunHeadlessCall(ctx context.Context, req *connect.Request[v1.RunHeadlessCallRequest]) (*connect.ServerStreamForClient[v1.RunHeadlessCallResponse], error) { - return c.runHeadlessCall.CallServerStream(ctx, req) -} - -// HeadlessServiceHandler is an implementation of the session.v1.HeadlessService service. -type HeadlessServiceHandler interface { - // RunHeadlessCall runs a headless LLM call and streams chunks back to the client. - RunHeadlessCall(context.Context, *connect.Request[v1.RunHeadlessCallRequest], *connect.ServerStream[v1.RunHeadlessCallResponse]) error -} - -// NewHeadlessServiceHandler builds an HTTP handler from the service implementation. It returns the -// path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewHeadlessServiceHandler(svc HeadlessServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - headlessServiceMethods := v1.File_session_v1_headless_proto.Services().ByName("HeadlessService").Methods() - headlessServiceRunHeadlessCallHandler := connect.NewServerStreamHandler( - HeadlessServiceRunHeadlessCallProcedure, - svc.RunHeadlessCall, - connect.WithSchema(headlessServiceMethods.ByName("RunHeadlessCall")), - connect.WithHandlerOptions(opts...), - ) - return "/session.v1.HeadlessService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case HeadlessServiceRunHeadlessCallProcedure: - headlessServiceRunHeadlessCallHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedHeadlessServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedHeadlessServiceHandler struct{} - -func (UnimplementedHeadlessServiceHandler) RunHeadlessCall(context.Context, *connect.Request[v1.RunHeadlessCallRequest], *connect.ServerStream[v1.RunHeadlessCallResponse]) error { - return connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.HeadlessService.RunHeadlessCall is not implemented")) -} diff --git a/gen/proto/go/session/v1/sessionv1connect/import.connect.go b/gen/proto/go/session/v1/sessionv1connect/import.connect.go deleted file mode 100644 index a9408310b..000000000 --- a/gen/proto/go/session/v1/sessionv1connect/import.connect.go +++ /dev/null @@ -1,216 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: session/v1/import.proto - -package sessionv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/tstapler/stapler-squad/gen/proto/go/session/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion1_13_0 - -const ( - // ImportServiceName is the fully-qualified name of the ImportService service. - ImportServiceName = "session.v1.ImportService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // ImportServicePreviewImportExternalSessionProcedure is the fully-qualified name of the - // ImportService's PreviewImportExternalSession RPC. - ImportServicePreviewImportExternalSessionProcedure = "/session.v1.ImportService/PreviewImportExternalSession" - // ImportServiceCommitImportExternalSessionProcedure is the fully-qualified name of the - // ImportService's CommitImportExternalSession RPC. - ImportServiceCommitImportExternalSessionProcedure = "/session.v1.ImportService/CommitImportExternalSession" - // ImportServiceConfirmKillExternalSessionProcedure is the fully-qualified name of the - // ImportService's ConfirmKillExternalSession RPC. - ImportServiceConfirmKillExternalSessionProcedure = "/session.v1.ImportService/ConfirmKillExternalSession" - // ImportServiceCancelPendingKillProcedure is the fully-qualified name of the ImportService's - // CancelPendingKill RPC. - ImportServiceCancelPendingKillProcedure = "/session.v1.ImportService/CancelPendingKill" -) - -// ImportServiceClient is a client for the session.v1.ImportService service. -type ImportServiceClient interface { - // PreviewImportExternalSession runs correlation against a candidate and - // reports what an import WOULD do, without any side effects (no process - // signaling, no persistence). - PreviewImportExternalSession(context.Context, *connect.Request[v1.PreviewImportExternalSessionRequest]) (*connect.Response[v1.PreviewImportExternalSessionResponse], error) - // CommitImportExternalSession persists a managed Instance for the - // candidate, starts a resumed session, and SIGSTOPs the original process. - CommitImportExternalSession(context.Context, *connect.Request[v1.CommitImportExternalSessionRequest]) (*connect.Response[v1.CommitImportExternalSessionResponse], error) - // ConfirmKillExternalSession terminates the original (SIGSTOP'd) process - // after the user has verified the imported session looks correct. - ConfirmKillExternalSession(context.Context, *connect.Request[v1.ConfirmKillExternalSessionRequest]) (*connect.Response[v1.ConfirmKillExternalSessionResponse], error) - // CancelPendingKill abandons an in-progress import: deletes the newly - // committed managed Instance, then SIGCONTs the original process so it - // resumes exactly as if the import had never happened. - CancelPendingKill(context.Context, *connect.Request[v1.CancelPendingKillRequest]) (*connect.Response[v1.CancelPendingKillResponse], error) -} - -// NewImportServiceClient constructs a client for the session.v1.ImportService service. By default, -// it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, and -// sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() -// or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewImportServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) ImportServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - importServiceMethods := v1.File_session_v1_import_proto.Services().ByName("ImportService").Methods() - return &importServiceClient{ - previewImportExternalSession: connect.NewClient[v1.PreviewImportExternalSessionRequest, v1.PreviewImportExternalSessionResponse]( - httpClient, - baseURL+ImportServicePreviewImportExternalSessionProcedure, - connect.WithSchema(importServiceMethods.ByName("PreviewImportExternalSession")), - connect.WithClientOptions(opts...), - ), - commitImportExternalSession: connect.NewClient[v1.CommitImportExternalSessionRequest, v1.CommitImportExternalSessionResponse]( - httpClient, - baseURL+ImportServiceCommitImportExternalSessionProcedure, - connect.WithSchema(importServiceMethods.ByName("CommitImportExternalSession")), - connect.WithClientOptions(opts...), - ), - confirmKillExternalSession: connect.NewClient[v1.ConfirmKillExternalSessionRequest, v1.ConfirmKillExternalSessionResponse]( - httpClient, - baseURL+ImportServiceConfirmKillExternalSessionProcedure, - connect.WithSchema(importServiceMethods.ByName("ConfirmKillExternalSession")), - connect.WithClientOptions(opts...), - ), - cancelPendingKill: connect.NewClient[v1.CancelPendingKillRequest, v1.CancelPendingKillResponse]( - httpClient, - baseURL+ImportServiceCancelPendingKillProcedure, - connect.WithSchema(importServiceMethods.ByName("CancelPendingKill")), - connect.WithClientOptions(opts...), - ), - } -} - -// importServiceClient implements ImportServiceClient. -type importServiceClient struct { - previewImportExternalSession *connect.Client[v1.PreviewImportExternalSessionRequest, v1.PreviewImportExternalSessionResponse] - commitImportExternalSession *connect.Client[v1.CommitImportExternalSessionRequest, v1.CommitImportExternalSessionResponse] - confirmKillExternalSession *connect.Client[v1.ConfirmKillExternalSessionRequest, v1.ConfirmKillExternalSessionResponse] - cancelPendingKill *connect.Client[v1.CancelPendingKillRequest, v1.CancelPendingKillResponse] -} - -// PreviewImportExternalSession calls session.v1.ImportService.PreviewImportExternalSession. -func (c *importServiceClient) PreviewImportExternalSession(ctx context.Context, req *connect.Request[v1.PreviewImportExternalSessionRequest]) (*connect.Response[v1.PreviewImportExternalSessionResponse], error) { - return c.previewImportExternalSession.CallUnary(ctx, req) -} - -// CommitImportExternalSession calls session.v1.ImportService.CommitImportExternalSession. -func (c *importServiceClient) CommitImportExternalSession(ctx context.Context, req *connect.Request[v1.CommitImportExternalSessionRequest]) (*connect.Response[v1.CommitImportExternalSessionResponse], error) { - return c.commitImportExternalSession.CallUnary(ctx, req) -} - -// ConfirmKillExternalSession calls session.v1.ImportService.ConfirmKillExternalSession. -func (c *importServiceClient) ConfirmKillExternalSession(ctx context.Context, req *connect.Request[v1.ConfirmKillExternalSessionRequest]) (*connect.Response[v1.ConfirmKillExternalSessionResponse], error) { - return c.confirmKillExternalSession.CallUnary(ctx, req) -} - -// CancelPendingKill calls session.v1.ImportService.CancelPendingKill. -func (c *importServiceClient) CancelPendingKill(ctx context.Context, req *connect.Request[v1.CancelPendingKillRequest]) (*connect.Response[v1.CancelPendingKillResponse], error) { - return c.cancelPendingKill.CallUnary(ctx, req) -} - -// ImportServiceHandler is an implementation of the session.v1.ImportService service. -type ImportServiceHandler interface { - // PreviewImportExternalSession runs correlation against a candidate and - // reports what an import WOULD do, without any side effects (no process - // signaling, no persistence). - PreviewImportExternalSession(context.Context, *connect.Request[v1.PreviewImportExternalSessionRequest]) (*connect.Response[v1.PreviewImportExternalSessionResponse], error) - // CommitImportExternalSession persists a managed Instance for the - // candidate, starts a resumed session, and SIGSTOPs the original process. - CommitImportExternalSession(context.Context, *connect.Request[v1.CommitImportExternalSessionRequest]) (*connect.Response[v1.CommitImportExternalSessionResponse], error) - // ConfirmKillExternalSession terminates the original (SIGSTOP'd) process - // after the user has verified the imported session looks correct. - ConfirmKillExternalSession(context.Context, *connect.Request[v1.ConfirmKillExternalSessionRequest]) (*connect.Response[v1.ConfirmKillExternalSessionResponse], error) - // CancelPendingKill abandons an in-progress import: deletes the newly - // committed managed Instance, then SIGCONTs the original process so it - // resumes exactly as if the import had never happened. - CancelPendingKill(context.Context, *connect.Request[v1.CancelPendingKillRequest]) (*connect.Response[v1.CancelPendingKillResponse], error) -} - -// NewImportServiceHandler builds an HTTP handler from the service implementation. It returns the -// path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewImportServiceHandler(svc ImportServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - importServiceMethods := v1.File_session_v1_import_proto.Services().ByName("ImportService").Methods() - importServicePreviewImportExternalSessionHandler := connect.NewUnaryHandler( - ImportServicePreviewImportExternalSessionProcedure, - svc.PreviewImportExternalSession, - connect.WithSchema(importServiceMethods.ByName("PreviewImportExternalSession")), - connect.WithHandlerOptions(opts...), - ) - importServiceCommitImportExternalSessionHandler := connect.NewUnaryHandler( - ImportServiceCommitImportExternalSessionProcedure, - svc.CommitImportExternalSession, - connect.WithSchema(importServiceMethods.ByName("CommitImportExternalSession")), - connect.WithHandlerOptions(opts...), - ) - importServiceConfirmKillExternalSessionHandler := connect.NewUnaryHandler( - ImportServiceConfirmKillExternalSessionProcedure, - svc.ConfirmKillExternalSession, - connect.WithSchema(importServiceMethods.ByName("ConfirmKillExternalSession")), - connect.WithHandlerOptions(opts...), - ) - importServiceCancelPendingKillHandler := connect.NewUnaryHandler( - ImportServiceCancelPendingKillProcedure, - svc.CancelPendingKill, - connect.WithSchema(importServiceMethods.ByName("CancelPendingKill")), - connect.WithHandlerOptions(opts...), - ) - return "/session.v1.ImportService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case ImportServicePreviewImportExternalSessionProcedure: - importServicePreviewImportExternalSessionHandler.ServeHTTP(w, r) - case ImportServiceCommitImportExternalSessionProcedure: - importServiceCommitImportExternalSessionHandler.ServeHTTP(w, r) - case ImportServiceConfirmKillExternalSessionProcedure: - importServiceConfirmKillExternalSessionHandler.ServeHTTP(w, r) - case ImportServiceCancelPendingKillProcedure: - importServiceCancelPendingKillHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedImportServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedImportServiceHandler struct{} - -func (UnimplementedImportServiceHandler) PreviewImportExternalSession(context.Context, *connect.Request[v1.PreviewImportExternalSessionRequest]) (*connect.Response[v1.PreviewImportExternalSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.ImportService.PreviewImportExternalSession is not implemented")) -} - -func (UnimplementedImportServiceHandler) CommitImportExternalSession(context.Context, *connect.Request[v1.CommitImportExternalSessionRequest]) (*connect.Response[v1.CommitImportExternalSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.ImportService.CommitImportExternalSession is not implemented")) -} - -func (UnimplementedImportServiceHandler) ConfirmKillExternalSession(context.Context, *connect.Request[v1.ConfirmKillExternalSessionRequest]) (*connect.Response[v1.ConfirmKillExternalSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.ImportService.ConfirmKillExternalSession is not implemented")) -} - -func (UnimplementedImportServiceHandler) CancelPendingKill(context.Context, *connect.Request[v1.CancelPendingKillRequest]) (*connect.Response[v1.CancelPendingKillResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.ImportService.CancelPendingKill is not implemented")) -} diff --git a/gen/proto/go/session/v1/sessionv1connect/insights.connect.go b/gen/proto/go/session/v1/sessionv1connect/insights.connect.go deleted file mode 100644 index 7f61e719b..000000000 --- a/gen/proto/go/session/v1/sessionv1connect/insights.connect.go +++ /dev/null @@ -1,206 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: session/v1/insights.proto - -package sessionv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/tstapler/stapler-squad/gen/proto/go/session/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion1_13_0 - -const ( - // InsightsServiceName is the fully-qualified name of the InsightsService service. - InsightsServiceName = "session.v1.InsightsService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // InsightsServiceGetInsightsSummaryProcedure is the fully-qualified name of the InsightsService's - // GetInsightsSummary RPC. - InsightsServiceGetInsightsSummaryProcedure = "/session.v1.InsightsService/GetInsightsSummary" - // InsightsServiceListSessionTokensProcedure is the fully-qualified name of the InsightsService's - // ListSessionTokens RPC. - InsightsServiceListSessionTokensProcedure = "/session.v1.InsightsService/ListSessionTokens" - // InsightsServiceWatchInsightsProcedure is the fully-qualified name of the InsightsService's - // WatchInsights RPC. - InsightsServiceWatchInsightsProcedure = "/session.v1.InsightsService/WatchInsights" - // InsightsServiceGetSessionTurnTimelineProcedure is the fully-qualified name of the - // InsightsService's GetSessionTurnTimeline RPC. - InsightsServiceGetSessionTurnTimelineProcedure = "/session.v1.InsightsService/GetSessionTurnTimeline" -) - -// InsightsServiceClient is a client for the session.v1.InsightsService service. -type InsightsServiceClient interface { - // GetInsightsSummary returns aggregated token and cost data for a time range. - GetInsightsSummary(context.Context, *connect.Request[v1.GetInsightsSummaryRequest]) (*connect.Response[v1.GetInsightsSummaryResponse], error) - // ListSessionTokens returns per-session token summaries with pagination. - ListSessionTokens(context.Context, *connect.Request[v1.ListSessionTokensRequest]) (*connect.Response[v1.ListSessionTokensResponse], error) - // WatchInsights streams summary updates when new JSONL data is parsed. - WatchInsights(context.Context, *connect.Request[v1.WatchInsightsRequest]) (*connect.ServerStreamForClient[v1.InsightsEvent], error) - // GetSessionTurnTimeline returns per-turn token stats for one session, fetched - // on-demand when the session detail drawer opens (not embedded in list responses). - GetSessionTurnTimeline(context.Context, *connect.Request[v1.GetSessionTurnTimelineRequest]) (*connect.Response[v1.GetSessionTurnTimelineResponse], error) -} - -// NewInsightsServiceClient constructs a client for the session.v1.InsightsService service. By -// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, -// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the -// connect.WithGRPC() or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewInsightsServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) InsightsServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - insightsServiceMethods := v1.File_session_v1_insights_proto.Services().ByName("InsightsService").Methods() - return &insightsServiceClient{ - getInsightsSummary: connect.NewClient[v1.GetInsightsSummaryRequest, v1.GetInsightsSummaryResponse]( - httpClient, - baseURL+InsightsServiceGetInsightsSummaryProcedure, - connect.WithSchema(insightsServiceMethods.ByName("GetInsightsSummary")), - connect.WithClientOptions(opts...), - ), - listSessionTokens: connect.NewClient[v1.ListSessionTokensRequest, v1.ListSessionTokensResponse]( - httpClient, - baseURL+InsightsServiceListSessionTokensProcedure, - connect.WithSchema(insightsServiceMethods.ByName("ListSessionTokens")), - connect.WithClientOptions(opts...), - ), - watchInsights: connect.NewClient[v1.WatchInsightsRequest, v1.InsightsEvent]( - httpClient, - baseURL+InsightsServiceWatchInsightsProcedure, - connect.WithSchema(insightsServiceMethods.ByName("WatchInsights")), - connect.WithClientOptions(opts...), - ), - getSessionTurnTimeline: connect.NewClient[v1.GetSessionTurnTimelineRequest, v1.GetSessionTurnTimelineResponse]( - httpClient, - baseURL+InsightsServiceGetSessionTurnTimelineProcedure, - connect.WithSchema(insightsServiceMethods.ByName("GetSessionTurnTimeline")), - connect.WithClientOptions(opts...), - ), - } -} - -// insightsServiceClient implements InsightsServiceClient. -type insightsServiceClient struct { - getInsightsSummary *connect.Client[v1.GetInsightsSummaryRequest, v1.GetInsightsSummaryResponse] - listSessionTokens *connect.Client[v1.ListSessionTokensRequest, v1.ListSessionTokensResponse] - watchInsights *connect.Client[v1.WatchInsightsRequest, v1.InsightsEvent] - getSessionTurnTimeline *connect.Client[v1.GetSessionTurnTimelineRequest, v1.GetSessionTurnTimelineResponse] -} - -// GetInsightsSummary calls session.v1.InsightsService.GetInsightsSummary. -func (c *insightsServiceClient) GetInsightsSummary(ctx context.Context, req *connect.Request[v1.GetInsightsSummaryRequest]) (*connect.Response[v1.GetInsightsSummaryResponse], error) { - return c.getInsightsSummary.CallUnary(ctx, req) -} - -// ListSessionTokens calls session.v1.InsightsService.ListSessionTokens. -func (c *insightsServiceClient) ListSessionTokens(ctx context.Context, req *connect.Request[v1.ListSessionTokensRequest]) (*connect.Response[v1.ListSessionTokensResponse], error) { - return c.listSessionTokens.CallUnary(ctx, req) -} - -// WatchInsights calls session.v1.InsightsService.WatchInsights. -func (c *insightsServiceClient) WatchInsights(ctx context.Context, req *connect.Request[v1.WatchInsightsRequest]) (*connect.ServerStreamForClient[v1.InsightsEvent], error) { - return c.watchInsights.CallServerStream(ctx, req) -} - -// GetSessionTurnTimeline calls session.v1.InsightsService.GetSessionTurnTimeline. -func (c *insightsServiceClient) GetSessionTurnTimeline(ctx context.Context, req *connect.Request[v1.GetSessionTurnTimelineRequest]) (*connect.Response[v1.GetSessionTurnTimelineResponse], error) { - return c.getSessionTurnTimeline.CallUnary(ctx, req) -} - -// InsightsServiceHandler is an implementation of the session.v1.InsightsService service. -type InsightsServiceHandler interface { - // GetInsightsSummary returns aggregated token and cost data for a time range. - GetInsightsSummary(context.Context, *connect.Request[v1.GetInsightsSummaryRequest]) (*connect.Response[v1.GetInsightsSummaryResponse], error) - // ListSessionTokens returns per-session token summaries with pagination. - ListSessionTokens(context.Context, *connect.Request[v1.ListSessionTokensRequest]) (*connect.Response[v1.ListSessionTokensResponse], error) - // WatchInsights streams summary updates when new JSONL data is parsed. - WatchInsights(context.Context, *connect.Request[v1.WatchInsightsRequest], *connect.ServerStream[v1.InsightsEvent]) error - // GetSessionTurnTimeline returns per-turn token stats for one session, fetched - // on-demand when the session detail drawer opens (not embedded in list responses). - GetSessionTurnTimeline(context.Context, *connect.Request[v1.GetSessionTurnTimelineRequest]) (*connect.Response[v1.GetSessionTurnTimelineResponse], error) -} - -// NewInsightsServiceHandler builds an HTTP handler from the service implementation. It returns the -// path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewInsightsServiceHandler(svc InsightsServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - insightsServiceMethods := v1.File_session_v1_insights_proto.Services().ByName("InsightsService").Methods() - insightsServiceGetInsightsSummaryHandler := connect.NewUnaryHandler( - InsightsServiceGetInsightsSummaryProcedure, - svc.GetInsightsSummary, - connect.WithSchema(insightsServiceMethods.ByName("GetInsightsSummary")), - connect.WithHandlerOptions(opts...), - ) - insightsServiceListSessionTokensHandler := connect.NewUnaryHandler( - InsightsServiceListSessionTokensProcedure, - svc.ListSessionTokens, - connect.WithSchema(insightsServiceMethods.ByName("ListSessionTokens")), - connect.WithHandlerOptions(opts...), - ) - insightsServiceWatchInsightsHandler := connect.NewServerStreamHandler( - InsightsServiceWatchInsightsProcedure, - svc.WatchInsights, - connect.WithSchema(insightsServiceMethods.ByName("WatchInsights")), - connect.WithHandlerOptions(opts...), - ) - insightsServiceGetSessionTurnTimelineHandler := connect.NewUnaryHandler( - InsightsServiceGetSessionTurnTimelineProcedure, - svc.GetSessionTurnTimeline, - connect.WithSchema(insightsServiceMethods.ByName("GetSessionTurnTimeline")), - connect.WithHandlerOptions(opts...), - ) - return "/session.v1.InsightsService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case InsightsServiceGetInsightsSummaryProcedure: - insightsServiceGetInsightsSummaryHandler.ServeHTTP(w, r) - case InsightsServiceListSessionTokensProcedure: - insightsServiceListSessionTokensHandler.ServeHTTP(w, r) - case InsightsServiceWatchInsightsProcedure: - insightsServiceWatchInsightsHandler.ServeHTTP(w, r) - case InsightsServiceGetSessionTurnTimelineProcedure: - insightsServiceGetSessionTurnTimelineHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedInsightsServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedInsightsServiceHandler struct{} - -func (UnimplementedInsightsServiceHandler) GetInsightsSummary(context.Context, *connect.Request[v1.GetInsightsSummaryRequest]) (*connect.Response[v1.GetInsightsSummaryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.InsightsService.GetInsightsSummary is not implemented")) -} - -func (UnimplementedInsightsServiceHandler) ListSessionTokens(context.Context, *connect.Request[v1.ListSessionTokensRequest]) (*connect.Response[v1.ListSessionTokensResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.InsightsService.ListSessionTokens is not implemented")) -} - -func (UnimplementedInsightsServiceHandler) WatchInsights(context.Context, *connect.Request[v1.WatchInsightsRequest], *connect.ServerStream[v1.InsightsEvent]) error { - return connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.InsightsService.WatchInsights is not implemented")) -} - -func (UnimplementedInsightsServiceHandler) GetSessionTurnTimeline(context.Context, *connect.Request[v1.GetSessionTurnTimelineRequest]) (*connect.Response[v1.GetSessionTurnTimelineResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.InsightsService.GetSessionTurnTimeline is not implemented")) -} diff --git a/gen/proto/go/session/v1/sessionv1connect/session.connect.go b/gen/proto/go/session/v1/sessionv1connect/session.connect.go deleted file mode 100644 index e6b43a75b..000000000 --- a/gen/proto/go/session/v1/sessionv1connect/session.connect.go +++ /dev/null @@ -1,3817 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: session/v1/session.proto - -package sessionv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/tstapler/stapler-squad/gen/proto/go/session/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion1_13_0 - -const ( - // SessionServiceName is the fully-qualified name of the SessionService service. - SessionServiceName = "session.v1.SessionService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // SessionServiceListSessionsProcedure is the fully-qualified name of the SessionService's - // ListSessions RPC. - SessionServiceListSessionsProcedure = "/session.v1.SessionService/ListSessions" - // SessionServiceGetSessionProcedure is the fully-qualified name of the SessionService's GetSession - // RPC. - SessionServiceGetSessionProcedure = "/session.v1.SessionService/GetSession" - // SessionServiceCreateSessionProcedure is the fully-qualified name of the SessionService's - // CreateSession RPC. - SessionServiceCreateSessionProcedure = "/session.v1.SessionService/CreateSession" - // SessionServiceUpdateSessionProcedure is the fully-qualified name of the SessionService's - // UpdateSession RPC. - SessionServiceUpdateSessionProcedure = "/session.v1.SessionService/UpdateSession" - // SessionServiceDeleteSessionProcedure is the fully-qualified name of the SessionService's - // DeleteSession RPC. - SessionServiceDeleteSessionProcedure = "/session.v1.SessionService/DeleteSession" - // SessionServiceWatchSessionsProcedure is the fully-qualified name of the SessionService's - // WatchSessions RPC. - SessionServiceWatchSessionsProcedure = "/session.v1.SessionService/WatchSessions" - // SessionServiceStreamTerminalProcedure is the fully-qualified name of the SessionService's - // StreamTerminal RPC. - SessionServiceStreamTerminalProcedure = "/session.v1.SessionService/StreamTerminal" - // SessionServiceGetSessionDiffProcedure is the fully-qualified name of the SessionService's - // GetSessionDiff RPC. - SessionServiceGetSessionDiffProcedure = "/session.v1.SessionService/GetSessionDiff" - // SessionServiceGetVCSStatusProcedure is the fully-qualified name of the SessionService's - // GetVCSStatus RPC. - SessionServiceGetVCSStatusProcedure = "/session.v1.SessionService/GetVCSStatus" - // SessionServiceGetReviewQueueProcedure is the fully-qualified name of the SessionService's - // GetReviewQueue RPC. - SessionServiceGetReviewQueueProcedure = "/session.v1.SessionService/GetReviewQueue" - // SessionServiceAcknowledgeSessionProcedure is the fully-qualified name of the SessionService's - // AcknowledgeSession RPC. - SessionServiceAcknowledgeSessionProcedure = "/session.v1.SessionService/AcknowledgeSession" - // SessionServiceGetLogsProcedure is the fully-qualified name of the SessionService's GetLogs RPC. - SessionServiceGetLogsProcedure = "/session.v1.SessionService/GetLogs" - // SessionServiceWatchReviewQueueProcedure is the fully-qualified name of the SessionService's - // WatchReviewQueue RPC. - SessionServiceWatchReviewQueueProcedure = "/session.v1.SessionService/WatchReviewQueue" - // SessionServiceLogUserInteractionProcedure is the fully-qualified name of the SessionService's - // LogUserInteraction RPC. - SessionServiceLogUserInteractionProcedure = "/session.v1.SessionService/LogUserInteraction" - // SessionServiceGetClaudeConfigProcedure is the fully-qualified name of the SessionService's - // GetClaudeConfig RPC. - SessionServiceGetClaudeConfigProcedure = "/session.v1.SessionService/GetClaudeConfig" - // SessionServiceListClaudeConfigsProcedure is the fully-qualified name of the SessionService's - // ListClaudeConfigs RPC. - SessionServiceListClaudeConfigsProcedure = "/session.v1.SessionService/ListClaudeConfigs" - // SessionServiceUpdateClaudeConfigProcedure is the fully-qualified name of the SessionService's - // UpdateClaudeConfig RPC. - SessionServiceUpdateClaudeConfigProcedure = "/session.v1.SessionService/UpdateClaudeConfig" - // SessionServiceListClaudeHistoryProcedure is the fully-qualified name of the SessionService's - // ListClaudeHistory RPC. - SessionServiceListClaudeHistoryProcedure = "/session.v1.SessionService/ListClaudeHistory" - // SessionServiceGetClaudeHistoryDetailProcedure is the fully-qualified name of the SessionService's - // GetClaudeHistoryDetail RPC. - SessionServiceGetClaudeHistoryDetailProcedure = "/session.v1.SessionService/GetClaudeHistoryDetail" - // SessionServiceGetClaudeHistoryMessagesProcedure is the fully-qualified name of the - // SessionService's GetClaudeHistoryMessages RPC. - SessionServiceGetClaudeHistoryMessagesProcedure = "/session.v1.SessionService/GetClaudeHistoryMessages" - // SessionServiceSearchClaudeHistoryProcedure is the fully-qualified name of the SessionService's - // SearchClaudeHistory RPC. - SessionServiceSearchClaudeHistoryProcedure = "/session.v1.SessionService/SearchClaudeHistory" - // SessionServiceGetPRInfoProcedure is the fully-qualified name of the SessionService's GetPRInfo - // RPC. - SessionServiceGetPRInfoProcedure = "/session.v1.SessionService/GetPRInfo" - // SessionServiceGetPRCommentsProcedure is the fully-qualified name of the SessionService's - // GetPRComments RPC. - SessionServiceGetPRCommentsProcedure = "/session.v1.SessionService/GetPRComments" - // SessionServicePostPRCommentProcedure is the fully-qualified name of the SessionService's - // PostPRComment RPC. - SessionServicePostPRCommentProcedure = "/session.v1.SessionService/PostPRComment" - // SessionServiceMergePRProcedure is the fully-qualified name of the SessionService's MergePR RPC. - SessionServiceMergePRProcedure = "/session.v1.SessionService/MergePR" - // SessionServiceClosePRProcedure is the fully-qualified name of the SessionService's ClosePR RPC. - SessionServiceClosePRProcedure = "/session.v1.SessionService/ClosePR" - // SessionServiceSendNotificationProcedure is the fully-qualified name of the SessionService's - // SendNotification RPC. - SessionServiceSendNotificationProcedure = "/session.v1.SessionService/SendNotification" - // SessionServiceFocusWindowProcedure is the fully-qualified name of the SessionService's - // FocusWindow RPC. - SessionServiceFocusWindowProcedure = "/session.v1.SessionService/FocusWindow" - // SessionServiceRenameSessionProcedure is the fully-qualified name of the SessionService's - // RenameSession RPC. - SessionServiceRenameSessionProcedure = "/session.v1.SessionService/RenameSession" - // SessionServiceRestartSessionProcedure is the fully-qualified name of the SessionService's - // RestartSession RPC. - SessionServiceRestartSessionProcedure = "/session.v1.SessionService/RestartSession" - // SessionServiceGetWorkspaceInfoProcedure is the fully-qualified name of the SessionService's - // GetWorkspaceInfo RPC. - SessionServiceGetWorkspaceInfoProcedure = "/session.v1.SessionService/GetWorkspaceInfo" - // SessionServiceListWorkspaceTargetsProcedure is the fully-qualified name of the SessionService's - // ListWorkspaceTargets RPC. - SessionServiceListWorkspaceTargetsProcedure = "/session.v1.SessionService/ListWorkspaceTargets" - // SessionServiceSwitchWorkspaceProcedure is the fully-qualified name of the SessionService's - // SwitchWorkspace RPC. - SessionServiceSwitchWorkspaceProcedure = "/session.v1.SessionService/SwitchWorkspace" - // SessionServiceResolveApprovalProcedure is the fully-qualified name of the SessionService's - // ResolveApproval RPC. - SessionServiceResolveApprovalProcedure = "/session.v1.SessionService/ResolveApproval" - // SessionServiceListPendingApprovalsProcedure is the fully-qualified name of the SessionService's - // ListPendingApprovals RPC. - SessionServiceListPendingApprovalsProcedure = "/session.v1.SessionService/ListPendingApprovals" - // SessionServiceCreateDebugSnapshotProcedure is the fully-qualified name of the SessionService's - // CreateDebugSnapshot RPC. - SessionServiceCreateDebugSnapshotProcedure = "/session.v1.SessionService/CreateDebugSnapshot" - // SessionServiceGetNotificationHistoryProcedure is the fully-qualified name of the SessionService's - // GetNotificationHistory RPC. - SessionServiceGetNotificationHistoryProcedure = "/session.v1.SessionService/GetNotificationHistory" - // SessionServiceMarkNotificationReadProcedure is the fully-qualified name of the SessionService's - // MarkNotificationRead RPC. - SessionServiceMarkNotificationReadProcedure = "/session.v1.SessionService/MarkNotificationRead" - // SessionServiceClearNotificationHistoryProcedure is the fully-qualified name of the - // SessionService's ClearNotificationHistory RPC. - SessionServiceClearNotificationHistoryProcedure = "/session.v1.SessionService/ClearNotificationHistory" - // SessionServiceListApprovalRulesProcedure is the fully-qualified name of the SessionService's - // ListApprovalRules RPC. - SessionServiceListApprovalRulesProcedure = "/session.v1.SessionService/ListApprovalRules" - // SessionServiceUpsertApprovalRuleProcedure is the fully-qualified name of the SessionService's - // UpsertApprovalRule RPC. - SessionServiceUpsertApprovalRuleProcedure = "/session.v1.SessionService/UpsertApprovalRule" - // SessionServiceDeleteApprovalRuleProcedure is the fully-qualified name of the SessionService's - // DeleteApprovalRule RPC. - SessionServiceDeleteApprovalRuleProcedure = "/session.v1.SessionService/DeleteApprovalRule" - // SessionServiceGetApprovalAnalyticsProcedure is the fully-qualified name of the SessionService's - // GetApprovalAnalytics RPC. - SessionServiceGetApprovalAnalyticsProcedure = "/session.v1.SessionService/GetApprovalAnalytics" - // SessionServiceGetProgramAnalyticsProcedure is the fully-qualified name of the SessionService's - // GetProgramAnalytics RPC. - SessionServiceGetProgramAnalyticsProcedure = "/session.v1.SessionService/GetProgramAnalytics" - // SessionServiceGenerateSuggestedRuleProcedure is the fully-qualified name of the SessionService's - // GenerateSuggestedRule RPC. - SessionServiceGenerateSuggestedRuleProcedure = "/session.v1.SessionService/GenerateSuggestedRule" - // SessionServiceValidateRulesProcedure is the fully-qualified name of the SessionService's - // ValidateRules RPC. - SessionServiceValidateRulesProcedure = "/session.v1.SessionService/ValidateRules" - // SessionServiceExportRulesProcedure is the fully-qualified name of the SessionService's - // ExportRules RPC. - SessionServiceExportRulesProcedure = "/session.v1.SessionService/ExportRules" - // SessionServiceBulkUpsertRulesProcedure is the fully-qualified name of the SessionService's - // BulkUpsertRules RPC. - SessionServiceBulkUpsertRulesProcedure = "/session.v1.SessionService/BulkUpsertRules" - // SessionServiceGetConfigFileRulesProcedure is the fully-qualified name of the SessionService's - // GetConfigFileRules RPC. - SessionServiceGetConfigFileRulesProcedure = "/session.v1.SessionService/GetConfigFileRules" - // SessionServiceSaveRulesToConfigFileProcedure is the fully-qualified name of the SessionService's - // SaveRulesToConfigFile RPC. - SessionServiceSaveRulesToConfigFileProcedure = "/session.v1.SessionService/SaveRulesToConfigFile" - // SessionServiceListDatabasesProcedure is the fully-qualified name of the SessionService's - // ListDatabases RPC. - SessionServiceListDatabasesProcedure = "/session.v1.SessionService/ListDatabases" - // SessionServiceGetCurrentDatabaseProcedure is the fully-qualified name of the SessionService's - // GetCurrentDatabase RPC. - SessionServiceGetCurrentDatabaseProcedure = "/session.v1.SessionService/GetCurrentDatabase" - // SessionServiceSwitchDatabaseProcedure is the fully-qualified name of the SessionService's - // SwitchDatabase RPC. - SessionServiceSwitchDatabaseProcedure = "/session.v1.SessionService/SwitchDatabase" - // SessionServiceMergeDatabaseProcedure is the fully-qualified name of the SessionService's - // MergeDatabase RPC. - SessionServiceMergeDatabaseProcedure = "/session.v1.SessionService/MergeDatabase" - // SessionServiceCreateCheckpointProcedure is the fully-qualified name of the SessionService's - // CreateCheckpoint RPC. - SessionServiceCreateCheckpointProcedure = "/session.v1.SessionService/CreateCheckpoint" - // SessionServiceListCheckpointsProcedure is the fully-qualified name of the SessionService's - // ListCheckpoints RPC. - SessionServiceListCheckpointsProcedure = "/session.v1.SessionService/ListCheckpoints" - // SessionServiceForkSessionProcedure is the fully-qualified name of the SessionService's - // ForkSession RPC. - SessionServiceForkSessionProcedure = "/session.v1.SessionService/ForkSession" - // SessionServiceClearConversationStateProcedure is the fully-qualified name of the SessionService's - // ClearConversationState RPC. - SessionServiceClearConversationStateProcedure = "/session.v1.SessionService/ClearConversationState" - // SessionServiceListFilesProcedure is the fully-qualified name of the SessionService's ListFiles - // RPC. - SessionServiceListFilesProcedure = "/session.v1.SessionService/ListFiles" - // SessionServiceGetFileContentProcedure is the fully-qualified name of the SessionService's - // GetFileContent RPC. - SessionServiceGetFileContentProcedure = "/session.v1.SessionService/GetFileContent" - // SessionServiceSearchFilesProcedure is the fully-qualified name of the SessionService's - // SearchFiles RPC. - SessionServiceSearchFilesProcedure = "/session.v1.SessionService/SearchFiles" - // SessionServiceListPathCompletionsProcedure is the fully-qualified name of the SessionService's - // ListPathCompletions RPC. - SessionServiceListPathCompletionsProcedure = "/session.v1.SessionService/ListPathCompletions" - // SessionServiceGetSessionDefaultsProcedure is the fully-qualified name of the SessionService's - // GetSessionDefaults RPC. - SessionServiceGetSessionDefaultsProcedure = "/session.v1.SessionService/GetSessionDefaults" - // SessionServiceResolveDefaultsProcedure is the fully-qualified name of the SessionService's - // ResolveDefaults RPC. - SessionServiceResolveDefaultsProcedure = "/session.v1.SessionService/ResolveDefaults" - // SessionServicePreviewDestinationPathProcedure is the fully-qualified name of the SessionService's - // PreviewDestinationPath RPC. - SessionServicePreviewDestinationPathProcedure = "/session.v1.SessionService/PreviewDestinationPath" - // SessionServiceUpdateGlobalDefaultsProcedure is the fully-qualified name of the SessionService's - // UpdateGlobalDefaults RPC. - SessionServiceUpdateGlobalDefaultsProcedure = "/session.v1.SessionService/UpdateGlobalDefaults" - // SessionServiceUpsertProfileProcedure is the fully-qualified name of the SessionService's - // UpsertProfile RPC. - SessionServiceUpsertProfileProcedure = "/session.v1.SessionService/UpsertProfile" - // SessionServiceDeleteProfileProcedure is the fully-qualified name of the SessionService's - // DeleteProfile RPC. - SessionServiceDeleteProfileProcedure = "/session.v1.SessionService/DeleteProfile" - // SessionServiceUpsertDirectoryRuleProcedure is the fully-qualified name of the SessionService's - // UpsertDirectoryRule RPC. - SessionServiceUpsertDirectoryRuleProcedure = "/session.v1.SessionService/UpsertDirectoryRule" - // SessionServiceDeleteDirectoryRuleProcedure is the fully-qualified name of the SessionService's - // DeleteDirectoryRule RPC. - SessionServiceDeleteDirectoryRuleProcedure = "/session.v1.SessionService/DeleteDirectoryRule" - // SessionServiceListWorktreesProcedure is the fully-qualified name of the SessionService's - // ListWorktrees RPC. - SessionServiceListWorktreesProcedure = "/session.v1.SessionService/ListWorktrees" - // SessionServiceListPromptHistoryProcedure is the fully-qualified name of the SessionService's - // ListPromptHistory RPC. - SessionServiceListPromptHistoryProcedure = "/session.v1.SessionService/ListPromptHistory" - // SessionServiceDeletePromptHistoryProcedure is the fully-qualified name of the SessionService's - // DeletePromptHistory RPC. - SessionServiceDeletePromptHistoryProcedure = "/session.v1.SessionService/DeletePromptHistory" - // SessionServiceBatchCreateSessionsProcedure is the fully-qualified name of the SessionService's - // BatchCreateSessions RPC. - SessionServiceBatchCreateSessionsProcedure = "/session.v1.SessionService/BatchCreateSessions" - // SessionServiceRunOneShotProcedure is the fully-qualified name of the SessionService's RunOneShot - // RPC. - SessionServiceRunOneShotProcedure = "/session.v1.SessionService/RunOneShot" - // SessionServiceCreateProjectProcedure is the fully-qualified name of the SessionService's - // CreateProject RPC. - SessionServiceCreateProjectProcedure = "/session.v1.SessionService/CreateProject" - // SessionServiceListProjectsProcedure is the fully-qualified name of the SessionService's - // ListProjects RPC. - SessionServiceListProjectsProcedure = "/session.v1.SessionService/ListProjects" - // SessionServiceUpdateProjectProcedure is the fully-qualified name of the SessionService's - // UpdateProject RPC. - SessionServiceUpdateProjectProcedure = "/session.v1.SessionService/UpdateProject" - // SessionServiceDeleteProjectProcedure is the fully-qualified name of the SessionService's - // DeleteProject RPC. - SessionServiceDeleteProjectProcedure = "/session.v1.SessionService/DeleteProject" - // SessionServiceAssignSessionsToProjectProcedure is the fully-qualified name of the - // SessionService's AssignSessionsToProject RPC. - SessionServiceAssignSessionsToProjectProcedure = "/session.v1.SessionService/AssignSessionsToProject" - // SessionServiceListBranchesProcedure is the fully-qualified name of the SessionService's - // ListBranches RPC. - SessionServiceListBranchesProcedure = "/session.v1.SessionService/ListBranches" - // SessionServiceGetTerminalSnapshotProcedure is the fully-qualified name of the SessionService's - // GetTerminalSnapshot RPC. - SessionServiceGetTerminalSnapshotProcedure = "/session.v1.SessionService/GetTerminalSnapshot" - // SessionServiceWriteToSessionProcedure is the fully-qualified name of the SessionService's - // WriteToSession RPC. - SessionServiceWriteToSessionProcedure = "/session.v1.SessionService/WriteToSession" - // SessionServiceLogClientEventsProcedure is the fully-qualified name of the SessionService's - // LogClientEvents RPC. - SessionServiceLogClientEventsProcedure = "/session.v1.SessionService/LogClientEvents" - // SessionServiceListErrorsProcedure is the fully-qualified name of the SessionService's ListErrors - // RPC. - SessionServiceListErrorsProcedure = "/session.v1.SessionService/ListErrors" - // SessionServiceAcknowledgeErrorProcedure is the fully-qualified name of the SessionService's - // AcknowledgeError RPC. - SessionServiceAcknowledgeErrorProcedure = "/session.v1.SessionService/AcknowledgeError" - // SessionServiceGetFeatureFlagsProcedure is the fully-qualified name of the SessionService's - // GetFeatureFlags RPC. - SessionServiceGetFeatureFlagsProcedure = "/session.v1.SessionService/GetFeatureFlags" - // SessionServiceUpdateFeatureFlagProcedure is the fully-qualified name of the SessionService's - // UpdateFeatureFlag RPC. - SessionServiceUpdateFeatureFlagProcedure = "/session.v1.SessionService/UpdateFeatureFlag" - // SessionServiceQueryEscapeAnalyticsProcedure is the fully-qualified name of the SessionService's - // QueryEscapeAnalytics RPC. - SessionServiceQueryEscapeAnalyticsProcedure = "/session.v1.SessionService/QueryEscapeAnalytics" - // SessionServiceGetEscapeAnalyticsSummaryProcedure is the fully-qualified name of the - // SessionService's GetEscapeAnalyticsSummary RPC. - SessionServiceGetEscapeAnalyticsSummaryProcedure = "/session.v1.SessionService/GetEscapeAnalyticsSummary" - // SessionServiceGetEscapeAnalyticsGlobalSummaryProcedure is the fully-qualified name of the - // SessionService's GetEscapeAnalyticsGlobalSummary RPC. - SessionServiceGetEscapeAnalyticsGlobalSummaryProcedure = "/session.v1.SessionService/GetEscapeAnalyticsGlobalSummary" - // SessionServiceHibernateSessionProcedure is the fully-qualified name of the SessionService's - // HibernateSession RPC. - SessionServiceHibernateSessionProcedure = "/session.v1.SessionService/HibernateSession" - // SessionServiceResumeHibernatedSessionProcedure is the fully-qualified name of the - // SessionService's ResumeHibernatedSession RPC. - SessionServiceResumeHibernatedSessionProcedure = "/session.v1.SessionService/ResumeHibernatedSession" - // SessionServiceResumeCrashedSessionProcedure is the fully-qualified name of the SessionService's - // ResumeCrashedSession RPC. - SessionServiceResumeCrashedSessionProcedure = "/session.v1.SessionService/ResumeCrashedSession" - // SessionServiceSpawnShellProcedure is the fully-qualified name of the SessionService's SpawnShell - // RPC. - SessionServiceSpawnShellProcedure = "/session.v1.SessionService/SpawnShell" - // SessionServiceStopShellProcedure is the fully-qualified name of the SessionService's StopShell - // RPC. - SessionServiceStopShellProcedure = "/session.v1.SessionService/StopShell" - // SessionServiceRestartShellProcedure is the fully-qualified name of the SessionService's - // RestartShell RPC. - SessionServiceRestartShellProcedure = "/session.v1.SessionService/RestartShell" - // SessionServiceListShellsProcedure is the fully-qualified name of the SessionService's ListShells - // RPC. - SessionServiceListShellsProcedure = "/session.v1.SessionService/ListShells" - // SessionServiceDeleteShellProcedure is the fully-qualified name of the SessionService's - // DeleteShell RPC. - SessionServiceDeleteShellProcedure = "/session.v1.SessionService/DeleteShell" - // SessionServiceCreateWorkflowProcedure is the fully-qualified name of the SessionService's - // CreateWorkflow RPC. - SessionServiceCreateWorkflowProcedure = "/session.v1.SessionService/CreateWorkflow" - // SessionServiceUpdateWorkflowProcedure is the fully-qualified name of the SessionService's - // UpdateWorkflow RPC. - SessionServiceUpdateWorkflowProcedure = "/session.v1.SessionService/UpdateWorkflow" - // SessionServiceDeleteWorkflowProcedure is the fully-qualified name of the SessionService's - // DeleteWorkflow RPC. - SessionServiceDeleteWorkflowProcedure = "/session.v1.SessionService/DeleteWorkflow" - // SessionServiceListWorkflowsProcedure is the fully-qualified name of the SessionService's - // ListWorkflows RPC. - SessionServiceListWorkflowsProcedure = "/session.v1.SessionService/ListWorkflows" - // SessionServiceRunWorkflowProcedure is the fully-qualified name of the SessionService's - // RunWorkflow RPC. - SessionServiceRunWorkflowProcedure = "/session.v1.SessionService/RunWorkflow" - // SessionServiceGetDetectionEventsProcedure is the fully-qualified name of the SessionService's - // GetDetectionEvents RPC. - SessionServiceGetDetectionEventsProcedure = "/session.v1.SessionService/GetDetectionEvents" - // SessionServiceListSlashCommandsProcedure is the fully-qualified name of the SessionService's - // ListSlashCommands RPC. - SessionServiceListSlashCommandsProcedure = "/session.v1.SessionService/ListSlashCommands" - // SessionServiceListAliasesProcedure is the fully-qualified name of the SessionService's - // ListAliases RPC. - SessionServiceListAliasesProcedure = "/session.v1.SessionService/ListAliases" - // SessionServiceUpsertAliasProcedure is the fully-qualified name of the SessionService's - // UpsertAlias RPC. - SessionServiceUpsertAliasProcedure = "/session.v1.SessionService/UpsertAlias" - // SessionServiceDeleteAliasProcedure is the fully-qualified name of the SessionService's - // DeleteAlias RPC. - SessionServiceDeleteAliasProcedure = "/session.v1.SessionService/DeleteAlias" - // SessionServiceArchiveSessionProcedure is the fully-qualified name of the SessionService's - // ArchiveSession RPC. - SessionServiceArchiveSessionProcedure = "/session.v1.SessionService/ArchiveSession" - // SessionServiceUnarchiveSessionProcedure is the fully-qualified name of the SessionService's - // UnarchiveSession RPC. - SessionServiceUnarchiveSessionProcedure = "/session.v1.SessionService/UnarchiveSession" - // SessionServiceArchiveWorkflowSessionsProcedure is the fully-qualified name of the - // SessionService's ArchiveWorkflowSessions RPC. - SessionServiceArchiveWorkflowSessionsProcedure = "/session.v1.SessionService/ArchiveWorkflowSessions" - // SessionServiceDeleteWorkflowFailedSessionsProcedure is the fully-qualified name of the - // SessionService's DeleteWorkflowFailedSessions RPC. - SessionServiceDeleteWorkflowFailedSessionsProcedure = "/session.v1.SessionService/DeleteWorkflowFailedSessions" - // SessionServiceGetProviderLimitsProcedure is the fully-qualified name of the SessionService's - // GetProviderLimits RPC. - SessionServiceGetProviderLimitsProcedure = "/session.v1.SessionService/GetProviderLimits" - // SessionServiceGetHookStatusProcedure is the fully-qualified name of the SessionService's - // GetHookStatus RPC. - SessionServiceGetHookStatusProcedure = "/session.v1.SessionService/GetHookStatus" - // SessionServiceInstallHooksProcedure is the fully-qualified name of the SessionService's - // InstallHooks RPC. - SessionServiceInstallHooksProcedure = "/session.v1.SessionService/InstallHooks" -) - -// SessionServiceClient is a client for the session.v1.SessionService service. -type SessionServiceClient interface { - // ListSessions returns all sessions with optional filtering. - ListSessions(context.Context, *connect.Request[v1.ListSessionsRequest]) (*connect.Response[v1.ListSessionsResponse], error) - // GetSession retrieves a specific session by ID. - GetSession(context.Context, *connect.Request[v1.GetSessionRequest]) (*connect.Response[v1.GetSessionResponse], error) - // CreateSession initializes a new AI agent session with tmux and git worktree. - CreateSession(context.Context, *connect.Request[v1.CreateSessionRequest]) (*connect.Response[v1.CreateSessionResponse], error) - // UpdateSession modifies session properties (pause/resume, category, etc). - UpdateSession(context.Context, *connect.Request[v1.UpdateSessionRequest]) (*connect.Response[v1.UpdateSessionResponse], error) - // DeleteSession stops and removes a session, cleaning up resources. - DeleteSession(context.Context, *connect.Request[v1.DeleteSessionRequest]) (*connect.Response[v1.DeleteSessionResponse], error) - // WatchSessions streams real-time session events (created/updated/deleted). - // Server-streaming RPC for live updates without polling. - WatchSessions(context.Context, *connect.Request[v1.WatchSessionsRequest]) (*connect.ServerStreamForClient[v1.SessionEvent], error) - // StreamTerminal provides bidirectional streaming for terminal I/O. - // Clients can send input and receive output from the tmux PTY. - StreamTerminal(context.Context) *connect.BidiStreamForClient[v1.TerminalData, v1.TerminalData] - // GetSessionDiff retrieves the current git diff for a session. - GetSessionDiff(context.Context, *connect.Request[v1.GetSessionDiffRequest]) (*connect.Response[v1.GetSessionDiffResponse], error) - // GetVCSStatus retrieves the current version control status for a session. - // Returns branch info, changed files, staged/unstaged status, and remote sync state. - GetVCSStatus(context.Context, *connect.Request[v1.GetVCSStatusRequest]) (*connect.Response[v1.GetVCSStatusResponse], error) - // GetReviewQueue returns sessions needing user attention with priority ordering. - GetReviewQueue(context.Context, *connect.Request[v1.GetReviewQueueRequest]) (*connect.Response[v1.GetReviewQueueResponse], error) - // AcknowledgeSession marks a session as acknowledged in the review queue. - // The session won't reappear in the queue until it receives an update. - AcknowledgeSession(context.Context, *connect.Request[v1.AcknowledgeSessionRequest]) (*connect.Response[v1.AcknowledgeSessionResponse], error) - // GetLogs retrieves application logs with optional filtering and search. - GetLogs(context.Context, *connect.Request[v1.GetLogsRequest]) (*connect.Response[v1.GetLogsResponse], error) - // WatchReviewQueue streams real-time review queue events (items added/removed/updated). - // Server-streaming RPC for live queue updates without polling. - WatchReviewQueue(context.Context, *connect.Request[v1.WatchReviewQueueRequest]) (*connect.ServerStreamForClient[v1.ReviewQueueEvent], error) - // LogUserInteraction logs a user interaction event for audit trail. - // Records user actions for compliance, debugging, and analytics. - LogUserInteraction(context.Context, *connect.Request[v1.LogUserInteractionRequest]) (*connect.Response[v1.LogUserInteractionResponse], error) - // GetClaudeConfig retrieves a Claude configuration file by name (CLAUDE.md, settings.json, agents.md). - GetClaudeConfig(context.Context, *connect.Request[v1.GetClaudeConfigRequest]) (*connect.Response[v1.GetClaudeConfigResponse], error) - // ListClaudeConfigs returns all configuration files in the ~/.claude directory. - ListClaudeConfigs(context.Context, *connect.Request[v1.ListClaudeConfigsRequest]) (*connect.Response[v1.ListClaudeConfigsResponse], error) - // UpdateClaudeConfig updates a Claude configuration file with atomic write and backup. - UpdateClaudeConfig(context.Context, *connect.Request[v1.UpdateClaudeConfigRequest]) (*connect.Response[v1.UpdateClaudeConfigResponse], error) - // ListClaudeHistory returns Claude session history entries with optional filtering. - ListClaudeHistory(context.Context, *connect.Request[v1.ListClaudeHistoryRequest]) (*connect.Response[v1.ListClaudeHistoryResponse], error) - // GetClaudeHistoryDetail retrieves detailed information for a specific history entry. - GetClaudeHistoryDetail(context.Context, *connect.Request[v1.GetClaudeHistoryDetailRequest]) (*connect.Response[v1.GetClaudeHistoryDetailResponse], error) - // GetClaudeHistoryMessages retrieves messages from a specific conversation. - GetClaudeHistoryMessages(context.Context, *connect.Request[v1.GetClaudeHistoryMessagesRequest]) (*connect.Response[v1.GetClaudeHistoryMessagesResponse], error) - // SearchClaudeHistory performs full-text search across Claude conversation history. - // Returns ranked results with contextual snippets showing where query terms appear. - SearchClaudeHistory(context.Context, *connect.Request[v1.SearchClaudeHistoryRequest]) (*connect.Response[v1.SearchClaudeHistoryResponse], error) - // PR Info and management RPCs - GetPRInfo(context.Context, *connect.Request[v1.GetPRInfoRequest]) (*connect.Response[v1.GetPRInfoResponse], error) - GetPRComments(context.Context, *connect.Request[v1.GetPRCommentsRequest]) (*connect.Response[v1.GetPRCommentsResponse], error) - PostPRComment(context.Context, *connect.Request[v1.PostPRCommentRequest]) (*connect.Response[v1.PostPRCommentResponse], error) - MergePR(context.Context, *connect.Request[v1.MergePRRequest]) (*connect.Response[v1.MergePRResponse], error) - ClosePR(context.Context, *connect.Request[v1.ClosePRRequest]) (*connect.Response[v1.ClosePRResponse], error) - // SendNotification allows tmux sessions to send notifications to the server. - // Notifications are broadcast to all connected clients (web UI and TUI). - // Requires session_id to identify the source session. - // Enforces localhost-only restriction and rate limiting (10/sec per session). - SendNotification(context.Context, *connect.Request[v1.SendNotificationRequest]) (*connect.Response[v1.SendNotificationResponse], error) - // FocusWindow activates a window for the specified application. - // Used for deep linking from notifications to bring the source IDE/terminal to front. - // Only works on macOS via AppleScript. Requires localhost origin. - FocusWindow(context.Context, *connect.Request[v1.FocusWindowRequest]) (*connect.Response[v1.FocusWindowResponse], error) - // RenameSession changes the title of an existing session. - // Validates that the new title doesn't conflict with existing sessions. - RenameSession(context.Context, *connect.Request[v1.RenameSessionRequest]) (*connect.Response[v1.RenameSessionResponse], error) - // RestartSession restarts a session by killing and recreating the tmux session. - // Optionally preserves terminal output for debugging purposes. - RestartSession(context.Context, *connect.Request[v1.RestartSessionRequest]) (*connect.Response[v1.RestartSessionResponse], error) - // GetWorkspaceInfo retrieves VCS and workspace information for a session. - // Returns VCS type (Git/JJ), current branch, revision, and uncommitted changes status. - GetWorkspaceInfo(context.Context, *connect.Request[v1.GetWorkspaceInfoRequest]) (*connect.Response[v1.GetWorkspaceInfoResponse], error) - // ListWorkspaceTargets returns available switch targets for a session. - // Includes bookmarks/branches, recent revisions, and worktrees. - ListWorkspaceTargets(context.Context, *connect.Request[v1.ListWorkspaceTargetsRequest]) (*connect.Response[v1.ListWorkspaceTargetsResponse], error) - // SwitchWorkspace switches a session's workspace to a different branch, revision, or worktree. - // The session is restarted with Claude --resume to preserve conversation context. - SwitchWorkspace(context.Context, *connect.Request[v1.SwitchWorkspaceRequest]) (*connect.Response[v1.SwitchWorkspaceResponse], error) - // ResolveApproval allows the web UI to approve or deny a pending Claude Code tool use request. - // This unblocks the HTTP hook handler that is waiting for the user's decision. - ResolveApproval(context.Context, *connect.Request[v1.ResolveApprovalRequest]) (*connect.Response[v1.ResolveApprovalResponse], error) - // ListPendingApprovals returns all pending Claude Code tool approval requests. - // Used by the web UI to populate the approval panel on initial load. - ListPendingApprovals(context.Context, *connect.Request[v1.ListPendingApprovalsRequest]) (*connect.Response[v1.ListPendingApprovalsResponse], error) - // CreateDebugSnapshot captures diagnostic information and writes it to a JSON file. - // Gathers session state, tmux info, pending approvals, and recent logs. - // The file is written to ~/.claude-squad/logs/debug-snapshot-{timestamp}.json. - CreateDebugSnapshot(context.Context, *connect.Request[v1.CreateDebugSnapshotRequest]) (*connect.Response[v1.CreateDebugSnapshotResponse], error) - // GetNotificationHistory returns persisted notification history with optional filtering. - // Notifications survive server restarts and page refreshes. - GetNotificationHistory(context.Context, *connect.Request[v1.GetNotificationHistoryRequest]) (*connect.Response[v1.GetNotificationHistoryResponse], error) - // MarkNotificationRead marks specific notifications as read. - // If notification_ids is empty, marks all notifications as read. - MarkNotificationRead(context.Context, *connect.Request[v1.MarkNotificationReadRequest]) (*connect.Response[v1.MarkNotificationReadResponse], error) - // ClearNotificationHistory removes notifications from the history. - // Optionally filters by timestamp to only clear older notifications. - ClearNotificationHistory(context.Context, *connect.Request[v1.ClearNotificationHistoryRequest]) (*connect.Response[v1.ClearNotificationHistoryResponse], error) - // ListApprovalRules returns all auto-approval rules (user, seed, and claude-settings). - ListApprovalRules(context.Context, *connect.Request[v1.ListApprovalRulesRequest]) (*connect.Response[v1.ListApprovalRulesResponse], error) - // UpsertApprovalRule creates or updates a user-defined auto-approval rule. - UpsertApprovalRule(context.Context, *connect.Request[v1.UpsertApprovalRuleRequest]) (*connect.Response[v1.UpsertApprovalRuleResponse], error) - // DeleteApprovalRule removes a user-defined auto-approval rule by ID. - DeleteApprovalRule(context.Context, *connect.Request[v1.DeleteApprovalRuleRequest]) (*connect.Response[v1.DeleteApprovalRuleResponse], error) - // GetApprovalAnalytics returns aggregated analytics for classification decisions. - GetApprovalAnalytics(context.Context, *connect.Request[v1.GetApprovalAnalyticsRequest]) (*connect.Response[v1.GetApprovalAnalyticsResponse], error) - // GetProgramAnalytics returns drill-down analytics for a single command program. - // Shows subcommand breakdown, recent examples, and daily trend for the time window. - GetProgramAnalytics(context.Context, *connect.Request[v1.GetProgramAnalyticsRequest]) (*connect.Response[v1.GetProgramAnalyticsResponse], error) - // GenerateSuggestedRule asks an AI agent to propose a new auto-approval rule. - // Analyzes existing rules, seed examples, and analytics data to produce a - // pre-filled SuggestedRuleProto. May take 5–30 seconds; callers must set a - // 60-second deadline via AbortController. - GenerateSuggestedRule(context.Context, *connect.Request[v1.GenerateSuggestedRuleRequest]) (*connect.Response[v1.GenerateSuggestedRuleResponse], error) - // ValidateRules parses and validates a YAML rules file without applying it. - // Returns per-rule results including any parse or validation errors. - ValidateRules(context.Context, *connect.Request[v1.ValidateRulesRequest]) (*connect.Response[v1.ValidateRulesResponse], error) - // ExportRules serializes user-authored rules to YAML format for download. - // Passing rule_ids limits export to those rules; empty = export all user rules. - ExportRules(context.Context, *connect.Request[v1.ExportRulesRequest]) (*connect.Response[v1.ExportRulesResponse], error) - // BulkUpsertRules creates or updates multiple user-defined rules in one call. - // Rebuilds the in-memory classifier exactly once after all rules are stored. - BulkUpsertRules(context.Context, *connect.Request[v1.BulkUpsertRulesRequest]) (*connect.Response[v1.BulkUpsertRulesResponse], error) - // GetConfigFileRules returns rules persisted in the shared YAML config file. - GetConfigFileRules(context.Context, *connect.Request[v1.GetConfigFileRulesRequest]) (*connect.Response[v1.GetConfigFileRulesResponse], error) - // SaveRulesToConfigFile exports one or more rules to the shared YAML config file. - SaveRulesToConfigFile(context.Context, *connect.Request[v1.SaveRulesToConfigFileRequest]) (*connect.Response[v1.SaveRulesToConfigFileResponse], error) - // ListDatabases returns all discovered workspace databases with metadata. - // Used by the workspace switcher UI to show available workspaces. - ListDatabases(context.Context, *connect.Request[v1.ListDatabasesRequest]) (*connect.Response[v1.ListDatabasesResponse], error) - // GetCurrentDatabase returns metadata for the currently active workspace database. - GetCurrentDatabase(context.Context, *connect.Request[v1.GetCurrentDatabaseRequest]) (*connect.Response[v1.GetCurrentDatabaseResponse], error) - // SwitchDatabase switches to a different workspace database and restarts the server. - // The server will exec-restart itself after writing a preference file. - // The client should poll until the server is back up, then reload. - SwitchDatabase(context.Context, *connect.Request[v1.SwitchDatabaseRequest]) (*connect.Response[v1.SwitchDatabaseResponse], error) - // MergeDatabase copies all sessions from a source workspace database into the - // currently active database. Skips sessions whose titles already exist. - // No server restart required — changes are immediately visible. - MergeDatabase(context.Context, *connect.Request[v1.MergeDatabaseRequest]) (*connect.Response[v1.MergeDatabaseResponse], error) - // CreateCheckpoint captures the current state of a session as a named bookmark. - // Records scrollback position, git HEAD SHA, and conversation UUID. - CreateCheckpoint(context.Context, *connect.Request[v1.CreateCheckpointRequest]) (*connect.Response[v1.CreateCheckpointResponse], error) - // ListCheckpoints returns all checkpoints for the specified session. - ListCheckpoints(context.Context, *connect.Request[v1.ListCheckpointsRequest]) (*connect.Response[v1.ListCheckpointsResponse], error) - // ForkSession creates a new independent session branched from a checkpoint. - // The fork receives truncated scrollback, conversation history, and a git worktree - // based on the checkpoint's recorded state. - ForkSession(context.Context, *connect.Request[v1.ForkSessionRequest]) (*connect.Response[v1.ForkSessionResponse], error) - // ClearConversationState removes the stored Claude conversation UUID from a session - // so that the next Resume starts a fresh conversation instead of attempting --resume - // with a stale or path-mismatched UUID. Useful when a session is stuck in a crash - // loop with "No conversation found" errors. - ClearConversationState(context.Context, *connect.Request[v1.ClearConversationStateRequest]) (*connect.Response[v1.ClearConversationStateResponse], error) - // ListFiles returns the immediate children of a directory in a session's worktree. - // Directories are returned first, then files, both alphabetically sorted. - // Gitignored entries are excluded unless include_ignored is true. - ListFiles(context.Context, *connect.Request[v1.ListFilesRequest]) (*connect.Response[v1.ListFilesResponse], error) - // GetFileContent retrieves the text content of a file in a session's worktree. - // Binary files return is_binary=true with empty content. - // Files over 10MB are rejected; files over 1MB are served truncated with is_truncated=true. - GetFileContent(context.Context, *connect.Request[v1.GetFileContentRequest]) (*connect.Response[v1.GetFileContentResponse], error) - // SearchFiles performs a recursive name-substring search in a session's worktree. - // Returns matching files with full relative paths for frontend tree reconstruction. - // Results are capped at max_results (default 500). Minimum query length is 2 characters. - SearchFiles(context.Context, *connect.Request[v1.SearchFilesRequest]) (*connect.Response[v1.SearchFilesResponse], error) - // ListPathCompletions returns filesystem directory entries matching a path prefix. - // Used by the Omnibar for real-time path completion and inline path validation. - ListPathCompletions(context.Context, *connect.Request[v1.ListPathCompletionsRequest]) (*connect.Response[v1.ListPathCompletionsResponse], error) - // GetSessionDefaults returns the full session defaults configuration (global, profiles, directory rules). - GetSessionDefaults(context.Context, *connect.Request[v1.GetSessionDefaultsRequest]) (*connect.Response[v1.GetSessionDefaultsResponse], error) - // ResolveDefaults merges all default layers for a given working directory and optional profile. - // Returns the resolved values plus source metadata for per-field badges in the UI. - ResolveDefaults(context.Context, *connect.Request[v1.ResolveDefaultsRequest]) (*connect.Response[v1.ResolveDefaultsResponse], error) - // PreviewDestinationPath computes where a session's checkout/worktree would land, - // without performing any git or filesystem mutation. Used by the Omnibar to show a - // live destination hint before the user submits session creation. - PreviewDestinationPath(context.Context, *connect.Request[v1.PreviewDestinationPathRequest]) (*connect.Response[v1.PreviewDestinationPathResponse], error) - // UpdateGlobalDefaults replaces the global default fields. - UpdateGlobalDefaults(context.Context, *connect.Request[v1.UpdateGlobalDefaultsRequest]) (*connect.Response[v1.UpdateGlobalDefaultsResponse], error) - // UpsertProfile creates or updates a named profile. - UpsertProfile(context.Context, *connect.Request[v1.UpsertProfileRequest]) (*connect.Response[v1.UpsertProfileResponse], error) - // DeleteProfile removes a named profile by name. - DeleteProfile(context.Context, *connect.Request[v1.DeleteProfileRequest]) (*connect.Response[v1.DeleteProfileResponse], error) - // UpsertDirectoryRule creates or updates a directory rule (matched by path). - UpsertDirectoryRule(context.Context, *connect.Request[v1.UpsertDirectoryRuleRequest]) (*connect.Response[v1.UpsertDirectoryRuleResponse], error) - // DeleteDirectoryRule removes a directory rule by path. - DeleteDirectoryRule(context.Context, *connect.Request[v1.DeleteDirectoryRuleRequest]) (*connect.Response[v1.DeleteDirectoryRuleResponse], error) - // ListWorktrees returns the git worktrees for a given repository path. - // Used by the Omnibar to populate the "Use Existing Worktree" dropdown. - ListWorktrees(context.Context, *connect.Request[v1.ListWorktreesRequest]) (*connect.Response[v1.ListWorktreesResponse], error) - // Prompt history RPCs (S1) - ListPromptHistory(context.Context, *connect.Request[v1.ListPromptHistoryRequest]) (*connect.Response[v1.ListPromptHistoryResponse], error) - DeletePromptHistory(context.Context, *connect.Request[v1.DeletePromptHistoryRequest]) (*connect.Response[v1.DeletePromptHistoryResponse], error) - // Batch session creation (S2) - BatchCreateSessions(context.Context, *connect.Request[v1.BatchCreateSessionsRequest]) (*connect.Response[v1.BatchCreateSessionsResponse], error) - // One-shot PR creation (S3) - RunOneShot(context.Context, *connect.Request[v1.RunOneShotRequest]) (*connect.Response[v1.RunOneShotResponse], error) - // Project CRUD (S4) - CreateProject(context.Context, *connect.Request[v1.CreateProjectRequest]) (*connect.Response[v1.CreateProjectResponse], error) - ListProjects(context.Context, *connect.Request[v1.ListProjectsRequest]) (*connect.Response[v1.ListProjectsResponse], error) - UpdateProject(context.Context, *connect.Request[v1.UpdateProjectRequest]) (*connect.Response[v1.UpdateProjectResponse], error) - DeleteProject(context.Context, *connect.Request[v1.DeleteProjectRequest]) (*connect.Response[v1.DeleteProjectResponse], error) - AssignSessionsToProject(context.Context, *connect.Request[v1.AssignSessionsToProjectRequest]) (*connect.Response[v1.AssignSessionsToProjectResponse], error) - // ListBranches returns the git branches for a given repository path. - // Used by the SessionWizard branch autocomplete field. - ListBranches(context.Context, *connect.Request[v1.ListBranchesRequest]) (*connect.Response[v1.ListBranchesResponse], error) - // GetTerminalSnapshot returns the last N lines of terminal output for a session - // without requiring an active stream. Suitable for session card previews. - GetTerminalSnapshot(context.Context, *connect.Request[v1.GetTerminalSnapshotRequest]) (*connect.Response[v1.GetTerminalSnapshotResponse], error) - // WriteToSession sends raw text input to a running session's PTY. - // Use for unblocking approval prompts or injecting ad-hoc input. - // Returns immediately after queueing the write; does not wait for output. - WriteToSession(context.Context, *connect.Request[v1.WriteToSessionRequest]) (*connect.Response[v1.WriteToSessionResponse], error) - // LogClientEvents receives batched browser console log entries from the web UI. - // Used for remote debugging of mobile browser sessions where DevTools are unavailable. - // Always returns an empty response; malformed entries are silently discarded. - LogClientEvents(context.Context, *connect.Request[v1.LogClientEventsRequest]) (*connect.Response[v1.LogClientEventsResponse], error) - // ListErrors returns persisted RPC error events ordered by last_seen descending. - // Unacknowledged errors are returned by default; set include_acknowledged=true - // to include all events. - ListErrors(context.Context, *connect.Request[v1.ListErrorsRequest]) (*connect.Response[v1.ListErrorsResponse], error) - // AcknowledgeError marks an error event as acknowledged so it no longer appears - // in the default (unacknowledged) listing. - AcknowledgeError(context.Context, *connect.Request[v1.AcknowledgeErrorRequest]) (*connect.Response[v1.AcknowledgeErrorResponse], error) - // GetFeatureFlags returns all known feature flags and their current state. - GetFeatureFlags(context.Context, *connect.Request[v1.GetFeatureFlagsRequest]) (*connect.Response[v1.GetFeatureFlagsResponse], error) - // UpdateFeatureFlag enables or disables a named feature flag. - UpdateFeatureFlag(context.Context, *connect.Request[v1.UpdateFeatureFlagRequest]) (*connect.Response[v1.UpdateFeatureFlagResponse], error) - // QueryEscapeAnalytics returns paginated escape event records for a session. - QueryEscapeAnalytics(context.Context, *connect.Request[v1.QueryEscapeAnalyticsRequest]) (*connect.Response[v1.QueryEscapeAnalyticsResponse], error) - // GetEscapeAnalyticsSummary returns aggregate escape sequence statistics for a session. - GetEscapeAnalyticsSummary(context.Context, *connect.Request[v1.GetEscapeAnalyticsSummaryRequest]) (*connect.Response[v1.GetEscapeAnalyticsSummaryResponse], error) - // GetEscapeAnalyticsGlobalSummary returns aggregate escape sequence statistics - // across all sessions, plus a per-session breakdown to spot outliers. - GetEscapeAnalyticsGlobalSummary(context.Context, *connect.Request[v1.GetEscapeAnalyticsGlobalSummaryRequest]) (*connect.Response[v1.GetEscapeAnalyticsGlobalSummaryResponse], error) - // HibernateSession checkpoints the session state, kills the AI process, and - // transitions the session to Hibernated status. - HibernateSession(context.Context, *connect.Request[v1.HibernateSessionRequest]) (*connect.Response[v1.HibernateSessionResponse], error) - // ResumeHibernatedSession re-launches the AI process for a Hibernated session, - // transitioning it back to Active status. - ResumeHibernatedSession(context.Context, *connect.Request[v1.ResumeHibernatedSessionRequest]) (*connect.Response[v1.ResumeHibernatedSessionResponse], error) - // ResumeCrashedSession re-launches the AI process for a Crashed session - // (dead tmux pane detected by SessionHealthChecker), transitioning it back - // to Active status. Threads --resume automatically when a conversation UUID - // is known. - ResumeCrashedSession(context.Context, *connect.Request[v1.ResumeCrashedSessionRequest]) (*connect.Response[v1.ResumeCrashedSessionResponse], error) - // SpawnShell creates and starts a new custom shell attached to a session. - // The shell runs as an independent sibling tmux session. - SpawnShell(context.Context, *connect.Request[v1.SpawnShellRequest]) (*connect.Response[v1.SpawnShellResponse], error) - // StopShell stops a running custom shell. - StopShell(context.Context, *connect.Request[v1.StopShellRequest]) (*connect.Response[v1.StopShellResponse], error) - // RestartShell stops a shell (if running) and relaunches it with the same command. - RestartShell(context.Context, *connect.Request[v1.RestartShellRequest]) (*connect.Response[v1.RestartShellResponse], error) - // ListShells returns all custom shells for a session, sorted by order_index. - ListShells(context.Context, *connect.Request[v1.ListShellsRequest]) (*connect.Response[v1.ListShellsResponse], error) - // DeleteShell stops a shell and removes it from storage. - DeleteShell(context.Context, *connect.Request[v1.DeleteShellRequest]) (*connect.Response[v1.DeleteShellResponse], error) - // CreateWorkflow creates a new workflow definition. - CreateWorkflow(context.Context, *connect.Request[v1.CreateWorkflowRequest]) (*connect.Response[v1.CreateWorkflowResponse], error) - // UpdateWorkflow modifies an existing workflow definition. - UpdateWorkflow(context.Context, *connect.Request[v1.UpdateWorkflowRequest]) (*connect.Response[v1.UpdateWorkflowResponse], error) - // DeleteWorkflow removes a workflow definition permanently. - DeleteWorkflow(context.Context, *connect.Request[v1.DeleteWorkflowRequest]) (*connect.Response[v1.DeleteWorkflowResponse], error) - // ListWorkflows returns all saved workflow definitions. - ListWorkflows(context.Context, *connect.Request[v1.ListWorkflowsRequest]) (*connect.Response[v1.ListWorkflowsResponse], error) - // RunWorkflow immediately fires a workflow (outside of cron schedule). - RunWorkflow(context.Context, *connect.Request[v1.RunWorkflowRequest]) (*connect.Response[v1.RunWorkflowResponse], error) - // GetDetectionEvents returns recent status-detection events for a session. - // Intended for debugging — surfaces which patterns matched (or didn't) per detection cycle. - GetDetectionEvents(context.Context, *connect.Request[v1.GetDetectionEventsRequest]) (*connect.Response[v1.GetDetectionEventsResponse], error) - // ListSlashCommands returns slash commands available in the given directory. - // Walks target_directory/.claude/commands/ (project) and ~/.claude/commands/ (user), - // merging both with a small set of built-in Claude Code commands. - ListSlashCommands(context.Context, *connect.Request[v1.ListSlashCommandsRequest]) (*connect.Response[v1.ListSlashCommandsResponse], error) - // ListAliases returns all configured alias presets from config.json. - ListAliases(context.Context, *connect.Request[v1.ListAliasesRequest]) (*connect.Response[v1.ListAliasesResponse], error) - // UpsertAlias creates or updates a named alias preset (matched by name). - UpsertAlias(context.Context, *connect.Request[v1.UpsertAliasRequest]) (*connect.Response[v1.UpsertAliasResponse], error) - // DeleteAlias removes an alias preset by name. - DeleteAlias(context.Context, *connect.Request[v1.DeleteAliasRequest]) (*connect.Response[v1.DeleteAliasResponse], error) - // ArchiveSession soft-archives a session by setting archived_at. - // Archived sessions are excluded from the default session list. - ArchiveSession(context.Context, *connect.Request[v1.ArchiveSessionRequest]) (*connect.Response[v1.ArchiveSessionResponse], error) - // UnarchiveSession clears archived_at, restoring the session to the default list. - UnarchiveSession(context.Context, *connect.Request[v1.UnarchiveSessionRequest]) (*connect.Response[v1.UnarchiveSessionResponse], error) - // ArchiveWorkflowSessions archives all non-active sessions for a given workflow. - // Active, Creating, and Paused sessions are silently skipped. - // Returns the count of sessions that were archived. - ArchiveWorkflowSessions(context.Context, *connect.Request[v1.ArchiveWorkflowSessionsRequest]) (*connect.Response[v1.ArchiveWorkflowSessionsResponse], error) - // DeleteWorkflowFailedSessions archives (soft-deletes) sessions that appear to have - // failed — specifically: Stopped sessions with no meaningful terminal output. - // Returns the count of sessions that were archived. - DeleteWorkflowFailedSessions(context.Context, *connect.Request[v1.DeleteWorkflowFailedSessionsRequest]) (*connect.Response[v1.DeleteWorkflowFailedSessionsResponse], error) - // GetProviderLimits returns the rate limit and usage details for a session. - GetProviderLimits(context.Context, *connect.Request[v1.GetProviderLimitsRequest]) (*connect.Response[v1.GetProviderLimitsResponse], error) - // GetHookStatus reports whether the global Claude Code hooks (rule enforcement - // and notifications) are installed in ~/.claude/settings.json. - // +api: hooks:status - GetHookStatus(context.Context, *connect.Request[v1.GetHookStatusRequest]) (*connect.Response[v1.GetHookStatusResponse], error) - // InstallHooks installs the requested global Claude Code hooks into - // ~/.claude/settings.json. Idempotent per hook. - // +api: hooks:install - InstallHooks(context.Context, *connect.Request[v1.InstallHooksRequest]) (*connect.Response[v1.InstallHooksResponse], error) -} - -// NewSessionServiceClient constructs a client for the session.v1.SessionService service. By -// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, -// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the -// connect.WithGRPC() or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewSessionServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) SessionServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - sessionServiceMethods := v1.File_session_v1_session_proto.Services().ByName("SessionService").Methods() - return &sessionServiceClient{ - listSessions: connect.NewClient[v1.ListSessionsRequest, v1.ListSessionsResponse]( - httpClient, - baseURL+SessionServiceListSessionsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListSessions")), - connect.WithClientOptions(opts...), - ), - getSession: connect.NewClient[v1.GetSessionRequest, v1.GetSessionResponse]( - httpClient, - baseURL+SessionServiceGetSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetSession")), - connect.WithClientOptions(opts...), - ), - createSession: connect.NewClient[v1.CreateSessionRequest, v1.CreateSessionResponse]( - httpClient, - baseURL+SessionServiceCreateSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("CreateSession")), - connect.WithClientOptions(opts...), - ), - updateSession: connect.NewClient[v1.UpdateSessionRequest, v1.UpdateSessionResponse]( - httpClient, - baseURL+SessionServiceUpdateSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("UpdateSession")), - connect.WithClientOptions(opts...), - ), - deleteSession: connect.NewClient[v1.DeleteSessionRequest, v1.DeleteSessionResponse]( - httpClient, - baseURL+SessionServiceDeleteSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("DeleteSession")), - connect.WithClientOptions(opts...), - ), - watchSessions: connect.NewClient[v1.WatchSessionsRequest, v1.SessionEvent]( - httpClient, - baseURL+SessionServiceWatchSessionsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("WatchSessions")), - connect.WithClientOptions(opts...), - ), - streamTerminal: connect.NewClient[v1.TerminalData, v1.TerminalData]( - httpClient, - baseURL+SessionServiceStreamTerminalProcedure, - connect.WithSchema(sessionServiceMethods.ByName("StreamTerminal")), - connect.WithClientOptions(opts...), - ), - getSessionDiff: connect.NewClient[v1.GetSessionDiffRequest, v1.GetSessionDiffResponse]( - httpClient, - baseURL+SessionServiceGetSessionDiffProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetSessionDiff")), - connect.WithClientOptions(opts...), - ), - getVCSStatus: connect.NewClient[v1.GetVCSStatusRequest, v1.GetVCSStatusResponse]( - httpClient, - baseURL+SessionServiceGetVCSStatusProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetVCSStatus")), - connect.WithClientOptions(opts...), - ), - getReviewQueue: connect.NewClient[v1.GetReviewQueueRequest, v1.GetReviewQueueResponse]( - httpClient, - baseURL+SessionServiceGetReviewQueueProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetReviewQueue")), - connect.WithClientOptions(opts...), - ), - acknowledgeSession: connect.NewClient[v1.AcknowledgeSessionRequest, v1.AcknowledgeSessionResponse]( - httpClient, - baseURL+SessionServiceAcknowledgeSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("AcknowledgeSession")), - connect.WithClientOptions(opts...), - ), - getLogs: connect.NewClient[v1.GetLogsRequest, v1.GetLogsResponse]( - httpClient, - baseURL+SessionServiceGetLogsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetLogs")), - connect.WithClientOptions(opts...), - ), - watchReviewQueue: connect.NewClient[v1.WatchReviewQueueRequest, v1.ReviewQueueEvent]( - httpClient, - baseURL+SessionServiceWatchReviewQueueProcedure, - connect.WithSchema(sessionServiceMethods.ByName("WatchReviewQueue")), - connect.WithClientOptions(opts...), - ), - logUserInteraction: connect.NewClient[v1.LogUserInteractionRequest, v1.LogUserInteractionResponse]( - httpClient, - baseURL+SessionServiceLogUserInteractionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("LogUserInteraction")), - connect.WithClientOptions(opts...), - ), - getClaudeConfig: connect.NewClient[v1.GetClaudeConfigRequest, v1.GetClaudeConfigResponse]( - httpClient, - baseURL+SessionServiceGetClaudeConfigProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetClaudeConfig")), - connect.WithClientOptions(opts...), - ), - listClaudeConfigs: connect.NewClient[v1.ListClaudeConfigsRequest, v1.ListClaudeConfigsResponse]( - httpClient, - baseURL+SessionServiceListClaudeConfigsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListClaudeConfigs")), - connect.WithClientOptions(opts...), - ), - updateClaudeConfig: connect.NewClient[v1.UpdateClaudeConfigRequest, v1.UpdateClaudeConfigResponse]( - httpClient, - baseURL+SessionServiceUpdateClaudeConfigProcedure, - connect.WithSchema(sessionServiceMethods.ByName("UpdateClaudeConfig")), - connect.WithClientOptions(opts...), - ), - listClaudeHistory: connect.NewClient[v1.ListClaudeHistoryRequest, v1.ListClaudeHistoryResponse]( - httpClient, - baseURL+SessionServiceListClaudeHistoryProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListClaudeHistory")), - connect.WithClientOptions(opts...), - ), - getClaudeHistoryDetail: connect.NewClient[v1.GetClaudeHistoryDetailRequest, v1.GetClaudeHistoryDetailResponse]( - httpClient, - baseURL+SessionServiceGetClaudeHistoryDetailProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetClaudeHistoryDetail")), - connect.WithClientOptions(opts...), - ), - getClaudeHistoryMessages: connect.NewClient[v1.GetClaudeHistoryMessagesRequest, v1.GetClaudeHistoryMessagesResponse]( - httpClient, - baseURL+SessionServiceGetClaudeHistoryMessagesProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetClaudeHistoryMessages")), - connect.WithClientOptions(opts...), - ), - searchClaudeHistory: connect.NewClient[v1.SearchClaudeHistoryRequest, v1.SearchClaudeHistoryResponse]( - httpClient, - baseURL+SessionServiceSearchClaudeHistoryProcedure, - connect.WithSchema(sessionServiceMethods.ByName("SearchClaudeHistory")), - connect.WithClientOptions(opts...), - ), - getPRInfo: connect.NewClient[v1.GetPRInfoRequest, v1.GetPRInfoResponse]( - httpClient, - baseURL+SessionServiceGetPRInfoProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetPRInfo")), - connect.WithClientOptions(opts...), - ), - getPRComments: connect.NewClient[v1.GetPRCommentsRequest, v1.GetPRCommentsResponse]( - httpClient, - baseURL+SessionServiceGetPRCommentsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetPRComments")), - connect.WithClientOptions(opts...), - ), - postPRComment: connect.NewClient[v1.PostPRCommentRequest, v1.PostPRCommentResponse]( - httpClient, - baseURL+SessionServicePostPRCommentProcedure, - connect.WithSchema(sessionServiceMethods.ByName("PostPRComment")), - connect.WithClientOptions(opts...), - ), - mergePR: connect.NewClient[v1.MergePRRequest, v1.MergePRResponse]( - httpClient, - baseURL+SessionServiceMergePRProcedure, - connect.WithSchema(sessionServiceMethods.ByName("MergePR")), - connect.WithClientOptions(opts...), - ), - closePR: connect.NewClient[v1.ClosePRRequest, v1.ClosePRResponse]( - httpClient, - baseURL+SessionServiceClosePRProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ClosePR")), - connect.WithClientOptions(opts...), - ), - sendNotification: connect.NewClient[v1.SendNotificationRequest, v1.SendNotificationResponse]( - httpClient, - baseURL+SessionServiceSendNotificationProcedure, - connect.WithSchema(sessionServiceMethods.ByName("SendNotification")), - connect.WithClientOptions(opts...), - ), - focusWindow: connect.NewClient[v1.FocusWindowRequest, v1.FocusWindowResponse]( - httpClient, - baseURL+SessionServiceFocusWindowProcedure, - connect.WithSchema(sessionServiceMethods.ByName("FocusWindow")), - connect.WithClientOptions(opts...), - ), - renameSession: connect.NewClient[v1.RenameSessionRequest, v1.RenameSessionResponse]( - httpClient, - baseURL+SessionServiceRenameSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("RenameSession")), - connect.WithClientOptions(opts...), - ), - restartSession: connect.NewClient[v1.RestartSessionRequest, v1.RestartSessionResponse]( - httpClient, - baseURL+SessionServiceRestartSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("RestartSession")), - connect.WithClientOptions(opts...), - ), - getWorkspaceInfo: connect.NewClient[v1.GetWorkspaceInfoRequest, v1.GetWorkspaceInfoResponse]( - httpClient, - baseURL+SessionServiceGetWorkspaceInfoProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetWorkspaceInfo")), - connect.WithClientOptions(opts...), - ), - listWorkspaceTargets: connect.NewClient[v1.ListWorkspaceTargetsRequest, v1.ListWorkspaceTargetsResponse]( - httpClient, - baseURL+SessionServiceListWorkspaceTargetsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListWorkspaceTargets")), - connect.WithClientOptions(opts...), - ), - switchWorkspace: connect.NewClient[v1.SwitchWorkspaceRequest, v1.SwitchWorkspaceResponse]( - httpClient, - baseURL+SessionServiceSwitchWorkspaceProcedure, - connect.WithSchema(sessionServiceMethods.ByName("SwitchWorkspace")), - connect.WithClientOptions(opts...), - ), - resolveApproval: connect.NewClient[v1.ResolveApprovalRequest, v1.ResolveApprovalResponse]( - httpClient, - baseURL+SessionServiceResolveApprovalProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ResolveApproval")), - connect.WithClientOptions(opts...), - ), - listPendingApprovals: connect.NewClient[v1.ListPendingApprovalsRequest, v1.ListPendingApprovalsResponse]( - httpClient, - baseURL+SessionServiceListPendingApprovalsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListPendingApprovals")), - connect.WithClientOptions(opts...), - ), - createDebugSnapshot: connect.NewClient[v1.CreateDebugSnapshotRequest, v1.CreateDebugSnapshotResponse]( - httpClient, - baseURL+SessionServiceCreateDebugSnapshotProcedure, - connect.WithSchema(sessionServiceMethods.ByName("CreateDebugSnapshot")), - connect.WithClientOptions(opts...), - ), - getNotificationHistory: connect.NewClient[v1.GetNotificationHistoryRequest, v1.GetNotificationHistoryResponse]( - httpClient, - baseURL+SessionServiceGetNotificationHistoryProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetNotificationHistory")), - connect.WithClientOptions(opts...), - ), - markNotificationRead: connect.NewClient[v1.MarkNotificationReadRequest, v1.MarkNotificationReadResponse]( - httpClient, - baseURL+SessionServiceMarkNotificationReadProcedure, - connect.WithSchema(sessionServiceMethods.ByName("MarkNotificationRead")), - connect.WithClientOptions(opts...), - ), - clearNotificationHistory: connect.NewClient[v1.ClearNotificationHistoryRequest, v1.ClearNotificationHistoryResponse]( - httpClient, - baseURL+SessionServiceClearNotificationHistoryProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ClearNotificationHistory")), - connect.WithClientOptions(opts...), - ), - listApprovalRules: connect.NewClient[v1.ListApprovalRulesRequest, v1.ListApprovalRulesResponse]( - httpClient, - baseURL+SessionServiceListApprovalRulesProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListApprovalRules")), - connect.WithClientOptions(opts...), - ), - upsertApprovalRule: connect.NewClient[v1.UpsertApprovalRuleRequest, v1.UpsertApprovalRuleResponse]( - httpClient, - baseURL+SessionServiceUpsertApprovalRuleProcedure, - connect.WithSchema(sessionServiceMethods.ByName("UpsertApprovalRule")), - connect.WithClientOptions(opts...), - ), - deleteApprovalRule: connect.NewClient[v1.DeleteApprovalRuleRequest, v1.DeleteApprovalRuleResponse]( - httpClient, - baseURL+SessionServiceDeleteApprovalRuleProcedure, - connect.WithSchema(sessionServiceMethods.ByName("DeleteApprovalRule")), - connect.WithClientOptions(opts...), - ), - getApprovalAnalytics: connect.NewClient[v1.GetApprovalAnalyticsRequest, v1.GetApprovalAnalyticsResponse]( - httpClient, - baseURL+SessionServiceGetApprovalAnalyticsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetApprovalAnalytics")), - connect.WithClientOptions(opts...), - ), - getProgramAnalytics: connect.NewClient[v1.GetProgramAnalyticsRequest, v1.GetProgramAnalyticsResponse]( - httpClient, - baseURL+SessionServiceGetProgramAnalyticsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetProgramAnalytics")), - connect.WithClientOptions(opts...), - ), - generateSuggestedRule: connect.NewClient[v1.GenerateSuggestedRuleRequest, v1.GenerateSuggestedRuleResponse]( - httpClient, - baseURL+SessionServiceGenerateSuggestedRuleProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GenerateSuggestedRule")), - connect.WithClientOptions(opts...), - ), - validateRules: connect.NewClient[v1.ValidateRulesRequest, v1.ValidateRulesResponse]( - httpClient, - baseURL+SessionServiceValidateRulesProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ValidateRules")), - connect.WithClientOptions(opts...), - ), - exportRules: connect.NewClient[v1.ExportRulesRequest, v1.ExportRulesResponse]( - httpClient, - baseURL+SessionServiceExportRulesProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ExportRules")), - connect.WithClientOptions(opts...), - ), - bulkUpsertRules: connect.NewClient[v1.BulkUpsertRulesRequest, v1.BulkUpsertRulesResponse]( - httpClient, - baseURL+SessionServiceBulkUpsertRulesProcedure, - connect.WithSchema(sessionServiceMethods.ByName("BulkUpsertRules")), - connect.WithClientOptions(opts...), - ), - getConfigFileRules: connect.NewClient[v1.GetConfigFileRulesRequest, v1.GetConfigFileRulesResponse]( - httpClient, - baseURL+SessionServiceGetConfigFileRulesProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetConfigFileRules")), - connect.WithClientOptions(opts...), - ), - saveRulesToConfigFile: connect.NewClient[v1.SaveRulesToConfigFileRequest, v1.SaveRulesToConfigFileResponse]( - httpClient, - baseURL+SessionServiceSaveRulesToConfigFileProcedure, - connect.WithSchema(sessionServiceMethods.ByName("SaveRulesToConfigFile")), - connect.WithClientOptions(opts...), - ), - listDatabases: connect.NewClient[v1.ListDatabasesRequest, v1.ListDatabasesResponse]( - httpClient, - baseURL+SessionServiceListDatabasesProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListDatabases")), - connect.WithClientOptions(opts...), - ), - getCurrentDatabase: connect.NewClient[v1.GetCurrentDatabaseRequest, v1.GetCurrentDatabaseResponse]( - httpClient, - baseURL+SessionServiceGetCurrentDatabaseProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetCurrentDatabase")), - connect.WithClientOptions(opts...), - ), - switchDatabase: connect.NewClient[v1.SwitchDatabaseRequest, v1.SwitchDatabaseResponse]( - httpClient, - baseURL+SessionServiceSwitchDatabaseProcedure, - connect.WithSchema(sessionServiceMethods.ByName("SwitchDatabase")), - connect.WithClientOptions(opts...), - ), - mergeDatabase: connect.NewClient[v1.MergeDatabaseRequest, v1.MergeDatabaseResponse]( - httpClient, - baseURL+SessionServiceMergeDatabaseProcedure, - connect.WithSchema(sessionServiceMethods.ByName("MergeDatabase")), - connect.WithClientOptions(opts...), - ), - createCheckpoint: connect.NewClient[v1.CreateCheckpointRequest, v1.CreateCheckpointResponse]( - httpClient, - baseURL+SessionServiceCreateCheckpointProcedure, - connect.WithSchema(sessionServiceMethods.ByName("CreateCheckpoint")), - connect.WithClientOptions(opts...), - ), - listCheckpoints: connect.NewClient[v1.ListCheckpointsRequest, v1.ListCheckpointsResponse]( - httpClient, - baseURL+SessionServiceListCheckpointsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListCheckpoints")), - connect.WithClientOptions(opts...), - ), - forkSession: connect.NewClient[v1.ForkSessionRequest, v1.ForkSessionResponse]( - httpClient, - baseURL+SessionServiceForkSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ForkSession")), - connect.WithClientOptions(opts...), - ), - clearConversationState: connect.NewClient[v1.ClearConversationStateRequest, v1.ClearConversationStateResponse]( - httpClient, - baseURL+SessionServiceClearConversationStateProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ClearConversationState")), - connect.WithClientOptions(opts...), - ), - listFiles: connect.NewClient[v1.ListFilesRequest, v1.ListFilesResponse]( - httpClient, - baseURL+SessionServiceListFilesProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListFiles")), - connect.WithClientOptions(opts...), - ), - getFileContent: connect.NewClient[v1.GetFileContentRequest, v1.GetFileContentResponse]( - httpClient, - baseURL+SessionServiceGetFileContentProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetFileContent")), - connect.WithClientOptions(opts...), - ), - searchFiles: connect.NewClient[v1.SearchFilesRequest, v1.SearchFilesResponse]( - httpClient, - baseURL+SessionServiceSearchFilesProcedure, - connect.WithSchema(sessionServiceMethods.ByName("SearchFiles")), - connect.WithClientOptions(opts...), - ), - listPathCompletions: connect.NewClient[v1.ListPathCompletionsRequest, v1.ListPathCompletionsResponse]( - httpClient, - baseURL+SessionServiceListPathCompletionsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListPathCompletions")), - connect.WithClientOptions(opts...), - ), - getSessionDefaults: connect.NewClient[v1.GetSessionDefaultsRequest, v1.GetSessionDefaultsResponse]( - httpClient, - baseURL+SessionServiceGetSessionDefaultsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetSessionDefaults")), - connect.WithClientOptions(opts...), - ), - resolveDefaults: connect.NewClient[v1.ResolveDefaultsRequest, v1.ResolveDefaultsResponse]( - httpClient, - baseURL+SessionServiceResolveDefaultsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ResolveDefaults")), - connect.WithClientOptions(opts...), - ), - previewDestinationPath: connect.NewClient[v1.PreviewDestinationPathRequest, v1.PreviewDestinationPathResponse]( - httpClient, - baseURL+SessionServicePreviewDestinationPathProcedure, - connect.WithSchema(sessionServiceMethods.ByName("PreviewDestinationPath")), - connect.WithClientOptions(opts...), - ), - updateGlobalDefaults: connect.NewClient[v1.UpdateGlobalDefaultsRequest, v1.UpdateGlobalDefaultsResponse]( - httpClient, - baseURL+SessionServiceUpdateGlobalDefaultsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("UpdateGlobalDefaults")), - connect.WithClientOptions(opts...), - ), - upsertProfile: connect.NewClient[v1.UpsertProfileRequest, v1.UpsertProfileResponse]( - httpClient, - baseURL+SessionServiceUpsertProfileProcedure, - connect.WithSchema(sessionServiceMethods.ByName("UpsertProfile")), - connect.WithClientOptions(opts...), - ), - deleteProfile: connect.NewClient[v1.DeleteProfileRequest, v1.DeleteProfileResponse]( - httpClient, - baseURL+SessionServiceDeleteProfileProcedure, - connect.WithSchema(sessionServiceMethods.ByName("DeleteProfile")), - connect.WithClientOptions(opts...), - ), - upsertDirectoryRule: connect.NewClient[v1.UpsertDirectoryRuleRequest, v1.UpsertDirectoryRuleResponse]( - httpClient, - baseURL+SessionServiceUpsertDirectoryRuleProcedure, - connect.WithSchema(sessionServiceMethods.ByName("UpsertDirectoryRule")), - connect.WithClientOptions(opts...), - ), - deleteDirectoryRule: connect.NewClient[v1.DeleteDirectoryRuleRequest, v1.DeleteDirectoryRuleResponse]( - httpClient, - baseURL+SessionServiceDeleteDirectoryRuleProcedure, - connect.WithSchema(sessionServiceMethods.ByName("DeleteDirectoryRule")), - connect.WithClientOptions(opts...), - ), - listWorktrees: connect.NewClient[v1.ListWorktreesRequest, v1.ListWorktreesResponse]( - httpClient, - baseURL+SessionServiceListWorktreesProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListWorktrees")), - connect.WithClientOptions(opts...), - ), - listPromptHistory: connect.NewClient[v1.ListPromptHistoryRequest, v1.ListPromptHistoryResponse]( - httpClient, - baseURL+SessionServiceListPromptHistoryProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListPromptHistory")), - connect.WithClientOptions(opts...), - ), - deletePromptHistory: connect.NewClient[v1.DeletePromptHistoryRequest, v1.DeletePromptHistoryResponse]( - httpClient, - baseURL+SessionServiceDeletePromptHistoryProcedure, - connect.WithSchema(sessionServiceMethods.ByName("DeletePromptHistory")), - connect.WithClientOptions(opts...), - ), - batchCreateSessions: connect.NewClient[v1.BatchCreateSessionsRequest, v1.BatchCreateSessionsResponse]( - httpClient, - baseURL+SessionServiceBatchCreateSessionsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("BatchCreateSessions")), - connect.WithClientOptions(opts...), - ), - runOneShot: connect.NewClient[v1.RunOneShotRequest, v1.RunOneShotResponse]( - httpClient, - baseURL+SessionServiceRunOneShotProcedure, - connect.WithSchema(sessionServiceMethods.ByName("RunOneShot")), - connect.WithClientOptions(opts...), - ), - createProject: connect.NewClient[v1.CreateProjectRequest, v1.CreateProjectResponse]( - httpClient, - baseURL+SessionServiceCreateProjectProcedure, - connect.WithSchema(sessionServiceMethods.ByName("CreateProject")), - connect.WithClientOptions(opts...), - ), - listProjects: connect.NewClient[v1.ListProjectsRequest, v1.ListProjectsResponse]( - httpClient, - baseURL+SessionServiceListProjectsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListProjects")), - connect.WithClientOptions(opts...), - ), - updateProject: connect.NewClient[v1.UpdateProjectRequest, v1.UpdateProjectResponse]( - httpClient, - baseURL+SessionServiceUpdateProjectProcedure, - connect.WithSchema(sessionServiceMethods.ByName("UpdateProject")), - connect.WithClientOptions(opts...), - ), - deleteProject: connect.NewClient[v1.DeleteProjectRequest, v1.DeleteProjectResponse]( - httpClient, - baseURL+SessionServiceDeleteProjectProcedure, - connect.WithSchema(sessionServiceMethods.ByName("DeleteProject")), - connect.WithClientOptions(opts...), - ), - assignSessionsToProject: connect.NewClient[v1.AssignSessionsToProjectRequest, v1.AssignSessionsToProjectResponse]( - httpClient, - baseURL+SessionServiceAssignSessionsToProjectProcedure, - connect.WithSchema(sessionServiceMethods.ByName("AssignSessionsToProject")), - connect.WithClientOptions(opts...), - ), - listBranches: connect.NewClient[v1.ListBranchesRequest, v1.ListBranchesResponse]( - httpClient, - baseURL+SessionServiceListBranchesProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListBranches")), - connect.WithClientOptions(opts...), - ), - getTerminalSnapshot: connect.NewClient[v1.GetTerminalSnapshotRequest, v1.GetTerminalSnapshotResponse]( - httpClient, - baseURL+SessionServiceGetTerminalSnapshotProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetTerminalSnapshot")), - connect.WithClientOptions(opts...), - ), - writeToSession: connect.NewClient[v1.WriteToSessionRequest, v1.WriteToSessionResponse]( - httpClient, - baseURL+SessionServiceWriteToSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("WriteToSession")), - connect.WithClientOptions(opts...), - ), - logClientEvents: connect.NewClient[v1.LogClientEventsRequest, v1.LogClientEventsResponse]( - httpClient, - baseURL+SessionServiceLogClientEventsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("LogClientEvents")), - connect.WithClientOptions(opts...), - ), - listErrors: connect.NewClient[v1.ListErrorsRequest, v1.ListErrorsResponse]( - httpClient, - baseURL+SessionServiceListErrorsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListErrors")), - connect.WithClientOptions(opts...), - ), - acknowledgeError: connect.NewClient[v1.AcknowledgeErrorRequest, v1.AcknowledgeErrorResponse]( - httpClient, - baseURL+SessionServiceAcknowledgeErrorProcedure, - connect.WithSchema(sessionServiceMethods.ByName("AcknowledgeError")), - connect.WithClientOptions(opts...), - ), - getFeatureFlags: connect.NewClient[v1.GetFeatureFlagsRequest, v1.GetFeatureFlagsResponse]( - httpClient, - baseURL+SessionServiceGetFeatureFlagsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetFeatureFlags")), - connect.WithClientOptions(opts...), - ), - updateFeatureFlag: connect.NewClient[v1.UpdateFeatureFlagRequest, v1.UpdateFeatureFlagResponse]( - httpClient, - baseURL+SessionServiceUpdateFeatureFlagProcedure, - connect.WithSchema(sessionServiceMethods.ByName("UpdateFeatureFlag")), - connect.WithClientOptions(opts...), - ), - queryEscapeAnalytics: connect.NewClient[v1.QueryEscapeAnalyticsRequest, v1.QueryEscapeAnalyticsResponse]( - httpClient, - baseURL+SessionServiceQueryEscapeAnalyticsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("QueryEscapeAnalytics")), - connect.WithClientOptions(opts...), - ), - getEscapeAnalyticsSummary: connect.NewClient[v1.GetEscapeAnalyticsSummaryRequest, v1.GetEscapeAnalyticsSummaryResponse]( - httpClient, - baseURL+SessionServiceGetEscapeAnalyticsSummaryProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetEscapeAnalyticsSummary")), - connect.WithClientOptions(opts...), - ), - getEscapeAnalyticsGlobalSummary: connect.NewClient[v1.GetEscapeAnalyticsGlobalSummaryRequest, v1.GetEscapeAnalyticsGlobalSummaryResponse]( - httpClient, - baseURL+SessionServiceGetEscapeAnalyticsGlobalSummaryProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetEscapeAnalyticsGlobalSummary")), - connect.WithClientOptions(opts...), - ), - hibernateSession: connect.NewClient[v1.HibernateSessionRequest, v1.HibernateSessionResponse]( - httpClient, - baseURL+SessionServiceHibernateSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("HibernateSession")), - connect.WithClientOptions(opts...), - ), - resumeHibernatedSession: connect.NewClient[v1.ResumeHibernatedSessionRequest, v1.ResumeHibernatedSessionResponse]( - httpClient, - baseURL+SessionServiceResumeHibernatedSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ResumeHibernatedSession")), - connect.WithClientOptions(opts...), - ), - resumeCrashedSession: connect.NewClient[v1.ResumeCrashedSessionRequest, v1.ResumeCrashedSessionResponse]( - httpClient, - baseURL+SessionServiceResumeCrashedSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ResumeCrashedSession")), - connect.WithClientOptions(opts...), - ), - spawnShell: connect.NewClient[v1.SpawnShellRequest, v1.SpawnShellResponse]( - httpClient, - baseURL+SessionServiceSpawnShellProcedure, - connect.WithSchema(sessionServiceMethods.ByName("SpawnShell")), - connect.WithClientOptions(opts...), - ), - stopShell: connect.NewClient[v1.StopShellRequest, v1.StopShellResponse]( - httpClient, - baseURL+SessionServiceStopShellProcedure, - connect.WithSchema(sessionServiceMethods.ByName("StopShell")), - connect.WithClientOptions(opts...), - ), - restartShell: connect.NewClient[v1.RestartShellRequest, v1.RestartShellResponse]( - httpClient, - baseURL+SessionServiceRestartShellProcedure, - connect.WithSchema(sessionServiceMethods.ByName("RestartShell")), - connect.WithClientOptions(opts...), - ), - listShells: connect.NewClient[v1.ListShellsRequest, v1.ListShellsResponse]( - httpClient, - baseURL+SessionServiceListShellsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListShells")), - connect.WithClientOptions(opts...), - ), - deleteShell: connect.NewClient[v1.DeleteShellRequest, v1.DeleteShellResponse]( - httpClient, - baseURL+SessionServiceDeleteShellProcedure, - connect.WithSchema(sessionServiceMethods.ByName("DeleteShell")), - connect.WithClientOptions(opts...), - ), - createWorkflow: connect.NewClient[v1.CreateWorkflowRequest, v1.CreateWorkflowResponse]( - httpClient, - baseURL+SessionServiceCreateWorkflowProcedure, - connect.WithSchema(sessionServiceMethods.ByName("CreateWorkflow")), - connect.WithClientOptions(opts...), - ), - updateWorkflow: connect.NewClient[v1.UpdateWorkflowRequest, v1.UpdateWorkflowResponse]( - httpClient, - baseURL+SessionServiceUpdateWorkflowProcedure, - connect.WithSchema(sessionServiceMethods.ByName("UpdateWorkflow")), - connect.WithClientOptions(opts...), - ), - deleteWorkflow: connect.NewClient[v1.DeleteWorkflowRequest, v1.DeleteWorkflowResponse]( - httpClient, - baseURL+SessionServiceDeleteWorkflowProcedure, - connect.WithSchema(sessionServiceMethods.ByName("DeleteWorkflow")), - connect.WithClientOptions(opts...), - ), - listWorkflows: connect.NewClient[v1.ListWorkflowsRequest, v1.ListWorkflowsResponse]( - httpClient, - baseURL+SessionServiceListWorkflowsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListWorkflows")), - connect.WithClientOptions(opts...), - ), - runWorkflow: connect.NewClient[v1.RunWorkflowRequest, v1.RunWorkflowResponse]( - httpClient, - baseURL+SessionServiceRunWorkflowProcedure, - connect.WithSchema(sessionServiceMethods.ByName("RunWorkflow")), - connect.WithClientOptions(opts...), - ), - getDetectionEvents: connect.NewClient[v1.GetDetectionEventsRequest, v1.GetDetectionEventsResponse]( - httpClient, - baseURL+SessionServiceGetDetectionEventsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetDetectionEvents")), - connect.WithClientOptions(opts...), - ), - listSlashCommands: connect.NewClient[v1.ListSlashCommandsRequest, v1.ListSlashCommandsResponse]( - httpClient, - baseURL+SessionServiceListSlashCommandsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListSlashCommands")), - connect.WithClientOptions(opts...), - ), - listAliases: connect.NewClient[v1.ListAliasesRequest, v1.ListAliasesResponse]( - httpClient, - baseURL+SessionServiceListAliasesProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ListAliases")), - connect.WithClientOptions(opts...), - ), - upsertAlias: connect.NewClient[v1.UpsertAliasRequest, v1.UpsertAliasResponse]( - httpClient, - baseURL+SessionServiceUpsertAliasProcedure, - connect.WithSchema(sessionServiceMethods.ByName("UpsertAlias")), - connect.WithClientOptions(opts...), - ), - deleteAlias: connect.NewClient[v1.DeleteAliasRequest, v1.DeleteAliasResponse]( - httpClient, - baseURL+SessionServiceDeleteAliasProcedure, - connect.WithSchema(sessionServiceMethods.ByName("DeleteAlias")), - connect.WithClientOptions(opts...), - ), - archiveSession: connect.NewClient[v1.ArchiveSessionRequest, v1.ArchiveSessionResponse]( - httpClient, - baseURL+SessionServiceArchiveSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ArchiveSession")), - connect.WithClientOptions(opts...), - ), - unarchiveSession: connect.NewClient[v1.UnarchiveSessionRequest, v1.UnarchiveSessionResponse]( - httpClient, - baseURL+SessionServiceUnarchiveSessionProcedure, - connect.WithSchema(sessionServiceMethods.ByName("UnarchiveSession")), - connect.WithClientOptions(opts...), - ), - archiveWorkflowSessions: connect.NewClient[v1.ArchiveWorkflowSessionsRequest, v1.ArchiveWorkflowSessionsResponse]( - httpClient, - baseURL+SessionServiceArchiveWorkflowSessionsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("ArchiveWorkflowSessions")), - connect.WithClientOptions(opts...), - ), - deleteWorkflowFailedSessions: connect.NewClient[v1.DeleteWorkflowFailedSessionsRequest, v1.DeleteWorkflowFailedSessionsResponse]( - httpClient, - baseURL+SessionServiceDeleteWorkflowFailedSessionsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("DeleteWorkflowFailedSessions")), - connect.WithClientOptions(opts...), - ), - getProviderLimits: connect.NewClient[v1.GetProviderLimitsRequest, v1.GetProviderLimitsResponse]( - httpClient, - baseURL+SessionServiceGetProviderLimitsProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetProviderLimits")), - connect.WithClientOptions(opts...), - ), - getHookStatus: connect.NewClient[v1.GetHookStatusRequest, v1.GetHookStatusResponse]( - httpClient, - baseURL+SessionServiceGetHookStatusProcedure, - connect.WithSchema(sessionServiceMethods.ByName("GetHookStatus")), - connect.WithClientOptions(opts...), - ), - installHooks: connect.NewClient[v1.InstallHooksRequest, v1.InstallHooksResponse]( - httpClient, - baseURL+SessionServiceInstallHooksProcedure, - connect.WithSchema(sessionServiceMethods.ByName("InstallHooks")), - connect.WithClientOptions(opts...), - ), - } -} - -// sessionServiceClient implements SessionServiceClient. -type sessionServiceClient struct { - listSessions *connect.Client[v1.ListSessionsRequest, v1.ListSessionsResponse] - getSession *connect.Client[v1.GetSessionRequest, v1.GetSessionResponse] - createSession *connect.Client[v1.CreateSessionRequest, v1.CreateSessionResponse] - updateSession *connect.Client[v1.UpdateSessionRequest, v1.UpdateSessionResponse] - deleteSession *connect.Client[v1.DeleteSessionRequest, v1.DeleteSessionResponse] - watchSessions *connect.Client[v1.WatchSessionsRequest, v1.SessionEvent] - streamTerminal *connect.Client[v1.TerminalData, v1.TerminalData] - getSessionDiff *connect.Client[v1.GetSessionDiffRequest, v1.GetSessionDiffResponse] - getVCSStatus *connect.Client[v1.GetVCSStatusRequest, v1.GetVCSStatusResponse] - getReviewQueue *connect.Client[v1.GetReviewQueueRequest, v1.GetReviewQueueResponse] - acknowledgeSession *connect.Client[v1.AcknowledgeSessionRequest, v1.AcknowledgeSessionResponse] - getLogs *connect.Client[v1.GetLogsRequest, v1.GetLogsResponse] - watchReviewQueue *connect.Client[v1.WatchReviewQueueRequest, v1.ReviewQueueEvent] - logUserInteraction *connect.Client[v1.LogUserInteractionRequest, v1.LogUserInteractionResponse] - getClaudeConfig *connect.Client[v1.GetClaudeConfigRequest, v1.GetClaudeConfigResponse] - listClaudeConfigs *connect.Client[v1.ListClaudeConfigsRequest, v1.ListClaudeConfigsResponse] - updateClaudeConfig *connect.Client[v1.UpdateClaudeConfigRequest, v1.UpdateClaudeConfigResponse] - listClaudeHistory *connect.Client[v1.ListClaudeHistoryRequest, v1.ListClaudeHistoryResponse] - getClaudeHistoryDetail *connect.Client[v1.GetClaudeHistoryDetailRequest, v1.GetClaudeHistoryDetailResponse] - getClaudeHistoryMessages *connect.Client[v1.GetClaudeHistoryMessagesRequest, v1.GetClaudeHistoryMessagesResponse] - searchClaudeHistory *connect.Client[v1.SearchClaudeHistoryRequest, v1.SearchClaudeHistoryResponse] - getPRInfo *connect.Client[v1.GetPRInfoRequest, v1.GetPRInfoResponse] - getPRComments *connect.Client[v1.GetPRCommentsRequest, v1.GetPRCommentsResponse] - postPRComment *connect.Client[v1.PostPRCommentRequest, v1.PostPRCommentResponse] - mergePR *connect.Client[v1.MergePRRequest, v1.MergePRResponse] - closePR *connect.Client[v1.ClosePRRequest, v1.ClosePRResponse] - sendNotification *connect.Client[v1.SendNotificationRequest, v1.SendNotificationResponse] - focusWindow *connect.Client[v1.FocusWindowRequest, v1.FocusWindowResponse] - renameSession *connect.Client[v1.RenameSessionRequest, v1.RenameSessionResponse] - restartSession *connect.Client[v1.RestartSessionRequest, v1.RestartSessionResponse] - getWorkspaceInfo *connect.Client[v1.GetWorkspaceInfoRequest, v1.GetWorkspaceInfoResponse] - listWorkspaceTargets *connect.Client[v1.ListWorkspaceTargetsRequest, v1.ListWorkspaceTargetsResponse] - switchWorkspace *connect.Client[v1.SwitchWorkspaceRequest, v1.SwitchWorkspaceResponse] - resolveApproval *connect.Client[v1.ResolveApprovalRequest, v1.ResolveApprovalResponse] - listPendingApprovals *connect.Client[v1.ListPendingApprovalsRequest, v1.ListPendingApprovalsResponse] - createDebugSnapshot *connect.Client[v1.CreateDebugSnapshotRequest, v1.CreateDebugSnapshotResponse] - getNotificationHistory *connect.Client[v1.GetNotificationHistoryRequest, v1.GetNotificationHistoryResponse] - markNotificationRead *connect.Client[v1.MarkNotificationReadRequest, v1.MarkNotificationReadResponse] - clearNotificationHistory *connect.Client[v1.ClearNotificationHistoryRequest, v1.ClearNotificationHistoryResponse] - listApprovalRules *connect.Client[v1.ListApprovalRulesRequest, v1.ListApprovalRulesResponse] - upsertApprovalRule *connect.Client[v1.UpsertApprovalRuleRequest, v1.UpsertApprovalRuleResponse] - deleteApprovalRule *connect.Client[v1.DeleteApprovalRuleRequest, v1.DeleteApprovalRuleResponse] - getApprovalAnalytics *connect.Client[v1.GetApprovalAnalyticsRequest, v1.GetApprovalAnalyticsResponse] - getProgramAnalytics *connect.Client[v1.GetProgramAnalyticsRequest, v1.GetProgramAnalyticsResponse] - generateSuggestedRule *connect.Client[v1.GenerateSuggestedRuleRequest, v1.GenerateSuggestedRuleResponse] - validateRules *connect.Client[v1.ValidateRulesRequest, v1.ValidateRulesResponse] - exportRules *connect.Client[v1.ExportRulesRequest, v1.ExportRulesResponse] - bulkUpsertRules *connect.Client[v1.BulkUpsertRulesRequest, v1.BulkUpsertRulesResponse] - getConfigFileRules *connect.Client[v1.GetConfigFileRulesRequest, v1.GetConfigFileRulesResponse] - saveRulesToConfigFile *connect.Client[v1.SaveRulesToConfigFileRequest, v1.SaveRulesToConfigFileResponse] - listDatabases *connect.Client[v1.ListDatabasesRequest, v1.ListDatabasesResponse] - getCurrentDatabase *connect.Client[v1.GetCurrentDatabaseRequest, v1.GetCurrentDatabaseResponse] - switchDatabase *connect.Client[v1.SwitchDatabaseRequest, v1.SwitchDatabaseResponse] - mergeDatabase *connect.Client[v1.MergeDatabaseRequest, v1.MergeDatabaseResponse] - createCheckpoint *connect.Client[v1.CreateCheckpointRequest, v1.CreateCheckpointResponse] - listCheckpoints *connect.Client[v1.ListCheckpointsRequest, v1.ListCheckpointsResponse] - forkSession *connect.Client[v1.ForkSessionRequest, v1.ForkSessionResponse] - clearConversationState *connect.Client[v1.ClearConversationStateRequest, v1.ClearConversationStateResponse] - listFiles *connect.Client[v1.ListFilesRequest, v1.ListFilesResponse] - getFileContent *connect.Client[v1.GetFileContentRequest, v1.GetFileContentResponse] - searchFiles *connect.Client[v1.SearchFilesRequest, v1.SearchFilesResponse] - listPathCompletions *connect.Client[v1.ListPathCompletionsRequest, v1.ListPathCompletionsResponse] - getSessionDefaults *connect.Client[v1.GetSessionDefaultsRequest, v1.GetSessionDefaultsResponse] - resolveDefaults *connect.Client[v1.ResolveDefaultsRequest, v1.ResolveDefaultsResponse] - previewDestinationPath *connect.Client[v1.PreviewDestinationPathRequest, v1.PreviewDestinationPathResponse] - updateGlobalDefaults *connect.Client[v1.UpdateGlobalDefaultsRequest, v1.UpdateGlobalDefaultsResponse] - upsertProfile *connect.Client[v1.UpsertProfileRequest, v1.UpsertProfileResponse] - deleteProfile *connect.Client[v1.DeleteProfileRequest, v1.DeleteProfileResponse] - upsertDirectoryRule *connect.Client[v1.UpsertDirectoryRuleRequest, v1.UpsertDirectoryRuleResponse] - deleteDirectoryRule *connect.Client[v1.DeleteDirectoryRuleRequest, v1.DeleteDirectoryRuleResponse] - listWorktrees *connect.Client[v1.ListWorktreesRequest, v1.ListWorktreesResponse] - listPromptHistory *connect.Client[v1.ListPromptHistoryRequest, v1.ListPromptHistoryResponse] - deletePromptHistory *connect.Client[v1.DeletePromptHistoryRequest, v1.DeletePromptHistoryResponse] - batchCreateSessions *connect.Client[v1.BatchCreateSessionsRequest, v1.BatchCreateSessionsResponse] - runOneShot *connect.Client[v1.RunOneShotRequest, v1.RunOneShotResponse] - createProject *connect.Client[v1.CreateProjectRequest, v1.CreateProjectResponse] - listProjects *connect.Client[v1.ListProjectsRequest, v1.ListProjectsResponse] - updateProject *connect.Client[v1.UpdateProjectRequest, v1.UpdateProjectResponse] - deleteProject *connect.Client[v1.DeleteProjectRequest, v1.DeleteProjectResponse] - assignSessionsToProject *connect.Client[v1.AssignSessionsToProjectRequest, v1.AssignSessionsToProjectResponse] - listBranches *connect.Client[v1.ListBranchesRequest, v1.ListBranchesResponse] - getTerminalSnapshot *connect.Client[v1.GetTerminalSnapshotRequest, v1.GetTerminalSnapshotResponse] - writeToSession *connect.Client[v1.WriteToSessionRequest, v1.WriteToSessionResponse] - logClientEvents *connect.Client[v1.LogClientEventsRequest, v1.LogClientEventsResponse] - listErrors *connect.Client[v1.ListErrorsRequest, v1.ListErrorsResponse] - acknowledgeError *connect.Client[v1.AcknowledgeErrorRequest, v1.AcknowledgeErrorResponse] - getFeatureFlags *connect.Client[v1.GetFeatureFlagsRequest, v1.GetFeatureFlagsResponse] - updateFeatureFlag *connect.Client[v1.UpdateFeatureFlagRequest, v1.UpdateFeatureFlagResponse] - queryEscapeAnalytics *connect.Client[v1.QueryEscapeAnalyticsRequest, v1.QueryEscapeAnalyticsResponse] - getEscapeAnalyticsSummary *connect.Client[v1.GetEscapeAnalyticsSummaryRequest, v1.GetEscapeAnalyticsSummaryResponse] - getEscapeAnalyticsGlobalSummary *connect.Client[v1.GetEscapeAnalyticsGlobalSummaryRequest, v1.GetEscapeAnalyticsGlobalSummaryResponse] - hibernateSession *connect.Client[v1.HibernateSessionRequest, v1.HibernateSessionResponse] - resumeHibernatedSession *connect.Client[v1.ResumeHibernatedSessionRequest, v1.ResumeHibernatedSessionResponse] - resumeCrashedSession *connect.Client[v1.ResumeCrashedSessionRequest, v1.ResumeCrashedSessionResponse] - spawnShell *connect.Client[v1.SpawnShellRequest, v1.SpawnShellResponse] - stopShell *connect.Client[v1.StopShellRequest, v1.StopShellResponse] - restartShell *connect.Client[v1.RestartShellRequest, v1.RestartShellResponse] - listShells *connect.Client[v1.ListShellsRequest, v1.ListShellsResponse] - deleteShell *connect.Client[v1.DeleteShellRequest, v1.DeleteShellResponse] - createWorkflow *connect.Client[v1.CreateWorkflowRequest, v1.CreateWorkflowResponse] - updateWorkflow *connect.Client[v1.UpdateWorkflowRequest, v1.UpdateWorkflowResponse] - deleteWorkflow *connect.Client[v1.DeleteWorkflowRequest, v1.DeleteWorkflowResponse] - listWorkflows *connect.Client[v1.ListWorkflowsRequest, v1.ListWorkflowsResponse] - runWorkflow *connect.Client[v1.RunWorkflowRequest, v1.RunWorkflowResponse] - getDetectionEvents *connect.Client[v1.GetDetectionEventsRequest, v1.GetDetectionEventsResponse] - listSlashCommands *connect.Client[v1.ListSlashCommandsRequest, v1.ListSlashCommandsResponse] - listAliases *connect.Client[v1.ListAliasesRequest, v1.ListAliasesResponse] - upsertAlias *connect.Client[v1.UpsertAliasRequest, v1.UpsertAliasResponse] - deleteAlias *connect.Client[v1.DeleteAliasRequest, v1.DeleteAliasResponse] - archiveSession *connect.Client[v1.ArchiveSessionRequest, v1.ArchiveSessionResponse] - unarchiveSession *connect.Client[v1.UnarchiveSessionRequest, v1.UnarchiveSessionResponse] - archiveWorkflowSessions *connect.Client[v1.ArchiveWorkflowSessionsRequest, v1.ArchiveWorkflowSessionsResponse] - deleteWorkflowFailedSessions *connect.Client[v1.DeleteWorkflowFailedSessionsRequest, v1.DeleteWorkflowFailedSessionsResponse] - getProviderLimits *connect.Client[v1.GetProviderLimitsRequest, v1.GetProviderLimitsResponse] - getHookStatus *connect.Client[v1.GetHookStatusRequest, v1.GetHookStatusResponse] - installHooks *connect.Client[v1.InstallHooksRequest, v1.InstallHooksResponse] -} - -// ListSessions calls session.v1.SessionService.ListSessions. -func (c *sessionServiceClient) ListSessions(ctx context.Context, req *connect.Request[v1.ListSessionsRequest]) (*connect.Response[v1.ListSessionsResponse], error) { - return c.listSessions.CallUnary(ctx, req) -} - -// GetSession calls session.v1.SessionService.GetSession. -func (c *sessionServiceClient) GetSession(ctx context.Context, req *connect.Request[v1.GetSessionRequest]) (*connect.Response[v1.GetSessionResponse], error) { - return c.getSession.CallUnary(ctx, req) -} - -// CreateSession calls session.v1.SessionService.CreateSession. -func (c *sessionServiceClient) CreateSession(ctx context.Context, req *connect.Request[v1.CreateSessionRequest]) (*connect.Response[v1.CreateSessionResponse], error) { - return c.createSession.CallUnary(ctx, req) -} - -// UpdateSession calls session.v1.SessionService.UpdateSession. -func (c *sessionServiceClient) UpdateSession(ctx context.Context, req *connect.Request[v1.UpdateSessionRequest]) (*connect.Response[v1.UpdateSessionResponse], error) { - return c.updateSession.CallUnary(ctx, req) -} - -// DeleteSession calls session.v1.SessionService.DeleteSession. -func (c *sessionServiceClient) DeleteSession(ctx context.Context, req *connect.Request[v1.DeleteSessionRequest]) (*connect.Response[v1.DeleteSessionResponse], error) { - return c.deleteSession.CallUnary(ctx, req) -} - -// WatchSessions calls session.v1.SessionService.WatchSessions. -func (c *sessionServiceClient) WatchSessions(ctx context.Context, req *connect.Request[v1.WatchSessionsRequest]) (*connect.ServerStreamForClient[v1.SessionEvent], error) { - return c.watchSessions.CallServerStream(ctx, req) -} - -// StreamTerminal calls session.v1.SessionService.StreamTerminal. -func (c *sessionServiceClient) StreamTerminal(ctx context.Context) *connect.BidiStreamForClient[v1.TerminalData, v1.TerminalData] { - return c.streamTerminal.CallBidiStream(ctx) -} - -// GetSessionDiff calls session.v1.SessionService.GetSessionDiff. -func (c *sessionServiceClient) GetSessionDiff(ctx context.Context, req *connect.Request[v1.GetSessionDiffRequest]) (*connect.Response[v1.GetSessionDiffResponse], error) { - return c.getSessionDiff.CallUnary(ctx, req) -} - -// GetVCSStatus calls session.v1.SessionService.GetVCSStatus. -func (c *sessionServiceClient) GetVCSStatus(ctx context.Context, req *connect.Request[v1.GetVCSStatusRequest]) (*connect.Response[v1.GetVCSStatusResponse], error) { - return c.getVCSStatus.CallUnary(ctx, req) -} - -// GetReviewQueue calls session.v1.SessionService.GetReviewQueue. -func (c *sessionServiceClient) GetReviewQueue(ctx context.Context, req *connect.Request[v1.GetReviewQueueRequest]) (*connect.Response[v1.GetReviewQueueResponse], error) { - return c.getReviewQueue.CallUnary(ctx, req) -} - -// AcknowledgeSession calls session.v1.SessionService.AcknowledgeSession. -func (c *sessionServiceClient) AcknowledgeSession(ctx context.Context, req *connect.Request[v1.AcknowledgeSessionRequest]) (*connect.Response[v1.AcknowledgeSessionResponse], error) { - return c.acknowledgeSession.CallUnary(ctx, req) -} - -// GetLogs calls session.v1.SessionService.GetLogs. -func (c *sessionServiceClient) GetLogs(ctx context.Context, req *connect.Request[v1.GetLogsRequest]) (*connect.Response[v1.GetLogsResponse], error) { - return c.getLogs.CallUnary(ctx, req) -} - -// WatchReviewQueue calls session.v1.SessionService.WatchReviewQueue. -func (c *sessionServiceClient) WatchReviewQueue(ctx context.Context, req *connect.Request[v1.WatchReviewQueueRequest]) (*connect.ServerStreamForClient[v1.ReviewQueueEvent], error) { - return c.watchReviewQueue.CallServerStream(ctx, req) -} - -// LogUserInteraction calls session.v1.SessionService.LogUserInteraction. -func (c *sessionServiceClient) LogUserInteraction(ctx context.Context, req *connect.Request[v1.LogUserInteractionRequest]) (*connect.Response[v1.LogUserInteractionResponse], error) { - return c.logUserInteraction.CallUnary(ctx, req) -} - -// GetClaudeConfig calls session.v1.SessionService.GetClaudeConfig. -func (c *sessionServiceClient) GetClaudeConfig(ctx context.Context, req *connect.Request[v1.GetClaudeConfigRequest]) (*connect.Response[v1.GetClaudeConfigResponse], error) { - return c.getClaudeConfig.CallUnary(ctx, req) -} - -// ListClaudeConfigs calls session.v1.SessionService.ListClaudeConfigs. -func (c *sessionServiceClient) ListClaudeConfigs(ctx context.Context, req *connect.Request[v1.ListClaudeConfigsRequest]) (*connect.Response[v1.ListClaudeConfigsResponse], error) { - return c.listClaudeConfigs.CallUnary(ctx, req) -} - -// UpdateClaudeConfig calls session.v1.SessionService.UpdateClaudeConfig. -func (c *sessionServiceClient) UpdateClaudeConfig(ctx context.Context, req *connect.Request[v1.UpdateClaudeConfigRequest]) (*connect.Response[v1.UpdateClaudeConfigResponse], error) { - return c.updateClaudeConfig.CallUnary(ctx, req) -} - -// ListClaudeHistory calls session.v1.SessionService.ListClaudeHistory. -func (c *sessionServiceClient) ListClaudeHistory(ctx context.Context, req *connect.Request[v1.ListClaudeHistoryRequest]) (*connect.Response[v1.ListClaudeHistoryResponse], error) { - return c.listClaudeHistory.CallUnary(ctx, req) -} - -// GetClaudeHistoryDetail calls session.v1.SessionService.GetClaudeHistoryDetail. -func (c *sessionServiceClient) GetClaudeHistoryDetail(ctx context.Context, req *connect.Request[v1.GetClaudeHistoryDetailRequest]) (*connect.Response[v1.GetClaudeHistoryDetailResponse], error) { - return c.getClaudeHistoryDetail.CallUnary(ctx, req) -} - -// GetClaudeHistoryMessages calls session.v1.SessionService.GetClaudeHistoryMessages. -func (c *sessionServiceClient) GetClaudeHistoryMessages(ctx context.Context, req *connect.Request[v1.GetClaudeHistoryMessagesRequest]) (*connect.Response[v1.GetClaudeHistoryMessagesResponse], error) { - return c.getClaudeHistoryMessages.CallUnary(ctx, req) -} - -// SearchClaudeHistory calls session.v1.SessionService.SearchClaudeHistory. -func (c *sessionServiceClient) SearchClaudeHistory(ctx context.Context, req *connect.Request[v1.SearchClaudeHistoryRequest]) (*connect.Response[v1.SearchClaudeHistoryResponse], error) { - return c.searchClaudeHistory.CallUnary(ctx, req) -} - -// GetPRInfo calls session.v1.SessionService.GetPRInfo. -func (c *sessionServiceClient) GetPRInfo(ctx context.Context, req *connect.Request[v1.GetPRInfoRequest]) (*connect.Response[v1.GetPRInfoResponse], error) { - return c.getPRInfo.CallUnary(ctx, req) -} - -// GetPRComments calls session.v1.SessionService.GetPRComments. -func (c *sessionServiceClient) GetPRComments(ctx context.Context, req *connect.Request[v1.GetPRCommentsRequest]) (*connect.Response[v1.GetPRCommentsResponse], error) { - return c.getPRComments.CallUnary(ctx, req) -} - -// PostPRComment calls session.v1.SessionService.PostPRComment. -func (c *sessionServiceClient) PostPRComment(ctx context.Context, req *connect.Request[v1.PostPRCommentRequest]) (*connect.Response[v1.PostPRCommentResponse], error) { - return c.postPRComment.CallUnary(ctx, req) -} - -// MergePR calls session.v1.SessionService.MergePR. -func (c *sessionServiceClient) MergePR(ctx context.Context, req *connect.Request[v1.MergePRRequest]) (*connect.Response[v1.MergePRResponse], error) { - return c.mergePR.CallUnary(ctx, req) -} - -// ClosePR calls session.v1.SessionService.ClosePR. -func (c *sessionServiceClient) ClosePR(ctx context.Context, req *connect.Request[v1.ClosePRRequest]) (*connect.Response[v1.ClosePRResponse], error) { - return c.closePR.CallUnary(ctx, req) -} - -// SendNotification calls session.v1.SessionService.SendNotification. -func (c *sessionServiceClient) SendNotification(ctx context.Context, req *connect.Request[v1.SendNotificationRequest]) (*connect.Response[v1.SendNotificationResponse], error) { - return c.sendNotification.CallUnary(ctx, req) -} - -// FocusWindow calls session.v1.SessionService.FocusWindow. -func (c *sessionServiceClient) FocusWindow(ctx context.Context, req *connect.Request[v1.FocusWindowRequest]) (*connect.Response[v1.FocusWindowResponse], error) { - return c.focusWindow.CallUnary(ctx, req) -} - -// RenameSession calls session.v1.SessionService.RenameSession. -func (c *sessionServiceClient) RenameSession(ctx context.Context, req *connect.Request[v1.RenameSessionRequest]) (*connect.Response[v1.RenameSessionResponse], error) { - return c.renameSession.CallUnary(ctx, req) -} - -// RestartSession calls session.v1.SessionService.RestartSession. -func (c *sessionServiceClient) RestartSession(ctx context.Context, req *connect.Request[v1.RestartSessionRequest]) (*connect.Response[v1.RestartSessionResponse], error) { - return c.restartSession.CallUnary(ctx, req) -} - -// GetWorkspaceInfo calls session.v1.SessionService.GetWorkspaceInfo. -func (c *sessionServiceClient) GetWorkspaceInfo(ctx context.Context, req *connect.Request[v1.GetWorkspaceInfoRequest]) (*connect.Response[v1.GetWorkspaceInfoResponse], error) { - return c.getWorkspaceInfo.CallUnary(ctx, req) -} - -// ListWorkspaceTargets calls session.v1.SessionService.ListWorkspaceTargets. -func (c *sessionServiceClient) ListWorkspaceTargets(ctx context.Context, req *connect.Request[v1.ListWorkspaceTargetsRequest]) (*connect.Response[v1.ListWorkspaceTargetsResponse], error) { - return c.listWorkspaceTargets.CallUnary(ctx, req) -} - -// SwitchWorkspace calls session.v1.SessionService.SwitchWorkspace. -func (c *sessionServiceClient) SwitchWorkspace(ctx context.Context, req *connect.Request[v1.SwitchWorkspaceRequest]) (*connect.Response[v1.SwitchWorkspaceResponse], error) { - return c.switchWorkspace.CallUnary(ctx, req) -} - -// ResolveApproval calls session.v1.SessionService.ResolveApproval. -func (c *sessionServiceClient) ResolveApproval(ctx context.Context, req *connect.Request[v1.ResolveApprovalRequest]) (*connect.Response[v1.ResolveApprovalResponse], error) { - return c.resolveApproval.CallUnary(ctx, req) -} - -// ListPendingApprovals calls session.v1.SessionService.ListPendingApprovals. -func (c *sessionServiceClient) ListPendingApprovals(ctx context.Context, req *connect.Request[v1.ListPendingApprovalsRequest]) (*connect.Response[v1.ListPendingApprovalsResponse], error) { - return c.listPendingApprovals.CallUnary(ctx, req) -} - -// CreateDebugSnapshot calls session.v1.SessionService.CreateDebugSnapshot. -func (c *sessionServiceClient) CreateDebugSnapshot(ctx context.Context, req *connect.Request[v1.CreateDebugSnapshotRequest]) (*connect.Response[v1.CreateDebugSnapshotResponse], error) { - return c.createDebugSnapshot.CallUnary(ctx, req) -} - -// GetNotificationHistory calls session.v1.SessionService.GetNotificationHistory. -func (c *sessionServiceClient) GetNotificationHistory(ctx context.Context, req *connect.Request[v1.GetNotificationHistoryRequest]) (*connect.Response[v1.GetNotificationHistoryResponse], error) { - return c.getNotificationHistory.CallUnary(ctx, req) -} - -// MarkNotificationRead calls session.v1.SessionService.MarkNotificationRead. -func (c *sessionServiceClient) MarkNotificationRead(ctx context.Context, req *connect.Request[v1.MarkNotificationReadRequest]) (*connect.Response[v1.MarkNotificationReadResponse], error) { - return c.markNotificationRead.CallUnary(ctx, req) -} - -// ClearNotificationHistory calls session.v1.SessionService.ClearNotificationHistory. -func (c *sessionServiceClient) ClearNotificationHistory(ctx context.Context, req *connect.Request[v1.ClearNotificationHistoryRequest]) (*connect.Response[v1.ClearNotificationHistoryResponse], error) { - return c.clearNotificationHistory.CallUnary(ctx, req) -} - -// ListApprovalRules calls session.v1.SessionService.ListApprovalRules. -func (c *sessionServiceClient) ListApprovalRules(ctx context.Context, req *connect.Request[v1.ListApprovalRulesRequest]) (*connect.Response[v1.ListApprovalRulesResponse], error) { - return c.listApprovalRules.CallUnary(ctx, req) -} - -// UpsertApprovalRule calls session.v1.SessionService.UpsertApprovalRule. -func (c *sessionServiceClient) UpsertApprovalRule(ctx context.Context, req *connect.Request[v1.UpsertApprovalRuleRequest]) (*connect.Response[v1.UpsertApprovalRuleResponse], error) { - return c.upsertApprovalRule.CallUnary(ctx, req) -} - -// DeleteApprovalRule calls session.v1.SessionService.DeleteApprovalRule. -func (c *sessionServiceClient) DeleteApprovalRule(ctx context.Context, req *connect.Request[v1.DeleteApprovalRuleRequest]) (*connect.Response[v1.DeleteApprovalRuleResponse], error) { - return c.deleteApprovalRule.CallUnary(ctx, req) -} - -// GetApprovalAnalytics calls session.v1.SessionService.GetApprovalAnalytics. -func (c *sessionServiceClient) GetApprovalAnalytics(ctx context.Context, req *connect.Request[v1.GetApprovalAnalyticsRequest]) (*connect.Response[v1.GetApprovalAnalyticsResponse], error) { - return c.getApprovalAnalytics.CallUnary(ctx, req) -} - -// GetProgramAnalytics calls session.v1.SessionService.GetProgramAnalytics. -func (c *sessionServiceClient) GetProgramAnalytics(ctx context.Context, req *connect.Request[v1.GetProgramAnalyticsRequest]) (*connect.Response[v1.GetProgramAnalyticsResponse], error) { - return c.getProgramAnalytics.CallUnary(ctx, req) -} - -// GenerateSuggestedRule calls session.v1.SessionService.GenerateSuggestedRule. -func (c *sessionServiceClient) GenerateSuggestedRule(ctx context.Context, req *connect.Request[v1.GenerateSuggestedRuleRequest]) (*connect.Response[v1.GenerateSuggestedRuleResponse], error) { - return c.generateSuggestedRule.CallUnary(ctx, req) -} - -// ValidateRules calls session.v1.SessionService.ValidateRules. -func (c *sessionServiceClient) ValidateRules(ctx context.Context, req *connect.Request[v1.ValidateRulesRequest]) (*connect.Response[v1.ValidateRulesResponse], error) { - return c.validateRules.CallUnary(ctx, req) -} - -// ExportRules calls session.v1.SessionService.ExportRules. -func (c *sessionServiceClient) ExportRules(ctx context.Context, req *connect.Request[v1.ExportRulesRequest]) (*connect.Response[v1.ExportRulesResponse], error) { - return c.exportRules.CallUnary(ctx, req) -} - -// BulkUpsertRules calls session.v1.SessionService.BulkUpsertRules. -func (c *sessionServiceClient) BulkUpsertRules(ctx context.Context, req *connect.Request[v1.BulkUpsertRulesRequest]) (*connect.Response[v1.BulkUpsertRulesResponse], error) { - return c.bulkUpsertRules.CallUnary(ctx, req) -} - -// GetConfigFileRules calls session.v1.SessionService.GetConfigFileRules. -func (c *sessionServiceClient) GetConfigFileRules(ctx context.Context, req *connect.Request[v1.GetConfigFileRulesRequest]) (*connect.Response[v1.GetConfigFileRulesResponse], error) { - return c.getConfigFileRules.CallUnary(ctx, req) -} - -// SaveRulesToConfigFile calls session.v1.SessionService.SaveRulesToConfigFile. -func (c *sessionServiceClient) SaveRulesToConfigFile(ctx context.Context, req *connect.Request[v1.SaveRulesToConfigFileRequest]) (*connect.Response[v1.SaveRulesToConfigFileResponse], error) { - return c.saveRulesToConfigFile.CallUnary(ctx, req) -} - -// ListDatabases calls session.v1.SessionService.ListDatabases. -func (c *sessionServiceClient) ListDatabases(ctx context.Context, req *connect.Request[v1.ListDatabasesRequest]) (*connect.Response[v1.ListDatabasesResponse], error) { - return c.listDatabases.CallUnary(ctx, req) -} - -// GetCurrentDatabase calls session.v1.SessionService.GetCurrentDatabase. -func (c *sessionServiceClient) GetCurrentDatabase(ctx context.Context, req *connect.Request[v1.GetCurrentDatabaseRequest]) (*connect.Response[v1.GetCurrentDatabaseResponse], error) { - return c.getCurrentDatabase.CallUnary(ctx, req) -} - -// SwitchDatabase calls session.v1.SessionService.SwitchDatabase. -func (c *sessionServiceClient) SwitchDatabase(ctx context.Context, req *connect.Request[v1.SwitchDatabaseRequest]) (*connect.Response[v1.SwitchDatabaseResponse], error) { - return c.switchDatabase.CallUnary(ctx, req) -} - -// MergeDatabase calls session.v1.SessionService.MergeDatabase. -func (c *sessionServiceClient) MergeDatabase(ctx context.Context, req *connect.Request[v1.MergeDatabaseRequest]) (*connect.Response[v1.MergeDatabaseResponse], error) { - return c.mergeDatabase.CallUnary(ctx, req) -} - -// CreateCheckpoint calls session.v1.SessionService.CreateCheckpoint. -func (c *sessionServiceClient) CreateCheckpoint(ctx context.Context, req *connect.Request[v1.CreateCheckpointRequest]) (*connect.Response[v1.CreateCheckpointResponse], error) { - return c.createCheckpoint.CallUnary(ctx, req) -} - -// ListCheckpoints calls session.v1.SessionService.ListCheckpoints. -func (c *sessionServiceClient) ListCheckpoints(ctx context.Context, req *connect.Request[v1.ListCheckpointsRequest]) (*connect.Response[v1.ListCheckpointsResponse], error) { - return c.listCheckpoints.CallUnary(ctx, req) -} - -// ForkSession calls session.v1.SessionService.ForkSession. -func (c *sessionServiceClient) ForkSession(ctx context.Context, req *connect.Request[v1.ForkSessionRequest]) (*connect.Response[v1.ForkSessionResponse], error) { - return c.forkSession.CallUnary(ctx, req) -} - -// ClearConversationState calls session.v1.SessionService.ClearConversationState. -func (c *sessionServiceClient) ClearConversationState(ctx context.Context, req *connect.Request[v1.ClearConversationStateRequest]) (*connect.Response[v1.ClearConversationStateResponse], error) { - return c.clearConversationState.CallUnary(ctx, req) -} - -// ListFiles calls session.v1.SessionService.ListFiles. -func (c *sessionServiceClient) ListFiles(ctx context.Context, req *connect.Request[v1.ListFilesRequest]) (*connect.Response[v1.ListFilesResponse], error) { - return c.listFiles.CallUnary(ctx, req) -} - -// GetFileContent calls session.v1.SessionService.GetFileContent. -func (c *sessionServiceClient) GetFileContent(ctx context.Context, req *connect.Request[v1.GetFileContentRequest]) (*connect.Response[v1.GetFileContentResponse], error) { - return c.getFileContent.CallUnary(ctx, req) -} - -// SearchFiles calls session.v1.SessionService.SearchFiles. -func (c *sessionServiceClient) SearchFiles(ctx context.Context, req *connect.Request[v1.SearchFilesRequest]) (*connect.Response[v1.SearchFilesResponse], error) { - return c.searchFiles.CallUnary(ctx, req) -} - -// ListPathCompletions calls session.v1.SessionService.ListPathCompletions. -func (c *sessionServiceClient) ListPathCompletions(ctx context.Context, req *connect.Request[v1.ListPathCompletionsRequest]) (*connect.Response[v1.ListPathCompletionsResponse], error) { - return c.listPathCompletions.CallUnary(ctx, req) -} - -// GetSessionDefaults calls session.v1.SessionService.GetSessionDefaults. -func (c *sessionServiceClient) GetSessionDefaults(ctx context.Context, req *connect.Request[v1.GetSessionDefaultsRequest]) (*connect.Response[v1.GetSessionDefaultsResponse], error) { - return c.getSessionDefaults.CallUnary(ctx, req) -} - -// ResolveDefaults calls session.v1.SessionService.ResolveDefaults. -func (c *sessionServiceClient) ResolveDefaults(ctx context.Context, req *connect.Request[v1.ResolveDefaultsRequest]) (*connect.Response[v1.ResolveDefaultsResponse], error) { - return c.resolveDefaults.CallUnary(ctx, req) -} - -// PreviewDestinationPath calls session.v1.SessionService.PreviewDestinationPath. -func (c *sessionServiceClient) PreviewDestinationPath(ctx context.Context, req *connect.Request[v1.PreviewDestinationPathRequest]) (*connect.Response[v1.PreviewDestinationPathResponse], error) { - return c.previewDestinationPath.CallUnary(ctx, req) -} - -// UpdateGlobalDefaults calls session.v1.SessionService.UpdateGlobalDefaults. -func (c *sessionServiceClient) UpdateGlobalDefaults(ctx context.Context, req *connect.Request[v1.UpdateGlobalDefaultsRequest]) (*connect.Response[v1.UpdateGlobalDefaultsResponse], error) { - return c.updateGlobalDefaults.CallUnary(ctx, req) -} - -// UpsertProfile calls session.v1.SessionService.UpsertProfile. -func (c *sessionServiceClient) UpsertProfile(ctx context.Context, req *connect.Request[v1.UpsertProfileRequest]) (*connect.Response[v1.UpsertProfileResponse], error) { - return c.upsertProfile.CallUnary(ctx, req) -} - -// DeleteProfile calls session.v1.SessionService.DeleteProfile. -func (c *sessionServiceClient) DeleteProfile(ctx context.Context, req *connect.Request[v1.DeleteProfileRequest]) (*connect.Response[v1.DeleteProfileResponse], error) { - return c.deleteProfile.CallUnary(ctx, req) -} - -// UpsertDirectoryRule calls session.v1.SessionService.UpsertDirectoryRule. -func (c *sessionServiceClient) UpsertDirectoryRule(ctx context.Context, req *connect.Request[v1.UpsertDirectoryRuleRequest]) (*connect.Response[v1.UpsertDirectoryRuleResponse], error) { - return c.upsertDirectoryRule.CallUnary(ctx, req) -} - -// DeleteDirectoryRule calls session.v1.SessionService.DeleteDirectoryRule. -func (c *sessionServiceClient) DeleteDirectoryRule(ctx context.Context, req *connect.Request[v1.DeleteDirectoryRuleRequest]) (*connect.Response[v1.DeleteDirectoryRuleResponse], error) { - return c.deleteDirectoryRule.CallUnary(ctx, req) -} - -// ListWorktrees calls session.v1.SessionService.ListWorktrees. -func (c *sessionServiceClient) ListWorktrees(ctx context.Context, req *connect.Request[v1.ListWorktreesRequest]) (*connect.Response[v1.ListWorktreesResponse], error) { - return c.listWorktrees.CallUnary(ctx, req) -} - -// ListPromptHistory calls session.v1.SessionService.ListPromptHistory. -func (c *sessionServiceClient) ListPromptHistory(ctx context.Context, req *connect.Request[v1.ListPromptHistoryRequest]) (*connect.Response[v1.ListPromptHistoryResponse], error) { - return c.listPromptHistory.CallUnary(ctx, req) -} - -// DeletePromptHistory calls session.v1.SessionService.DeletePromptHistory. -func (c *sessionServiceClient) DeletePromptHistory(ctx context.Context, req *connect.Request[v1.DeletePromptHistoryRequest]) (*connect.Response[v1.DeletePromptHistoryResponse], error) { - return c.deletePromptHistory.CallUnary(ctx, req) -} - -// BatchCreateSessions calls session.v1.SessionService.BatchCreateSessions. -func (c *sessionServiceClient) BatchCreateSessions(ctx context.Context, req *connect.Request[v1.BatchCreateSessionsRequest]) (*connect.Response[v1.BatchCreateSessionsResponse], error) { - return c.batchCreateSessions.CallUnary(ctx, req) -} - -// RunOneShot calls session.v1.SessionService.RunOneShot. -func (c *sessionServiceClient) RunOneShot(ctx context.Context, req *connect.Request[v1.RunOneShotRequest]) (*connect.Response[v1.RunOneShotResponse], error) { - return c.runOneShot.CallUnary(ctx, req) -} - -// CreateProject calls session.v1.SessionService.CreateProject. -func (c *sessionServiceClient) CreateProject(ctx context.Context, req *connect.Request[v1.CreateProjectRequest]) (*connect.Response[v1.CreateProjectResponse], error) { - return c.createProject.CallUnary(ctx, req) -} - -// ListProjects calls session.v1.SessionService.ListProjects. -func (c *sessionServiceClient) ListProjects(ctx context.Context, req *connect.Request[v1.ListProjectsRequest]) (*connect.Response[v1.ListProjectsResponse], error) { - return c.listProjects.CallUnary(ctx, req) -} - -// UpdateProject calls session.v1.SessionService.UpdateProject. -func (c *sessionServiceClient) UpdateProject(ctx context.Context, req *connect.Request[v1.UpdateProjectRequest]) (*connect.Response[v1.UpdateProjectResponse], error) { - return c.updateProject.CallUnary(ctx, req) -} - -// DeleteProject calls session.v1.SessionService.DeleteProject. -func (c *sessionServiceClient) DeleteProject(ctx context.Context, req *connect.Request[v1.DeleteProjectRequest]) (*connect.Response[v1.DeleteProjectResponse], error) { - return c.deleteProject.CallUnary(ctx, req) -} - -// AssignSessionsToProject calls session.v1.SessionService.AssignSessionsToProject. -func (c *sessionServiceClient) AssignSessionsToProject(ctx context.Context, req *connect.Request[v1.AssignSessionsToProjectRequest]) (*connect.Response[v1.AssignSessionsToProjectResponse], error) { - return c.assignSessionsToProject.CallUnary(ctx, req) -} - -// ListBranches calls session.v1.SessionService.ListBranches. -func (c *sessionServiceClient) ListBranches(ctx context.Context, req *connect.Request[v1.ListBranchesRequest]) (*connect.Response[v1.ListBranchesResponse], error) { - return c.listBranches.CallUnary(ctx, req) -} - -// GetTerminalSnapshot calls session.v1.SessionService.GetTerminalSnapshot. -func (c *sessionServiceClient) GetTerminalSnapshot(ctx context.Context, req *connect.Request[v1.GetTerminalSnapshotRequest]) (*connect.Response[v1.GetTerminalSnapshotResponse], error) { - return c.getTerminalSnapshot.CallUnary(ctx, req) -} - -// WriteToSession calls session.v1.SessionService.WriteToSession. -func (c *sessionServiceClient) WriteToSession(ctx context.Context, req *connect.Request[v1.WriteToSessionRequest]) (*connect.Response[v1.WriteToSessionResponse], error) { - return c.writeToSession.CallUnary(ctx, req) -} - -// LogClientEvents calls session.v1.SessionService.LogClientEvents. -func (c *sessionServiceClient) LogClientEvents(ctx context.Context, req *connect.Request[v1.LogClientEventsRequest]) (*connect.Response[v1.LogClientEventsResponse], error) { - return c.logClientEvents.CallUnary(ctx, req) -} - -// ListErrors calls session.v1.SessionService.ListErrors. -func (c *sessionServiceClient) ListErrors(ctx context.Context, req *connect.Request[v1.ListErrorsRequest]) (*connect.Response[v1.ListErrorsResponse], error) { - return c.listErrors.CallUnary(ctx, req) -} - -// AcknowledgeError calls session.v1.SessionService.AcknowledgeError. -func (c *sessionServiceClient) AcknowledgeError(ctx context.Context, req *connect.Request[v1.AcknowledgeErrorRequest]) (*connect.Response[v1.AcknowledgeErrorResponse], error) { - return c.acknowledgeError.CallUnary(ctx, req) -} - -// GetFeatureFlags calls session.v1.SessionService.GetFeatureFlags. -func (c *sessionServiceClient) GetFeatureFlags(ctx context.Context, req *connect.Request[v1.GetFeatureFlagsRequest]) (*connect.Response[v1.GetFeatureFlagsResponse], error) { - return c.getFeatureFlags.CallUnary(ctx, req) -} - -// UpdateFeatureFlag calls session.v1.SessionService.UpdateFeatureFlag. -func (c *sessionServiceClient) UpdateFeatureFlag(ctx context.Context, req *connect.Request[v1.UpdateFeatureFlagRequest]) (*connect.Response[v1.UpdateFeatureFlagResponse], error) { - return c.updateFeatureFlag.CallUnary(ctx, req) -} - -// QueryEscapeAnalytics calls session.v1.SessionService.QueryEscapeAnalytics. -func (c *sessionServiceClient) QueryEscapeAnalytics(ctx context.Context, req *connect.Request[v1.QueryEscapeAnalyticsRequest]) (*connect.Response[v1.QueryEscapeAnalyticsResponse], error) { - return c.queryEscapeAnalytics.CallUnary(ctx, req) -} - -// GetEscapeAnalyticsSummary calls session.v1.SessionService.GetEscapeAnalyticsSummary. -func (c *sessionServiceClient) GetEscapeAnalyticsSummary(ctx context.Context, req *connect.Request[v1.GetEscapeAnalyticsSummaryRequest]) (*connect.Response[v1.GetEscapeAnalyticsSummaryResponse], error) { - return c.getEscapeAnalyticsSummary.CallUnary(ctx, req) -} - -// GetEscapeAnalyticsGlobalSummary calls session.v1.SessionService.GetEscapeAnalyticsGlobalSummary. -func (c *sessionServiceClient) GetEscapeAnalyticsGlobalSummary(ctx context.Context, req *connect.Request[v1.GetEscapeAnalyticsGlobalSummaryRequest]) (*connect.Response[v1.GetEscapeAnalyticsGlobalSummaryResponse], error) { - return c.getEscapeAnalyticsGlobalSummary.CallUnary(ctx, req) -} - -// HibernateSession calls session.v1.SessionService.HibernateSession. -func (c *sessionServiceClient) HibernateSession(ctx context.Context, req *connect.Request[v1.HibernateSessionRequest]) (*connect.Response[v1.HibernateSessionResponse], error) { - return c.hibernateSession.CallUnary(ctx, req) -} - -// ResumeHibernatedSession calls session.v1.SessionService.ResumeHibernatedSession. -func (c *sessionServiceClient) ResumeHibernatedSession(ctx context.Context, req *connect.Request[v1.ResumeHibernatedSessionRequest]) (*connect.Response[v1.ResumeHibernatedSessionResponse], error) { - return c.resumeHibernatedSession.CallUnary(ctx, req) -} - -// ResumeCrashedSession calls session.v1.SessionService.ResumeCrashedSession. -func (c *sessionServiceClient) ResumeCrashedSession(ctx context.Context, req *connect.Request[v1.ResumeCrashedSessionRequest]) (*connect.Response[v1.ResumeCrashedSessionResponse], error) { - return c.resumeCrashedSession.CallUnary(ctx, req) -} - -// SpawnShell calls session.v1.SessionService.SpawnShell. -func (c *sessionServiceClient) SpawnShell(ctx context.Context, req *connect.Request[v1.SpawnShellRequest]) (*connect.Response[v1.SpawnShellResponse], error) { - return c.spawnShell.CallUnary(ctx, req) -} - -// StopShell calls session.v1.SessionService.StopShell. -func (c *sessionServiceClient) StopShell(ctx context.Context, req *connect.Request[v1.StopShellRequest]) (*connect.Response[v1.StopShellResponse], error) { - return c.stopShell.CallUnary(ctx, req) -} - -// RestartShell calls session.v1.SessionService.RestartShell. -func (c *sessionServiceClient) RestartShell(ctx context.Context, req *connect.Request[v1.RestartShellRequest]) (*connect.Response[v1.RestartShellResponse], error) { - return c.restartShell.CallUnary(ctx, req) -} - -// ListShells calls session.v1.SessionService.ListShells. -func (c *sessionServiceClient) ListShells(ctx context.Context, req *connect.Request[v1.ListShellsRequest]) (*connect.Response[v1.ListShellsResponse], error) { - return c.listShells.CallUnary(ctx, req) -} - -// DeleteShell calls session.v1.SessionService.DeleteShell. -func (c *sessionServiceClient) DeleteShell(ctx context.Context, req *connect.Request[v1.DeleteShellRequest]) (*connect.Response[v1.DeleteShellResponse], error) { - return c.deleteShell.CallUnary(ctx, req) -} - -// CreateWorkflow calls session.v1.SessionService.CreateWorkflow. -func (c *sessionServiceClient) CreateWorkflow(ctx context.Context, req *connect.Request[v1.CreateWorkflowRequest]) (*connect.Response[v1.CreateWorkflowResponse], error) { - return c.createWorkflow.CallUnary(ctx, req) -} - -// UpdateWorkflow calls session.v1.SessionService.UpdateWorkflow. -func (c *sessionServiceClient) UpdateWorkflow(ctx context.Context, req *connect.Request[v1.UpdateWorkflowRequest]) (*connect.Response[v1.UpdateWorkflowResponse], error) { - return c.updateWorkflow.CallUnary(ctx, req) -} - -// DeleteWorkflow calls session.v1.SessionService.DeleteWorkflow. -func (c *sessionServiceClient) DeleteWorkflow(ctx context.Context, req *connect.Request[v1.DeleteWorkflowRequest]) (*connect.Response[v1.DeleteWorkflowResponse], error) { - return c.deleteWorkflow.CallUnary(ctx, req) -} - -// ListWorkflows calls session.v1.SessionService.ListWorkflows. -func (c *sessionServiceClient) ListWorkflows(ctx context.Context, req *connect.Request[v1.ListWorkflowsRequest]) (*connect.Response[v1.ListWorkflowsResponse], error) { - return c.listWorkflows.CallUnary(ctx, req) -} - -// RunWorkflow calls session.v1.SessionService.RunWorkflow. -func (c *sessionServiceClient) RunWorkflow(ctx context.Context, req *connect.Request[v1.RunWorkflowRequest]) (*connect.Response[v1.RunWorkflowResponse], error) { - return c.runWorkflow.CallUnary(ctx, req) -} - -// GetDetectionEvents calls session.v1.SessionService.GetDetectionEvents. -func (c *sessionServiceClient) GetDetectionEvents(ctx context.Context, req *connect.Request[v1.GetDetectionEventsRequest]) (*connect.Response[v1.GetDetectionEventsResponse], error) { - return c.getDetectionEvents.CallUnary(ctx, req) -} - -// ListSlashCommands calls session.v1.SessionService.ListSlashCommands. -func (c *sessionServiceClient) ListSlashCommands(ctx context.Context, req *connect.Request[v1.ListSlashCommandsRequest]) (*connect.Response[v1.ListSlashCommandsResponse], error) { - return c.listSlashCommands.CallUnary(ctx, req) -} - -// ListAliases calls session.v1.SessionService.ListAliases. -func (c *sessionServiceClient) ListAliases(ctx context.Context, req *connect.Request[v1.ListAliasesRequest]) (*connect.Response[v1.ListAliasesResponse], error) { - return c.listAliases.CallUnary(ctx, req) -} - -// UpsertAlias calls session.v1.SessionService.UpsertAlias. -func (c *sessionServiceClient) UpsertAlias(ctx context.Context, req *connect.Request[v1.UpsertAliasRequest]) (*connect.Response[v1.UpsertAliasResponse], error) { - return c.upsertAlias.CallUnary(ctx, req) -} - -// DeleteAlias calls session.v1.SessionService.DeleteAlias. -func (c *sessionServiceClient) DeleteAlias(ctx context.Context, req *connect.Request[v1.DeleteAliasRequest]) (*connect.Response[v1.DeleteAliasResponse], error) { - return c.deleteAlias.CallUnary(ctx, req) -} - -// ArchiveSession calls session.v1.SessionService.ArchiveSession. -func (c *sessionServiceClient) ArchiveSession(ctx context.Context, req *connect.Request[v1.ArchiveSessionRequest]) (*connect.Response[v1.ArchiveSessionResponse], error) { - return c.archiveSession.CallUnary(ctx, req) -} - -// UnarchiveSession calls session.v1.SessionService.UnarchiveSession. -func (c *sessionServiceClient) UnarchiveSession(ctx context.Context, req *connect.Request[v1.UnarchiveSessionRequest]) (*connect.Response[v1.UnarchiveSessionResponse], error) { - return c.unarchiveSession.CallUnary(ctx, req) -} - -// ArchiveWorkflowSessions calls session.v1.SessionService.ArchiveWorkflowSessions. -func (c *sessionServiceClient) ArchiveWorkflowSessions(ctx context.Context, req *connect.Request[v1.ArchiveWorkflowSessionsRequest]) (*connect.Response[v1.ArchiveWorkflowSessionsResponse], error) { - return c.archiveWorkflowSessions.CallUnary(ctx, req) -} - -// DeleteWorkflowFailedSessions calls session.v1.SessionService.DeleteWorkflowFailedSessions. -func (c *sessionServiceClient) DeleteWorkflowFailedSessions(ctx context.Context, req *connect.Request[v1.DeleteWorkflowFailedSessionsRequest]) (*connect.Response[v1.DeleteWorkflowFailedSessionsResponse], error) { - return c.deleteWorkflowFailedSessions.CallUnary(ctx, req) -} - -// GetProviderLimits calls session.v1.SessionService.GetProviderLimits. -func (c *sessionServiceClient) GetProviderLimits(ctx context.Context, req *connect.Request[v1.GetProviderLimitsRequest]) (*connect.Response[v1.GetProviderLimitsResponse], error) { - return c.getProviderLimits.CallUnary(ctx, req) -} - -// GetHookStatus calls session.v1.SessionService.GetHookStatus. -func (c *sessionServiceClient) GetHookStatus(ctx context.Context, req *connect.Request[v1.GetHookStatusRequest]) (*connect.Response[v1.GetHookStatusResponse], error) { - return c.getHookStatus.CallUnary(ctx, req) -} - -// InstallHooks calls session.v1.SessionService.InstallHooks. -func (c *sessionServiceClient) InstallHooks(ctx context.Context, req *connect.Request[v1.InstallHooksRequest]) (*connect.Response[v1.InstallHooksResponse], error) { - return c.installHooks.CallUnary(ctx, req) -} - -// SessionServiceHandler is an implementation of the session.v1.SessionService service. -type SessionServiceHandler interface { - // ListSessions returns all sessions with optional filtering. - ListSessions(context.Context, *connect.Request[v1.ListSessionsRequest]) (*connect.Response[v1.ListSessionsResponse], error) - // GetSession retrieves a specific session by ID. - GetSession(context.Context, *connect.Request[v1.GetSessionRequest]) (*connect.Response[v1.GetSessionResponse], error) - // CreateSession initializes a new AI agent session with tmux and git worktree. - CreateSession(context.Context, *connect.Request[v1.CreateSessionRequest]) (*connect.Response[v1.CreateSessionResponse], error) - // UpdateSession modifies session properties (pause/resume, category, etc). - UpdateSession(context.Context, *connect.Request[v1.UpdateSessionRequest]) (*connect.Response[v1.UpdateSessionResponse], error) - // DeleteSession stops and removes a session, cleaning up resources. - DeleteSession(context.Context, *connect.Request[v1.DeleteSessionRequest]) (*connect.Response[v1.DeleteSessionResponse], error) - // WatchSessions streams real-time session events (created/updated/deleted). - // Server-streaming RPC for live updates without polling. - WatchSessions(context.Context, *connect.Request[v1.WatchSessionsRequest], *connect.ServerStream[v1.SessionEvent]) error - // StreamTerminal provides bidirectional streaming for terminal I/O. - // Clients can send input and receive output from the tmux PTY. - StreamTerminal(context.Context, *connect.BidiStream[v1.TerminalData, v1.TerminalData]) error - // GetSessionDiff retrieves the current git diff for a session. - GetSessionDiff(context.Context, *connect.Request[v1.GetSessionDiffRequest]) (*connect.Response[v1.GetSessionDiffResponse], error) - // GetVCSStatus retrieves the current version control status for a session. - // Returns branch info, changed files, staged/unstaged status, and remote sync state. - GetVCSStatus(context.Context, *connect.Request[v1.GetVCSStatusRequest]) (*connect.Response[v1.GetVCSStatusResponse], error) - // GetReviewQueue returns sessions needing user attention with priority ordering. - GetReviewQueue(context.Context, *connect.Request[v1.GetReviewQueueRequest]) (*connect.Response[v1.GetReviewQueueResponse], error) - // AcknowledgeSession marks a session as acknowledged in the review queue. - // The session won't reappear in the queue until it receives an update. - AcknowledgeSession(context.Context, *connect.Request[v1.AcknowledgeSessionRequest]) (*connect.Response[v1.AcknowledgeSessionResponse], error) - // GetLogs retrieves application logs with optional filtering and search. - GetLogs(context.Context, *connect.Request[v1.GetLogsRequest]) (*connect.Response[v1.GetLogsResponse], error) - // WatchReviewQueue streams real-time review queue events (items added/removed/updated). - // Server-streaming RPC for live queue updates without polling. - WatchReviewQueue(context.Context, *connect.Request[v1.WatchReviewQueueRequest], *connect.ServerStream[v1.ReviewQueueEvent]) error - // LogUserInteraction logs a user interaction event for audit trail. - // Records user actions for compliance, debugging, and analytics. - LogUserInteraction(context.Context, *connect.Request[v1.LogUserInteractionRequest]) (*connect.Response[v1.LogUserInteractionResponse], error) - // GetClaudeConfig retrieves a Claude configuration file by name (CLAUDE.md, settings.json, agents.md). - GetClaudeConfig(context.Context, *connect.Request[v1.GetClaudeConfigRequest]) (*connect.Response[v1.GetClaudeConfigResponse], error) - // ListClaudeConfigs returns all configuration files in the ~/.claude directory. - ListClaudeConfigs(context.Context, *connect.Request[v1.ListClaudeConfigsRequest]) (*connect.Response[v1.ListClaudeConfigsResponse], error) - // UpdateClaudeConfig updates a Claude configuration file with atomic write and backup. - UpdateClaudeConfig(context.Context, *connect.Request[v1.UpdateClaudeConfigRequest]) (*connect.Response[v1.UpdateClaudeConfigResponse], error) - // ListClaudeHistory returns Claude session history entries with optional filtering. - ListClaudeHistory(context.Context, *connect.Request[v1.ListClaudeHistoryRequest]) (*connect.Response[v1.ListClaudeHistoryResponse], error) - // GetClaudeHistoryDetail retrieves detailed information for a specific history entry. - GetClaudeHistoryDetail(context.Context, *connect.Request[v1.GetClaudeHistoryDetailRequest]) (*connect.Response[v1.GetClaudeHistoryDetailResponse], error) - // GetClaudeHistoryMessages retrieves messages from a specific conversation. - GetClaudeHistoryMessages(context.Context, *connect.Request[v1.GetClaudeHistoryMessagesRequest]) (*connect.Response[v1.GetClaudeHistoryMessagesResponse], error) - // SearchClaudeHistory performs full-text search across Claude conversation history. - // Returns ranked results with contextual snippets showing where query terms appear. - SearchClaudeHistory(context.Context, *connect.Request[v1.SearchClaudeHistoryRequest]) (*connect.Response[v1.SearchClaudeHistoryResponse], error) - // PR Info and management RPCs - GetPRInfo(context.Context, *connect.Request[v1.GetPRInfoRequest]) (*connect.Response[v1.GetPRInfoResponse], error) - GetPRComments(context.Context, *connect.Request[v1.GetPRCommentsRequest]) (*connect.Response[v1.GetPRCommentsResponse], error) - PostPRComment(context.Context, *connect.Request[v1.PostPRCommentRequest]) (*connect.Response[v1.PostPRCommentResponse], error) - MergePR(context.Context, *connect.Request[v1.MergePRRequest]) (*connect.Response[v1.MergePRResponse], error) - ClosePR(context.Context, *connect.Request[v1.ClosePRRequest]) (*connect.Response[v1.ClosePRResponse], error) - // SendNotification allows tmux sessions to send notifications to the server. - // Notifications are broadcast to all connected clients (web UI and TUI). - // Requires session_id to identify the source session. - // Enforces localhost-only restriction and rate limiting (10/sec per session). - SendNotification(context.Context, *connect.Request[v1.SendNotificationRequest]) (*connect.Response[v1.SendNotificationResponse], error) - // FocusWindow activates a window for the specified application. - // Used for deep linking from notifications to bring the source IDE/terminal to front. - // Only works on macOS via AppleScript. Requires localhost origin. - FocusWindow(context.Context, *connect.Request[v1.FocusWindowRequest]) (*connect.Response[v1.FocusWindowResponse], error) - // RenameSession changes the title of an existing session. - // Validates that the new title doesn't conflict with existing sessions. - RenameSession(context.Context, *connect.Request[v1.RenameSessionRequest]) (*connect.Response[v1.RenameSessionResponse], error) - // RestartSession restarts a session by killing and recreating the tmux session. - // Optionally preserves terminal output for debugging purposes. - RestartSession(context.Context, *connect.Request[v1.RestartSessionRequest]) (*connect.Response[v1.RestartSessionResponse], error) - // GetWorkspaceInfo retrieves VCS and workspace information for a session. - // Returns VCS type (Git/JJ), current branch, revision, and uncommitted changes status. - GetWorkspaceInfo(context.Context, *connect.Request[v1.GetWorkspaceInfoRequest]) (*connect.Response[v1.GetWorkspaceInfoResponse], error) - // ListWorkspaceTargets returns available switch targets for a session. - // Includes bookmarks/branches, recent revisions, and worktrees. - ListWorkspaceTargets(context.Context, *connect.Request[v1.ListWorkspaceTargetsRequest]) (*connect.Response[v1.ListWorkspaceTargetsResponse], error) - // SwitchWorkspace switches a session's workspace to a different branch, revision, or worktree. - // The session is restarted with Claude --resume to preserve conversation context. - SwitchWorkspace(context.Context, *connect.Request[v1.SwitchWorkspaceRequest]) (*connect.Response[v1.SwitchWorkspaceResponse], error) - // ResolveApproval allows the web UI to approve or deny a pending Claude Code tool use request. - // This unblocks the HTTP hook handler that is waiting for the user's decision. - ResolveApproval(context.Context, *connect.Request[v1.ResolveApprovalRequest]) (*connect.Response[v1.ResolveApprovalResponse], error) - // ListPendingApprovals returns all pending Claude Code tool approval requests. - // Used by the web UI to populate the approval panel on initial load. - ListPendingApprovals(context.Context, *connect.Request[v1.ListPendingApprovalsRequest]) (*connect.Response[v1.ListPendingApprovalsResponse], error) - // CreateDebugSnapshot captures diagnostic information and writes it to a JSON file. - // Gathers session state, tmux info, pending approvals, and recent logs. - // The file is written to ~/.claude-squad/logs/debug-snapshot-{timestamp}.json. - CreateDebugSnapshot(context.Context, *connect.Request[v1.CreateDebugSnapshotRequest]) (*connect.Response[v1.CreateDebugSnapshotResponse], error) - // GetNotificationHistory returns persisted notification history with optional filtering. - // Notifications survive server restarts and page refreshes. - GetNotificationHistory(context.Context, *connect.Request[v1.GetNotificationHistoryRequest]) (*connect.Response[v1.GetNotificationHistoryResponse], error) - // MarkNotificationRead marks specific notifications as read. - // If notification_ids is empty, marks all notifications as read. - MarkNotificationRead(context.Context, *connect.Request[v1.MarkNotificationReadRequest]) (*connect.Response[v1.MarkNotificationReadResponse], error) - // ClearNotificationHistory removes notifications from the history. - // Optionally filters by timestamp to only clear older notifications. - ClearNotificationHistory(context.Context, *connect.Request[v1.ClearNotificationHistoryRequest]) (*connect.Response[v1.ClearNotificationHistoryResponse], error) - // ListApprovalRules returns all auto-approval rules (user, seed, and claude-settings). - ListApprovalRules(context.Context, *connect.Request[v1.ListApprovalRulesRequest]) (*connect.Response[v1.ListApprovalRulesResponse], error) - // UpsertApprovalRule creates or updates a user-defined auto-approval rule. - UpsertApprovalRule(context.Context, *connect.Request[v1.UpsertApprovalRuleRequest]) (*connect.Response[v1.UpsertApprovalRuleResponse], error) - // DeleteApprovalRule removes a user-defined auto-approval rule by ID. - DeleteApprovalRule(context.Context, *connect.Request[v1.DeleteApprovalRuleRequest]) (*connect.Response[v1.DeleteApprovalRuleResponse], error) - // GetApprovalAnalytics returns aggregated analytics for classification decisions. - GetApprovalAnalytics(context.Context, *connect.Request[v1.GetApprovalAnalyticsRequest]) (*connect.Response[v1.GetApprovalAnalyticsResponse], error) - // GetProgramAnalytics returns drill-down analytics for a single command program. - // Shows subcommand breakdown, recent examples, and daily trend for the time window. - GetProgramAnalytics(context.Context, *connect.Request[v1.GetProgramAnalyticsRequest]) (*connect.Response[v1.GetProgramAnalyticsResponse], error) - // GenerateSuggestedRule asks an AI agent to propose a new auto-approval rule. - // Analyzes existing rules, seed examples, and analytics data to produce a - // pre-filled SuggestedRuleProto. May take 5–30 seconds; callers must set a - // 60-second deadline via AbortController. - GenerateSuggestedRule(context.Context, *connect.Request[v1.GenerateSuggestedRuleRequest]) (*connect.Response[v1.GenerateSuggestedRuleResponse], error) - // ValidateRules parses and validates a YAML rules file without applying it. - // Returns per-rule results including any parse or validation errors. - ValidateRules(context.Context, *connect.Request[v1.ValidateRulesRequest]) (*connect.Response[v1.ValidateRulesResponse], error) - // ExportRules serializes user-authored rules to YAML format for download. - // Passing rule_ids limits export to those rules; empty = export all user rules. - ExportRules(context.Context, *connect.Request[v1.ExportRulesRequest]) (*connect.Response[v1.ExportRulesResponse], error) - // BulkUpsertRules creates or updates multiple user-defined rules in one call. - // Rebuilds the in-memory classifier exactly once after all rules are stored. - BulkUpsertRules(context.Context, *connect.Request[v1.BulkUpsertRulesRequest]) (*connect.Response[v1.BulkUpsertRulesResponse], error) - // GetConfigFileRules returns rules persisted in the shared YAML config file. - GetConfigFileRules(context.Context, *connect.Request[v1.GetConfigFileRulesRequest]) (*connect.Response[v1.GetConfigFileRulesResponse], error) - // SaveRulesToConfigFile exports one or more rules to the shared YAML config file. - SaveRulesToConfigFile(context.Context, *connect.Request[v1.SaveRulesToConfigFileRequest]) (*connect.Response[v1.SaveRulesToConfigFileResponse], error) - // ListDatabases returns all discovered workspace databases with metadata. - // Used by the workspace switcher UI to show available workspaces. - ListDatabases(context.Context, *connect.Request[v1.ListDatabasesRequest]) (*connect.Response[v1.ListDatabasesResponse], error) - // GetCurrentDatabase returns metadata for the currently active workspace database. - GetCurrentDatabase(context.Context, *connect.Request[v1.GetCurrentDatabaseRequest]) (*connect.Response[v1.GetCurrentDatabaseResponse], error) - // SwitchDatabase switches to a different workspace database and restarts the server. - // The server will exec-restart itself after writing a preference file. - // The client should poll until the server is back up, then reload. - SwitchDatabase(context.Context, *connect.Request[v1.SwitchDatabaseRequest]) (*connect.Response[v1.SwitchDatabaseResponse], error) - // MergeDatabase copies all sessions from a source workspace database into the - // currently active database. Skips sessions whose titles already exist. - // No server restart required — changes are immediately visible. - MergeDatabase(context.Context, *connect.Request[v1.MergeDatabaseRequest]) (*connect.Response[v1.MergeDatabaseResponse], error) - // CreateCheckpoint captures the current state of a session as a named bookmark. - // Records scrollback position, git HEAD SHA, and conversation UUID. - CreateCheckpoint(context.Context, *connect.Request[v1.CreateCheckpointRequest]) (*connect.Response[v1.CreateCheckpointResponse], error) - // ListCheckpoints returns all checkpoints for the specified session. - ListCheckpoints(context.Context, *connect.Request[v1.ListCheckpointsRequest]) (*connect.Response[v1.ListCheckpointsResponse], error) - // ForkSession creates a new independent session branched from a checkpoint. - // The fork receives truncated scrollback, conversation history, and a git worktree - // based on the checkpoint's recorded state. - ForkSession(context.Context, *connect.Request[v1.ForkSessionRequest]) (*connect.Response[v1.ForkSessionResponse], error) - // ClearConversationState removes the stored Claude conversation UUID from a session - // so that the next Resume starts a fresh conversation instead of attempting --resume - // with a stale or path-mismatched UUID. Useful when a session is stuck in a crash - // loop with "No conversation found" errors. - ClearConversationState(context.Context, *connect.Request[v1.ClearConversationStateRequest]) (*connect.Response[v1.ClearConversationStateResponse], error) - // ListFiles returns the immediate children of a directory in a session's worktree. - // Directories are returned first, then files, both alphabetically sorted. - // Gitignored entries are excluded unless include_ignored is true. - ListFiles(context.Context, *connect.Request[v1.ListFilesRequest]) (*connect.Response[v1.ListFilesResponse], error) - // GetFileContent retrieves the text content of a file in a session's worktree. - // Binary files return is_binary=true with empty content. - // Files over 10MB are rejected; files over 1MB are served truncated with is_truncated=true. - GetFileContent(context.Context, *connect.Request[v1.GetFileContentRequest]) (*connect.Response[v1.GetFileContentResponse], error) - // SearchFiles performs a recursive name-substring search in a session's worktree. - // Returns matching files with full relative paths for frontend tree reconstruction. - // Results are capped at max_results (default 500). Minimum query length is 2 characters. - SearchFiles(context.Context, *connect.Request[v1.SearchFilesRequest]) (*connect.Response[v1.SearchFilesResponse], error) - // ListPathCompletions returns filesystem directory entries matching a path prefix. - // Used by the Omnibar for real-time path completion and inline path validation. - ListPathCompletions(context.Context, *connect.Request[v1.ListPathCompletionsRequest]) (*connect.Response[v1.ListPathCompletionsResponse], error) - // GetSessionDefaults returns the full session defaults configuration (global, profiles, directory rules). - GetSessionDefaults(context.Context, *connect.Request[v1.GetSessionDefaultsRequest]) (*connect.Response[v1.GetSessionDefaultsResponse], error) - // ResolveDefaults merges all default layers for a given working directory and optional profile. - // Returns the resolved values plus source metadata for per-field badges in the UI. - ResolveDefaults(context.Context, *connect.Request[v1.ResolveDefaultsRequest]) (*connect.Response[v1.ResolveDefaultsResponse], error) - // PreviewDestinationPath computes where a session's checkout/worktree would land, - // without performing any git or filesystem mutation. Used by the Omnibar to show a - // live destination hint before the user submits session creation. - PreviewDestinationPath(context.Context, *connect.Request[v1.PreviewDestinationPathRequest]) (*connect.Response[v1.PreviewDestinationPathResponse], error) - // UpdateGlobalDefaults replaces the global default fields. - UpdateGlobalDefaults(context.Context, *connect.Request[v1.UpdateGlobalDefaultsRequest]) (*connect.Response[v1.UpdateGlobalDefaultsResponse], error) - // UpsertProfile creates or updates a named profile. - UpsertProfile(context.Context, *connect.Request[v1.UpsertProfileRequest]) (*connect.Response[v1.UpsertProfileResponse], error) - // DeleteProfile removes a named profile by name. - DeleteProfile(context.Context, *connect.Request[v1.DeleteProfileRequest]) (*connect.Response[v1.DeleteProfileResponse], error) - // UpsertDirectoryRule creates or updates a directory rule (matched by path). - UpsertDirectoryRule(context.Context, *connect.Request[v1.UpsertDirectoryRuleRequest]) (*connect.Response[v1.UpsertDirectoryRuleResponse], error) - // DeleteDirectoryRule removes a directory rule by path. - DeleteDirectoryRule(context.Context, *connect.Request[v1.DeleteDirectoryRuleRequest]) (*connect.Response[v1.DeleteDirectoryRuleResponse], error) - // ListWorktrees returns the git worktrees for a given repository path. - // Used by the Omnibar to populate the "Use Existing Worktree" dropdown. - ListWorktrees(context.Context, *connect.Request[v1.ListWorktreesRequest]) (*connect.Response[v1.ListWorktreesResponse], error) - // Prompt history RPCs (S1) - ListPromptHistory(context.Context, *connect.Request[v1.ListPromptHistoryRequest]) (*connect.Response[v1.ListPromptHistoryResponse], error) - DeletePromptHistory(context.Context, *connect.Request[v1.DeletePromptHistoryRequest]) (*connect.Response[v1.DeletePromptHistoryResponse], error) - // Batch session creation (S2) - BatchCreateSessions(context.Context, *connect.Request[v1.BatchCreateSessionsRequest]) (*connect.Response[v1.BatchCreateSessionsResponse], error) - // One-shot PR creation (S3) - RunOneShot(context.Context, *connect.Request[v1.RunOneShotRequest]) (*connect.Response[v1.RunOneShotResponse], error) - // Project CRUD (S4) - CreateProject(context.Context, *connect.Request[v1.CreateProjectRequest]) (*connect.Response[v1.CreateProjectResponse], error) - ListProjects(context.Context, *connect.Request[v1.ListProjectsRequest]) (*connect.Response[v1.ListProjectsResponse], error) - UpdateProject(context.Context, *connect.Request[v1.UpdateProjectRequest]) (*connect.Response[v1.UpdateProjectResponse], error) - DeleteProject(context.Context, *connect.Request[v1.DeleteProjectRequest]) (*connect.Response[v1.DeleteProjectResponse], error) - AssignSessionsToProject(context.Context, *connect.Request[v1.AssignSessionsToProjectRequest]) (*connect.Response[v1.AssignSessionsToProjectResponse], error) - // ListBranches returns the git branches for a given repository path. - // Used by the SessionWizard branch autocomplete field. - ListBranches(context.Context, *connect.Request[v1.ListBranchesRequest]) (*connect.Response[v1.ListBranchesResponse], error) - // GetTerminalSnapshot returns the last N lines of terminal output for a session - // without requiring an active stream. Suitable for session card previews. - GetTerminalSnapshot(context.Context, *connect.Request[v1.GetTerminalSnapshotRequest]) (*connect.Response[v1.GetTerminalSnapshotResponse], error) - // WriteToSession sends raw text input to a running session's PTY. - // Use for unblocking approval prompts or injecting ad-hoc input. - // Returns immediately after queueing the write; does not wait for output. - WriteToSession(context.Context, *connect.Request[v1.WriteToSessionRequest]) (*connect.Response[v1.WriteToSessionResponse], error) - // LogClientEvents receives batched browser console log entries from the web UI. - // Used for remote debugging of mobile browser sessions where DevTools are unavailable. - // Always returns an empty response; malformed entries are silently discarded. - LogClientEvents(context.Context, *connect.Request[v1.LogClientEventsRequest]) (*connect.Response[v1.LogClientEventsResponse], error) - // ListErrors returns persisted RPC error events ordered by last_seen descending. - // Unacknowledged errors are returned by default; set include_acknowledged=true - // to include all events. - ListErrors(context.Context, *connect.Request[v1.ListErrorsRequest]) (*connect.Response[v1.ListErrorsResponse], error) - // AcknowledgeError marks an error event as acknowledged so it no longer appears - // in the default (unacknowledged) listing. - AcknowledgeError(context.Context, *connect.Request[v1.AcknowledgeErrorRequest]) (*connect.Response[v1.AcknowledgeErrorResponse], error) - // GetFeatureFlags returns all known feature flags and their current state. - GetFeatureFlags(context.Context, *connect.Request[v1.GetFeatureFlagsRequest]) (*connect.Response[v1.GetFeatureFlagsResponse], error) - // UpdateFeatureFlag enables or disables a named feature flag. - UpdateFeatureFlag(context.Context, *connect.Request[v1.UpdateFeatureFlagRequest]) (*connect.Response[v1.UpdateFeatureFlagResponse], error) - // QueryEscapeAnalytics returns paginated escape event records for a session. - QueryEscapeAnalytics(context.Context, *connect.Request[v1.QueryEscapeAnalyticsRequest]) (*connect.Response[v1.QueryEscapeAnalyticsResponse], error) - // GetEscapeAnalyticsSummary returns aggregate escape sequence statistics for a session. - GetEscapeAnalyticsSummary(context.Context, *connect.Request[v1.GetEscapeAnalyticsSummaryRequest]) (*connect.Response[v1.GetEscapeAnalyticsSummaryResponse], error) - // GetEscapeAnalyticsGlobalSummary returns aggregate escape sequence statistics - // across all sessions, plus a per-session breakdown to spot outliers. - GetEscapeAnalyticsGlobalSummary(context.Context, *connect.Request[v1.GetEscapeAnalyticsGlobalSummaryRequest]) (*connect.Response[v1.GetEscapeAnalyticsGlobalSummaryResponse], error) - // HibernateSession checkpoints the session state, kills the AI process, and - // transitions the session to Hibernated status. - HibernateSession(context.Context, *connect.Request[v1.HibernateSessionRequest]) (*connect.Response[v1.HibernateSessionResponse], error) - // ResumeHibernatedSession re-launches the AI process for a Hibernated session, - // transitioning it back to Active status. - ResumeHibernatedSession(context.Context, *connect.Request[v1.ResumeHibernatedSessionRequest]) (*connect.Response[v1.ResumeHibernatedSessionResponse], error) - // ResumeCrashedSession re-launches the AI process for a Crashed session - // (dead tmux pane detected by SessionHealthChecker), transitioning it back - // to Active status. Threads --resume automatically when a conversation UUID - // is known. - ResumeCrashedSession(context.Context, *connect.Request[v1.ResumeCrashedSessionRequest]) (*connect.Response[v1.ResumeCrashedSessionResponse], error) - // SpawnShell creates and starts a new custom shell attached to a session. - // The shell runs as an independent sibling tmux session. - SpawnShell(context.Context, *connect.Request[v1.SpawnShellRequest]) (*connect.Response[v1.SpawnShellResponse], error) - // StopShell stops a running custom shell. - StopShell(context.Context, *connect.Request[v1.StopShellRequest]) (*connect.Response[v1.StopShellResponse], error) - // RestartShell stops a shell (if running) and relaunches it with the same command. - RestartShell(context.Context, *connect.Request[v1.RestartShellRequest]) (*connect.Response[v1.RestartShellResponse], error) - // ListShells returns all custom shells for a session, sorted by order_index. - ListShells(context.Context, *connect.Request[v1.ListShellsRequest]) (*connect.Response[v1.ListShellsResponse], error) - // DeleteShell stops a shell and removes it from storage. - DeleteShell(context.Context, *connect.Request[v1.DeleteShellRequest]) (*connect.Response[v1.DeleteShellResponse], error) - // CreateWorkflow creates a new workflow definition. - CreateWorkflow(context.Context, *connect.Request[v1.CreateWorkflowRequest]) (*connect.Response[v1.CreateWorkflowResponse], error) - // UpdateWorkflow modifies an existing workflow definition. - UpdateWorkflow(context.Context, *connect.Request[v1.UpdateWorkflowRequest]) (*connect.Response[v1.UpdateWorkflowResponse], error) - // DeleteWorkflow removes a workflow definition permanently. - DeleteWorkflow(context.Context, *connect.Request[v1.DeleteWorkflowRequest]) (*connect.Response[v1.DeleteWorkflowResponse], error) - // ListWorkflows returns all saved workflow definitions. - ListWorkflows(context.Context, *connect.Request[v1.ListWorkflowsRequest]) (*connect.Response[v1.ListWorkflowsResponse], error) - // RunWorkflow immediately fires a workflow (outside of cron schedule). - RunWorkflow(context.Context, *connect.Request[v1.RunWorkflowRequest]) (*connect.Response[v1.RunWorkflowResponse], error) - // GetDetectionEvents returns recent status-detection events for a session. - // Intended for debugging — surfaces which patterns matched (or didn't) per detection cycle. - GetDetectionEvents(context.Context, *connect.Request[v1.GetDetectionEventsRequest]) (*connect.Response[v1.GetDetectionEventsResponse], error) - // ListSlashCommands returns slash commands available in the given directory. - // Walks target_directory/.claude/commands/ (project) and ~/.claude/commands/ (user), - // merging both with a small set of built-in Claude Code commands. - ListSlashCommands(context.Context, *connect.Request[v1.ListSlashCommandsRequest]) (*connect.Response[v1.ListSlashCommandsResponse], error) - // ListAliases returns all configured alias presets from config.json. - ListAliases(context.Context, *connect.Request[v1.ListAliasesRequest]) (*connect.Response[v1.ListAliasesResponse], error) - // UpsertAlias creates or updates a named alias preset (matched by name). - UpsertAlias(context.Context, *connect.Request[v1.UpsertAliasRequest]) (*connect.Response[v1.UpsertAliasResponse], error) - // DeleteAlias removes an alias preset by name. - DeleteAlias(context.Context, *connect.Request[v1.DeleteAliasRequest]) (*connect.Response[v1.DeleteAliasResponse], error) - // ArchiveSession soft-archives a session by setting archived_at. - // Archived sessions are excluded from the default session list. - ArchiveSession(context.Context, *connect.Request[v1.ArchiveSessionRequest]) (*connect.Response[v1.ArchiveSessionResponse], error) - // UnarchiveSession clears archived_at, restoring the session to the default list. - UnarchiveSession(context.Context, *connect.Request[v1.UnarchiveSessionRequest]) (*connect.Response[v1.UnarchiveSessionResponse], error) - // ArchiveWorkflowSessions archives all non-active sessions for a given workflow. - // Active, Creating, and Paused sessions are silently skipped. - // Returns the count of sessions that were archived. - ArchiveWorkflowSessions(context.Context, *connect.Request[v1.ArchiveWorkflowSessionsRequest]) (*connect.Response[v1.ArchiveWorkflowSessionsResponse], error) - // DeleteWorkflowFailedSessions archives (soft-deletes) sessions that appear to have - // failed — specifically: Stopped sessions with no meaningful terminal output. - // Returns the count of sessions that were archived. - DeleteWorkflowFailedSessions(context.Context, *connect.Request[v1.DeleteWorkflowFailedSessionsRequest]) (*connect.Response[v1.DeleteWorkflowFailedSessionsResponse], error) - // GetProviderLimits returns the rate limit and usage details for a session. - GetProviderLimits(context.Context, *connect.Request[v1.GetProviderLimitsRequest]) (*connect.Response[v1.GetProviderLimitsResponse], error) - // GetHookStatus reports whether the global Claude Code hooks (rule enforcement - // and notifications) are installed in ~/.claude/settings.json. - // +api: hooks:status - GetHookStatus(context.Context, *connect.Request[v1.GetHookStatusRequest]) (*connect.Response[v1.GetHookStatusResponse], error) - // InstallHooks installs the requested global Claude Code hooks into - // ~/.claude/settings.json. Idempotent per hook. - // +api: hooks:install - InstallHooks(context.Context, *connect.Request[v1.InstallHooksRequest]) (*connect.Response[v1.InstallHooksResponse], error) -} - -// NewSessionServiceHandler builds an HTTP handler from the service implementation. It returns the -// path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewSessionServiceHandler(svc SessionServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - sessionServiceMethods := v1.File_session_v1_session_proto.Services().ByName("SessionService").Methods() - sessionServiceListSessionsHandler := connect.NewUnaryHandler( - SessionServiceListSessionsProcedure, - svc.ListSessions, - connect.WithSchema(sessionServiceMethods.ByName("ListSessions")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetSessionHandler := connect.NewUnaryHandler( - SessionServiceGetSessionProcedure, - svc.GetSession, - connect.WithSchema(sessionServiceMethods.ByName("GetSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceCreateSessionHandler := connect.NewUnaryHandler( - SessionServiceCreateSessionProcedure, - svc.CreateSession, - connect.WithSchema(sessionServiceMethods.ByName("CreateSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceUpdateSessionHandler := connect.NewUnaryHandler( - SessionServiceUpdateSessionProcedure, - svc.UpdateSession, - connect.WithSchema(sessionServiceMethods.ByName("UpdateSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceDeleteSessionHandler := connect.NewUnaryHandler( - SessionServiceDeleteSessionProcedure, - svc.DeleteSession, - connect.WithSchema(sessionServiceMethods.ByName("DeleteSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceWatchSessionsHandler := connect.NewServerStreamHandler( - SessionServiceWatchSessionsProcedure, - svc.WatchSessions, - connect.WithSchema(sessionServiceMethods.ByName("WatchSessions")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceStreamTerminalHandler := connect.NewBidiStreamHandler( - SessionServiceStreamTerminalProcedure, - svc.StreamTerminal, - connect.WithSchema(sessionServiceMethods.ByName("StreamTerminal")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetSessionDiffHandler := connect.NewUnaryHandler( - SessionServiceGetSessionDiffProcedure, - svc.GetSessionDiff, - connect.WithSchema(sessionServiceMethods.ByName("GetSessionDiff")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetVCSStatusHandler := connect.NewUnaryHandler( - SessionServiceGetVCSStatusProcedure, - svc.GetVCSStatus, - connect.WithSchema(sessionServiceMethods.ByName("GetVCSStatus")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetReviewQueueHandler := connect.NewUnaryHandler( - SessionServiceGetReviewQueueProcedure, - svc.GetReviewQueue, - connect.WithSchema(sessionServiceMethods.ByName("GetReviewQueue")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceAcknowledgeSessionHandler := connect.NewUnaryHandler( - SessionServiceAcknowledgeSessionProcedure, - svc.AcknowledgeSession, - connect.WithSchema(sessionServiceMethods.ByName("AcknowledgeSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetLogsHandler := connect.NewUnaryHandler( - SessionServiceGetLogsProcedure, - svc.GetLogs, - connect.WithSchema(sessionServiceMethods.ByName("GetLogs")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceWatchReviewQueueHandler := connect.NewServerStreamHandler( - SessionServiceWatchReviewQueueProcedure, - svc.WatchReviewQueue, - connect.WithSchema(sessionServiceMethods.ByName("WatchReviewQueue")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceLogUserInteractionHandler := connect.NewUnaryHandler( - SessionServiceLogUserInteractionProcedure, - svc.LogUserInteraction, - connect.WithSchema(sessionServiceMethods.ByName("LogUserInteraction")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetClaudeConfigHandler := connect.NewUnaryHandler( - SessionServiceGetClaudeConfigProcedure, - svc.GetClaudeConfig, - connect.WithSchema(sessionServiceMethods.ByName("GetClaudeConfig")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListClaudeConfigsHandler := connect.NewUnaryHandler( - SessionServiceListClaudeConfigsProcedure, - svc.ListClaudeConfigs, - connect.WithSchema(sessionServiceMethods.ByName("ListClaudeConfigs")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceUpdateClaudeConfigHandler := connect.NewUnaryHandler( - SessionServiceUpdateClaudeConfigProcedure, - svc.UpdateClaudeConfig, - connect.WithSchema(sessionServiceMethods.ByName("UpdateClaudeConfig")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListClaudeHistoryHandler := connect.NewUnaryHandler( - SessionServiceListClaudeHistoryProcedure, - svc.ListClaudeHistory, - connect.WithSchema(sessionServiceMethods.ByName("ListClaudeHistory")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetClaudeHistoryDetailHandler := connect.NewUnaryHandler( - SessionServiceGetClaudeHistoryDetailProcedure, - svc.GetClaudeHistoryDetail, - connect.WithSchema(sessionServiceMethods.ByName("GetClaudeHistoryDetail")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetClaudeHistoryMessagesHandler := connect.NewUnaryHandler( - SessionServiceGetClaudeHistoryMessagesProcedure, - svc.GetClaudeHistoryMessages, - connect.WithSchema(sessionServiceMethods.ByName("GetClaudeHistoryMessages")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceSearchClaudeHistoryHandler := connect.NewUnaryHandler( - SessionServiceSearchClaudeHistoryProcedure, - svc.SearchClaudeHistory, - connect.WithSchema(sessionServiceMethods.ByName("SearchClaudeHistory")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetPRInfoHandler := connect.NewUnaryHandler( - SessionServiceGetPRInfoProcedure, - svc.GetPRInfo, - connect.WithSchema(sessionServiceMethods.ByName("GetPRInfo")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetPRCommentsHandler := connect.NewUnaryHandler( - SessionServiceGetPRCommentsProcedure, - svc.GetPRComments, - connect.WithSchema(sessionServiceMethods.ByName("GetPRComments")), - connect.WithHandlerOptions(opts...), - ) - sessionServicePostPRCommentHandler := connect.NewUnaryHandler( - SessionServicePostPRCommentProcedure, - svc.PostPRComment, - connect.WithSchema(sessionServiceMethods.ByName("PostPRComment")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceMergePRHandler := connect.NewUnaryHandler( - SessionServiceMergePRProcedure, - svc.MergePR, - connect.WithSchema(sessionServiceMethods.ByName("MergePR")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceClosePRHandler := connect.NewUnaryHandler( - SessionServiceClosePRProcedure, - svc.ClosePR, - connect.WithSchema(sessionServiceMethods.ByName("ClosePR")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceSendNotificationHandler := connect.NewUnaryHandler( - SessionServiceSendNotificationProcedure, - svc.SendNotification, - connect.WithSchema(sessionServiceMethods.ByName("SendNotification")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceFocusWindowHandler := connect.NewUnaryHandler( - SessionServiceFocusWindowProcedure, - svc.FocusWindow, - connect.WithSchema(sessionServiceMethods.ByName("FocusWindow")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceRenameSessionHandler := connect.NewUnaryHandler( - SessionServiceRenameSessionProcedure, - svc.RenameSession, - connect.WithSchema(sessionServiceMethods.ByName("RenameSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceRestartSessionHandler := connect.NewUnaryHandler( - SessionServiceRestartSessionProcedure, - svc.RestartSession, - connect.WithSchema(sessionServiceMethods.ByName("RestartSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetWorkspaceInfoHandler := connect.NewUnaryHandler( - SessionServiceGetWorkspaceInfoProcedure, - svc.GetWorkspaceInfo, - connect.WithSchema(sessionServiceMethods.ByName("GetWorkspaceInfo")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListWorkspaceTargetsHandler := connect.NewUnaryHandler( - SessionServiceListWorkspaceTargetsProcedure, - svc.ListWorkspaceTargets, - connect.WithSchema(sessionServiceMethods.ByName("ListWorkspaceTargets")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceSwitchWorkspaceHandler := connect.NewUnaryHandler( - SessionServiceSwitchWorkspaceProcedure, - svc.SwitchWorkspace, - connect.WithSchema(sessionServiceMethods.ByName("SwitchWorkspace")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceResolveApprovalHandler := connect.NewUnaryHandler( - SessionServiceResolveApprovalProcedure, - svc.ResolveApproval, - connect.WithSchema(sessionServiceMethods.ByName("ResolveApproval")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListPendingApprovalsHandler := connect.NewUnaryHandler( - SessionServiceListPendingApprovalsProcedure, - svc.ListPendingApprovals, - connect.WithSchema(sessionServiceMethods.ByName("ListPendingApprovals")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceCreateDebugSnapshotHandler := connect.NewUnaryHandler( - SessionServiceCreateDebugSnapshotProcedure, - svc.CreateDebugSnapshot, - connect.WithSchema(sessionServiceMethods.ByName("CreateDebugSnapshot")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetNotificationHistoryHandler := connect.NewUnaryHandler( - SessionServiceGetNotificationHistoryProcedure, - svc.GetNotificationHistory, - connect.WithSchema(sessionServiceMethods.ByName("GetNotificationHistory")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceMarkNotificationReadHandler := connect.NewUnaryHandler( - SessionServiceMarkNotificationReadProcedure, - svc.MarkNotificationRead, - connect.WithSchema(sessionServiceMethods.ByName("MarkNotificationRead")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceClearNotificationHistoryHandler := connect.NewUnaryHandler( - SessionServiceClearNotificationHistoryProcedure, - svc.ClearNotificationHistory, - connect.WithSchema(sessionServiceMethods.ByName("ClearNotificationHistory")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListApprovalRulesHandler := connect.NewUnaryHandler( - SessionServiceListApprovalRulesProcedure, - svc.ListApprovalRules, - connect.WithSchema(sessionServiceMethods.ByName("ListApprovalRules")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceUpsertApprovalRuleHandler := connect.NewUnaryHandler( - SessionServiceUpsertApprovalRuleProcedure, - svc.UpsertApprovalRule, - connect.WithSchema(sessionServiceMethods.ByName("UpsertApprovalRule")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceDeleteApprovalRuleHandler := connect.NewUnaryHandler( - SessionServiceDeleteApprovalRuleProcedure, - svc.DeleteApprovalRule, - connect.WithSchema(sessionServiceMethods.ByName("DeleteApprovalRule")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetApprovalAnalyticsHandler := connect.NewUnaryHandler( - SessionServiceGetApprovalAnalyticsProcedure, - svc.GetApprovalAnalytics, - connect.WithSchema(sessionServiceMethods.ByName("GetApprovalAnalytics")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetProgramAnalyticsHandler := connect.NewUnaryHandler( - SessionServiceGetProgramAnalyticsProcedure, - svc.GetProgramAnalytics, - connect.WithSchema(sessionServiceMethods.ByName("GetProgramAnalytics")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGenerateSuggestedRuleHandler := connect.NewUnaryHandler( - SessionServiceGenerateSuggestedRuleProcedure, - svc.GenerateSuggestedRule, - connect.WithSchema(sessionServiceMethods.ByName("GenerateSuggestedRule")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceValidateRulesHandler := connect.NewUnaryHandler( - SessionServiceValidateRulesProcedure, - svc.ValidateRules, - connect.WithSchema(sessionServiceMethods.ByName("ValidateRules")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceExportRulesHandler := connect.NewUnaryHandler( - SessionServiceExportRulesProcedure, - svc.ExportRules, - connect.WithSchema(sessionServiceMethods.ByName("ExportRules")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceBulkUpsertRulesHandler := connect.NewUnaryHandler( - SessionServiceBulkUpsertRulesProcedure, - svc.BulkUpsertRules, - connect.WithSchema(sessionServiceMethods.ByName("BulkUpsertRules")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetConfigFileRulesHandler := connect.NewUnaryHandler( - SessionServiceGetConfigFileRulesProcedure, - svc.GetConfigFileRules, - connect.WithSchema(sessionServiceMethods.ByName("GetConfigFileRules")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceSaveRulesToConfigFileHandler := connect.NewUnaryHandler( - SessionServiceSaveRulesToConfigFileProcedure, - svc.SaveRulesToConfigFile, - connect.WithSchema(sessionServiceMethods.ByName("SaveRulesToConfigFile")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListDatabasesHandler := connect.NewUnaryHandler( - SessionServiceListDatabasesProcedure, - svc.ListDatabases, - connect.WithSchema(sessionServiceMethods.ByName("ListDatabases")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetCurrentDatabaseHandler := connect.NewUnaryHandler( - SessionServiceGetCurrentDatabaseProcedure, - svc.GetCurrentDatabase, - connect.WithSchema(sessionServiceMethods.ByName("GetCurrentDatabase")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceSwitchDatabaseHandler := connect.NewUnaryHandler( - SessionServiceSwitchDatabaseProcedure, - svc.SwitchDatabase, - connect.WithSchema(sessionServiceMethods.ByName("SwitchDatabase")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceMergeDatabaseHandler := connect.NewUnaryHandler( - SessionServiceMergeDatabaseProcedure, - svc.MergeDatabase, - connect.WithSchema(sessionServiceMethods.ByName("MergeDatabase")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceCreateCheckpointHandler := connect.NewUnaryHandler( - SessionServiceCreateCheckpointProcedure, - svc.CreateCheckpoint, - connect.WithSchema(sessionServiceMethods.ByName("CreateCheckpoint")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListCheckpointsHandler := connect.NewUnaryHandler( - SessionServiceListCheckpointsProcedure, - svc.ListCheckpoints, - connect.WithSchema(sessionServiceMethods.ByName("ListCheckpoints")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceForkSessionHandler := connect.NewUnaryHandler( - SessionServiceForkSessionProcedure, - svc.ForkSession, - connect.WithSchema(sessionServiceMethods.ByName("ForkSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceClearConversationStateHandler := connect.NewUnaryHandler( - SessionServiceClearConversationStateProcedure, - svc.ClearConversationState, - connect.WithSchema(sessionServiceMethods.ByName("ClearConversationState")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListFilesHandler := connect.NewUnaryHandler( - SessionServiceListFilesProcedure, - svc.ListFiles, - connect.WithSchema(sessionServiceMethods.ByName("ListFiles")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetFileContentHandler := connect.NewUnaryHandler( - SessionServiceGetFileContentProcedure, - svc.GetFileContent, - connect.WithSchema(sessionServiceMethods.ByName("GetFileContent")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceSearchFilesHandler := connect.NewUnaryHandler( - SessionServiceSearchFilesProcedure, - svc.SearchFiles, - connect.WithSchema(sessionServiceMethods.ByName("SearchFiles")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListPathCompletionsHandler := connect.NewUnaryHandler( - SessionServiceListPathCompletionsProcedure, - svc.ListPathCompletions, - connect.WithSchema(sessionServiceMethods.ByName("ListPathCompletions")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetSessionDefaultsHandler := connect.NewUnaryHandler( - SessionServiceGetSessionDefaultsProcedure, - svc.GetSessionDefaults, - connect.WithSchema(sessionServiceMethods.ByName("GetSessionDefaults")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceResolveDefaultsHandler := connect.NewUnaryHandler( - SessionServiceResolveDefaultsProcedure, - svc.ResolveDefaults, - connect.WithSchema(sessionServiceMethods.ByName("ResolveDefaults")), - connect.WithHandlerOptions(opts...), - ) - sessionServicePreviewDestinationPathHandler := connect.NewUnaryHandler( - SessionServicePreviewDestinationPathProcedure, - svc.PreviewDestinationPath, - connect.WithSchema(sessionServiceMethods.ByName("PreviewDestinationPath")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceUpdateGlobalDefaultsHandler := connect.NewUnaryHandler( - SessionServiceUpdateGlobalDefaultsProcedure, - svc.UpdateGlobalDefaults, - connect.WithSchema(sessionServiceMethods.ByName("UpdateGlobalDefaults")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceUpsertProfileHandler := connect.NewUnaryHandler( - SessionServiceUpsertProfileProcedure, - svc.UpsertProfile, - connect.WithSchema(sessionServiceMethods.ByName("UpsertProfile")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceDeleteProfileHandler := connect.NewUnaryHandler( - SessionServiceDeleteProfileProcedure, - svc.DeleteProfile, - connect.WithSchema(sessionServiceMethods.ByName("DeleteProfile")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceUpsertDirectoryRuleHandler := connect.NewUnaryHandler( - SessionServiceUpsertDirectoryRuleProcedure, - svc.UpsertDirectoryRule, - connect.WithSchema(sessionServiceMethods.ByName("UpsertDirectoryRule")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceDeleteDirectoryRuleHandler := connect.NewUnaryHandler( - SessionServiceDeleteDirectoryRuleProcedure, - svc.DeleteDirectoryRule, - connect.WithSchema(sessionServiceMethods.ByName("DeleteDirectoryRule")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListWorktreesHandler := connect.NewUnaryHandler( - SessionServiceListWorktreesProcedure, - svc.ListWorktrees, - connect.WithSchema(sessionServiceMethods.ByName("ListWorktrees")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListPromptHistoryHandler := connect.NewUnaryHandler( - SessionServiceListPromptHistoryProcedure, - svc.ListPromptHistory, - connect.WithSchema(sessionServiceMethods.ByName("ListPromptHistory")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceDeletePromptHistoryHandler := connect.NewUnaryHandler( - SessionServiceDeletePromptHistoryProcedure, - svc.DeletePromptHistory, - connect.WithSchema(sessionServiceMethods.ByName("DeletePromptHistory")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceBatchCreateSessionsHandler := connect.NewUnaryHandler( - SessionServiceBatchCreateSessionsProcedure, - svc.BatchCreateSessions, - connect.WithSchema(sessionServiceMethods.ByName("BatchCreateSessions")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceRunOneShotHandler := connect.NewUnaryHandler( - SessionServiceRunOneShotProcedure, - svc.RunOneShot, - connect.WithSchema(sessionServiceMethods.ByName("RunOneShot")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceCreateProjectHandler := connect.NewUnaryHandler( - SessionServiceCreateProjectProcedure, - svc.CreateProject, - connect.WithSchema(sessionServiceMethods.ByName("CreateProject")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListProjectsHandler := connect.NewUnaryHandler( - SessionServiceListProjectsProcedure, - svc.ListProjects, - connect.WithSchema(sessionServiceMethods.ByName("ListProjects")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceUpdateProjectHandler := connect.NewUnaryHandler( - SessionServiceUpdateProjectProcedure, - svc.UpdateProject, - connect.WithSchema(sessionServiceMethods.ByName("UpdateProject")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceDeleteProjectHandler := connect.NewUnaryHandler( - SessionServiceDeleteProjectProcedure, - svc.DeleteProject, - connect.WithSchema(sessionServiceMethods.ByName("DeleteProject")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceAssignSessionsToProjectHandler := connect.NewUnaryHandler( - SessionServiceAssignSessionsToProjectProcedure, - svc.AssignSessionsToProject, - connect.WithSchema(sessionServiceMethods.ByName("AssignSessionsToProject")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListBranchesHandler := connect.NewUnaryHandler( - SessionServiceListBranchesProcedure, - svc.ListBranches, - connect.WithSchema(sessionServiceMethods.ByName("ListBranches")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetTerminalSnapshotHandler := connect.NewUnaryHandler( - SessionServiceGetTerminalSnapshotProcedure, - svc.GetTerminalSnapshot, - connect.WithSchema(sessionServiceMethods.ByName("GetTerminalSnapshot")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceWriteToSessionHandler := connect.NewUnaryHandler( - SessionServiceWriteToSessionProcedure, - svc.WriteToSession, - connect.WithSchema(sessionServiceMethods.ByName("WriteToSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceLogClientEventsHandler := connect.NewUnaryHandler( - SessionServiceLogClientEventsProcedure, - svc.LogClientEvents, - connect.WithSchema(sessionServiceMethods.ByName("LogClientEvents")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListErrorsHandler := connect.NewUnaryHandler( - SessionServiceListErrorsProcedure, - svc.ListErrors, - connect.WithSchema(sessionServiceMethods.ByName("ListErrors")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceAcknowledgeErrorHandler := connect.NewUnaryHandler( - SessionServiceAcknowledgeErrorProcedure, - svc.AcknowledgeError, - connect.WithSchema(sessionServiceMethods.ByName("AcknowledgeError")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetFeatureFlagsHandler := connect.NewUnaryHandler( - SessionServiceGetFeatureFlagsProcedure, - svc.GetFeatureFlags, - connect.WithSchema(sessionServiceMethods.ByName("GetFeatureFlags")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceUpdateFeatureFlagHandler := connect.NewUnaryHandler( - SessionServiceUpdateFeatureFlagProcedure, - svc.UpdateFeatureFlag, - connect.WithSchema(sessionServiceMethods.ByName("UpdateFeatureFlag")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceQueryEscapeAnalyticsHandler := connect.NewUnaryHandler( - SessionServiceQueryEscapeAnalyticsProcedure, - svc.QueryEscapeAnalytics, - connect.WithSchema(sessionServiceMethods.ByName("QueryEscapeAnalytics")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetEscapeAnalyticsSummaryHandler := connect.NewUnaryHandler( - SessionServiceGetEscapeAnalyticsSummaryProcedure, - svc.GetEscapeAnalyticsSummary, - connect.WithSchema(sessionServiceMethods.ByName("GetEscapeAnalyticsSummary")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetEscapeAnalyticsGlobalSummaryHandler := connect.NewUnaryHandler( - SessionServiceGetEscapeAnalyticsGlobalSummaryProcedure, - svc.GetEscapeAnalyticsGlobalSummary, - connect.WithSchema(sessionServiceMethods.ByName("GetEscapeAnalyticsGlobalSummary")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceHibernateSessionHandler := connect.NewUnaryHandler( - SessionServiceHibernateSessionProcedure, - svc.HibernateSession, - connect.WithSchema(sessionServiceMethods.ByName("HibernateSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceResumeHibernatedSessionHandler := connect.NewUnaryHandler( - SessionServiceResumeHibernatedSessionProcedure, - svc.ResumeHibernatedSession, - connect.WithSchema(sessionServiceMethods.ByName("ResumeHibernatedSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceResumeCrashedSessionHandler := connect.NewUnaryHandler( - SessionServiceResumeCrashedSessionProcedure, - svc.ResumeCrashedSession, - connect.WithSchema(sessionServiceMethods.ByName("ResumeCrashedSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceSpawnShellHandler := connect.NewUnaryHandler( - SessionServiceSpawnShellProcedure, - svc.SpawnShell, - connect.WithSchema(sessionServiceMethods.ByName("SpawnShell")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceStopShellHandler := connect.NewUnaryHandler( - SessionServiceStopShellProcedure, - svc.StopShell, - connect.WithSchema(sessionServiceMethods.ByName("StopShell")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceRestartShellHandler := connect.NewUnaryHandler( - SessionServiceRestartShellProcedure, - svc.RestartShell, - connect.WithSchema(sessionServiceMethods.ByName("RestartShell")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListShellsHandler := connect.NewUnaryHandler( - SessionServiceListShellsProcedure, - svc.ListShells, - connect.WithSchema(sessionServiceMethods.ByName("ListShells")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceDeleteShellHandler := connect.NewUnaryHandler( - SessionServiceDeleteShellProcedure, - svc.DeleteShell, - connect.WithSchema(sessionServiceMethods.ByName("DeleteShell")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceCreateWorkflowHandler := connect.NewUnaryHandler( - SessionServiceCreateWorkflowProcedure, - svc.CreateWorkflow, - connect.WithSchema(sessionServiceMethods.ByName("CreateWorkflow")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceUpdateWorkflowHandler := connect.NewUnaryHandler( - SessionServiceUpdateWorkflowProcedure, - svc.UpdateWorkflow, - connect.WithSchema(sessionServiceMethods.ByName("UpdateWorkflow")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceDeleteWorkflowHandler := connect.NewUnaryHandler( - SessionServiceDeleteWorkflowProcedure, - svc.DeleteWorkflow, - connect.WithSchema(sessionServiceMethods.ByName("DeleteWorkflow")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListWorkflowsHandler := connect.NewUnaryHandler( - SessionServiceListWorkflowsProcedure, - svc.ListWorkflows, - connect.WithSchema(sessionServiceMethods.ByName("ListWorkflows")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceRunWorkflowHandler := connect.NewUnaryHandler( - SessionServiceRunWorkflowProcedure, - svc.RunWorkflow, - connect.WithSchema(sessionServiceMethods.ByName("RunWorkflow")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetDetectionEventsHandler := connect.NewUnaryHandler( - SessionServiceGetDetectionEventsProcedure, - svc.GetDetectionEvents, - connect.WithSchema(sessionServiceMethods.ByName("GetDetectionEvents")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListSlashCommandsHandler := connect.NewUnaryHandler( - SessionServiceListSlashCommandsProcedure, - svc.ListSlashCommands, - connect.WithSchema(sessionServiceMethods.ByName("ListSlashCommands")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceListAliasesHandler := connect.NewUnaryHandler( - SessionServiceListAliasesProcedure, - svc.ListAliases, - connect.WithSchema(sessionServiceMethods.ByName("ListAliases")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceUpsertAliasHandler := connect.NewUnaryHandler( - SessionServiceUpsertAliasProcedure, - svc.UpsertAlias, - connect.WithSchema(sessionServiceMethods.ByName("UpsertAlias")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceDeleteAliasHandler := connect.NewUnaryHandler( - SessionServiceDeleteAliasProcedure, - svc.DeleteAlias, - connect.WithSchema(sessionServiceMethods.ByName("DeleteAlias")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceArchiveSessionHandler := connect.NewUnaryHandler( - SessionServiceArchiveSessionProcedure, - svc.ArchiveSession, - connect.WithSchema(sessionServiceMethods.ByName("ArchiveSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceUnarchiveSessionHandler := connect.NewUnaryHandler( - SessionServiceUnarchiveSessionProcedure, - svc.UnarchiveSession, - connect.WithSchema(sessionServiceMethods.ByName("UnarchiveSession")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceArchiveWorkflowSessionsHandler := connect.NewUnaryHandler( - SessionServiceArchiveWorkflowSessionsProcedure, - svc.ArchiveWorkflowSessions, - connect.WithSchema(sessionServiceMethods.ByName("ArchiveWorkflowSessions")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceDeleteWorkflowFailedSessionsHandler := connect.NewUnaryHandler( - SessionServiceDeleteWorkflowFailedSessionsProcedure, - svc.DeleteWorkflowFailedSessions, - connect.WithSchema(sessionServiceMethods.ByName("DeleteWorkflowFailedSessions")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetProviderLimitsHandler := connect.NewUnaryHandler( - SessionServiceGetProviderLimitsProcedure, - svc.GetProviderLimits, - connect.WithSchema(sessionServiceMethods.ByName("GetProviderLimits")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceGetHookStatusHandler := connect.NewUnaryHandler( - SessionServiceGetHookStatusProcedure, - svc.GetHookStatus, - connect.WithSchema(sessionServiceMethods.ByName("GetHookStatus")), - connect.WithHandlerOptions(opts...), - ) - sessionServiceInstallHooksHandler := connect.NewUnaryHandler( - SessionServiceInstallHooksProcedure, - svc.InstallHooks, - connect.WithSchema(sessionServiceMethods.ByName("InstallHooks")), - connect.WithHandlerOptions(opts...), - ) - return "/session.v1.SessionService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case SessionServiceListSessionsProcedure: - sessionServiceListSessionsHandler.ServeHTTP(w, r) - case SessionServiceGetSessionProcedure: - sessionServiceGetSessionHandler.ServeHTTP(w, r) - case SessionServiceCreateSessionProcedure: - sessionServiceCreateSessionHandler.ServeHTTP(w, r) - case SessionServiceUpdateSessionProcedure: - sessionServiceUpdateSessionHandler.ServeHTTP(w, r) - case SessionServiceDeleteSessionProcedure: - sessionServiceDeleteSessionHandler.ServeHTTP(w, r) - case SessionServiceWatchSessionsProcedure: - sessionServiceWatchSessionsHandler.ServeHTTP(w, r) - case SessionServiceStreamTerminalProcedure: - sessionServiceStreamTerminalHandler.ServeHTTP(w, r) - case SessionServiceGetSessionDiffProcedure: - sessionServiceGetSessionDiffHandler.ServeHTTP(w, r) - case SessionServiceGetVCSStatusProcedure: - sessionServiceGetVCSStatusHandler.ServeHTTP(w, r) - case SessionServiceGetReviewQueueProcedure: - sessionServiceGetReviewQueueHandler.ServeHTTP(w, r) - case SessionServiceAcknowledgeSessionProcedure: - sessionServiceAcknowledgeSessionHandler.ServeHTTP(w, r) - case SessionServiceGetLogsProcedure: - sessionServiceGetLogsHandler.ServeHTTP(w, r) - case SessionServiceWatchReviewQueueProcedure: - sessionServiceWatchReviewQueueHandler.ServeHTTP(w, r) - case SessionServiceLogUserInteractionProcedure: - sessionServiceLogUserInteractionHandler.ServeHTTP(w, r) - case SessionServiceGetClaudeConfigProcedure: - sessionServiceGetClaudeConfigHandler.ServeHTTP(w, r) - case SessionServiceListClaudeConfigsProcedure: - sessionServiceListClaudeConfigsHandler.ServeHTTP(w, r) - case SessionServiceUpdateClaudeConfigProcedure: - sessionServiceUpdateClaudeConfigHandler.ServeHTTP(w, r) - case SessionServiceListClaudeHistoryProcedure: - sessionServiceListClaudeHistoryHandler.ServeHTTP(w, r) - case SessionServiceGetClaudeHistoryDetailProcedure: - sessionServiceGetClaudeHistoryDetailHandler.ServeHTTP(w, r) - case SessionServiceGetClaudeHistoryMessagesProcedure: - sessionServiceGetClaudeHistoryMessagesHandler.ServeHTTP(w, r) - case SessionServiceSearchClaudeHistoryProcedure: - sessionServiceSearchClaudeHistoryHandler.ServeHTTP(w, r) - case SessionServiceGetPRInfoProcedure: - sessionServiceGetPRInfoHandler.ServeHTTP(w, r) - case SessionServiceGetPRCommentsProcedure: - sessionServiceGetPRCommentsHandler.ServeHTTP(w, r) - case SessionServicePostPRCommentProcedure: - sessionServicePostPRCommentHandler.ServeHTTP(w, r) - case SessionServiceMergePRProcedure: - sessionServiceMergePRHandler.ServeHTTP(w, r) - case SessionServiceClosePRProcedure: - sessionServiceClosePRHandler.ServeHTTP(w, r) - case SessionServiceSendNotificationProcedure: - sessionServiceSendNotificationHandler.ServeHTTP(w, r) - case SessionServiceFocusWindowProcedure: - sessionServiceFocusWindowHandler.ServeHTTP(w, r) - case SessionServiceRenameSessionProcedure: - sessionServiceRenameSessionHandler.ServeHTTP(w, r) - case SessionServiceRestartSessionProcedure: - sessionServiceRestartSessionHandler.ServeHTTP(w, r) - case SessionServiceGetWorkspaceInfoProcedure: - sessionServiceGetWorkspaceInfoHandler.ServeHTTP(w, r) - case SessionServiceListWorkspaceTargetsProcedure: - sessionServiceListWorkspaceTargetsHandler.ServeHTTP(w, r) - case SessionServiceSwitchWorkspaceProcedure: - sessionServiceSwitchWorkspaceHandler.ServeHTTP(w, r) - case SessionServiceResolveApprovalProcedure: - sessionServiceResolveApprovalHandler.ServeHTTP(w, r) - case SessionServiceListPendingApprovalsProcedure: - sessionServiceListPendingApprovalsHandler.ServeHTTP(w, r) - case SessionServiceCreateDebugSnapshotProcedure: - sessionServiceCreateDebugSnapshotHandler.ServeHTTP(w, r) - case SessionServiceGetNotificationHistoryProcedure: - sessionServiceGetNotificationHistoryHandler.ServeHTTP(w, r) - case SessionServiceMarkNotificationReadProcedure: - sessionServiceMarkNotificationReadHandler.ServeHTTP(w, r) - case SessionServiceClearNotificationHistoryProcedure: - sessionServiceClearNotificationHistoryHandler.ServeHTTP(w, r) - case SessionServiceListApprovalRulesProcedure: - sessionServiceListApprovalRulesHandler.ServeHTTP(w, r) - case SessionServiceUpsertApprovalRuleProcedure: - sessionServiceUpsertApprovalRuleHandler.ServeHTTP(w, r) - case SessionServiceDeleteApprovalRuleProcedure: - sessionServiceDeleteApprovalRuleHandler.ServeHTTP(w, r) - case SessionServiceGetApprovalAnalyticsProcedure: - sessionServiceGetApprovalAnalyticsHandler.ServeHTTP(w, r) - case SessionServiceGetProgramAnalyticsProcedure: - sessionServiceGetProgramAnalyticsHandler.ServeHTTP(w, r) - case SessionServiceGenerateSuggestedRuleProcedure: - sessionServiceGenerateSuggestedRuleHandler.ServeHTTP(w, r) - case SessionServiceValidateRulesProcedure: - sessionServiceValidateRulesHandler.ServeHTTP(w, r) - case SessionServiceExportRulesProcedure: - sessionServiceExportRulesHandler.ServeHTTP(w, r) - case SessionServiceBulkUpsertRulesProcedure: - sessionServiceBulkUpsertRulesHandler.ServeHTTP(w, r) - case SessionServiceGetConfigFileRulesProcedure: - sessionServiceGetConfigFileRulesHandler.ServeHTTP(w, r) - case SessionServiceSaveRulesToConfigFileProcedure: - sessionServiceSaveRulesToConfigFileHandler.ServeHTTP(w, r) - case SessionServiceListDatabasesProcedure: - sessionServiceListDatabasesHandler.ServeHTTP(w, r) - case SessionServiceGetCurrentDatabaseProcedure: - sessionServiceGetCurrentDatabaseHandler.ServeHTTP(w, r) - case SessionServiceSwitchDatabaseProcedure: - sessionServiceSwitchDatabaseHandler.ServeHTTP(w, r) - case SessionServiceMergeDatabaseProcedure: - sessionServiceMergeDatabaseHandler.ServeHTTP(w, r) - case SessionServiceCreateCheckpointProcedure: - sessionServiceCreateCheckpointHandler.ServeHTTP(w, r) - case SessionServiceListCheckpointsProcedure: - sessionServiceListCheckpointsHandler.ServeHTTP(w, r) - case SessionServiceForkSessionProcedure: - sessionServiceForkSessionHandler.ServeHTTP(w, r) - case SessionServiceClearConversationStateProcedure: - sessionServiceClearConversationStateHandler.ServeHTTP(w, r) - case SessionServiceListFilesProcedure: - sessionServiceListFilesHandler.ServeHTTP(w, r) - case SessionServiceGetFileContentProcedure: - sessionServiceGetFileContentHandler.ServeHTTP(w, r) - case SessionServiceSearchFilesProcedure: - sessionServiceSearchFilesHandler.ServeHTTP(w, r) - case SessionServiceListPathCompletionsProcedure: - sessionServiceListPathCompletionsHandler.ServeHTTP(w, r) - case SessionServiceGetSessionDefaultsProcedure: - sessionServiceGetSessionDefaultsHandler.ServeHTTP(w, r) - case SessionServiceResolveDefaultsProcedure: - sessionServiceResolveDefaultsHandler.ServeHTTP(w, r) - case SessionServicePreviewDestinationPathProcedure: - sessionServicePreviewDestinationPathHandler.ServeHTTP(w, r) - case SessionServiceUpdateGlobalDefaultsProcedure: - sessionServiceUpdateGlobalDefaultsHandler.ServeHTTP(w, r) - case SessionServiceUpsertProfileProcedure: - sessionServiceUpsertProfileHandler.ServeHTTP(w, r) - case SessionServiceDeleteProfileProcedure: - sessionServiceDeleteProfileHandler.ServeHTTP(w, r) - case SessionServiceUpsertDirectoryRuleProcedure: - sessionServiceUpsertDirectoryRuleHandler.ServeHTTP(w, r) - case SessionServiceDeleteDirectoryRuleProcedure: - sessionServiceDeleteDirectoryRuleHandler.ServeHTTP(w, r) - case SessionServiceListWorktreesProcedure: - sessionServiceListWorktreesHandler.ServeHTTP(w, r) - case SessionServiceListPromptHistoryProcedure: - sessionServiceListPromptHistoryHandler.ServeHTTP(w, r) - case SessionServiceDeletePromptHistoryProcedure: - sessionServiceDeletePromptHistoryHandler.ServeHTTP(w, r) - case SessionServiceBatchCreateSessionsProcedure: - sessionServiceBatchCreateSessionsHandler.ServeHTTP(w, r) - case SessionServiceRunOneShotProcedure: - sessionServiceRunOneShotHandler.ServeHTTP(w, r) - case SessionServiceCreateProjectProcedure: - sessionServiceCreateProjectHandler.ServeHTTP(w, r) - case SessionServiceListProjectsProcedure: - sessionServiceListProjectsHandler.ServeHTTP(w, r) - case SessionServiceUpdateProjectProcedure: - sessionServiceUpdateProjectHandler.ServeHTTP(w, r) - case SessionServiceDeleteProjectProcedure: - sessionServiceDeleteProjectHandler.ServeHTTP(w, r) - case SessionServiceAssignSessionsToProjectProcedure: - sessionServiceAssignSessionsToProjectHandler.ServeHTTP(w, r) - case SessionServiceListBranchesProcedure: - sessionServiceListBranchesHandler.ServeHTTP(w, r) - case SessionServiceGetTerminalSnapshotProcedure: - sessionServiceGetTerminalSnapshotHandler.ServeHTTP(w, r) - case SessionServiceWriteToSessionProcedure: - sessionServiceWriteToSessionHandler.ServeHTTP(w, r) - case SessionServiceLogClientEventsProcedure: - sessionServiceLogClientEventsHandler.ServeHTTP(w, r) - case SessionServiceListErrorsProcedure: - sessionServiceListErrorsHandler.ServeHTTP(w, r) - case SessionServiceAcknowledgeErrorProcedure: - sessionServiceAcknowledgeErrorHandler.ServeHTTP(w, r) - case SessionServiceGetFeatureFlagsProcedure: - sessionServiceGetFeatureFlagsHandler.ServeHTTP(w, r) - case SessionServiceUpdateFeatureFlagProcedure: - sessionServiceUpdateFeatureFlagHandler.ServeHTTP(w, r) - case SessionServiceQueryEscapeAnalyticsProcedure: - sessionServiceQueryEscapeAnalyticsHandler.ServeHTTP(w, r) - case SessionServiceGetEscapeAnalyticsSummaryProcedure: - sessionServiceGetEscapeAnalyticsSummaryHandler.ServeHTTP(w, r) - case SessionServiceGetEscapeAnalyticsGlobalSummaryProcedure: - sessionServiceGetEscapeAnalyticsGlobalSummaryHandler.ServeHTTP(w, r) - case SessionServiceHibernateSessionProcedure: - sessionServiceHibernateSessionHandler.ServeHTTP(w, r) - case SessionServiceResumeHibernatedSessionProcedure: - sessionServiceResumeHibernatedSessionHandler.ServeHTTP(w, r) - case SessionServiceResumeCrashedSessionProcedure: - sessionServiceResumeCrashedSessionHandler.ServeHTTP(w, r) - case SessionServiceSpawnShellProcedure: - sessionServiceSpawnShellHandler.ServeHTTP(w, r) - case SessionServiceStopShellProcedure: - sessionServiceStopShellHandler.ServeHTTP(w, r) - case SessionServiceRestartShellProcedure: - sessionServiceRestartShellHandler.ServeHTTP(w, r) - case SessionServiceListShellsProcedure: - sessionServiceListShellsHandler.ServeHTTP(w, r) - case SessionServiceDeleteShellProcedure: - sessionServiceDeleteShellHandler.ServeHTTP(w, r) - case SessionServiceCreateWorkflowProcedure: - sessionServiceCreateWorkflowHandler.ServeHTTP(w, r) - case SessionServiceUpdateWorkflowProcedure: - sessionServiceUpdateWorkflowHandler.ServeHTTP(w, r) - case SessionServiceDeleteWorkflowProcedure: - sessionServiceDeleteWorkflowHandler.ServeHTTP(w, r) - case SessionServiceListWorkflowsProcedure: - sessionServiceListWorkflowsHandler.ServeHTTP(w, r) - case SessionServiceRunWorkflowProcedure: - sessionServiceRunWorkflowHandler.ServeHTTP(w, r) - case SessionServiceGetDetectionEventsProcedure: - sessionServiceGetDetectionEventsHandler.ServeHTTP(w, r) - case SessionServiceListSlashCommandsProcedure: - sessionServiceListSlashCommandsHandler.ServeHTTP(w, r) - case SessionServiceListAliasesProcedure: - sessionServiceListAliasesHandler.ServeHTTP(w, r) - case SessionServiceUpsertAliasProcedure: - sessionServiceUpsertAliasHandler.ServeHTTP(w, r) - case SessionServiceDeleteAliasProcedure: - sessionServiceDeleteAliasHandler.ServeHTTP(w, r) - case SessionServiceArchiveSessionProcedure: - sessionServiceArchiveSessionHandler.ServeHTTP(w, r) - case SessionServiceUnarchiveSessionProcedure: - sessionServiceUnarchiveSessionHandler.ServeHTTP(w, r) - case SessionServiceArchiveWorkflowSessionsProcedure: - sessionServiceArchiveWorkflowSessionsHandler.ServeHTTP(w, r) - case SessionServiceDeleteWorkflowFailedSessionsProcedure: - sessionServiceDeleteWorkflowFailedSessionsHandler.ServeHTTP(w, r) - case SessionServiceGetProviderLimitsProcedure: - sessionServiceGetProviderLimitsHandler.ServeHTTP(w, r) - case SessionServiceGetHookStatusProcedure: - sessionServiceGetHookStatusHandler.ServeHTTP(w, r) - case SessionServiceInstallHooksProcedure: - sessionServiceInstallHooksHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedSessionServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedSessionServiceHandler struct{} - -func (UnimplementedSessionServiceHandler) ListSessions(context.Context, *connect.Request[v1.ListSessionsRequest]) (*connect.Response[v1.ListSessionsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListSessions is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetSession(context.Context, *connect.Request[v1.GetSessionRequest]) (*connect.Response[v1.GetSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) CreateSession(context.Context, *connect.Request[v1.CreateSessionRequest]) (*connect.Response[v1.CreateSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.CreateSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) UpdateSession(context.Context, *connect.Request[v1.UpdateSessionRequest]) (*connect.Response[v1.UpdateSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.UpdateSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) DeleteSession(context.Context, *connect.Request[v1.DeleteSessionRequest]) (*connect.Response[v1.DeleteSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.DeleteSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) WatchSessions(context.Context, *connect.Request[v1.WatchSessionsRequest], *connect.ServerStream[v1.SessionEvent]) error { - return connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.WatchSessions is not implemented")) -} - -func (UnimplementedSessionServiceHandler) StreamTerminal(context.Context, *connect.BidiStream[v1.TerminalData, v1.TerminalData]) error { - return connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.StreamTerminal is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetSessionDiff(context.Context, *connect.Request[v1.GetSessionDiffRequest]) (*connect.Response[v1.GetSessionDiffResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetSessionDiff is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetVCSStatus(context.Context, *connect.Request[v1.GetVCSStatusRequest]) (*connect.Response[v1.GetVCSStatusResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetVCSStatus is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetReviewQueue(context.Context, *connect.Request[v1.GetReviewQueueRequest]) (*connect.Response[v1.GetReviewQueueResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetReviewQueue is not implemented")) -} - -func (UnimplementedSessionServiceHandler) AcknowledgeSession(context.Context, *connect.Request[v1.AcknowledgeSessionRequest]) (*connect.Response[v1.AcknowledgeSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.AcknowledgeSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetLogs(context.Context, *connect.Request[v1.GetLogsRequest]) (*connect.Response[v1.GetLogsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetLogs is not implemented")) -} - -func (UnimplementedSessionServiceHandler) WatchReviewQueue(context.Context, *connect.Request[v1.WatchReviewQueueRequest], *connect.ServerStream[v1.ReviewQueueEvent]) error { - return connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.WatchReviewQueue is not implemented")) -} - -func (UnimplementedSessionServiceHandler) LogUserInteraction(context.Context, *connect.Request[v1.LogUserInteractionRequest]) (*connect.Response[v1.LogUserInteractionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.LogUserInteraction is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetClaudeConfig(context.Context, *connect.Request[v1.GetClaudeConfigRequest]) (*connect.Response[v1.GetClaudeConfigResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetClaudeConfig is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListClaudeConfigs(context.Context, *connect.Request[v1.ListClaudeConfigsRequest]) (*connect.Response[v1.ListClaudeConfigsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListClaudeConfigs is not implemented")) -} - -func (UnimplementedSessionServiceHandler) UpdateClaudeConfig(context.Context, *connect.Request[v1.UpdateClaudeConfigRequest]) (*connect.Response[v1.UpdateClaudeConfigResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.UpdateClaudeConfig is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListClaudeHistory(context.Context, *connect.Request[v1.ListClaudeHistoryRequest]) (*connect.Response[v1.ListClaudeHistoryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListClaudeHistory is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetClaudeHistoryDetail(context.Context, *connect.Request[v1.GetClaudeHistoryDetailRequest]) (*connect.Response[v1.GetClaudeHistoryDetailResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetClaudeHistoryDetail is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetClaudeHistoryMessages(context.Context, *connect.Request[v1.GetClaudeHistoryMessagesRequest]) (*connect.Response[v1.GetClaudeHistoryMessagesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetClaudeHistoryMessages is not implemented")) -} - -func (UnimplementedSessionServiceHandler) SearchClaudeHistory(context.Context, *connect.Request[v1.SearchClaudeHistoryRequest]) (*connect.Response[v1.SearchClaudeHistoryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.SearchClaudeHistory is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetPRInfo(context.Context, *connect.Request[v1.GetPRInfoRequest]) (*connect.Response[v1.GetPRInfoResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetPRInfo is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetPRComments(context.Context, *connect.Request[v1.GetPRCommentsRequest]) (*connect.Response[v1.GetPRCommentsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetPRComments is not implemented")) -} - -func (UnimplementedSessionServiceHandler) PostPRComment(context.Context, *connect.Request[v1.PostPRCommentRequest]) (*connect.Response[v1.PostPRCommentResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.PostPRComment is not implemented")) -} - -func (UnimplementedSessionServiceHandler) MergePR(context.Context, *connect.Request[v1.MergePRRequest]) (*connect.Response[v1.MergePRResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.MergePR is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ClosePR(context.Context, *connect.Request[v1.ClosePRRequest]) (*connect.Response[v1.ClosePRResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ClosePR is not implemented")) -} - -func (UnimplementedSessionServiceHandler) SendNotification(context.Context, *connect.Request[v1.SendNotificationRequest]) (*connect.Response[v1.SendNotificationResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.SendNotification is not implemented")) -} - -func (UnimplementedSessionServiceHandler) FocusWindow(context.Context, *connect.Request[v1.FocusWindowRequest]) (*connect.Response[v1.FocusWindowResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.FocusWindow is not implemented")) -} - -func (UnimplementedSessionServiceHandler) RenameSession(context.Context, *connect.Request[v1.RenameSessionRequest]) (*connect.Response[v1.RenameSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.RenameSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) RestartSession(context.Context, *connect.Request[v1.RestartSessionRequest]) (*connect.Response[v1.RestartSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.RestartSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetWorkspaceInfo(context.Context, *connect.Request[v1.GetWorkspaceInfoRequest]) (*connect.Response[v1.GetWorkspaceInfoResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetWorkspaceInfo is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListWorkspaceTargets(context.Context, *connect.Request[v1.ListWorkspaceTargetsRequest]) (*connect.Response[v1.ListWorkspaceTargetsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListWorkspaceTargets is not implemented")) -} - -func (UnimplementedSessionServiceHandler) SwitchWorkspace(context.Context, *connect.Request[v1.SwitchWorkspaceRequest]) (*connect.Response[v1.SwitchWorkspaceResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.SwitchWorkspace is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ResolveApproval(context.Context, *connect.Request[v1.ResolveApprovalRequest]) (*connect.Response[v1.ResolveApprovalResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ResolveApproval is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListPendingApprovals(context.Context, *connect.Request[v1.ListPendingApprovalsRequest]) (*connect.Response[v1.ListPendingApprovalsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListPendingApprovals is not implemented")) -} - -func (UnimplementedSessionServiceHandler) CreateDebugSnapshot(context.Context, *connect.Request[v1.CreateDebugSnapshotRequest]) (*connect.Response[v1.CreateDebugSnapshotResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.CreateDebugSnapshot is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetNotificationHistory(context.Context, *connect.Request[v1.GetNotificationHistoryRequest]) (*connect.Response[v1.GetNotificationHistoryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetNotificationHistory is not implemented")) -} - -func (UnimplementedSessionServiceHandler) MarkNotificationRead(context.Context, *connect.Request[v1.MarkNotificationReadRequest]) (*connect.Response[v1.MarkNotificationReadResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.MarkNotificationRead is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ClearNotificationHistory(context.Context, *connect.Request[v1.ClearNotificationHistoryRequest]) (*connect.Response[v1.ClearNotificationHistoryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ClearNotificationHistory is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListApprovalRules(context.Context, *connect.Request[v1.ListApprovalRulesRequest]) (*connect.Response[v1.ListApprovalRulesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListApprovalRules is not implemented")) -} - -func (UnimplementedSessionServiceHandler) UpsertApprovalRule(context.Context, *connect.Request[v1.UpsertApprovalRuleRequest]) (*connect.Response[v1.UpsertApprovalRuleResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.UpsertApprovalRule is not implemented")) -} - -func (UnimplementedSessionServiceHandler) DeleteApprovalRule(context.Context, *connect.Request[v1.DeleteApprovalRuleRequest]) (*connect.Response[v1.DeleteApprovalRuleResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.DeleteApprovalRule is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetApprovalAnalytics(context.Context, *connect.Request[v1.GetApprovalAnalyticsRequest]) (*connect.Response[v1.GetApprovalAnalyticsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetApprovalAnalytics is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetProgramAnalytics(context.Context, *connect.Request[v1.GetProgramAnalyticsRequest]) (*connect.Response[v1.GetProgramAnalyticsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetProgramAnalytics is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GenerateSuggestedRule(context.Context, *connect.Request[v1.GenerateSuggestedRuleRequest]) (*connect.Response[v1.GenerateSuggestedRuleResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GenerateSuggestedRule is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ValidateRules(context.Context, *connect.Request[v1.ValidateRulesRequest]) (*connect.Response[v1.ValidateRulesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ValidateRules is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ExportRules(context.Context, *connect.Request[v1.ExportRulesRequest]) (*connect.Response[v1.ExportRulesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ExportRules is not implemented")) -} - -func (UnimplementedSessionServiceHandler) BulkUpsertRules(context.Context, *connect.Request[v1.BulkUpsertRulesRequest]) (*connect.Response[v1.BulkUpsertRulesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.BulkUpsertRules is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetConfigFileRules(context.Context, *connect.Request[v1.GetConfigFileRulesRequest]) (*connect.Response[v1.GetConfigFileRulesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetConfigFileRules is not implemented")) -} - -func (UnimplementedSessionServiceHandler) SaveRulesToConfigFile(context.Context, *connect.Request[v1.SaveRulesToConfigFileRequest]) (*connect.Response[v1.SaveRulesToConfigFileResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.SaveRulesToConfigFile is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListDatabases(context.Context, *connect.Request[v1.ListDatabasesRequest]) (*connect.Response[v1.ListDatabasesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListDatabases is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetCurrentDatabase(context.Context, *connect.Request[v1.GetCurrentDatabaseRequest]) (*connect.Response[v1.GetCurrentDatabaseResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetCurrentDatabase is not implemented")) -} - -func (UnimplementedSessionServiceHandler) SwitchDatabase(context.Context, *connect.Request[v1.SwitchDatabaseRequest]) (*connect.Response[v1.SwitchDatabaseResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.SwitchDatabase is not implemented")) -} - -func (UnimplementedSessionServiceHandler) MergeDatabase(context.Context, *connect.Request[v1.MergeDatabaseRequest]) (*connect.Response[v1.MergeDatabaseResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.MergeDatabase is not implemented")) -} - -func (UnimplementedSessionServiceHandler) CreateCheckpoint(context.Context, *connect.Request[v1.CreateCheckpointRequest]) (*connect.Response[v1.CreateCheckpointResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.CreateCheckpoint is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListCheckpoints(context.Context, *connect.Request[v1.ListCheckpointsRequest]) (*connect.Response[v1.ListCheckpointsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListCheckpoints is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ForkSession(context.Context, *connect.Request[v1.ForkSessionRequest]) (*connect.Response[v1.ForkSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ForkSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ClearConversationState(context.Context, *connect.Request[v1.ClearConversationStateRequest]) (*connect.Response[v1.ClearConversationStateResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ClearConversationState is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListFiles(context.Context, *connect.Request[v1.ListFilesRequest]) (*connect.Response[v1.ListFilesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListFiles is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetFileContent(context.Context, *connect.Request[v1.GetFileContentRequest]) (*connect.Response[v1.GetFileContentResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetFileContent is not implemented")) -} - -func (UnimplementedSessionServiceHandler) SearchFiles(context.Context, *connect.Request[v1.SearchFilesRequest]) (*connect.Response[v1.SearchFilesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.SearchFiles is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListPathCompletions(context.Context, *connect.Request[v1.ListPathCompletionsRequest]) (*connect.Response[v1.ListPathCompletionsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListPathCompletions is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetSessionDefaults(context.Context, *connect.Request[v1.GetSessionDefaultsRequest]) (*connect.Response[v1.GetSessionDefaultsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetSessionDefaults is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ResolveDefaults(context.Context, *connect.Request[v1.ResolveDefaultsRequest]) (*connect.Response[v1.ResolveDefaultsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ResolveDefaults is not implemented")) -} - -func (UnimplementedSessionServiceHandler) PreviewDestinationPath(context.Context, *connect.Request[v1.PreviewDestinationPathRequest]) (*connect.Response[v1.PreviewDestinationPathResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.PreviewDestinationPath is not implemented")) -} - -func (UnimplementedSessionServiceHandler) UpdateGlobalDefaults(context.Context, *connect.Request[v1.UpdateGlobalDefaultsRequest]) (*connect.Response[v1.UpdateGlobalDefaultsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.UpdateGlobalDefaults is not implemented")) -} - -func (UnimplementedSessionServiceHandler) UpsertProfile(context.Context, *connect.Request[v1.UpsertProfileRequest]) (*connect.Response[v1.UpsertProfileResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.UpsertProfile is not implemented")) -} - -func (UnimplementedSessionServiceHandler) DeleteProfile(context.Context, *connect.Request[v1.DeleteProfileRequest]) (*connect.Response[v1.DeleteProfileResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.DeleteProfile is not implemented")) -} - -func (UnimplementedSessionServiceHandler) UpsertDirectoryRule(context.Context, *connect.Request[v1.UpsertDirectoryRuleRequest]) (*connect.Response[v1.UpsertDirectoryRuleResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.UpsertDirectoryRule is not implemented")) -} - -func (UnimplementedSessionServiceHandler) DeleteDirectoryRule(context.Context, *connect.Request[v1.DeleteDirectoryRuleRequest]) (*connect.Response[v1.DeleteDirectoryRuleResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.DeleteDirectoryRule is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListWorktrees(context.Context, *connect.Request[v1.ListWorktreesRequest]) (*connect.Response[v1.ListWorktreesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListWorktrees is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListPromptHistory(context.Context, *connect.Request[v1.ListPromptHistoryRequest]) (*connect.Response[v1.ListPromptHistoryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListPromptHistory is not implemented")) -} - -func (UnimplementedSessionServiceHandler) DeletePromptHistory(context.Context, *connect.Request[v1.DeletePromptHistoryRequest]) (*connect.Response[v1.DeletePromptHistoryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.DeletePromptHistory is not implemented")) -} - -func (UnimplementedSessionServiceHandler) BatchCreateSessions(context.Context, *connect.Request[v1.BatchCreateSessionsRequest]) (*connect.Response[v1.BatchCreateSessionsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.BatchCreateSessions is not implemented")) -} - -func (UnimplementedSessionServiceHandler) RunOneShot(context.Context, *connect.Request[v1.RunOneShotRequest]) (*connect.Response[v1.RunOneShotResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.RunOneShot is not implemented")) -} - -func (UnimplementedSessionServiceHandler) CreateProject(context.Context, *connect.Request[v1.CreateProjectRequest]) (*connect.Response[v1.CreateProjectResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.CreateProject is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListProjects(context.Context, *connect.Request[v1.ListProjectsRequest]) (*connect.Response[v1.ListProjectsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListProjects is not implemented")) -} - -func (UnimplementedSessionServiceHandler) UpdateProject(context.Context, *connect.Request[v1.UpdateProjectRequest]) (*connect.Response[v1.UpdateProjectResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.UpdateProject is not implemented")) -} - -func (UnimplementedSessionServiceHandler) DeleteProject(context.Context, *connect.Request[v1.DeleteProjectRequest]) (*connect.Response[v1.DeleteProjectResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.DeleteProject is not implemented")) -} - -func (UnimplementedSessionServiceHandler) AssignSessionsToProject(context.Context, *connect.Request[v1.AssignSessionsToProjectRequest]) (*connect.Response[v1.AssignSessionsToProjectResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.AssignSessionsToProject is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListBranches(context.Context, *connect.Request[v1.ListBranchesRequest]) (*connect.Response[v1.ListBranchesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListBranches is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetTerminalSnapshot(context.Context, *connect.Request[v1.GetTerminalSnapshotRequest]) (*connect.Response[v1.GetTerminalSnapshotResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetTerminalSnapshot is not implemented")) -} - -func (UnimplementedSessionServiceHandler) WriteToSession(context.Context, *connect.Request[v1.WriteToSessionRequest]) (*connect.Response[v1.WriteToSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.WriteToSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) LogClientEvents(context.Context, *connect.Request[v1.LogClientEventsRequest]) (*connect.Response[v1.LogClientEventsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.LogClientEvents is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListErrors(context.Context, *connect.Request[v1.ListErrorsRequest]) (*connect.Response[v1.ListErrorsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListErrors is not implemented")) -} - -func (UnimplementedSessionServiceHandler) AcknowledgeError(context.Context, *connect.Request[v1.AcknowledgeErrorRequest]) (*connect.Response[v1.AcknowledgeErrorResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.AcknowledgeError is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetFeatureFlags(context.Context, *connect.Request[v1.GetFeatureFlagsRequest]) (*connect.Response[v1.GetFeatureFlagsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetFeatureFlags is not implemented")) -} - -func (UnimplementedSessionServiceHandler) UpdateFeatureFlag(context.Context, *connect.Request[v1.UpdateFeatureFlagRequest]) (*connect.Response[v1.UpdateFeatureFlagResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.UpdateFeatureFlag is not implemented")) -} - -func (UnimplementedSessionServiceHandler) QueryEscapeAnalytics(context.Context, *connect.Request[v1.QueryEscapeAnalyticsRequest]) (*connect.Response[v1.QueryEscapeAnalyticsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.QueryEscapeAnalytics is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetEscapeAnalyticsSummary(context.Context, *connect.Request[v1.GetEscapeAnalyticsSummaryRequest]) (*connect.Response[v1.GetEscapeAnalyticsSummaryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetEscapeAnalyticsSummary is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetEscapeAnalyticsGlobalSummary(context.Context, *connect.Request[v1.GetEscapeAnalyticsGlobalSummaryRequest]) (*connect.Response[v1.GetEscapeAnalyticsGlobalSummaryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetEscapeAnalyticsGlobalSummary is not implemented")) -} - -func (UnimplementedSessionServiceHandler) HibernateSession(context.Context, *connect.Request[v1.HibernateSessionRequest]) (*connect.Response[v1.HibernateSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.HibernateSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ResumeHibernatedSession(context.Context, *connect.Request[v1.ResumeHibernatedSessionRequest]) (*connect.Response[v1.ResumeHibernatedSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ResumeHibernatedSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ResumeCrashedSession(context.Context, *connect.Request[v1.ResumeCrashedSessionRequest]) (*connect.Response[v1.ResumeCrashedSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ResumeCrashedSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) SpawnShell(context.Context, *connect.Request[v1.SpawnShellRequest]) (*connect.Response[v1.SpawnShellResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.SpawnShell is not implemented")) -} - -func (UnimplementedSessionServiceHandler) StopShell(context.Context, *connect.Request[v1.StopShellRequest]) (*connect.Response[v1.StopShellResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.StopShell is not implemented")) -} - -func (UnimplementedSessionServiceHandler) RestartShell(context.Context, *connect.Request[v1.RestartShellRequest]) (*connect.Response[v1.RestartShellResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.RestartShell is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListShells(context.Context, *connect.Request[v1.ListShellsRequest]) (*connect.Response[v1.ListShellsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListShells is not implemented")) -} - -func (UnimplementedSessionServiceHandler) DeleteShell(context.Context, *connect.Request[v1.DeleteShellRequest]) (*connect.Response[v1.DeleteShellResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.DeleteShell is not implemented")) -} - -func (UnimplementedSessionServiceHandler) CreateWorkflow(context.Context, *connect.Request[v1.CreateWorkflowRequest]) (*connect.Response[v1.CreateWorkflowResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.CreateWorkflow is not implemented")) -} - -func (UnimplementedSessionServiceHandler) UpdateWorkflow(context.Context, *connect.Request[v1.UpdateWorkflowRequest]) (*connect.Response[v1.UpdateWorkflowResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.UpdateWorkflow is not implemented")) -} - -func (UnimplementedSessionServiceHandler) DeleteWorkflow(context.Context, *connect.Request[v1.DeleteWorkflowRequest]) (*connect.Response[v1.DeleteWorkflowResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.DeleteWorkflow is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListWorkflows(context.Context, *connect.Request[v1.ListWorkflowsRequest]) (*connect.Response[v1.ListWorkflowsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListWorkflows is not implemented")) -} - -func (UnimplementedSessionServiceHandler) RunWorkflow(context.Context, *connect.Request[v1.RunWorkflowRequest]) (*connect.Response[v1.RunWorkflowResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.RunWorkflow is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetDetectionEvents(context.Context, *connect.Request[v1.GetDetectionEventsRequest]) (*connect.Response[v1.GetDetectionEventsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetDetectionEvents is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListSlashCommands(context.Context, *connect.Request[v1.ListSlashCommandsRequest]) (*connect.Response[v1.ListSlashCommandsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListSlashCommands is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ListAliases(context.Context, *connect.Request[v1.ListAliasesRequest]) (*connect.Response[v1.ListAliasesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ListAliases is not implemented")) -} - -func (UnimplementedSessionServiceHandler) UpsertAlias(context.Context, *connect.Request[v1.UpsertAliasRequest]) (*connect.Response[v1.UpsertAliasResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.UpsertAlias is not implemented")) -} - -func (UnimplementedSessionServiceHandler) DeleteAlias(context.Context, *connect.Request[v1.DeleteAliasRequest]) (*connect.Response[v1.DeleteAliasResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.DeleteAlias is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ArchiveSession(context.Context, *connect.Request[v1.ArchiveSessionRequest]) (*connect.Response[v1.ArchiveSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ArchiveSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) UnarchiveSession(context.Context, *connect.Request[v1.UnarchiveSessionRequest]) (*connect.Response[v1.UnarchiveSessionResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.UnarchiveSession is not implemented")) -} - -func (UnimplementedSessionServiceHandler) ArchiveWorkflowSessions(context.Context, *connect.Request[v1.ArchiveWorkflowSessionsRequest]) (*connect.Response[v1.ArchiveWorkflowSessionsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.ArchiveWorkflowSessions is not implemented")) -} - -func (UnimplementedSessionServiceHandler) DeleteWorkflowFailedSessions(context.Context, *connect.Request[v1.DeleteWorkflowFailedSessionsRequest]) (*connect.Response[v1.DeleteWorkflowFailedSessionsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.DeleteWorkflowFailedSessions is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetProviderLimits(context.Context, *connect.Request[v1.GetProviderLimitsRequest]) (*connect.Response[v1.GetProviderLimitsResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetProviderLimits is not implemented")) -} - -func (UnimplementedSessionServiceHandler) GetHookStatus(context.Context, *connect.Request[v1.GetHookStatusRequest]) (*connect.Response[v1.GetHookStatusResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.GetHookStatus is not implemented")) -} - -func (UnimplementedSessionServiceHandler) InstallHooks(context.Context, *connect.Request[v1.InstallHooksRequest]) (*connect.Response[v1.InstallHooksResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionService.InstallHooks is not implemented")) -} diff --git a/gen/proto/go/session/v1/sessionv1connect/session_summary.connect.go b/gen/proto/go/session/v1/sessionv1connect/session_summary.connect.go deleted file mode 100644 index 470e5e164..000000000 --- a/gen/proto/go/session/v1/sessionv1connect/session_summary.connect.go +++ /dev/null @@ -1,149 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: session/v1/session_summary.proto - -package sessionv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/tstapler/stapler-squad/gen/proto/go/session/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion1_13_0 - -const ( - // SessionSummaryServiceName is the fully-qualified name of the SessionSummaryService service. - SessionSummaryServiceName = "session.v1.SessionSummaryService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // SessionSummaryServiceGetSessionSummaryProcedure is the fully-qualified name of the - // SessionSummaryService's GetSessionSummary RPC. - SessionSummaryServiceGetSessionSummaryProcedure = "/session.v1.SessionSummaryService/GetSessionSummary" - // SessionSummaryServiceRegenerateSessionSummaryProcedure is the fully-qualified name of the - // SessionSummaryService's RegenerateSessionSummary RPC. - SessionSummaryServiceRegenerateSessionSummaryProcedure = "/session.v1.SessionSummaryService/RegenerateSessionSummary" -) - -// SessionSummaryServiceClient is a client for the session.v1.SessionSummaryService service. -type SessionSummaryServiceClient interface { - // GetSessionSummary returns the current summary for a session, if one - // exists. The response's summary field is unset when no row exists yet - // (e.g. the session is still running). - GetSessionSummary(context.Context, *connect.Request[v1.GetSessionSummaryRequest]) (*connect.Response[v1.GetSessionSummaryResponse], error) - // RegenerateSessionSummary triggers regeneration of a session's summary - // and returns the resulting summary. - RegenerateSessionSummary(context.Context, *connect.Request[v1.RegenerateSessionSummaryRequest]) (*connect.Response[v1.RegenerateSessionSummaryResponse], error) -} - -// NewSessionSummaryServiceClient constructs a client for the session.v1.SessionSummaryService -// service. By default, it uses the Connect protocol with the binary Protobuf Codec, asks for -// gzipped responses, and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply -// the connect.WithGRPC() or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewSessionSummaryServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) SessionSummaryServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - sessionSummaryServiceMethods := v1.File_session_v1_session_summary_proto.Services().ByName("SessionSummaryService").Methods() - return &sessionSummaryServiceClient{ - getSessionSummary: connect.NewClient[v1.GetSessionSummaryRequest, v1.GetSessionSummaryResponse]( - httpClient, - baseURL+SessionSummaryServiceGetSessionSummaryProcedure, - connect.WithSchema(sessionSummaryServiceMethods.ByName("GetSessionSummary")), - connect.WithClientOptions(opts...), - ), - regenerateSessionSummary: connect.NewClient[v1.RegenerateSessionSummaryRequest, v1.RegenerateSessionSummaryResponse]( - httpClient, - baseURL+SessionSummaryServiceRegenerateSessionSummaryProcedure, - connect.WithSchema(sessionSummaryServiceMethods.ByName("RegenerateSessionSummary")), - connect.WithClientOptions(opts...), - ), - } -} - -// sessionSummaryServiceClient implements SessionSummaryServiceClient. -type sessionSummaryServiceClient struct { - getSessionSummary *connect.Client[v1.GetSessionSummaryRequest, v1.GetSessionSummaryResponse] - regenerateSessionSummary *connect.Client[v1.RegenerateSessionSummaryRequest, v1.RegenerateSessionSummaryResponse] -} - -// GetSessionSummary calls session.v1.SessionSummaryService.GetSessionSummary. -func (c *sessionSummaryServiceClient) GetSessionSummary(ctx context.Context, req *connect.Request[v1.GetSessionSummaryRequest]) (*connect.Response[v1.GetSessionSummaryResponse], error) { - return c.getSessionSummary.CallUnary(ctx, req) -} - -// RegenerateSessionSummary calls session.v1.SessionSummaryService.RegenerateSessionSummary. -func (c *sessionSummaryServiceClient) RegenerateSessionSummary(ctx context.Context, req *connect.Request[v1.RegenerateSessionSummaryRequest]) (*connect.Response[v1.RegenerateSessionSummaryResponse], error) { - return c.regenerateSessionSummary.CallUnary(ctx, req) -} - -// SessionSummaryServiceHandler is an implementation of the session.v1.SessionSummaryService -// service. -type SessionSummaryServiceHandler interface { - // GetSessionSummary returns the current summary for a session, if one - // exists. The response's summary field is unset when no row exists yet - // (e.g. the session is still running). - GetSessionSummary(context.Context, *connect.Request[v1.GetSessionSummaryRequest]) (*connect.Response[v1.GetSessionSummaryResponse], error) - // RegenerateSessionSummary triggers regeneration of a session's summary - // and returns the resulting summary. - RegenerateSessionSummary(context.Context, *connect.Request[v1.RegenerateSessionSummaryRequest]) (*connect.Response[v1.RegenerateSessionSummaryResponse], error) -} - -// NewSessionSummaryServiceHandler builds an HTTP handler from the service implementation. It -// returns the path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewSessionSummaryServiceHandler(svc SessionSummaryServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - sessionSummaryServiceMethods := v1.File_session_v1_session_summary_proto.Services().ByName("SessionSummaryService").Methods() - sessionSummaryServiceGetSessionSummaryHandler := connect.NewUnaryHandler( - SessionSummaryServiceGetSessionSummaryProcedure, - svc.GetSessionSummary, - connect.WithSchema(sessionSummaryServiceMethods.ByName("GetSessionSummary")), - connect.WithHandlerOptions(opts...), - ) - sessionSummaryServiceRegenerateSessionSummaryHandler := connect.NewUnaryHandler( - SessionSummaryServiceRegenerateSessionSummaryProcedure, - svc.RegenerateSessionSummary, - connect.WithSchema(sessionSummaryServiceMethods.ByName("RegenerateSessionSummary")), - connect.WithHandlerOptions(opts...), - ) - return "/session.v1.SessionSummaryService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case SessionSummaryServiceGetSessionSummaryProcedure: - sessionSummaryServiceGetSessionSummaryHandler.ServeHTTP(w, r) - case SessionSummaryServiceRegenerateSessionSummaryProcedure: - sessionSummaryServiceRegenerateSessionSummaryHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedSessionSummaryServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedSessionSummaryServiceHandler struct{} - -func (UnimplementedSessionSummaryServiceHandler) GetSessionSummary(context.Context, *connect.Request[v1.GetSessionSummaryRequest]) (*connect.Response[v1.GetSessionSummaryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionSummaryService.GetSessionSummary is not implemented")) -} - -func (UnimplementedSessionSummaryServiceHandler) RegenerateSessionSummary(context.Context, *connect.Request[v1.RegenerateSessionSummaryRequest]) (*connect.Response[v1.RegenerateSessionSummaryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.SessionSummaryService.RegenerateSessionSummary is not implemented")) -} diff --git a/gen/proto/go/session/v1/sessionv1connect/unfinished.connect.go b/gen/proto/go/session/v1/sessionv1connect/unfinished.connect.go deleted file mode 100644 index 0fb36c357..000000000 --- a/gen/proto/go/session/v1/sessionv1connect/unfinished.connect.go +++ /dev/null @@ -1,426 +0,0 @@ -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: session/v1/unfinished.proto - -package sessionv1connect - -import ( - connect "connectrpc.com/connect" - context "context" - errors "errors" - v1 "github.com/tstapler/stapler-squad/gen/proto/go/session/v1" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect.IsAtLeastVersion1_13_0 - -const ( - // UnfinishedWorkServiceName is the fully-qualified name of the UnfinishedWorkService service. - UnfinishedWorkServiceName = "session.v1.UnfinishedWorkService" -) - -// These constants are the fully-qualified names of the RPCs defined in this package. They're -// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. -// -// Note that these are different from the fully-qualified method names used by -// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to -// reflection-formatted method names, remove the leading slash and convert the remaining slash to a -// period. -const ( - // UnfinishedWorkServiceListUnfinishedWorkProcedure is the fully-qualified name of the - // UnfinishedWorkService's ListUnfinishedWork RPC. - UnfinishedWorkServiceListUnfinishedWorkProcedure = "/session.v1.UnfinishedWorkService/ListUnfinishedWork" - // UnfinishedWorkServiceWatchUnfinishedWorkProcedure is the fully-qualified name of the - // UnfinishedWorkService's WatchUnfinishedWork RPC. - UnfinishedWorkServiceWatchUnfinishedWorkProcedure = "/session.v1.UnfinishedWorkService/WatchUnfinishedWork" - // UnfinishedWorkServiceScanUnfinishedWorkProcedure is the fully-qualified name of the - // UnfinishedWorkService's ScanUnfinishedWork RPC. - UnfinishedWorkServiceScanUnfinishedWorkProcedure = "/session.v1.UnfinishedWorkService/ScanUnfinishedWork" - // UnfinishedWorkServiceDismissWorktreeProcedure is the fully-qualified name of the - // UnfinishedWorkService's DismissWorktree RPC. - UnfinishedWorkServiceDismissWorktreeProcedure = "/session.v1.UnfinishedWorkService/DismissWorktree" - // UnfinishedWorkServiceUndismissWorktreeProcedure is the fully-qualified name of the - // UnfinishedWorkService's UndismissWorktree RPC. - UnfinishedWorkServiceUndismissWorktreeProcedure = "/session.v1.UnfinishedWorkService/UndismissWorktree" - // UnfinishedWorkServiceSnoozeWorktreeProcedure is the fully-qualified name of the - // UnfinishedWorkService's SnoozeWorktree RPC. - UnfinishedWorkServiceSnoozeWorktreeProcedure = "/session.v1.UnfinishedWorkService/SnoozeWorktree" - // UnfinishedWorkServiceGetWorktreeAISummaryProcedure is the fully-qualified name of the - // UnfinishedWorkService's GetWorktreeAISummary RPC. - UnfinishedWorkServiceGetWorktreeAISummaryProcedure = "/session.v1.UnfinishedWorkService/GetWorktreeAISummary" - // UnfinishedWorkServiceGetWorktreeDiffProcedure is the fully-qualified name of the - // UnfinishedWorkService's GetWorktreeDiff RPC. - UnfinishedWorkServiceGetWorktreeDiffProcedure = "/session.v1.UnfinishedWorkService/GetWorktreeDiff" - // UnfinishedWorkServiceQuickCommitPushProcedure is the fully-qualified name of the - // UnfinishedWorkService's QuickCommitPush RPC. - UnfinishedWorkServiceQuickCommitPushProcedure = "/session.v1.UnfinishedWorkService/QuickCommitPush" - // UnfinishedWorkServiceGetUnfinishedWorkConfigProcedure is the fully-qualified name of the - // UnfinishedWorkService's GetUnfinishedWorkConfig RPC. - UnfinishedWorkServiceGetUnfinishedWorkConfigProcedure = "/session.v1.UnfinishedWorkService/GetUnfinishedWorkConfig" - // UnfinishedWorkServiceUpdateUnfinishedWorkConfigProcedure is the fully-qualified name of the - // UnfinishedWorkService's UpdateUnfinishedWorkConfig RPC. - UnfinishedWorkServiceUpdateUnfinishedWorkConfigProcedure = "/session.v1.UnfinishedWorkService/UpdateUnfinishedWorkConfig" -) - -// UnfinishedWorkServiceClient is a client for the session.v1.UnfinishedWorkService service. -type UnfinishedWorkServiceClient interface { - // ListUnfinishedWork returns the current snapshot of all unfinished worktrees. - ListUnfinishedWork(context.Context, *connect.Request[v1.ListUnfinishedWorkRequest]) (*connect.Response[v1.ListUnfinishedWorkResponse], error) - // WatchUnfinishedWork streams real-time updates as worktrees are scanned. - // Sends initial snapshot then emits events on each scan result change. - WatchUnfinishedWork(context.Context, *connect.Request[v1.WatchUnfinishedWorkRequest]) (*connect.ServerStreamForClient[v1.UnfinishedWorkEvent], error) - // ScanUnfinishedWork triggers an immediate scan of all sources. - ScanUnfinishedWork(context.Context, *connect.Request[v1.ScanUnfinishedWorkRequest]) (*connect.Response[v1.ScanUnfinishedWorkResponse], error) - // DismissWorktree permanently hides a worktree from the Unfinished list. - DismissWorktree(context.Context, *connect.Request[v1.DismissWorktreeRequest]) (*connect.Response[v1.DismissWorktreeResponse], error) - // UndismissWorktree removes the dismiss record so the worktree reappears. - UndismissWorktree(context.Context, *connect.Request[v1.UndismissWorktreeRequest]) (*connect.Response[v1.UndismissWorktreeResponse], error) - // SnoozeWorktree hides a worktree until its HEAD SHA changes. - SnoozeWorktree(context.Context, *connect.Request[v1.SnoozeWorktreeRequest]) (*connect.Response[v1.SnoozeWorktreeResponse], error) - // GetWorktreeAISummary generates (or returns cached) an AI summary for a worktree. - GetWorktreeAISummary(context.Context, *connect.Request[v1.GetWorktreeAISummaryRequest]) (*connect.Response[v1.GetWorktreeAISummaryResponse], error) - // GetWorktreeDiff returns the full git diff for an unfinished worktree without - // requiring an open session. Compares the worktree against the remote default branch. - GetWorktreeDiff(context.Context, *connect.Request[v1.GetWorktreeDiffRequest]) (*connect.Response[v1.GetWorktreeDiffResponse], error) - // QuickCommitPush stages all changes, commits, and pushes in one operation. - QuickCommitPush(context.Context, *connect.Request[v1.QuickCommitPushRequest]) (*connect.Response[v1.QuickCommitPushResponse], error) - // GetUnfinishedWorkConfig retrieves current source configuration. - GetUnfinishedWorkConfig(context.Context, *connect.Request[v1.GetUnfinishedWorkConfigRequest]) (*connect.Response[v1.GetUnfinishedWorkConfigResponse], error) - // UpdateUnfinishedWorkConfig adds/removes watch dirs and pinned repos. - UpdateUnfinishedWorkConfig(context.Context, *connect.Request[v1.UpdateUnfinishedWorkConfigRequest]) (*connect.Response[v1.UpdateUnfinishedWorkConfigResponse], error) -} - -// NewUnfinishedWorkServiceClient constructs a client for the session.v1.UnfinishedWorkService -// service. By default, it uses the Connect protocol with the binary Protobuf Codec, asks for -// gzipped responses, and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply -// the connect.WithGRPC() or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewUnfinishedWorkServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) UnfinishedWorkServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - unfinishedWorkServiceMethods := v1.File_session_v1_unfinished_proto.Services().ByName("UnfinishedWorkService").Methods() - return &unfinishedWorkServiceClient{ - listUnfinishedWork: connect.NewClient[v1.ListUnfinishedWorkRequest, v1.ListUnfinishedWorkResponse]( - httpClient, - baseURL+UnfinishedWorkServiceListUnfinishedWorkProcedure, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("ListUnfinishedWork")), - connect.WithClientOptions(opts...), - ), - watchUnfinishedWork: connect.NewClient[v1.WatchUnfinishedWorkRequest, v1.UnfinishedWorkEvent]( - httpClient, - baseURL+UnfinishedWorkServiceWatchUnfinishedWorkProcedure, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("WatchUnfinishedWork")), - connect.WithClientOptions(opts...), - ), - scanUnfinishedWork: connect.NewClient[v1.ScanUnfinishedWorkRequest, v1.ScanUnfinishedWorkResponse]( - httpClient, - baseURL+UnfinishedWorkServiceScanUnfinishedWorkProcedure, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("ScanUnfinishedWork")), - connect.WithClientOptions(opts...), - ), - dismissWorktree: connect.NewClient[v1.DismissWorktreeRequest, v1.DismissWorktreeResponse]( - httpClient, - baseURL+UnfinishedWorkServiceDismissWorktreeProcedure, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("DismissWorktree")), - connect.WithClientOptions(opts...), - ), - undismissWorktree: connect.NewClient[v1.UndismissWorktreeRequest, v1.UndismissWorktreeResponse]( - httpClient, - baseURL+UnfinishedWorkServiceUndismissWorktreeProcedure, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("UndismissWorktree")), - connect.WithClientOptions(opts...), - ), - snoozeWorktree: connect.NewClient[v1.SnoozeWorktreeRequest, v1.SnoozeWorktreeResponse]( - httpClient, - baseURL+UnfinishedWorkServiceSnoozeWorktreeProcedure, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("SnoozeWorktree")), - connect.WithClientOptions(opts...), - ), - getWorktreeAISummary: connect.NewClient[v1.GetWorktreeAISummaryRequest, v1.GetWorktreeAISummaryResponse]( - httpClient, - baseURL+UnfinishedWorkServiceGetWorktreeAISummaryProcedure, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("GetWorktreeAISummary")), - connect.WithClientOptions(opts...), - ), - getWorktreeDiff: connect.NewClient[v1.GetWorktreeDiffRequest, v1.GetWorktreeDiffResponse]( - httpClient, - baseURL+UnfinishedWorkServiceGetWorktreeDiffProcedure, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("GetWorktreeDiff")), - connect.WithClientOptions(opts...), - ), - quickCommitPush: connect.NewClient[v1.QuickCommitPushRequest, v1.QuickCommitPushResponse]( - httpClient, - baseURL+UnfinishedWorkServiceQuickCommitPushProcedure, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("QuickCommitPush")), - connect.WithClientOptions(opts...), - ), - getUnfinishedWorkConfig: connect.NewClient[v1.GetUnfinishedWorkConfigRequest, v1.GetUnfinishedWorkConfigResponse]( - httpClient, - baseURL+UnfinishedWorkServiceGetUnfinishedWorkConfigProcedure, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("GetUnfinishedWorkConfig")), - connect.WithClientOptions(opts...), - ), - updateUnfinishedWorkConfig: connect.NewClient[v1.UpdateUnfinishedWorkConfigRequest, v1.UpdateUnfinishedWorkConfigResponse]( - httpClient, - baseURL+UnfinishedWorkServiceUpdateUnfinishedWorkConfigProcedure, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("UpdateUnfinishedWorkConfig")), - connect.WithClientOptions(opts...), - ), - } -} - -// unfinishedWorkServiceClient implements UnfinishedWorkServiceClient. -type unfinishedWorkServiceClient struct { - listUnfinishedWork *connect.Client[v1.ListUnfinishedWorkRequest, v1.ListUnfinishedWorkResponse] - watchUnfinishedWork *connect.Client[v1.WatchUnfinishedWorkRequest, v1.UnfinishedWorkEvent] - scanUnfinishedWork *connect.Client[v1.ScanUnfinishedWorkRequest, v1.ScanUnfinishedWorkResponse] - dismissWorktree *connect.Client[v1.DismissWorktreeRequest, v1.DismissWorktreeResponse] - undismissWorktree *connect.Client[v1.UndismissWorktreeRequest, v1.UndismissWorktreeResponse] - snoozeWorktree *connect.Client[v1.SnoozeWorktreeRequest, v1.SnoozeWorktreeResponse] - getWorktreeAISummary *connect.Client[v1.GetWorktreeAISummaryRequest, v1.GetWorktreeAISummaryResponse] - getWorktreeDiff *connect.Client[v1.GetWorktreeDiffRequest, v1.GetWorktreeDiffResponse] - quickCommitPush *connect.Client[v1.QuickCommitPushRequest, v1.QuickCommitPushResponse] - getUnfinishedWorkConfig *connect.Client[v1.GetUnfinishedWorkConfigRequest, v1.GetUnfinishedWorkConfigResponse] - updateUnfinishedWorkConfig *connect.Client[v1.UpdateUnfinishedWorkConfigRequest, v1.UpdateUnfinishedWorkConfigResponse] -} - -// ListUnfinishedWork calls session.v1.UnfinishedWorkService.ListUnfinishedWork. -func (c *unfinishedWorkServiceClient) ListUnfinishedWork(ctx context.Context, req *connect.Request[v1.ListUnfinishedWorkRequest]) (*connect.Response[v1.ListUnfinishedWorkResponse], error) { - return c.listUnfinishedWork.CallUnary(ctx, req) -} - -// WatchUnfinishedWork calls session.v1.UnfinishedWorkService.WatchUnfinishedWork. -func (c *unfinishedWorkServiceClient) WatchUnfinishedWork(ctx context.Context, req *connect.Request[v1.WatchUnfinishedWorkRequest]) (*connect.ServerStreamForClient[v1.UnfinishedWorkEvent], error) { - return c.watchUnfinishedWork.CallServerStream(ctx, req) -} - -// ScanUnfinishedWork calls session.v1.UnfinishedWorkService.ScanUnfinishedWork. -func (c *unfinishedWorkServiceClient) ScanUnfinishedWork(ctx context.Context, req *connect.Request[v1.ScanUnfinishedWorkRequest]) (*connect.Response[v1.ScanUnfinishedWorkResponse], error) { - return c.scanUnfinishedWork.CallUnary(ctx, req) -} - -// DismissWorktree calls session.v1.UnfinishedWorkService.DismissWorktree. -func (c *unfinishedWorkServiceClient) DismissWorktree(ctx context.Context, req *connect.Request[v1.DismissWorktreeRequest]) (*connect.Response[v1.DismissWorktreeResponse], error) { - return c.dismissWorktree.CallUnary(ctx, req) -} - -// UndismissWorktree calls session.v1.UnfinishedWorkService.UndismissWorktree. -func (c *unfinishedWorkServiceClient) UndismissWorktree(ctx context.Context, req *connect.Request[v1.UndismissWorktreeRequest]) (*connect.Response[v1.UndismissWorktreeResponse], error) { - return c.undismissWorktree.CallUnary(ctx, req) -} - -// SnoozeWorktree calls session.v1.UnfinishedWorkService.SnoozeWorktree. -func (c *unfinishedWorkServiceClient) SnoozeWorktree(ctx context.Context, req *connect.Request[v1.SnoozeWorktreeRequest]) (*connect.Response[v1.SnoozeWorktreeResponse], error) { - return c.snoozeWorktree.CallUnary(ctx, req) -} - -// GetWorktreeAISummary calls session.v1.UnfinishedWorkService.GetWorktreeAISummary. -func (c *unfinishedWorkServiceClient) GetWorktreeAISummary(ctx context.Context, req *connect.Request[v1.GetWorktreeAISummaryRequest]) (*connect.Response[v1.GetWorktreeAISummaryResponse], error) { - return c.getWorktreeAISummary.CallUnary(ctx, req) -} - -// GetWorktreeDiff calls session.v1.UnfinishedWorkService.GetWorktreeDiff. -func (c *unfinishedWorkServiceClient) GetWorktreeDiff(ctx context.Context, req *connect.Request[v1.GetWorktreeDiffRequest]) (*connect.Response[v1.GetWorktreeDiffResponse], error) { - return c.getWorktreeDiff.CallUnary(ctx, req) -} - -// QuickCommitPush calls session.v1.UnfinishedWorkService.QuickCommitPush. -func (c *unfinishedWorkServiceClient) QuickCommitPush(ctx context.Context, req *connect.Request[v1.QuickCommitPushRequest]) (*connect.Response[v1.QuickCommitPushResponse], error) { - return c.quickCommitPush.CallUnary(ctx, req) -} - -// GetUnfinishedWorkConfig calls session.v1.UnfinishedWorkService.GetUnfinishedWorkConfig. -func (c *unfinishedWorkServiceClient) GetUnfinishedWorkConfig(ctx context.Context, req *connect.Request[v1.GetUnfinishedWorkConfigRequest]) (*connect.Response[v1.GetUnfinishedWorkConfigResponse], error) { - return c.getUnfinishedWorkConfig.CallUnary(ctx, req) -} - -// UpdateUnfinishedWorkConfig calls session.v1.UnfinishedWorkService.UpdateUnfinishedWorkConfig. -func (c *unfinishedWorkServiceClient) UpdateUnfinishedWorkConfig(ctx context.Context, req *connect.Request[v1.UpdateUnfinishedWorkConfigRequest]) (*connect.Response[v1.UpdateUnfinishedWorkConfigResponse], error) { - return c.updateUnfinishedWorkConfig.CallUnary(ctx, req) -} - -// UnfinishedWorkServiceHandler is an implementation of the session.v1.UnfinishedWorkService -// service. -type UnfinishedWorkServiceHandler interface { - // ListUnfinishedWork returns the current snapshot of all unfinished worktrees. - ListUnfinishedWork(context.Context, *connect.Request[v1.ListUnfinishedWorkRequest]) (*connect.Response[v1.ListUnfinishedWorkResponse], error) - // WatchUnfinishedWork streams real-time updates as worktrees are scanned. - // Sends initial snapshot then emits events on each scan result change. - WatchUnfinishedWork(context.Context, *connect.Request[v1.WatchUnfinishedWorkRequest], *connect.ServerStream[v1.UnfinishedWorkEvent]) error - // ScanUnfinishedWork triggers an immediate scan of all sources. - ScanUnfinishedWork(context.Context, *connect.Request[v1.ScanUnfinishedWorkRequest]) (*connect.Response[v1.ScanUnfinishedWorkResponse], error) - // DismissWorktree permanently hides a worktree from the Unfinished list. - DismissWorktree(context.Context, *connect.Request[v1.DismissWorktreeRequest]) (*connect.Response[v1.DismissWorktreeResponse], error) - // UndismissWorktree removes the dismiss record so the worktree reappears. - UndismissWorktree(context.Context, *connect.Request[v1.UndismissWorktreeRequest]) (*connect.Response[v1.UndismissWorktreeResponse], error) - // SnoozeWorktree hides a worktree until its HEAD SHA changes. - SnoozeWorktree(context.Context, *connect.Request[v1.SnoozeWorktreeRequest]) (*connect.Response[v1.SnoozeWorktreeResponse], error) - // GetWorktreeAISummary generates (or returns cached) an AI summary for a worktree. - GetWorktreeAISummary(context.Context, *connect.Request[v1.GetWorktreeAISummaryRequest]) (*connect.Response[v1.GetWorktreeAISummaryResponse], error) - // GetWorktreeDiff returns the full git diff for an unfinished worktree without - // requiring an open session. Compares the worktree against the remote default branch. - GetWorktreeDiff(context.Context, *connect.Request[v1.GetWorktreeDiffRequest]) (*connect.Response[v1.GetWorktreeDiffResponse], error) - // QuickCommitPush stages all changes, commits, and pushes in one operation. - QuickCommitPush(context.Context, *connect.Request[v1.QuickCommitPushRequest]) (*connect.Response[v1.QuickCommitPushResponse], error) - // GetUnfinishedWorkConfig retrieves current source configuration. - GetUnfinishedWorkConfig(context.Context, *connect.Request[v1.GetUnfinishedWorkConfigRequest]) (*connect.Response[v1.GetUnfinishedWorkConfigResponse], error) - // UpdateUnfinishedWorkConfig adds/removes watch dirs and pinned repos. - UpdateUnfinishedWorkConfig(context.Context, *connect.Request[v1.UpdateUnfinishedWorkConfigRequest]) (*connect.Response[v1.UpdateUnfinishedWorkConfigResponse], error) -} - -// NewUnfinishedWorkServiceHandler builds an HTTP handler from the service implementation. It -// returns the path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewUnfinishedWorkServiceHandler(svc UnfinishedWorkServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { - unfinishedWorkServiceMethods := v1.File_session_v1_unfinished_proto.Services().ByName("UnfinishedWorkService").Methods() - unfinishedWorkServiceListUnfinishedWorkHandler := connect.NewUnaryHandler( - UnfinishedWorkServiceListUnfinishedWorkProcedure, - svc.ListUnfinishedWork, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("ListUnfinishedWork")), - connect.WithHandlerOptions(opts...), - ) - unfinishedWorkServiceWatchUnfinishedWorkHandler := connect.NewServerStreamHandler( - UnfinishedWorkServiceWatchUnfinishedWorkProcedure, - svc.WatchUnfinishedWork, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("WatchUnfinishedWork")), - connect.WithHandlerOptions(opts...), - ) - unfinishedWorkServiceScanUnfinishedWorkHandler := connect.NewUnaryHandler( - UnfinishedWorkServiceScanUnfinishedWorkProcedure, - svc.ScanUnfinishedWork, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("ScanUnfinishedWork")), - connect.WithHandlerOptions(opts...), - ) - unfinishedWorkServiceDismissWorktreeHandler := connect.NewUnaryHandler( - UnfinishedWorkServiceDismissWorktreeProcedure, - svc.DismissWorktree, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("DismissWorktree")), - connect.WithHandlerOptions(opts...), - ) - unfinishedWorkServiceUndismissWorktreeHandler := connect.NewUnaryHandler( - UnfinishedWorkServiceUndismissWorktreeProcedure, - svc.UndismissWorktree, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("UndismissWorktree")), - connect.WithHandlerOptions(opts...), - ) - unfinishedWorkServiceSnoozeWorktreeHandler := connect.NewUnaryHandler( - UnfinishedWorkServiceSnoozeWorktreeProcedure, - svc.SnoozeWorktree, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("SnoozeWorktree")), - connect.WithHandlerOptions(opts...), - ) - unfinishedWorkServiceGetWorktreeAISummaryHandler := connect.NewUnaryHandler( - UnfinishedWorkServiceGetWorktreeAISummaryProcedure, - svc.GetWorktreeAISummary, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("GetWorktreeAISummary")), - connect.WithHandlerOptions(opts...), - ) - unfinishedWorkServiceGetWorktreeDiffHandler := connect.NewUnaryHandler( - UnfinishedWorkServiceGetWorktreeDiffProcedure, - svc.GetWorktreeDiff, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("GetWorktreeDiff")), - connect.WithHandlerOptions(opts...), - ) - unfinishedWorkServiceQuickCommitPushHandler := connect.NewUnaryHandler( - UnfinishedWorkServiceQuickCommitPushProcedure, - svc.QuickCommitPush, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("QuickCommitPush")), - connect.WithHandlerOptions(opts...), - ) - unfinishedWorkServiceGetUnfinishedWorkConfigHandler := connect.NewUnaryHandler( - UnfinishedWorkServiceGetUnfinishedWorkConfigProcedure, - svc.GetUnfinishedWorkConfig, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("GetUnfinishedWorkConfig")), - connect.WithHandlerOptions(opts...), - ) - unfinishedWorkServiceUpdateUnfinishedWorkConfigHandler := connect.NewUnaryHandler( - UnfinishedWorkServiceUpdateUnfinishedWorkConfigProcedure, - svc.UpdateUnfinishedWorkConfig, - connect.WithSchema(unfinishedWorkServiceMethods.ByName("UpdateUnfinishedWorkConfig")), - connect.WithHandlerOptions(opts...), - ) - return "/session.v1.UnfinishedWorkService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch r.URL.Path { - case UnfinishedWorkServiceListUnfinishedWorkProcedure: - unfinishedWorkServiceListUnfinishedWorkHandler.ServeHTTP(w, r) - case UnfinishedWorkServiceWatchUnfinishedWorkProcedure: - unfinishedWorkServiceWatchUnfinishedWorkHandler.ServeHTTP(w, r) - case UnfinishedWorkServiceScanUnfinishedWorkProcedure: - unfinishedWorkServiceScanUnfinishedWorkHandler.ServeHTTP(w, r) - case UnfinishedWorkServiceDismissWorktreeProcedure: - unfinishedWorkServiceDismissWorktreeHandler.ServeHTTP(w, r) - case UnfinishedWorkServiceUndismissWorktreeProcedure: - unfinishedWorkServiceUndismissWorktreeHandler.ServeHTTP(w, r) - case UnfinishedWorkServiceSnoozeWorktreeProcedure: - unfinishedWorkServiceSnoozeWorktreeHandler.ServeHTTP(w, r) - case UnfinishedWorkServiceGetWorktreeAISummaryProcedure: - unfinishedWorkServiceGetWorktreeAISummaryHandler.ServeHTTP(w, r) - case UnfinishedWorkServiceGetWorktreeDiffProcedure: - unfinishedWorkServiceGetWorktreeDiffHandler.ServeHTTP(w, r) - case UnfinishedWorkServiceQuickCommitPushProcedure: - unfinishedWorkServiceQuickCommitPushHandler.ServeHTTP(w, r) - case UnfinishedWorkServiceGetUnfinishedWorkConfigProcedure: - unfinishedWorkServiceGetUnfinishedWorkConfigHandler.ServeHTTP(w, r) - case UnfinishedWorkServiceUpdateUnfinishedWorkConfigProcedure: - unfinishedWorkServiceUpdateUnfinishedWorkConfigHandler.ServeHTTP(w, r) - default: - http.NotFound(w, r) - } - }) -} - -// UnimplementedUnfinishedWorkServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedUnfinishedWorkServiceHandler struct{} - -func (UnimplementedUnfinishedWorkServiceHandler) ListUnfinishedWork(context.Context, *connect.Request[v1.ListUnfinishedWorkRequest]) (*connect.Response[v1.ListUnfinishedWorkResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.UnfinishedWorkService.ListUnfinishedWork is not implemented")) -} - -func (UnimplementedUnfinishedWorkServiceHandler) WatchUnfinishedWork(context.Context, *connect.Request[v1.WatchUnfinishedWorkRequest], *connect.ServerStream[v1.UnfinishedWorkEvent]) error { - return connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.UnfinishedWorkService.WatchUnfinishedWork is not implemented")) -} - -func (UnimplementedUnfinishedWorkServiceHandler) ScanUnfinishedWork(context.Context, *connect.Request[v1.ScanUnfinishedWorkRequest]) (*connect.Response[v1.ScanUnfinishedWorkResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.UnfinishedWorkService.ScanUnfinishedWork is not implemented")) -} - -func (UnimplementedUnfinishedWorkServiceHandler) DismissWorktree(context.Context, *connect.Request[v1.DismissWorktreeRequest]) (*connect.Response[v1.DismissWorktreeResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.UnfinishedWorkService.DismissWorktree is not implemented")) -} - -func (UnimplementedUnfinishedWorkServiceHandler) UndismissWorktree(context.Context, *connect.Request[v1.UndismissWorktreeRequest]) (*connect.Response[v1.UndismissWorktreeResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.UnfinishedWorkService.UndismissWorktree is not implemented")) -} - -func (UnimplementedUnfinishedWorkServiceHandler) SnoozeWorktree(context.Context, *connect.Request[v1.SnoozeWorktreeRequest]) (*connect.Response[v1.SnoozeWorktreeResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.UnfinishedWorkService.SnoozeWorktree is not implemented")) -} - -func (UnimplementedUnfinishedWorkServiceHandler) GetWorktreeAISummary(context.Context, *connect.Request[v1.GetWorktreeAISummaryRequest]) (*connect.Response[v1.GetWorktreeAISummaryResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.UnfinishedWorkService.GetWorktreeAISummary is not implemented")) -} - -func (UnimplementedUnfinishedWorkServiceHandler) GetWorktreeDiff(context.Context, *connect.Request[v1.GetWorktreeDiffRequest]) (*connect.Response[v1.GetWorktreeDiffResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.UnfinishedWorkService.GetWorktreeDiff is not implemented")) -} - -func (UnimplementedUnfinishedWorkServiceHandler) QuickCommitPush(context.Context, *connect.Request[v1.QuickCommitPushRequest]) (*connect.Response[v1.QuickCommitPushResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.UnfinishedWorkService.QuickCommitPush is not implemented")) -} - -func (UnimplementedUnfinishedWorkServiceHandler) GetUnfinishedWorkConfig(context.Context, *connect.Request[v1.GetUnfinishedWorkConfigRequest]) (*connect.Response[v1.GetUnfinishedWorkConfigResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.UnfinishedWorkService.GetUnfinishedWorkConfig is not implemented")) -} - -func (UnimplementedUnfinishedWorkServiceHandler) UpdateUnfinishedWorkConfig(context.Context, *connect.Request[v1.UpdateUnfinishedWorkConfigRequest]) (*connect.Response[v1.UpdateUnfinishedWorkConfigResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("session.v1.UnfinishedWorkService.UpdateUnfinishedWorkConfig is not implemented")) -} diff --git a/gen/proto/go/session/v1/types.pb.go b/gen/proto/go/session/v1/types.pb.go deleted file mode 100644 index 7d1b82c48..000000000 --- a/gen/proto/go/session/v1/types.pb.go +++ /dev/null @@ -1,7566 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.12 -// protoc (unknown) -// source: session/v1/types.proto - -package sessionv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// VNCStatus represents the operational state of the VNC subsystem for a session. -type VNCStatus int32 - -const ( - VNCStatus_VNC_STATUS_UNSPECIFIED VNCStatus = 0 - // Xvfb/x11vnc processes are starting. - VNCStatus_VNC_STATUS_STARTING VNCStatus = 1 - // A browser window has been detected; x11vnc is in focused -id mode. - VNCStatus_VNC_STATUS_READY VNCStatus = 2 - // VNC is running (full display mode) but no browser window detected yet. - VNCStatus_VNC_STATUS_NO_BROWSER VNCStatus = 3 - // VNC is unavailable: missing binaries, unsupported platform, or startup failed. - VNCStatus_VNC_STATUS_UNAVAILABLE VNCStatus = 4 - // A pre-existing X display was detected and reused; x11vnc is not running. - VNCStatus_VNC_STATUS_PASSTHROUGH VNCStatus = 5 -) - -// Enum value maps for VNCStatus. -var ( - VNCStatus_name = map[int32]string{ - 0: "VNC_STATUS_UNSPECIFIED", - 1: "VNC_STATUS_STARTING", - 2: "VNC_STATUS_READY", - 3: "VNC_STATUS_NO_BROWSER", - 4: "VNC_STATUS_UNAVAILABLE", - 5: "VNC_STATUS_PASSTHROUGH", - } - VNCStatus_value = map[string]int32{ - "VNC_STATUS_UNSPECIFIED": 0, - "VNC_STATUS_STARTING": 1, - "VNC_STATUS_READY": 2, - "VNC_STATUS_NO_BROWSER": 3, - "VNC_STATUS_UNAVAILABLE": 4, - "VNC_STATUS_PASSTHROUGH": 5, - } -) - -func (x VNCStatus) Enum() *VNCStatus { - p := new(VNCStatus) - *p = x - return p -} - -func (x VNCStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VNCStatus) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[0].Descriptor() -} - -func (VNCStatus) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[0] -} - -func (x VNCStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use VNCStatus.Descriptor instead. -func (VNCStatus) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{0} -} - -// CDPStatus represents the operational state of the CDP subsystem for a session. -type CDPStatus int32 - -const ( - CDPStatus_CDP_STATUS_UNSPECIFIED CDPStatus = 0 - // Polling for Chrome on the allocated CDP port. - CDPStatus_CDP_STATUS_WAITING CDPStatus = 1 - // Connected to Chrome and receiving screencast frames. - CDPStatus_CDP_STATUS_STREAMING CDPStatus = 2 - // CDP port allocated but Chrome not yet detected. - CDPStatus_CDP_STATUS_NO_BROWSER CDPStatus = 3 - // CDP unavailable: Chrome not found or startup failed. - CDPStatus_CDP_STATUS_UNAVAILABLE CDPStatus = 4 -) - -// Enum value maps for CDPStatus. -var ( - CDPStatus_name = map[int32]string{ - 0: "CDP_STATUS_UNSPECIFIED", - 1: "CDP_STATUS_WAITING", - 2: "CDP_STATUS_STREAMING", - 3: "CDP_STATUS_NO_BROWSER", - 4: "CDP_STATUS_UNAVAILABLE", - } - CDPStatus_value = map[string]int32{ - "CDP_STATUS_UNSPECIFIED": 0, - "CDP_STATUS_WAITING": 1, - "CDP_STATUS_STREAMING": 2, - "CDP_STATUS_NO_BROWSER": 3, - "CDP_STATUS_UNAVAILABLE": 4, - } -) - -func (x CDPStatus) Enum() *CDPStatus { - p := new(CDPStatus) - *p = x - return p -} - -func (x CDPStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CDPStatus) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[1].Descriptor() -} - -func (CDPStatus) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[1] -} - -func (x CDPStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use CDPStatus.Descriptor instead. -func (CDPStatus) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{1} -} - -// SessionStatus represents the current state of a session. -// Maps to session.Status enum in Go. -// Wire values for RUNNING(1), READY(2), LOADING(3), NEEDS_APPROVAL(5), CREATING(6), STOPPED(7) -// are preserved for backward compatibility with existing clients. -type SessionStatus int32 - -const ( - SessionStatus_SESSION_STATUS_UNSPECIFIED SessionStatus = 0 - // Session has an active AI process (replaces legacy RUNNING and READY). - SessionStatus_SESSION_STATUS_ACTIVE SessionStatus = 1 - // Deprecated: use SESSION_STATUS_ACTIVE. Integer wire value 1 preserved. - // - // Deprecated: Marked as deprecated in session/v1/types.proto. - SessionStatus_SESSION_STATUS_RUNNING SessionStatus = 1 - // Deprecated: use SESSION_STATUS_ACTIVE. Integer wire value 2 (legacy ready state). - // - // Deprecated: Marked as deprecated in session/v1/types.proto. - SessionStatus_SESSION_STATUS_READY SessionStatus = 2 - // Deprecated: use SESSION_STATUS_CREATING. Integer wire value 3 (legacy loading state). - // - // Deprecated: Marked as deprecated in session/v1/types.proto. - SessionStatus_SESSION_STATUS_LOADING SessionStatus = 3 - // Session is paused (worktree removed but branch preserved). - SessionStatus_SESSION_STATUS_PAUSED SessionStatus = 4 - // Deprecated: NeedsApproval is now a sub-status. Integer wire value 5 preserved. - // - // Deprecated: Marked as deprecated in session/v1/types.proto. - SessionStatus_SESSION_STATUS_NEEDS_APPROVAL SessionStatus = 5 - // Session is being initialized (transient state before first start). - SessionStatus_SESSION_STATUS_CREATING SessionStatus = 6 - // Session has been stopped (terminal state, cannot transition further). - SessionStatus_SESSION_STATUS_STOPPED SessionStatus = 7 - // Session has been hibernated (checkpoint written, tmux session killed). - SessionStatus_SESSION_STATUS_HIBERNATED SessionStatus = 8 - // Session is being restored from a previous run (transient startup state). - // Never persisted to the database. Transitions to ACTIVE or CREATING on completion. - SessionStatus_SESSION_STATUS_RESTORING SessionStatus = 9 - // Session's tmux pane exited abnormally (non-zero exit code or signal) and was - // detected via remain-on-exit polling, distinct from a normal STOPPED - // completion. Not auto-recovered; requires an explicit resume (see - // ResumeCrashedSession). - SessionStatus_SESSION_STATUS_CRASHED SessionStatus = 10 -) - -// Enum value maps for SessionStatus. -var ( - SessionStatus_name = map[int32]string{ - 0: "SESSION_STATUS_UNSPECIFIED", - 1: "SESSION_STATUS_ACTIVE", - // Duplicate value: 1: "SESSION_STATUS_RUNNING", - 2: "SESSION_STATUS_READY", - 3: "SESSION_STATUS_LOADING", - 4: "SESSION_STATUS_PAUSED", - 5: "SESSION_STATUS_NEEDS_APPROVAL", - 6: "SESSION_STATUS_CREATING", - 7: "SESSION_STATUS_STOPPED", - 8: "SESSION_STATUS_HIBERNATED", - 9: "SESSION_STATUS_RESTORING", - 10: "SESSION_STATUS_CRASHED", - } - SessionStatus_value = map[string]int32{ - "SESSION_STATUS_UNSPECIFIED": 0, - "SESSION_STATUS_ACTIVE": 1, - "SESSION_STATUS_RUNNING": 1, - "SESSION_STATUS_READY": 2, - "SESSION_STATUS_LOADING": 3, - "SESSION_STATUS_PAUSED": 4, - "SESSION_STATUS_NEEDS_APPROVAL": 5, - "SESSION_STATUS_CREATING": 6, - "SESSION_STATUS_STOPPED": 7, - "SESSION_STATUS_HIBERNATED": 8, - "SESSION_STATUS_RESTORING": 9, - "SESSION_STATUS_CRASHED": 10, - } -) - -func (x SessionStatus) Enum() *SessionStatus { - p := new(SessionStatus) - *p = x - return p -} - -func (x SessionStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SessionStatus) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[2].Descriptor() -} - -func (SessionStatus) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[2] -} - -func (x SessionStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SessionStatus.Descriptor instead. -func (SessionStatus) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{2} -} - -// SessionType determines the session workflow. -type SessionType int32 - -const ( - SessionType_SESSION_TYPE_UNSPECIFIED SessionType = 0 - // Work in existing directory without worktree. - SessionType_SESSION_TYPE_DIRECTORY SessionType = 1 - // Create new git worktree with new branch. - SessionType_SESSION_TYPE_NEW_WORKTREE SessionType = 2 - // Reuse existing git worktree. - SessionType_SESSION_TYPE_EXISTING_WORKTREE SessionType = 3 - // Create a directory, run git init, and start a session in the new repo. - SessionType_SESSION_TYPE_NEW_PROJECT SessionType = 4 - // Generate a fresh temporary directory under one_off_base_dir and start a directory session. - SessionType_SESSION_TYPE_ONE_OFF SessionType = 5 -) - -// Enum value maps for SessionType. -var ( - SessionType_name = map[int32]string{ - 0: "SESSION_TYPE_UNSPECIFIED", - 1: "SESSION_TYPE_DIRECTORY", - 2: "SESSION_TYPE_NEW_WORKTREE", - 3: "SESSION_TYPE_EXISTING_WORKTREE", - 4: "SESSION_TYPE_NEW_PROJECT", - 5: "SESSION_TYPE_ONE_OFF", - } - SessionType_value = map[string]int32{ - "SESSION_TYPE_UNSPECIFIED": 0, - "SESSION_TYPE_DIRECTORY": 1, - "SESSION_TYPE_NEW_WORKTREE": 2, - "SESSION_TYPE_EXISTING_WORKTREE": 3, - "SESSION_TYPE_NEW_PROJECT": 4, - "SESSION_TYPE_ONE_OFF": 5, - } -) - -func (x SessionType) Enum() *SessionType { - p := new(SessionType) - *p = x - return p -} - -func (x SessionType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SessionType) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[3].Descriptor() -} - -func (SessionType) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[3] -} - -func (x SessionType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SessionType.Descriptor instead. -func (SessionType) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{3} -} - -// InstanceType indicates whether a session is managed by claude-squad or external. -type InstanceType int32 - -const ( - InstanceType_INSTANCE_TYPE_UNSPECIFIED InstanceType = 0 - // Session fully managed by claude-squad with complete lifecycle control. - InstanceType_INSTANCE_TYPE_MANAGED InstanceType = 1 - // Session discovered externally (e.g., via ssq-mux) with limited interaction. - InstanceType_INSTANCE_TYPE_EXTERNAL InstanceType = 2 -) - -// Enum value maps for InstanceType. -var ( - InstanceType_name = map[int32]string{ - 0: "INSTANCE_TYPE_UNSPECIFIED", - 1: "INSTANCE_TYPE_MANAGED", - 2: "INSTANCE_TYPE_EXTERNAL", - } - InstanceType_value = map[string]int32{ - "INSTANCE_TYPE_UNSPECIFIED": 0, - "INSTANCE_TYPE_MANAGED": 1, - "INSTANCE_TYPE_EXTERNAL": 2, - } -) - -func (x InstanceType) Enum() *InstanceType { - p := new(InstanceType) - *p = x - return p -} - -func (x InstanceType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (InstanceType) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[4].Descriptor() -} - -func (InstanceType) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[4] -} - -func (x InstanceType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use InstanceType.Descriptor instead. -func (InstanceType) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{4} -} - -// DetectedStatus represents the fine-grained activity state detected from PTY output analysis. -// Derived from terminal pattern matching in the detection layer; never stored in the database. -// Only meaningful when Session.status == SESSION_STATUS_ACTIVE. -type DetectedStatus int32 - -const ( - DetectedStatus_DETECTED_STATUS_UNSPECIFIED DetectedStatus = 0 - DetectedStatus_DETECTED_STATUS_IDLE DetectedStatus = 1 - DetectedStatus_DETECTED_STATUS_PROCESSING DetectedStatus = 2 - DetectedStatus_DETECTED_STATUS_EXECUTING DetectedStatus = 3 - DetectedStatus_DETECTED_STATUS_NEEDS_APPROVAL DetectedStatus = 4 - DetectedStatus_DETECTED_STATUS_INPUT_REQUIRED DetectedStatus = 5 - DetectedStatus_DETECTED_STATUS_ERROR DetectedStatus = 6 - DetectedStatus_DETECTED_STATUS_TESTS_FAILING DetectedStatus = 7 - DetectedStatus_DETECTED_STATUS_SUCCESS DetectedStatus = 8 - DetectedStatus_DETECTED_STATUS_UNKNOWN DetectedStatus = 9 - DetectedStatus_DETECTED_STATUS_READY DetectedStatus = 10 - DetectedStatus_DETECTED_STATUS_WAITING_FOR_AGENT DetectedStatus = 11 -) - -// Enum value maps for DetectedStatus. -var ( - DetectedStatus_name = map[int32]string{ - 0: "DETECTED_STATUS_UNSPECIFIED", - 1: "DETECTED_STATUS_IDLE", - 2: "DETECTED_STATUS_PROCESSING", - 3: "DETECTED_STATUS_EXECUTING", - 4: "DETECTED_STATUS_NEEDS_APPROVAL", - 5: "DETECTED_STATUS_INPUT_REQUIRED", - 6: "DETECTED_STATUS_ERROR", - 7: "DETECTED_STATUS_TESTS_FAILING", - 8: "DETECTED_STATUS_SUCCESS", - 9: "DETECTED_STATUS_UNKNOWN", - 10: "DETECTED_STATUS_READY", - 11: "DETECTED_STATUS_WAITING_FOR_AGENT", - } - DetectedStatus_value = map[string]int32{ - "DETECTED_STATUS_UNSPECIFIED": 0, - "DETECTED_STATUS_IDLE": 1, - "DETECTED_STATUS_PROCESSING": 2, - "DETECTED_STATUS_EXECUTING": 3, - "DETECTED_STATUS_NEEDS_APPROVAL": 4, - "DETECTED_STATUS_INPUT_REQUIRED": 5, - "DETECTED_STATUS_ERROR": 6, - "DETECTED_STATUS_TESTS_FAILING": 7, - "DETECTED_STATUS_SUCCESS": 8, - "DETECTED_STATUS_UNKNOWN": 9, - "DETECTED_STATUS_READY": 10, - "DETECTED_STATUS_WAITING_FOR_AGENT": 11, - } -) - -func (x DetectedStatus) Enum() *DetectedStatus { - p := new(DetectedStatus) - *p = x - return p -} - -func (x DetectedStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DetectedStatus) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[5].Descriptor() -} - -func (DetectedStatus) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[5] -} - -func (x DetectedStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DetectedStatus.Descriptor instead. -func (DetectedStatus) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{5} -} - -// WorkingState represents the active-work status of a session for review queue filtering. -// Populated from IdleDetector state; allows frontend to distinguish sessions that are -// actively working from those waiting for user attention. -type WorkingState int32 - -const ( - WorkingState_WORKING_STATE_UNSPECIFIED WorkingState = 0 - // Session is actively generating output (Claude producing tokens, interrupt available). - WorkingState_WORKING_STATE_ACTIVE WorkingState = 1 - // Session is running a tool (Bash, Edit, etc.) with no interrupt visible. - WorkingState_WORKING_STATE_PROCESSING WorkingState = 2 - // Session is at the idle prompt, ready for user input. - WorkingState_WORKING_STATE_IDLE WorkingState = 3 - // Session has been silent beyond the idle threshold (may be stuck or waiting). - WorkingState_WORKING_STATE_WAITING WorkingState = 4 -) - -// Enum value maps for WorkingState. -var ( - WorkingState_name = map[int32]string{ - 0: "WORKING_STATE_UNSPECIFIED", - 1: "WORKING_STATE_ACTIVE", - 2: "WORKING_STATE_PROCESSING", - 3: "WORKING_STATE_IDLE", - 4: "WORKING_STATE_WAITING", - } - WorkingState_value = map[string]int32{ - "WORKING_STATE_UNSPECIFIED": 0, - "WORKING_STATE_ACTIVE": 1, - "WORKING_STATE_PROCESSING": 2, - "WORKING_STATE_IDLE": 3, - "WORKING_STATE_WAITING": 4, - } -) - -func (x WorkingState) Enum() *WorkingState { - p := new(WorkingState) - *p = x - return p -} - -func (x WorkingState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (WorkingState) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[6].Descriptor() -} - -func (WorkingState) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[6] -} - -func (x WorkingState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use WorkingState.Descriptor instead. -func (WorkingState) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{6} -} - -// SubStatus provides fine-grained activity state for Active sessions. -// Derived at read time from the detection layer; never stored in the database. -type SubStatus int32 - -const ( - SubStatus_SUB_STATUS_UNSPECIFIED SubStatus = 0 - // Session is at the idle prompt, waiting for user input. - SubStatus_SUB_STATUS_IDLE SubStatus = 1 - // Session is actively processing (Claude generating tokens or running a tool). - SubStatus_SUB_STATUS_PROCESSING SubStatus = 2 - // Session is waiting for user approval on a tool-use request. - SubStatus_SUB_STATUS_NEEDS_APPROVAL SubStatus = 3 - // Session encountered an error state. - SubStatus_SUB_STATUS_ERROR SubStatus = 4 - // Tests are currently failing. - SubStatus_SUB_STATUS_TESTS_FAILING SubStatus = 5 - // Session is experiencing API rate limiting. - SubStatus_SUB_STATUS_RATE_LIMITED SubStatus = 6 - // Session is presenting a numbered option menu or open-ended question — user must type or select. - SubStatus_SUB_STATUS_INPUT_REQUIRED SubStatus = 7 - // Session is at the input prompt, ready for the user's next instruction. - SubStatus_SUB_STATUS_READY SubStatus = 8 - // Task completed successfully. - SubStatus_SUB_STATUS_SUCCESS SubStatus = 9 - // Claude is waiting for one or more background agents to finish (e.g. "✻ Waiting for 2 background agents"). - SubStatus_SUB_STATUS_WAITING_FOR_AGENT SubStatus = 10 -) - -// Enum value maps for SubStatus. -var ( - SubStatus_name = map[int32]string{ - 0: "SUB_STATUS_UNSPECIFIED", - 1: "SUB_STATUS_IDLE", - 2: "SUB_STATUS_PROCESSING", - 3: "SUB_STATUS_NEEDS_APPROVAL", - 4: "SUB_STATUS_ERROR", - 5: "SUB_STATUS_TESTS_FAILING", - 6: "SUB_STATUS_RATE_LIMITED", - 7: "SUB_STATUS_INPUT_REQUIRED", - 8: "SUB_STATUS_READY", - 9: "SUB_STATUS_SUCCESS", - 10: "SUB_STATUS_WAITING_FOR_AGENT", - } - SubStatus_value = map[string]int32{ - "SUB_STATUS_UNSPECIFIED": 0, - "SUB_STATUS_IDLE": 1, - "SUB_STATUS_PROCESSING": 2, - "SUB_STATUS_NEEDS_APPROVAL": 3, - "SUB_STATUS_ERROR": 4, - "SUB_STATUS_TESTS_FAILING": 5, - "SUB_STATUS_RATE_LIMITED": 6, - "SUB_STATUS_INPUT_REQUIRED": 7, - "SUB_STATUS_READY": 8, - "SUB_STATUS_SUCCESS": 9, - "SUB_STATUS_WAITING_FOR_AGENT": 10, - } -) - -func (x SubStatus) Enum() *SubStatus { - p := new(SubStatus) - *p = x - return p -} - -func (x SubStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SubStatus) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[7].Descriptor() -} - -func (SubStatus) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[7] -} - -func (x SubStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SubStatus.Descriptor instead. -func (SubStatus) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{7} -} - -// RateLimitState indicates whether the session is experiencing rate limiting. -type RateLimitState int32 - -const ( - RateLimitState_RATE_LIMIT_STATE_UNSPECIFIED RateLimitState = 0 - // No rate limit detected - RateLimitState_RATE_LIMIT_STATE_NONE RateLimitState = 1 - // Rate limit detected, waiting for reset time - RateLimitState_RATE_LIMIT_STATE_WAITING RateLimitState = 2 - // Currently attempting recovery - RateLimitState_RATE_LIMIT_STATE_RECOVERING RateLimitState = 3 - // Successfully recovered from rate limit - RateLimitState_RATE_LIMIT_STATE_RECOVERED RateLimitState = 4 - // Recovery failed - RateLimitState_RATE_LIMIT_STATE_FAILED RateLimitState = 5 -) - -// Enum value maps for RateLimitState. -var ( - RateLimitState_name = map[int32]string{ - 0: "RATE_LIMIT_STATE_UNSPECIFIED", - 1: "RATE_LIMIT_STATE_NONE", - 2: "RATE_LIMIT_STATE_WAITING", - 3: "RATE_LIMIT_STATE_RECOVERING", - 4: "RATE_LIMIT_STATE_RECOVERED", - 5: "RATE_LIMIT_STATE_FAILED", - } - RateLimitState_value = map[string]int32{ - "RATE_LIMIT_STATE_UNSPECIFIED": 0, - "RATE_LIMIT_STATE_NONE": 1, - "RATE_LIMIT_STATE_WAITING": 2, - "RATE_LIMIT_STATE_RECOVERING": 3, - "RATE_LIMIT_STATE_RECOVERED": 4, - "RATE_LIMIT_STATE_FAILED": 5, - } -) - -func (x RateLimitState) Enum() *RateLimitState { - p := new(RateLimitState) - *p = x - return p -} - -func (x RateLimitState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (RateLimitState) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[8].Descriptor() -} - -func (RateLimitState) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[8] -} - -func (x RateLimitState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use RateLimitState.Descriptor instead. -func (RateLimitState) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{8} -} - -// Priority levels for review queue items (highest to lowest urgency). -type Priority int32 - -const ( - Priority_PRIORITY_UNSPECIFIED Priority = 0 - // 🔴 Critical - requires immediate attention (errors, failures). - Priority_PRIORITY_URGENT Priority = 1 - // 🟡 Important - needs attention soon (approvals, prompts). - Priority_PRIORITY_HIGH Priority = 2 - // 🔵 Normal - routine attention needed (idle, waiting). - Priority_PRIORITY_MEDIUM Priority = 3 - // ⚪ Low - informational (task complete, status change). - Priority_PRIORITY_LOW Priority = 4 -) - -// Enum value maps for Priority. -var ( - Priority_name = map[int32]string{ - 0: "PRIORITY_UNSPECIFIED", - 1: "PRIORITY_URGENT", - 2: "PRIORITY_HIGH", - 3: "PRIORITY_MEDIUM", - 4: "PRIORITY_LOW", - } - Priority_value = map[string]int32{ - "PRIORITY_UNSPECIFIED": 0, - "PRIORITY_URGENT": 1, - "PRIORITY_HIGH": 2, - "PRIORITY_MEDIUM": 3, - "PRIORITY_LOW": 4, - } -) - -func (x Priority) Enum() *Priority { - p := new(Priority) - *p = x - return p -} - -func (x Priority) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Priority) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[9].Descriptor() -} - -func (Priority) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[9] -} - -func (x Priority) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Priority.Descriptor instead. -func (Priority) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{9} -} - -// AttentionReason indicates why a session needs user attention. -type AttentionReason int32 - -const ( - AttentionReason_ATTENTION_REASON_UNSPECIFIED AttentionReason = 0 - // Session is waiting for user approval on a prompt. - AttentionReason_ATTENTION_REASON_APPROVAL_PENDING AttentionReason = 1 - // Session needs user input to continue. - AttentionReason_ATTENTION_REASON_INPUT_REQUIRED AttentionReason = 2 - // Session encountered an error state. - AttentionReason_ATTENTION_REASON_ERROR_STATE AttentionReason = 3 - // Session has been idle for too long (DEPRECATED - use IDLE or STALE). - AttentionReason_ATTENTION_REASON_IDLE_TIMEOUT AttentionReason = 4 - // Session completed a task and is ready for next steps. - AttentionReason_ATTENTION_REASON_TASK_COMPLETE AttentionReason = 5 - // Session has uncommitted git changes ready to commit. - AttentionReason_ATTENTION_REASON_UNCOMMITTED_CHANGES AttentionReason = 6 - // Session is idle and ready for next task (short idle, expected state). - AttentionReason_ATTENTION_REASON_IDLE AttentionReason = 7 - // Session has been stale with no output for extended period (may be stuck). - AttentionReason_ATTENTION_REASON_STALE AttentionReason = 8 - // Session is explicitly waiting for user input (detected prompt). - AttentionReason_ATTENTION_REASON_WAITING_FOR_USER AttentionReason = 9 - // Session has failing tests that need attention. - AttentionReason_ATTENTION_REASON_TESTS_FAILING AttentionReason = 10 -) - -// Enum value maps for AttentionReason. -var ( - AttentionReason_name = map[int32]string{ - 0: "ATTENTION_REASON_UNSPECIFIED", - 1: "ATTENTION_REASON_APPROVAL_PENDING", - 2: "ATTENTION_REASON_INPUT_REQUIRED", - 3: "ATTENTION_REASON_ERROR_STATE", - 4: "ATTENTION_REASON_IDLE_TIMEOUT", - 5: "ATTENTION_REASON_TASK_COMPLETE", - 6: "ATTENTION_REASON_UNCOMMITTED_CHANGES", - 7: "ATTENTION_REASON_IDLE", - 8: "ATTENTION_REASON_STALE", - 9: "ATTENTION_REASON_WAITING_FOR_USER", - 10: "ATTENTION_REASON_TESTS_FAILING", - } - AttentionReason_value = map[string]int32{ - "ATTENTION_REASON_UNSPECIFIED": 0, - "ATTENTION_REASON_APPROVAL_PENDING": 1, - "ATTENTION_REASON_INPUT_REQUIRED": 2, - "ATTENTION_REASON_ERROR_STATE": 3, - "ATTENTION_REASON_IDLE_TIMEOUT": 4, - "ATTENTION_REASON_TASK_COMPLETE": 5, - "ATTENTION_REASON_UNCOMMITTED_CHANGES": 6, - "ATTENTION_REASON_IDLE": 7, - "ATTENTION_REASON_STALE": 8, - "ATTENTION_REASON_WAITING_FOR_USER": 9, - "ATTENTION_REASON_TESTS_FAILING": 10, - } -) - -func (x AttentionReason) Enum() *AttentionReason { - p := new(AttentionReason) - *p = x - return p -} - -func (x AttentionReason) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AttentionReason) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[10].Descriptor() -} - -func (AttentionReason) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[10] -} - -func (x AttentionReason) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use AttentionReason.Descriptor instead. -func (AttentionReason) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{10} -} - -// NotificationType categorizes the type of notification being sent. -// Different types have different default UI treatments. -type NotificationType int32 - -const ( - NotificationType_NOTIFICATION_TYPE_UNSPECIFIED NotificationType = 0 - // User Action Required (High Priority by default) - NotificationType_NOTIFICATION_TYPE_APPROVAL_NEEDED NotificationType = 1 // User approval dialog waiting - NotificationType_NOTIFICATION_TYPE_INPUT_REQUIRED NotificationType = 2 // Waiting for user input - NotificationType_NOTIFICATION_TYPE_CONFIRMATION_NEEDED NotificationType = 3 // Confirmation prompt waiting - // Status Updates (Medium Priority by default) - NotificationType_NOTIFICATION_TYPE_TASK_COMPLETE NotificationType = 4 // Task finished successfully - NotificationType_NOTIFICATION_TYPE_PROCESS_STARTED NotificationType = 5 // Long-running process started - NotificationType_NOTIFICATION_TYPE_PROCESS_FINISHED NotificationType = 6 // Long-running process finished - // Errors and Warnings (High/Urgent Priority by default) - NotificationType_NOTIFICATION_TYPE_ERROR NotificationType = 7 // Error occurred - NotificationType_NOTIFICATION_TYPE_WARNING NotificationType = 8 // Warning condition - NotificationType_NOTIFICATION_TYPE_FAILURE NotificationType = 9 // Operation failed - // Informational (Low Priority by default) - NotificationType_NOTIFICATION_TYPE_INFO NotificationType = 10 // General information - NotificationType_NOTIFICATION_TYPE_DEBUG NotificationType = 11 // Debug information - NotificationType_NOTIFICATION_TYPE_STATUS_CHANGE NotificationType = 12 // Session status changed - NotificationType_NOTIFICATION_TYPE_AUTO_APPROVED NotificationType = 13 // Classifier auto-approved or auto-denied; no human action needed - // Custom (Medium Priority by default) - NotificationType_NOTIFICATION_TYPE_CUSTOM NotificationType = 100 // Custom notification type -) - -// Enum value maps for NotificationType. -var ( - NotificationType_name = map[int32]string{ - 0: "NOTIFICATION_TYPE_UNSPECIFIED", - 1: "NOTIFICATION_TYPE_APPROVAL_NEEDED", - 2: "NOTIFICATION_TYPE_INPUT_REQUIRED", - 3: "NOTIFICATION_TYPE_CONFIRMATION_NEEDED", - 4: "NOTIFICATION_TYPE_TASK_COMPLETE", - 5: "NOTIFICATION_TYPE_PROCESS_STARTED", - 6: "NOTIFICATION_TYPE_PROCESS_FINISHED", - 7: "NOTIFICATION_TYPE_ERROR", - 8: "NOTIFICATION_TYPE_WARNING", - 9: "NOTIFICATION_TYPE_FAILURE", - 10: "NOTIFICATION_TYPE_INFO", - 11: "NOTIFICATION_TYPE_DEBUG", - 12: "NOTIFICATION_TYPE_STATUS_CHANGE", - 13: "NOTIFICATION_TYPE_AUTO_APPROVED", - 100: "NOTIFICATION_TYPE_CUSTOM", - } - NotificationType_value = map[string]int32{ - "NOTIFICATION_TYPE_UNSPECIFIED": 0, - "NOTIFICATION_TYPE_APPROVAL_NEEDED": 1, - "NOTIFICATION_TYPE_INPUT_REQUIRED": 2, - "NOTIFICATION_TYPE_CONFIRMATION_NEEDED": 3, - "NOTIFICATION_TYPE_TASK_COMPLETE": 4, - "NOTIFICATION_TYPE_PROCESS_STARTED": 5, - "NOTIFICATION_TYPE_PROCESS_FINISHED": 6, - "NOTIFICATION_TYPE_ERROR": 7, - "NOTIFICATION_TYPE_WARNING": 8, - "NOTIFICATION_TYPE_FAILURE": 9, - "NOTIFICATION_TYPE_INFO": 10, - "NOTIFICATION_TYPE_DEBUG": 11, - "NOTIFICATION_TYPE_STATUS_CHANGE": 12, - "NOTIFICATION_TYPE_AUTO_APPROVED": 13, - "NOTIFICATION_TYPE_CUSTOM": 100, - } -) - -func (x NotificationType) Enum() *NotificationType { - p := new(NotificationType) - *p = x - return p -} - -func (x NotificationType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (NotificationType) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[11].Descriptor() -} - -func (NotificationType) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[11] -} - -func (x NotificationType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use NotificationType.Descriptor instead. -func (NotificationType) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{11} -} - -// NotificationPriority determines UI treatment for notifications. -// Maps to different audio, visual styling, and auto-dismiss behavior. -type NotificationPriority int32 - -const ( - NotificationPriority_NOTIFICATION_PRIORITY_UNSPECIFIED NotificationPriority = 0 - NotificationPriority_NOTIFICATION_PRIORITY_LOW NotificationPriority = 1 // Info, auto-dismiss after 5s - NotificationPriority_NOTIFICATION_PRIORITY_MEDIUM NotificationPriority = 2 // Normal, auto-dismiss after 10s - NotificationPriority_NOTIFICATION_PRIORITY_HIGH NotificationPriority = 3 // Important, requires acknowledgment - NotificationPriority_NOTIFICATION_PRIORITY_URGENT NotificationPriority = 4 // Critical, blocking action required -) - -// Enum value maps for NotificationPriority. -var ( - NotificationPriority_name = map[int32]string{ - 0: "NOTIFICATION_PRIORITY_UNSPECIFIED", - 1: "NOTIFICATION_PRIORITY_LOW", - 2: "NOTIFICATION_PRIORITY_MEDIUM", - 3: "NOTIFICATION_PRIORITY_HIGH", - 4: "NOTIFICATION_PRIORITY_URGENT", - } - NotificationPriority_value = map[string]int32{ - "NOTIFICATION_PRIORITY_UNSPECIFIED": 0, - "NOTIFICATION_PRIORITY_LOW": 1, - "NOTIFICATION_PRIORITY_MEDIUM": 2, - "NOTIFICATION_PRIORITY_HIGH": 3, - "NOTIFICATION_PRIORITY_URGENT": 4, - } -) - -func (x NotificationPriority) Enum() *NotificationPriority { - p := new(NotificationPriority) - *p = x - return p -} - -func (x NotificationPriority) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (NotificationPriority) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[12].Descriptor() -} - -func (NotificationPriority) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[12] -} - -func (x NotificationPriority) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use NotificationPriority.Descriptor instead. -func (NotificationPriority) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{12} -} - -// VCSType represents the type of version control system -type VCSType int32 - -const ( - VCSType_VCS_TYPE_UNSPECIFIED VCSType = 0 - VCSType_VCS_TYPE_GIT VCSType = 1 - VCSType_VCS_TYPE_JUJUTSU VCSType = 2 -) - -// Enum value maps for VCSType. -var ( - VCSType_name = map[int32]string{ - 0: "VCS_TYPE_UNSPECIFIED", - 1: "VCS_TYPE_GIT", - 2: "VCS_TYPE_JUJUTSU", - } - VCSType_value = map[string]int32{ - "VCS_TYPE_UNSPECIFIED": 0, - "VCS_TYPE_GIT": 1, - "VCS_TYPE_JUJUTSU": 2, - } -) - -func (x VCSType) Enum() *VCSType { - p := new(VCSType) - *p = x - return p -} - -func (x VCSType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VCSType) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[13].Descriptor() -} - -func (VCSType) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[13] -} - -func (x VCSType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use VCSType.Descriptor instead. -func (VCSType) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{13} -} - -// FileStatus represents the status of a file in version control -type FileStatus int32 - -const ( - FileStatus_FILE_STATUS_UNSPECIFIED FileStatus = 0 - FileStatus_FILE_STATUS_MODIFIED FileStatus = 1 - FileStatus_FILE_STATUS_ADDED FileStatus = 2 - FileStatus_FILE_STATUS_DELETED FileStatus = 3 - FileStatus_FILE_STATUS_RENAMED FileStatus = 4 - FileStatus_FILE_STATUS_COPIED FileStatus = 5 - FileStatus_FILE_STATUS_UNTRACKED FileStatus = 6 - FileStatus_FILE_STATUS_IGNORED FileStatus = 7 - FileStatus_FILE_STATUS_CONFLICT FileStatus = 8 -) - -// Enum value maps for FileStatus. -var ( - FileStatus_name = map[int32]string{ - 0: "FILE_STATUS_UNSPECIFIED", - 1: "FILE_STATUS_MODIFIED", - 2: "FILE_STATUS_ADDED", - 3: "FILE_STATUS_DELETED", - 4: "FILE_STATUS_RENAMED", - 5: "FILE_STATUS_COPIED", - 6: "FILE_STATUS_UNTRACKED", - 7: "FILE_STATUS_IGNORED", - 8: "FILE_STATUS_CONFLICT", - } - FileStatus_value = map[string]int32{ - "FILE_STATUS_UNSPECIFIED": 0, - "FILE_STATUS_MODIFIED": 1, - "FILE_STATUS_ADDED": 2, - "FILE_STATUS_DELETED": 3, - "FILE_STATUS_RENAMED": 4, - "FILE_STATUS_COPIED": 5, - "FILE_STATUS_UNTRACKED": 6, - "FILE_STATUS_IGNORED": 7, - "FILE_STATUS_CONFLICT": 8, - } -) - -func (x FileStatus) Enum() *FileStatus { - p := new(FileStatus) - *p = x - return p -} - -func (x FileStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FileStatus) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[14].Descriptor() -} - -func (FileStatus) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[14] -} - -func (x FileStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use FileStatus.Descriptor instead. -func (FileStatus) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{14} -} - -// WorkspaceSwitchType defines the type of workspace switch operation -type WorkspaceSwitchType int32 - -const ( - WorkspaceSwitchType_WORKSPACE_SWITCH_TYPE_UNSPECIFIED WorkspaceSwitchType = 0 - // Simple directory change (no VCS, no restart) - WorkspaceSwitchType_WORKSPACE_SWITCH_TYPE_DIRECTORY WorkspaceSwitchType = 1 - // Switch to a different revision/branch - WorkspaceSwitchType_WORKSPACE_SWITCH_TYPE_REVISION WorkspaceSwitchType = 2 - // Switch to or create a different worktree - WorkspaceSwitchType_WORKSPACE_SWITCH_TYPE_WORKTREE WorkspaceSwitchType = 3 -) - -// Enum value maps for WorkspaceSwitchType. -var ( - WorkspaceSwitchType_name = map[int32]string{ - 0: "WORKSPACE_SWITCH_TYPE_UNSPECIFIED", - 1: "WORKSPACE_SWITCH_TYPE_DIRECTORY", - 2: "WORKSPACE_SWITCH_TYPE_REVISION", - 3: "WORKSPACE_SWITCH_TYPE_WORKTREE", - } - WorkspaceSwitchType_value = map[string]int32{ - "WORKSPACE_SWITCH_TYPE_UNSPECIFIED": 0, - "WORKSPACE_SWITCH_TYPE_DIRECTORY": 1, - "WORKSPACE_SWITCH_TYPE_REVISION": 2, - "WORKSPACE_SWITCH_TYPE_WORKTREE": 3, - } -) - -func (x WorkspaceSwitchType) Enum() *WorkspaceSwitchType { - p := new(WorkspaceSwitchType) - *p = x - return p -} - -func (x WorkspaceSwitchType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (WorkspaceSwitchType) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[15].Descriptor() -} - -func (WorkspaceSwitchType) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[15] -} - -func (x WorkspaceSwitchType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use WorkspaceSwitchType.Descriptor instead. -func (WorkspaceSwitchType) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{15} -} - -// ChangeStrategy defines how to handle uncommitted changes during workspace switches -type ChangeStrategy int32 - -const ( - ChangeStrategy_CHANGE_STRATEGY_UNSPECIFIED ChangeStrategy = 0 - // Keep changes as a separate WIP revision (JJ) or stash (Git) - ChangeStrategy_CHANGE_STRATEGY_KEEP_AS_WIP ChangeStrategy = 1 - // Keep changes as parent of new location (JJ) or stash pop (Git) - ChangeStrategy_CHANGE_STRATEGY_BRING_ALONG ChangeStrategy = 2 - // Discard uncommitted changes - ChangeStrategy_CHANGE_STRATEGY_ABANDON ChangeStrategy = 3 -) - -// Enum value maps for ChangeStrategy. -var ( - ChangeStrategy_name = map[int32]string{ - 0: "CHANGE_STRATEGY_UNSPECIFIED", - 1: "CHANGE_STRATEGY_KEEP_AS_WIP", - 2: "CHANGE_STRATEGY_BRING_ALONG", - 3: "CHANGE_STRATEGY_ABANDON", - } - ChangeStrategy_value = map[string]int32{ - "CHANGE_STRATEGY_UNSPECIFIED": 0, - "CHANGE_STRATEGY_KEEP_AS_WIP": 1, - "CHANGE_STRATEGY_BRING_ALONG": 2, - "CHANGE_STRATEGY_ABANDON": 3, - } -) - -func (x ChangeStrategy) Enum() *ChangeStrategy { - p := new(ChangeStrategy) - *p = x - return p -} - -func (x ChangeStrategy) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ChangeStrategy) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[16].Descriptor() -} - -func (ChangeStrategy) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[16] -} - -func (x ChangeStrategy) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ChangeStrategy.Descriptor instead. -func (ChangeStrategy) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{16} -} - -// AutoDecision is the action the classifier takes for a matching rule. -type AutoDecision int32 - -const ( - AutoDecision_AUTO_DECISION_UNSPECIFIED AutoDecision = 0 - AutoDecision_AUTO_DECISION_ALLOW AutoDecision = 1 - AutoDecision_AUTO_DECISION_DENY AutoDecision = 2 - AutoDecision_AUTO_DECISION_ESCALATE AutoDecision = 3 -) - -// Enum value maps for AutoDecision. -var ( - AutoDecision_name = map[int32]string{ - 0: "AUTO_DECISION_UNSPECIFIED", - 1: "AUTO_DECISION_ALLOW", - 2: "AUTO_DECISION_DENY", - 3: "AUTO_DECISION_ESCALATE", - } - AutoDecision_value = map[string]int32{ - "AUTO_DECISION_UNSPECIFIED": 0, - "AUTO_DECISION_ALLOW": 1, - "AUTO_DECISION_DENY": 2, - "AUTO_DECISION_ESCALATE": 3, - } -) - -func (x AutoDecision) Enum() *AutoDecision { - p := new(AutoDecision) - *p = x - return p -} - -func (x AutoDecision) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AutoDecision) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[17].Descriptor() -} - -func (AutoDecision) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[17] -} - -func (x AutoDecision) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use AutoDecision.Descriptor instead. -func (AutoDecision) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{17} -} - -// ScanStatus indicates the result quality of the last unfinished-work scan. -type ScanStatus int32 - -const ( - ScanStatus_SCAN_STATUS_UNSPECIFIED ScanStatus = 0 - ScanStatus_SCAN_STATUS_OK ScanStatus = 1 - ScanStatus_SCAN_STATUS_TIMEOUT ScanStatus = 2 - ScanStatus_SCAN_STATUS_PERMISSION ScanStatus = 3 - ScanStatus_SCAN_STATUS_ERROR ScanStatus = 4 -) - -// Enum value maps for ScanStatus. -var ( - ScanStatus_name = map[int32]string{ - 0: "SCAN_STATUS_UNSPECIFIED", - 1: "SCAN_STATUS_OK", - 2: "SCAN_STATUS_TIMEOUT", - 3: "SCAN_STATUS_PERMISSION", - 4: "SCAN_STATUS_ERROR", - } - ScanStatus_value = map[string]int32{ - "SCAN_STATUS_UNSPECIFIED": 0, - "SCAN_STATUS_OK": 1, - "SCAN_STATUS_TIMEOUT": 2, - "SCAN_STATUS_PERMISSION": 3, - "SCAN_STATUS_ERROR": 4, - } -) - -func (x ScanStatus) Enum() *ScanStatus { - p := new(ScanStatus) - *p = x - return p -} - -func (x ScanStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ScanStatus) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[18].Descriptor() -} - -func (ScanStatus) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[18] -} - -func (x ScanStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ScanStatus.Descriptor instead. -func (ScanStatus) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{18} -} - -// SessionSummaryStatus indicates the generation state of a session completion summary. -type SessionSummaryStatus int32 - -const ( - SessionSummaryStatus_SESSION_SUMMARY_STATUS_UNSPECIFIED SessionSummaryStatus = 0 - SessionSummaryStatus_SESSION_SUMMARY_STATUS_PENDING SessionSummaryStatus = 1 - SessionSummaryStatus_SESSION_SUMMARY_STATUS_GENERATING SessionSummaryStatus = 2 - SessionSummaryStatus_SESSION_SUMMARY_STATUS_READY SessionSummaryStatus = 3 - SessionSummaryStatus_SESSION_SUMMARY_STATUS_ERROR SessionSummaryStatus = 4 -) - -// Enum value maps for SessionSummaryStatus. -var ( - SessionSummaryStatus_name = map[int32]string{ - 0: "SESSION_SUMMARY_STATUS_UNSPECIFIED", - 1: "SESSION_SUMMARY_STATUS_PENDING", - 2: "SESSION_SUMMARY_STATUS_GENERATING", - 3: "SESSION_SUMMARY_STATUS_READY", - 4: "SESSION_SUMMARY_STATUS_ERROR", - } - SessionSummaryStatus_value = map[string]int32{ - "SESSION_SUMMARY_STATUS_UNSPECIFIED": 0, - "SESSION_SUMMARY_STATUS_PENDING": 1, - "SESSION_SUMMARY_STATUS_GENERATING": 2, - "SESSION_SUMMARY_STATUS_READY": 3, - "SESSION_SUMMARY_STATUS_ERROR": 4, - } -) - -func (x SessionSummaryStatus) Enum() *SessionSummaryStatus { - p := new(SessionSummaryStatus) - *p = x - return p -} - -func (x SessionSummaryStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SessionSummaryStatus) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[19].Descriptor() -} - -func (SessionSummaryStatus) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[19] -} - -func (x SessionSummaryStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SessionSummaryStatus.Descriptor instead. -func (SessionSummaryStatus) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{19} -} - -// ShellStatus represents the lifecycle state of a custom shell. -type ShellStatus int32 - -const ( - ShellStatus_SHELL_STATUS_UNSPECIFIED ShellStatus = 0 - // Shell process is running. - ShellStatus_SHELL_STATUS_RUNNING ShellStatus = 1 - // Shell process exited cleanly (exit code 0) or was explicitly stopped. - ShellStatus_SHELL_STATUS_STOPPED ShellStatus = 2 - // Shell process exited with non-zero exit code or failed to start. - ShellStatus_SHELL_STATUS_ERROR ShellStatus = 3 -) - -// Enum value maps for ShellStatus. -var ( - ShellStatus_name = map[int32]string{ - 0: "SHELL_STATUS_UNSPECIFIED", - 1: "SHELL_STATUS_RUNNING", - 2: "SHELL_STATUS_STOPPED", - 3: "SHELL_STATUS_ERROR", - } - ShellStatus_value = map[string]int32{ - "SHELL_STATUS_UNSPECIFIED": 0, - "SHELL_STATUS_RUNNING": 1, - "SHELL_STATUS_STOPPED": 2, - "SHELL_STATUS_ERROR": 3, - } -) - -func (x ShellStatus) Enum() *ShellStatus { - p := new(ShellStatus) - *p = x - return p -} - -func (x ShellStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ShellStatus) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[20].Descriptor() -} - -func (ShellStatus) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[20] -} - -func (x ShellStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ShellStatus.Descriptor instead. -func (ShellStatus) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{20} -} - -// SuggestionSource identifies what data was used to generate a rule suggestion. -type SuggestionSource int32 - -const ( - SuggestionSource_SUGGESTION_SOURCE_UNSPECIFIED SuggestionSource = 0 - SuggestionSource_SUGGESTION_SOURCE_ANALYTICS_GAPS SuggestionSource = 1 - SuggestionSource_SUGGESTION_SOURCE_REVIEW_QUEUE_ITEM SuggestionSource = 2 - SuggestionSource_SUGGESTION_SOURCE_COMMAND_SAMPLE SuggestionSource = 3 -) - -// Enum value maps for SuggestionSource. -var ( - SuggestionSource_name = map[int32]string{ - 0: "SUGGESTION_SOURCE_UNSPECIFIED", - 1: "SUGGESTION_SOURCE_ANALYTICS_GAPS", - 2: "SUGGESTION_SOURCE_REVIEW_QUEUE_ITEM", - 3: "SUGGESTION_SOURCE_COMMAND_SAMPLE", - } - SuggestionSource_value = map[string]int32{ - "SUGGESTION_SOURCE_UNSPECIFIED": 0, - "SUGGESTION_SOURCE_ANALYTICS_GAPS": 1, - "SUGGESTION_SOURCE_REVIEW_QUEUE_ITEM": 2, - "SUGGESTION_SOURCE_COMMAND_SAMPLE": 3, - } -) - -func (x SuggestionSource) Enum() *SuggestionSource { - p := new(SuggestionSource) - *p = x - return p -} - -func (x SuggestionSource) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SuggestionSource) Descriptor() protoreflect.EnumDescriptor { - return file_session_v1_types_proto_enumTypes[21].Descriptor() -} - -func (SuggestionSource) Type() protoreflect.EnumType { - return &file_session_v1_types_proto_enumTypes[21] -} - -func (x SuggestionSource) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SuggestionSource.Descriptor instead. -func (SuggestionSource) EnumDescriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{21} -} - -// Session represents a running AI agent instance with its associated state. -// Maps to session.Instance in the Go codebase. -type Session struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Unique identifier (uses title as ID for now). - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Human-readable session title. - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - // Path to workspace repository root. - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - // Directory within repository to start in. - WorkingDir string `protobuf:"bytes,4,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` - // Git branch name for this session. - Branch string `protobuf:"bytes,5,opt,name=branch,proto3" json:"branch,omitempty"` - // Current session status. - Status SessionStatus `protobuf:"varint,6,opt,name=status,proto3,enum=session.v1.SessionStatus" json:"status,omitempty"` - // Program running in session (e.g., "claude", "aider"). - Program string `protobuf:"bytes,7,opt,name=program,proto3" json:"program,omitempty"` - // Terminal dimensions. - Height int32 `protobuf:"varint,8,opt,name=height,proto3" json:"height,omitempty"` - Width int32 `protobuf:"varint,9,opt,name=width,proto3" json:"width,omitempty"` - // Timestamps. - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Terminal activity timestamps for staleness detection. - // Last time any terminal output was received (including tmux banners). - LastTerminalUpdate *timestamppb.Timestamp `protobuf:"bytes,22,opt,name=last_terminal_update,json=lastTerminalUpdate,proto3" json:"last_terminal_update,omitempty"` - // Last time meaningful terminal output was received (excluding tmux banners). - // Used by review queue to detect stale sessions. - LastMeaningfulOutput *timestamppb.Timestamp `protobuf:"bytes,23,opt,name=last_meaningful_output,json=lastMeaningfulOutput,proto3" json:"last_meaningful_output,omitempty"` - // Auto-approve prompts without user interaction. - AutoYes bool `protobuf:"varint,12,opt,name=auto_yes,json=autoYes,proto3" json:"auto_yes,omitempty"` - // Initial prompt passed on startup. - Prompt string `protobuf:"bytes,13,opt,name=prompt,proto3" json:"prompt,omitempty"` - // Path to existing worktree (if reusing). - ExistingWorktree string `protobuf:"bytes,14,opt,name=existing_worktree,json=existingWorktree,proto3" json:"existing_worktree,omitempty"` - // Category for organization. - Category string `protobuf:"bytes,15,opt,name=category,proto3" json:"category,omitempty"` - // Whether category is expanded in UI. - IsExpanded bool `protobuf:"varint,16,opt,name=is_expanded,json=isExpanded,proto3" json:"is_expanded,omitempty"` - // Session type (directory, new_worktree, existing_worktree). - SessionType SessionType `protobuf:"varint,17,opt,name=session_type,json=sessionType,proto3,enum=session.v1.SessionType" json:"session_type,omitempty"` - // Tmux session prefix for isolation. - TmuxPrefix string `protobuf:"bytes,18,opt,name=tmux_prefix,json=tmuxPrefix,proto3" json:"tmux_prefix,omitempty"` - // Git diff statistics. - DiffStats *DiffStats `protobuf:"bytes,19,opt,name=diff_stats,json=diffStats,proto3" json:"diff_stats,omitempty"` - // Git worktree information. - GitWorktree *GitWorktree `protobuf:"bytes,20,opt,name=git_worktree,json=gitWorktree,proto3" json:"git_worktree,omitempty"` - // Claude Code session persistence data. - ClaudeSession *ClaudeSession `protobuf:"bytes,21,opt,name=claude_session,json=claudeSession,proto3" json:"claude_session,omitempty"` - // Tags for flexible multi-dimensional organization. - // Replaces single-category hierarchy with tag-based grouping. - Tags []string `protobuf:"bytes,24,rep,name=tags,proto3" json:"tags,omitempty"` - // GitHub pull request number (0 if not created from PR). - GithubPrNumber int32 `protobuf:"varint,25,opt,name=github_pr_number,json=githubPrNumber,proto3" json:"github_pr_number,omitempty"` - // Full URL to the GitHub pull request. - GithubPrUrl string `protobuf:"bytes,26,opt,name=github_pr_url,json=githubPrUrl,proto3" json:"github_pr_url,omitempty"` - // Repository owner (GitHub user or organization). - GithubOwner string `protobuf:"bytes,27,opt,name=github_owner,json=githubOwner,proto3" json:"github_owner,omitempty"` - // Repository name. - GithubRepo string `protobuf:"bytes,28,opt,name=github_repo,json=githubRepo,proto3" json:"github_repo,omitempty"` - // Original URL or reference used to create this session. - // Could be a PR URL, repository URL, or git URL. - GithubSourceRef string `protobuf:"bytes,29,opt,name=github_source_ref,json=githubSourceRef,proto3" json:"github_source_ref,omitempty"` - // Path where repository was cloned (for URL-based sessions). - // Empty if session uses existing repository. - ClonedRepoPath string `protobuf:"bytes,30,opt,name=cloned_repo_path,json=clonedRepoPath,proto3" json:"cloned_repo_path,omitempty"` - // Instance type - indicates whether this is a managed or external session - InstanceType InstanceType `protobuf:"varint,31,opt,name=instance_type,json=instanceType,proto3,enum=session.v1.InstanceType" json:"instance_type,omitempty"` - // External instance metadata (only populated for external sessions) - ExternalMetadata *ExternalInstanceMetadata `protobuf:"bytes,32,opt,name=external_metadata,json=externalMetadata,proto3" json:"external_metadata,omitempty"` - // PR lifecycle state: "open", "closed", "merged" - GithubPrState string `protobuf:"bytes,33,opt,name=github_pr_state,json=githubPrState,proto3" json:"github_pr_state,omitempty"` - // Whether the PR is in draft mode - GithubPrIsDraft bool `protobuf:"varint,34,opt,name=github_pr_is_draft,json=githubPrIsDraft,proto3" json:"github_pr_is_draft,omitempty"` - // Derived priority: blocking/ready/pending/draft/complete/no_pr/auth_error - GithubPrPriority string `protobuf:"bytes,35,opt,name=github_pr_priority,json=githubPrPriority,proto3" json:"github_pr_priority,omitempty"` - // Count of current non-dismissed APPROVED reviews - GithubApprovedCount int32 `protobuf:"varint,36,opt,name=github_approved_count,json=githubApprovedCount,proto3" json:"github_approved_count,omitempty"` - // Count of current non-dismissed CHANGES_REQUESTED reviews - GithubChangesReqCount int32 `protobuf:"varint,37,opt,name=github_changes_req_count,json=githubChangesReqCount,proto3" json:"github_changes_req_count,omitempty"` - // CI rollup conclusion: success/failure/pending/action_required/neutral/"" - GithubCheckConclusion string `protobuf:"bytes,38,opt,name=github_check_conclusion,json=githubCheckConclusion,proto3" json:"github_check_conclusion,omitempty"` - // When PR status was last successfully fetched - LastPrStatusCheck *timestamppb.Timestamp `protobuf:"bytes,39,opt,name=last_pr_status_check,json=lastPrStatusCheck,proto3" json:"last_pr_status_check,omitempty"` - // Rate limit detection state - // Indicates if session is experiencing rate limiting from LLM provider - RateLimitState RateLimitState `protobuf:"varint,40,opt,name=rate_limit_state,json=rateLimitState,proto3,enum=session.v1.RateLimitState" json:"rate_limit_state,omitempty"` - // When the rate limit is expected to reset (populated when rate_limit_state == WAITING). - RateLimitResetTime *timestamppb.Timestamp `protobuf:"bytes,46,opt,name=rate_limit_reset_time,json=rateLimitResetTime,proto3" json:"rate_limit_reset_time,omitempty"` - // Whether automatic rate limit recovery is enabled for this session. - // Defaults to true. Set to false to disable auto-resume for this session. - RateLimitEnabled bool `protobuf:"varint,47,opt,name=rate_limit_enabled,json=rateLimitEnabled,proto3" json:"rate_limit_enabled,omitempty"` - // Path to the Claude Code JSONL history file for this session. - // Populated by HistoryLinker once the session's open files are detected. - // Used to pass --resume when reattaching after server restart. - HistoryFilePath string `protobuf:"bytes,41,opt,name=history_file_path,json=historyFilePath,proto3" json:"history_file_path,omitempty"` - // Claude Code conversation UUID extracted from the history file path. - // Matches the UUID in the JSONL filename under ~/.claude/projects//.jsonl. - ClaudeConversationUuid string `protobuf:"bytes,42,opt,name=claude_conversation_uuid,json=claudeConversationUuid,proto3" json:"claude_conversation_uuid,omitempty"` - // Project ID this session belongs to (empty if not in a project). - ProjectId string `protobuf:"bytes,43,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - // Initial prompt that was injected into CLAUDE.md at session creation. - InitialPrompt string `protobuf:"bytes,44,opt,name=initial_prompt,json=initialPrompt,proto3" json:"initial_prompt,omitempty"` - // Full launch command as passed to tmux on session start, including injected flags - // (e.g. --resume , --mcp-server ..., -y, initial prompt). Empty for external sessions. - LaunchCommand string `protobuf:"bytes,45,opt,name=launch_command,json=launchCommand,proto3" json:"launch_command,omitempty"` - // Deprecated: derived client-side via deriveWorkingState(). - // Active-work state for review queue filtering. Populated from IdleDetector state. - WorkingState WorkingState `protobuf:"varint,50,opt,name=working_state,json=workingState,proto3,enum=session.v1.WorkingState" json:"working_state,omitempty"` - // VNC/browser passthrough state. Populated when VNC is supported on the host. - VncState *VNCState `protobuf:"bytes,51,opt,name=vnc_state,json=vncState,proto3" json:"vnc_state,omitempty"` - // CDP browser streaming state. Populated when Chrome is available on the host. - CdpState *CDPState `protobuf:"bytes,52,opt,name=cdp_state,json=cdpState,proto3" json:"cdp_state,omitempty"` - // Human-readable progress message during Creating state (empty otherwise). - // Set by the async creation goroutine; cleared once session becomes Active. - CreationProgress string `protobuf:"bytes,53,opt,name=creation_progress,json=creationProgress,proto3" json:"creation_progress,omitempty"` - // Fine-grained activity state for Active sessions. Derived from terminal detection - // layer at read time; never stored in the database. - // Only meaningful when lifecycle_status == SESSION_STATUS_ACTIVE. - SubStatus SubStatus `protobuf:"varint,54,opt,name=sub_status,json=subStatus,proto3,enum=session.v1.SubStatus" json:"sub_status,omitempty"` - // Approximate resident set size (RSS) in MB for all processes in this session. - // Zero for hibernated sessions or when measurement is unavailable. - MemoryRssMb int64 `protobuf:"varint,55,opt,name=memory_rss_mb,json=memoryRssMb,proto3" json:"memory_rss_mb,omitempty"` - // Estimated RAM freed in MB if this session were hibernated now. - // Equal to memory_rss_mb for Active sessions; zero for Hibernated sessions. - EstimatedSavingsMb int64 `protobuf:"varint,56,opt,name=estimated_savings_mb,json=estimatedSavingsMb,proto3" json:"estimated_savings_mb,omitempty"` - // When true, this session is excluded from the default session list and review queue. - // Used for system/background sessions (e.g. triage, validation) that should not - // pollute the user-facing session viewer. - Hidden bool `protobuf:"varint,57,opt,name=hidden,proto3" json:"hidden,omitempty"` - // Reason why the session was paused. Empty when session has never been paused. - // Values: "manual", "auto:inactivity", "auto:session_limit", "auto:resource" - PauseReason string `protobuf:"bytes,58,opt,name=pause_reason,json=pauseReason,proto3" json:"pause_reason,omitempty"` - // Current session goal and task tracking state. Nil when no goal has been set. - Goal *SessionGoalSummary `protobuf:"bytes,59,opt,name=goal,proto3" json:"goal,omitempty"` - // Whether this session is running under LLM orchestration (AutonomousDriver). - // When true, the session injects prompts automatically based on idle detection. - AutonomousMode bool `protobuf:"varint,60,opt,name=autonomous_mode,json=autonomousMode,proto3" json:"autonomous_mode,omitempty"` - // UUID of the Workflow that spawned this session. Empty for manually-created sessions. - WorkflowId string `protobuf:"bytes,62,opt,name=workflow_id,json=workflowId,proto3" json:"workflow_id,omitempty"` - // When the session was archived. Zero value means not archived. - ArchivedAt *timestamppb.Timestamp `protobuf:"bytes,63,opt,name=archived_at,json=archivedAt,proto3" json:"archived_at,omitempty"` - // Human-readable name of the workflow that spawned this session. - // Populated at read time from the workflow name cache; empty for manual sessions. - WorkflowName string `protobuf:"bytes,64,opt,name=workflow_name,json=workflowName,proto3" json:"workflow_name,omitempty"` - // Current turn number in an ongoing autonomous run. Zero when not running. - AutonomousTurn int32 `protobuf:"varint,65,opt,name=autonomous_turn,json=autonomousTurn,proto3" json:"autonomous_turn,omitempty"` - // Maximum turns configured for the current autonomous run. Zero when not running. - AutonomousMaxTurns int32 `protobuf:"varint,66,opt,name=autonomous_max_turns,json=autonomousMaxTurns,proto3" json:"autonomous_max_turns,omitempty"` - // Outcome of the last completed autonomous run: "", "done", "stuck". - AutonomousOutcome string `protobuf:"bytes,67,opt,name=autonomous_outcome,json=autonomousOutcome,proto3" json:"autonomous_outcome,omitempty"` - // Fine-grained detected status from PTY output analysis. - // Only meaningful when status == SESSION_STATUS_ACTIVE. - // Maps to detection.DetectedStatus in Go. - DetectedStatus DetectedStatus `protobuf:"varint,68,opt,name=detected_status,json=detectedStatus,proto3,enum=session.v1.DetectedStatus" json:"detected_status,omitempty"` - // Human-readable context string from the terminal pattern detector - // (e.g. "Waiting for tool approval", "Tests failing: 3 of 12"). - // Empty when detected_status is UNSPECIFIED. - DetectedContext string `protobuf:"bytes,69,opt,name=detected_context,json=detectedContext,proto3" json:"detected_context,omitempty"` - // Structured artifacts extracted from the session's JSONL conversation history. - // Populated asynchronously by ArtifactExtractor; nil until first scan completes. - Artifacts *SessionArtifacts `protobuf:"bytes,70,opt,name=artifacts,proto3" json:"artifacts,omitempty"` - // Canonical workspace/repo identity (e.g. "gh:owner/repo", or "path:
" - // when there's no GitHub remote). Sessions sharing this key are workspace peers. Empty - // when neither GitHub info nor a repo path could be determined (e.g. a bare one-off session). - WorkspaceKey string `protobuf:"bytes,71,opt,name=workspace_key,json=workspaceKey,proto3" json:"workspace_key,omitempty"` - // Reason the session's pane crashed. Only meaningful when status == - // SESSION_STATUS_CRASHED. Empty when the session has never crashed. - ExitReason string `protobuf:"bytes,72,opt,name=exit_reason,json=exitReason,proto3" json:"exit_reason,omitempty"` - // User-authored free-form markdown note attached to this session. - Note string `protobuf:"bytes,73,opt,name=note,proto3" json:"note,omitempty"` - // auto_approve injects a per-agent CLI flag that skips permission/approval - // prompts entirely (e.g. --dangerously-skip-permissions for Claude Code). - // Independent of auto_yes — see auto_yes's own comment for the distinction. - AutoApprove bool `protobuf:"varint,74,opt,name=auto_approve,json=autoApprove,proto3" json:"auto_approve,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *Session) Reset() { - *x = Session{} - mi := &file_session_v1_types_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Session) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Session) ProtoMessage() {} - -func (x *Session) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Session.ProtoReflect.Descriptor instead. -func (*Session) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{0} -} - -func (x *Session) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Session) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *Session) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *Session) GetWorkingDir() string { - if x != nil { - return x.WorkingDir - } - return "" -} - -func (x *Session) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -func (x *Session) GetStatus() SessionStatus { - if x != nil { - return x.Status - } - return SessionStatus_SESSION_STATUS_UNSPECIFIED -} - -func (x *Session) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *Session) GetHeight() int32 { - if x != nil { - return x.Height - } - return 0 -} - -func (x *Session) GetWidth() int32 { - if x != nil { - return x.Width - } - return 0 -} - -func (x *Session) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *Session) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *Session) GetLastTerminalUpdate() *timestamppb.Timestamp { - if x != nil { - return x.LastTerminalUpdate - } - return nil -} - -func (x *Session) GetLastMeaningfulOutput() *timestamppb.Timestamp { - if x != nil { - return x.LastMeaningfulOutput - } - return nil -} - -func (x *Session) GetAutoYes() bool { - if x != nil { - return x.AutoYes - } - return false -} - -func (x *Session) GetPrompt() string { - if x != nil { - return x.Prompt - } - return "" -} - -func (x *Session) GetExistingWorktree() string { - if x != nil { - return x.ExistingWorktree - } - return "" -} - -func (x *Session) GetCategory() string { - if x != nil { - return x.Category - } - return "" -} - -func (x *Session) GetIsExpanded() bool { - if x != nil { - return x.IsExpanded - } - return false -} - -func (x *Session) GetSessionType() SessionType { - if x != nil { - return x.SessionType - } - return SessionType_SESSION_TYPE_UNSPECIFIED -} - -func (x *Session) GetTmuxPrefix() string { - if x != nil { - return x.TmuxPrefix - } - return "" -} - -func (x *Session) GetDiffStats() *DiffStats { - if x != nil { - return x.DiffStats - } - return nil -} - -func (x *Session) GetGitWorktree() *GitWorktree { - if x != nil { - return x.GitWorktree - } - return nil -} - -func (x *Session) GetClaudeSession() *ClaudeSession { - if x != nil { - return x.ClaudeSession - } - return nil -} - -func (x *Session) GetTags() []string { - if x != nil { - return x.Tags - } - return nil -} - -func (x *Session) GetGithubPrNumber() int32 { - if x != nil { - return x.GithubPrNumber - } - return 0 -} - -func (x *Session) GetGithubPrUrl() string { - if x != nil { - return x.GithubPrUrl - } - return "" -} - -func (x *Session) GetGithubOwner() string { - if x != nil { - return x.GithubOwner - } - return "" -} - -func (x *Session) GetGithubRepo() string { - if x != nil { - return x.GithubRepo - } - return "" -} - -func (x *Session) GetGithubSourceRef() string { - if x != nil { - return x.GithubSourceRef - } - return "" -} - -func (x *Session) GetClonedRepoPath() string { - if x != nil { - return x.ClonedRepoPath - } - return "" -} - -func (x *Session) GetInstanceType() InstanceType { - if x != nil { - return x.InstanceType - } - return InstanceType_INSTANCE_TYPE_UNSPECIFIED -} - -func (x *Session) GetExternalMetadata() *ExternalInstanceMetadata { - if x != nil { - return x.ExternalMetadata - } - return nil -} - -func (x *Session) GetGithubPrState() string { - if x != nil { - return x.GithubPrState - } - return "" -} - -func (x *Session) GetGithubPrIsDraft() bool { - if x != nil { - return x.GithubPrIsDraft - } - return false -} - -func (x *Session) GetGithubPrPriority() string { - if x != nil { - return x.GithubPrPriority - } - return "" -} - -func (x *Session) GetGithubApprovedCount() int32 { - if x != nil { - return x.GithubApprovedCount - } - return 0 -} - -func (x *Session) GetGithubChangesReqCount() int32 { - if x != nil { - return x.GithubChangesReqCount - } - return 0 -} - -func (x *Session) GetGithubCheckConclusion() string { - if x != nil { - return x.GithubCheckConclusion - } - return "" -} - -func (x *Session) GetLastPrStatusCheck() *timestamppb.Timestamp { - if x != nil { - return x.LastPrStatusCheck - } - return nil -} - -func (x *Session) GetRateLimitState() RateLimitState { - if x != nil { - return x.RateLimitState - } - return RateLimitState_RATE_LIMIT_STATE_UNSPECIFIED -} - -func (x *Session) GetRateLimitResetTime() *timestamppb.Timestamp { - if x != nil { - return x.RateLimitResetTime - } - return nil -} - -func (x *Session) GetRateLimitEnabled() bool { - if x != nil { - return x.RateLimitEnabled - } - return false -} - -func (x *Session) GetHistoryFilePath() string { - if x != nil { - return x.HistoryFilePath - } - return "" -} - -func (x *Session) GetClaudeConversationUuid() string { - if x != nil { - return x.ClaudeConversationUuid - } - return "" -} - -func (x *Session) GetProjectId() string { - if x != nil { - return x.ProjectId - } - return "" -} - -func (x *Session) GetInitialPrompt() string { - if x != nil { - return x.InitialPrompt - } - return "" -} - -func (x *Session) GetLaunchCommand() string { - if x != nil { - return x.LaunchCommand - } - return "" -} - -func (x *Session) GetWorkingState() WorkingState { - if x != nil { - return x.WorkingState - } - return WorkingState_WORKING_STATE_UNSPECIFIED -} - -func (x *Session) GetVncState() *VNCState { - if x != nil { - return x.VncState - } - return nil -} - -func (x *Session) GetCdpState() *CDPState { - if x != nil { - return x.CdpState - } - return nil -} - -func (x *Session) GetCreationProgress() string { - if x != nil { - return x.CreationProgress - } - return "" -} - -func (x *Session) GetSubStatus() SubStatus { - if x != nil { - return x.SubStatus - } - return SubStatus_SUB_STATUS_UNSPECIFIED -} - -func (x *Session) GetMemoryRssMb() int64 { - if x != nil { - return x.MemoryRssMb - } - return 0 -} - -func (x *Session) GetEstimatedSavingsMb() int64 { - if x != nil { - return x.EstimatedSavingsMb - } - return 0 -} - -func (x *Session) GetHidden() bool { - if x != nil { - return x.Hidden - } - return false -} - -func (x *Session) GetPauseReason() string { - if x != nil { - return x.PauseReason - } - return "" -} - -func (x *Session) GetGoal() *SessionGoalSummary { - if x != nil { - return x.Goal - } - return nil -} - -func (x *Session) GetAutonomousMode() bool { - if x != nil { - return x.AutonomousMode - } - return false -} - -func (x *Session) GetWorkflowId() string { - if x != nil { - return x.WorkflowId - } - return "" -} - -func (x *Session) GetArchivedAt() *timestamppb.Timestamp { - if x != nil { - return x.ArchivedAt - } - return nil -} - -func (x *Session) GetWorkflowName() string { - if x != nil { - return x.WorkflowName - } - return "" -} - -func (x *Session) GetAutonomousTurn() int32 { - if x != nil { - return x.AutonomousTurn - } - return 0 -} - -func (x *Session) GetAutonomousMaxTurns() int32 { - if x != nil { - return x.AutonomousMaxTurns - } - return 0 -} - -func (x *Session) GetAutonomousOutcome() string { - if x != nil { - return x.AutonomousOutcome - } - return "" -} - -func (x *Session) GetDetectedStatus() DetectedStatus { - if x != nil { - return x.DetectedStatus - } - return DetectedStatus_DETECTED_STATUS_UNSPECIFIED -} - -func (x *Session) GetDetectedContext() string { - if x != nil { - return x.DetectedContext - } - return "" -} - -func (x *Session) GetArtifacts() *SessionArtifacts { - if x != nil { - return x.Artifacts - } - return nil -} - -func (x *Session) GetWorkspaceKey() string { - if x != nil { - return x.WorkspaceKey - } - return "" -} - -func (x *Session) GetExitReason() string { - if x != nil { - return x.ExitReason - } - return "" -} - -func (x *Session) GetNote() string { - if x != nil { - return x.Note - } - return "" -} - -func (x *Session) GetAutoApprove() bool { - if x != nil { - return x.AutoApprove - } - return false -} - -// SessionArtifacts holds structured artifacts extracted from the session's -// Claude Code JSONL conversation history. -type SessionArtifacts struct { - state protoimpl.MessageState `protogen:"open.v1"` - // GitHub PR URLs found in tool_result output (e.g. from gh pr create). - PrUrls []string `protobuf:"bytes,1,rep,name=pr_urls,json=prUrls,proto3" json:"pr_urls,omitempty"` - // Git commit SHAs (40-char) found in tool_result output. - CommitShas []string `protobuf:"bytes,2,rep,name=commit_shas,json=commitShas,proto3" json:"commit_shas,omitempty"` - // External URLs found in tool_result output (capped at 50 entries). - ExternalUrls []string `protobuf:"bytes,3,rep,name=external_urls,json=externalUrls,proto3" json:"external_urls,omitempty"` - // When the JSONL file was last successfully scanned. - LastScannedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_scanned_at,json=lastScannedAt,proto3" json:"last_scanned_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionArtifacts) Reset() { - *x = SessionArtifacts{} - mi := &file_session_v1_types_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionArtifacts) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionArtifacts) ProtoMessage() {} - -func (x *SessionArtifacts) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionArtifacts.ProtoReflect.Descriptor instead. -func (*SessionArtifacts) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{1} -} - -func (x *SessionArtifacts) GetPrUrls() []string { - if x != nil { - return x.PrUrls - } - return nil -} - -func (x *SessionArtifacts) GetCommitShas() []string { - if x != nil { - return x.CommitShas - } - return nil -} - -func (x *SessionArtifacts) GetExternalUrls() []string { - if x != nil { - return x.ExternalUrls - } - return nil -} - -func (x *SessionArtifacts) GetLastScannedAt() *timestamppb.Timestamp { - if x != nil { - return x.LastScannedAt - } - return nil -} - -// SessionGoalSummary summarizes the current goal and task state for a session. -// Populated by the server when a goal has been set via the set_session_goal MCP tool. -type SessionGoalSummary struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Human-readable goal description (max 2000 chars). - GoalText string `protobuf:"bytes,1,opt,name=goal_text,json=goalText,proto3" json:"goal_text,omitempty"` - // Current goal status: idle, working, blocked, done. - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - // Total number of tasks in the task tree (all depth levels). - TasksTotal int32 `protobuf:"varint,3,opt,name=tasks_total,json=tasksTotal,proto3" json:"tasks_total,omitempty"` - // Number of tasks with status "done" (all depth levels). - TasksDone int32 `protobuf:"varint,4,opt,name=tasks_done,json=tasksDone,proto3" json:"tasks_done,omitempty"` - // JSON-encoded []TaskNode; "[]" when no tasks have been set. - // Parse client-side to render the full recursive task tree. - TasksJson string `protobuf:"bytes,5,opt,name=tasks_json,json=tasksJson,proto3" json:"tasks_json,omitempty"` - // When the goal was last set/updated. Used client-side to detect a stale goal - // independently of session liveness (workspace peer awareness). - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionGoalSummary) Reset() { - *x = SessionGoalSummary{} - mi := &file_session_v1_types_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionGoalSummary) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionGoalSummary) ProtoMessage() {} - -func (x *SessionGoalSummary) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SessionGoalSummary.ProtoReflect.Descriptor instead. -func (*SessionGoalSummary) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{2} -} - -func (x *SessionGoalSummary) GetGoalText() string { - if x != nil { - return x.GoalText - } - return "" -} - -func (x *SessionGoalSummary) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *SessionGoalSummary) GetTasksTotal() int32 { - if x != nil { - return x.TasksTotal - } - return 0 -} - -func (x *SessionGoalSummary) GetTasksDone() int32 { - if x != nil { - return x.TasksDone - } - return 0 -} - -func (x *SessionGoalSummary) GetTasksJson() string { - if x != nil { - return x.TasksJson - } - return "" -} - -func (x *SessionGoalSummary) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -// VNCState holds the browser-passthrough state for a session. -type VNCState struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Current operational status. - Status VNCStatus `protobuf:"varint,1,opt,name=status,proto3,enum=session.v1.VNCStatus" json:"status,omitempty"` - // Allocated X11 display number (e.g. 100 means :100). - DisplayNumber int32 `protobuf:"varint,2,opt,name=display_number,json=displayNumber,proto3" json:"display_number,omitempty"` - // vnc_password is reserved for a future RFB auth implementation. - // Currently empty — x11vnc runs with -nopw and auth is handled by the Go proxy. - VncPassword string `protobuf:"bytes,3,opt,name=vnc_password,json=vncPassword,proto3" json:"vnc_password,omitempty"` - // True when a browser window has been detected on the virtual display. - BrowserWindowDetected bool `protobuf:"varint,4,opt,name=browser_window_detected,json=browserWindowDetected,proto3" json:"browser_window_detected,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *VNCState) Reset() { - *x = VNCState{} - mi := &file_session_v1_types_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *VNCState) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VNCState) ProtoMessage() {} - -func (x *VNCState) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VNCState.ProtoReflect.Descriptor instead. -func (*VNCState) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{3} -} - -func (x *VNCState) GetStatus() VNCStatus { - if x != nil { - return x.Status - } - return VNCStatus_VNC_STATUS_UNSPECIFIED -} - -func (x *VNCState) GetDisplayNumber() int32 { - if x != nil { - return x.DisplayNumber - } - return 0 -} - -func (x *VNCState) GetVncPassword() string { - if x != nil { - return x.VncPassword - } - return "" -} - -func (x *VNCState) GetBrowserWindowDetected() bool { - if x != nil { - return x.BrowserWindowDetected - } - return false -} - -// CDPState holds the Chrome DevTools Protocol streaming state for a session. -type CDPState struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Current operational status. - Status CDPStatus `protobuf:"varint,1,opt,name=status,proto3,enum=session.v1.CDPStatus" json:"status,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CDPState) Reset() { - *x = CDPState{} - mi := &file_session_v1_types_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CDPState) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CDPState) ProtoMessage() {} - -func (x *CDPState) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CDPState.ProtoReflect.Descriptor instead. -func (*CDPState) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{4} -} - -func (x *CDPState) GetStatus() CDPStatus { - if x != nil { - return x.Status - } - return CDPStatus_CDP_STATUS_UNSPECIFIED -} - -// ExternalInstanceMetadata contains metadata for externally discovered sessions. -type ExternalInstanceMetadata struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Tmux server socket (empty = default tmux server) - TmuxSocket string `protobuf:"bytes,1,opt,name=tmux_socket,json=tmuxSocket,proto3" json:"tmux_socket,omitempty"` - // Full tmux session name - TmuxSessionName string `protobuf:"bytes,2,opt,name=tmux_session_name,json=tmuxSessionName,proto3" json:"tmux_session_name,omitempty"` - // When this instance was first discovered - DiscoveredAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=discovered_at,json=discoveredAt,proto3" json:"discovered_at,omitempty"` - // When this instance was last seen during discovery - LastSeen *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"` - // Original process ID when first discovered - OriginalPid int32 `protobuf:"varint,5,opt,name=original_pid,json=originalPid,proto3" json:"original_pid,omitempty"` - // Path to ssq-mux Unix domain socket (if mux-enabled) - MuxSocketPath string `protobuf:"bytes,6,opt,name=mux_socket_path,json=muxSocketPath,proto3" json:"mux_socket_path,omitempty"` - // Whether this instance supports mux protocol for bidirectional terminal access - MuxEnabled bool `protobuf:"varint,7,opt,name=mux_enabled,json=muxEnabled,proto3" json:"mux_enabled,omitempty"` - // Source terminal that spawned this Claude session (e.g., "IntelliJ", "VSCode", "Terminal") - SourceTerminal string `protobuf:"bytes,8,opt,name=source_terminal,json=sourceTerminal,proto3" json:"source_terminal,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ExternalInstanceMetadata) Reset() { - *x = ExternalInstanceMetadata{} - mi := &file_session_v1_types_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExternalInstanceMetadata) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExternalInstanceMetadata) ProtoMessage() {} - -func (x *ExternalInstanceMetadata) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExternalInstanceMetadata.ProtoReflect.Descriptor instead. -func (*ExternalInstanceMetadata) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{5} -} - -func (x *ExternalInstanceMetadata) GetTmuxSocket() string { - if x != nil { - return x.TmuxSocket - } - return "" -} - -func (x *ExternalInstanceMetadata) GetTmuxSessionName() string { - if x != nil { - return x.TmuxSessionName - } - return "" -} - -func (x *ExternalInstanceMetadata) GetDiscoveredAt() *timestamppb.Timestamp { - if x != nil { - return x.DiscoveredAt - } - return nil -} - -func (x *ExternalInstanceMetadata) GetLastSeen() *timestamppb.Timestamp { - if x != nil { - return x.LastSeen - } - return nil -} - -func (x *ExternalInstanceMetadata) GetOriginalPid() int32 { - if x != nil { - return x.OriginalPid - } - return 0 -} - -func (x *ExternalInstanceMetadata) GetMuxSocketPath() string { - if x != nil { - return x.MuxSocketPath - } - return "" -} - -func (x *ExternalInstanceMetadata) GetMuxEnabled() bool { - if x != nil { - return x.MuxEnabled - } - return false -} - -func (x *ExternalInstanceMetadata) GetSourceTerminal() string { - if x != nil { - return x.SourceTerminal - } - return "" -} - -// DiffStats contains git diff statistics for a session. -// Maps to git.DiffStats in Go. -type DiffStats struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Number of lines added. - Added int32 `protobuf:"varint,1,opt,name=added,proto3" json:"added,omitempty"` - // Number of lines removed. - Removed int32 `protobuf:"varint,2,opt,name=removed,proto3" json:"removed,omitempty"` - // Full unified diff content. - Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DiffStats) Reset() { - *x = DiffStats{} - mi := &file_session_v1_types_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DiffStats) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DiffStats) ProtoMessage() {} - -func (x *DiffStats) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DiffStats.ProtoReflect.Descriptor instead. -func (*DiffStats) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{6} -} - -func (x *DiffStats) GetAdded() int32 { - if x != nil { - return x.Added - } - return 0 -} - -func (x *DiffStats) GetRemoved() int32 { - if x != nil { - return x.Removed - } - return 0 -} - -func (x *DiffStats) GetContent() string { - if x != nil { - return x.Content - } - return "" -} - -// GitWorktree contains git worktree information for a session. -// Maps to git.GitWorktree in Go. -type GitWorktree struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Path to original repository. - RepoPath string `protobuf:"bytes,1,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - // Path to worktree directory. - WorktreePath string `protobuf:"bytes,2,opt,name=worktree_path,json=worktreePath,proto3" json:"worktree_path,omitempty"` - // Session name associated with worktree. - SessionName string `protobuf:"bytes,3,opt,name=session_name,json=sessionName,proto3" json:"session_name,omitempty"` - // Branch name in worktree. - BranchName string `protobuf:"bytes,4,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` - // Base commit SHA when worktree was created. - BaseCommitSha string `protobuf:"bytes,5,opt,name=base_commit_sha,json=baseCommitSha,proto3" json:"base_commit_sha,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GitWorktree) Reset() { - *x = GitWorktree{} - mi := &file_session_v1_types_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GitWorktree) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GitWorktree) ProtoMessage() {} - -func (x *GitWorktree) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GitWorktree.ProtoReflect.Descriptor instead. -func (*GitWorktree) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{7} -} - -func (x *GitWorktree) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *GitWorktree) GetWorktreePath() string { - if x != nil { - return x.WorktreePath - } - return "" -} - -func (x *GitWorktree) GetSessionName() string { - if x != nil { - return x.SessionName - } - return "" -} - -func (x *GitWorktree) GetBranchName() string { - if x != nil { - return x.BranchName - } - return "" -} - -func (x *GitWorktree) GetBaseCommitSha() string { - if x != nil { - return x.BaseCommitSha - } - return "" -} - -// ClaudeSession contains Claude Code session persistence information. -// Allows resuming/reattaching to existing Claude Code sessions. -type ClaudeSession struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Claude Code session identifier. - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Conversation thread ID. - ConversationId string `protobuf:"bytes,2,opt,name=conversation_id,json=conversationId,proto3" json:"conversation_id,omitempty"` - // Project name in Claude Code. - ProjectName string `protobuf:"bytes,3,opt,name=project_name,json=projectName,proto3" json:"project_name,omitempty"` - // Last time session was attached/used. - LastAttached *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_attached,json=lastAttached,proto3" json:"last_attached,omitempty"` - // User preferences for Claude Code integration. - Settings *ClaudeSettings `protobuf:"bytes,5,opt,name=settings,proto3" json:"settings,omitempty"` - // Additional session metadata. - Metadata map[string]string `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClaudeSession) Reset() { - *x = ClaudeSession{} - mi := &file_session_v1_types_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClaudeSession) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClaudeSession) ProtoMessage() {} - -func (x *ClaudeSession) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClaudeSession.ProtoReflect.Descriptor instead. -func (*ClaudeSession) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{8} -} - -func (x *ClaudeSession) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *ClaudeSession) GetConversationId() string { - if x != nil { - return x.ConversationId - } - return "" -} - -func (x *ClaudeSession) GetProjectName() string { - if x != nil { - return x.ProjectName - } - return "" -} - -func (x *ClaudeSession) GetLastAttached() *timestamppb.Timestamp { - if x != nil { - return x.LastAttached - } - return nil -} - -func (x *ClaudeSession) GetSettings() *ClaudeSettings { - if x != nil { - return x.Settings - } - return nil -} - -func (x *ClaudeSession) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -// ClaudeSettings contains user preferences for Claude Code integration. -type ClaudeSettings struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Automatically reattach to last session on resume. - AutoReattach bool `protobuf:"varint,1,opt,name=auto_reattach,json=autoReattach,proto3" json:"auto_reattach,omitempty"` - // Preferred session naming pattern. - PreferredSessionName string `protobuf:"bytes,2,opt,name=preferred_session_name,json=preferredSessionName,proto3" json:"preferred_session_name,omitempty"` - // Create new session if previous one is missing. - CreateNewOnMissing bool `protobuf:"varint,3,opt,name=create_new_on_missing,json=createNewOnMissing,proto3" json:"create_new_on_missing,omitempty"` - // Show session selection menu on resume. - ShowSessionSelector bool `protobuf:"varint,4,opt,name=show_session_selector,json=showSessionSelector,proto3" json:"show_session_selector,omitempty"` - // Consider sessions stale after this time (minutes). - SessionTimeoutMinutes int32 `protobuf:"varint,5,opt,name=session_timeout_minutes,json=sessionTimeoutMinutes,proto3" json:"session_timeout_minutes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClaudeSettings) Reset() { - *x = ClaudeSettings{} - mi := &file_session_v1_types_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClaudeSettings) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClaudeSettings) ProtoMessage() {} - -func (x *ClaudeSettings) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClaudeSettings.ProtoReflect.Descriptor instead. -func (*ClaudeSettings) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{9} -} - -func (x *ClaudeSettings) GetAutoReattach() bool { - if x != nil { - return x.AutoReattach - } - return false -} - -func (x *ClaudeSettings) GetPreferredSessionName() string { - if x != nil { - return x.PreferredSessionName - } - return "" -} - -func (x *ClaudeSettings) GetCreateNewOnMissing() bool { - if x != nil { - return x.CreateNewOnMissing - } - return false -} - -func (x *ClaudeSettings) GetShowSessionSelector() bool { - if x != nil { - return x.ShowSessionSelector - } - return false -} - -func (x *ClaudeSettings) GetSessionTimeoutMinutes() int32 { - if x != nil { - return x.SessionTimeoutMinutes - } - return 0 -} - -// ReviewItem represents a session that needs user attention. -// Maps to session.ReviewItem in Go. -type ReviewItem struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Unique session identifier (uses session title). - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Human-readable session name. - SessionName string `protobuf:"bytes,2,opt,name=session_name,json=sessionName,proto3" json:"session_name,omitempty"` - // Reason why session needs attention. - Reason AttentionReason `protobuf:"varint,3,opt,name=reason,proto3,enum=session.v1.AttentionReason" json:"reason,omitempty"` - // Priority level for ordering in queue. - Priority Priority `protobuf:"varint,4,opt,name=priority,proto3,enum=session.v1.Priority" json:"priority,omitempty"` - // When this item was detected as needing attention. - DetectedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=detected_at,json=detectedAt,proto3" json:"detected_at,omitempty"` - // Additional context about why attention is needed. - Context string `protobuf:"bytes,6,opt,name=context,proto3" json:"context,omitempty"` - // Name of detection pattern that triggered this item. - PatternName string `protobuf:"bytes,7,opt,name=pattern_name,json=patternName,proto3" json:"pattern_name,omitempty"` - // Additional metadata key-value pairs. - Metadata map[string]string `protobuf:"bytes,8,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Session details for rich display (matching Session message fields) - // Program running in session (e.g., "claude", "aider"). - Program string `protobuf:"bytes,9,opt,name=program,proto3" json:"program,omitempty"` - // Git branch name for this session. - Branch string `protobuf:"bytes,10,opt,name=branch,proto3" json:"branch,omitempty"` - // Path to workspace repository root. - Path string `protobuf:"bytes,11,opt,name=path,proto3" json:"path,omitempty"` - // Directory within repository to start in. - WorkingDir string `protobuf:"bytes,12,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` - // Current session status. - Status SessionStatus `protobuf:"varint,13,opt,name=status,proto3,enum=session.v1.SessionStatus" json:"status,omitempty"` - // Tags for flexible multi-dimensional organization. - Tags []string `protobuf:"bytes,14,rep,name=tags,proto3" json:"tags,omitempty"` - // Category for organization. - Category string `protobuf:"bytes,15,opt,name=category,proto3" json:"category,omitempty"` - // Git diff statistics. - DiffStats *DiffStats `protobuf:"bytes,16,opt,name=diff_stats,json=diffStats,proto3" json:"diff_stats,omitempty"` - // Last time meaningful terminal output was received (excluding tmux banners). - // This is the actual last activity time, used for sorting and display. - // Used instead of detected_at for showing when the session was last active. - LastActivity *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=last_activity,json=lastActivity,proto3" json:"last_activity,omitempty"` - // GitHub PR URL for the session (empty if no PR exists yet). - GithubPrUrl string `protobuf:"bytes,18,opt,name=github_pr_url,json=githubPrUrl,proto3" json:"github_pr_url,omitempty"` - // True if the session's branch has diverged from the base branch (main/master). - // Populated by RunOneShot pre-check; shows warning badge in review queue UI. - BranchDivergedFromBase bool `protobuf:"varint,19,opt,name=branch_diverged_from_base,json=branchDivergedFromBase,proto3" json:"branch_diverged_from_base,omitempty"` - // Deprecated: derived client-side via deriveWorkingState(). - // Active-work state for review queue filtering. Populated from IdleDetector state. - WorkingState WorkingState `protobuf:"varint,20,opt,name=working_state,json=workingState,proto3,enum=session.v1.WorkingState" json:"working_state,omitempty"` - // Fine-grained activity state derived from ClaudeStatus at the time the item - // was enqueued. Used by the frontend deriveWorkingState() utility to compute - // the effective WorkingState without relying on the deprecated working_state field. - SubStatus SubStatus `protobuf:"varint,21,opt,name=sub_status,json=subStatus,proto3,enum=session.v1.SubStatus" json:"sub_status,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReviewItem) Reset() { - *x = ReviewItem{} - mi := &file_session_v1_types_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReviewItem) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReviewItem) ProtoMessage() {} - -func (x *ReviewItem) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReviewItem.ProtoReflect.Descriptor instead. -func (*ReviewItem) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{10} -} - -func (x *ReviewItem) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *ReviewItem) GetSessionName() string { - if x != nil { - return x.SessionName - } - return "" -} - -func (x *ReviewItem) GetReason() AttentionReason { - if x != nil { - return x.Reason - } - return AttentionReason_ATTENTION_REASON_UNSPECIFIED -} - -func (x *ReviewItem) GetPriority() Priority { - if x != nil { - return x.Priority - } - return Priority_PRIORITY_UNSPECIFIED -} - -func (x *ReviewItem) GetDetectedAt() *timestamppb.Timestamp { - if x != nil { - return x.DetectedAt - } - return nil -} - -func (x *ReviewItem) GetContext() string { - if x != nil { - return x.Context - } - return "" -} - -func (x *ReviewItem) GetPatternName() string { - if x != nil { - return x.PatternName - } - return "" -} - -func (x *ReviewItem) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *ReviewItem) GetProgram() string { - if x != nil { - return x.Program - } - return "" -} - -func (x *ReviewItem) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -func (x *ReviewItem) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *ReviewItem) GetWorkingDir() string { - if x != nil { - return x.WorkingDir - } - return "" -} - -func (x *ReviewItem) GetStatus() SessionStatus { - if x != nil { - return x.Status - } - return SessionStatus_SESSION_STATUS_UNSPECIFIED -} - -func (x *ReviewItem) GetTags() []string { - if x != nil { - return x.Tags - } - return nil -} - -func (x *ReviewItem) GetCategory() string { - if x != nil { - return x.Category - } - return "" -} - -func (x *ReviewItem) GetDiffStats() *DiffStats { - if x != nil { - return x.DiffStats - } - return nil -} - -func (x *ReviewItem) GetLastActivity() *timestamppb.Timestamp { - if x != nil { - return x.LastActivity - } - return nil -} - -func (x *ReviewItem) GetGithubPrUrl() string { - if x != nil { - return x.GithubPrUrl - } - return "" -} - -func (x *ReviewItem) GetBranchDivergedFromBase() bool { - if x != nil { - return x.BranchDivergedFromBase - } - return false -} - -func (x *ReviewItem) GetWorkingState() WorkingState { - if x != nil { - return x.WorkingState - } - return WorkingState_WORKING_STATE_UNSPECIFIED -} - -func (x *ReviewItem) GetSubStatus() SubStatus { - if x != nil { - return x.SubStatus - } - return SubStatus_SUB_STATUS_UNSPECIFIED -} - -// PRInfo contains metadata about a GitHub pull request. -// Used when creating sessions from PR URLs to provide rich context. -type PRInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Pull request number. - Number int32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"` - // PR title. - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - // PR description/body. - Body string `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` - // Head branch reference (source branch). - HeadRef string `protobuf:"bytes,4,opt,name=head_ref,json=headRef,proto3" json:"head_ref,omitempty"` - // Base branch reference (target branch). - BaseRef string `protobuf:"bytes,5,opt,name=base_ref,json=baseRef,proto3" json:"base_ref,omitempty"` - // Current PR state (open, closed, merged). - State string `protobuf:"bytes,6,opt,name=state,proto3" json:"state,omitempty"` - // PR author username. - Author string `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"` - // Labels applied to PR. - Labels []string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty"` - // HTML URL to view PR on GitHub. - HtmlUrl string `protobuf:"bytes,9,opt,name=html_url,json=htmlUrl,proto3" json:"html_url,omitempty"` - // Whether PR is marked as draft. - IsDraft bool `protobuf:"varint,10,opt,name=is_draft,json=isDraft,proto3" json:"is_draft,omitempty"` - // Mergeable status (mergeable, conflicting, unknown). - Mergeable string `protobuf:"bytes,11,opt,name=mergeable,proto3" json:"mergeable,omitempty"` - // Number of lines added. - Additions int32 `protobuf:"varint,12,opt,name=additions,proto3" json:"additions,omitempty"` - // Number of lines deleted. - Deletions int32 `protobuf:"varint,13,opt,name=deletions,proto3" json:"deletions,omitempty"` - // Number of files changed. - ChangedFiles int32 `protobuf:"varint,14,opt,name=changed_files,json=changedFiles,proto3" json:"changed_files,omitempty"` - // PR creation timestamp. - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // PR last updated timestamp. - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PRInfo) Reset() { - *x = PRInfo{} - mi := &file_session_v1_types_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PRInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PRInfo) ProtoMessage() {} - -func (x *PRInfo) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PRInfo.ProtoReflect.Descriptor instead. -func (*PRInfo) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{11} -} - -func (x *PRInfo) GetNumber() int32 { - if x != nil { - return x.Number - } - return 0 -} - -func (x *PRInfo) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *PRInfo) GetBody() string { - if x != nil { - return x.Body - } - return "" -} - -func (x *PRInfo) GetHeadRef() string { - if x != nil { - return x.HeadRef - } - return "" -} - -func (x *PRInfo) GetBaseRef() string { - if x != nil { - return x.BaseRef - } - return "" -} - -func (x *PRInfo) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *PRInfo) GetAuthor() string { - if x != nil { - return x.Author - } - return "" -} - -func (x *PRInfo) GetLabels() []string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *PRInfo) GetHtmlUrl() string { - if x != nil { - return x.HtmlUrl - } - return "" -} - -func (x *PRInfo) GetIsDraft() bool { - if x != nil { - return x.IsDraft - } - return false -} - -func (x *PRInfo) GetMergeable() string { - if x != nil { - return x.Mergeable - } - return "" -} - -func (x *PRInfo) GetAdditions() int32 { - if x != nil { - return x.Additions - } - return 0 -} - -func (x *PRInfo) GetDeletions() int32 { - if x != nil { - return x.Deletions - } - return 0 -} - -func (x *PRInfo) GetChangedFiles() int32 { - if x != nil { - return x.ChangedFiles - } - return 0 -} - -func (x *PRInfo) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *PRInfo) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -// PRComment represents a comment on a GitHub pull request. -type PRComment struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Comment ID. - Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - // Comment author username. - Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"` - // Comment body text. - Body string `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` - // Comment creation timestamp. - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // File path (for review comments only). - Path *string `protobuf:"bytes,5,opt,name=path,proto3,oneof" json:"path,omitempty"` - // Line number (for review comments only). - Line *int32 `protobuf:"varint,6,opt,name=line,proto3,oneof" json:"line,omitempty"` - // Whether this is a review comment (vs general comment). - IsReview bool `protobuf:"varint,7,opt,name=is_review,json=isReview,proto3" json:"is_review,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PRComment) Reset() { - *x = PRComment{} - mi := &file_session_v1_types_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PRComment) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PRComment) ProtoMessage() {} - -func (x *PRComment) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PRComment.ProtoReflect.Descriptor instead. -func (*PRComment) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{12} -} - -func (x *PRComment) GetId() int32 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *PRComment) GetAuthor() string { - if x != nil { - return x.Author - } - return "" -} - -func (x *PRComment) GetBody() string { - if x != nil { - return x.Body - } - return "" -} - -func (x *PRComment) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *PRComment) GetPath() string { - if x != nil && x.Path != nil { - return *x.Path - } - return "" -} - -func (x *PRComment) GetLine() int32 { - if x != nil && x.Line != nil { - return *x.Line - } - return 0 -} - -func (x *PRComment) GetIsReview() bool { - if x != nil { - return x.IsReview - } - return false -} - -// ReviewQueue contains statistics and items needing attention. -type ReviewQueue struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Total number of items in queue. - TotalItems int32 `protobuf:"varint,1,opt,name=total_items,json=totalItems,proto3" json:"total_items,omitempty"` - // Items organized by priority (sorted highest to lowest). - Items []*ReviewItem `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"` - // Statistics by priority level. - ByPriority map[int32]int32 `protobuf:"bytes,3,rep,name=by_priority,json=byPriority,proto3" json:"by_priority,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - // Statistics by attention reason. - ByReason map[int32]int32 `protobuf:"bytes,4,rep,name=by_reason,json=byReason,proto3" json:"by_reason,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - // Average age of items in queue (seconds). - AverageAgeSeconds int64 `protobuf:"varint,5,opt,name=average_age_seconds,json=averageAgeSeconds,proto3" json:"average_age_seconds,omitempty"` - // Oldest item session ID. - OldestItemId string `protobuf:"bytes,6,opt,name=oldest_item_id,json=oldestItemId,proto3" json:"oldest_item_id,omitempty"` - // Age of oldest item (seconds). - OldestAgeSeconds int64 `protobuf:"varint,7,opt,name=oldest_age_seconds,json=oldestAgeSeconds,proto3" json:"oldest_age_seconds,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReviewQueue) Reset() { - *x = ReviewQueue{} - mi := &file_session_v1_types_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReviewQueue) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReviewQueue) ProtoMessage() {} - -func (x *ReviewQueue) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReviewQueue.ProtoReflect.Descriptor instead. -func (*ReviewQueue) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{13} -} - -func (x *ReviewQueue) GetTotalItems() int32 { - if x != nil { - return x.TotalItems - } - return 0 -} - -func (x *ReviewQueue) GetItems() []*ReviewItem { - if x != nil { - return x.Items - } - return nil -} - -func (x *ReviewQueue) GetByPriority() map[int32]int32 { - if x != nil { - return x.ByPriority - } - return nil -} - -func (x *ReviewQueue) GetByReason() map[int32]int32 { - if x != nil { - return x.ByReason - } - return nil -} - -func (x *ReviewQueue) GetAverageAgeSeconds() int64 { - if x != nil { - return x.AverageAgeSeconds - } - return 0 -} - -func (x *ReviewQueue) GetOldestItemId() string { - if x != nil { - return x.OldestItemId - } - return "" -} - -func (x *ReviewQueue) GetOldestAgeSeconds() int64 { - if x != nil { - return x.OldestAgeSeconds - } - return 0 -} - -// Notification represents a notification sent from a tmux session to the server. -type Notification struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Unique notification identifier (server-generated) - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Session identifier that sent the notification - SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Session name for display - SessionName string `protobuf:"bytes,3,opt,name=session_name,json=sessionName,proto3" json:"session_name,omitempty"` - // Type of notification - NotificationType NotificationType `protobuf:"varint,4,opt,name=notification_type,json=notificationType,proto3,enum=session.v1.NotificationType" json:"notification_type,omitempty"` - // Priority level (determines UI treatment) - Priority NotificationPriority `protobuf:"varint,5,opt,name=priority,proto3,enum=session.v1.NotificationPriority" json:"priority,omitempty"` - // Human-readable title - Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"` - // Detailed message - Message string `protobuf:"bytes,7,opt,name=message,proto3" json:"message,omitempty"` - // When the notification was created - Timestamp *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Optional metadata (key-value pairs for additional context) - Metadata map[string]string `protobuf:"bytes,9,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *Notification) Reset() { - *x = Notification{} - mi := &file_session_v1_types_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Notification) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Notification) ProtoMessage() {} - -func (x *Notification) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Notification.ProtoReflect.Descriptor instead. -func (*Notification) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{14} -} - -func (x *Notification) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Notification) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *Notification) GetSessionName() string { - if x != nil { - return x.SessionName - } - return "" -} - -func (x *Notification) GetNotificationType() NotificationType { - if x != nil { - return x.NotificationType - } - return NotificationType_NOTIFICATION_TYPE_UNSPECIFIED -} - -func (x *Notification) GetPriority() NotificationPriority { - if x != nil { - return x.Priority - } - return NotificationPriority_NOTIFICATION_PRIORITY_UNSPECIFIED -} - -func (x *Notification) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *Notification) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *Notification) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -func (x *Notification) GetMetadata() map[string]string { - if x != nil { - return x.Metadata - } - return nil -} - -// FileChange represents a changed file in the working directory -type FileChange struct { - state protoimpl.MessageState `protogen:"open.v1"` - // File path relative to repository root - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - // Type of change - Status FileStatus `protobuf:"varint,2,opt,name=status,proto3,enum=session.v1.FileStatus" json:"status,omitempty"` - // Whether the change is staged for commit - IsStaged bool `protobuf:"varint,3,opt,name=is_staged,json=isStaged,proto3" json:"is_staged,omitempty"` - // Original path for renames/copies - OldPath string `protobuf:"bytes,4,opt,name=old_path,json=oldPath,proto3" json:"old_path,omitempty"` - // Lines added, from `git diff --numstat` (0 for untracked/binary files) - Additions int32 `protobuf:"varint,5,opt,name=additions,proto3" json:"additions,omitempty"` - // Lines removed, from `git diff --numstat` (0 for untracked/binary files) - Deletions int32 `protobuf:"varint,6,opt,name=deletions,proto3" json:"deletions,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FileChange) Reset() { - *x = FileChange{} - mi := &file_session_v1_types_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FileChange) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FileChange) ProtoMessage() {} - -func (x *FileChange) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FileChange.ProtoReflect.Descriptor instead. -func (*FileChange) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{15} -} - -func (x *FileChange) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *FileChange) GetStatus() FileStatus { - if x != nil { - return x.Status - } - return FileStatus_FILE_STATUS_UNSPECIFIED -} - -func (x *FileChange) GetIsStaged() bool { - if x != nil { - return x.IsStaged - } - return false -} - -func (x *FileChange) GetOldPath() string { - if x != nil { - return x.OldPath - } - return "" -} - -func (x *FileChange) GetAdditions() int32 { - if x != nil { - return x.Additions - } - return 0 -} - -func (x *FileChange) GetDeletions() int32 { - if x != nil { - return x.Deletions - } - return 0 -} - -// VCSStatus represents the current status of the version control system -type VCSStatus struct { - state protoimpl.MessageState `protogen:"open.v1"` - // VCS type (git, jujutsu) - Type VCSType `protobuf:"varint,1,opt,name=type,proto3,enum=session.v1.VCSType" json:"type,omitempty"` - // Current branch name (Git) or bookmark (Jujutsu) - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - // Short SHA (Git) or change ID (Jujutsu) - HeadCommit string `protobuf:"bytes,3,opt,name=head_commit,json=headCommit,proto3" json:"head_commit,omitempty"` - // Commit message or change description - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - // Commits ahead of upstream - AheadBy int32 `protobuf:"varint,5,opt,name=ahead_by,json=aheadBy,proto3" json:"ahead_by,omitempty"` - // Commits behind upstream - BehindBy int32 `protobuf:"varint,6,opt,name=behind_by,json=behindBy,proto3" json:"behind_by,omitempty"` - // Name of upstream branch/remote - Upstream string `protobuf:"bytes,7,opt,name=upstream,proto3" json:"upstream,omitempty"` - // Has staged changes - HasStaged bool `protobuf:"varint,8,opt,name=has_staged,json=hasStaged,proto3" json:"has_staged,omitempty"` - // Has unstaged changes - HasUnstaged bool `protobuf:"varint,9,opt,name=has_unstaged,json=hasUnstaged,proto3" json:"has_unstaged,omitempty"` - // Has untracked files - HasUntracked bool `protobuf:"varint,10,opt,name=has_untracked,json=hasUntracked,proto3" json:"has_untracked,omitempty"` - // Has merge/rebase conflicts - HasConflicts bool `protobuf:"varint,11,opt,name=has_conflicts,json=hasConflicts,proto3" json:"has_conflicts,omitempty"` - // Working directory is clean - IsClean bool `protobuf:"varint,12,opt,name=is_clean,json=isClean,proto3" json:"is_clean,omitempty"` - // Staged files list - StagedFiles []*FileChange `protobuf:"bytes,13,rep,name=staged_files,json=stagedFiles,proto3" json:"staged_files,omitempty"` - // Unstaged files list - UnstagedFiles []*FileChange `protobuf:"bytes,14,rep,name=unstaged_files,json=unstagedFiles,proto3" json:"unstaged_files,omitempty"` - // Untracked files list - UntrackedFiles []*FileChange `protobuf:"bytes,15,rep,name=untracked_files,json=untrackedFiles,proto3" json:"untracked_files,omitempty"` - // Conflict files list - ConflictFiles []*FileChange `protobuf:"bytes,16,rep,name=conflict_files,json=conflictFiles,proto3" json:"conflict_files,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *VCSStatus) Reset() { - *x = VCSStatus{} - mi := &file_session_v1_types_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *VCSStatus) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VCSStatus) ProtoMessage() {} - -func (x *VCSStatus) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VCSStatus.ProtoReflect.Descriptor instead. -func (*VCSStatus) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{16} -} - -func (x *VCSStatus) GetType() VCSType { - if x != nil { - return x.Type - } - return VCSType_VCS_TYPE_UNSPECIFIED -} - -func (x *VCSStatus) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -func (x *VCSStatus) GetHeadCommit() string { - if x != nil { - return x.HeadCommit - } - return "" -} - -func (x *VCSStatus) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *VCSStatus) GetAheadBy() int32 { - if x != nil { - return x.AheadBy - } - return 0 -} - -func (x *VCSStatus) GetBehindBy() int32 { - if x != nil { - return x.BehindBy - } - return 0 -} - -func (x *VCSStatus) GetUpstream() string { - if x != nil { - return x.Upstream - } - return "" -} - -func (x *VCSStatus) GetHasStaged() bool { - if x != nil { - return x.HasStaged - } - return false -} - -func (x *VCSStatus) GetHasUnstaged() bool { - if x != nil { - return x.HasUnstaged - } - return false -} - -func (x *VCSStatus) GetHasUntracked() bool { - if x != nil { - return x.HasUntracked - } - return false -} - -func (x *VCSStatus) GetHasConflicts() bool { - if x != nil { - return x.HasConflicts - } - return false -} - -func (x *VCSStatus) GetIsClean() bool { - if x != nil { - return x.IsClean - } - return false -} - -func (x *VCSStatus) GetStagedFiles() []*FileChange { - if x != nil { - return x.StagedFiles - } - return nil -} - -func (x *VCSStatus) GetUnstagedFiles() []*FileChange { - if x != nil { - return x.UnstagedFiles - } - return nil -} - -func (x *VCSStatus) GetUntrackedFiles() []*FileChange { - if x != nil { - return x.UntrackedFiles - } - return nil -} - -func (x *VCSStatus) GetConflictFiles() []*FileChange { - if x != nil { - return x.ConflictFiles - } - return nil -} - -// BookmarkTarget represents a bookmark/branch as a switch target -type BookmarkTarget struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Bookmark/branch name - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Revision ID this bookmark points to - RevisionId string `protobuf:"bytes,2,opt,name=revision_id,json=revisionId,proto3" json:"revision_id,omitempty"` - // Whether this is a remote tracking bookmark - IsRemote bool `protobuf:"varint,3,opt,name=is_remote,json=isRemote,proto3" json:"is_remote,omitempty"` - // Upstream branch (if any) - Upstream string `protobuf:"bytes,4,opt,name=upstream,proto3" json:"upstream,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *BookmarkTarget) Reset() { - *x = BookmarkTarget{} - mi := &file_session_v1_types_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *BookmarkTarget) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BookmarkTarget) ProtoMessage() {} - -func (x *BookmarkTarget) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[17] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BookmarkTarget.ProtoReflect.Descriptor instead. -func (*BookmarkTarget) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{17} -} - -func (x *BookmarkTarget) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *BookmarkTarget) GetRevisionId() string { - if x != nil { - return x.RevisionId - } - return "" -} - -func (x *BookmarkTarget) GetIsRemote() bool { - if x != nil { - return x.IsRemote - } - return false -} - -func (x *BookmarkTarget) GetUpstream() string { - if x != nil { - return x.Upstream - } - return "" -} - -// RevisionTarget represents a revision as a switch target -type RevisionTarget struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Full revision ID (commit SHA or change ID) - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Short ID for display - ShortId string `protobuf:"bytes,2,opt,name=short_id,json=shortId,proto3" json:"short_id,omitempty"` - // Commit/change description - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // Author name - Author string `protobuf:"bytes,4,opt,name=author,proto3" json:"author,omitempty"` - // Timestamp - Timestamp *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Whether this is the current revision - IsCurrent bool `protobuf:"varint,6,opt,name=is_current,json=isCurrent,proto3" json:"is_current,omitempty"` - // Bookmarks pointing to this revision - Bookmarks []string `protobuf:"bytes,7,rep,name=bookmarks,proto3" json:"bookmarks,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RevisionTarget) Reset() { - *x = RevisionTarget{} - mi := &file_session_v1_types_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RevisionTarget) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RevisionTarget) ProtoMessage() {} - -func (x *RevisionTarget) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[18] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RevisionTarget.ProtoReflect.Descriptor instead. -func (*RevisionTarget) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{18} -} - -func (x *RevisionTarget) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *RevisionTarget) GetShortId() string { - if x != nil { - return x.ShortId - } - return "" -} - -func (x *RevisionTarget) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *RevisionTarget) GetAuthor() string { - if x != nil { - return x.Author - } - return "" -} - -func (x *RevisionTarget) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -func (x *RevisionTarget) GetIsCurrent() bool { - if x != nil { - return x.IsCurrent - } - return false -} - -func (x *RevisionTarget) GetBookmarks() []string { - if x != nil { - return x.Bookmarks - } - return nil -} - -// WorktreeTarget represents a worktree as a switch target -type WorktreeTarget struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Worktree name (JJ workspace name) - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Filesystem path to the worktree - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - // Associated bookmark/branch - Bookmark string `protobuf:"bytes,3,opt,name=bookmark,proto3" json:"bookmark,omitempty"` - // Current revision ID in this worktree - RevisionId string `protobuf:"bytes,4,opt,name=revision_id,json=revisionId,proto3" json:"revision_id,omitempty"` - // Whether this is the current worktree - IsCurrent bool `protobuf:"varint,5,opt,name=is_current,json=isCurrent,proto3" json:"is_current,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *WorktreeTarget) Reset() { - *x = WorktreeTarget{} - mi := &file_session_v1_types_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WorktreeTarget) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WorktreeTarget) ProtoMessage() {} - -func (x *WorktreeTarget) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[19] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WorktreeTarget.ProtoReflect.Descriptor instead. -func (*WorktreeTarget) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{19} -} - -func (x *WorktreeTarget) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *WorktreeTarget) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *WorktreeTarget) GetBookmark() string { - if x != nil { - return x.Bookmark - } - return "" -} - -func (x *WorktreeTarget) GetRevisionId() string { - if x != nil { - return x.RevisionId - } - return "" -} - -func (x *WorktreeTarget) GetIsCurrent() bool { - if x != nil { - return x.IsCurrent - } - return false -} - -// AvailableWorkspaceTargets contains all available workspace switch targets -type AvailableWorkspaceTargets struct { - state protoimpl.MessageState `protogen:"open.v1"` - // VCS type (git, jujutsu) - VcsType VCSType `protobuf:"varint,1,opt,name=vcs_type,json=vcsType,proto3,enum=session.v1.VCSType" json:"vcs_type,omitempty"` - // Available bookmarks/branches - Bookmarks []*BookmarkTarget `protobuf:"bytes,2,rep,name=bookmarks,proto3" json:"bookmarks,omitempty"` - // Recent revisions - RecentRevisions []*RevisionTarget `protobuf:"bytes,3,rep,name=recent_revisions,json=recentRevisions,proto3" json:"recent_revisions,omitempty"` - // Available worktrees - Worktrees []*WorktreeTarget `protobuf:"bytes,4,rep,name=worktrees,proto3" json:"worktrees,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AvailableWorkspaceTargets) Reset() { - *x = AvailableWorkspaceTargets{} - mi := &file_session_v1_types_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AvailableWorkspaceTargets) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AvailableWorkspaceTargets) ProtoMessage() {} - -func (x *AvailableWorkspaceTargets) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AvailableWorkspaceTargets.ProtoReflect.Descriptor instead. -func (*AvailableWorkspaceTargets) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{20} -} - -func (x *AvailableWorkspaceTargets) GetVcsType() VCSType { - if x != nil { - return x.VcsType - } - return VCSType_VCS_TYPE_UNSPECIFIED -} - -func (x *AvailableWorkspaceTargets) GetBookmarks() []*BookmarkTarget { - if x != nil { - return x.Bookmarks - } - return nil -} - -func (x *AvailableWorkspaceTargets) GetRecentRevisions() []*RevisionTarget { - if x != nil { - return x.RecentRevisions - } - return nil -} - -func (x *AvailableWorkspaceTargets) GetWorktrees() []*WorktreeTarget { - if x != nil { - return x.Worktrees - } - return nil -} - -// VCSInfo contains version control information for a session -type VCSInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - // VCS type (git, jujutsu) - VcsType VCSType `protobuf:"varint,1,opt,name=vcs_type,json=vcsType,proto3,enum=session.v1.VCSType" json:"vcs_type,omitempty"` - // Whether JJ is available - HasJj bool `protobuf:"varint,2,opt,name=has_jj,json=hasJj,proto3" json:"has_jj,omitempty"` - // Whether Git is available - HasGit bool `protobuf:"varint,3,opt,name=has_git,json=hasGit,proto3" json:"has_git,omitempty"` - // Whether this is a JJ+Git colocated repo - IsColocated bool `protobuf:"varint,4,opt,name=is_colocated,json=isColocated,proto3" json:"is_colocated,omitempty"` - // Repository root path - RepoPath string `protobuf:"bytes,5,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - // Current bookmark/branch name - CurrentBookmark string `protobuf:"bytes,6,opt,name=current_bookmark,json=currentBookmark,proto3" json:"current_bookmark,omitempty"` - // Current revision (short ID) - CurrentRevision string `protobuf:"bytes,7,opt,name=current_revision,json=currentRevision,proto3" json:"current_revision,omitempty"` - // Whether there are uncommitted changes - HasUncommittedChanges bool `protobuf:"varint,8,opt,name=has_uncommitted_changes,json=hasUncommittedChanges,proto3" json:"has_uncommitted_changes,omitempty"` - // Count of modified/added/deleted files - ModifiedFileCount int32 `protobuf:"varint,9,opt,name=modified_file_count,json=modifiedFileCount,proto3" json:"modified_file_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *VCSInfo) Reset() { - *x = VCSInfo{} - mi := &file_session_v1_types_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *VCSInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VCSInfo) ProtoMessage() {} - -func (x *VCSInfo) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VCSInfo.ProtoReflect.Descriptor instead. -func (*VCSInfo) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{21} -} - -func (x *VCSInfo) GetVcsType() VCSType { - if x != nil { - return x.VcsType - } - return VCSType_VCS_TYPE_UNSPECIFIED -} - -func (x *VCSInfo) GetHasJj() bool { - if x != nil { - return x.HasJj - } - return false -} - -func (x *VCSInfo) GetHasGit() bool { - if x != nil { - return x.HasGit - } - return false -} - -func (x *VCSInfo) GetIsColocated() bool { - if x != nil { - return x.IsColocated - } - return false -} - -func (x *VCSInfo) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *VCSInfo) GetCurrentBookmark() string { - if x != nil { - return x.CurrentBookmark - } - return "" -} - -func (x *VCSInfo) GetCurrentRevision() string { - if x != nil { - return x.CurrentRevision - } - return "" -} - -func (x *VCSInfo) GetHasUncommittedChanges() bool { - if x != nil { - return x.HasUncommittedChanges - } - return false -} - -func (x *VCSInfo) GetModifiedFileCount() int32 { - if x != nil { - return x.ModifiedFileCount - } - return 0 -} - -// PendingApprovalProto represents a Claude Code tool use request awaiting user decision. -// Created when Claude Code fires a PermissionRequest HTTP hook to claude-squad. -type PendingApprovalProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Unique approval identifier (UUID). - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // claude-squad session this approval belongs to (may be "unknown" for unmapped sessions). - SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Claude Code tool name (e.g., "Bash", "Edit", "Write"). - ToolName string `protobuf:"bytes,3,opt,name=tool_name,json=toolName,proto3" json:"tool_name,omitempty"` - // Tool input key-value pairs (e.g., {"command": "npm test"}). - ToolInput map[string]string `protobuf:"bytes,4,rep,name=tool_input,json=toolInput,proto3" json:"tool_input,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Working directory where Claude Code is running. - Cwd string `protobuf:"bytes,5,opt,name=cwd,proto3" json:"cwd,omitempty"` - // Claude Code's permission mode (e.g., "default", "auto"). - PermissionMode string `protobuf:"bytes,6,opt,name=permission_mode,json=permissionMode,proto3" json:"permission_mode,omitempty"` - // When this approval was created. - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // When this approval expires (server-side cutoff before hook timeout). - ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` - // Seconds remaining before expiry (convenience field for countdown timers). - SecondsRemaining int32 `protobuf:"varint,9,opt,name=seconds_remaining,json=secondsRemaining,proto3" json:"seconds_remaining,omitempty"` - // Classifier-assigned risk level ("low"/"medium"/"high"/"critical"), captured once at - // creation time. Empty for approvals that predate this field. - RiskLevel string `protobuf:"bytes,10,opt,name=risk_level,json=riskLevel,proto3" json:"risk_level,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PendingApprovalProto) Reset() { - *x = PendingApprovalProto{} - mi := &file_session_v1_types_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PendingApprovalProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PendingApprovalProto) ProtoMessage() {} - -func (x *PendingApprovalProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[22] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PendingApprovalProto.ProtoReflect.Descriptor instead. -func (*PendingApprovalProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{22} -} - -func (x *PendingApprovalProto) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *PendingApprovalProto) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *PendingApprovalProto) GetToolName() string { - if x != nil { - return x.ToolName - } - return "" -} - -func (x *PendingApprovalProto) GetToolInput() map[string]string { - if x != nil { - return x.ToolInput - } - return nil -} - -func (x *PendingApprovalProto) GetCwd() string { - if x != nil { - return x.Cwd - } - return "" -} - -func (x *PendingApprovalProto) GetPermissionMode() string { - if x != nil { - return x.PermissionMode - } - return "" -} - -func (x *PendingApprovalProto) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *PendingApprovalProto) GetExpiresAt() *timestamppb.Timestamp { - if x != nil { - return x.ExpiresAt - } - return nil -} - -func (x *PendingApprovalProto) GetSecondsRemaining() int32 { - if x != nil { - return x.SecondsRemaining - } - return 0 -} - -func (x *PendingApprovalProto) GetRiskLevel() string { - if x != nil { - return x.RiskLevel - } - return "" -} - -// ApprovalRuleProto represents a single auto-approval rule. -type ApprovalRuleProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - ToolName string `protobuf:"bytes,3,opt,name=tool_name,json=toolName,proto3" json:"tool_name,omitempty"` - ToolPattern string `protobuf:"bytes,4,opt,name=tool_pattern,json=toolPattern,proto3" json:"tool_pattern,omitempty"` - CommandPattern string `protobuf:"bytes,5,opt,name=command_pattern,json=commandPattern,proto3" json:"command_pattern,omitempty"` - FilePattern string `protobuf:"bytes,6,opt,name=file_pattern,json=filePattern,proto3" json:"file_pattern,omitempty"` - Decision AutoDecision `protobuf:"varint,7,opt,name=decision,proto3,enum=session.v1.AutoDecision" json:"decision,omitempty"` - RiskLevel string `protobuf:"bytes,8,opt,name=risk_level,json=riskLevel,proto3" json:"risk_level,omitempty"` - Reason string `protobuf:"bytes,9,opt,name=reason,proto3" json:"reason,omitempty"` - Alternative string `protobuf:"bytes,10,opt,name=alternative,proto3" json:"alternative,omitempty"` - Priority int32 `protobuf:"varint,11,opt,name=priority,proto3" json:"priority,omitempty"` - Enabled bool `protobuf:"varint,12,opt,name=enabled,proto3" json:"enabled,omitempty"` - Source string `protobuf:"bytes,13,opt,name=source,proto3" json:"source,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Structured CommandCriteria fields (field numbers 15–19 reserved; criteria start at 20). - // When any of these are set, they are used instead of command_pattern for Bash matching. - Programs []string `protobuf:"bytes,20,rep,name=programs,proto3" json:"programs,omitempty"` - Subcommands []string `protobuf:"bytes,21,rep,name=subcommands,proto3" json:"subcommands,omitempty"` - BlockedSubcommands []string `protobuf:"bytes,22,rep,name=blocked_subcommands,json=blockedSubcommands,proto3" json:"blocked_subcommands,omitempty"` - RequiredFlags []string `protobuf:"bytes,23,rep,name=required_flags,json=requiredFlags,proto3" json:"required_flags,omitempty"` - ForbiddenFlags []string `protobuf:"bytes,24,rep,name=forbidden_flags,json=forbiddenFlags,proto3" json:"forbidden_flags,omitempty"` - PythonModes []string `protobuf:"bytes,25,rep,name=python_modes,json=pythonModes,proto3" json:"python_modes,omitempty"` - SafePythonImportsOnly bool `protobuf:"varint,26,opt,name=safe_python_imports_only,json=safePythonImportsOnly,proto3" json:"safe_python_imports_only,omitempty"` - RequiredFlagPrefixes []string `protobuf:"bytes,27,rep,name=required_flag_prefixes,json=requiredFlagPrefixes,proto3" json:"required_flag_prefixes,omitempty"` - // tool_category matches against classifier.CategorizeToolName() result. - // Use one of: "builtin", "builtin-agent", "mcp", "mcp-read", "mcp-write". - ToolCategory string `protobuf:"bytes,28,opt,name=tool_category,json=toolCategory,proto3" json:"tool_category,omitempty"` - // require_ci_passing, when true, only matches when the requesting session's GitHub - // CI check conclusion is "success". Combinable (AND) with all other conditions. - RequireCiPassing bool `protobuf:"varint,29,opt,name=require_ci_passing,json=requireCiPassing,proto3" json:"require_ci_passing,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ApprovalRuleProto) Reset() { - *x = ApprovalRuleProto{} - mi := &file_session_v1_types_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ApprovalRuleProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApprovalRuleProto) ProtoMessage() {} - -func (x *ApprovalRuleProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[23] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ApprovalRuleProto.ProtoReflect.Descriptor instead. -func (*ApprovalRuleProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{23} -} - -func (x *ApprovalRuleProto) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *ApprovalRuleProto) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ApprovalRuleProto) GetToolName() string { - if x != nil { - return x.ToolName - } - return "" -} - -func (x *ApprovalRuleProto) GetToolPattern() string { - if x != nil { - return x.ToolPattern - } - return "" -} - -func (x *ApprovalRuleProto) GetCommandPattern() string { - if x != nil { - return x.CommandPattern - } - return "" -} - -func (x *ApprovalRuleProto) GetFilePattern() string { - if x != nil { - return x.FilePattern - } - return "" -} - -func (x *ApprovalRuleProto) GetDecision() AutoDecision { - if x != nil { - return x.Decision - } - return AutoDecision_AUTO_DECISION_UNSPECIFIED -} - -func (x *ApprovalRuleProto) GetRiskLevel() string { - if x != nil { - return x.RiskLevel - } - return "" -} - -func (x *ApprovalRuleProto) GetReason() string { - if x != nil { - return x.Reason - } - return "" -} - -func (x *ApprovalRuleProto) GetAlternative() string { - if x != nil { - return x.Alternative - } - return "" -} - -func (x *ApprovalRuleProto) GetPriority() int32 { - if x != nil { - return x.Priority - } - return 0 -} - -func (x *ApprovalRuleProto) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *ApprovalRuleProto) GetSource() string { - if x != nil { - return x.Source - } - return "" -} - -func (x *ApprovalRuleProto) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *ApprovalRuleProto) GetPrograms() []string { - if x != nil { - return x.Programs - } - return nil -} - -func (x *ApprovalRuleProto) GetSubcommands() []string { - if x != nil { - return x.Subcommands - } - return nil -} - -func (x *ApprovalRuleProto) GetBlockedSubcommands() []string { - if x != nil { - return x.BlockedSubcommands - } - return nil -} - -func (x *ApprovalRuleProto) GetRequiredFlags() []string { - if x != nil { - return x.RequiredFlags - } - return nil -} - -func (x *ApprovalRuleProto) GetForbiddenFlags() []string { - if x != nil { - return x.ForbiddenFlags - } - return nil -} - -func (x *ApprovalRuleProto) GetPythonModes() []string { - if x != nil { - return x.PythonModes - } - return nil -} - -func (x *ApprovalRuleProto) GetSafePythonImportsOnly() bool { - if x != nil { - return x.SafePythonImportsOnly - } - return false -} - -func (x *ApprovalRuleProto) GetRequiredFlagPrefixes() []string { - if x != nil { - return x.RequiredFlagPrefixes - } - return nil -} - -func (x *ApprovalRuleProto) GetToolCategory() string { - if x != nil { - return x.ToolCategory - } - return "" -} - -func (x *ApprovalRuleProto) GetRequireCiPassing() bool { - if x != nil { - return x.RequireCiPassing - } - return false -} - -// AnalyticsSummaryProto aggregates classification decisions over a time window. -type AnalyticsSummaryProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - TotalDecisions int32 `protobuf:"varint,1,opt,name=total_decisions,json=totalDecisions,proto3" json:"total_decisions,omitempty"` - DecisionCounts map[string]int32 `protobuf:"bytes,2,rep,name=decision_counts,json=decisionCounts,proto3" json:"decision_counts,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - TopTools []*ToolStatProto `protobuf:"bytes,3,rep,name=top_tools,json=topTools,proto3" json:"top_tools,omitempty"` - TopDeniedCommands []*CommandStatProto `protobuf:"bytes,4,rep,name=top_denied_commands,json=topDeniedCommands,proto3" json:"top_denied_commands,omitempty"` - TopTriggeredRules []*RuleStatProto `protobuf:"bytes,5,rep,name=top_triggered_rules,json=topTriggeredRules,proto3" json:"top_triggered_rules,omitempty"` - AutoApproveRate float64 `protobuf:"fixed64,6,opt,name=auto_approve_rate,json=autoApproveRate,proto3" json:"auto_approve_rate,omitempty"` - ManualReviewRate float64 `protobuf:"fixed64,7,opt,name=manual_review_rate,json=manualReviewRate,proto3" json:"manual_review_rate,omitempty"` - WindowStart *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=window_start,json=windowStart,proto3" json:"window_start,omitempty"` - WindowEnd *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=window_end,json=windowEnd,proto3" json:"window_end,omitempty"` - // Top programs invoked via the Bash tool (AST-derived categorization). - TopCommandPrograms []*ProgramStatProto `protobuf:"bytes,10,rep,name=top_command_programs,json=topCommandPrograms,proto3" json:"top_command_programs,omitempty"` - // Top Python modules imported in inline (-c) Python invocations. - TopPythonImports []*ImportStatProto `protobuf:"bytes,11,rep,name=top_python_imports,json=topPythonImports,proto3" json:"top_python_imports,omitempty"` - // Coverage gap: decisions that escaped all rules (escalated with no rule match). - // These are prime candidates for new rules to reduce manual review. - CoverageGapCount int32 `protobuf:"varint,12,opt,name=coverage_gap_count,json=coverageGapCount,proto3" json:"coverage_gap_count,omitempty"` - // coverage_gap_rate is the percentage (0–100) of decisions with no matching rule. - CoverageGapRate float64 `protobuf:"fixed64,13,opt,name=coverage_gap_rate,json=coverageGapRate,proto3" json:"coverage_gap_rate,omitempty"` - // Top tools that most frequently escape rule coverage. - TopUncoveredTools []*ToolStatProto `protobuf:"bytes,14,rep,name=top_uncovered_tools,json=topUncoveredTools,proto3" json:"top_uncovered_tools,omitempty"` - // Top Bash programs that most frequently escape rule coverage. - TopUncoveredPrograms []*ProgramStatProto `protobuf:"bytes,15,rep,name=top_uncovered_programs,json=topUncoveredPrograms,proto3" json:"top_uncovered_programs,omitempty"` - // Full (program, subcommand) distribution for drill-down analysis. - // Not truncated to top-N — use to investigate specific programs like "gh" or "sed". - CommandSubcommandStats []*SubcommandStatProto `protobuf:"bytes,16,rep,name=command_subcommand_stats,json=commandSubcommandStats,proto3" json:"command_subcommand_stats,omitempty"` - // Escalation-reason breakdown: counts per category ("no-match", "explicit-rule", - // "domain-age", "secret-scan", "unclassifiable") — see classifier.EscalationCategory. - EscalationReasonCounts map[string]int32 `protobuf:"bytes,17,rep,name=escalation_reason_counts,json=escalationReasonCounts,proto3" json:"escalation_reason_counts,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - // Risk-level breakdown: counts per classifier.RiskLevel string ("low"/"medium"/"high"/ - // "critical"), scoped to escalated decisions only (matching escalation_reason_counts' - // scope) so both tables share the same denominator. - RiskLevelCounts map[string]int32 `protobuf:"bytes,18,rep,name=risk_level_counts,json=riskLevelCounts,proto3" json:"risk_level_counts,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AnalyticsSummaryProto) Reset() { - *x = AnalyticsSummaryProto{} - mi := &file_session_v1_types_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AnalyticsSummaryProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AnalyticsSummaryProto) ProtoMessage() {} - -func (x *AnalyticsSummaryProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[24] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AnalyticsSummaryProto.ProtoReflect.Descriptor instead. -func (*AnalyticsSummaryProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{24} -} - -func (x *AnalyticsSummaryProto) GetTotalDecisions() int32 { - if x != nil { - return x.TotalDecisions - } - return 0 -} - -func (x *AnalyticsSummaryProto) GetDecisionCounts() map[string]int32 { - if x != nil { - return x.DecisionCounts - } - return nil -} - -func (x *AnalyticsSummaryProto) GetTopTools() []*ToolStatProto { - if x != nil { - return x.TopTools - } - return nil -} - -func (x *AnalyticsSummaryProto) GetTopDeniedCommands() []*CommandStatProto { - if x != nil { - return x.TopDeniedCommands - } - return nil -} - -func (x *AnalyticsSummaryProto) GetTopTriggeredRules() []*RuleStatProto { - if x != nil { - return x.TopTriggeredRules - } - return nil -} - -func (x *AnalyticsSummaryProto) GetAutoApproveRate() float64 { - if x != nil { - return x.AutoApproveRate - } - return 0 -} - -func (x *AnalyticsSummaryProto) GetManualReviewRate() float64 { - if x != nil { - return x.ManualReviewRate - } - return 0 -} - -func (x *AnalyticsSummaryProto) GetWindowStart() *timestamppb.Timestamp { - if x != nil { - return x.WindowStart - } - return nil -} - -func (x *AnalyticsSummaryProto) GetWindowEnd() *timestamppb.Timestamp { - if x != nil { - return x.WindowEnd - } - return nil -} - -func (x *AnalyticsSummaryProto) GetTopCommandPrograms() []*ProgramStatProto { - if x != nil { - return x.TopCommandPrograms - } - return nil -} - -func (x *AnalyticsSummaryProto) GetTopPythonImports() []*ImportStatProto { - if x != nil { - return x.TopPythonImports - } - return nil -} - -func (x *AnalyticsSummaryProto) GetCoverageGapCount() int32 { - if x != nil { - return x.CoverageGapCount - } - return 0 -} - -func (x *AnalyticsSummaryProto) GetCoverageGapRate() float64 { - if x != nil { - return x.CoverageGapRate - } - return 0 -} - -func (x *AnalyticsSummaryProto) GetTopUncoveredTools() []*ToolStatProto { - if x != nil { - return x.TopUncoveredTools - } - return nil -} - -func (x *AnalyticsSummaryProto) GetTopUncoveredPrograms() []*ProgramStatProto { - if x != nil { - return x.TopUncoveredPrograms - } - return nil -} - -func (x *AnalyticsSummaryProto) GetCommandSubcommandStats() []*SubcommandStatProto { - if x != nil { - return x.CommandSubcommandStats - } - return nil -} - -func (x *AnalyticsSummaryProto) GetEscalationReasonCounts() map[string]int32 { - if x != nil { - return x.EscalationReasonCounts - } - return nil -} - -func (x *AnalyticsSummaryProto) GetRiskLevelCounts() map[string]int32 { - if x != nil { - return x.RiskLevelCounts - } - return nil -} - -type ToolStatProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - ToolName string `protobuf:"bytes,1,opt,name=tool_name,json=toolName,proto3" json:"tool_name,omitempty"` - Count int32 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` - // manual_allow / manual_deny break down how past manual reviews resolved for this tool. - ManualAllow int32 `protobuf:"varint,3,opt,name=manual_allow,json=manualAllow,proto3" json:"manual_allow,omitempty"` - ManualDeny int32 `protobuf:"varint,4,opt,name=manual_deny,json=manualDeny,proto3" json:"manual_deny,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ToolStatProto) Reset() { - *x = ToolStatProto{} - mi := &file_session_v1_types_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ToolStatProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ToolStatProto) ProtoMessage() {} - -func (x *ToolStatProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[25] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ToolStatProto.ProtoReflect.Descriptor instead. -func (*ToolStatProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{25} -} - -func (x *ToolStatProto) GetToolName() string { - if x != nil { - return x.ToolName - } - return "" -} - -func (x *ToolStatProto) GetCount() int32 { - if x != nil { - return x.Count - } - return 0 -} - -func (x *ToolStatProto) GetManualAllow() int32 { - if x != nil { - return x.ManualAllow - } - return 0 -} - -func (x *ToolStatProto) GetManualDeny() int32 { - if x != nil { - return x.ManualDeny - } - return 0 -} - -type CommandStatProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - Preview string `protobuf:"bytes,1,opt,name=preview,proto3" json:"preview,omitempty"` - ToolName string `protobuf:"bytes,2,opt,name=tool_name,json=toolName,proto3" json:"tool_name,omitempty"` - Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CommandStatProto) Reset() { - *x = CommandStatProto{} - mi := &file_session_v1_types_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CommandStatProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CommandStatProto) ProtoMessage() {} - -func (x *CommandStatProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[26] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CommandStatProto.ProtoReflect.Descriptor instead. -func (*CommandStatProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{26} -} - -func (x *CommandStatProto) GetPreview() string { - if x != nil { - return x.Preview - } - return "" -} - -func (x *CommandStatProto) GetToolName() string { - if x != nil { - return x.ToolName - } - return "" -} - -func (x *CommandStatProto) GetCount() int32 { - if x != nil { - return x.Count - } - return 0 -} - -type RuleStatProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - RuleId string `protobuf:"bytes,1,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"` - RuleName string `protobuf:"bytes,2,opt,name=rule_name,json=ruleName,proto3" json:"rule_name,omitempty"` - Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RuleStatProto) Reset() { - *x = RuleStatProto{} - mi := &file_session_v1_types_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RuleStatProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RuleStatProto) ProtoMessage() {} - -func (x *RuleStatProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[27] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RuleStatProto.ProtoReflect.Descriptor instead. -func (*RuleStatProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{27} -} - -func (x *RuleStatProto) GetRuleId() string { - if x != nil { - return x.RuleId - } - return "" -} - -func (x *RuleStatProto) GetRuleName() string { - if x != nil { - return x.RuleName - } - return "" -} - -func (x *RuleStatProto) GetCount() int32 { - if x != nil { - return x.Count - } - return 0 -} - -// ProgramStatProto represents a program invoked via the Bash tool with its usage count. -type ProgramStatProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - // program_name is the executable name (e.g., "git", "npm", "python3"). - ProgramName string `protobuf:"bytes,1,opt,name=program_name,json=programName,proto3" json:"program_name,omitempty"` - // category groups the program (e.g., "vcs", "node", "python"). - Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"` - Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` - // manual_allow / manual_deny break down how past manual reviews resolved for this program. - ManualAllow int32 `protobuf:"varint,4,opt,name=manual_allow,json=manualAllow,proto3" json:"manual_allow,omitempty"` - ManualDeny int32 `protobuf:"varint,5,opt,name=manual_deny,json=manualDeny,proto3" json:"manual_deny,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ProgramStatProto) Reset() { - *x = ProgramStatProto{} - mi := &file_session_v1_types_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ProgramStatProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProgramStatProto) ProtoMessage() {} - -func (x *ProgramStatProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[28] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ProgramStatProto.ProtoReflect.Descriptor instead. -func (*ProgramStatProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{28} -} - -func (x *ProgramStatProto) GetProgramName() string { - if x != nil { - return x.ProgramName - } - return "" -} - -func (x *ProgramStatProto) GetCategory() string { - if x != nil { - return x.Category - } - return "" -} - -func (x *ProgramStatProto) GetCount() int32 { - if x != nil { - return x.Count - } - return 0 -} - -func (x *ProgramStatProto) GetManualAllow() int32 { - if x != nil { - return x.ManualAllow - } - return 0 -} - -func (x *ProgramStatProto) GetManualDeny() int32 { - if x != nil { - return x.ManualDeny - } - return 0 -} - -// ImportStatProto represents a Python module imported in an inline invocation. -type ImportStatProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - // module is the top-level package name (e.g., "os", "requests", "numpy"). - Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` - Count int32 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ImportStatProto) Reset() { - *x = ImportStatProto{} - mi := &file_session_v1_types_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ImportStatProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ImportStatProto) ProtoMessage() {} - -func (x *ImportStatProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[29] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ImportStatProto.ProtoReflect.Descriptor instead. -func (*ImportStatProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{29} -} - -func (x *ImportStatProto) GetModule() string { - if x != nil { - return x.Module - } - return "" -} - -func (x *ImportStatProto) GetCount() int32 { - if x != nil { - return x.Count - } - return 0 -} - -// SubcommandStatProto represents a (program, subcommand) pair with its usage count. -// subcommand may contain a space for two-level CLIs (e.g., "pr create" for gh). -type SubcommandStatProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - ProgramName string `protobuf:"bytes,1,opt,name=program_name,json=programName,proto3" json:"program_name,omitempty"` - Subcommand string `protobuf:"bytes,2,opt,name=subcommand,proto3" json:"subcommand,omitempty"` - Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category,omitempty"` - Count int32 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"` - // manual_allow / manual_deny break down how past manual reviews resolved for this pair. - ManualAllow int32 `protobuf:"varint,5,opt,name=manual_allow,json=manualAllow,proto3" json:"manual_allow,omitempty"` - ManualDeny int32 `protobuf:"varint,6,opt,name=manual_deny,json=manualDeny,proto3" json:"manual_deny,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SubcommandStatProto) Reset() { - *x = SubcommandStatProto{} - mi := &file_session_v1_types_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SubcommandStatProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubcommandStatProto) ProtoMessage() {} - -func (x *SubcommandStatProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[30] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubcommandStatProto.ProtoReflect.Descriptor instead. -func (*SubcommandStatProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{30} -} - -func (x *SubcommandStatProto) GetProgramName() string { - if x != nil { - return x.ProgramName - } - return "" -} - -func (x *SubcommandStatProto) GetSubcommand() string { - if x != nil { - return x.Subcommand - } - return "" -} - -func (x *SubcommandStatProto) GetCategory() string { - if x != nil { - return x.Category - } - return "" -} - -func (x *SubcommandStatProto) GetCount() int32 { - if x != nil { - return x.Count - } - return 0 -} - -func (x *SubcommandStatProto) GetManualAllow() int32 { - if x != nil { - return x.ManualAllow - } - return 0 -} - -func (x *SubcommandStatProto) GetManualDeny() int32 { - if x != nil { - return x.ManualDeny - } - return 0 -} - -// DailyBucketProto aggregates classification decisions for a single calendar day. -type DailyBucketProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Calendar date in "YYYY-MM-DD" format (local time). - Date string `protobuf:"bytes,1,opt,name=date,proto3" json:"date,omitempty"` - AutoAllow int32 `protobuf:"varint,2,opt,name=auto_allow,json=autoAllow,proto3" json:"auto_allow,omitempty"` - AutoDeny int32 `protobuf:"varint,3,opt,name=auto_deny,json=autoDeny,proto3" json:"auto_deny,omitempty"` - Escalate int32 `protobuf:"varint,4,opt,name=escalate,proto3" json:"escalate,omitempty"` - ManualAllow int32 `protobuf:"varint,5,opt,name=manual_allow,json=manualAllow,proto3" json:"manual_allow,omitempty"` - ManualDeny int32 `protobuf:"varint,6,opt,name=manual_deny,json=manualDeny,proto3" json:"manual_deny,omitempty"` - Total int32 `protobuf:"varint,7,opt,name=total,proto3" json:"total,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DailyBucketProto) Reset() { - *x = DailyBucketProto{} - mi := &file_session_v1_types_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DailyBucketProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DailyBucketProto) ProtoMessage() {} - -func (x *DailyBucketProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[31] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DailyBucketProto.ProtoReflect.Descriptor instead. -func (*DailyBucketProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{31} -} - -func (x *DailyBucketProto) GetDate() string { - if x != nil { - return x.Date - } - return "" -} - -func (x *DailyBucketProto) GetAutoAllow() int32 { - if x != nil { - return x.AutoAllow - } - return 0 -} - -func (x *DailyBucketProto) GetAutoDeny() int32 { - if x != nil { - return x.AutoDeny - } - return 0 -} - -func (x *DailyBucketProto) GetEscalate() int32 { - if x != nil { - return x.Escalate - } - return 0 -} - -func (x *DailyBucketProto) GetManualAllow() int32 { - if x != nil { - return x.ManualAllow - } - return 0 -} - -func (x *DailyBucketProto) GetManualDeny() int32 { - if x != nil { - return x.ManualDeny - } - return 0 -} - -func (x *DailyBucketProto) GetTotal() int32 { - if x != nil { - return x.Total - } - return 0 -} - -// SubcommandBreakdownProto is a per-subcommand decision breakdown for the drill-down panel. -type SubcommandBreakdownProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - // subcommand is the first positional argument (e.g., "commit", "push"). - // Empty string means no subcommand was detected. - Subcommand string `protobuf:"bytes,1,opt,name=subcommand,proto3" json:"subcommand,omitempty"` - // total is the total call count for this subcommand in the window. - Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` - // Per-decision counts. - AutoAllow int32 `protobuf:"varint,3,opt,name=auto_allow,json=autoAllow,proto3" json:"auto_allow,omitempty"` - AutoDeny int32 `protobuf:"varint,4,opt,name=auto_deny,json=autoDeny,proto3" json:"auto_deny,omitempty"` - Escalate int32 `protobuf:"varint,5,opt,name=escalate,proto3" json:"escalate,omitempty"` - ManualAllow int32 `protobuf:"varint,6,opt,name=manual_allow,json=manualAllow,proto3" json:"manual_allow,omitempty"` - ManualDeny int32 `protobuf:"varint,7,opt,name=manual_deny,json=manualDeny,proto3" json:"manual_deny,omitempty"` - // has_rule_coverage is true if any existing rule covers this (program, subcommand) pair. - HasRuleCoverage bool `protobuf:"varint,8,opt,name=has_rule_coverage,json=hasRuleCoverage,proto3" json:"has_rule_coverage,omitempty"` - // suggested_rule_hint is an optional pre-fill pattern hint for the rule form. - // Format: the subcommand string itself (e.g., "push") — the UI appends context. - SuggestedRuleHint string `protobuf:"bytes,9,opt,name=suggested_rule_hint,json=suggestedRuleHint,proto3" json:"suggested_rule_hint,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SubcommandBreakdownProto) Reset() { - *x = SubcommandBreakdownProto{} - mi := &file_session_v1_types_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SubcommandBreakdownProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubcommandBreakdownProto) ProtoMessage() {} - -func (x *SubcommandBreakdownProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[32] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubcommandBreakdownProto.ProtoReflect.Descriptor instead. -func (*SubcommandBreakdownProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{32} -} - -func (x *SubcommandBreakdownProto) GetSubcommand() string { - if x != nil { - return x.Subcommand - } - return "" -} - -func (x *SubcommandBreakdownProto) GetTotal() int32 { - if x != nil { - return x.Total - } - return 0 -} - -func (x *SubcommandBreakdownProto) GetAutoAllow() int32 { - if x != nil { - return x.AutoAllow - } - return 0 -} - -func (x *SubcommandBreakdownProto) GetAutoDeny() int32 { - if x != nil { - return x.AutoDeny - } - return 0 -} - -func (x *SubcommandBreakdownProto) GetEscalate() int32 { - if x != nil { - return x.Escalate - } - return 0 -} - -func (x *SubcommandBreakdownProto) GetManualAllow() int32 { - if x != nil { - return x.ManualAllow - } - return 0 -} - -func (x *SubcommandBreakdownProto) GetManualDeny() int32 { - if x != nil { - return x.ManualDeny - } - return 0 -} - -func (x *SubcommandBreakdownProto) GetHasRuleCoverage() bool { - if x != nil { - return x.HasRuleCoverage - } - return false -} - -func (x *SubcommandBreakdownProto) GetSuggestedRuleHint() string { - if x != nil { - return x.SuggestedRuleHint - } - return "" -} - -// DatabaseInfo contains display information about a workspace database. -// Used by the workspace switcher UI in the header. -type DatabaseInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Short directory name (hash for workspace-based, instance name for named instances). - WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` - // Type of workspace: "workspace", "instance", or "shared". - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - // Working directory where the server was started (empty for shared/instance). - Cwd string `protobuf:"bytes,3,opt,name=cwd,proto3" json:"cwd,omitempty"` - // Human-readable name: last path component of cwd, or "Default" for shared. - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - // Absolute path to this workspace's config/data directory. - ConfigDir string `protobuf:"bytes,5,opt,name=config_dir,json=configDir,proto3" json:"config_dir,omitempty"` - // Number of sessions stored in this workspace's database. - SessionCount int32 `protobuf:"varint,6,opt,name=session_count,json=sessionCount,proto3" json:"session_count,omitempty"` - // Whether this is the currently active workspace. - IsCurrent bool `protobuf:"varint,7,opt,name=is_current,json=isCurrent,proto3" json:"is_current,omitempty"` - // When this workspace was last used (last server startup in this workspace). - LastUsed *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_used,json=lastUsed,proto3" json:"last_used,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DatabaseInfo) Reset() { - *x = DatabaseInfo{} - mi := &file_session_v1_types_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DatabaseInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DatabaseInfo) ProtoMessage() {} - -func (x *DatabaseInfo) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[33] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DatabaseInfo.ProtoReflect.Descriptor instead. -func (*DatabaseInfo) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{33} -} - -func (x *DatabaseInfo) GetWorkspaceId() string { - if x != nil { - return x.WorkspaceId - } - return "" -} - -func (x *DatabaseInfo) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *DatabaseInfo) GetCwd() string { - if x != nil { - return x.Cwd - } - return "" -} - -func (x *DatabaseInfo) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *DatabaseInfo) GetConfigDir() string { - if x != nil { - return x.ConfigDir - } - return "" -} - -func (x *DatabaseInfo) GetSessionCount() int32 { - if x != nil { - return x.SessionCount - } - return 0 -} - -func (x *DatabaseInfo) GetIsCurrent() bool { - if x != nil { - return x.IsCurrent - } - return false -} - -func (x *DatabaseInfo) GetLastUsed() *timestamppb.Timestamp { - if x != nil { - return x.LastUsed - } - return nil -} - -// FileNode represents a single entry (file or directory) in a session's worktree. -type FileNode struct { - state protoimpl.MessageState `protogen:"open.v1"` - // File or directory name (basename only). - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Path relative to the session worktree root. - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - // True if this entry is a directory. - IsDir bool `protobuf:"varint,3,opt,name=is_dir,json=isDir,proto3" json:"is_dir,omitempty"` - // File size in bytes (0 for directories). - Size int64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` - // Git status letter (M/A/D/R/?). Populated client-side; server always returns empty. - GitStatus string `protobuf:"bytes,5,opt,name=git_status,json=gitStatus,proto3" json:"git_status,omitempty"` - // True if this entry is a symbolic link. - IsSymlink bool `protobuf:"varint,6,opt,name=is_symlink,json=isSymlink,proto3" json:"is_symlink,omitempty"` - // Symlink target path (only set when is_symlink=true). - SymlinkTarget string `protobuf:"bytes,7,opt,name=symlink_target,json=symlinkTarget,proto3" json:"symlink_target,omitempty"` - // True if this entry is matched by .gitignore rules. - IsIgnored bool `protobuf:"varint,8,opt,name=is_ignored,json=isIgnored,proto3" json:"is_ignored,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FileNode) Reset() { - *x = FileNode{} - mi := &file_session_v1_types_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FileNode) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FileNode) ProtoMessage() {} - -func (x *FileNode) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[34] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FileNode.ProtoReflect.Descriptor instead. -func (*FileNode) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{34} -} - -func (x *FileNode) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *FileNode) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *FileNode) GetIsDir() bool { - if x != nil { - return x.IsDir - } - return false -} - -func (x *FileNode) GetSize() int64 { - if x != nil { - return x.Size - } - return 0 -} - -func (x *FileNode) GetGitStatus() string { - if x != nil { - return x.GitStatus - } - return "" -} - -func (x *FileNode) GetIsSymlink() bool { - if x != nil { - return x.IsSymlink - } - return false -} - -func (x *FileNode) GetSymlinkTarget() string { - if x != nil { - return x.SymlinkTarget - } - return "" -} - -func (x *FileNode) GetIsIgnored() bool { - if x != nil { - return x.IsIgnored - } - return false -} - -// CheckpointProto represents a named bookmark of a session's state at a point in time. -// Maps to session.Checkpoint in Go. -type CheckpointProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Unique checkpoint identifier (UUID). - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Session ID this checkpoint belongs to. - SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - // Parent checkpoint ID (for tree navigation), empty for root checkpoints. - ParentId string `protobuf:"bytes,3,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` - // Human-readable label. - Label string `protobuf:"bytes,4,opt,name=label,proto3" json:"label,omitempty"` - // Scrollback sequence number at checkpoint time. - ScrollbackSeq uint64 `protobuf:"varint,5,opt,name=scrollback_seq,json=scrollbackSeq,proto3" json:"scrollback_seq,omitempty"` - // Path to persisted scrollback snapshot (may be empty). - ScrollbackPath string `protobuf:"bytes,6,opt,name=scrollback_path,json=scrollbackPath,proto3" json:"scrollback_path,omitempty"` - // Claude Code conversation UUID at checkpoint time. - ClaudeConvUuid string `protobuf:"bytes,7,opt,name=claude_conv_uuid,json=claudeConvUuid,proto3" json:"claude_conv_uuid,omitempty"` - // Git HEAD commit SHA at checkpoint time. - GitCommitSha string `protobuf:"bytes,8,opt,name=git_commit_sha,json=gitCommitSha,proto3" json:"git_commit_sha,omitempty"` - // When the checkpoint was created. - Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CheckpointProto) Reset() { - *x = CheckpointProto{} - mi := &file_session_v1_types_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CheckpointProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CheckpointProto) ProtoMessage() {} - -func (x *CheckpointProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[35] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CheckpointProto.ProtoReflect.Descriptor instead. -func (*CheckpointProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{35} -} - -func (x *CheckpointProto) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *CheckpointProto) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *CheckpointProto) GetParentId() string { - if x != nil { - return x.ParentId - } - return "" -} - -func (x *CheckpointProto) GetLabel() string { - if x != nil { - return x.Label - } - return "" -} - -func (x *CheckpointProto) GetScrollbackSeq() uint64 { - if x != nil { - return x.ScrollbackSeq - } - return 0 -} - -func (x *CheckpointProto) GetScrollbackPath() string { - if x != nil { - return x.ScrollbackPath - } - return "" -} - -func (x *CheckpointProto) GetClaudeConvUuid() string { - if x != nil { - return x.ClaudeConvUuid - } - return "" -} - -func (x *CheckpointProto) GetGitCommitSha() string { - if x != nil { - return x.GitCommitSha - } - return "" -} - -func (x *CheckpointProto) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - -// UnfinishedWorktree represents a single git worktree that has unfinished work. -type UnfinishedWorktree struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Composite key fields - RepoPath string `protobuf:"bytes,1,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` // Absolute path to the repo root - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` // Branch name (e.g., "feature-auth") - WorktreePath string `protobuf:"bytes,3,opt,name=worktree_path,json=worktreePath,proto3" json:"worktree_path,omitempty"` // Absolute path to the worktree directory - // Display fields - RepoName string `protobuf:"bytes,4,opt,name=repo_name,json=repoName,proto3" json:"repo_name,omitempty"` // Derived from remote URL basename or dir basename - DisplayPath string `protobuf:"bytes,5,opt,name=display_path,json=displayPath,proto3" json:"display_path,omitempty"` // Worktree path with ~ substitution - // Status flags - HasUncommitted bool `protobuf:"varint,6,opt,name=has_uncommitted,json=hasUncommitted,proto3" json:"has_uncommitted,omitempty"` // git status --porcelain non-empty - CommitsAhead int32 `protobuf:"varint,7,opt,name=commits_ahead,json=commitsAhead,proto3" json:"commits_ahead,omitempty"` // commits in HEAD not in default branch - CommitsBehind int32 `protobuf:"varint,8,opt,name=commits_behind,json=commitsBehind,proto3" json:"commits_behind,omitempty"` // commits in default branch not in HEAD - DefaultBranch string `protobuf:"bytes,9,opt,name=default_branch,json=defaultBranch,proto3" json:"default_branch,omitempty"` // resolved default branch (main/master/etc.) - // Expanded detail fields - ChangedFiles int32 `protobuf:"varint,10,opt,name=changed_files,json=changedFiles,proto3" json:"changed_files,omitempty"` - LinesAdded int32 `protobuf:"varint,11,opt,name=lines_added,json=linesAdded,proto3" json:"lines_added,omitempty"` - LinesRemoved int32 `protobuf:"varint,12,opt,name=lines_removed,json=linesRemoved,proto3" json:"lines_removed,omitempty"` - AheadCommitMessages []string `protobuf:"bytes,13,rep,name=ahead_commit_messages,json=aheadCommitMessages,proto3" json:"ahead_commit_messages,omitempty"` // Up to 5 short messages - // Timestamps - LastModified *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` // mtime of worktree dir - ScanTime *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=scan_time,json=scanTime,proto3" json:"scan_time,omitempty"` // when this result was computed - // Scan status - ScanStatus ScanStatus `protobuf:"varint,16,opt,name=scan_status,json=scanStatus,proto3,enum=session.v1.ScanStatus" json:"scan_status,omitempty"` - ScanErrorMsg string `protobuf:"bytes,17,opt,name=scan_error_msg,json=scanErrorMsg,proto3" json:"scan_error_msg,omitempty"` // human-readable error, empty on success - // Action state - IsDismissed bool `protobuf:"varint,18,opt,name=is_dismissed,json=isDismissed,proto3" json:"is_dismissed,omitempty"` - IsSnoozed bool `protobuf:"varint,19,opt,name=is_snoozed,json=isSnoozed,proto3" json:"is_snoozed,omitempty"` - SessionIds []string `protobuf:"bytes,20,rep,name=session_ids,json=sessionIds,proto3" json:"session_ids,omitempty"` // UUIDs of active sessions covering this worktree path - // GitHub PR enrichment (populated from session PR state when sessions cover this worktree). - GithubPrNumber int32 `protobuf:"varint,21,opt,name=github_pr_number,json=githubPrNumber,proto3" json:"github_pr_number,omitempty"` // 0 when no PR found - GithubPrUrl string `protobuf:"bytes,22,opt,name=github_pr_url,json=githubPrUrl,proto3" json:"github_pr_url,omitempty"` - GithubPrState string `protobuf:"bytes,23,opt,name=github_pr_state,json=githubPrState,proto3" json:"github_pr_state,omitempty"` // "open" / "closed" / "merged" / "" - GithubPrPriority string `protobuf:"bytes,24,opt,name=github_pr_priority,json=githubPrPriority,proto3" json:"github_pr_priority,omitempty"` // from PRStatusPoller (no_pr / needs_review / approved / etc.) - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UnfinishedWorktree) Reset() { - *x = UnfinishedWorktree{} - mi := &file_session_v1_types_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UnfinishedWorktree) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UnfinishedWorktree) ProtoMessage() {} - -func (x *UnfinishedWorktree) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[36] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UnfinishedWorktree.ProtoReflect.Descriptor instead. -func (*UnfinishedWorktree) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{36} -} - -func (x *UnfinishedWorktree) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *UnfinishedWorktree) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -func (x *UnfinishedWorktree) GetWorktreePath() string { - if x != nil { - return x.WorktreePath - } - return "" -} - -func (x *UnfinishedWorktree) GetRepoName() string { - if x != nil { - return x.RepoName - } - return "" -} - -func (x *UnfinishedWorktree) GetDisplayPath() string { - if x != nil { - return x.DisplayPath - } - return "" -} - -func (x *UnfinishedWorktree) GetHasUncommitted() bool { - if x != nil { - return x.HasUncommitted - } - return false -} - -func (x *UnfinishedWorktree) GetCommitsAhead() int32 { - if x != nil { - return x.CommitsAhead - } - return 0 -} - -func (x *UnfinishedWorktree) GetCommitsBehind() int32 { - if x != nil { - return x.CommitsBehind - } - return 0 -} - -func (x *UnfinishedWorktree) GetDefaultBranch() string { - if x != nil { - return x.DefaultBranch - } - return "" -} - -func (x *UnfinishedWorktree) GetChangedFiles() int32 { - if x != nil { - return x.ChangedFiles - } - return 0 -} - -func (x *UnfinishedWorktree) GetLinesAdded() int32 { - if x != nil { - return x.LinesAdded - } - return 0 -} - -func (x *UnfinishedWorktree) GetLinesRemoved() int32 { - if x != nil { - return x.LinesRemoved - } - return 0 -} - -func (x *UnfinishedWorktree) GetAheadCommitMessages() []string { - if x != nil { - return x.AheadCommitMessages - } - return nil -} - -func (x *UnfinishedWorktree) GetLastModified() *timestamppb.Timestamp { - if x != nil { - return x.LastModified - } - return nil -} - -func (x *UnfinishedWorktree) GetScanTime() *timestamppb.Timestamp { - if x != nil { - return x.ScanTime - } - return nil -} - -func (x *UnfinishedWorktree) GetScanStatus() ScanStatus { - if x != nil { - return x.ScanStatus - } - return ScanStatus_SCAN_STATUS_UNSPECIFIED -} - -func (x *UnfinishedWorktree) GetScanErrorMsg() string { - if x != nil { - return x.ScanErrorMsg - } - return "" -} - -func (x *UnfinishedWorktree) GetIsDismissed() bool { - if x != nil { - return x.IsDismissed - } - return false -} - -func (x *UnfinishedWorktree) GetIsSnoozed() bool { - if x != nil { - return x.IsSnoozed - } - return false -} - -func (x *UnfinishedWorktree) GetSessionIds() []string { - if x != nil { - return x.SessionIds - } - return nil -} - -func (x *UnfinishedWorktree) GetGithubPrNumber() int32 { - if x != nil { - return x.GithubPrNumber - } - return 0 -} - -func (x *UnfinishedWorktree) GetGithubPrUrl() string { - if x != nil { - return x.GithubPrUrl - } - return "" -} - -func (x *UnfinishedWorktree) GetGithubPrState() string { - if x != nil { - return x.GithubPrState - } - return "" -} - -func (x *UnfinishedWorktree) GetGithubPrPriority() string { - if x != nil { - return x.GithubPrPriority - } - return "" -} - -// UnfinishedWorkConfig holds user-configurable source settings. -type UnfinishedWorkConfig struct { - state protoimpl.MessageState `protogen:"open.v1"` - AutoSpiderSessions bool `protobuf:"varint,1,opt,name=auto_spider_sessions,json=autoSpiderSessions,proto3" json:"auto_spider_sessions,omitempty"` // default: true - WatchDirs []string `protobuf:"bytes,2,rep,name=watch_dirs,json=watchDirs,proto3" json:"watch_dirs,omitempty"` - PinnedRepos []string `protobuf:"bytes,3,rep,name=pinned_repos,json=pinnedRepos,proto3" json:"pinned_repos,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UnfinishedWorkConfig) Reset() { - *x = UnfinishedWorkConfig{} - mi := &file_session_v1_types_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UnfinishedWorkConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UnfinishedWorkConfig) ProtoMessage() {} - -func (x *UnfinishedWorkConfig) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[37] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UnfinishedWorkConfig.ProtoReflect.Descriptor instead. -func (*UnfinishedWorkConfig) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{37} -} - -func (x *UnfinishedWorkConfig) GetAutoSpiderSessions() bool { - if x != nil { - return x.AutoSpiderSessions - } - return false -} - -func (x *UnfinishedWorkConfig) GetWatchDirs() []string { - if x != nil { - return x.WatchDirs - } - return nil -} - -func (x *UnfinishedWorkConfig) GetPinnedRepos() []string { - if x != nil { - return x.PinnedRepos - } - return nil -} - -// Shell represents a custom shell session attached to a parent session. -// Each shell runs as an independent sibling tmux session. -type Shell struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Unique identifier (UUID). - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Human-readable name (defaults to basename of command). - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // Command that was launched (e.g., "/bin/bash", "python3"). - Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` - // Working directory for the shell process. - WorkingDir string `protobuf:"bytes,4,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` - // Current lifecycle status. - Status ShellStatus `protobuf:"varint,5,opt,name=status,proto3,enum=session.v1.ShellStatus" json:"status,omitempty"` - // Exit code of the process (only meaningful when status is STOPPED or ERROR). - ExitCode int32 `protobuf:"varint,6,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` - // Display order index (0-based). - OrderIndex int32 `protobuf:"varint,7,opt,name=order_index,json=orderIndex,proto3" json:"order_index,omitempty"` - // When the shell was started. - StartedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` - // When the shell stopped (only set when status is STOPPED or ERROR). - StoppedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=stopped_at,json=stoppedAt,proto3" json:"stopped_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *Shell) Reset() { - *x = Shell{} - mi := &file_session_v1_types_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Shell) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Shell) ProtoMessage() {} - -func (x *Shell) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[38] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Shell.ProtoReflect.Descriptor instead. -func (*Shell) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{38} -} - -func (x *Shell) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Shell) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Shell) GetCommand() string { - if x != nil { - return x.Command - } - return "" -} - -func (x *Shell) GetWorkingDir() string { - if x != nil { - return x.WorkingDir - } - return "" -} - -func (x *Shell) GetStatus() ShellStatus { - if x != nil { - return x.Status - } - return ShellStatus_SHELL_STATUS_UNSPECIFIED -} - -func (x *Shell) GetExitCode() int32 { - if x != nil { - return x.ExitCode - } - return 0 -} - -func (x *Shell) GetOrderIndex() int32 { - if x != nil { - return x.OrderIndex - } - return 0 -} - -func (x *Shell) GetStartedAt() *timestamppb.Timestamp { - if x != nil { - return x.StartedAt - } - return nil -} - -func (x *Shell) GetStoppedAt() *timestamppb.Timestamp { - if x != nil { - return x.StoppedAt - } - return nil -} - -// SuggestedRuleProto carries a pre-filled rule proposal plus AI metadata. -// It mirrors ApprovalRuleProto fields 1–11 (same field numbers) so the UI -// can reuse ApprovalRuleProto rendering helpers with a simple copy. -type SuggestedRuleProto struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - ToolName string `protobuf:"bytes,2,opt,name=tool_name,json=toolName,proto3" json:"tool_name,omitempty"` - ToolPattern string `protobuf:"bytes,3,opt,name=tool_pattern,json=toolPattern,proto3" json:"tool_pattern,omitempty"` - CommandPattern string `protobuf:"bytes,4,opt,name=command_pattern,json=commandPattern,proto3" json:"command_pattern,omitempty"` - FilePattern string `protobuf:"bytes,5,opt,name=file_pattern,json=filePattern,proto3" json:"file_pattern,omitempty"` - Decision AutoDecision `protobuf:"varint,6,opt,name=decision,proto3,enum=session.v1.AutoDecision" json:"decision,omitempty"` - RiskLevel string `protobuf:"bytes,7,opt,name=risk_level,json=riskLevel,proto3" json:"risk_level,omitempty"` - Reason string `protobuf:"bytes,8,opt,name=reason,proto3" json:"reason,omitempty"` - Alternative string `protobuf:"bytes,9,opt,name=alternative,proto3" json:"alternative,omitempty"` - Priority int32 `protobuf:"varint,10,opt,name=priority,proto3" json:"priority,omitempty"` - // AI metadata. - Confidence float32 `protobuf:"fixed32,11,opt,name=confidence,proto3" json:"confidence,omitempty"` // 0.0–1.0; agent's certainty in the pattern - Explanation string `protobuf:"bytes,12,opt,name=explanation,proto3" json:"explanation,omitempty"` // why these fields were chosen - SourceCommands []string `protobuf:"bytes,13,rep,name=source_commands,json=sourceCommands,proto3" json:"source_commands,omitempty"` // up to 20 commands that informed the pattern - // Conflict detection results (computed server-side, heuristic — may overlap). - ShadowedByRuleIds []string `protobuf:"bytes,14,rep,name=shadowed_by_rule_ids,json=shadowedByRuleIds,proto3" json:"shadowed_by_rule_ids,omitempty"` // IDs of higher-priority rules that may fire first - ShadowsRuleIds []string `protobuf:"bytes,15,rep,name=shadows_rule_ids,json=shadowsRuleIds,proto3" json:"shadows_rule_ids,omitempty"` // IDs of lower-priority rules this may suppress - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SuggestedRuleProto) Reset() { - *x = SuggestedRuleProto{} - mi := &file_session_v1_types_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SuggestedRuleProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SuggestedRuleProto) ProtoMessage() {} - -func (x *SuggestedRuleProto) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[39] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SuggestedRuleProto.ProtoReflect.Descriptor instead. -func (*SuggestedRuleProto) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{39} -} - -func (x *SuggestedRuleProto) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *SuggestedRuleProto) GetToolName() string { - if x != nil { - return x.ToolName - } - return "" -} - -func (x *SuggestedRuleProto) GetToolPattern() string { - if x != nil { - return x.ToolPattern - } - return "" -} - -func (x *SuggestedRuleProto) GetCommandPattern() string { - if x != nil { - return x.CommandPattern - } - return "" -} - -func (x *SuggestedRuleProto) GetFilePattern() string { - if x != nil { - return x.FilePattern - } - return "" -} - -func (x *SuggestedRuleProto) GetDecision() AutoDecision { - if x != nil { - return x.Decision - } - return AutoDecision_AUTO_DECISION_UNSPECIFIED -} - -func (x *SuggestedRuleProto) GetRiskLevel() string { - if x != nil { - return x.RiskLevel - } - return "" -} - -func (x *SuggestedRuleProto) GetReason() string { - if x != nil { - return x.Reason - } - return "" -} - -func (x *SuggestedRuleProto) GetAlternative() string { - if x != nil { - return x.Alternative - } - return "" -} - -func (x *SuggestedRuleProto) GetPriority() int32 { - if x != nil { - return x.Priority - } - return 0 -} - -func (x *SuggestedRuleProto) GetConfidence() float32 { - if x != nil { - return x.Confidence - } - return 0 -} - -func (x *SuggestedRuleProto) GetExplanation() string { - if x != nil { - return x.Explanation - } - return "" -} - -func (x *SuggestedRuleProto) GetSourceCommands() []string { - if x != nil { - return x.SourceCommands - } - return nil -} - -func (x *SuggestedRuleProto) GetShadowedByRuleIds() []string { - if x != nil { - return x.ShadowedByRuleIds - } - return nil -} - -func (x *SuggestedRuleProto) GetShadowsRuleIds() []string { - if x != nil { - return x.ShadowsRuleIds - } - return nil -} - -// UserPR represents an open (or recently closed) pull request authored by the -// authenticated GitHub user. Served by GitHubUserService. -type UserPR struct { - state protoimpl.MessageState `protogen:"open.v1"` - Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` - Repo string `protobuf:"bytes,2,opt,name=repo,proto3" json:"repo,omitempty"` - Number int32 `protobuf:"varint,3,opt,name=number,proto3" json:"number,omitempty"` - Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` - HtmlUrl string `protobuf:"bytes,5,opt,name=html_url,json=htmlUrl,proto3" json:"html_url,omitempty"` - State string `protobuf:"bytes,6,opt,name=state,proto3" json:"state,omitempty"` // "OPEN" / "CLOSED" / "MERGED" - HeadRef string `protobuf:"bytes,7,opt,name=head_ref,json=headRef,proto3" json:"head_ref,omitempty"` - BaseRef string `protobuf:"bytes,8,opt,name=base_ref,json=baseRef,proto3" json:"base_ref,omitempty"` - IsDraft bool `protobuf:"varint,9,opt,name=is_draft,json=isDraft,proto3" json:"is_draft,omitempty"` - CheckConclusion string `protobuf:"bytes,10,opt,name=check_conclusion,json=checkConclusion,proto3" json:"check_conclusion,omitempty"` // "success" / "failure" / "pending" / "" - ApprovedCount int32 `protobuf:"varint,11,opt,name=approved_count,json=approvedCount,proto3" json:"approved_count,omitempty"` - ChangesReqCount int32 `protobuf:"varint,12,opt,name=changes_req_count,json=changesReqCount,proto3" json:"changes_req_count,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - ClosedAt *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=closed_at,json=closedAt,proto3" json:"closed_at,omitempty"` - MergedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=merged_at,json=mergedAt,proto3" json:"merged_at,omitempty"` - SessionIds []string `protobuf:"bytes,16,rep,name=session_ids,json=sessionIds,proto3" json:"session_ids,omitempty"` // local sessions checked out on this branch - LocalWorktreePath string `protobuf:"bytes,17,opt,name=local_worktree_path,json=localWorktreePath,proto3" json:"local_worktree_path,omitempty"` // local worktree path, if any - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UserPR) Reset() { - *x = UserPR{} - mi := &file_session_v1_types_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UserPR) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserPR) ProtoMessage() {} - -func (x *UserPR) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_types_proto_msgTypes[40] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserPR.ProtoReflect.Descriptor instead. -func (*UserPR) Descriptor() ([]byte, []int) { - return file_session_v1_types_proto_rawDescGZIP(), []int{40} -} - -func (x *UserPR) GetOwner() string { - if x != nil { - return x.Owner - } - return "" -} - -func (x *UserPR) GetRepo() string { - if x != nil { - return x.Repo - } - return "" -} - -func (x *UserPR) GetNumber() int32 { - if x != nil { - return x.Number - } - return 0 -} - -func (x *UserPR) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *UserPR) GetHtmlUrl() string { - if x != nil { - return x.HtmlUrl - } - return "" -} - -func (x *UserPR) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *UserPR) GetHeadRef() string { - if x != nil { - return x.HeadRef - } - return "" -} - -func (x *UserPR) GetBaseRef() string { - if x != nil { - return x.BaseRef - } - return "" -} - -func (x *UserPR) GetIsDraft() bool { - if x != nil { - return x.IsDraft - } - return false -} - -func (x *UserPR) GetCheckConclusion() string { - if x != nil { - return x.CheckConclusion - } - return "" -} - -func (x *UserPR) GetApprovedCount() int32 { - if x != nil { - return x.ApprovedCount - } - return 0 -} - -func (x *UserPR) GetChangesReqCount() int32 { - if x != nil { - return x.ChangesReqCount - } - return 0 -} - -func (x *UserPR) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *UserPR) GetClosedAt() *timestamppb.Timestamp { - if x != nil { - return x.ClosedAt - } - return nil -} - -func (x *UserPR) GetMergedAt() *timestamppb.Timestamp { - if x != nil { - return x.MergedAt - } - return nil -} - -func (x *UserPR) GetSessionIds() []string { - if x != nil { - return x.SessionIds - } - return nil -} - -func (x *UserPR) GetLocalWorktreePath() string { - if x != nil { - return x.LocalWorktreePath - } - return "" -} - -var File_session_v1_types_proto protoreflect.FileDescriptor - -const file_session_v1_types_proto_rawDesc = "" + - "\n" + - "\x16session/v1/types.proto\x12\n" + - "session.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\x80\x19\n" + - "\aSession\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + - "\x05title\x18\x02 \x01(\tR\x05title\x12\x12\n" + - "\x04path\x18\x03 \x01(\tR\x04path\x12\x1f\n" + - "\vworking_dir\x18\x04 \x01(\tR\n" + - "workingDir\x12\x16\n" + - "\x06branch\x18\x05 \x01(\tR\x06branch\x121\n" + - "\x06status\x18\x06 \x01(\x0e2\x19.session.v1.SessionStatusR\x06status\x12\x18\n" + - "\aprogram\x18\a \x01(\tR\aprogram\x12\x16\n" + - "\x06height\x18\b \x01(\x05R\x06height\x12\x14\n" + - "\x05width\x18\t \x01(\x05R\x05width\x129\n" + - "\n" + - "created_at\x18\n" + - " \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + - "\n" + - "updated_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12L\n" + - "\x14last_terminal_update\x18\x16 \x01(\v2\x1a.google.protobuf.TimestampR\x12lastTerminalUpdate\x12P\n" + - "\x16last_meaningful_output\x18\x17 \x01(\v2\x1a.google.protobuf.TimestampR\x14lastMeaningfulOutput\x12\x19\n" + - "\bauto_yes\x18\f \x01(\bR\aautoYes\x12\x16\n" + - "\x06prompt\x18\r \x01(\tR\x06prompt\x12+\n" + - "\x11existing_worktree\x18\x0e \x01(\tR\x10existingWorktree\x12\x1a\n" + - "\bcategory\x18\x0f \x01(\tR\bcategory\x12\x1f\n" + - "\vis_expanded\x18\x10 \x01(\bR\n" + - "isExpanded\x12:\n" + - "\fsession_type\x18\x11 \x01(\x0e2\x17.session.v1.SessionTypeR\vsessionType\x12\x1f\n" + - "\vtmux_prefix\x18\x12 \x01(\tR\n" + - "tmuxPrefix\x124\n" + - "\n" + - "diff_stats\x18\x13 \x01(\v2\x15.session.v1.DiffStatsR\tdiffStats\x12:\n" + - "\fgit_worktree\x18\x14 \x01(\v2\x17.session.v1.GitWorktreeR\vgitWorktree\x12@\n" + - "\x0eclaude_session\x18\x15 \x01(\v2\x19.session.v1.ClaudeSessionR\rclaudeSession\x12\x12\n" + - "\x04tags\x18\x18 \x03(\tR\x04tags\x12(\n" + - "\x10github_pr_number\x18\x19 \x01(\x05R\x0egithubPrNumber\x12\"\n" + - "\rgithub_pr_url\x18\x1a \x01(\tR\vgithubPrUrl\x12!\n" + - "\fgithub_owner\x18\x1b \x01(\tR\vgithubOwner\x12\x1f\n" + - "\vgithub_repo\x18\x1c \x01(\tR\n" + - "githubRepo\x12*\n" + - "\x11github_source_ref\x18\x1d \x01(\tR\x0fgithubSourceRef\x12(\n" + - "\x10cloned_repo_path\x18\x1e \x01(\tR\x0eclonedRepoPath\x12=\n" + - "\rinstance_type\x18\x1f \x01(\x0e2\x18.session.v1.InstanceTypeR\finstanceType\x12Q\n" + - "\x11external_metadata\x18 \x01(\v2$.session.v1.ExternalInstanceMetadataR\x10externalMetadata\x12&\n" + - "\x0fgithub_pr_state\x18! \x01(\tR\rgithubPrState\x12+\n" + - "\x12github_pr_is_draft\x18\" \x01(\bR\x0fgithubPrIsDraft\x12,\n" + - "\x12github_pr_priority\x18# \x01(\tR\x10githubPrPriority\x122\n" + - "\x15github_approved_count\x18$ \x01(\x05R\x13githubApprovedCount\x127\n" + - "\x18github_changes_req_count\x18% \x01(\x05R\x15githubChangesReqCount\x126\n" + - "\x17github_check_conclusion\x18& \x01(\tR\x15githubCheckConclusion\x12K\n" + - "\x14last_pr_status_check\x18' \x01(\v2\x1a.google.protobuf.TimestampR\x11lastPrStatusCheck\x12D\n" + - "\x10rate_limit_state\x18( \x01(\x0e2\x1a.session.v1.RateLimitStateR\x0erateLimitState\x12M\n" + - "\x15rate_limit_reset_time\x18. \x01(\v2\x1a.google.protobuf.TimestampR\x12rateLimitResetTime\x12,\n" + - "\x12rate_limit_enabled\x18/ \x01(\bR\x10rateLimitEnabled\x12*\n" + - "\x11history_file_path\x18) \x01(\tR\x0fhistoryFilePath\x128\n" + - "\x18claude_conversation_uuid\x18* \x01(\tR\x16claudeConversationUuid\x12\x1d\n" + - "\n" + - "project_id\x18+ \x01(\tR\tprojectId\x12%\n" + - "\x0einitial_prompt\x18, \x01(\tR\rinitialPrompt\x12%\n" + - "\x0elaunch_command\x18- \x01(\tR\rlaunchCommand\x12=\n" + - "\rworking_state\x182 \x01(\x0e2\x18.session.v1.WorkingStateR\fworkingState\x121\n" + - "\tvnc_state\x183 \x01(\v2\x14.session.v1.VNCStateR\bvncState\x121\n" + - "\tcdp_state\x184 \x01(\v2\x14.session.v1.CDPStateR\bcdpState\x12+\n" + - "\x11creation_progress\x185 \x01(\tR\x10creationProgress\x124\n" + - "\n" + - "sub_status\x186 \x01(\x0e2\x15.session.v1.SubStatusR\tsubStatus\x12\"\n" + - "\rmemory_rss_mb\x187 \x01(\x03R\vmemoryRssMb\x120\n" + - "\x14estimated_savings_mb\x188 \x01(\x03R\x12estimatedSavingsMb\x12\x16\n" + - "\x06hidden\x189 \x01(\bR\x06hidden\x12!\n" + - "\fpause_reason\x18: \x01(\tR\vpauseReason\x122\n" + - "\x04goal\x18; \x01(\v2\x1e.session.v1.SessionGoalSummaryR\x04goal\x12'\n" + - "\x0fautonomous_mode\x18< \x01(\bR\x0eautonomousMode\x12\x1f\n" + - "\vworkflow_id\x18> \x01(\tR\n" + - "workflowId\x12;\n" + - "\varchived_at\x18? \x01(\v2\x1a.google.protobuf.TimestampR\n" + - "archivedAt\x12#\n" + - "\rworkflow_name\x18@ \x01(\tR\fworkflowName\x12'\n" + - "\x0fautonomous_turn\x18A \x01(\x05R\x0eautonomousTurn\x120\n" + - "\x14autonomous_max_turns\x18B \x01(\x05R\x12autonomousMaxTurns\x12-\n" + - "\x12autonomous_outcome\x18C \x01(\tR\x11autonomousOutcome\x12C\n" + - "\x0fdetected_status\x18D \x01(\x0e2\x1a.session.v1.DetectedStatusR\x0edetectedStatus\x12)\n" + - "\x10detected_context\x18E \x01(\tR\x0fdetectedContext\x12:\n" + - "\tartifacts\x18F \x01(\v2\x1c.session.v1.SessionArtifactsR\tartifacts\x12#\n" + - "\rworkspace_key\x18G \x01(\tR\fworkspaceKey\x12\x1f\n" + - "\vexit_reason\x18H \x01(\tR\n" + - "exitReason\x12\x12\n" + - "\x04note\x18I \x01(\tR\x04note\x12!\n" + - "\fauto_approve\x18J \x01(\bR\vautoApprove\"\xb5\x01\n" + - "\x10SessionArtifacts\x12\x17\n" + - "\apr_urls\x18\x01 \x03(\tR\x06prUrls\x12\x1f\n" + - "\vcommit_shas\x18\x02 \x03(\tR\n" + - "commitShas\x12#\n" + - "\rexternal_urls\x18\x03 \x03(\tR\fexternalUrls\x12B\n" + - "\x0flast_scanned_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\rlastScannedAt\"\xe3\x01\n" + - "\x12SessionGoalSummary\x12\x1b\n" + - "\tgoal_text\x18\x01 \x01(\tR\bgoalText\x12\x16\n" + - "\x06status\x18\x02 \x01(\tR\x06status\x12\x1f\n" + - "\vtasks_total\x18\x03 \x01(\x05R\n" + - "tasksTotal\x12\x1d\n" + - "\n" + - "tasks_done\x18\x04 \x01(\x05R\ttasksDone\x12\x1d\n" + - "\n" + - "tasks_json\x18\x05 \x01(\tR\ttasksJson\x129\n" + - "\n" + - "updated_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"\xbb\x01\n" + - "\bVNCState\x12-\n" + - "\x06status\x18\x01 \x01(\x0e2\x15.session.v1.VNCStatusR\x06status\x12%\n" + - "\x0edisplay_number\x18\x02 \x01(\x05R\rdisplayNumber\x12!\n" + - "\fvnc_password\x18\x03 \x01(\tR\vvncPassword\x126\n" + - "\x17browser_window_detected\x18\x04 \x01(\bR\x15browserWindowDetected\"9\n" + - "\bCDPState\x12-\n" + - "\x06status\x18\x01 \x01(\x0e2\x15.session.v1.CDPStatusR\x06status\"\xf6\x02\n" + - "\x18ExternalInstanceMetadata\x12\x1f\n" + - "\vtmux_socket\x18\x01 \x01(\tR\n" + - "tmuxSocket\x12*\n" + - "\x11tmux_session_name\x18\x02 \x01(\tR\x0ftmuxSessionName\x12?\n" + - "\rdiscovered_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\fdiscoveredAt\x127\n" + - "\tlast_seen\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\blastSeen\x12!\n" + - "\foriginal_pid\x18\x05 \x01(\x05R\voriginalPid\x12&\n" + - "\x0fmux_socket_path\x18\x06 \x01(\tR\rmuxSocketPath\x12\x1f\n" + - "\vmux_enabled\x18\a \x01(\bR\n" + - "muxEnabled\x12'\n" + - "\x0fsource_terminal\x18\b \x01(\tR\x0esourceTerminal\"U\n" + - "\tDiffStats\x12\x14\n" + - "\x05added\x18\x01 \x01(\x05R\x05added\x12\x18\n" + - "\aremoved\x18\x02 \x01(\x05R\aremoved\x12\x18\n" + - "\acontent\x18\x03 \x01(\tR\acontent\"\xbb\x01\n" + - "\vGitWorktree\x12\x1b\n" + - "\trepo_path\x18\x01 \x01(\tR\brepoPath\x12#\n" + - "\rworktree_path\x18\x02 \x01(\tR\fworktreePath\x12!\n" + - "\fsession_name\x18\x03 \x01(\tR\vsessionName\x12\x1f\n" + - "\vbranch_name\x18\x04 \x01(\tR\n" + - "branchName\x12&\n" + - "\x0fbase_commit_sha\x18\x05 \x01(\tR\rbaseCommitSha\"\xf5\x02\n" + - "\rClaudeSession\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12'\n" + - "\x0fconversation_id\x18\x02 \x01(\tR\x0econversationId\x12!\n" + - "\fproject_name\x18\x03 \x01(\tR\vprojectName\x12?\n" + - "\rlast_attached\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\flastAttached\x126\n" + - "\bsettings\x18\x05 \x01(\v2\x1a.session.v1.ClaudeSettingsR\bsettings\x12C\n" + - "\bmetadata\x18\x06 \x03(\v2'.session.v1.ClaudeSession.MetadataEntryR\bmetadata\x1a;\n" + - "\rMetadataEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x8a\x02\n" + - "\x0eClaudeSettings\x12#\n" + - "\rauto_reattach\x18\x01 \x01(\bR\fautoReattach\x124\n" + - "\x16preferred_session_name\x18\x02 \x01(\tR\x14preferredSessionName\x121\n" + - "\x15create_new_on_missing\x18\x03 \x01(\bR\x12createNewOnMissing\x122\n" + - "\x15show_session_selector\x18\x04 \x01(\bR\x13showSessionSelector\x126\n" + - "\x17session_timeout_minutes\x18\x05 \x01(\x05R\x15sessionTimeoutMinutes\"\xc3\a\n" + - "\n" + - "ReviewItem\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12!\n" + - "\fsession_name\x18\x02 \x01(\tR\vsessionName\x123\n" + - "\x06reason\x18\x03 \x01(\x0e2\x1b.session.v1.AttentionReasonR\x06reason\x120\n" + - "\bpriority\x18\x04 \x01(\x0e2\x14.session.v1.PriorityR\bpriority\x12;\n" + - "\vdetected_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\n" + - "detectedAt\x12\x18\n" + - "\acontext\x18\x06 \x01(\tR\acontext\x12!\n" + - "\fpattern_name\x18\a \x01(\tR\vpatternName\x12@\n" + - "\bmetadata\x18\b \x03(\v2$.session.v1.ReviewItem.MetadataEntryR\bmetadata\x12\x18\n" + - "\aprogram\x18\t \x01(\tR\aprogram\x12\x16\n" + - "\x06branch\x18\n" + - " \x01(\tR\x06branch\x12\x12\n" + - "\x04path\x18\v \x01(\tR\x04path\x12\x1f\n" + - "\vworking_dir\x18\f \x01(\tR\n" + - "workingDir\x121\n" + - "\x06status\x18\r \x01(\x0e2\x19.session.v1.SessionStatusR\x06status\x12\x12\n" + - "\x04tags\x18\x0e \x03(\tR\x04tags\x12\x1a\n" + - "\bcategory\x18\x0f \x01(\tR\bcategory\x124\n" + - "\n" + - "diff_stats\x18\x10 \x01(\v2\x15.session.v1.DiffStatsR\tdiffStats\x12?\n" + - "\rlast_activity\x18\x11 \x01(\v2\x1a.google.protobuf.TimestampR\flastActivity\x12\"\n" + - "\rgithub_pr_url\x18\x12 \x01(\tR\vgithubPrUrl\x129\n" + - "\x19branch_diverged_from_base\x18\x13 \x01(\bR\x16branchDivergedFromBase\x12=\n" + - "\rworking_state\x18\x14 \x01(\x0e2\x18.session.v1.WorkingStateR\fworkingState\x124\n" + - "\n" + - "sub_status\x18\x15 \x01(\x0e2\x15.session.v1.SubStatusR\tsubStatus\x1a;\n" + - "\rMetadataEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xf1\x03\n" + - "\x06PRInfo\x12\x16\n" + - "\x06number\x18\x01 \x01(\x05R\x06number\x12\x14\n" + - "\x05title\x18\x02 \x01(\tR\x05title\x12\x12\n" + - "\x04body\x18\x03 \x01(\tR\x04body\x12\x19\n" + - "\bhead_ref\x18\x04 \x01(\tR\aheadRef\x12\x19\n" + - "\bbase_ref\x18\x05 \x01(\tR\abaseRef\x12\x14\n" + - "\x05state\x18\x06 \x01(\tR\x05state\x12\x16\n" + - "\x06author\x18\a \x01(\tR\x06author\x12\x16\n" + - "\x06labels\x18\b \x03(\tR\x06labels\x12\x19\n" + - "\bhtml_url\x18\t \x01(\tR\ahtmlUrl\x12\x19\n" + - "\bis_draft\x18\n" + - " \x01(\bR\aisDraft\x12\x1c\n" + - "\tmergeable\x18\v \x01(\tR\tmergeable\x12\x1c\n" + - "\tadditions\x18\f \x01(\x05R\tadditions\x12\x1c\n" + - "\tdeletions\x18\r \x01(\x05R\tdeletions\x12#\n" + - "\rchanged_files\x18\x0e \x01(\x05R\fchangedFiles\x129\n" + - "\n" + - "created_at\x18\x0f \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + - "\n" + - "updated_at\x18\x10 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"\xe3\x01\n" + - "\tPRComment\x12\x0e\n" + - "\x02id\x18\x01 \x01(\x05R\x02id\x12\x16\n" + - "\x06author\x18\x02 \x01(\tR\x06author\x12\x12\n" + - "\x04body\x18\x03 \x01(\tR\x04body\x129\n" + - "\n" + - "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x17\n" + - "\x04path\x18\x05 \x01(\tH\x00R\x04path\x88\x01\x01\x12\x17\n" + - "\x04line\x18\x06 \x01(\x05H\x01R\x04line\x88\x01\x01\x12\x1b\n" + - "\tis_review\x18\a \x01(\bR\bisReviewB\a\n" + - "\x05_pathB\a\n" + - "\x05_line\"\xea\x03\n" + - "\vReviewQueue\x12\x1f\n" + - "\vtotal_items\x18\x01 \x01(\x05R\n" + - "totalItems\x12,\n" + - "\x05items\x18\x02 \x03(\v2\x16.session.v1.ReviewItemR\x05items\x12H\n" + - "\vby_priority\x18\x03 \x03(\v2'.session.v1.ReviewQueue.ByPriorityEntryR\n" + - "byPriority\x12B\n" + - "\tby_reason\x18\x04 \x03(\v2%.session.v1.ReviewQueue.ByReasonEntryR\bbyReason\x12.\n" + - "\x13average_age_seconds\x18\x05 \x01(\x03R\x11averageAgeSeconds\x12$\n" + - "\x0eoldest_item_id\x18\x06 \x01(\tR\foldestItemId\x12,\n" + - "\x12oldest_age_seconds\x18\a \x01(\x03R\x10oldestAgeSeconds\x1a=\n" + - "\x0fByPriorityEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\x1a;\n" + - "\rByReasonEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\"\xd4\x03\n" + - "\fNotification\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + - "\n" + - "session_id\x18\x02 \x01(\tR\tsessionId\x12!\n" + - "\fsession_name\x18\x03 \x01(\tR\vsessionName\x12I\n" + - "\x11notification_type\x18\x04 \x01(\x0e2\x1c.session.v1.NotificationTypeR\x10notificationType\x12<\n" + - "\bpriority\x18\x05 \x01(\x0e2 .session.v1.NotificationPriorityR\bpriority\x12\x14\n" + - "\x05title\x18\x06 \x01(\tR\x05title\x12\x18\n" + - "\amessage\x18\a \x01(\tR\amessage\x128\n" + - "\ttimestamp\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12B\n" + - "\bmetadata\x18\t \x03(\v2&.session.v1.Notification.MetadataEntryR\bmetadata\x1a;\n" + - "\rMetadataEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xc4\x01\n" + - "\n" + - "FileChange\x12\x12\n" + - "\x04path\x18\x01 \x01(\tR\x04path\x12.\n" + - "\x06status\x18\x02 \x01(\x0e2\x16.session.v1.FileStatusR\x06status\x12\x1b\n" + - "\tis_staged\x18\x03 \x01(\bR\bisStaged\x12\x19\n" + - "\bold_path\x18\x04 \x01(\tR\aoldPath\x12\x1c\n" + - "\tadditions\x18\x05 \x01(\x05R\tadditions\x12\x1c\n" + - "\tdeletions\x18\x06 \x01(\x05R\tdeletions\"\x84\x05\n" + - "\tVCSStatus\x12'\n" + - "\x04type\x18\x01 \x01(\x0e2\x13.session.v1.VCSTypeR\x04type\x12\x16\n" + - "\x06branch\x18\x02 \x01(\tR\x06branch\x12\x1f\n" + - "\vhead_commit\x18\x03 \x01(\tR\n" + - "headCommit\x12 \n" + - "\vdescription\x18\x04 \x01(\tR\vdescription\x12\x19\n" + - "\bahead_by\x18\x05 \x01(\x05R\aaheadBy\x12\x1b\n" + - "\tbehind_by\x18\x06 \x01(\x05R\bbehindBy\x12\x1a\n" + - "\bupstream\x18\a \x01(\tR\bupstream\x12\x1d\n" + - "\n" + - "has_staged\x18\b \x01(\bR\thasStaged\x12!\n" + - "\fhas_unstaged\x18\t \x01(\bR\vhasUnstaged\x12#\n" + - "\rhas_untracked\x18\n" + - " \x01(\bR\fhasUntracked\x12#\n" + - "\rhas_conflicts\x18\v \x01(\bR\fhasConflicts\x12\x19\n" + - "\bis_clean\x18\f \x01(\bR\aisClean\x129\n" + - "\fstaged_files\x18\r \x03(\v2\x16.session.v1.FileChangeR\vstagedFiles\x12=\n" + - "\x0eunstaged_files\x18\x0e \x03(\v2\x16.session.v1.FileChangeR\runstagedFiles\x12?\n" + - "\x0funtracked_files\x18\x0f \x03(\v2\x16.session.v1.FileChangeR\x0euntrackedFiles\x12=\n" + - "\x0econflict_files\x18\x10 \x03(\v2\x16.session.v1.FileChangeR\rconflictFiles\"~\n" + - "\x0eBookmarkTarget\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n" + - "\vrevision_id\x18\x02 \x01(\tR\n" + - "revisionId\x12\x1b\n" + - "\tis_remote\x18\x03 \x01(\bR\bisRemote\x12\x1a\n" + - "\bupstream\x18\x04 \x01(\tR\bupstream\"\xec\x01\n" + - "\x0eRevisionTarget\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x19\n" + - "\bshort_id\x18\x02 \x01(\tR\ashortId\x12 \n" + - "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x16\n" + - "\x06author\x18\x04 \x01(\tR\x06author\x128\n" + - "\ttimestamp\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12\x1d\n" + - "\n" + - "is_current\x18\x06 \x01(\bR\tisCurrent\x12\x1c\n" + - "\tbookmarks\x18\a \x03(\tR\tbookmarks\"\x94\x01\n" + - "\x0eWorktreeTarget\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" + - "\x04path\x18\x02 \x01(\tR\x04path\x12\x1a\n" + - "\bbookmark\x18\x03 \x01(\tR\bbookmark\x12\x1f\n" + - "\vrevision_id\x18\x04 \x01(\tR\n" + - "revisionId\x12\x1d\n" + - "\n" + - "is_current\x18\x05 \x01(\bR\tisCurrent\"\x86\x02\n" + - "\x19AvailableWorkspaceTargets\x12.\n" + - "\bvcs_type\x18\x01 \x01(\x0e2\x13.session.v1.VCSTypeR\avcsType\x128\n" + - "\tbookmarks\x18\x02 \x03(\v2\x1a.session.v1.BookmarkTargetR\tbookmarks\x12E\n" + - "\x10recent_revisions\x18\x03 \x03(\v2\x1a.session.v1.RevisionTargetR\x0frecentRevisions\x128\n" + - "\tworktrees\x18\x04 \x03(\v2\x1a.session.v1.WorktreeTargetR\tworktrees\"\xe7\x02\n" + - "\aVCSInfo\x12.\n" + - "\bvcs_type\x18\x01 \x01(\x0e2\x13.session.v1.VCSTypeR\avcsType\x12\x15\n" + - "\x06has_jj\x18\x02 \x01(\bR\x05hasJj\x12\x17\n" + - "\ahas_git\x18\x03 \x01(\bR\x06hasGit\x12!\n" + - "\fis_colocated\x18\x04 \x01(\bR\visColocated\x12\x1b\n" + - "\trepo_path\x18\x05 \x01(\tR\brepoPath\x12)\n" + - "\x10current_bookmark\x18\x06 \x01(\tR\x0fcurrentBookmark\x12)\n" + - "\x10current_revision\x18\a \x01(\tR\x0fcurrentRevision\x126\n" + - "\x17has_uncommitted_changes\x18\b \x01(\bR\x15hasUncommittedChanges\x12.\n" + - "\x13modified_file_count\x18\t \x01(\x05R\x11modifiedFileCount\"\xed\x03\n" + - "\x14PendingApprovalProto\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + - "\n" + - "session_id\x18\x02 \x01(\tR\tsessionId\x12\x1b\n" + - "\ttool_name\x18\x03 \x01(\tR\btoolName\x12N\n" + - "\n" + - "tool_input\x18\x04 \x03(\v2/.session.v1.PendingApprovalProto.ToolInputEntryR\ttoolInput\x12\x10\n" + - "\x03cwd\x18\x05 \x01(\tR\x03cwd\x12'\n" + - "\x0fpermission_mode\x18\x06 \x01(\tR\x0epermissionMode\x129\n" + - "\n" + - "created_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + - "\n" + - "expires_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\x12+\n" + - "\x11seconds_remaining\x18\t \x01(\x05R\x10secondsRemaining\x12\x1d\n" + - "\n" + - "risk_level\x18\n" + - " \x01(\tR\triskLevel\x1a<\n" + - "\x0eToolInputEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xff\x06\n" + - "\x11ApprovalRuleProto\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x12\x1b\n" + - "\ttool_name\x18\x03 \x01(\tR\btoolName\x12!\n" + - "\ftool_pattern\x18\x04 \x01(\tR\vtoolPattern\x12'\n" + - "\x0fcommand_pattern\x18\x05 \x01(\tR\x0ecommandPattern\x12!\n" + - "\ffile_pattern\x18\x06 \x01(\tR\vfilePattern\x124\n" + - "\bdecision\x18\a \x01(\x0e2\x18.session.v1.AutoDecisionR\bdecision\x12\x1d\n" + - "\n" + - "risk_level\x18\b \x01(\tR\triskLevel\x12\x16\n" + - "\x06reason\x18\t \x01(\tR\x06reason\x12 \n" + - "\valternative\x18\n" + - " \x01(\tR\valternative\x12\x1a\n" + - "\bpriority\x18\v \x01(\x05R\bpriority\x12\x18\n" + - "\aenabled\x18\f \x01(\bR\aenabled\x12\x16\n" + - "\x06source\x18\r \x01(\tR\x06source\x129\n" + - "\n" + - "created_at\x18\x0e \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x1a\n" + - "\bprograms\x18\x14 \x03(\tR\bprograms\x12 \n" + - "\vsubcommands\x18\x15 \x03(\tR\vsubcommands\x12/\n" + - "\x13blocked_subcommands\x18\x16 \x03(\tR\x12blockedSubcommands\x12%\n" + - "\x0erequired_flags\x18\x17 \x03(\tR\rrequiredFlags\x12'\n" + - "\x0fforbidden_flags\x18\x18 \x03(\tR\x0eforbiddenFlags\x12!\n" + - "\fpython_modes\x18\x19 \x03(\tR\vpythonModes\x127\n" + - "\x18safe_python_imports_only\x18\x1a \x01(\bR\x15safePythonImportsOnly\x124\n" + - "\x16required_flag_prefixes\x18\x1b \x03(\tR\x14requiredFlagPrefixes\x12#\n" + - "\rtool_category\x18\x1c \x01(\tR\ftoolCategory\x12,\n" + - "\x12require_ci_passing\x18\x1d \x01(\bR\x10requireCiPassing\"\xe3\v\n" + - "\x15AnalyticsSummaryProto\x12'\n" + - "\x0ftotal_decisions\x18\x01 \x01(\x05R\x0etotalDecisions\x12^\n" + - "\x0fdecision_counts\x18\x02 \x03(\v25.session.v1.AnalyticsSummaryProto.DecisionCountsEntryR\x0edecisionCounts\x126\n" + - "\ttop_tools\x18\x03 \x03(\v2\x19.session.v1.ToolStatProtoR\btopTools\x12L\n" + - "\x13top_denied_commands\x18\x04 \x03(\v2\x1c.session.v1.CommandStatProtoR\x11topDeniedCommands\x12I\n" + - "\x13top_triggered_rules\x18\x05 \x03(\v2\x19.session.v1.RuleStatProtoR\x11topTriggeredRules\x12*\n" + - "\x11auto_approve_rate\x18\x06 \x01(\x01R\x0fautoApproveRate\x12,\n" + - "\x12manual_review_rate\x18\a \x01(\x01R\x10manualReviewRate\x12=\n" + - "\fwindow_start\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\vwindowStart\x129\n" + - "\n" + - "window_end\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\twindowEnd\x12N\n" + - "\x14top_command_programs\x18\n" + - " \x03(\v2\x1c.session.v1.ProgramStatProtoR\x12topCommandPrograms\x12I\n" + - "\x12top_python_imports\x18\v \x03(\v2\x1b.session.v1.ImportStatProtoR\x10topPythonImports\x12,\n" + - "\x12coverage_gap_count\x18\f \x01(\x05R\x10coverageGapCount\x12*\n" + - "\x11coverage_gap_rate\x18\r \x01(\x01R\x0fcoverageGapRate\x12I\n" + - "\x13top_uncovered_tools\x18\x0e \x03(\v2\x19.session.v1.ToolStatProtoR\x11topUncoveredTools\x12R\n" + - "\x16top_uncovered_programs\x18\x0f \x03(\v2\x1c.session.v1.ProgramStatProtoR\x14topUncoveredPrograms\x12Y\n" + - "\x18command_subcommand_stats\x18\x10 \x03(\v2\x1f.session.v1.SubcommandStatProtoR\x16commandSubcommandStats\x12w\n" + - "\x18escalation_reason_counts\x18\x11 \x03(\v2=.session.v1.AnalyticsSummaryProto.EscalationReasonCountsEntryR\x16escalationReasonCounts\x12b\n" + - "\x11risk_level_counts\x18\x12 \x03(\v26.session.v1.AnalyticsSummaryProto.RiskLevelCountsEntryR\x0friskLevelCounts\x1aA\n" + - "\x13DecisionCountsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\x1aI\n" + - "\x1bEscalationReasonCountsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\x1aB\n" + - "\x14RiskLevelCountsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\"\x86\x01\n" + - "\rToolStatProto\x12\x1b\n" + - "\ttool_name\x18\x01 \x01(\tR\btoolName\x12\x14\n" + - "\x05count\x18\x02 \x01(\x05R\x05count\x12!\n" + - "\fmanual_allow\x18\x03 \x01(\x05R\vmanualAllow\x12\x1f\n" + - "\vmanual_deny\x18\x04 \x01(\x05R\n" + - "manualDeny\"_\n" + - "\x10CommandStatProto\x12\x18\n" + - "\apreview\x18\x01 \x01(\tR\apreview\x12\x1b\n" + - "\ttool_name\x18\x02 \x01(\tR\btoolName\x12\x14\n" + - "\x05count\x18\x03 \x01(\x05R\x05count\"[\n" + - "\rRuleStatProto\x12\x17\n" + - "\arule_id\x18\x01 \x01(\tR\x06ruleId\x12\x1b\n" + - "\trule_name\x18\x02 \x01(\tR\bruleName\x12\x14\n" + - "\x05count\x18\x03 \x01(\x05R\x05count\"\xab\x01\n" + - "\x10ProgramStatProto\x12!\n" + - "\fprogram_name\x18\x01 \x01(\tR\vprogramName\x12\x1a\n" + - "\bcategory\x18\x02 \x01(\tR\bcategory\x12\x14\n" + - "\x05count\x18\x03 \x01(\x05R\x05count\x12!\n" + - "\fmanual_allow\x18\x04 \x01(\x05R\vmanualAllow\x12\x1f\n" + - "\vmanual_deny\x18\x05 \x01(\x05R\n" + - "manualDeny\"?\n" + - "\x0fImportStatProto\x12\x16\n" + - "\x06module\x18\x01 \x01(\tR\x06module\x12\x14\n" + - "\x05count\x18\x02 \x01(\x05R\x05count\"\xce\x01\n" + - "\x13SubcommandStatProto\x12!\n" + - "\fprogram_name\x18\x01 \x01(\tR\vprogramName\x12\x1e\n" + - "\n" + - "subcommand\x18\x02 \x01(\tR\n" + - "subcommand\x12\x1a\n" + - "\bcategory\x18\x03 \x01(\tR\bcategory\x12\x14\n" + - "\x05count\x18\x04 \x01(\x05R\x05count\x12!\n" + - "\fmanual_allow\x18\x05 \x01(\x05R\vmanualAllow\x12\x1f\n" + - "\vmanual_deny\x18\x06 \x01(\x05R\n" + - "manualDeny\"\xd8\x01\n" + - "\x10DailyBucketProto\x12\x12\n" + - "\x04date\x18\x01 \x01(\tR\x04date\x12\x1d\n" + - "\n" + - "auto_allow\x18\x02 \x01(\x05R\tautoAllow\x12\x1b\n" + - "\tauto_deny\x18\x03 \x01(\x05R\bautoDeny\x12\x1a\n" + - "\bescalate\x18\x04 \x01(\x05R\bescalate\x12!\n" + - "\fmanual_allow\x18\x05 \x01(\x05R\vmanualAllow\x12\x1f\n" + - "\vmanual_deny\x18\x06 \x01(\x05R\n" + - "manualDeny\x12\x14\n" + - "\x05total\x18\a \x01(\x05R\x05total\"\xc8\x02\n" + - "\x18SubcommandBreakdownProto\x12\x1e\n" + - "\n" + - "subcommand\x18\x01 \x01(\tR\n" + - "subcommand\x12\x14\n" + - "\x05total\x18\x02 \x01(\x05R\x05total\x12\x1d\n" + - "\n" + - "auto_allow\x18\x03 \x01(\x05R\tautoAllow\x12\x1b\n" + - "\tauto_deny\x18\x04 \x01(\x05R\bautoDeny\x12\x1a\n" + - "\bescalate\x18\x05 \x01(\x05R\bescalate\x12!\n" + - "\fmanual_allow\x18\x06 \x01(\x05R\vmanualAllow\x12\x1f\n" + - "\vmanual_deny\x18\a \x01(\x05R\n" + - "manualDeny\x12*\n" + - "\x11has_rule_coverage\x18\b \x01(\bR\x0fhasRuleCoverage\x12.\n" + - "\x13suggested_rule_hint\x18\t \x01(\tR\x11suggestedRuleHint\"\x87\x02\n" + - "\fDatabaseInfo\x12!\n" + - "\fworkspace_id\x18\x01 \x01(\tR\vworkspaceId\x12\x12\n" + - "\x04type\x18\x02 \x01(\tR\x04type\x12\x10\n" + - "\x03cwd\x18\x03 \x01(\tR\x03cwd\x12\x12\n" + - "\x04name\x18\x04 \x01(\tR\x04name\x12\x1d\n" + - "\n" + - "config_dir\x18\x05 \x01(\tR\tconfigDir\x12#\n" + - "\rsession_count\x18\x06 \x01(\x05R\fsessionCount\x12\x1d\n" + - "\n" + - "is_current\x18\a \x01(\bR\tisCurrent\x127\n" + - "\tlast_used\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\blastUsed\"\xe1\x01\n" + - "\bFileNode\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" + - "\x04path\x18\x02 \x01(\tR\x04path\x12\x15\n" + - "\x06is_dir\x18\x03 \x01(\bR\x05isDir\x12\x12\n" + - "\x04size\x18\x04 \x01(\x03R\x04size\x12\x1d\n" + - "\n" + - "git_status\x18\x05 \x01(\tR\tgitStatus\x12\x1d\n" + - "\n" + - "is_symlink\x18\x06 \x01(\bR\tisSymlink\x12%\n" + - "\x0esymlink_target\x18\a \x01(\tR\rsymlinkTarget\x12\x1d\n" + - "\n" + - "is_ignored\x18\b \x01(\bR\tisIgnored\"\xcd\x02\n" + - "\x0fCheckpointProto\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + - "\n" + - "session_id\x18\x02 \x01(\tR\tsessionId\x12\x1b\n" + - "\tparent_id\x18\x03 \x01(\tR\bparentId\x12\x14\n" + - "\x05label\x18\x04 \x01(\tR\x05label\x12%\n" + - "\x0escrollback_seq\x18\x05 \x01(\x04R\rscrollbackSeq\x12'\n" + - "\x0fscrollback_path\x18\x06 \x01(\tR\x0escrollbackPath\x12(\n" + - "\x10claude_conv_uuid\x18\a \x01(\tR\x0eclaudeConvUuid\x12$\n" + - "\x0egit_commit_sha\x18\b \x01(\tR\fgitCommitSha\x128\n" + - "\ttimestamp\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\"\xc9\a\n" + - "\x12UnfinishedWorktree\x12\x1b\n" + - "\trepo_path\x18\x01 \x01(\tR\brepoPath\x12\x16\n" + - "\x06branch\x18\x02 \x01(\tR\x06branch\x12#\n" + - "\rworktree_path\x18\x03 \x01(\tR\fworktreePath\x12\x1b\n" + - "\trepo_name\x18\x04 \x01(\tR\brepoName\x12!\n" + - "\fdisplay_path\x18\x05 \x01(\tR\vdisplayPath\x12'\n" + - "\x0fhas_uncommitted\x18\x06 \x01(\bR\x0ehasUncommitted\x12#\n" + - "\rcommits_ahead\x18\a \x01(\x05R\fcommitsAhead\x12%\n" + - "\x0ecommits_behind\x18\b \x01(\x05R\rcommitsBehind\x12%\n" + - "\x0edefault_branch\x18\t \x01(\tR\rdefaultBranch\x12#\n" + - "\rchanged_files\x18\n" + - " \x01(\x05R\fchangedFiles\x12\x1f\n" + - "\vlines_added\x18\v \x01(\x05R\n" + - "linesAdded\x12#\n" + - "\rlines_removed\x18\f \x01(\x05R\flinesRemoved\x122\n" + - "\x15ahead_commit_messages\x18\r \x03(\tR\x13aheadCommitMessages\x12?\n" + - "\rlast_modified\x18\x0e \x01(\v2\x1a.google.protobuf.TimestampR\flastModified\x127\n" + - "\tscan_time\x18\x0f \x01(\v2\x1a.google.protobuf.TimestampR\bscanTime\x127\n" + - "\vscan_status\x18\x10 \x01(\x0e2\x16.session.v1.ScanStatusR\n" + - "scanStatus\x12$\n" + - "\x0escan_error_msg\x18\x11 \x01(\tR\fscanErrorMsg\x12!\n" + - "\fis_dismissed\x18\x12 \x01(\bR\visDismissed\x12\x1d\n" + - "\n" + - "is_snoozed\x18\x13 \x01(\bR\tisSnoozed\x12\x1f\n" + - "\vsession_ids\x18\x14 \x03(\tR\n" + - "sessionIds\x12(\n" + - "\x10github_pr_number\x18\x15 \x01(\x05R\x0egithubPrNumber\x12\"\n" + - "\rgithub_pr_url\x18\x16 \x01(\tR\vgithubPrUrl\x12&\n" + - "\x0fgithub_pr_state\x18\x17 \x01(\tR\rgithubPrState\x12,\n" + - "\x12github_pr_priority\x18\x18 \x01(\tR\x10githubPrPriority\"\x8a\x01\n" + - "\x14UnfinishedWorkConfig\x120\n" + - "\x14auto_spider_sessions\x18\x01 \x01(\bR\x12autoSpiderSessions\x12\x1d\n" + - "\n" + - "watch_dirs\x18\x02 \x03(\tR\twatchDirs\x12!\n" + - "\fpinned_repos\x18\x03 \x03(\tR\vpinnedRepos\"\xcb\x02\n" + - "\x05Shell\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n" + - "\acommand\x18\x03 \x01(\tR\acommand\x12\x1f\n" + - "\vworking_dir\x18\x04 \x01(\tR\n" + - "workingDir\x12/\n" + - "\x06status\x18\x05 \x01(\x0e2\x17.session.v1.ShellStatusR\x06status\x12\x1b\n" + - "\texit_code\x18\x06 \x01(\x05R\bexitCode\x12\x1f\n" + - "\vorder_index\x18\a \x01(\x05R\n" + - "orderIndex\x129\n" + - "\n" + - "started_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x129\n" + - "\n" + - "stopped_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tstoppedAt\"\xa5\x04\n" + - "\x12SuggestedRuleProto\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n" + - "\ttool_name\x18\x02 \x01(\tR\btoolName\x12!\n" + - "\ftool_pattern\x18\x03 \x01(\tR\vtoolPattern\x12'\n" + - "\x0fcommand_pattern\x18\x04 \x01(\tR\x0ecommandPattern\x12!\n" + - "\ffile_pattern\x18\x05 \x01(\tR\vfilePattern\x124\n" + - "\bdecision\x18\x06 \x01(\x0e2\x18.session.v1.AutoDecisionR\bdecision\x12\x1d\n" + - "\n" + - "risk_level\x18\a \x01(\tR\triskLevel\x12\x16\n" + - "\x06reason\x18\b \x01(\tR\x06reason\x12 \n" + - "\valternative\x18\t \x01(\tR\valternative\x12\x1a\n" + - "\bpriority\x18\n" + - " \x01(\x05R\bpriority\x12\x1e\n" + - "\n" + - "confidence\x18\v \x01(\x02R\n" + - "confidence\x12 \n" + - "\vexplanation\x18\f \x01(\tR\vexplanation\x12'\n" + - "\x0fsource_commands\x18\r \x03(\tR\x0esourceCommands\x12/\n" + - "\x14shadowed_by_rule_ids\x18\x0e \x03(\tR\x11shadowedByRuleIds\x12(\n" + - "\x10shadows_rule_ids\x18\x0f \x03(\tR\x0eshadowsRuleIds\"\xde\x04\n" + - "\x06UserPR\x12\x14\n" + - "\x05owner\x18\x01 \x01(\tR\x05owner\x12\x12\n" + - "\x04repo\x18\x02 \x01(\tR\x04repo\x12\x16\n" + - "\x06number\x18\x03 \x01(\x05R\x06number\x12\x14\n" + - "\x05title\x18\x04 \x01(\tR\x05title\x12\x19\n" + - "\bhtml_url\x18\x05 \x01(\tR\ahtmlUrl\x12\x14\n" + - "\x05state\x18\x06 \x01(\tR\x05state\x12\x19\n" + - "\bhead_ref\x18\a \x01(\tR\aheadRef\x12\x19\n" + - "\bbase_ref\x18\b \x01(\tR\abaseRef\x12\x19\n" + - "\bis_draft\x18\t \x01(\bR\aisDraft\x12)\n" + - "\x10check_conclusion\x18\n" + - " \x01(\tR\x0fcheckConclusion\x12%\n" + - "\x0eapproved_count\x18\v \x01(\x05R\rapprovedCount\x12*\n" + - "\x11changes_req_count\x18\f \x01(\x05R\x0fchangesReqCount\x129\n" + - "\n" + - "updated_at\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x127\n" + - "\tclosed_at\x18\x0e \x01(\v2\x1a.google.protobuf.TimestampR\bclosedAt\x127\n" + - "\tmerged_at\x18\x0f \x01(\v2\x1a.google.protobuf.TimestampR\bmergedAt\x12\x1f\n" + - "\vsession_ids\x18\x10 \x03(\tR\n" + - "sessionIds\x12.\n" + - "\x13local_worktree_path\x18\x11 \x01(\tR\x11localWorktreePath*\xa9\x01\n" + - "\tVNCStatus\x12\x1a\n" + - "\x16VNC_STATUS_UNSPECIFIED\x10\x00\x12\x17\n" + - "\x13VNC_STATUS_STARTING\x10\x01\x12\x14\n" + - "\x10VNC_STATUS_READY\x10\x02\x12\x19\n" + - "\x15VNC_STATUS_NO_BROWSER\x10\x03\x12\x1a\n" + - "\x16VNC_STATUS_UNAVAILABLE\x10\x04\x12\x1a\n" + - "\x16VNC_STATUS_PASSTHROUGH\x10\x05*\x90\x01\n" + - "\tCDPStatus\x12\x1a\n" + - "\x16CDP_STATUS_UNSPECIFIED\x10\x00\x12\x16\n" + - "\x12CDP_STATUS_WAITING\x10\x01\x12\x18\n" + - "\x14CDP_STATUS_STREAMING\x10\x02\x12\x19\n" + - "\x15CDP_STATUS_NO_BROWSER\x10\x03\x12\x1a\n" + - "\x16CDP_STATUS_UNAVAILABLE\x10\x04*\x80\x03\n" + - "\rSessionStatus\x12\x1e\n" + - "\x1aSESSION_STATUS_UNSPECIFIED\x10\x00\x12\x19\n" + - "\x15SESSION_STATUS_ACTIVE\x10\x01\x12\x1e\n" + - "\x16SESSION_STATUS_RUNNING\x10\x01\x1a\x02\b\x01\x12\x1c\n" + - "\x14SESSION_STATUS_READY\x10\x02\x1a\x02\b\x01\x12\x1e\n" + - "\x16SESSION_STATUS_LOADING\x10\x03\x1a\x02\b\x01\x12\x19\n" + - "\x15SESSION_STATUS_PAUSED\x10\x04\x12%\n" + - "\x1dSESSION_STATUS_NEEDS_APPROVAL\x10\x05\x1a\x02\b\x01\x12\x1b\n" + - "\x17SESSION_STATUS_CREATING\x10\x06\x12\x1a\n" + - "\x16SESSION_STATUS_STOPPED\x10\a\x12\x1d\n" + - "\x19SESSION_STATUS_HIBERNATED\x10\b\x12\x1c\n" + - "\x18SESSION_STATUS_RESTORING\x10\t\x12\x1a\n" + - "\x16SESSION_STATUS_CRASHED\x10\n" + - "\x1a\x02\x10\x01*\xc2\x01\n" + - "\vSessionType\x12\x1c\n" + - "\x18SESSION_TYPE_UNSPECIFIED\x10\x00\x12\x1a\n" + - "\x16SESSION_TYPE_DIRECTORY\x10\x01\x12\x1d\n" + - "\x19SESSION_TYPE_NEW_WORKTREE\x10\x02\x12\"\n" + - "\x1eSESSION_TYPE_EXISTING_WORKTREE\x10\x03\x12\x1c\n" + - "\x18SESSION_TYPE_NEW_PROJECT\x10\x04\x12\x18\n" + - "\x14SESSION_TYPE_ONE_OFF\x10\x05*d\n" + - "\fInstanceType\x12\x1d\n" + - "\x19INSTANCE_TYPE_UNSPECIFIED\x10\x00\x12\x19\n" + - "\x15INSTANCE_TYPE_MANAGED\x10\x01\x12\x1a\n" + - "\x16INSTANCE_TYPE_EXTERNAL\x10\x02*\x8c\x03\n" + - "\x0eDetectedStatus\x12\x1f\n" + - "\x1bDETECTED_STATUS_UNSPECIFIED\x10\x00\x12\x18\n" + - "\x14DETECTED_STATUS_IDLE\x10\x01\x12\x1e\n" + - "\x1aDETECTED_STATUS_PROCESSING\x10\x02\x12\x1d\n" + - "\x19DETECTED_STATUS_EXECUTING\x10\x03\x12\"\n" + - "\x1eDETECTED_STATUS_NEEDS_APPROVAL\x10\x04\x12\"\n" + - "\x1eDETECTED_STATUS_INPUT_REQUIRED\x10\x05\x12\x19\n" + - "\x15DETECTED_STATUS_ERROR\x10\x06\x12!\n" + - "\x1dDETECTED_STATUS_TESTS_FAILING\x10\a\x12\x1b\n" + - "\x17DETECTED_STATUS_SUCCESS\x10\b\x12\x1b\n" + - "\x17DETECTED_STATUS_UNKNOWN\x10\t\x12\x19\n" + - "\x15DETECTED_STATUS_READY\x10\n" + - "\x12%\n" + - "!DETECTED_STATUS_WAITING_FOR_AGENT\x10\v*\x98\x01\n" + - "\fWorkingState\x12\x1d\n" + - "\x19WORKING_STATE_UNSPECIFIED\x10\x00\x12\x18\n" + - "\x14WORKING_STATE_ACTIVE\x10\x01\x12\x1c\n" + - "\x18WORKING_STATE_PROCESSING\x10\x02\x12\x16\n" + - "\x12WORKING_STATE_IDLE\x10\x03\x12\x19\n" + - "\x15WORKING_STATE_WAITING\x10\x04*\xb6\x02\n" + - "\tSubStatus\x12\x1a\n" + - "\x16SUB_STATUS_UNSPECIFIED\x10\x00\x12\x13\n" + - "\x0fSUB_STATUS_IDLE\x10\x01\x12\x19\n" + - "\x15SUB_STATUS_PROCESSING\x10\x02\x12\x1d\n" + - "\x19SUB_STATUS_NEEDS_APPROVAL\x10\x03\x12\x14\n" + - "\x10SUB_STATUS_ERROR\x10\x04\x12\x1c\n" + - "\x18SUB_STATUS_TESTS_FAILING\x10\x05\x12\x1b\n" + - "\x17SUB_STATUS_RATE_LIMITED\x10\x06\x12\x1d\n" + - "\x19SUB_STATUS_INPUT_REQUIRED\x10\a\x12\x14\n" + - "\x10SUB_STATUS_READY\x10\b\x12\x16\n" + - "\x12SUB_STATUS_SUCCESS\x10\t\x12 \n" + - "\x1cSUB_STATUS_WAITING_FOR_AGENT\x10\n" + - "*\xc9\x01\n" + - "\x0eRateLimitState\x12 \n" + - "\x1cRATE_LIMIT_STATE_UNSPECIFIED\x10\x00\x12\x19\n" + - "\x15RATE_LIMIT_STATE_NONE\x10\x01\x12\x1c\n" + - "\x18RATE_LIMIT_STATE_WAITING\x10\x02\x12\x1f\n" + - "\x1bRATE_LIMIT_STATE_RECOVERING\x10\x03\x12\x1e\n" + - "\x1aRATE_LIMIT_STATE_RECOVERED\x10\x04\x12\x1b\n" + - "\x17RATE_LIMIT_STATE_FAILED\x10\x05*s\n" + - "\bPriority\x12\x18\n" + - "\x14PRIORITY_UNSPECIFIED\x10\x00\x12\x13\n" + - "\x0fPRIORITY_URGENT\x10\x01\x12\x11\n" + - "\rPRIORITY_HIGH\x10\x02\x12\x13\n" + - "\x0fPRIORITY_MEDIUM\x10\x03\x12\x10\n" + - "\fPRIORITY_LOW\x10\x04*\x94\x03\n" + - "\x0fAttentionReason\x12 \n" + - "\x1cATTENTION_REASON_UNSPECIFIED\x10\x00\x12%\n" + - "!ATTENTION_REASON_APPROVAL_PENDING\x10\x01\x12#\n" + - "\x1fATTENTION_REASON_INPUT_REQUIRED\x10\x02\x12 \n" + - "\x1cATTENTION_REASON_ERROR_STATE\x10\x03\x12!\n" + - "\x1dATTENTION_REASON_IDLE_TIMEOUT\x10\x04\x12\"\n" + - "\x1eATTENTION_REASON_TASK_COMPLETE\x10\x05\x12(\n" + - "$ATTENTION_REASON_UNCOMMITTED_CHANGES\x10\x06\x12\x19\n" + - "\x15ATTENTION_REASON_IDLE\x10\a\x12\x1a\n" + - "\x16ATTENTION_REASON_STALE\x10\b\x12%\n" + - "!ATTENTION_REASON_WAITING_FOR_USER\x10\t\x12\"\n" + - "\x1eATTENTION_REASON_TESTS_FAILING\x10\n" + - "*\x9d\x04\n" + - "\x10NotificationType\x12!\n" + - "\x1dNOTIFICATION_TYPE_UNSPECIFIED\x10\x00\x12%\n" + - "!NOTIFICATION_TYPE_APPROVAL_NEEDED\x10\x01\x12$\n" + - " NOTIFICATION_TYPE_INPUT_REQUIRED\x10\x02\x12)\n" + - "%NOTIFICATION_TYPE_CONFIRMATION_NEEDED\x10\x03\x12#\n" + - "\x1fNOTIFICATION_TYPE_TASK_COMPLETE\x10\x04\x12%\n" + - "!NOTIFICATION_TYPE_PROCESS_STARTED\x10\x05\x12&\n" + - "\"NOTIFICATION_TYPE_PROCESS_FINISHED\x10\x06\x12\x1b\n" + - "\x17NOTIFICATION_TYPE_ERROR\x10\a\x12\x1d\n" + - "\x19NOTIFICATION_TYPE_WARNING\x10\b\x12\x1d\n" + - "\x19NOTIFICATION_TYPE_FAILURE\x10\t\x12\x1a\n" + - "\x16NOTIFICATION_TYPE_INFO\x10\n" + - "\x12\x1b\n" + - "\x17NOTIFICATION_TYPE_DEBUG\x10\v\x12#\n" + - "\x1fNOTIFICATION_TYPE_STATUS_CHANGE\x10\f\x12#\n" + - "\x1fNOTIFICATION_TYPE_AUTO_APPROVED\x10\r\x12\x1c\n" + - "\x18NOTIFICATION_TYPE_CUSTOM\x10d*\xc0\x01\n" + - "\x14NotificationPriority\x12%\n" + - "!NOTIFICATION_PRIORITY_UNSPECIFIED\x10\x00\x12\x1d\n" + - "\x19NOTIFICATION_PRIORITY_LOW\x10\x01\x12 \n" + - "\x1cNOTIFICATION_PRIORITY_MEDIUM\x10\x02\x12\x1e\n" + - "\x1aNOTIFICATION_PRIORITY_HIGH\x10\x03\x12 \n" + - "\x1cNOTIFICATION_PRIORITY_URGENT\x10\x04*K\n" + - "\aVCSType\x12\x18\n" + - "\x14VCS_TYPE_UNSPECIFIED\x10\x00\x12\x10\n" + - "\fVCS_TYPE_GIT\x10\x01\x12\x14\n" + - "\x10VCS_TYPE_JUJUTSU\x10\x02*\xf2\x01\n" + - "\n" + - "FileStatus\x12\x1b\n" + - "\x17FILE_STATUS_UNSPECIFIED\x10\x00\x12\x18\n" + - "\x14FILE_STATUS_MODIFIED\x10\x01\x12\x15\n" + - "\x11FILE_STATUS_ADDED\x10\x02\x12\x17\n" + - "\x13FILE_STATUS_DELETED\x10\x03\x12\x17\n" + - "\x13FILE_STATUS_RENAMED\x10\x04\x12\x16\n" + - "\x12FILE_STATUS_COPIED\x10\x05\x12\x19\n" + - "\x15FILE_STATUS_UNTRACKED\x10\x06\x12\x17\n" + - "\x13FILE_STATUS_IGNORED\x10\a\x12\x18\n" + - "\x14FILE_STATUS_CONFLICT\x10\b*\xa9\x01\n" + - "\x13WorkspaceSwitchType\x12%\n" + - "!WORKSPACE_SWITCH_TYPE_UNSPECIFIED\x10\x00\x12#\n" + - "\x1fWORKSPACE_SWITCH_TYPE_DIRECTORY\x10\x01\x12\"\n" + - "\x1eWORKSPACE_SWITCH_TYPE_REVISION\x10\x02\x12\"\n" + - "\x1eWORKSPACE_SWITCH_TYPE_WORKTREE\x10\x03*\x90\x01\n" + - "\x0eChangeStrategy\x12\x1f\n" + - "\x1bCHANGE_STRATEGY_UNSPECIFIED\x10\x00\x12\x1f\n" + - "\x1bCHANGE_STRATEGY_KEEP_AS_WIP\x10\x01\x12\x1f\n" + - "\x1bCHANGE_STRATEGY_BRING_ALONG\x10\x02\x12\x1b\n" + - "\x17CHANGE_STRATEGY_ABANDON\x10\x03*z\n" + - "\fAutoDecision\x12\x1d\n" + - "\x19AUTO_DECISION_UNSPECIFIED\x10\x00\x12\x17\n" + - "\x13AUTO_DECISION_ALLOW\x10\x01\x12\x16\n" + - "\x12AUTO_DECISION_DENY\x10\x02\x12\x1a\n" + - "\x16AUTO_DECISION_ESCALATE\x10\x03*\x89\x01\n" + - "\n" + - "ScanStatus\x12\x1b\n" + - "\x17SCAN_STATUS_UNSPECIFIED\x10\x00\x12\x12\n" + - "\x0eSCAN_STATUS_OK\x10\x01\x12\x17\n" + - "\x13SCAN_STATUS_TIMEOUT\x10\x02\x12\x1a\n" + - "\x16SCAN_STATUS_PERMISSION\x10\x03\x12\x15\n" + - "\x11SCAN_STATUS_ERROR\x10\x04*\xcd\x01\n" + - "\x14SessionSummaryStatus\x12&\n" + - "\"SESSION_SUMMARY_STATUS_UNSPECIFIED\x10\x00\x12\"\n" + - "\x1eSESSION_SUMMARY_STATUS_PENDING\x10\x01\x12%\n" + - "!SESSION_SUMMARY_STATUS_GENERATING\x10\x02\x12 \n" + - "\x1cSESSION_SUMMARY_STATUS_READY\x10\x03\x12 \n" + - "\x1cSESSION_SUMMARY_STATUS_ERROR\x10\x04*w\n" + - "\vShellStatus\x12\x1c\n" + - "\x18SHELL_STATUS_UNSPECIFIED\x10\x00\x12\x18\n" + - "\x14SHELL_STATUS_RUNNING\x10\x01\x12\x18\n" + - "\x14SHELL_STATUS_STOPPED\x10\x02\x12\x16\n" + - "\x12SHELL_STATUS_ERROR\x10\x03*\xaa\x01\n" + - "\x10SuggestionSource\x12!\n" + - "\x1dSUGGESTION_SOURCE_UNSPECIFIED\x10\x00\x12$\n" + - " SUGGESTION_SOURCE_ANALYTICS_GAPS\x10\x01\x12'\n" + - "#SUGGESTION_SOURCE_REVIEW_QUEUE_ITEM\x10\x02\x12$\n" + - " SUGGESTION_SOURCE_COMMAND_SAMPLE\x10\x03B\xaa\x01\n" + - "\x0ecom.session.v1B\n" + - "TypesProtoP\x01ZCgithub.com/tstapler/stapler-squad/gen/proto/go/session/v1;sessionv1\xa2\x02\x03SXX\xaa\x02\n" + - "Session.V1\xca\x02\n" + - "Session\\V1\xe2\x02\x16Session\\V1\\GPBMetadata\xea\x02\vSession::V1b\x06proto3" - -var ( - file_session_v1_types_proto_rawDescOnce sync.Once - file_session_v1_types_proto_rawDescData []byte -) - -func file_session_v1_types_proto_rawDescGZIP() []byte { - file_session_v1_types_proto_rawDescOnce.Do(func() { - file_session_v1_types_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_session_v1_types_proto_rawDesc), len(file_session_v1_types_proto_rawDesc))) - }) - return file_session_v1_types_proto_rawDescData -} - -var file_session_v1_types_proto_enumTypes = make([]protoimpl.EnumInfo, 22) -var file_session_v1_types_proto_msgTypes = make([]protoimpl.MessageInfo, 50) -var file_session_v1_types_proto_goTypes = []any{ - (VNCStatus)(0), // 0: session.v1.VNCStatus - (CDPStatus)(0), // 1: session.v1.CDPStatus - (SessionStatus)(0), // 2: session.v1.SessionStatus - (SessionType)(0), // 3: session.v1.SessionType - (InstanceType)(0), // 4: session.v1.InstanceType - (DetectedStatus)(0), // 5: session.v1.DetectedStatus - (WorkingState)(0), // 6: session.v1.WorkingState - (SubStatus)(0), // 7: session.v1.SubStatus - (RateLimitState)(0), // 8: session.v1.RateLimitState - (Priority)(0), // 9: session.v1.Priority - (AttentionReason)(0), // 10: session.v1.AttentionReason - (NotificationType)(0), // 11: session.v1.NotificationType - (NotificationPriority)(0), // 12: session.v1.NotificationPriority - (VCSType)(0), // 13: session.v1.VCSType - (FileStatus)(0), // 14: session.v1.FileStatus - (WorkspaceSwitchType)(0), // 15: session.v1.WorkspaceSwitchType - (ChangeStrategy)(0), // 16: session.v1.ChangeStrategy - (AutoDecision)(0), // 17: session.v1.AutoDecision - (ScanStatus)(0), // 18: session.v1.ScanStatus - (SessionSummaryStatus)(0), // 19: session.v1.SessionSummaryStatus - (ShellStatus)(0), // 20: session.v1.ShellStatus - (SuggestionSource)(0), // 21: session.v1.SuggestionSource - (*Session)(nil), // 22: session.v1.Session - (*SessionArtifacts)(nil), // 23: session.v1.SessionArtifacts - (*SessionGoalSummary)(nil), // 24: session.v1.SessionGoalSummary - (*VNCState)(nil), // 25: session.v1.VNCState - (*CDPState)(nil), // 26: session.v1.CDPState - (*ExternalInstanceMetadata)(nil), // 27: session.v1.ExternalInstanceMetadata - (*DiffStats)(nil), // 28: session.v1.DiffStats - (*GitWorktree)(nil), // 29: session.v1.GitWorktree - (*ClaudeSession)(nil), // 30: session.v1.ClaudeSession - (*ClaudeSettings)(nil), // 31: session.v1.ClaudeSettings - (*ReviewItem)(nil), // 32: session.v1.ReviewItem - (*PRInfo)(nil), // 33: session.v1.PRInfo - (*PRComment)(nil), // 34: session.v1.PRComment - (*ReviewQueue)(nil), // 35: session.v1.ReviewQueue - (*Notification)(nil), // 36: session.v1.Notification - (*FileChange)(nil), // 37: session.v1.FileChange - (*VCSStatus)(nil), // 38: session.v1.VCSStatus - (*BookmarkTarget)(nil), // 39: session.v1.BookmarkTarget - (*RevisionTarget)(nil), // 40: session.v1.RevisionTarget - (*WorktreeTarget)(nil), // 41: session.v1.WorktreeTarget - (*AvailableWorkspaceTargets)(nil), // 42: session.v1.AvailableWorkspaceTargets - (*VCSInfo)(nil), // 43: session.v1.VCSInfo - (*PendingApprovalProto)(nil), // 44: session.v1.PendingApprovalProto - (*ApprovalRuleProto)(nil), // 45: session.v1.ApprovalRuleProto - (*AnalyticsSummaryProto)(nil), // 46: session.v1.AnalyticsSummaryProto - (*ToolStatProto)(nil), // 47: session.v1.ToolStatProto - (*CommandStatProto)(nil), // 48: session.v1.CommandStatProto - (*RuleStatProto)(nil), // 49: session.v1.RuleStatProto - (*ProgramStatProto)(nil), // 50: session.v1.ProgramStatProto - (*ImportStatProto)(nil), // 51: session.v1.ImportStatProto - (*SubcommandStatProto)(nil), // 52: session.v1.SubcommandStatProto - (*DailyBucketProto)(nil), // 53: session.v1.DailyBucketProto - (*SubcommandBreakdownProto)(nil), // 54: session.v1.SubcommandBreakdownProto - (*DatabaseInfo)(nil), // 55: session.v1.DatabaseInfo - (*FileNode)(nil), // 56: session.v1.FileNode - (*CheckpointProto)(nil), // 57: session.v1.CheckpointProto - (*UnfinishedWorktree)(nil), // 58: session.v1.UnfinishedWorktree - (*UnfinishedWorkConfig)(nil), // 59: session.v1.UnfinishedWorkConfig - (*Shell)(nil), // 60: session.v1.Shell - (*SuggestedRuleProto)(nil), // 61: session.v1.SuggestedRuleProto - (*UserPR)(nil), // 62: session.v1.UserPR - nil, // 63: session.v1.ClaudeSession.MetadataEntry - nil, // 64: session.v1.ReviewItem.MetadataEntry - nil, // 65: session.v1.ReviewQueue.ByPriorityEntry - nil, // 66: session.v1.ReviewQueue.ByReasonEntry - nil, // 67: session.v1.Notification.MetadataEntry - nil, // 68: session.v1.PendingApprovalProto.ToolInputEntry - nil, // 69: session.v1.AnalyticsSummaryProto.DecisionCountsEntry - nil, // 70: session.v1.AnalyticsSummaryProto.EscalationReasonCountsEntry - nil, // 71: session.v1.AnalyticsSummaryProto.RiskLevelCountsEntry - (*timestamppb.Timestamp)(nil), // 72: google.protobuf.Timestamp -} -var file_session_v1_types_proto_depIdxs = []int32{ - 2, // 0: session.v1.Session.status:type_name -> session.v1.SessionStatus - 72, // 1: session.v1.Session.created_at:type_name -> google.protobuf.Timestamp - 72, // 2: session.v1.Session.updated_at:type_name -> google.protobuf.Timestamp - 72, // 3: session.v1.Session.last_terminal_update:type_name -> google.protobuf.Timestamp - 72, // 4: session.v1.Session.last_meaningful_output:type_name -> google.protobuf.Timestamp - 3, // 5: session.v1.Session.session_type:type_name -> session.v1.SessionType - 28, // 6: session.v1.Session.diff_stats:type_name -> session.v1.DiffStats - 29, // 7: session.v1.Session.git_worktree:type_name -> session.v1.GitWorktree - 30, // 8: session.v1.Session.claude_session:type_name -> session.v1.ClaudeSession - 4, // 9: session.v1.Session.instance_type:type_name -> session.v1.InstanceType - 27, // 10: session.v1.Session.external_metadata:type_name -> session.v1.ExternalInstanceMetadata - 72, // 11: session.v1.Session.last_pr_status_check:type_name -> google.protobuf.Timestamp - 8, // 12: session.v1.Session.rate_limit_state:type_name -> session.v1.RateLimitState - 72, // 13: session.v1.Session.rate_limit_reset_time:type_name -> google.protobuf.Timestamp - 6, // 14: session.v1.Session.working_state:type_name -> session.v1.WorkingState - 25, // 15: session.v1.Session.vnc_state:type_name -> session.v1.VNCState - 26, // 16: session.v1.Session.cdp_state:type_name -> session.v1.CDPState - 7, // 17: session.v1.Session.sub_status:type_name -> session.v1.SubStatus - 24, // 18: session.v1.Session.goal:type_name -> session.v1.SessionGoalSummary - 72, // 19: session.v1.Session.archived_at:type_name -> google.protobuf.Timestamp - 5, // 20: session.v1.Session.detected_status:type_name -> session.v1.DetectedStatus - 23, // 21: session.v1.Session.artifacts:type_name -> session.v1.SessionArtifacts - 72, // 22: session.v1.SessionArtifacts.last_scanned_at:type_name -> google.protobuf.Timestamp - 72, // 23: session.v1.SessionGoalSummary.updated_at:type_name -> google.protobuf.Timestamp - 0, // 24: session.v1.VNCState.status:type_name -> session.v1.VNCStatus - 1, // 25: session.v1.CDPState.status:type_name -> session.v1.CDPStatus - 72, // 26: session.v1.ExternalInstanceMetadata.discovered_at:type_name -> google.protobuf.Timestamp - 72, // 27: session.v1.ExternalInstanceMetadata.last_seen:type_name -> google.protobuf.Timestamp - 72, // 28: session.v1.ClaudeSession.last_attached:type_name -> google.protobuf.Timestamp - 31, // 29: session.v1.ClaudeSession.settings:type_name -> session.v1.ClaudeSettings - 63, // 30: session.v1.ClaudeSession.metadata:type_name -> session.v1.ClaudeSession.MetadataEntry - 10, // 31: session.v1.ReviewItem.reason:type_name -> session.v1.AttentionReason - 9, // 32: session.v1.ReviewItem.priority:type_name -> session.v1.Priority - 72, // 33: session.v1.ReviewItem.detected_at:type_name -> google.protobuf.Timestamp - 64, // 34: session.v1.ReviewItem.metadata:type_name -> session.v1.ReviewItem.MetadataEntry - 2, // 35: session.v1.ReviewItem.status:type_name -> session.v1.SessionStatus - 28, // 36: session.v1.ReviewItem.diff_stats:type_name -> session.v1.DiffStats - 72, // 37: session.v1.ReviewItem.last_activity:type_name -> google.protobuf.Timestamp - 6, // 38: session.v1.ReviewItem.working_state:type_name -> session.v1.WorkingState - 7, // 39: session.v1.ReviewItem.sub_status:type_name -> session.v1.SubStatus - 72, // 40: session.v1.PRInfo.created_at:type_name -> google.protobuf.Timestamp - 72, // 41: session.v1.PRInfo.updated_at:type_name -> google.protobuf.Timestamp - 72, // 42: session.v1.PRComment.created_at:type_name -> google.protobuf.Timestamp - 32, // 43: session.v1.ReviewQueue.items:type_name -> session.v1.ReviewItem - 65, // 44: session.v1.ReviewQueue.by_priority:type_name -> session.v1.ReviewQueue.ByPriorityEntry - 66, // 45: session.v1.ReviewQueue.by_reason:type_name -> session.v1.ReviewQueue.ByReasonEntry - 11, // 46: session.v1.Notification.notification_type:type_name -> session.v1.NotificationType - 12, // 47: session.v1.Notification.priority:type_name -> session.v1.NotificationPriority - 72, // 48: session.v1.Notification.timestamp:type_name -> google.protobuf.Timestamp - 67, // 49: session.v1.Notification.metadata:type_name -> session.v1.Notification.MetadataEntry - 14, // 50: session.v1.FileChange.status:type_name -> session.v1.FileStatus - 13, // 51: session.v1.VCSStatus.type:type_name -> session.v1.VCSType - 37, // 52: session.v1.VCSStatus.staged_files:type_name -> session.v1.FileChange - 37, // 53: session.v1.VCSStatus.unstaged_files:type_name -> session.v1.FileChange - 37, // 54: session.v1.VCSStatus.untracked_files:type_name -> session.v1.FileChange - 37, // 55: session.v1.VCSStatus.conflict_files:type_name -> session.v1.FileChange - 72, // 56: session.v1.RevisionTarget.timestamp:type_name -> google.protobuf.Timestamp - 13, // 57: session.v1.AvailableWorkspaceTargets.vcs_type:type_name -> session.v1.VCSType - 39, // 58: session.v1.AvailableWorkspaceTargets.bookmarks:type_name -> session.v1.BookmarkTarget - 40, // 59: session.v1.AvailableWorkspaceTargets.recent_revisions:type_name -> session.v1.RevisionTarget - 41, // 60: session.v1.AvailableWorkspaceTargets.worktrees:type_name -> session.v1.WorktreeTarget - 13, // 61: session.v1.VCSInfo.vcs_type:type_name -> session.v1.VCSType - 68, // 62: session.v1.PendingApprovalProto.tool_input:type_name -> session.v1.PendingApprovalProto.ToolInputEntry - 72, // 63: session.v1.PendingApprovalProto.created_at:type_name -> google.protobuf.Timestamp - 72, // 64: session.v1.PendingApprovalProto.expires_at:type_name -> google.protobuf.Timestamp - 17, // 65: session.v1.ApprovalRuleProto.decision:type_name -> session.v1.AutoDecision - 72, // 66: session.v1.ApprovalRuleProto.created_at:type_name -> google.protobuf.Timestamp - 69, // 67: session.v1.AnalyticsSummaryProto.decision_counts:type_name -> session.v1.AnalyticsSummaryProto.DecisionCountsEntry - 47, // 68: session.v1.AnalyticsSummaryProto.top_tools:type_name -> session.v1.ToolStatProto - 48, // 69: session.v1.AnalyticsSummaryProto.top_denied_commands:type_name -> session.v1.CommandStatProto - 49, // 70: session.v1.AnalyticsSummaryProto.top_triggered_rules:type_name -> session.v1.RuleStatProto - 72, // 71: session.v1.AnalyticsSummaryProto.window_start:type_name -> google.protobuf.Timestamp - 72, // 72: session.v1.AnalyticsSummaryProto.window_end:type_name -> google.protobuf.Timestamp - 50, // 73: session.v1.AnalyticsSummaryProto.top_command_programs:type_name -> session.v1.ProgramStatProto - 51, // 74: session.v1.AnalyticsSummaryProto.top_python_imports:type_name -> session.v1.ImportStatProto - 47, // 75: session.v1.AnalyticsSummaryProto.top_uncovered_tools:type_name -> session.v1.ToolStatProto - 50, // 76: session.v1.AnalyticsSummaryProto.top_uncovered_programs:type_name -> session.v1.ProgramStatProto - 52, // 77: session.v1.AnalyticsSummaryProto.command_subcommand_stats:type_name -> session.v1.SubcommandStatProto - 70, // 78: session.v1.AnalyticsSummaryProto.escalation_reason_counts:type_name -> session.v1.AnalyticsSummaryProto.EscalationReasonCountsEntry - 71, // 79: session.v1.AnalyticsSummaryProto.risk_level_counts:type_name -> session.v1.AnalyticsSummaryProto.RiskLevelCountsEntry - 72, // 80: session.v1.DatabaseInfo.last_used:type_name -> google.protobuf.Timestamp - 72, // 81: session.v1.CheckpointProto.timestamp:type_name -> google.protobuf.Timestamp - 72, // 82: session.v1.UnfinishedWorktree.last_modified:type_name -> google.protobuf.Timestamp - 72, // 83: session.v1.UnfinishedWorktree.scan_time:type_name -> google.protobuf.Timestamp - 18, // 84: session.v1.UnfinishedWorktree.scan_status:type_name -> session.v1.ScanStatus - 20, // 85: session.v1.Shell.status:type_name -> session.v1.ShellStatus - 72, // 86: session.v1.Shell.started_at:type_name -> google.protobuf.Timestamp - 72, // 87: session.v1.Shell.stopped_at:type_name -> google.protobuf.Timestamp - 17, // 88: session.v1.SuggestedRuleProto.decision:type_name -> session.v1.AutoDecision - 72, // 89: session.v1.UserPR.updated_at:type_name -> google.protobuf.Timestamp - 72, // 90: session.v1.UserPR.closed_at:type_name -> google.protobuf.Timestamp - 72, // 91: session.v1.UserPR.merged_at:type_name -> google.protobuf.Timestamp - 92, // [92:92] is the sub-list for method output_type - 92, // [92:92] is the sub-list for method input_type - 92, // [92:92] is the sub-list for extension type_name - 92, // [92:92] is the sub-list for extension extendee - 0, // [0:92] is the sub-list for field type_name -} - -func init() { file_session_v1_types_proto_init() } -func file_session_v1_types_proto_init() { - if File_session_v1_types_proto != nil { - return - } - file_session_v1_types_proto_msgTypes[12].OneofWrappers = []any{} - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_session_v1_types_proto_rawDesc), len(file_session_v1_types_proto_rawDesc)), - NumEnums: 22, - NumMessages: 50, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_session_v1_types_proto_goTypes, - DependencyIndexes: file_session_v1_types_proto_depIdxs, - EnumInfos: file_session_v1_types_proto_enumTypes, - MessageInfos: file_session_v1_types_proto_msgTypes, - }.Build() - File_session_v1_types_proto = out.File - file_session_v1_types_proto_goTypes = nil - file_session_v1_types_proto_depIdxs = nil -} diff --git a/gen/proto/go/session/v1/unfinished.pb.go b/gen/proto/go/session/v1/unfinished.pb.go deleted file mode 100644 index 30c8ac548..000000000 --- a/gen/proto/go/session/v1/unfinished.pb.go +++ /dev/null @@ -1,1311 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.12 -// protoc (unknown) -// source: session/v1/unfinished.proto - -package sessionv1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type ListUnfinishedWorkRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListUnfinishedWorkRequest) Reset() { - *x = ListUnfinishedWorkRequest{} - mi := &file_session_v1_unfinished_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListUnfinishedWorkRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListUnfinishedWorkRequest) ProtoMessage() {} - -func (x *ListUnfinishedWorkRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListUnfinishedWorkRequest.ProtoReflect.Descriptor instead. -func (*ListUnfinishedWorkRequest) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{0} -} - -type ListUnfinishedWorkResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Worktrees []*UnfinishedWorktree `protobuf:"bytes,1,rep,name=worktrees,proto3" json:"worktrees,omitempty"` - LastScan *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_scan,json=lastScan,proto3" json:"last_scan,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListUnfinishedWorkResponse) Reset() { - *x = ListUnfinishedWorkResponse{} - mi := &file_session_v1_unfinished_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListUnfinishedWorkResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListUnfinishedWorkResponse) ProtoMessage() {} - -func (x *ListUnfinishedWorkResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListUnfinishedWorkResponse.ProtoReflect.Descriptor instead. -func (*ListUnfinishedWorkResponse) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{1} -} - -func (x *ListUnfinishedWorkResponse) GetWorktrees() []*UnfinishedWorktree { - if x != nil { - return x.Worktrees - } - return nil -} - -func (x *ListUnfinishedWorkResponse) GetLastScan() *timestamppb.Timestamp { - if x != nil { - return x.LastScan - } - return nil -} - -type WatchUnfinishedWorkRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *WatchUnfinishedWorkRequest) Reset() { - *x = WatchUnfinishedWorkRequest{} - mi := &file_session_v1_unfinished_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WatchUnfinishedWorkRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WatchUnfinishedWorkRequest) ProtoMessage() {} - -func (x *WatchUnfinishedWorkRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WatchUnfinishedWorkRequest.ProtoReflect.Descriptor instead. -func (*WatchUnfinishedWorkRequest) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{2} -} - -type UnfinishedWorkEvent struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Payload: - // - // *UnfinishedWorkEvent_WorktreeUpdated - // *UnfinishedWorkEvent_WorktreeRemoved - // *UnfinishedWorkEvent_ScanCompleted - Payload isUnfinishedWorkEvent_Payload `protobuf_oneof:"payload"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UnfinishedWorkEvent) Reset() { - *x = UnfinishedWorkEvent{} - mi := &file_session_v1_unfinished_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UnfinishedWorkEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UnfinishedWorkEvent) ProtoMessage() {} - -func (x *UnfinishedWorkEvent) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UnfinishedWorkEvent.ProtoReflect.Descriptor instead. -func (*UnfinishedWorkEvent) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{3} -} - -func (x *UnfinishedWorkEvent) GetPayload() isUnfinishedWorkEvent_Payload { - if x != nil { - return x.Payload - } - return nil -} - -func (x *UnfinishedWorkEvent) GetWorktreeUpdated() *UnfinishedWorktree { - if x != nil { - if x, ok := x.Payload.(*UnfinishedWorkEvent_WorktreeUpdated); ok { - return x.WorktreeUpdated - } - } - return nil -} - -func (x *UnfinishedWorkEvent) GetWorktreeRemoved() *UnfinishedWorktree { - if x != nil { - if x, ok := x.Payload.(*UnfinishedWorkEvent_WorktreeRemoved); ok { - return x.WorktreeRemoved - } - } - return nil -} - -func (x *UnfinishedWorkEvent) GetScanCompleted() *ScanCompleted { - if x != nil { - if x, ok := x.Payload.(*UnfinishedWorkEvent_ScanCompleted); ok { - return x.ScanCompleted - } - } - return nil -} - -type isUnfinishedWorkEvent_Payload interface { - isUnfinishedWorkEvent_Payload() -} - -type UnfinishedWorkEvent_WorktreeUpdated struct { - WorktreeUpdated *UnfinishedWorktree `protobuf:"bytes,1,opt,name=worktree_updated,json=worktreeUpdated,proto3,oneof"` -} - -type UnfinishedWorkEvent_WorktreeRemoved struct { - WorktreeRemoved *UnfinishedWorktree `protobuf:"bytes,2,opt,name=worktree_removed,json=worktreeRemoved,proto3,oneof"` -} - -type UnfinishedWorkEvent_ScanCompleted struct { - ScanCompleted *ScanCompleted `protobuf:"bytes,3,opt,name=scan_completed,json=scanCompleted,proto3,oneof"` -} - -func (*UnfinishedWorkEvent_WorktreeUpdated) isUnfinishedWorkEvent_Payload() {} - -func (*UnfinishedWorkEvent_WorktreeRemoved) isUnfinishedWorkEvent_Payload() {} - -func (*UnfinishedWorkEvent_ScanCompleted) isUnfinishedWorkEvent_Payload() {} - -type ScanCompleted struct { - state protoimpl.MessageState `protogen:"open.v1"` - CompletedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ScanCompleted) Reset() { - *x = ScanCompleted{} - mi := &file_session_v1_unfinished_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ScanCompleted) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ScanCompleted) ProtoMessage() {} - -func (x *ScanCompleted) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ScanCompleted.ProtoReflect.Descriptor instead. -func (*ScanCompleted) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{4} -} - -func (x *ScanCompleted) GetCompletedAt() *timestamppb.Timestamp { - if x != nil { - return x.CompletedAt - } - return nil -} - -type ScanUnfinishedWorkRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ScanUnfinishedWorkRequest) Reset() { - *x = ScanUnfinishedWorkRequest{} - mi := &file_session_v1_unfinished_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ScanUnfinishedWorkRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ScanUnfinishedWorkRequest) ProtoMessage() {} - -func (x *ScanUnfinishedWorkRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ScanUnfinishedWorkRequest.ProtoReflect.Descriptor instead. -func (*ScanUnfinishedWorkRequest) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{5} -} - -type ScanUnfinishedWorkResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - ScanStartedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=scan_started_at,json=scanStartedAt,proto3" json:"scan_started_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ScanUnfinishedWorkResponse) Reset() { - *x = ScanUnfinishedWorkResponse{} - mi := &file_session_v1_unfinished_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ScanUnfinishedWorkResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ScanUnfinishedWorkResponse) ProtoMessage() {} - -func (x *ScanUnfinishedWorkResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ScanUnfinishedWorkResponse.ProtoReflect.Descriptor instead. -func (*ScanUnfinishedWorkResponse) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{6} -} - -func (x *ScanUnfinishedWorkResponse) GetScanStartedAt() *timestamppb.Timestamp { - if x != nil { - return x.ScanStartedAt - } - return nil -} - -type DismissWorktreeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - RepoPath string `protobuf:"bytes,1,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DismissWorktreeRequest) Reset() { - *x = DismissWorktreeRequest{} - mi := &file_session_v1_unfinished_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DismissWorktreeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DismissWorktreeRequest) ProtoMessage() {} - -func (x *DismissWorktreeRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DismissWorktreeRequest.ProtoReflect.Descriptor instead. -func (*DismissWorktreeRequest) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{7} -} - -func (x *DismissWorktreeRequest) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *DismissWorktreeRequest) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -type DismissWorktreeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DismissWorktreeResponse) Reset() { - *x = DismissWorktreeResponse{} - mi := &file_session_v1_unfinished_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DismissWorktreeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DismissWorktreeResponse) ProtoMessage() {} - -func (x *DismissWorktreeResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DismissWorktreeResponse.ProtoReflect.Descriptor instead. -func (*DismissWorktreeResponse) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{8} -} - -type UndismissWorktreeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - RepoPath string `protobuf:"bytes,1,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UndismissWorktreeRequest) Reset() { - *x = UndismissWorktreeRequest{} - mi := &file_session_v1_unfinished_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UndismissWorktreeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UndismissWorktreeRequest) ProtoMessage() {} - -func (x *UndismissWorktreeRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UndismissWorktreeRequest.ProtoReflect.Descriptor instead. -func (*UndismissWorktreeRequest) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{9} -} - -func (x *UndismissWorktreeRequest) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *UndismissWorktreeRequest) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -type UndismissWorktreeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UndismissWorktreeResponse) Reset() { - *x = UndismissWorktreeResponse{} - mi := &file_session_v1_unfinished_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UndismissWorktreeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UndismissWorktreeResponse) ProtoMessage() {} - -func (x *UndismissWorktreeResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UndismissWorktreeResponse.ProtoReflect.Descriptor instead. -func (*UndismissWorktreeResponse) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{10} -} - -type SnoozeWorktreeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - RepoPath string `protobuf:"bytes,1,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SnoozeWorktreeRequest) Reset() { - *x = SnoozeWorktreeRequest{} - mi := &file_session_v1_unfinished_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SnoozeWorktreeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SnoozeWorktreeRequest) ProtoMessage() {} - -func (x *SnoozeWorktreeRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SnoozeWorktreeRequest.ProtoReflect.Descriptor instead. -func (*SnoozeWorktreeRequest) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{11} -} - -func (x *SnoozeWorktreeRequest) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *SnoozeWorktreeRequest) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -type SnoozeWorktreeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SnoozeWorktreeResponse) Reset() { - *x = SnoozeWorktreeResponse{} - mi := &file_session_v1_unfinished_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SnoozeWorktreeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SnoozeWorktreeResponse) ProtoMessage() {} - -func (x *SnoozeWorktreeResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SnoozeWorktreeResponse.ProtoReflect.Descriptor instead. -func (*SnoozeWorktreeResponse) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{12} -} - -type GetWorktreeAISummaryRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - RepoPath string `protobuf:"bytes,1,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetWorktreeAISummaryRequest) Reset() { - *x = GetWorktreeAISummaryRequest{} - mi := &file_session_v1_unfinished_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetWorktreeAISummaryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetWorktreeAISummaryRequest) ProtoMessage() {} - -func (x *GetWorktreeAISummaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetWorktreeAISummaryRequest.ProtoReflect.Descriptor instead. -func (*GetWorktreeAISummaryRequest) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{13} -} - -func (x *GetWorktreeAISummaryRequest) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *GetWorktreeAISummaryRequest) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -type GetWorktreeAISummaryResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` - FromCache bool `protobuf:"varint,2,opt,name=from_cache,json=fromCache,proto3" json:"from_cache,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetWorktreeAISummaryResponse) Reset() { - *x = GetWorktreeAISummaryResponse{} - mi := &file_session_v1_unfinished_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetWorktreeAISummaryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetWorktreeAISummaryResponse) ProtoMessage() {} - -func (x *GetWorktreeAISummaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetWorktreeAISummaryResponse.ProtoReflect.Descriptor instead. -func (*GetWorktreeAISummaryResponse) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{14} -} - -func (x *GetWorktreeAISummaryResponse) GetSummary() string { - if x != nil { - return x.Summary - } - return "" -} - -func (x *GetWorktreeAISummaryResponse) GetFromCache() bool { - if x != nil { - return x.FromCache - } - return false -} - -type QuickCommitPushRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - RepoPath string `protobuf:"bytes,1,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - CommitMessage string `protobuf:"bytes,3,opt,name=commit_message,json=commitMessage,proto3" json:"commit_message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *QuickCommitPushRequest) Reset() { - *x = QuickCommitPushRequest{} - mi := &file_session_v1_unfinished_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *QuickCommitPushRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QuickCommitPushRequest) ProtoMessage() {} - -func (x *QuickCommitPushRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QuickCommitPushRequest.ProtoReflect.Descriptor instead. -func (*QuickCommitPushRequest) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{15} -} - -func (x *QuickCommitPushRequest) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *QuickCommitPushRequest) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -func (x *QuickCommitPushRequest) GetCommitMessage() string { - if x != nil { - return x.CommitMessage - } - return "" -} - -type QuickCommitPushResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *QuickCommitPushResponse) Reset() { - *x = QuickCommitPushResponse{} - mi := &file_session_v1_unfinished_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *QuickCommitPushResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QuickCommitPushResponse) ProtoMessage() {} - -func (x *QuickCommitPushResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QuickCommitPushResponse.ProtoReflect.Descriptor instead. -func (*QuickCommitPushResponse) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{16} -} - -func (x *QuickCommitPushResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *QuickCommitPushResponse) GetErrorMessage() string { - if x != nil { - return x.ErrorMessage - } - return "" -} - -type GetUnfinishedWorkConfigRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetUnfinishedWorkConfigRequest) Reset() { - *x = GetUnfinishedWorkConfigRequest{} - mi := &file_session_v1_unfinished_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetUnfinishedWorkConfigRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUnfinishedWorkConfigRequest) ProtoMessage() {} - -func (x *GetUnfinishedWorkConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[17] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUnfinishedWorkConfigRequest.ProtoReflect.Descriptor instead. -func (*GetUnfinishedWorkConfigRequest) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{17} -} - -type GetUnfinishedWorkConfigResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Config *UnfinishedWorkConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetUnfinishedWorkConfigResponse) Reset() { - *x = GetUnfinishedWorkConfigResponse{} - mi := &file_session_v1_unfinished_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetUnfinishedWorkConfigResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetUnfinishedWorkConfigResponse) ProtoMessage() {} - -func (x *GetUnfinishedWorkConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[18] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetUnfinishedWorkConfigResponse.ProtoReflect.Descriptor instead. -func (*GetUnfinishedWorkConfigResponse) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{18} -} - -func (x *GetUnfinishedWorkConfigResponse) GetConfig() *UnfinishedWorkConfig { - if x != nil { - return x.Config - } - return nil -} - -type UpdateUnfinishedWorkConfigRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Config *UnfinishedWorkConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateUnfinishedWorkConfigRequest) Reset() { - *x = UpdateUnfinishedWorkConfigRequest{} - mi := &file_session_v1_unfinished_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateUnfinishedWorkConfigRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateUnfinishedWorkConfigRequest) ProtoMessage() {} - -func (x *UpdateUnfinishedWorkConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[19] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateUnfinishedWorkConfigRequest.ProtoReflect.Descriptor instead. -func (*UpdateUnfinishedWorkConfigRequest) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{19} -} - -func (x *UpdateUnfinishedWorkConfigRequest) GetConfig() *UnfinishedWorkConfig { - if x != nil { - return x.Config - } - return nil -} - -type UpdateUnfinishedWorkConfigResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Config *UnfinishedWorkConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateUnfinishedWorkConfigResponse) Reset() { - *x = UpdateUnfinishedWorkConfigResponse{} - mi := &file_session_v1_unfinished_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateUnfinishedWorkConfigResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateUnfinishedWorkConfigResponse) ProtoMessage() {} - -func (x *UpdateUnfinishedWorkConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateUnfinishedWorkConfigResponse.ProtoReflect.Descriptor instead. -func (*UpdateUnfinishedWorkConfigResponse) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{20} -} - -func (x *UpdateUnfinishedWorkConfigResponse) GetConfig() *UnfinishedWorkConfig { - if x != nil { - return x.Config - } - return nil -} - -type GetWorktreeDiffRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - RepoPath string `protobuf:"bytes,1,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetWorktreeDiffRequest) Reset() { - *x = GetWorktreeDiffRequest{} - mi := &file_session_v1_unfinished_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetWorktreeDiffRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetWorktreeDiffRequest) ProtoMessage() {} - -func (x *GetWorktreeDiffRequest) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetWorktreeDiffRequest.ProtoReflect.Descriptor instead. -func (*GetWorktreeDiffRequest) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{21} -} - -func (x *GetWorktreeDiffRequest) GetRepoPath() string { - if x != nil { - return x.RepoPath - } - return "" -} - -func (x *GetWorktreeDiffRequest) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -type GetWorktreeDiffResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - DiffStats *DiffStats `protobuf:"bytes,1,opt,name=diff_stats,json=diffStats,proto3" json:"diff_stats,omitempty"` - Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetWorktreeDiffResponse) Reset() { - *x = GetWorktreeDiffResponse{} - mi := &file_session_v1_unfinished_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetWorktreeDiffResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetWorktreeDiffResponse) ProtoMessage() {} - -func (x *GetWorktreeDiffResponse) ProtoReflect() protoreflect.Message { - mi := &file_session_v1_unfinished_proto_msgTypes[22] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetWorktreeDiffResponse.ProtoReflect.Descriptor instead. -func (*GetWorktreeDiffResponse) Descriptor() ([]byte, []int) { - return file_session_v1_unfinished_proto_rawDescGZIP(), []int{22} -} - -func (x *GetWorktreeDiffResponse) GetDiffStats() *DiffStats { - if x != nil { - return x.DiffStats - } - return nil -} - -func (x *GetWorktreeDiffResponse) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -var File_session_v1_unfinished_proto protoreflect.FileDescriptor - -const file_session_v1_unfinished_proto_rawDesc = "" + - "\n" + - "\x1bsession/v1/unfinished.proto\x12\n" + - "session.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x16session/v1/types.proto\"\x1b\n" + - "\x19ListUnfinishedWorkRequest\"\x93\x01\n" + - "\x1aListUnfinishedWorkResponse\x12<\n" + - "\tworktrees\x18\x01 \x03(\v2\x1e.session.v1.UnfinishedWorktreeR\tworktrees\x127\n" + - "\tlast_scan\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\blastScan\"\x1c\n" + - "\x1aWatchUnfinishedWorkRequest\"\xfe\x01\n" + - "\x13UnfinishedWorkEvent\x12K\n" + - "\x10worktree_updated\x18\x01 \x01(\v2\x1e.session.v1.UnfinishedWorktreeH\x00R\x0fworktreeUpdated\x12K\n" + - "\x10worktree_removed\x18\x02 \x01(\v2\x1e.session.v1.UnfinishedWorktreeH\x00R\x0fworktreeRemoved\x12B\n" + - "\x0escan_completed\x18\x03 \x01(\v2\x19.session.v1.ScanCompletedH\x00R\rscanCompletedB\t\n" + - "\apayload\"N\n" + - "\rScanCompleted\x12=\n" + - "\fcompleted_at\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\"\x1b\n" + - "\x19ScanUnfinishedWorkRequest\"`\n" + - "\x1aScanUnfinishedWorkResponse\x12B\n" + - "\x0fscan_started_at\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\rscanStartedAt\"M\n" + - "\x16DismissWorktreeRequest\x12\x1b\n" + - "\trepo_path\x18\x01 \x01(\tR\brepoPath\x12\x16\n" + - "\x06branch\x18\x02 \x01(\tR\x06branch\"\x19\n" + - "\x17DismissWorktreeResponse\"O\n" + - "\x18UndismissWorktreeRequest\x12\x1b\n" + - "\trepo_path\x18\x01 \x01(\tR\brepoPath\x12\x16\n" + - "\x06branch\x18\x02 \x01(\tR\x06branch\"\x1b\n" + - "\x19UndismissWorktreeResponse\"L\n" + - "\x15SnoozeWorktreeRequest\x12\x1b\n" + - "\trepo_path\x18\x01 \x01(\tR\brepoPath\x12\x16\n" + - "\x06branch\x18\x02 \x01(\tR\x06branch\"\x18\n" + - "\x16SnoozeWorktreeResponse\"R\n" + - "\x1bGetWorktreeAISummaryRequest\x12\x1b\n" + - "\trepo_path\x18\x01 \x01(\tR\brepoPath\x12\x16\n" + - "\x06branch\x18\x02 \x01(\tR\x06branch\"W\n" + - "\x1cGetWorktreeAISummaryResponse\x12\x18\n" + - "\asummary\x18\x01 \x01(\tR\asummary\x12\x1d\n" + - "\n" + - "from_cache\x18\x02 \x01(\bR\tfromCache\"t\n" + - "\x16QuickCommitPushRequest\x12\x1b\n" + - "\trepo_path\x18\x01 \x01(\tR\brepoPath\x12\x16\n" + - "\x06branch\x18\x02 \x01(\tR\x06branch\x12%\n" + - "\x0ecommit_message\x18\x03 \x01(\tR\rcommitMessage\"X\n" + - "\x17QuickCommitPushResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12#\n" + - "\rerror_message\x18\x02 \x01(\tR\ferrorMessage\" \n" + - "\x1eGetUnfinishedWorkConfigRequest\"[\n" + - "\x1fGetUnfinishedWorkConfigResponse\x128\n" + - "\x06config\x18\x01 \x01(\v2 .session.v1.UnfinishedWorkConfigR\x06config\"]\n" + - "!UpdateUnfinishedWorkConfigRequest\x128\n" + - "\x06config\x18\x01 \x01(\v2 .session.v1.UnfinishedWorkConfigR\x06config\"^\n" + - "\"UpdateUnfinishedWorkConfigResponse\x128\n" + - "\x06config\x18\x01 \x01(\v2 .session.v1.UnfinishedWorkConfigR\x06config\"M\n" + - "\x16GetWorktreeDiffRequest\x12\x1b\n" + - "\trepo_path\x18\x01 \x01(\tR\brepoPath\x12\x16\n" + - "\x06branch\x18\x02 \x01(\tR\x06branch\"e\n" + - "\x17GetWorktreeDiffResponse\x124\n" + - "\n" + - "diff_stats\x18\x01 \x01(\v2\x15.session.v1.DiffStatsR\tdiffStats\x12\x14\n" + - "\x05error\x18\x02 \x01(\tR\x05error2\x84\t\n" + - "\x15UnfinishedWorkService\x12e\n" + - "\x12ListUnfinishedWork\x12%.session.v1.ListUnfinishedWorkRequest\x1a&.session.v1.ListUnfinishedWorkResponse\"\x00\x12b\n" + - "\x13WatchUnfinishedWork\x12&.session.v1.WatchUnfinishedWorkRequest\x1a\x1f.session.v1.UnfinishedWorkEvent\"\x000\x01\x12e\n" + - "\x12ScanUnfinishedWork\x12%.session.v1.ScanUnfinishedWorkRequest\x1a&.session.v1.ScanUnfinishedWorkResponse\"\x00\x12\\\n" + - "\x0fDismissWorktree\x12\".session.v1.DismissWorktreeRequest\x1a#.session.v1.DismissWorktreeResponse\"\x00\x12b\n" + - "\x11UndismissWorktree\x12$.session.v1.UndismissWorktreeRequest\x1a%.session.v1.UndismissWorktreeResponse\"\x00\x12Y\n" + - "\x0eSnoozeWorktree\x12!.session.v1.SnoozeWorktreeRequest\x1a\".session.v1.SnoozeWorktreeResponse\"\x00\x12k\n" + - "\x14GetWorktreeAISummary\x12'.session.v1.GetWorktreeAISummaryRequest\x1a(.session.v1.GetWorktreeAISummaryResponse\"\x00\x12\\\n" + - "\x0fGetWorktreeDiff\x12\".session.v1.GetWorktreeDiffRequest\x1a#.session.v1.GetWorktreeDiffResponse\"\x00\x12\\\n" + - "\x0fQuickCommitPush\x12\".session.v1.QuickCommitPushRequest\x1a#.session.v1.QuickCommitPushResponse\"\x00\x12t\n" + - "\x17GetUnfinishedWorkConfig\x12*.session.v1.GetUnfinishedWorkConfigRequest\x1a+.session.v1.GetUnfinishedWorkConfigResponse\"\x00\x12}\n" + - "\x1aUpdateUnfinishedWorkConfig\x12-.session.v1.UpdateUnfinishedWorkConfigRequest\x1a..session.v1.UpdateUnfinishedWorkConfigResponse\"\x00B\xaf\x01\n" + - "\x0ecom.session.v1B\x0fUnfinishedProtoP\x01ZCgithub.com/tstapler/stapler-squad/gen/proto/go/session/v1;sessionv1\xa2\x02\x03SXX\xaa\x02\n" + - "Session.V1\xca\x02\n" + - "Session\\V1\xe2\x02\x16Session\\V1\\GPBMetadata\xea\x02\vSession::V1b\x06proto3" - -var ( - file_session_v1_unfinished_proto_rawDescOnce sync.Once - file_session_v1_unfinished_proto_rawDescData []byte -) - -func file_session_v1_unfinished_proto_rawDescGZIP() []byte { - file_session_v1_unfinished_proto_rawDescOnce.Do(func() { - file_session_v1_unfinished_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_session_v1_unfinished_proto_rawDesc), len(file_session_v1_unfinished_proto_rawDesc))) - }) - return file_session_v1_unfinished_proto_rawDescData -} - -var file_session_v1_unfinished_proto_msgTypes = make([]protoimpl.MessageInfo, 23) -var file_session_v1_unfinished_proto_goTypes = []any{ - (*ListUnfinishedWorkRequest)(nil), // 0: session.v1.ListUnfinishedWorkRequest - (*ListUnfinishedWorkResponse)(nil), // 1: session.v1.ListUnfinishedWorkResponse - (*WatchUnfinishedWorkRequest)(nil), // 2: session.v1.WatchUnfinishedWorkRequest - (*UnfinishedWorkEvent)(nil), // 3: session.v1.UnfinishedWorkEvent - (*ScanCompleted)(nil), // 4: session.v1.ScanCompleted - (*ScanUnfinishedWorkRequest)(nil), // 5: session.v1.ScanUnfinishedWorkRequest - (*ScanUnfinishedWorkResponse)(nil), // 6: session.v1.ScanUnfinishedWorkResponse - (*DismissWorktreeRequest)(nil), // 7: session.v1.DismissWorktreeRequest - (*DismissWorktreeResponse)(nil), // 8: session.v1.DismissWorktreeResponse - (*UndismissWorktreeRequest)(nil), // 9: session.v1.UndismissWorktreeRequest - (*UndismissWorktreeResponse)(nil), // 10: session.v1.UndismissWorktreeResponse - (*SnoozeWorktreeRequest)(nil), // 11: session.v1.SnoozeWorktreeRequest - (*SnoozeWorktreeResponse)(nil), // 12: session.v1.SnoozeWorktreeResponse - (*GetWorktreeAISummaryRequest)(nil), // 13: session.v1.GetWorktreeAISummaryRequest - (*GetWorktreeAISummaryResponse)(nil), // 14: session.v1.GetWorktreeAISummaryResponse - (*QuickCommitPushRequest)(nil), // 15: session.v1.QuickCommitPushRequest - (*QuickCommitPushResponse)(nil), // 16: session.v1.QuickCommitPushResponse - (*GetUnfinishedWorkConfigRequest)(nil), // 17: session.v1.GetUnfinishedWorkConfigRequest - (*GetUnfinishedWorkConfigResponse)(nil), // 18: session.v1.GetUnfinishedWorkConfigResponse - (*UpdateUnfinishedWorkConfigRequest)(nil), // 19: session.v1.UpdateUnfinishedWorkConfigRequest - (*UpdateUnfinishedWorkConfigResponse)(nil), // 20: session.v1.UpdateUnfinishedWorkConfigResponse - (*GetWorktreeDiffRequest)(nil), // 21: session.v1.GetWorktreeDiffRequest - (*GetWorktreeDiffResponse)(nil), // 22: session.v1.GetWorktreeDiffResponse - (*UnfinishedWorktree)(nil), // 23: session.v1.UnfinishedWorktree - (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp - (*UnfinishedWorkConfig)(nil), // 25: session.v1.UnfinishedWorkConfig - (*DiffStats)(nil), // 26: session.v1.DiffStats -} -var file_session_v1_unfinished_proto_depIdxs = []int32{ - 23, // 0: session.v1.ListUnfinishedWorkResponse.worktrees:type_name -> session.v1.UnfinishedWorktree - 24, // 1: session.v1.ListUnfinishedWorkResponse.last_scan:type_name -> google.protobuf.Timestamp - 23, // 2: session.v1.UnfinishedWorkEvent.worktree_updated:type_name -> session.v1.UnfinishedWorktree - 23, // 3: session.v1.UnfinishedWorkEvent.worktree_removed:type_name -> session.v1.UnfinishedWorktree - 4, // 4: session.v1.UnfinishedWorkEvent.scan_completed:type_name -> session.v1.ScanCompleted - 24, // 5: session.v1.ScanCompleted.completed_at:type_name -> google.protobuf.Timestamp - 24, // 6: session.v1.ScanUnfinishedWorkResponse.scan_started_at:type_name -> google.protobuf.Timestamp - 25, // 7: session.v1.GetUnfinishedWorkConfigResponse.config:type_name -> session.v1.UnfinishedWorkConfig - 25, // 8: session.v1.UpdateUnfinishedWorkConfigRequest.config:type_name -> session.v1.UnfinishedWorkConfig - 25, // 9: session.v1.UpdateUnfinishedWorkConfigResponse.config:type_name -> session.v1.UnfinishedWorkConfig - 26, // 10: session.v1.GetWorktreeDiffResponse.diff_stats:type_name -> session.v1.DiffStats - 0, // 11: session.v1.UnfinishedWorkService.ListUnfinishedWork:input_type -> session.v1.ListUnfinishedWorkRequest - 2, // 12: session.v1.UnfinishedWorkService.WatchUnfinishedWork:input_type -> session.v1.WatchUnfinishedWorkRequest - 5, // 13: session.v1.UnfinishedWorkService.ScanUnfinishedWork:input_type -> session.v1.ScanUnfinishedWorkRequest - 7, // 14: session.v1.UnfinishedWorkService.DismissWorktree:input_type -> session.v1.DismissWorktreeRequest - 9, // 15: session.v1.UnfinishedWorkService.UndismissWorktree:input_type -> session.v1.UndismissWorktreeRequest - 11, // 16: session.v1.UnfinishedWorkService.SnoozeWorktree:input_type -> session.v1.SnoozeWorktreeRequest - 13, // 17: session.v1.UnfinishedWorkService.GetWorktreeAISummary:input_type -> session.v1.GetWorktreeAISummaryRequest - 21, // 18: session.v1.UnfinishedWorkService.GetWorktreeDiff:input_type -> session.v1.GetWorktreeDiffRequest - 15, // 19: session.v1.UnfinishedWorkService.QuickCommitPush:input_type -> session.v1.QuickCommitPushRequest - 17, // 20: session.v1.UnfinishedWorkService.GetUnfinishedWorkConfig:input_type -> session.v1.GetUnfinishedWorkConfigRequest - 19, // 21: session.v1.UnfinishedWorkService.UpdateUnfinishedWorkConfig:input_type -> session.v1.UpdateUnfinishedWorkConfigRequest - 1, // 22: session.v1.UnfinishedWorkService.ListUnfinishedWork:output_type -> session.v1.ListUnfinishedWorkResponse - 3, // 23: session.v1.UnfinishedWorkService.WatchUnfinishedWork:output_type -> session.v1.UnfinishedWorkEvent - 6, // 24: session.v1.UnfinishedWorkService.ScanUnfinishedWork:output_type -> session.v1.ScanUnfinishedWorkResponse - 8, // 25: session.v1.UnfinishedWorkService.DismissWorktree:output_type -> session.v1.DismissWorktreeResponse - 10, // 26: session.v1.UnfinishedWorkService.UndismissWorktree:output_type -> session.v1.UndismissWorktreeResponse - 12, // 27: session.v1.UnfinishedWorkService.SnoozeWorktree:output_type -> session.v1.SnoozeWorktreeResponse - 14, // 28: session.v1.UnfinishedWorkService.GetWorktreeAISummary:output_type -> session.v1.GetWorktreeAISummaryResponse - 22, // 29: session.v1.UnfinishedWorkService.GetWorktreeDiff:output_type -> session.v1.GetWorktreeDiffResponse - 16, // 30: session.v1.UnfinishedWorkService.QuickCommitPush:output_type -> session.v1.QuickCommitPushResponse - 18, // 31: session.v1.UnfinishedWorkService.GetUnfinishedWorkConfig:output_type -> session.v1.GetUnfinishedWorkConfigResponse - 20, // 32: session.v1.UnfinishedWorkService.UpdateUnfinishedWorkConfig:output_type -> session.v1.UpdateUnfinishedWorkConfigResponse - 22, // [22:33] is the sub-list for method output_type - 11, // [11:22] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name -} - -func init() { file_session_v1_unfinished_proto_init() } -func file_session_v1_unfinished_proto_init() { - if File_session_v1_unfinished_proto != nil { - return - } - file_session_v1_types_proto_init() - file_session_v1_unfinished_proto_msgTypes[3].OneofWrappers = []any{ - (*UnfinishedWorkEvent_WorktreeUpdated)(nil), - (*UnfinishedWorkEvent_WorktreeRemoved)(nil), - (*UnfinishedWorkEvent_ScanCompleted)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_session_v1_unfinished_proto_rawDesc), len(file_session_v1_unfinished_proto_rawDesc)), - NumEnums: 0, - NumMessages: 23, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_session_v1_unfinished_proto_goTypes, - DependencyIndexes: file_session_v1_unfinished_proto_depIdxs, - MessageInfos: file_session_v1_unfinished_proto_msgTypes, - }.Build() - File_session_v1_unfinished_proto = out.File - file_session_v1_unfinished_proto_goTypes = nil - file_session_v1_unfinished_proto_depIdxs = nil -} diff --git a/session/import_commit.go b/session/import_commit.go index 91b558657..b75efad20 100644 --- a/session/import_commit.go +++ b/session/import_commit.go @@ -60,6 +60,15 @@ type CommitImportParams struct { DisambiguationChoice string OriginalPID int32 OriginalCreateTimeMs int64 + + // TmuxServerSocket, when non-empty, isolates the committed instance's + // tmux server via the -L flag (see InstanceOptions.TmuxServerSocket). + // Empty (the production default) uses the shared default tmux server. + // Tests that exercise the real Start() path should set this to a unique + // per-test socket (matching instance_cold_restore_test.go's + // coldRestoreSocket pattern) to avoid contending with every other test's + // tmux operations on the single shared server under parallel CI load. + TmuxServerSocket string } // CommitImportResult is the domain-level outcome of a successful commit. @@ -127,10 +136,11 @@ func CommitImportExternalSession(ctx context.Context, params CommitImportParams) return CreateManagedInstance(ctx, CreateManagedInstanceParams{ Options: InstanceOptions{ - Title: importInstanceTitle(params.Candidate), - Path: params.Candidate.Path, - Program: params.Candidate.Program, - SessionType: SessionTypeDirectory, + Title: importInstanceTitle(params.Candidate), + Path: params.Candidate.Path, + Program: params.Candidate.Program, + SessionType: SessionTypeDirectory, + TmuxServerSocket: params.TmuxServerSocket, }, Storage: params.Storage, Registry: params.Registry, diff --git a/session/import_commit_test.go b/session/import_commit_test.go index 41e75c196..9ca03a936 100644 --- a/session/import_commit_test.go +++ b/session/import_commit_test.go @@ -104,13 +104,14 @@ func TestCommitImportExternalSession_PersistsAndLinksAndSuspends_When_StartAndSu } result, err := CommitImportExternalSession(context.Background(), CommitImportParams{ - Detector: detector, - Storage: store, - Linker: linker, - Suspended: suspended, - AliveChecker: &fakeAliveChecker{alive: true}, - Candidate: candidate, - OriginalPID: pid, + Detector: detector, + Storage: store, + Linker: linker, + Suspended: suspended, + AliveChecker: &fakeAliveChecker{alive: true}, + Candidate: candidate, + OriginalPID: pid, + TmuxServerSocket: coldRestoreSocket(t), }) require.NoError(t, err) require.NotNil(t, result.Instance) @@ -164,13 +165,14 @@ func TestCommitImportExternalSession_CompensatingDeletesInstance_When_SuspendOri } result, err := CommitImportExternalSession(context.Background(), CommitImportParams{ - Detector: detector, - Storage: store, - Linker: linker, - Suspended: suspended, - AliveChecker: &fakeAliveChecker{alive: true}, - Candidate: candidate, - OriginalPID: nonexistentPID, + Detector: detector, + Storage: store, + Linker: linker, + Suspended: suspended, + AliveChecker: &fakeAliveChecker{alive: true}, + Candidate: candidate, + OriginalPID: nonexistentPID, + TmuxServerSocket: coldRestoreSocket(t), }) if store.deletedInstance != nil { t.Cleanup(func() { _ = store.deletedInstance.Kill() }) @@ -236,6 +238,7 @@ func TestCommitImportExternalSession_ReturnsError_When_AliveCheckerRejectsOrigin Candidate: candidate, OriginalPID: pid, OriginalCreateTimeMs: 12345, + TmuxServerSocket: coldRestoreSocket(t), }) if store.deletedInstance != nil { t.Cleanup(func() { _ = store.deletedInstance.Kill() }) diff --git a/web-app/src/gen/session/v1/backlog_pb.ts b/web-app/src/gen/session/v1/backlog_pb.ts deleted file mode 100644 index 55a7f909c..000000000 --- a/web-app/src/gen/session/v1/backlog_pb.ts +++ /dev/null @@ -1,4315 +0,0 @@ -// @generated by protoc-gen-es v2.11.0 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/backlog.proto (package session.v1, syntax proto3) -/* eslint-disable */ - -import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; -import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; -import type { Timestamp } from "@bufbuild/protobuf/wkt"; -import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; -import type { FileStatus } from "./types_pb"; -import { file_session_v1_types } from "./types_pb"; -import type { Message } from "@bufbuild/protobuf"; - -/** - * Describes the file session/v1/backlog.proto. - */ -export const file_session_v1_backlog: GenFile = /*@__PURE__*/ - fileDesc("ChhzZXNzaW9uL3YxL2JhY2tsb2cucHJvdG8SCnNlc3Npb24udjEiOgoLQWNDcml0ZXJpb24SDQoFaW5kZXgYASABKAUSDAoEdGV4dBgCIAEoCRIOCgZzdGF0dXMYAyABKAkiTgoQQ3JpdGVyaW9uVmVyZGljdBIXCg9jcml0ZXJpb25faW5kZXgYASABKAUSDwoHb3V0Y29tZRgCIAEoCRIQCghldmlkZW5jZRgDIAEoCSLOAgoNUmV2aWV3VmVyZGljdBIKCgJpZBgBIAEoCRIXCg9vdmVyYWxsX291dGNvbWUYAiABKAkSMwoNcGVyX2NyaXRlcmlvbhgDIAMoCzIcLnNlc3Npb24udjEuQ3JpdGVyaW9uVmVyZGljdBIPCgdzdW1tYXJ5GAQgASgJEhEKCWRpZmZfaGFzaBgFIAEoCRIYChBkaWZmX3Rva2VuX2NvdW50GAYgASgFEhYKDmRpZmZfdHJ1bmNhdGVkGAcgASgIEhMKC292ZXJyaWRlX2J5GAggASgJEhcKD292ZXJyaWRlX3JlYXNvbhgJIAEoCRIvCgtvdmVycmlkZV9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKY3JlYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiMwoQVHJpYWdlU3VnZ2VzdGlvbhIMCgR0ZXh0GAEgASgJEhEKCXJhdGlvbmFsZRgCIAEoCSI+CgpUcmlhZ2VUYXNrEgwKBHRleHQYASABKAkSEAoIZXN0aW1hdGUYAiABKAkSEAoIY2F0ZWdvcnkYAyABKAkivAEKDFRyaWFnZVJlc3VsdBIPCgdzdW1tYXJ5GAEgASgJEjEKC3N1Z2dlc3Rpb25zGAIgAygLMhwuc2Vzc2lvbi52MS5UcmlhZ2VTdWdnZXN0aW9uEhwKFGNsYXJpZnlpbmdfcXVlc3Rpb25zGAMgAygJEiUKBXRhc2tzGAQgAygLMhYuc2Vzc2lvbi52MS5UcmlhZ2VUYXNrEhEKCWl0ZXJhdGlvbhgFIAEoBRIQCghmZWVkYmFjaxgGIAEoCSLzBAoLSXRlbVNlc3Npb24SCgoCaWQYASABKAkSFAoMc2Vzc2lvbl91dWlkGAIgASgJEhQKDHNlc3Npb25fcm9sZRgDIAEoCRIuCgpzdGFydGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoTbGFzdF9jb21taXRfbWVzc2FnZRgGIAEoCRIyCg5sYXN0X2NvbW1pdF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIAoYY29tbWl0X2NvdW50X3NpbmNlX3NwYXduGAggASgFEjYKEmxhc3RfZmlsZV90b3VjaF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMQoOcmV2aWV3X3ZlcmRpY3QYCyABKAsyGS5zZXNzaW9uLnYxLlJldmlld1ZlcmRpY3QSLwoNdHJpYWdlX3Jlc3VsdBgMIAEoCzIYLnNlc3Npb24udjEuVHJpYWdlUmVzdWx0EhoKEmVzdGltYXRlZF9jb3N0X3VzZBgNIAEoARIXCg93b3JrdHJlZV9icmFuY2gYDiABKAkSFQoNd29ya3RyZWVfcGF0aBgPIAEoCRIeChZwaXBlbGluZV9tb2RlX3NuYXBzaG90GBAgASgJEiMKG3BpcGVsaW5lX21vZGVfc25hcHNob3RfaGFzaBgRIAEoCSKqAQoSQmFja2xvZ1N0YXR1c0V2ZW50EgoKAmlkGAEgASgJEhMKC2Zyb21fc3RhdHVzGAIgASgJEhEKCXRvX3N0YXR1cxgDIAEoCRIUCgx0cmlnZ2VyZWRfYnkYBCABKAkSLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoEbm90ZRgGIAEoCUgAiAEBQgcKBV9ub3RlIogBChNCYWNrbG9nUHJvZ3Jlc3NOb3RlEgoKAmlkGAEgASgJEhcKD2NyaXRlcmlvbl9pbmRleBgCIAEoBRIMCgRub3RlGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKJCAoLQmFja2xvZ0l0ZW0SCgoCaWQYASABKAkSDQoFdGl0bGUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSNAoTYWNjZXB0YW5jZV9jcml0ZXJpYRgEIAMoCzIXLnNlc3Npb24udjEuQWNDcml0ZXJpb24SEAoIcHJpb3JpdHkYBSABKAUSDgoGc3RhdHVzGAYgASgJEhEKCXJlcG9fcGF0aBgHIAEoCRIYChBza2lwX3Jldmlld19nYXRlGAggASgIEhUKDXNraXBfcGxhbm5pbmcYCSABKAgSFQoNcGxhbl9hcHByb3ZlZBgKIAEoCBI0ChBwbGFuX2FwcHJvdmVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIbChNwbGFuX2FydGlmYWN0c19wYXRoGAwgASgJEg0KBW5vdGVzGA0gASgJEhMKC2V4dGVybmFsX2lkGA4gASgJEi8KC2FyY2hpdmVkX2F0GA8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpjcmVhdGVkX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GBEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCg1pdGVtX3Nlc3Npb25zGBIgAygLMhcuc2Vzc2lvbi52MS5JdGVtU2Vzc2lvbhIRCglzb3VyY2VfaWQYEyABKAkSNQoNc3RhdHVzX2V2ZW50cxgUIAMoCzIeLnNlc3Npb24udjEuQmFja2xvZ1N0YXR1c0V2ZW50EiAKGHRvdGFsX2VzdGltYXRlZF9jb3N0X3VzZBgVIAEoARIOCgZwcl91cmwYFiABKAkSEQoJcHJfbnVtYmVyGBcgASgFEhoKEmF1dG9fc3Bhd25fc2Vzc2lvbhgYIAEoCBIaCg1waXBlbGluZV9tb2RlGBkgASgJSACIAQESFgoOYXV0b19jcmVhdGVfcHIYGiABKAgSNwoOcHJvZ3Jlc3Nfbm90ZXMYGyADKAsyHy5zZXNzaW9uLnYxLkJhY2tsb2dQcm9ncmVzc05vdGUSIAoTcmV3b3JrX2NhcF9vdmVycmlkZRgcIAEoBUgBiAEBEhUKCGNhdGVnb3J5GB0gASgJSAKIAQESGQoMZXh0ZXJuYWxfdXJsGB4gASgJSAOIAQESDgoGbGFiZWxzGB8gAygJEhsKE2FsbG93ZWRfdHJhbnNpdGlvbnMYICADKAlCEAoOX3BpcGVsaW5lX21vZGVCFgoUX3Jld29ya19jYXBfb3ZlcnJpZGVCCwoJX2NhdGVnb3J5Qg8KDV9leHRlcm5hbF91cmwi3wIKCkl0ZW1Tb3VyY2USCgoCaWQYASABKAkSEQoJcGx1Z2luX2lkGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRIPCgdlbmFibGVkGAQgASgIEjIKDmxhc3Rfc3luY2VkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIYChB0b2tlbl9jb25maWd1cmVkGAYgASgIEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhwKFGZvcndhcmRfc3luY19lbmFibGVkGAkgASgIEh0KFWJhY2t3YXJkX3N5bmNfZW5hYmxlZBgKIAEoCBIgChhmb3J3YXJkX3N5bmNfY2xvc2VfbGFiZWwYCyABKAki8QMKDFBpcGVsaW5lTW9kZRIKCgJpZBgBIAEoCRIMCgRzbHVnGAIgASgJEgwKBG5hbWUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSDwoHZW5hYmxlZBgFIAEoCBIfChdzdGF0dXNfY29tbWFuZF90ZW1wbGF0ZRgGIAEoCRIdChVkb25lX2NvbW1hbmRfdGVtcGxhdGUYByABKAkSHQoVZmFpbF9jb21tYW5kX3RlbXBsYXRlGAggASgJEh8KF3Jldmlld19jb21tYW5kX3RlbXBsYXRlGAkgASgJEh0KFXNoaXBfY29tbWFuZF90ZW1wbGF0ZRgKIAEoCRIdChVoZWxwX2NvbW1hbmRfdGVtcGxhdGUYCyABKAkSHgoWdHJpYWdlX3Byb21wdF90ZW1wbGF0ZRgMIAEoCRIeChZyZXZpZXdfcHJvbXB0X3RlbXBsYXRlGA0gASgJEh8KF2luaXRpYWxfcHJvbXB0X3RlbXBsYXRlGA4gASgJEi4KCmNyZWF0ZWRfYXQYDyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDGNvbnRlbnRfaGFzaBgRIAEoCSLxAQoPU291cmNlU3luY0V2ZW50EgoKAmlkGAEgASgJEi4KCnN0YXJ0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC2ZpbmlzaGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1pdGVtc19jcmVhdGVkGAQgASgFEhUKDWl0ZW1zX3VwZGF0ZWQYBSABKAUSFQoNaXRlbXNfc2tpcHBlZBgGIAEoBRIVCg1pdGVtc19lcnJvcmVkGAcgASgFEhUKDWVycm9yX21lc3NhZ2UYCCABKAki9AIKGENyZWF0ZUJhY2tsb2dJdGVtUmVxdWVzdBINCgV0aXRsZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRI0ChNhY2NlcHRhbmNlX2NyaXRlcmlhGAMgAygLMhcuc2Vzc2lvbi52MS5BY0NyaXRlcmlvbhIQCghwcmlvcml0eRgEIAEoBRIYChBza2lwX3Jldmlld19nYXRlGAUgASgIEhUKDXNraXBfcGxhbm5pbmcYBiABKAgSEQoJcmVwb19wYXRoGAcgASgJEg0KBW5vdGVzGAggASgJEhMKC3NraXBfdHJpYWdlGAkgASgIEhoKEmF1dG9fc3Bhd25fc2Vzc2lvbhgKIAEoCBIaCg1waXBlbGluZV9tb2RlGAsgASgJSACIAQESFgoOYXV0b19jcmVhdGVfcHIYDCABKAgSFQoIY2F0ZWdvcnkYDSABKAlIAYgBAUIQCg5fcGlwZWxpbmVfbW9kZUILCglfY2F0ZWdvcnkiXAoZQ3JlYXRlQmFja2xvZ0l0ZW1SZXNwb25zZRIlCgRpdGVtGAEgASgLMhcuc2Vzc2lvbi52MS5CYWNrbG9nSXRlbRIYChB0cmlhZ2VfdHJpZ2dlcmVkGAIgASgIIigKFUdldEJhY2tsb2dJdGVtUmVxdWVzdBIPCgdpdGVtX2lkGAEgASgJIj8KFkdldEJhY2tsb2dJdGVtUmVzcG9uc2USJQoEaXRlbRgBIAEoCzIXLnNlc3Npb24udjEuQmFja2xvZ0l0ZW0isgQKFUJhY2tsb2dJdGVtU2hpcFN0YXR1cxIPCgdzaGlwcGVkGAEgASgIEhMKC3NoaXBwZWRfdmlhGAIgASgJEg4KBnByX3VybBgDIAEoCRITCgticmFuY2hfbmFtZRgEIAEoCRIVCg1icmFuY2hfZXhpc3RzGAUgASgIEhUKDWFoZWFkX29mX21haW4YBiABKAUSEwoLYmVoaW5kX21haW4YByABKAUSFwoPbGFzdF9jb21taXRfc2hhGAggASgJEhsKE2xhc3RfY29tbWl0X21lc3NhZ2UYCSABKAkSMgoObGFzdF9jb21taXRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBWVycm9yGAsgASgJEioKB2NvbW1pdHMYDCADKAsyGS5zZXNzaW9uLnYxLlNoaXBwZWRDb21taXQSIAoYc2hpcHBlZF9jaGVja19jb25jbHVzaW9uGA0gASgJEh4KFnNoaXBwZWRfYXBwcm92ZWRfY291bnQYDiABKAUSIQoZc2hpcHBlZF9jaGFuZ2VzX3JlcV9jb3VudBgPIAEoBRIvCgpmaWxlX3N0YXRzGBAgAygLMhsuc2Vzc2lvbi52MS5TaGlwcGVkRmlsZVN0YXQSLwoLc25hcHNob3RfYXQYESABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEh8KF3NuYXBzaG90X2NhcHR1cmVfZmFpbGVkGBIgASgIInMKDVNoaXBwZWRDb21taXQSCwoDc2hhGAEgASgJEg8KB3N1bW1hcnkYAiABKAkSEwoLYXV0aG9yX25hbWUYAyABKAkSLwoLYXV0aG9yZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIm0KD1NoaXBwZWRGaWxlU3RhdBIMCgRwYXRoGAEgASgJEiYKBnN0YXR1cxgCIAEoDjIWLnNlc3Npb24udjEuRmlsZVN0YXR1cxIRCglhZGRpdGlvbnMYAyABKAUSEQoJZGVsZXRpb25zGAQgASgFIjIKH0dldEJhY2tsb2dJdGVtU2hpcFN0YXR1c1JlcXVlc3QSDwoHaXRlbV9pZBgBIAEoCSJVCiBHZXRCYWNrbG9nSXRlbVNoaXBTdGF0dXNSZXNwb25zZRIxCgZzdGF0dXMYASABKAsyIS5zZXNzaW9uLnYxLkJhY2tsb2dJdGVtU2hpcFN0YXR1cyKAAQoXTGlzdEJhY2tsb2dJdGVtc1JlcXVlc3QSDgoGc3RhdHVzGAEgAygJEhAKCHByaW9yaXR5GAIgAygFEg8KB3NvcnRfYnkYAyABKAkSGAoQaW5jbHVkZV90ZXJtaW5hbBgEIAEoCBIYChBpbmNsdWRlX2FyY2hpdmVkGAUgASgIIkIKGExpc3RCYWNrbG9nSXRlbXNSZXNwb25zZRImCgVpdGVtcxgBIAMoCzIXLnNlc3Npb24udjEuQmFja2xvZ0l0ZW0iwgQKGFVwZGF0ZUJhY2tsb2dJdGVtUmVxdWVzdBIPCgdpdGVtX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEjQKE2FjY2VwdGFuY2VfY3JpdGVyaWEYBCADKAsyFy5zZXNzaW9uLnYxLkFjQ3JpdGVyaW9uEhAKCHByaW9yaXR5GAUgASgFEhgKEHNraXBfcmV2aWV3X2dhdGUYBiABKAgSFQoNc2tpcF9wbGFubmluZxgHIAEoCBIRCglyZXBvX3BhdGgYCCABKAkSDQoFbm90ZXMYCSABKAkSFwoPZXhwZWN0ZWRfc3RhdHVzGAogASgJEjcKE2V4cGVjdGVkX3VwZGF0ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhoKEmF1dG9fc3Bhd25fc2Vzc2lvbhgMIAEoCBIaCg1waXBlbGluZV9tb2RlGA0gASgJSACIAQESFgoOYXV0b19jcmVhdGVfcHIYDiABKAgSIAoTcmV3b3JrX2NhcF9vdmVycmlkZRgPIAEoBUgBiAEBEhUKCGNhdGVnb3J5GBAgASgJSAKIAQESEwoGcHJfdXJsGBEgASgJSAOIAQESFgoJcHJfbnVtYmVyGBIgASgFSASIAQFCEAoOX3BpcGVsaW5lX21vZGVCFgoUX3Jld29ya19jYXBfb3ZlcnJpZGVCCwoJX2NhdGVnb3J5QgkKB19wcl91cmxCDAoKX3ByX251bWJlciJCChlVcGRhdGVCYWNrbG9nSXRlbVJlc3BvbnNlEiUKBGl0ZW0YASABKAsyFy5zZXNzaW9uLnYxLkJhY2tsb2dJdGVtIiwKGUFyY2hpdmVCYWNrbG9nSXRlbVJlcXVlc3QSDwoHaXRlbV9pZBgBIAEoCSJDChpBcmNoaXZlQmFja2xvZ0l0ZW1SZXNwb25zZRIlCgRpdGVtGAEgASgLMhcuc2Vzc2lvbi52MS5CYWNrbG9nSXRlbSIrChhEZWxldGVCYWNrbG9nSXRlbVJlcXVlc3QSDwoHaXRlbV9pZBgBIAEoCSIbChlEZWxldGVCYWNrbG9nSXRlbVJlc3BvbnNlIrcBCiJUcmFuc2l0aW9uQmFja2xvZ0l0ZW1TdGF0dXNSZXF1ZXN0Eg8KB2l0ZW1faWQYASABKAkSFQoNdGFyZ2V0X3N0YXR1cxgCIAEoCRIXCg9leHBlY3RlZF9zdGF0dXMYAyABKAkSNwoTZXhwZWN0ZWRfdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoPb3ZlcnJpZGVfcmVhc29uGAUgASgJIkwKI1RyYW5zaXRpb25CYWNrbG9nSXRlbVN0YXR1c1Jlc3BvbnNlEiUKBGl0ZW0YASABKAsyFy5zZXNzaW9uLnYxLkJhY2tsb2dJdGVtIlEKG1NwYXduU2Vzc2lvbkZyb21JdGVtUmVxdWVzdBIPCgdpdGVtX2lkGAEgASgJEhIKCmF1dG9ub21vdXMYAyABKAgSDQoFZm9yY2UYBCABKAgicwocU3Bhd25TZXNzaW9uRnJvbUl0ZW1SZXNwb25zZRIUCgxzZXNzaW9uX3V1aWQYASABKAkSLQoMaXRlbV9zZXNzaW9uGAIgASgLMhcuc2Vzc2lvbi52MS5JdGVtU2Vzc2lvbhIOCgZxdWV1ZWQYAyABKAgiQwoaQXR0YWNoU2Vzc2lvblRvSXRlbVJlcXVlc3QSDwoHaXRlbV9pZBgBIAEoCRIUCgxzZXNzaW9uX3V1aWQYAiABKAkiTAobQXR0YWNoU2Vzc2lvblRvSXRlbVJlc3BvbnNlEi0KDGl0ZW1fc2Vzc2lvbhgBIAEoCzIXLnNlc3Npb24udjEuSXRlbVNlc3Npb24iOQoUVHJpZ2dlclRyaWFnZVJlcXVlc3QSDwoHaXRlbV9pZBgBIAEoCRIQCghmZWVkYmFjaxgCIAEoCSJGChVUcmlnZ2VyVHJpYWdlUmVzcG9uc2USLQoMaXRlbV9zZXNzaW9uGAEgASgLMhcuc2Vzc2lvbi52MS5JdGVtU2Vzc2lvbiIlChJBcHByb3ZlUGxhblJlcXVlc3QSDwoHaXRlbV9pZBgBIAEoCSI8ChNBcHByb3ZlUGxhblJlc3BvbnNlEiUKBGl0ZW0YASABKAsyFy5zZXNzaW9uLnYxLkJhY2tsb2dJdGVtIhgKFlN1Z2dlc3ROZXh0SXRlbVJlcXVlc3QibwoXU3VnZ2VzdE5leHRJdGVtUmVzcG9uc2USLQoMaXRlbV9zZXNzaW9uGAEgASgLMhcuc2Vzc2lvbi52MS5JdGVtU2Vzc2lvbhIlCgRpdGVtGAIgASgLMhcuc2Vzc2lvbi52MS5CYWNrbG9nSXRlbSJdChZPdmVycmlkZVZlcmRpY3RSZXF1ZXN0EhcKD2l0ZW1fc2Vzc2lvbl9pZBgBIAEoCRIRCgl0b19zdGF0dXMYAiABKAkSFwoPb3ZlcnJpZGVfcmVhc29uGAMgASgJIkAKF092ZXJyaWRlVmVyZGljdFJlc3BvbnNlEiUKBGl0ZW0YASABKAsyFy5zZXNzaW9uLnYxLkJhY2tsb2dJdGVtIikKFlRyaWdnZXJSZVJldmlld1JlcXVlc3QSDwoHaXRlbV9pZBgBIAEoCSJIChdUcmlnZ2VyUmVSZXZpZXdSZXNwb25zZRItCgxpdGVtX3Nlc3Npb24YASABKAsyFy5zZXNzaW9uLnYxLkl0ZW1TZXNzaW9uIicKFFRyaWdnZXJTaGlwUFJSZXF1ZXN0Eg8KB2l0ZW1faWQYASABKAkiJwoVVHJpZ2dlclNoaXBQUlJlc3BvbnNlEg4KBnByX3VybBgBIAEoCSInChJUcmlnZ2VyU3luY1JlcXVlc3QSEQoJc291cmNlX2lkGAEgASgJIhUKE1RyaWdnZXJTeW5jUmVzcG9uc2UiZgoXQ3JlYXRlSXRlbVNvdXJjZVJlcXVlc3QSEQoJcGx1Z2luX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRITCgtjb25maWdfanNvbhgDIAEoCRINCgV0b2tlbhgEIAEoCSJCChhDcmVhdGVJdGVtU291cmNlUmVzcG9uc2USJgoGc291cmNlGAEgASgLMhYuc2Vzc2lvbi52MS5JdGVtU291cmNlIhgKFkxpc3RJdGVtU291cmNlc1JlcXVlc3QiQgoXTGlzdEl0ZW1Tb3VyY2VzUmVzcG9uc2USJwoHc291cmNlcxgBIAMoCzIWLnNlc3Npb24udjEuSXRlbVNvdXJjZSLBAQoXVXBkYXRlSXRlbVNvdXJjZVJlcXVlc3QSEQoJc291cmNlX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIPCgdlbmFibGVkGAMgASgIEg0KBXRva2VuGAQgASgJEhwKFGZvcndhcmRfc3luY19lbmFibGVkGAUgASgIEh0KFWJhY2t3YXJkX3N5bmNfZW5hYmxlZBgGIAEoCBIgChhmb3J3YXJkX3N5bmNfY2xvc2VfbGFiZWwYByABKAkiQgoYVXBkYXRlSXRlbVNvdXJjZVJlc3BvbnNlEiYKBnNvdXJjZRgBIAEoCzIWLnNlc3Npb24udjEuSXRlbVNvdXJjZSIsChdEZWxldGVJdGVtU291cmNlUmVxdWVzdBIRCglzb3VyY2VfaWQYASABKAkiGgoYRGVsZXRlSXRlbVNvdXJjZVJlc3BvbnNlIioKFUdldFN5bmNIaXN0b3J5UmVxdWVzdBIRCglzb3VyY2VfaWQYASABKAkiWAoWR2V0U3luY0hpc3RvcnlSZXNwb25zZRIrCgZldmVudHMYASADKAsyGy5zZXNzaW9uLnYxLlNvdXJjZVN5bmNFdmVudBIRCgl0cnVuY2F0ZWQYAiABKAgiNQogUHJldmlld0JhY2t3YXJkU3luY0ltcGFjdFJlcXVlc3QSEQoJc291cmNlX2lkGAEgASgJImsKIVByZXZpZXdCYWNrd2FyZFN5bmNJbXBhY3RSZXNwb25zZRISCgppdGVtX2NvdW50GAEgASgFEhUKDXNhbXBsZV90aXRsZXMYAiADKAkSGwoTcG9zc2libHlfaW5jb21wbGV0ZRgDIAEoCCL8AgoZQ3JlYXRlUGlwZWxpbmVNb2RlUmVxdWVzdBIMCgRzbHVnGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDwoHZW5hYmxlZBgEIAEoCBIfChdzdGF0dXNfY29tbWFuZF90ZW1wbGF0ZRgFIAEoCRIdChVkb25lX2NvbW1hbmRfdGVtcGxhdGUYBiABKAkSHQoVZmFpbF9jb21tYW5kX3RlbXBsYXRlGAcgASgJEh8KF3Jldmlld19jb21tYW5kX3RlbXBsYXRlGAggASgJEh0KFXNoaXBfY29tbWFuZF90ZW1wbGF0ZRgJIAEoCRIdChVoZWxwX2NvbW1hbmRfdGVtcGxhdGUYCiABKAkSHgoWdHJpYWdlX3Byb21wdF90ZW1wbGF0ZRgLIAEoCRIeChZyZXZpZXdfcHJvbXB0X3RlbXBsYXRlGAwgASgJEh8KF2luaXRpYWxfcHJvbXB0X3RlbXBsYXRlGA0gASgJIkQKGkNyZWF0ZVBpcGVsaW5lTW9kZVJlc3BvbnNlEiYKBGl0ZW0YASABKAsyGC5zZXNzaW9uLnYxLlBpcGVsaW5lTW9kZSLNBQoZVXBkYXRlUGlwZWxpbmVNb2RlUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIUCgdlbmFibGVkGAQgASgISAKIAQESJAoXc3RhdHVzX2NvbW1hbmRfdGVtcGxhdGUYBSABKAlIA4gBARIiChVkb25lX2NvbW1hbmRfdGVtcGxhdGUYBiABKAlIBIgBARIiChVmYWlsX2NvbW1hbmRfdGVtcGxhdGUYByABKAlIBYgBARIkChdyZXZpZXdfY29tbWFuZF90ZW1wbGF0ZRgIIAEoCUgGiAEBEiIKFXNoaXBfY29tbWFuZF90ZW1wbGF0ZRgJIAEoCUgHiAEBEiIKFWhlbHBfY29tbWFuZF90ZW1wbGF0ZRgKIAEoCUgIiAEBEiMKFnRyaWFnZV9wcm9tcHRfdGVtcGxhdGUYCyABKAlICYgBARIjChZyZXZpZXdfcHJvbXB0X3RlbXBsYXRlGAwgASgJSAqIAQESJAoXaW5pdGlhbF9wcm9tcHRfdGVtcGxhdGUYDSABKAlIC4gBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCgoIX2VuYWJsZWRCGgoYX3N0YXR1c19jb21tYW5kX3RlbXBsYXRlQhgKFl9kb25lX2NvbW1hbmRfdGVtcGxhdGVCGAoWX2ZhaWxfY29tbWFuZF90ZW1wbGF0ZUIaChhfcmV2aWV3X2NvbW1hbmRfdGVtcGxhdGVCGAoWX3NoaXBfY29tbWFuZF90ZW1wbGF0ZUIYChZfaGVscF9jb21tYW5kX3RlbXBsYXRlQhkKF190cmlhZ2VfcHJvbXB0X3RlbXBsYXRlQhkKF19yZXZpZXdfcHJvbXB0X3RlbXBsYXRlQhoKGF9pbml0aWFsX3Byb21wdF90ZW1wbGF0ZSJEChpVcGRhdGVQaXBlbGluZU1vZGVSZXNwb25zZRImCgRpdGVtGAEgASgLMhguc2Vzc2lvbi52MS5QaXBlbGluZU1vZGUiJwoZRGVsZXRlUGlwZWxpbmVNb2RlUmVxdWVzdBIKCgJpZBgBIAEoCSIcChpEZWxldGVQaXBlbGluZU1vZGVSZXNwb25zZSImChZHZXRQaXBlbGluZU1vZGVSZXF1ZXN0EgwKBHNsdWcYASABKAkiQQoXR2V0UGlwZWxpbmVNb2RlUmVzcG9uc2USJgoEaXRlbRgBIAEoCzIYLnNlc3Npb24udjEuUGlwZWxpbmVNb2RlIhoKGExpc3RQaXBlbGluZU1vZGVzUmVxdWVzdCJEChlMaXN0UGlwZWxpbmVNb2Rlc1Jlc3BvbnNlEicKBWl0ZW1zGAEgAygLMhguc2Vzc2lvbi52MS5QaXBlbGluZU1vZGUirgQKEEJhY2tsb2dJdGVtRXZlbnQSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJDCg5zdGF0dXNfY2hhbmdlZBgCIAEoCzIpLnNlc3Npb24udjEuQmFja2xvZ0l0ZW1TdGF0dXNDaGFuZ2VkRXZlbnRIABJHChB2ZXJkaWN0X3JlY29yZGVkGAMgASgLMisuc2Vzc2lvbi52MS5CYWNrbG9nSXRlbVZlcmRpY3RSZWNvcmRlZEV2ZW50SAASRwoQc2Vzc2lvbl9hdHRhY2hlZBgEIAEoCzIrLnNlc3Npb24udjEuQmFja2xvZ0l0ZW1TZXNzaW9uQXR0YWNoZWRFdmVudEgAEjsKDGl0ZW1fdXBkYXRlZBgFIAEoCzIjLnNlc3Npb24udjEuQmFja2xvZ0l0ZW1VcGRhdGVkRXZlbnRIABI9Cg1pdGVtX2FyY2hpdmVkGAYgASgLMiQuc2Vzc2lvbi52MS5CYWNrbG9nSXRlbUFyY2hpdmVkRXZlbnRIABI7CgxpdGVtX3JlbW92ZWQYByABKAsyIy5zZXNzaW9uLnYxLkJhY2tsb2dJdGVtUmVtb3ZlZEV2ZW50SAASRQoRc25hcHNob3RfY29tcGxldGUYCSABKAsyKC5zZXNzaW9uLnYxLkJhY2tsb2dTbmFwc2hvdENvbXBsZXRlRXZlbnRIABILCgNzZXEYCCABKARCBwoFZXZlbnQilAEKHUJhY2tsb2dJdGVtU3RhdHVzQ2hhbmdlZEV2ZW50Eg8KB2l0ZW1faWQYASABKAkSEgoKb2xkX3N0YXR1cxgCIAEoCRISCgpuZXdfc3RhdHVzGAMgASgJEiUKBGl0ZW0YBCABKAsyFy5zZXNzaW9uLnYxLkJhY2tsb2dJdGVtEhMKC2lzX3NuYXBzaG90GAUgASgIIpoBCh9CYWNrbG9nSXRlbVZlcmRpY3RSZWNvcmRlZEV2ZW50Eg8KB2l0ZW1faWQYASABKAkSKgoHdmVyZGljdBgCIAEoCzIZLnNlc3Npb24udjEuUmV2aWV3VmVyZGljdBIlCgRpdGVtGAMgASgLMhcuc2Vzc2lvbi52MS5CYWNrbG9nSXRlbRITCgtpc19zbmFwc2hvdBgEIAEoCCKCAQofQmFja2xvZ0l0ZW1TZXNzaW9uQXR0YWNoZWRFdmVudBIPCgdpdGVtX2lkGAEgASgJEhIKCnNlc3Npb25faWQYAiABKAkSJQoEaXRlbRgDIAEoCzIXLnNlc3Npb24udjEuQmFja2xvZ0l0ZW0SEwoLaXNfc25hcHNob3QYBCABKAgifgoXQmFja2xvZ0l0ZW1VcGRhdGVkRXZlbnQSDwoHaXRlbV9pZBgBIAEoCRIWCg51cGRhdGVkX2ZpZWxkcxgCIAMoCRIlCgRpdGVtGAMgASgLMhcuc2Vzc2lvbi52MS5CYWNrbG9nSXRlbRITCgtpc19zbmFwc2hvdBgEIAEoCCJxChhCYWNrbG9nSXRlbUFyY2hpdmVkRXZlbnQSDwoHaXRlbV9pZBgBIAEoCRIvCgthcmNoaXZlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLaXNfc25hcHNob3QYAyABKAgiOgoXQmFja2xvZ0l0ZW1SZW1vdmVkRXZlbnQSDwoHaXRlbV9pZBgBIAEoCRIOCgZyZWFzb24YAiABKAkiHgocQmFja2xvZ1NuYXBzaG90Q29tcGxldGVFdmVudCJdChhXYXRjaEJhY2tsb2dJdGVtc1JlcXVlc3QSFQoNc3RhdHVzX2ZpbHRlchgBIAMoCRIXCg9jYXRlZ29yeV9maWx0ZXIYAiADKAkSEQoJYWZ0ZXJfc2VxGAMgASgEInEKGEltcG9ydEdpdEh1Yklzc3VlUmVxdWVzdBIRCglpc3N1ZV91cmwYASABKAkSEQoJcmVwb19wYXRoGAIgASgJEhUKDXNraXBfcGxhbm5pbmcYAyABKAgSGAoQYWNjb3VudF91c2VybmFtZRgEIAEoCSJcChlJbXBvcnRHaXRIdWJJc3N1ZVJlc3BvbnNlEiUKBGl0ZW0YASABKAsyFy5zZXNzaW9uLnYxLkJhY2tsb2dJdGVtEhgKEHRyaWFnZV90cmlnZ2VyZWQYAiABKAgiJgoTQ2FuY2VsVHJpYWdlUmVxdWVzdBIPCgdpdGVtX2lkGAEgASgJIikKFENhbmNlbFRyaWFnZVJlc3BvbnNlEhEKCWNhbmNlbGxlZBgBIAEoCCJpCg9HaXRIdWJSZXBvRW50cnkSDQoFb3duZXIYASABKAkSDAoEcmVwbxgCIAEoCRIQCghpc19sb2NhbBgDIAEoCBISCgpsb2NhbF9wYXRoGAQgASgJEhMKC2Rlc2NyaXB0aW9uGAUgASgJIuoBChBHaXRIdWJJc3N1ZUVudHJ5Eg4KBm51bWJlchgBIAEoBRINCgV0aXRsZRgCIAEoCRINCgVzdGF0ZRgDIAEoCRILCgN1cmwYBCABKAkSDgoGbGFiZWxzGAUgAygJEgwKBGJvZHkYBiABKAkSLgoKY3JlYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFaXNfcHIYCSABKAgSDgoGYXV0aG9yGAogASgJIjgKGFNlYXJjaEdpdEh1YlJlcG9zUmVxdWVzdBINCgVxdWVyeRgBIAEoCRINCgVsaW1pdBgCIAEoBSJHChlTZWFyY2hHaXRIdWJSZXBvc1Jlc3BvbnNlEioKBXJlcG9zGAEgAygLMhsuc2Vzc2lvbi52MS5HaXRIdWJSZXBvRW50cnkiZAoXTGlzdEdpdEh1Yklzc3Vlc1JlcXVlc3QSDQoFb3duZXIYASABKAkSDAoEcmVwbxgCIAEoCRINCgVzdGF0ZRgDIAEoCRIOCgZzZWFyY2gYBCABKAkSDQoFbGltaXQYBSABKAUiSAoYTGlzdEdpdEh1Yklzc3Vlc1Jlc3BvbnNlEiwKBmlzc3VlcxgBIAMoCzIcLnNlc3Npb24udjEuR2l0SHViSXNzdWVFbnRyeSIsChlHZXRCYWNrbG9nSXRlbURpZmZSZXF1ZXN0Eg8KB2l0ZW1faWQYASABKAkiSgoaR2V0QmFja2xvZ0l0ZW1EaWZmUmVzcG9uc2USDAoEZGlmZhgBIAEoCRINCgVhZGRlZBgCIAEoBRIPCgdyZW1vdmVkGAMgASgFIoUBChBTZXNzaW9uQ29zdEVudHJ5EhIKCnNlc3Npb25faWQYASABKAkSFAoMc2Vzc2lvbl9yb2xlGAIgASgJEhoKEmVzdGltYXRlZF9jb3N0X3VzZBgDIAEoARIUCgxpbnB1dF90b2tlbnMYBCABKAMSFQoNb3V0cHV0X3Rva2VucxgFIAEoAyIsChlHZXRCYWNrbG9nSXRlbUNvc3RSZXF1ZXN0Eg8KB2l0ZW1faWQYASABKAkiZAoaR2V0QmFja2xvZ0l0ZW1Db3N0UmVzcG9uc2USFgoOdG90YWxfY29zdF91c2QYASABKAESLgoIc2Vzc2lvbnMYAiADKAsyHC5zZXNzaW9uLnYxLlNlc3Npb25Db3N0RW50cnkiewoTQmFja2xvZ1Nlc3Npb25FbnRyeRIUCgxzZXNzaW9uX3V1aWQYASABKAkSDwoHaXRlbV9pZBgCIAEoCRISCgppdGVtX3RpdGxlGAMgASgJEhMKC2l0ZW1fc3RhdHVzGAQgASgJEhQKDHNlc3Npb25fcm9sZRgFIAEoCSIfCh1HZXRTZXNzaW9uQmFja2xvZ0luZGV4UmVxdWVzdCJSCh5HZXRTZXNzaW9uQmFja2xvZ0luZGV4UmVzcG9uc2USMAoHZW50cmllcxgBIAMoCzIfLnNlc3Npb24udjEuQmFja2xvZ1Nlc3Npb25FbnRyeSKUAQoZU3VibWl0TWFudWFsUmV2aWV3UmVxdWVzdBIPCgdpdGVtX2lkGAEgASgJEhcKD292ZXJhbGxfb3V0Y29tZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEjwKFnBlcl9jcml0ZXJpb25fdmVyZGljdHMYBCADKAsyHC5zZXNzaW9uLnYxLkNyaXRlcmlvblZlcmRpY3QiQwoaU3VibWl0TWFudWFsUmV2aWV3UmVzcG9uc2USJQoEaXRlbRgBIAEoCzIXLnNlc3Npb24udjEuQmFja2xvZ0l0ZW0igwQKEFN0dWNrQmFja2xvZ0l0ZW0SDwoHaXRlbV9pZBgBIAEoCRINCgV0aXRsZRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSJwoGcmVhc29uGAQgASgOMhcuc2Vzc2lvbi52MS5TdHVja1JlYXNvbhI1ChFmaXJzdF9kZXRlY3RlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoPbGFzdF9jaGVja2VkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglwcl9udW1iZXIYByABKAUSDgoGcHJfdXJsGAggASgJEg8KB2NvbnRleHQYCSABKAkSMQoNc25vb3plZF91bnRpbBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASHQoQYWxsb3dfYXV0b19tZXJnZRgLIAEoCEgAiAEBEhwKFHJlbWVkaWF0aW9uX2F0dGVtcHRzGAwgASgFEjwKE25leHRfcmVtZWRpYXRpb25fYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGwoTcGxhbl9hcnRpZmFjdHNfcGF0aBgOIAEoCUITChFfYWxsb3dfYXV0b19tZXJnZUIWChRfbmV4dF9yZW1lZGlhdGlvbl9hdCIeChxMaXN0U3R1Y2tCYWNrbG9nSXRlbXNSZXF1ZXN0IkwKHUxpc3RTdHVja0JhY2tsb2dJdGVtc1Jlc3BvbnNlEisKBWl0ZW1zGAEgAygLMhwuc2Vzc2lvbi52MS5TdHVja0JhY2tsb2dJdGVtIn0KFlNub296ZVN0dWNrSXRlbVJlcXVlc3QSDwoHaXRlbV9pZBgBIAEoCRInCgZyZWFzb24YAiABKA4yFy5zZXNzaW9uLnYxLlN0dWNrUmVhc29uEikKBXVudGlsGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIqChdTbm9vemVTdHVja0l0ZW1SZXNwb25zZRIPCgdhcHBsaWVkGAEgASgIIlgKHFJlc2V0U3R1Y2tSZW1lZGlhdGlvblJlcXVlc3QSDwoHaXRlbV9pZBgBIAEoCRInCgZyZWFzb24YAiABKA4yFy5zZXNzaW9uLnYxLlN0dWNrUmVhc29uIjAKHVJlc2V0U3R1Y2tSZW1lZGlhdGlvblJlc3BvbnNlEg8KB2FwcGxpZWQYASABKAgihAEKIEJ1bGtSZXNldFN0dWNrUmVtZWRpYXRpb25SZXF1ZXN0EicKBnJlYXNvbhgBIAEoDjIXLnNlc3Npb24udjEuU3R1Y2tSZWFzb24SEwoLb25seV9wYXJrZWQYAiABKAgSIgoab25seV9wYXJrZWRfZXhwbGljaXRseV9zZXQYAyABKAgiOAohQnVsa1Jlc2V0U3R1Y2tSZW1lZGlhdGlvblJlc3BvbnNlEhMKC3Jlc2V0X2NvdW50GAEgASgFIlgKHFRyaWdnZXJSZW1lZGlhdGlvbk5vd1JlcXVlc3QSDwoHaXRlbV9pZBgBIAEoCRInCgZyZWFzb24YAiABKA4yFy5zZXNzaW9uLnYxLlN0dWNrUmVhc29uIjIKHVRyaWdnZXJSZW1lZGlhdGlvbk5vd1Jlc3BvbnNlEhEKCXRyaWdnZXJlZBgBIAEoCCqeBAoLU3R1Y2tSZWFzb24SHAoYU1RVQ0tfUkVBU09OX1VOU1BFQ0lGSUVEEAASIgoeU1RVQ0tfUkVBU09OX1BSX1JFQURZX1VOTUVSR0VEEAESGwoXU1RVQ0tfUkVBU09OX1JFV09SS19DQVAQAhIhCh1TVFVDS19SRUFTT05fQUJBTkRPTkVEX1JFVklFVxADEhsKF1NUVUNLX1JFQVNPTl9TVEFMRV9XT1JLEAQSGQoVU1RVQ0tfUkVBU09OX0JPVU5DSU5HEAUSHAoYU1RVQ0tfUkVBU09OX1BVU0hfRkFJTEVEEAYSIAocU1RVQ0tfUkVBU09OX09SUEhBTkVEX1RSSUFHRRAHEiEKHVNUVUNLX1JFQVNPTl9BVVRPTk9NT1VTX1NUVUNLEAgSHQoZU1RVQ0tfUkVBU09OX1NQQVdOX0ZBSUxFRBAJEiIKHlNUVUNLX1JFQVNPTl9QTEFOX05PVF9BUFBST1ZFRBAKEiEKHVNUVUNLX1JFQVNPTl9QUl9QRU5ESU5HX05PX1BSEAsSJQohU1RVQ0tfUkVBU09OX1JFV09SS19CTE9DS0VEX1NUQUxFEAwSHQoZU1RVQ0tfUkVBU09OX1BSX05FRURTX0ZJWBANEicKI1NUVUNLX1JFQVNPTl9SRVNQQVdOX0JMT0NLRURfQUNUSVZFEA4SHQoZU1RVQ0tfUkVBU09OX0xJS0VMWV9GTEFLWRAPMpwhCg5CYWNrbG9nU2VydmljZRJiChFDcmVhdGVCYWNrbG9nSXRlbRIkLnNlc3Npb24udjEuQ3JlYXRlQmFja2xvZ0l0ZW1SZXF1ZXN0GiUuc2Vzc2lvbi52MS5DcmVhdGVCYWNrbG9nSXRlbVJlc3BvbnNlIgASWQoOR2V0QmFja2xvZ0l0ZW0SIS5zZXNzaW9uLnYxLkdldEJhY2tsb2dJdGVtUmVxdWVzdBoiLnNlc3Npb24udjEuR2V0QmFja2xvZ0l0ZW1SZXNwb25zZSIAEncKGEdldEJhY2tsb2dJdGVtU2hpcFN0YXR1cxIrLnNlc3Npb24udjEuR2V0QmFja2xvZ0l0ZW1TaGlwU3RhdHVzUmVxdWVzdBosLnNlc3Npb24udjEuR2V0QmFja2xvZ0l0ZW1TaGlwU3RhdHVzUmVzcG9uc2UiABJfChBMaXN0QmFja2xvZ0l0ZW1zEiMuc2Vzc2lvbi52MS5MaXN0QmFja2xvZ0l0ZW1zUmVxdWVzdBokLnNlc3Npb24udjEuTGlzdEJhY2tsb2dJdGVtc1Jlc3BvbnNlIgASYgoRVXBkYXRlQmFja2xvZ0l0ZW0SJC5zZXNzaW9uLnYxLlVwZGF0ZUJhY2tsb2dJdGVtUmVxdWVzdBolLnNlc3Npb24udjEuVXBkYXRlQmFja2xvZ0l0ZW1SZXNwb25zZSIAEmUKEkFyY2hpdmVCYWNrbG9nSXRlbRIlLnNlc3Npb24udjEuQXJjaGl2ZUJhY2tsb2dJdGVtUmVxdWVzdBomLnNlc3Npb24udjEuQXJjaGl2ZUJhY2tsb2dJdGVtUmVzcG9uc2UiABJiChFEZWxldGVCYWNrbG9nSXRlbRIkLnNlc3Npb24udjEuRGVsZXRlQmFja2xvZ0l0ZW1SZXF1ZXN0GiUuc2Vzc2lvbi52MS5EZWxldGVCYWNrbG9nSXRlbVJlc3BvbnNlIgASgAEKG1RyYW5zaXRpb25CYWNrbG9nSXRlbVN0YXR1cxIuLnNlc3Npb24udjEuVHJhbnNpdGlvbkJhY2tsb2dJdGVtU3RhdHVzUmVxdWVzdBovLnNlc3Npb24udjEuVHJhbnNpdGlvbkJhY2tsb2dJdGVtU3RhdHVzUmVzcG9uc2UiABJrChRTcGF3blNlc3Npb25Gcm9tSXRlbRInLnNlc3Npb24udjEuU3Bhd25TZXNzaW9uRnJvbUl0ZW1SZXF1ZXN0Giguc2Vzc2lvbi52MS5TcGF3blNlc3Npb25Gcm9tSXRlbVJlc3BvbnNlIgASaAoTQXR0YWNoU2Vzc2lvblRvSXRlbRImLnNlc3Npb24udjEuQXR0YWNoU2Vzc2lvblRvSXRlbVJlcXVlc3QaJy5zZXNzaW9uLnYxLkF0dGFjaFNlc3Npb25Ub0l0ZW1SZXNwb25zZSIAElYKDVRyaWdnZXJUcmlhZ2USIC5zZXNzaW9uLnYxLlRyaWdnZXJUcmlhZ2VSZXF1ZXN0GiEuc2Vzc2lvbi52MS5UcmlnZ2VyVHJpYWdlUmVzcG9uc2UiABJTCgxDYW5jZWxUcmlhZ2USHy5zZXNzaW9uLnYxLkNhbmNlbFRyaWFnZVJlcXVlc3QaIC5zZXNzaW9uLnYxLkNhbmNlbFRyaWFnZVJlc3BvbnNlIgASUAoLQXBwcm92ZVBsYW4SHi5zZXNzaW9uLnYxLkFwcHJvdmVQbGFuUmVxdWVzdBofLnNlc3Npb24udjEuQXBwcm92ZVBsYW5SZXNwb25zZSIAElwKD1N1Z2dlc3ROZXh0SXRlbRIiLnNlc3Npb24udjEuU3VnZ2VzdE5leHRJdGVtUmVxdWVzdBojLnNlc3Npb24udjEuU3VnZ2VzdE5leHRJdGVtUmVzcG9uc2UiABJcCg9PdmVycmlkZVZlcmRpY3QSIi5zZXNzaW9uLnYxLk92ZXJyaWRlVmVyZGljdFJlcXVlc3QaIy5zZXNzaW9uLnYxLk92ZXJyaWRlVmVyZGljdFJlc3BvbnNlIgASXAoPVHJpZ2dlclJlUmV2aWV3EiIuc2Vzc2lvbi52MS5UcmlnZ2VyUmVSZXZpZXdSZXF1ZXN0GiMuc2Vzc2lvbi52MS5UcmlnZ2VyUmVSZXZpZXdSZXNwb25zZSIAElYKDVRyaWdnZXJTaGlwUFISIC5zZXNzaW9uLnYxLlRyaWdnZXJTaGlwUFJSZXF1ZXN0GiEuc2Vzc2lvbi52MS5UcmlnZ2VyU2hpcFBSUmVzcG9uc2UiABJQCgtUcmlnZ2VyU3luYxIeLnNlc3Npb24udjEuVHJpZ2dlclN5bmNSZXF1ZXN0Gh8uc2Vzc2lvbi52MS5UcmlnZ2VyU3luY1Jlc3BvbnNlIgASXwoQQ3JlYXRlSXRlbVNvdXJjZRIjLnNlc3Npb24udjEuQ3JlYXRlSXRlbVNvdXJjZVJlcXVlc3QaJC5zZXNzaW9uLnYxLkNyZWF0ZUl0ZW1Tb3VyY2VSZXNwb25zZSIAElwKD0xpc3RJdGVtU291cmNlcxIiLnNlc3Npb24udjEuTGlzdEl0ZW1Tb3VyY2VzUmVxdWVzdBojLnNlc3Npb24udjEuTGlzdEl0ZW1Tb3VyY2VzUmVzcG9uc2UiABJfChBVcGRhdGVJdGVtU291cmNlEiMuc2Vzc2lvbi52MS5VcGRhdGVJdGVtU291cmNlUmVxdWVzdBokLnNlc3Npb24udjEuVXBkYXRlSXRlbVNvdXJjZVJlc3BvbnNlIgASXwoQRGVsZXRlSXRlbVNvdXJjZRIjLnNlc3Npb24udjEuRGVsZXRlSXRlbVNvdXJjZVJlcXVlc3QaJC5zZXNzaW9uLnYxLkRlbGV0ZUl0ZW1Tb3VyY2VSZXNwb25zZSIAElkKDkdldFN5bmNIaXN0b3J5EiEuc2Vzc2lvbi52MS5HZXRTeW5jSGlzdG9yeVJlcXVlc3QaIi5zZXNzaW9uLnYxLkdldFN5bmNIaXN0b3J5UmVzcG9uc2UiABJ6ChlQcmV2aWV3QmFja3dhcmRTeW5jSW1wYWN0Eiwuc2Vzc2lvbi52MS5QcmV2aWV3QmFja3dhcmRTeW5jSW1wYWN0UmVxdWVzdBotLnNlc3Npb24udjEuUHJldmlld0JhY2t3YXJkU3luY0ltcGFjdFJlc3BvbnNlIgASZQoSQ3JlYXRlUGlwZWxpbmVNb2RlEiUuc2Vzc2lvbi52MS5DcmVhdGVQaXBlbGluZU1vZGVSZXF1ZXN0GiYuc2Vzc2lvbi52MS5DcmVhdGVQaXBlbGluZU1vZGVSZXNwb25zZSIAEmUKElVwZGF0ZVBpcGVsaW5lTW9kZRIlLnNlc3Npb24udjEuVXBkYXRlUGlwZWxpbmVNb2RlUmVxdWVzdBomLnNlc3Npb24udjEuVXBkYXRlUGlwZWxpbmVNb2RlUmVzcG9uc2UiABJlChJEZWxldGVQaXBlbGluZU1vZGUSJS5zZXNzaW9uLnYxLkRlbGV0ZVBpcGVsaW5lTW9kZVJlcXVlc3QaJi5zZXNzaW9uLnYxLkRlbGV0ZVBpcGVsaW5lTW9kZVJlc3BvbnNlIgASXAoPR2V0UGlwZWxpbmVNb2RlEiIuc2Vzc2lvbi52MS5HZXRQaXBlbGluZU1vZGVSZXF1ZXN0GiMuc2Vzc2lvbi52MS5HZXRQaXBlbGluZU1vZGVSZXNwb25zZSIAEmIKEUxpc3RQaXBlbGluZU1vZGVzEiQuc2Vzc2lvbi52MS5MaXN0UGlwZWxpbmVNb2Rlc1JlcXVlc3QaJS5zZXNzaW9uLnYxLkxpc3RQaXBlbGluZU1vZGVzUmVzcG9uc2UiABJiChFJbXBvcnRHaXRIdWJJc3N1ZRIkLnNlc3Npb24udjEuSW1wb3J0R2l0SHViSXNzdWVSZXF1ZXN0GiUuc2Vzc2lvbi52MS5JbXBvcnRHaXRIdWJJc3N1ZVJlc3BvbnNlIgASYgoRU2VhcmNoR2l0SHViUmVwb3MSJC5zZXNzaW9uLnYxLlNlYXJjaEdpdEh1YlJlcG9zUmVxdWVzdBolLnNlc3Npb24udjEuU2VhcmNoR2l0SHViUmVwb3NSZXNwb25zZSIAEl8KEExpc3RHaXRIdWJJc3N1ZXMSIy5zZXNzaW9uLnYxLkxpc3RHaXRIdWJJc3N1ZXNSZXF1ZXN0GiQuc2Vzc2lvbi52MS5MaXN0R2l0SHViSXNzdWVzUmVzcG9uc2UiABJlChJHZXRCYWNrbG9nSXRlbURpZmYSJS5zZXNzaW9uLnYxLkdldEJhY2tsb2dJdGVtRGlmZlJlcXVlc3QaJi5zZXNzaW9uLnYxLkdldEJhY2tsb2dJdGVtRGlmZlJlc3BvbnNlIgASZQoSR2V0QmFja2xvZ0l0ZW1Db3N0EiUuc2Vzc2lvbi52MS5HZXRCYWNrbG9nSXRlbUNvc3RSZXF1ZXN0GiYuc2Vzc2lvbi52MS5HZXRCYWNrbG9nSXRlbUNvc3RSZXNwb25zZSIAEnEKFkdldFNlc3Npb25CYWNrbG9nSW5kZXgSKS5zZXNzaW9uLnYxLkdldFNlc3Npb25CYWNrbG9nSW5kZXhSZXF1ZXN0Giouc2Vzc2lvbi52MS5HZXRTZXNzaW9uQmFja2xvZ0luZGV4UmVzcG9uc2UiABJlChJTdWJtaXRNYW51YWxSZXZpZXcSJS5zZXNzaW9uLnYxLlN1Ym1pdE1hbnVhbFJldmlld1JlcXVlc3QaJi5zZXNzaW9uLnYxLlN1Ym1pdE1hbnVhbFJldmlld1Jlc3BvbnNlIgASbgoVTGlzdFN0dWNrQmFja2xvZ0l0ZW1zEiguc2Vzc2lvbi52MS5MaXN0U3R1Y2tCYWNrbG9nSXRlbXNSZXF1ZXN0Gikuc2Vzc2lvbi52MS5MaXN0U3R1Y2tCYWNrbG9nSXRlbXNSZXNwb25zZSIAElwKD1Nub296ZVN0dWNrSXRlbRIiLnNlc3Npb24udjEuU25vb3plU3R1Y2tJdGVtUmVxdWVzdBojLnNlc3Npb24udjEuU25vb3plU3R1Y2tJdGVtUmVzcG9uc2UiABJuChVSZXNldFN0dWNrUmVtZWRpYXRpb24SKC5zZXNzaW9uLnYxLlJlc2V0U3R1Y2tSZW1lZGlhdGlvblJlcXVlc3QaKS5zZXNzaW9uLnYxLlJlc2V0U3R1Y2tSZW1lZGlhdGlvblJlc3BvbnNlIgASegoZQnVsa1Jlc2V0U3R1Y2tSZW1lZGlhdGlvbhIsLnNlc3Npb24udjEuQnVsa1Jlc2V0U3R1Y2tSZW1lZGlhdGlvblJlcXVlc3QaLS5zZXNzaW9uLnYxLkJ1bGtSZXNldFN0dWNrUmVtZWRpYXRpb25SZXNwb25zZSIAEm4KFVRyaWdnZXJSZW1lZGlhdGlvbk5vdxIoLnNlc3Npb24udjEuVHJpZ2dlclJlbWVkaWF0aW9uTm93UmVxdWVzdBopLnNlc3Npb24udjEuVHJpZ2dlclJlbWVkaWF0aW9uTm93UmVzcG9uc2UiABJbChFXYXRjaEJhY2tsb2dJdGVtcxIkLnNlc3Npb24udjEuV2F0Y2hCYWNrbG9nSXRlbXNSZXF1ZXN0Ghwuc2Vzc2lvbi52MS5CYWNrbG9nSXRlbUV2ZW50IgAwAUKsAQoOY29tLnNlc3Npb24udjFCDEJhY2tsb2dQcm90b1ABWkNnaXRodWIuY29tL3RzdGFwbGVyL3N0YXBsZXItc3F1YWQvZ2VuL3Byb3RvL2dvL3Nlc3Npb24vdjE7c2Vzc2lvbnYxogIDU1hYqgIKU2Vzc2lvbi5WMcoCClNlc3Npb25cVjHiAhZTZXNzaW9uXFYxXEdQQk1ldGFkYXRh6gILU2Vzc2lvbjo6VjFiBnByb3RvMw", [file_google_protobuf_timestamp, file_session_v1_types]); - -/** - * AcCriterion represents a single acceptance criterion for a backlog item. - * - * @generated from message session.v1.AcCriterion - */ -export type AcCriterion = Message<"session.v1.AcCriterion"> & { - /** - * @generated from field: int32 index = 1; - */ - index: number; - - /** - * @generated from field: string text = 2; - */ - text: string; - - /** - * "pending", "in_progress", "done" - * - * @generated from field: string status = 3; - */ - status: string; -}; - -/** - * Describes the message session.v1.AcCriterion. - * Use `create(AcCriterionSchema)` to create a new message. - */ -export const AcCriterionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 0); - -/** - * CriterionVerdict holds the review outcome for a single acceptance criterion. - * - * @generated from message session.v1.CriterionVerdict - */ -export type CriterionVerdict = Message<"session.v1.CriterionVerdict"> & { - /** - * @generated from field: int32 criterion_index = 1; - */ - criterionIndex: number; - - /** - * @generated from field: string outcome = 2; - */ - outcome: string; - - /** - * @generated from field: string evidence = 3; - */ - evidence: string; -}; - -/** - * Describes the message session.v1.CriterionVerdict. - * Use `create(CriterionVerdictSchema)` to create a new message. - */ -export const CriterionVerdictSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 1); - -/** - * ReviewVerdict captures the overall and per-criterion review outcome for an - * item session. - * - * @generated from message session.v1.ReviewVerdict - */ -export type ReviewVerdict = Message<"session.v1.ReviewVerdict"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string overall_outcome = 2; - */ - overallOutcome: string; - - /** - * @generated from field: repeated session.v1.CriterionVerdict per_criterion = 3; - */ - perCriterion: CriterionVerdict[]; - - /** - * @generated from field: string summary = 4; - */ - summary: string; - - /** - * @generated from field: string diff_hash = 5; - */ - diffHash: string; - - /** - * @generated from field: int32 diff_token_count = 6; - */ - diffTokenCount: number; - - /** - * @generated from field: bool diff_truncated = 7; - */ - diffTruncated: boolean; - - /** - * @generated from field: string override_by = 8; - */ - overrideBy: string; - - /** - * @generated from field: string override_reason = 9; - */ - overrideReason: string; - - /** - * @generated from field: google.protobuf.Timestamp override_at = 10; - */ - overrideAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 11; - */ - createdAt?: Timestamp; -}; - -/** - * Describes the message session.v1.ReviewVerdict. - * Use `create(ReviewVerdictSchema)` to create a new message. - */ -export const ReviewVerdictSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 2); - -/** - * TriageSuggestion represents a single suggestion from the triage agent. - * - * @generated from message session.v1.TriageSuggestion - */ -export type TriageSuggestion = Message<"session.v1.TriageSuggestion"> & { - /** - * @generated from field: string text = 1; - */ - text: string; - - /** - * "question" marker for R7-lite clarifying questions - * - * @generated from field: string rationale = 2; - */ - rationale: string; -}; - -/** - * Describes the message session.v1.TriageSuggestion. - * Use `create(TriageSuggestionSchema)` to create a new message. - */ -export const TriageSuggestionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 3); - -/** - * TriageTask represents a single implementation task from the triage plan. - * - * @generated from message session.v1.TriageTask - */ -export type TriageTask = Message<"session.v1.TriageTask"> & { - /** - * one-line task description - * - * @generated from field: string text = 1; - */ - text: string; - - /** - * e.g. "2h", "30m" - * - * @generated from field: string estimate = 2; - */ - estimate: string; - - /** - * e.g. "backend", "frontend", "test", "infra", "docs" - * - * @generated from field: string category = 3; - */ - category: string; -}; - -/** - * Describes the message session.v1.TriageTask. - * Use `create(TriageTaskSchema)` to create a new message. - */ -export const TriageTaskSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 4); - -/** - * TriageResult holds the output from a completed triage session. - * - * @generated from message session.v1.TriageResult - */ -export type TriageResult = Message<"session.v1.TriageResult"> & { - /** - * @generated from field: string summary = 1; - */ - summary: string; - - /** - * @generated from field: repeated session.v1.TriageSuggestion suggestions = 2; - */ - suggestions: TriageSuggestion[]; - - /** - * @generated from field: repeated string clarifying_questions = 3; - */ - clarifyingQuestions: string[]; - - /** - * @generated from field: repeated session.v1.TriageTask tasks = 4; - */ - tasks: TriageTask[]; - - /** - * iteration is 1 for the initial triage run, incrementing by one for each - * feedback-driven re-triage of the same item. - * - * @generated from field: int32 iteration = 5; - */ - iteration: number; - - /** - * feedback is the free-text feedback that produced this iteration, empty - * for the initial (non-refined) triage run. - * - * @generated from field: string feedback = 6; - */ - feedback: string; -}; - -/** - * Describes the message session.v1.TriageResult. - * Use `create(TriageResultSchema)` to create a new message. - */ -export const TriageResultSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 5); - -/** - * ItemSession records a session that was spawned or attached to a backlog item. - * - * @generated from message session.v1.ItemSession - */ -export type ItemSession = Message<"session.v1.ItemSession"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string session_uuid = 2; - */ - sessionUuid: string; - - /** - * @generated from field: string session_role = 3; - */ - sessionRole: string; - - /** - * @generated from field: google.protobuf.Timestamp started_at = 4; - */ - startedAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp ended_at = 5; - */ - endedAt?: Timestamp; - - /** - * @generated from field: string last_commit_message = 6; - */ - lastCommitMessage: string; - - /** - * @generated from field: google.protobuf.Timestamp last_commit_at = 7; - */ - lastCommitAt?: Timestamp; - - /** - * @generated from field: int32 commit_count_since_spawn = 8; - */ - commitCountSinceSpawn: number; - - /** - * @generated from field: google.protobuf.Timestamp last_file_touch_at = 9; - */ - lastFileTouchAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 10; - */ - createdAt?: Timestamp; - - /** - * @generated from field: session.v1.ReviewVerdict review_verdict = 11; - */ - reviewVerdict?: ReviewVerdict; - - /** - * @generated from field: session.v1.TriageResult triage_result = 12; - */ - triageResult?: TriageResult; - - /** - * @generated from field: double estimated_cost_usd = 13; - */ - estimatedCostUsd: number; - - /** - * @generated from field: string worktree_branch = 14; - */ - worktreeBranch: string; - - /** - * @generated from field: string worktree_path = 15; - */ - worktreePath: string; - - /** - * @generated from field: string pipeline_mode_snapshot = 16; - */ - pipelineModeSnapshot: string; - - /** - * @generated from field: string pipeline_mode_snapshot_hash = 17; - */ - pipelineModeSnapshotHash: string; -}; - -/** - * Describes the message session.v1.ItemSession. - * Use `create(ItemSessionSchema)` to create a new message. - */ -export const ItemSessionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 6); - -/** - * BacklogStatusEvent records a single status transition for a backlog item. - * - * @generated from message session.v1.BacklogStatusEvent - */ -export type BacklogStatusEvent = Message<"session.v1.BacklogStatusEvent"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string from_status = 2; - */ - fromStatus: string; - - /** - * @generated from field: string to_status = 3; - */ - toStatus: string; - - /** - * "user" or "system" - * - * @generated from field: string triggered_by = 4; - */ - triggeredBy: string; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 5; - */ - createdAt?: Timestamp; - - /** - * note is the human-readable reason for this transition, e.g. "auto-reopened - * after FAIL verdict" or "PASS verdict — pushed branch and opened PR". Already - * captured durably (session.BacklogStatusEventData.Note) but previously never - * surfaced over the wire — the "why" behind reviewer/system decisions. - * - * @generated from field: optional string note = 6; - */ - note?: string; -}; - -/** - * Describes the message session.v1.BacklogStatusEvent. - * Use `create(BacklogStatusEventSchema)` to create a new message. - */ -export const BacklogStatusEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 7); - -/** - * BacklogProgressNote records a single report_progress call against one of a - * backlog item's acceptance criteria — the implementer's audit trail. Unlike - * AcCriterion.status (current status per criterion, overwritten on each call), - * this is an append-only history: every call is preserved. - * - * @generated from message session.v1.BacklogProgressNote - */ -export type BacklogProgressNote = Message<"session.v1.BacklogProgressNote"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: int32 criterion_index = 2; - */ - criterionIndex: number; - - /** - * @generated from field: string note = 3; - */ - note: string; - - /** - * "pending", "in_progress", "done", "fail" - * - * @generated from field: string status = 4; - */ - status: string; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 5; - */ - createdAt?: Timestamp; -}; - -/** - * Describes the message session.v1.BacklogProgressNote. - * Use `create(BacklogProgressNoteSchema)` to create a new message. - */ -export const BacklogProgressNoteSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 8); - -/** - * BacklogItem represents a unit of work in the backlog. - * - * @generated from message session.v1.BacklogItem - */ -export type BacklogItem = Message<"session.v1.BacklogItem"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string title = 2; - */ - title: string; - - /** - * @generated from field: string description = 3; - */ - description: string; - - /** - * @generated from field: repeated session.v1.AcCriterion acceptance_criteria = 4; - */ - acceptanceCriteria: AcCriterion[]; - - /** - * @generated from field: int32 priority = 5; - */ - priority: number; - - /** - * @generated from field: string status = 6; - */ - status: string; - - /** - * @generated from field: string repo_path = 7; - */ - repoPath: string; - - /** - * @generated from field: bool skip_review_gate = 8; - */ - skipReviewGate: boolean; - - /** - * @generated from field: bool skip_planning = 9; - */ - skipPlanning: boolean; - - /** - * @generated from field: bool plan_approved = 10; - */ - planApproved: boolean; - - /** - * @generated from field: google.protobuf.Timestamp plan_approved_at = 11; - */ - planApprovedAt?: Timestamp; - - /** - * @generated from field: string plan_artifacts_path = 12; - */ - planArtifactsPath: string; - - /** - * @generated from field: string notes = 13; - */ - notes: string; - - /** - * @generated from field: string external_id = 14; - */ - externalId: string; - - /** - * @generated from field: google.protobuf.Timestamp archived_at = 15; - */ - archivedAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 16; - */ - createdAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp updated_at = 17; - */ - updatedAt?: Timestamp; - - /** - * @generated from field: repeated session.v1.ItemSession item_sessions = 18; - */ - itemSessions: ItemSession[]; - - /** - * @generated from field: string source_id = 19; - */ - sourceId: string; - - /** - * @generated from field: repeated session.v1.BacklogStatusEvent status_events = 20; - */ - statusEvents: BacklogStatusEvent[]; - - /** - * @generated from field: double total_estimated_cost_usd = 21; - */ - totalEstimatedCostUsd: number; - - /** - * @generated from field: string pr_url = 22; - */ - prUrl: string; - - /** - * @generated from field: int32 pr_number = 23; - */ - prNumber: number; - - /** - * @generated from field: bool auto_spawn_session = 24; - */ - autoSpawnSession: boolean; - - /** - * @generated from field: optional string pipeline_mode = 25; - */ - pipelineMode?: string; - - /** - * @generated from field: bool auto_create_pr = 26; - */ - autoCreatePr: boolean; - - /** - * progress_notes is the implementer's append-only report_progress audit - * trail — eagerly loaded alongside status_events (see GetBacklogItem). - * - * @generated from field: repeated session.v1.BacklogProgressNote progress_notes = 27; - */ - progressNotes: BacklogProgressNote[]; - - /** - * rework_cap_override: unset means "use the global default" - * (MaxAutoReworkIterationsOrDefault). 0 = unlimited retries for this item. - * >0 = this item's own cap, replacing the global value. - * - * @generated from field: optional int32 rework_cap_override = 28; - */ - reworkCapOverride?: number; - - /** - * category is a coarse classification (bugfix/feature/chore/refactor) the - * frontend uses to pre-fill sane automation-toggle defaults at creation - * time. Unset/empty means uncategorized. - * - * @generated from field: optional string category = 29; - */ - category?: string; - - /** - * external_url is the source tracker's own URL for this item (e.g. a - * GitHub issue's html_url), populated for imported items only. - * - * @generated from field: optional string external_url = 30; - */ - externalUrl?: string; - - /** - * labels mirrors the source tracker's labels (e.g. a GitHub issue's label - * names), populated for imported items only. - * - * @generated from field: repeated string labels = 31; - */ - labels: string[]; - - /** - * allowed_transitions is the server's WorkflowEngine.AllowedTransitions(status) - * for this item's current status — the authoritative set of target statuses - * a manual status override may choose from. The frontend must render this - * list verbatim rather than re-encoding the transition graph client-side. - * - * @generated from field: repeated string allowed_transitions = 32; - */ - allowedTransitions: string[]; -}; - -/** - * Describes the message session.v1.BacklogItem. - * Use `create(BacklogItemSchema)` to create a new message. - */ -export const BacklogItemSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 9); - -/** - * ItemSource represents an external plugin source that syncs items into the - * backlog. - * - * @generated from message session.v1.ItemSource - */ -export type ItemSource = Message<"session.v1.ItemSource"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string plugin_id = 2; - */ - pluginId: string; - - /** - * @generated from field: string display_name = 3; - */ - displayName: string; - - /** - * @generated from field: bool enabled = 4; - */ - enabled: boolean; - - /** - * @generated from field: google.protobuf.Timestamp last_synced_at = 5; - */ - lastSyncedAt?: Timestamp; - - /** - * @generated from field: bool token_configured = 6; - */ - tokenConfigured: boolean; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 7; - */ - createdAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp updated_at = 8; - */ - updatedAt?: Timestamp; - - /** - * @generated from field: bool forward_sync_enabled = 9; - */ - forwardSyncEnabled: boolean; - - /** - * @generated from field: bool backward_sync_enabled = 10; - */ - backwardSyncEnabled: boolean; - - /** - * @generated from field: string forward_sync_close_label = 11; - */ - forwardSyncCloseLabel: string; -}; - -/** - * Describes the message session.v1.ItemSource. - * Use `create(ItemSourceSchema)` to create a new message. - */ -export const ItemSourceSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 10); - -/** - * PipelineMode is a named, slug-addressed, user-creatable definition of which - * slash-commands and prompt content a backlog item's pipeline uses. - * - * @generated from message session.v1.PipelineMode - */ -export type PipelineMode = Message<"session.v1.PipelineMode"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string slug = 2; - */ - slug: string; - - /** - * @generated from field: string name = 3; - */ - name: string; - - /** - * @generated from field: string description = 4; - */ - description: string; - - /** - * @generated from field: bool enabled = 5; - */ - enabled: boolean; - - /** - * @generated from field: string status_command_template = 6; - */ - statusCommandTemplate: string; - - /** - * @generated from field: string done_command_template = 7; - */ - doneCommandTemplate: string; - - /** - * @generated from field: string fail_command_template = 8; - */ - failCommandTemplate: string; - - /** - * @generated from field: string review_command_template = 9; - */ - reviewCommandTemplate: string; - - /** - * @generated from field: string ship_command_template = 10; - */ - shipCommandTemplate: string; - - /** - * @generated from field: string help_command_template = 11; - */ - helpCommandTemplate: string; - - /** - * @generated from field: string triage_prompt_template = 12; - */ - triagePromptTemplate: string; - - /** - * @generated from field: string review_prompt_template = 13; - */ - reviewPromptTemplate: string; - - /** - * @generated from field: string initial_prompt_template = 14; - */ - initialPromptTemplate: string; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 15; - */ - createdAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp updated_at = 16; - */ - updatedAt?: Timestamp; - - /** - * content_hash is DERIVED: computed on read (SHA-256 hex, truncated to 16 - * chars) from the row's live 9 content-template fields, in fixed field - * order — it is not a stored DB column. Used by the "what ran" UI to - * detect drift between a session's frozen snapshot hash and this mode's - * current content. - * - * @generated from field: string content_hash = 17; - */ - contentHash: string; -}; - -/** - * Describes the message session.v1.PipelineMode. - * Use `create(PipelineModeSchema)` to create a new message. - */ -export const PipelineModeSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 11); - -/** - * SourceSyncEvent records the result of a single sync run for an ItemSource. - * - * @generated from message session.v1.SourceSyncEvent - */ -export type SourceSyncEvent = Message<"session.v1.SourceSyncEvent"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: google.protobuf.Timestamp started_at = 2; - */ - startedAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp finished_at = 3; - */ - finishedAt?: Timestamp; - - /** - * @generated from field: int32 items_created = 4; - */ - itemsCreated: number; - - /** - * @generated from field: int32 items_updated = 5; - */ - itemsUpdated: number; - - /** - * @generated from field: int32 items_skipped = 6; - */ - itemsSkipped: number; - - /** - * @generated from field: int32 items_errored = 7; - */ - itemsErrored: number; - - /** - * @generated from field: string error_message = 8; - */ - errorMessage: string; -}; - -/** - * Describes the message session.v1.SourceSyncEvent. - * Use `create(SourceSyncEventSchema)` to create a new message. - */ -export const SourceSyncEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 12); - -/** - * @generated from message session.v1.CreateBacklogItemRequest - */ -export type CreateBacklogItemRequest = Message<"session.v1.CreateBacklogItemRequest"> & { - /** - * @generated from field: string title = 1; - */ - title: string; - - /** - * @generated from field: string description = 2; - */ - description: string; - - /** - * @generated from field: repeated session.v1.AcCriterion acceptance_criteria = 3; - */ - acceptanceCriteria: AcCriterion[]; - - /** - * @generated from field: int32 priority = 4; - */ - priority: number; - - /** - * @generated from field: bool skip_review_gate = 5; - */ - skipReviewGate: boolean; - - /** - * @generated from field: bool skip_planning = 6; - */ - skipPlanning: boolean; - - /** - * @generated from field: string repo_path = 7; - */ - repoPath: string; - - /** - * @generated from field: string notes = 8; - */ - notes: string; - - /** - * @generated from field: bool skip_triage = 9; - */ - skipTriage: boolean; - - /** - * @generated from field: bool auto_spawn_session = 10; - */ - autoSpawnSession: boolean; - - /** - * @generated from field: optional string pipeline_mode = 11; - */ - pipelineMode?: string; - - /** - * @generated from field: bool auto_create_pr = 12; - */ - autoCreatePr: boolean; - - /** - * category is a coarse classification (bugfix/feature/chore/refactor). - * Unset means uncategorized. - * - * @generated from field: optional string category = 13; - */ - category?: string; -}; - -/** - * Describes the message session.v1.CreateBacklogItemRequest. - * Use `create(CreateBacklogItemRequestSchema)` to create a new message. - */ -export const CreateBacklogItemRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 13); - -/** - * @generated from message session.v1.CreateBacklogItemResponse - */ -export type CreateBacklogItemResponse = Message<"session.v1.CreateBacklogItemResponse"> & { - /** - * @generated from field: session.v1.BacklogItem item = 1; - */ - item?: BacklogItem; - - /** - * @generated from field: bool triage_triggered = 2; - */ - triageTriggered: boolean; -}; - -/** - * Describes the message session.v1.CreateBacklogItemResponse. - * Use `create(CreateBacklogItemResponseSchema)` to create a new message. - */ -export const CreateBacklogItemResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 14); - -/** - * @generated from message session.v1.GetBacklogItemRequest - */ -export type GetBacklogItemRequest = Message<"session.v1.GetBacklogItemRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; -}; - -/** - * Describes the message session.v1.GetBacklogItemRequest. - * Use `create(GetBacklogItemRequestSchema)` to create a new message. - */ -export const GetBacklogItemRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 15); - -/** - * @generated from message session.v1.GetBacklogItemResponse - */ -export type GetBacklogItemResponse = Message<"session.v1.GetBacklogItemResponse"> & { - /** - * @generated from field: session.v1.BacklogItem item = 1; - */ - item?: BacklogItem; -}; - -/** - * Describes the message session.v1.GetBacklogItemResponse. - * Use `create(GetBacklogItemResponseSchema)` to create a new message. - */ -export const GetBacklogItemResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 16); - -/** - * BacklogItemShipStatus answers "did this item's code actually ship" from - * durable evidence (repo_path + the most recent work session's commit), - * rather than a live per-session worktree — the live VCSStatus widget can't - * answer this once a session's worktree has been cleaned up (done items). - * - * @generated from message session.v1.BacklogItemShipStatus - */ -export type BacklogItemShipStatus = Message<"session.v1.BacklogItemShipStatus"> & { - /** - * shipped is true when the last work-session commit is confirmed an - * ancestor of main, locally or via origin — see IsCommitOnMain. - * - * @generated from field: bool shipped = 1; - */ - shipped: boolean; - - /** - * shipped_via is "pr", "direct", or "" when not shipped. - * - * @generated from field: string shipped_via = 2; - */ - shippedVia: string; - - /** - * @generated from field: string pr_url = 3; - */ - prUrl: string; - - /** - * @generated from field: string branch_name = 4; - */ - branchName: string; - - /** - * branch_exists is false once the branch has been deleted (e.g. after a - * GitHub "delete branch on merge" or manual cleanup) — ahead_of_main / - * behind_main are only meaningful when this is true. - * - * @generated from field: bool branch_exists = 5; - */ - branchExists: boolean; - - /** - * @generated from field: int32 ahead_of_main = 6; - */ - aheadOfMain: number; - - /** - * @generated from field: int32 behind_main = 7; - */ - behindMain: number; - - /** - * @generated from field: string last_commit_sha = 8; - */ - lastCommitSha: string; - - /** - * @generated from field: string last_commit_message = 9; - */ - lastCommitMessage: string; - - /** - * @generated from field: google.protobuf.Timestamp last_commit_at = 10; - */ - lastCommitAt?: Timestamp; - - /** - * error is set (with all other fields at zero value) when repo_path is - * inaccessible or no work session ever committed anything. - * - * @generated from field: string error = 11; - */ - error: string; - - /** - * commits lists every commit in the shipped range (base..last work-session - * commit), newest first — like a PR's "Commits" tab, but derived from - * durable git history rather than the GitHub API, so it works the same - * whether the code shipped via a merged PR or a direct commit to main. - * - * @generated from field: repeated session.v1.ShippedCommit commits = 12; - */ - commits: ShippedCommit[]; - - /** - * shipped_check_conclusion holds the durable GitHub CI-conclusion snapshot - * captured at ship time — genuine GitHub CI-conclusion values only (or - * unset); never a capture-failure sentinel — see snapshot_capture_failed. - * Populated only when a durable snapshot exists (nil/zero-value otherwise). - * - * @generated from field: string shipped_check_conclusion = 13; - */ - shippedCheckConclusion: string; - - /** - * shipped_approved_count is the durable review-approval-count snapshot - * captured at ship time. Populated only when a durable snapshot exists - * (nil/zero-value otherwise). - * - * @generated from field: int32 shipped_approved_count = 14; - */ - shippedApprovedCount: number; - - /** - * shipped_changes_req_count is the durable "changes requested" review - * count snapshot captured at ship time. Populated only when a durable - * snapshot exists (nil/zero-value otherwise). - * - * @generated from field: int32 shipped_changes_req_count = 15; - */ - shippedChangesReqCount: number; - - /** - * file_stats is the durable per-file diff-stat snapshot captured at ship - * time. Populated only when a durable snapshot exists (nil/zero-value - * otherwise). - * - * @generated from field: repeated session.v1.ShippedFileStat file_stats = 16; - */ - fileStats: ShippedFileStat[]; - - /** - * snapshot_at is the timestamp the durable snapshot was captured at. - * Populated only when a durable snapshot exists (nil/zero-value - * otherwise). - * - * @generated from field: google.protobuf.Timestamp snapshot_at = 17; - */ - snapshotAt?: Timestamp; - - /** - * snapshot_capture_failed is true when CaptureShipSnapshot's GitHub-data - * group or file-stats group failed to capture at ship time — distinct - * from shipped_check_conclusion, which holds only genuine CI-conclusion - * values. Populated only when a durable snapshot exists (nil/zero-value - * otherwise). - * - * @generated from field: bool snapshot_capture_failed = 18; - */ - snapshotCaptureFailed: boolean; -}; - -/** - * Describes the message session.v1.BacklogItemShipStatus. - * Use `create(BacklogItemShipStatusSchema)` to create a new message. - */ -export const BacklogItemShipStatusSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 17); - -/** - * ShippedCommit is one commit in a BacklogItemShipStatus's shipped range. - * - * @generated from message session.v1.ShippedCommit - */ -export type ShippedCommit = Message<"session.v1.ShippedCommit"> & { - /** - * @generated from field: string sha = 1; - */ - sha: string; - - /** - * first line of the commit message - * - * @generated from field: string summary = 2; - */ - summary: string; - - /** - * @generated from field: string author_name = 3; - */ - authorName: string; - - /** - * @generated from field: google.protobuf.Timestamp authored_at = 4; - */ - authoredAt?: Timestamp; -}; - -/** - * Describes the message session.v1.ShippedCommit. - * Use `create(ShippedCommitSchema)` to create a new message. - */ -export const ShippedCommitSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 18); - -/** - * ShippedFileStat is one file's durable per-file diff-stat snapshot, - * captured at ship time via FileStatsBetween. Mirrors FileChange's field - * shape so the proto<->ent mapping stays mechanical. - * - * @generated from message session.v1.ShippedFileStat - */ -export type ShippedFileStat = Message<"session.v1.ShippedFileStat"> & { - /** - * @generated from field: string path = 1; - */ - path: string; - - /** - * @generated from field: session.v1.FileStatus status = 2; - */ - status: FileStatus; - - /** - * @generated from field: int32 additions = 3; - */ - additions: number; - - /** - * @generated from field: int32 deletions = 4; - */ - deletions: number; -}; - -/** - * Describes the message session.v1.ShippedFileStat. - * Use `create(ShippedFileStatSchema)` to create a new message. - */ -export const ShippedFileStatSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 19); - -/** - * @generated from message session.v1.GetBacklogItemShipStatusRequest - */ -export type GetBacklogItemShipStatusRequest = Message<"session.v1.GetBacklogItemShipStatusRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; -}; - -/** - * Describes the message session.v1.GetBacklogItemShipStatusRequest. - * Use `create(GetBacklogItemShipStatusRequestSchema)` to create a new message. - */ -export const GetBacklogItemShipStatusRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 20); - -/** - * @generated from message session.v1.GetBacklogItemShipStatusResponse - */ -export type GetBacklogItemShipStatusResponse = Message<"session.v1.GetBacklogItemShipStatusResponse"> & { - /** - * @generated from field: session.v1.BacklogItemShipStatus status = 1; - */ - status?: BacklogItemShipStatus; -}; - -/** - * Describes the message session.v1.GetBacklogItemShipStatusResponse. - * Use `create(GetBacklogItemShipStatusResponseSchema)` to create a new message. - */ -export const GetBacklogItemShipStatusResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 21); - -/** - * @generated from message session.v1.ListBacklogItemsRequest - */ -export type ListBacklogItemsRequest = Message<"session.v1.ListBacklogItemsRequest"> & { - /** - * @generated from field: repeated string status = 1; - */ - status: string[]; - - /** - * @generated from field: repeated int32 priority = 2; - */ - priority: number[]; - - /** - * @generated from field: string sort_by = 3; - */ - sortBy: string; - - /** - * include_terminal, when true, includes items with status "done" in the - * default (no explicit `status` filter) result set. Independent of - * include_archived below — this field no longer also controls "archived" - * visibility (see include_archived's doc comment for why that split - * exists). - * - * @generated from field: bool include_terminal = 4; - */ - includeTerminal: boolean; - - /** - * include_archived, when true, includes items with status "archived" in - * the default (no explicit `status` filter) result set. Split out from - * include_terminal so a client can show "done" items by default while - * still hiding "archived" ones unless the user opts in (mirrors the - * session list's "Show Archived" toggle). Ignored when `status` is set - * explicitly — an explicit status filter always wins. - * - * @generated from field: bool include_archived = 5; - */ - includeArchived: boolean; -}; - -/** - * Describes the message session.v1.ListBacklogItemsRequest. - * Use `create(ListBacklogItemsRequestSchema)` to create a new message. - */ -export const ListBacklogItemsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 22); - -/** - * @generated from message session.v1.ListBacklogItemsResponse - */ -export type ListBacklogItemsResponse = Message<"session.v1.ListBacklogItemsResponse"> & { - /** - * @generated from field: repeated session.v1.BacklogItem items = 1; - */ - items: BacklogItem[]; -}; - -/** - * Describes the message session.v1.ListBacklogItemsResponse. - * Use `create(ListBacklogItemsResponseSchema)` to create a new message. - */ -export const ListBacklogItemsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 23); - -/** - * @generated from message session.v1.UpdateBacklogItemRequest - */ -export type UpdateBacklogItemRequest = Message<"session.v1.UpdateBacklogItemRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: string title = 2; - */ - title: string; - - /** - * @generated from field: string description = 3; - */ - description: string; - - /** - * @generated from field: repeated session.v1.AcCriterion acceptance_criteria = 4; - */ - acceptanceCriteria: AcCriterion[]; - - /** - * @generated from field: int32 priority = 5; - */ - priority: number; - - /** - * @generated from field: bool skip_review_gate = 6; - */ - skipReviewGate: boolean; - - /** - * @generated from field: bool skip_planning = 7; - */ - skipPlanning: boolean; - - /** - * @generated from field: string repo_path = 8; - */ - repoPath: string; - - /** - * @generated from field: string notes = 9; - */ - notes: string; - - /** - * @generated from field: string expected_status = 10; - */ - expectedStatus: string; - - /** - * @generated from field: google.protobuf.Timestamp expected_updated_at = 11; - */ - expectedUpdatedAt?: Timestamp; - - /** - * @generated from field: bool auto_spawn_session = 12; - */ - autoSpawnSession: boolean; - - /** - * @generated from field: optional string pipeline_mode = 13; - */ - pipelineMode?: string; - - /** - * @generated from field: bool auto_create_pr = 14; - */ - autoCreatePr: boolean; - - /** - * rework_cap_override is a per-item override for the auto-rework cap. - * Unset = leave the item's stored override untouched. 0 = unlimited retries - * for this item. >0 = this item's own cap, replacing the global default. - * - * @generated from field: optional int32 rework_cap_override = 15; - */ - reworkCapOverride?: number; - - /** - * category is presence-gated (optional string on the wire): unset means - * "leave the item's stored category untouched", a non-nil pointer - * (including one pointing at "") explicitly sets/clears it. - * - * @generated from field: optional string category = 16; - */ - category?: string; - - /** - * pr_url/pr_number are presence-gated (optional on the wire) and must be - * set together or not at all: setting exactly one is rejected with - * CodeInvalidArgument. When both are set, the server validates pr_url - * parses as a GitHub PR URL whose embedded PR number matches pr_number, - * then writes through the shared SetBacklogItemPRAndTransition primitive - * (requires the item to currently be in "review" status). - * - * @generated from field: optional string pr_url = 17; - */ - prUrl?: string; - - /** - * @generated from field: optional int32 pr_number = 18; - */ - prNumber?: number; -}; - -/** - * Describes the message session.v1.UpdateBacklogItemRequest. - * Use `create(UpdateBacklogItemRequestSchema)` to create a new message. - */ -export const UpdateBacklogItemRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 24); - -/** - * @generated from message session.v1.UpdateBacklogItemResponse - */ -export type UpdateBacklogItemResponse = Message<"session.v1.UpdateBacklogItemResponse"> & { - /** - * @generated from field: session.v1.BacklogItem item = 1; - */ - item?: BacklogItem; -}; - -/** - * Describes the message session.v1.UpdateBacklogItemResponse. - * Use `create(UpdateBacklogItemResponseSchema)` to create a new message. - */ -export const UpdateBacklogItemResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 25); - -/** - * @generated from message session.v1.ArchiveBacklogItemRequest - */ -export type ArchiveBacklogItemRequest = Message<"session.v1.ArchiveBacklogItemRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; -}; - -/** - * Describes the message session.v1.ArchiveBacklogItemRequest. - * Use `create(ArchiveBacklogItemRequestSchema)` to create a new message. - */ -export const ArchiveBacklogItemRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 26); - -/** - * @generated from message session.v1.ArchiveBacklogItemResponse - */ -export type ArchiveBacklogItemResponse = Message<"session.v1.ArchiveBacklogItemResponse"> & { - /** - * @generated from field: session.v1.BacklogItem item = 1; - */ - item?: BacklogItem; -}; - -/** - * Describes the message session.v1.ArchiveBacklogItemResponse. - * Use `create(ArchiveBacklogItemResponseSchema)` to create a new message. - */ -export const ArchiveBacklogItemResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 27); - -/** - * @generated from message session.v1.DeleteBacklogItemRequest - */ -export type DeleteBacklogItemRequest = Message<"session.v1.DeleteBacklogItemRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; -}; - -/** - * Describes the message session.v1.DeleteBacklogItemRequest. - * Use `create(DeleteBacklogItemRequestSchema)` to create a new message. - */ -export const DeleteBacklogItemRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 28); - -/** - * @generated from message session.v1.DeleteBacklogItemResponse - */ -export type DeleteBacklogItemResponse = Message<"session.v1.DeleteBacklogItemResponse"> & { -}; - -/** - * Describes the message session.v1.DeleteBacklogItemResponse. - * Use `create(DeleteBacklogItemResponseSchema)` to create a new message. - */ -export const DeleteBacklogItemResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 29); - -/** - * @generated from message session.v1.TransitionBacklogItemStatusRequest - */ -export type TransitionBacklogItemStatusRequest = Message<"session.v1.TransitionBacklogItemStatusRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: string target_status = 2; - */ - targetStatus: string; - - /** - * @generated from field: string expected_status = 3; - */ - expectedStatus: string; - - /** - * @generated from field: google.protobuf.Timestamp expected_updated_at = 4; - */ - expectedUpdatedAt?: Timestamp; - - /** - * @generated from field: string override_reason = 5; - */ - overrideReason: string; -}; - -/** - * Describes the message session.v1.TransitionBacklogItemStatusRequest. - * Use `create(TransitionBacklogItemStatusRequestSchema)` to create a new message. - */ -export const TransitionBacklogItemStatusRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 30); - -/** - * @generated from message session.v1.TransitionBacklogItemStatusResponse - */ -export type TransitionBacklogItemStatusResponse = Message<"session.v1.TransitionBacklogItemStatusResponse"> & { - /** - * @generated from field: session.v1.BacklogItem item = 1; - */ - item?: BacklogItem; -}; - -/** - * Describes the message session.v1.TransitionBacklogItemStatusResponse. - * Use `create(TransitionBacklogItemStatusResponseSchema)` to create a new message. - */ -export const TransitionBacklogItemStatusResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 31); - -/** - * @generated from message session.v1.SpawnSessionFromItemRequest - */ -export type SpawnSessionFromItemRequest = Message<"session.v1.SpawnSessionFromItemRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * Optional: If true, start an AutonomousDriver for the spawned session. - * - * @generated from field: bool autonomous = 3; - */ - autonomous: boolean; - - /** - * Optional: If true, stop any currently active work session for this item and - * re-spawn it from scratch (with a new git worktree). Used to restart existing - * sessions that were started under the old directory-mode code path. - * - * @generated from field: bool force = 4; - */ - force: boolean; -}; - -/** - * Describes the message session.v1.SpawnSessionFromItemRequest. - * Use `create(SpawnSessionFromItemRequestSchema)` to create a new message. - */ -export const SpawnSessionFromItemRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 32); - -/** - * @generated from message session.v1.SpawnSessionFromItemResponse - */ -export type SpawnSessionFromItemResponse = Message<"session.v1.SpawnSessionFromItemResponse"> & { - /** - * @generated from field: string session_uuid = 1; - */ - sessionUuid: string; - - /** - * @generated from field: session.v1.ItemSession item_session = 2; - */ - itemSession?: ItemSession; - - /** - * True if the spawn hit the concurrency cap and the item was transitioned to - * "queued" instead of spawning a session. session_uuid/item_session are empty - * in that case. - * - * @generated from field: bool queued = 3; - */ - queued: boolean; -}; - -/** - * Describes the message session.v1.SpawnSessionFromItemResponse. - * Use `create(SpawnSessionFromItemResponseSchema)` to create a new message. - */ -export const SpawnSessionFromItemResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 33); - -/** - * @generated from message session.v1.AttachSessionToItemRequest - */ -export type AttachSessionToItemRequest = Message<"session.v1.AttachSessionToItemRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: string session_uuid = 2; - */ - sessionUuid: string; -}; - -/** - * Describes the message session.v1.AttachSessionToItemRequest. - * Use `create(AttachSessionToItemRequestSchema)` to create a new message. - */ -export const AttachSessionToItemRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 34); - -/** - * @generated from message session.v1.AttachSessionToItemResponse - */ -export type AttachSessionToItemResponse = Message<"session.v1.AttachSessionToItemResponse"> & { - /** - * @generated from field: session.v1.ItemSession item_session = 1; - */ - itemSession?: ItemSession; -}; - -/** - * Describes the message session.v1.AttachSessionToItemResponse. - * Use `create(AttachSessionToItemResponseSchema)` to create a new message. - */ -export const AttachSessionToItemResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 35); - -/** - * @generated from message session.v1.TriggerTriageRequest - */ -export type TriggerTriageRequest = Message<"session.v1.TriggerTriageRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * feedback, if non-empty, requests a refinement of the item's most recent - * completed triage result instead of a fresh triage run. Requires a prior - * completed triage result to exist. - * - * @generated from field: string feedback = 2; - */ - feedback: string; -}; - -/** - * Describes the message session.v1.TriggerTriageRequest. - * Use `create(TriggerTriageRequestSchema)` to create a new message. - */ -export const TriggerTriageRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 36); - -/** - * @generated from message session.v1.TriggerTriageResponse - */ -export type TriggerTriageResponse = Message<"session.v1.TriggerTriageResponse"> & { - /** - * @generated from field: session.v1.ItemSession item_session = 1; - */ - itemSession?: ItemSession; -}; - -/** - * Describes the message session.v1.TriggerTriageResponse. - * Use `create(TriggerTriageResponseSchema)` to create a new message. - */ -export const TriggerTriageResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 37); - -/** - * @generated from message session.v1.ApprovePlanRequest - */ -export type ApprovePlanRequest = Message<"session.v1.ApprovePlanRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; -}; - -/** - * Describes the message session.v1.ApprovePlanRequest. - * Use `create(ApprovePlanRequestSchema)` to create a new message. - */ -export const ApprovePlanRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 38); - -/** - * @generated from message session.v1.ApprovePlanResponse - */ -export type ApprovePlanResponse = Message<"session.v1.ApprovePlanResponse"> & { - /** - * @generated from field: session.v1.BacklogItem item = 1; - */ - item?: BacklogItem; -}; - -/** - * Describes the message session.v1.ApprovePlanResponse. - * Use `create(ApprovePlanResponseSchema)` to create a new message. - */ -export const ApprovePlanResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 39); - -/** - * @generated from message session.v1.SuggestNextItemRequest - */ -export type SuggestNextItemRequest = Message<"session.v1.SuggestNextItemRequest"> & { -}; - -/** - * Describes the message session.v1.SuggestNextItemRequest. - * Use `create(SuggestNextItemRequestSchema)` to create a new message. - */ -export const SuggestNextItemRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 40); - -/** - * @generated from message session.v1.SuggestNextItemResponse - */ -export type SuggestNextItemResponse = Message<"session.v1.SuggestNextItemResponse"> & { - /** - * Deprecated: use item instead. Left for wire compatibility. - * - * @generated from field: session.v1.ItemSession item_session = 1; - */ - itemSession?: ItemSession; - - /** - * @generated from field: session.v1.BacklogItem item = 2; - */ - item?: BacklogItem; -}; - -/** - * Describes the message session.v1.SuggestNextItemResponse. - * Use `create(SuggestNextItemResponseSchema)` to create a new message. - */ -export const SuggestNextItemResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 41); - -/** - * @generated from message session.v1.OverrideVerdictRequest - */ -export type OverrideVerdictRequest = Message<"session.v1.OverrideVerdictRequest"> & { - /** - * @generated from field: string item_session_id = 1; - */ - itemSessionId: string; - - /** - * @generated from field: string to_status = 2; - */ - toStatus: string; - - /** - * @generated from field: string override_reason = 3; - */ - overrideReason: string; -}; - -/** - * Describes the message session.v1.OverrideVerdictRequest. - * Use `create(OverrideVerdictRequestSchema)` to create a new message. - */ -export const OverrideVerdictRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 42); - -/** - * @generated from message session.v1.OverrideVerdictResponse - */ -export type OverrideVerdictResponse = Message<"session.v1.OverrideVerdictResponse"> & { - /** - * @generated from field: session.v1.BacklogItem item = 1; - */ - item?: BacklogItem; -}; - -/** - * Describes the message session.v1.OverrideVerdictResponse. - * Use `create(OverrideVerdictResponseSchema)` to create a new message. - */ -export const OverrideVerdictResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 43); - -/** - * @generated from message session.v1.TriggerReReviewRequest - */ -export type TriggerReReviewRequest = Message<"session.v1.TriggerReReviewRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; -}; - -/** - * Describes the message session.v1.TriggerReReviewRequest. - * Use `create(TriggerReReviewRequestSchema)` to create a new message. - */ -export const TriggerReReviewRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 44); - -/** - * @generated from message session.v1.TriggerReReviewResponse - */ -export type TriggerReReviewResponse = Message<"session.v1.TriggerReReviewResponse"> & { - /** - * @generated from field: session.v1.ItemSession item_session = 1; - */ - itemSession?: ItemSession; -}; - -/** - * Describes the message session.v1.TriggerReReviewResponse. - * Use `create(TriggerReReviewResponseSchema)` to create a new message. - */ -export const TriggerReReviewResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 45); - -/** - * @generated from message session.v1.TriggerShipPRRequest - */ -export type TriggerShipPRRequest = Message<"session.v1.TriggerShipPRRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; -}; - -/** - * Describes the message session.v1.TriggerShipPRRequest. - * Use `create(TriggerShipPRRequestSchema)` to create a new message. - */ -export const TriggerShipPRRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 46); - -/** - * @generated from message session.v1.TriggerShipPRResponse - */ -export type TriggerShipPRResponse = Message<"session.v1.TriggerShipPRResponse"> & { - /** - * pr_url is the GitHub PR URL extracted from the one-shot run's output, or - * empty if the run completed without producing a detectable PR URL. - * - * @generated from field: string pr_url = 1; - */ - prUrl: string; -}; - -/** - * Describes the message session.v1.TriggerShipPRResponse. - * Use `create(TriggerShipPRResponseSchema)` to create a new message. - */ -export const TriggerShipPRResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 47); - -/** - * @generated from message session.v1.TriggerSyncRequest - */ -export type TriggerSyncRequest = Message<"session.v1.TriggerSyncRequest"> & { - /** - * @generated from field: string source_id = 1; - */ - sourceId: string; -}; - -/** - * Describes the message session.v1.TriggerSyncRequest. - * Use `create(TriggerSyncRequestSchema)` to create a new message. - */ -export const TriggerSyncRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 48); - -/** - * @generated from message session.v1.TriggerSyncResponse - */ -export type TriggerSyncResponse = Message<"session.v1.TriggerSyncResponse"> & { -}; - -/** - * Describes the message session.v1.TriggerSyncResponse. - * Use `create(TriggerSyncResponseSchema)` to create a new message. - */ -export const TriggerSyncResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 49); - -/** - * @generated from message session.v1.CreateItemSourceRequest - */ -export type CreateItemSourceRequest = Message<"session.v1.CreateItemSourceRequest"> & { - /** - * @generated from field: string plugin_id = 1; - */ - pluginId: string; - - /** - * @generated from field: string display_name = 2; - */ - displayName: string; - - /** - * @generated from field: string config_json = 3; - */ - configJson: string; - - /** - * @generated from field: string token = 4; - */ - token: string; -}; - -/** - * Describes the message session.v1.CreateItemSourceRequest. - * Use `create(CreateItemSourceRequestSchema)` to create a new message. - */ -export const CreateItemSourceRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 50); - -/** - * @generated from message session.v1.CreateItemSourceResponse - */ -export type CreateItemSourceResponse = Message<"session.v1.CreateItemSourceResponse"> & { - /** - * @generated from field: session.v1.ItemSource source = 1; - */ - source?: ItemSource; -}; - -/** - * Describes the message session.v1.CreateItemSourceResponse. - * Use `create(CreateItemSourceResponseSchema)` to create a new message. - */ -export const CreateItemSourceResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 51); - -/** - * @generated from message session.v1.ListItemSourcesRequest - */ -export type ListItemSourcesRequest = Message<"session.v1.ListItemSourcesRequest"> & { -}; - -/** - * Describes the message session.v1.ListItemSourcesRequest. - * Use `create(ListItemSourcesRequestSchema)` to create a new message. - */ -export const ListItemSourcesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 52); - -/** - * @generated from message session.v1.ListItemSourcesResponse - */ -export type ListItemSourcesResponse = Message<"session.v1.ListItemSourcesResponse"> & { - /** - * @generated from field: repeated session.v1.ItemSource sources = 1; - */ - sources: ItemSource[]; -}; - -/** - * Describes the message session.v1.ListItemSourcesResponse. - * Use `create(ListItemSourcesResponseSchema)` to create a new message. - */ -export const ListItemSourcesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 53); - -/** - * @generated from message session.v1.UpdateItemSourceRequest - */ -export type UpdateItemSourceRequest = Message<"session.v1.UpdateItemSourceRequest"> & { - /** - * @generated from field: string source_id = 1; - */ - sourceId: string; - - /** - * @generated from field: string display_name = 2; - */ - displayName: string; - - /** - * @generated from field: bool enabled = 3; - */ - enabled: boolean; - - /** - * @generated from field: string token = 4; - */ - token: string; - - /** - * @generated from field: bool forward_sync_enabled = 5; - */ - forwardSyncEnabled: boolean; - - /** - * @generated from field: bool backward_sync_enabled = 6; - */ - backwardSyncEnabled: boolean; - - /** - * @generated from field: string forward_sync_close_label = 7; - */ - forwardSyncCloseLabel: string; -}; - -/** - * Describes the message session.v1.UpdateItemSourceRequest. - * Use `create(UpdateItemSourceRequestSchema)` to create a new message. - */ -export const UpdateItemSourceRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 54); - -/** - * @generated from message session.v1.UpdateItemSourceResponse - */ -export type UpdateItemSourceResponse = Message<"session.v1.UpdateItemSourceResponse"> & { - /** - * @generated from field: session.v1.ItemSource source = 1; - */ - source?: ItemSource; -}; - -/** - * Describes the message session.v1.UpdateItemSourceResponse. - * Use `create(UpdateItemSourceResponseSchema)` to create a new message. - */ -export const UpdateItemSourceResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 55); - -/** - * @generated from message session.v1.DeleteItemSourceRequest - */ -export type DeleteItemSourceRequest = Message<"session.v1.DeleteItemSourceRequest"> & { - /** - * @generated from field: string source_id = 1; - */ - sourceId: string; -}; - -/** - * Describes the message session.v1.DeleteItemSourceRequest. - * Use `create(DeleteItemSourceRequestSchema)` to create a new message. - */ -export const DeleteItemSourceRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 56); - -/** - * @generated from message session.v1.DeleteItemSourceResponse - */ -export type DeleteItemSourceResponse = Message<"session.v1.DeleteItemSourceResponse"> & { -}; - -/** - * Describes the message session.v1.DeleteItemSourceResponse. - * Use `create(DeleteItemSourceResponseSchema)` to create a new message. - */ -export const DeleteItemSourceResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 57); - -/** - * @generated from message session.v1.GetSyncHistoryRequest - */ -export type GetSyncHistoryRequest = Message<"session.v1.GetSyncHistoryRequest"> & { - /** - * @generated from field: string source_id = 1; - */ - sourceId: string; -}; - -/** - * Describes the message session.v1.GetSyncHistoryRequest. - * Use `create(GetSyncHistoryRequestSchema)` to create a new message. - */ -export const GetSyncHistoryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 58); - -/** - * @generated from message session.v1.GetSyncHistoryResponse - */ -export type GetSyncHistoryResponse = Message<"session.v1.GetSyncHistoryResponse"> & { - /** - * @generated from field: repeated session.v1.SourceSyncEvent events = 1; - */ - events: SourceSyncEvent[]; - - /** - * True when the history was capped (see maxSourceSyncEventsHistory server-side) and older - * events beyond this response exist but are not returned — no pagination API exists yet. - * - * @generated from field: bool truncated = 2; - */ - truncated: boolean; -}; - -/** - * Describes the message session.v1.GetSyncHistoryResponse. - * Use `create(GetSyncHistoryResponseSchema)` to create a new message. - */ -export const GetSyncHistoryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 59); - -/** - * @generated from message session.v1.PreviewBackwardSyncImpactRequest - */ -export type PreviewBackwardSyncImpactRequest = Message<"session.v1.PreviewBackwardSyncImpactRequest"> & { - /** - * @generated from field: string source_id = 1; - */ - sourceId: string; -}; - -/** - * Describes the message session.v1.PreviewBackwardSyncImpactRequest. - * Use `create(PreviewBackwardSyncImpactRequestSchema)` to create a new message. - */ -export const PreviewBackwardSyncImpactRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 60); - -/** - * @generated from message session.v1.PreviewBackwardSyncImpactResponse - */ -export type PreviewBackwardSyncImpactResponse = Message<"session.v1.PreviewBackwardSyncImpactResponse"> & { - /** - * Count of already-imported items in idea/refining/ready/queued whose - * linked GitHub issue is currently closed — i.e. exactly the items - * determineBackwardSyncTarget would immediately archive if backward sync - * were enabled right now. - * - * @generated from field: int32 item_count = 1; - */ - itemCount: number; - - /** - * Up to 5 titles from the eligible set, for display in the confirmation - * dialog. Not necessarily all N items when item_count > 5. - * - * @generated from field: repeated string sample_titles = 2; - */ - sampleTitles: string[]; - - /** - * True if the underlying fetch hit its page cap while the last page was - * still full — meaning there may be more matching items beyond what was - * counted, so item_count/sample_titles must be treated as a lower bound - * rather than an exhaustive count. Only ever true on repos with an - * unusually large issue history (see maxPreviewFetchPages). - * - * @generated from field: bool possibly_incomplete = 3; - */ - possiblyIncomplete: boolean; -}; - -/** - * Describes the message session.v1.PreviewBackwardSyncImpactResponse. - * Use `create(PreviewBackwardSyncImpactResponseSchema)` to create a new message. - */ -export const PreviewBackwardSyncImpactResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 61); - -/** - * @generated from message session.v1.CreatePipelineModeRequest - */ -export type CreatePipelineModeRequest = Message<"session.v1.CreatePipelineModeRequest"> & { - /** - * @generated from field: string slug = 1; - */ - slug: string; - - /** - * @generated from field: string name = 2; - */ - name: string; - - /** - * @generated from field: string description = 3; - */ - description: string; - - /** - * @generated from field: bool enabled = 4; - */ - enabled: boolean; - - /** - * @generated from field: string status_command_template = 5; - */ - statusCommandTemplate: string; - - /** - * @generated from field: string done_command_template = 6; - */ - doneCommandTemplate: string; - - /** - * @generated from field: string fail_command_template = 7; - */ - failCommandTemplate: string; - - /** - * @generated from field: string review_command_template = 8; - */ - reviewCommandTemplate: string; - - /** - * @generated from field: string ship_command_template = 9; - */ - shipCommandTemplate: string; - - /** - * @generated from field: string help_command_template = 10; - */ - helpCommandTemplate: string; - - /** - * @generated from field: string triage_prompt_template = 11; - */ - triagePromptTemplate: string; - - /** - * @generated from field: string review_prompt_template = 12; - */ - reviewPromptTemplate: string; - - /** - * @generated from field: string initial_prompt_template = 13; - */ - initialPromptTemplate: string; -}; - -/** - * Describes the message session.v1.CreatePipelineModeRequest. - * Use `create(CreatePipelineModeRequestSchema)` to create a new message. - */ -export const CreatePipelineModeRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 62); - -/** - * @generated from message session.v1.CreatePipelineModeResponse - */ -export type CreatePipelineModeResponse = Message<"session.v1.CreatePipelineModeResponse"> & { - /** - * @generated from field: session.v1.PipelineMode item = 1; - */ - item?: PipelineMode; -}; - -/** - * Describes the message session.v1.CreatePipelineModeResponse. - * Use `create(CreatePipelineModeResponseSchema)` to create a new message. - */ -export const CreatePipelineModeResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 63); - -/** - * @generated from message session.v1.UpdatePipelineModeRequest - */ -export type UpdatePipelineModeRequest = Message<"session.v1.UpdatePipelineModeRequest"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: optional string name = 2; - */ - name?: string; - - /** - * @generated from field: optional string description = 3; - */ - description?: string; - - /** - * @generated from field: optional bool enabled = 4; - */ - enabled?: boolean; - - /** - * @generated from field: optional string status_command_template = 5; - */ - statusCommandTemplate?: string; - - /** - * @generated from field: optional string done_command_template = 6; - */ - doneCommandTemplate?: string; - - /** - * @generated from field: optional string fail_command_template = 7; - */ - failCommandTemplate?: string; - - /** - * @generated from field: optional string review_command_template = 8; - */ - reviewCommandTemplate?: string; - - /** - * @generated from field: optional string ship_command_template = 9; - */ - shipCommandTemplate?: string; - - /** - * @generated from field: optional string help_command_template = 10; - */ - helpCommandTemplate?: string; - - /** - * @generated from field: optional string triage_prompt_template = 11; - */ - triagePromptTemplate?: string; - - /** - * @generated from field: optional string review_prompt_template = 12; - */ - reviewPromptTemplate?: string; - - /** - * @generated from field: optional string initial_prompt_template = 13; - */ - initialPromptTemplate?: string; -}; - -/** - * Describes the message session.v1.UpdatePipelineModeRequest. - * Use `create(UpdatePipelineModeRequestSchema)` to create a new message. - */ -export const UpdatePipelineModeRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 64); - -/** - * @generated from message session.v1.UpdatePipelineModeResponse - */ -export type UpdatePipelineModeResponse = Message<"session.v1.UpdatePipelineModeResponse"> & { - /** - * @generated from field: session.v1.PipelineMode item = 1; - */ - item?: PipelineMode; -}; - -/** - * Describes the message session.v1.UpdatePipelineModeResponse. - * Use `create(UpdatePipelineModeResponseSchema)` to create a new message. - */ -export const UpdatePipelineModeResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 65); - -/** - * @generated from message session.v1.DeletePipelineModeRequest - */ -export type DeletePipelineModeRequest = Message<"session.v1.DeletePipelineModeRequest"> & { - /** - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.DeletePipelineModeRequest. - * Use `create(DeletePipelineModeRequestSchema)` to create a new message. - */ -export const DeletePipelineModeRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 66); - -/** - * @generated from message session.v1.DeletePipelineModeResponse - */ -export type DeletePipelineModeResponse = Message<"session.v1.DeletePipelineModeResponse"> & { -}; - -/** - * Describes the message session.v1.DeletePipelineModeResponse. - * Use `create(DeletePipelineModeResponseSchema)` to create a new message. - */ -export const DeletePipelineModeResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 67); - -/** - * @generated from message session.v1.GetPipelineModeRequest - */ -export type GetPipelineModeRequest = Message<"session.v1.GetPipelineModeRequest"> & { - /** - * @generated from field: string slug = 1; - */ - slug: string; -}; - -/** - * Describes the message session.v1.GetPipelineModeRequest. - * Use `create(GetPipelineModeRequestSchema)` to create a new message. - */ -export const GetPipelineModeRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 68); - -/** - * @generated from message session.v1.GetPipelineModeResponse - */ -export type GetPipelineModeResponse = Message<"session.v1.GetPipelineModeResponse"> & { - /** - * @generated from field: session.v1.PipelineMode item = 1; - */ - item?: PipelineMode; -}; - -/** - * Describes the message session.v1.GetPipelineModeResponse. - * Use `create(GetPipelineModeResponseSchema)` to create a new message. - */ -export const GetPipelineModeResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 69); - -/** - * @generated from message session.v1.ListPipelineModesRequest - */ -export type ListPipelineModesRequest = Message<"session.v1.ListPipelineModesRequest"> & { -}; - -/** - * Describes the message session.v1.ListPipelineModesRequest. - * Use `create(ListPipelineModesRequestSchema)` to create a new message. - */ -export const ListPipelineModesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 70); - -/** - * @generated from message session.v1.ListPipelineModesResponse - */ -export type ListPipelineModesResponse = Message<"session.v1.ListPipelineModesResponse"> & { - /** - * @generated from field: repeated session.v1.PipelineMode items = 1; - */ - items: PipelineMode[]; -}; - -/** - * Describes the message session.v1.ListPipelineModesResponse. - * Use `create(ListPipelineModesResponseSchema)` to create a new message. - */ -export const ListPipelineModesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 71); - -/** - * BacklogItemEvent represents a real-time change to a backlog item. - * Used for the WatchBacklogItems streaming RPC. - * - * @generated from message session.v1.BacklogItemEvent - */ -export type BacklogItemEvent = Message<"session.v1.BacklogItemEvent"> & { - /** - * Timestamp when the event occurred. - * - * @generated from field: google.protobuf.Timestamp timestamp = 1; - */ - timestamp?: Timestamp; - - /** - * Event type (one of the following). - * - * @generated from oneof session.v1.BacklogItemEvent.event - */ - event: { - /** - * @generated from field: session.v1.BacklogItemStatusChangedEvent status_changed = 2; - */ - value: BacklogItemStatusChangedEvent; - case: "statusChanged"; - } | { - /** - * @generated from field: session.v1.BacklogItemVerdictRecordedEvent verdict_recorded = 3; - */ - value: BacklogItemVerdictRecordedEvent; - case: "verdictRecorded"; - } | { - /** - * @generated from field: session.v1.BacklogItemSessionAttachedEvent session_attached = 4; - */ - value: BacklogItemSessionAttachedEvent; - case: "sessionAttached"; - } | { - /** - * @generated from field: session.v1.BacklogItemUpdatedEvent item_updated = 5; - */ - value: BacklogItemUpdatedEvent; - case: "itemUpdated"; - } | { - /** - * @generated from field: session.v1.BacklogItemArchivedEvent item_archived = 6; - */ - value: BacklogItemArchivedEvent; - case: "itemArchived"; - } | { - /** - * @generated from field: session.v1.BacklogItemRemovedEvent item_removed = 7; - */ - value: BacklogItemRemovedEvent; - case: "itemRemoved"; - } | { - /** - * Synthetic marker (no corresponding bus event) sent exactly once, at the - * end of WatchBacklogItems' initial phase (fresh snapshot or after_seq - * replay), but ONLY when that phase sent zero other events — e.g. a - * genuinely empty backlog, or a status_filter/category_filter matching - * nothing. Without it, a zero-item connection produces zero bytes on the - * wire, and the client's `for await` loop never resolves past its first - * iteration — permanently stuck at connectionState "connecting" even - * though the stream is healthy and correctly has nothing to report. See - * useWatchBacklogItems.ts's handling (falls through to a no-op case) and - * backlog_service_events.go's watchBacklogItems doc comment. - * - * @generated from field: session.v1.BacklogSnapshotCompleteEvent snapshot_complete = 9; - */ - value: BacklogSnapshotCompleteEvent; - case: "snapshotComplete"; - } | { case: undefined; value?: undefined }; - - /** - * Monotonically-increasing sequence number assigned by pkg/events.EventBus - * at Publish time, mirroring SessionEvent.seq. Zero means "no sequence - * information" — used for the per-item synthetic snapshot events sent on a - * fresh (non-replay) connection, which don't correspond to a single - * published bus event and must not participate in the frontend's - * afterSeq/gap-detection bookkeeping (see useWatchBacklogItems.ts). - * - * @generated from field: uint64 seq = 8; - */ - seq: bigint; -}; - -/** - * Describes the message session.v1.BacklogItemEvent. - * Use `create(BacklogItemEventSchema)` to create a new message. - */ -export const BacklogItemEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 72); - -/** - * BacklogItemStatusChangedEvent is emitted when an item's status transitions - * (e.g. "in_progress" -> "review"). - * - * @generated from message session.v1.BacklogItemStatusChangedEvent - */ -export type BacklogItemStatusChangedEvent = Message<"session.v1.BacklogItemStatusChangedEvent"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: string old_status = 2; - */ - oldStatus: string; - - /** - * @generated from field: string new_status = 3; - */ - newStatus: string; - - /** - * @generated from field: session.v1.BacklogItem item = 4; - */ - item?: BacklogItem; - - /** - * Whether this event is part of an initial snapshot (sent on stream - * connect/reconnect) rather than a live change. Frontend should not - * flash/notify for snapshot events. - * - * @generated from field: bool is_snapshot = 5; - */ - isSnapshot: boolean; -}; - -/** - * Describes the message session.v1.BacklogItemStatusChangedEvent. - * Use `create(BacklogItemStatusChangedEventSchema)` to create a new message. - */ -export const BacklogItemStatusChangedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 73); - -/** - * BacklogItemVerdictRecordedEvent is emitted when a review verdict is - * recorded for one of an item's sessions. - * - * @generated from message session.v1.BacklogItemVerdictRecordedEvent - */ -export type BacklogItemVerdictRecordedEvent = Message<"session.v1.BacklogItemVerdictRecordedEvent"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: session.v1.ReviewVerdict verdict = 2; - */ - verdict?: ReviewVerdict; - - /** - * @generated from field: session.v1.BacklogItem item = 3; - */ - item?: BacklogItem; - - /** - * @generated from field: bool is_snapshot = 4; - */ - isSnapshot: boolean; -}; - -/** - * Describes the message session.v1.BacklogItemVerdictRecordedEvent. - * Use `create(BacklogItemVerdictRecordedEventSchema)` to create a new message. - */ -export const BacklogItemVerdictRecordedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 74); - -/** - * BacklogItemSessionAttachedEvent is emitted when a session is spawned from - * or attached to a backlog item. - * - * @generated from message session.v1.BacklogItemSessionAttachedEvent - */ -export type BacklogItemSessionAttachedEvent = Message<"session.v1.BacklogItemSessionAttachedEvent"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: string session_id = 2; - */ - sessionId: string; - - /** - * @generated from field: session.v1.BacklogItem item = 3; - */ - item?: BacklogItem; - - /** - * @generated from field: bool is_snapshot = 4; - */ - isSnapshot: boolean; -}; - -/** - * Describes the message session.v1.BacklogItemSessionAttachedEvent. - * Use `create(BacklogItemSessionAttachedEventSchema)` to create a new message. - */ -export const BacklogItemSessionAttachedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 75); - -/** - * BacklogItemUpdatedEvent is emitted when one or more item fields change - * (title, description, priority, etc.) outside of a status transition. - * - * @generated from message session.v1.BacklogItemUpdatedEvent - */ -export type BacklogItemUpdatedEvent = Message<"session.v1.BacklogItemUpdatedEvent"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: repeated string updated_fields = 2; - */ - updatedFields: string[]; - - /** - * @generated from field: session.v1.BacklogItem item = 3; - */ - item?: BacklogItem; - - /** - * @generated from field: bool is_snapshot = 4; - */ - isSnapshot: boolean; -}; - -/** - * Describes the message session.v1.BacklogItemUpdatedEvent. - * Use `create(BacklogItemUpdatedEventSchema)` to create a new message. - */ -export const BacklogItemUpdatedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 76); - -/** - * BacklogItemArchivedEvent is emitted when an item is soft-deleted via - * ArchiveBacklogItem. - * - * @generated from message session.v1.BacklogItemArchivedEvent - */ -export type BacklogItemArchivedEvent = Message<"session.v1.BacklogItemArchivedEvent"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: google.protobuf.Timestamp archived_at = 2; - */ - archivedAt?: Timestamp; - - /** - * @generated from field: bool is_snapshot = 3; - */ - isSnapshot: boolean; -}; - -/** - * Describes the message session.v1.BacklogItemArchivedEvent. - * Use `create(BacklogItemArchivedEventSchema)` to create a new message. - */ -export const BacklogItemArchivedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 77); - -/** - * BacklogItemRemovedEvent is emitted when an item is permanently deleted via - * DeleteBacklogItem. Never part of a snapshot by definition — a removed item - * has nothing left to snapshot. - * - * @generated from message session.v1.BacklogItemRemovedEvent - */ -export type BacklogItemRemovedEvent = Message<"session.v1.BacklogItemRemovedEvent"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: string reason = 2; - */ - reason: string; -}; - -/** - * Describes the message session.v1.BacklogItemRemovedEvent. - * Use `create(BacklogItemRemovedEventSchema)` to create a new message. - */ -export const BacklogItemRemovedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 78); - -/** - * BacklogSnapshotCompleteEvent carries no data — it exists purely so the - * stream has sent at least one message by the time the initial phase - * (fresh snapshot or after_seq replay) finishes with zero real events to - * report. See BacklogItemEvent.snapshot_complete's doc comment. - * - * @generated from message session.v1.BacklogSnapshotCompleteEvent - */ -export type BacklogSnapshotCompleteEvent = Message<"session.v1.BacklogSnapshotCompleteEvent"> & { -}; - -/** - * Describes the message session.v1.BacklogSnapshotCompleteEvent. - * Use `create(BacklogSnapshotCompleteEventSchema)` to create a new message. - */ -export const BacklogSnapshotCompleteEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 79); - -/** - * WatchBacklogItemsRequest configures the WatchBacklogItems streaming RPC. - * - * @generated from message session.v1.WatchBacklogItemsRequest - */ -export type WatchBacklogItemsRequest = Message<"session.v1.WatchBacklogItemsRequest"> & { - /** - * Optional: only receive events for items with one of these statuses. - * - * @generated from field: repeated string status_filter = 1; - */ - statusFilter: string[]; - - /** - * Optional: only receive events for items in one of these categories. - * - * @generated from field: repeated string category_filter = 2; - */ - categoryFilter: string[]; - - /** - * Optional: resume a stream after this sequence number instead of - * receiving a fresh initial snapshot (see pkg/events.EventsSince). - * - * @generated from field: uint64 after_seq = 3; - */ - afterSeq: bigint; -}; - -/** - * Describes the message session.v1.WatchBacklogItemsRequest. - * Use `create(WatchBacklogItemsRequestSchema)` to create a new message. - */ -export const WatchBacklogItemsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 80); - -/** - * @generated from message session.v1.ImportGitHubIssueRequest - */ -export type ImportGitHubIssueRequest = Message<"session.v1.ImportGitHubIssueRequest"> & { - /** - * GitHub issue URL (https://github.com/owner/repo/issues/N) or shorthand (owner/repo#N). - * - * @generated from field: string issue_url = 1; - */ - issueUrl: string; - - /** - * Optional repo path override; if empty, derived from the issue URL. - * - * @generated from field: string repo_path = 2; - */ - repoPath: string; - - /** - * If true, skip automated triage after import. - * - * @generated from field: bool skip_planning = 3; - */ - skipPlanning: boolean; - - /** - * Optional GitHub account username to authenticate the import with, when - * multiple accounts are connected for the issue URL's host. Empty resolves - * to any configured token for that host (see github.GetKeychainTokenForHost). - * - * @generated from field: string account_username = 4; - */ - accountUsername: string; -}; - -/** - * Describes the message session.v1.ImportGitHubIssueRequest. - * Use `create(ImportGitHubIssueRequestSchema)` to create a new message. - */ -export const ImportGitHubIssueRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 81); - -/** - * @generated from message session.v1.ImportGitHubIssueResponse - */ -export type ImportGitHubIssueResponse = Message<"session.v1.ImportGitHubIssueResponse"> & { - /** - * @generated from field: session.v1.BacklogItem item = 1; - */ - item?: BacklogItem; - - /** - * @generated from field: bool triage_triggered = 2; - */ - triageTriggered: boolean; -}; - -/** - * Describes the message session.v1.ImportGitHubIssueResponse. - * Use `create(ImportGitHubIssueResponseSchema)` to create a new message. - */ -export const ImportGitHubIssueResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 82); - -/** - * @generated from message session.v1.CancelTriageRequest - */ -export type CancelTriageRequest = Message<"session.v1.CancelTriageRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; -}; - -/** - * Describes the message session.v1.CancelTriageRequest. - * Use `create(CancelTriageRequestSchema)` to create a new message. - */ -export const CancelTriageRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 83); - -/** - * @generated from message session.v1.CancelTriageResponse - */ -export type CancelTriageResponse = Message<"session.v1.CancelTriageResponse"> & { - /** - * @generated from field: bool cancelled = 1; - */ - cancelled: boolean; -}; - -/** - * Describes the message session.v1.CancelTriageResponse. - * Use `create(CancelTriageResponseSchema)` to create a new message. - */ -export const CancelTriageResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 84); - -/** - * @generated from message session.v1.GitHubRepoEntry - */ -export type GitHubRepoEntry = Message<"session.v1.GitHubRepoEntry"> & { - /** - * @generated from field: string owner = 1; - */ - owner: string; - - /** - * @generated from field: string repo = 2; - */ - repo: string; - - /** - * @generated from field: bool is_local = 3; - */ - isLocal: boolean; - - /** - * @generated from field: string local_path = 4; - */ - localPath: string; - - /** - * @generated from field: string description = 5; - */ - description: string; -}; - -/** - * Describes the message session.v1.GitHubRepoEntry. - * Use `create(GitHubRepoEntrySchema)` to create a new message. - */ -export const GitHubRepoEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 85); - -/** - * @generated from message session.v1.GitHubIssueEntry - */ -export type GitHubIssueEntry = Message<"session.v1.GitHubIssueEntry"> & { - /** - * @generated from field: int32 number = 1; - */ - number: number; - - /** - * @generated from field: string title = 2; - */ - title: string; - - /** - * @generated from field: string state = 3; - */ - state: string; - - /** - * @generated from field: string url = 4; - */ - url: string; - - /** - * @generated from field: repeated string labels = 5; - */ - labels: string[]; - - /** - * @generated from field: string body = 6; - */ - body: string; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 7; - */ - createdAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp updated_at = 8; - */ - updatedAt?: Timestamp; - - /** - * @generated from field: bool is_pr = 9; - */ - isPr: boolean; - - /** - * GitHub login of the issue's author. - * - * @generated from field: string author = 10; - */ - author: string; -}; - -/** - * Describes the message session.v1.GitHubIssueEntry. - * Use `create(GitHubIssueEntrySchema)` to create a new message. - */ -export const GitHubIssueEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 86); - -/** - * @generated from message session.v1.SearchGitHubReposRequest - */ -export type SearchGitHubReposRequest = Message<"session.v1.SearchGitHubReposRequest"> & { - /** - * @generated from field: string query = 1; - */ - query: string; - - /** - * @generated from field: int32 limit = 2; - */ - limit: number; -}; - -/** - * Describes the message session.v1.SearchGitHubReposRequest. - * Use `create(SearchGitHubReposRequestSchema)` to create a new message. - */ -export const SearchGitHubReposRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 87); - -/** - * @generated from message session.v1.SearchGitHubReposResponse - */ -export type SearchGitHubReposResponse = Message<"session.v1.SearchGitHubReposResponse"> & { - /** - * @generated from field: repeated session.v1.GitHubRepoEntry repos = 1; - */ - repos: GitHubRepoEntry[]; -}; - -/** - * Describes the message session.v1.SearchGitHubReposResponse. - * Use `create(SearchGitHubReposResponseSchema)` to create a new message. - */ -export const SearchGitHubReposResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 88); - -/** - * @generated from message session.v1.ListGitHubIssuesRequest - */ -export type ListGitHubIssuesRequest = Message<"session.v1.ListGitHubIssuesRequest"> & { - /** - * @generated from field: string owner = 1; - */ - owner: string; - - /** - * @generated from field: string repo = 2; - */ - repo: string; - - /** - * @generated from field: string state = 3; - */ - state: string; - - /** - * @generated from field: string search = 4; - */ - search: string; - - /** - * @generated from field: int32 limit = 5; - */ - limit: number; -}; - -/** - * Describes the message session.v1.ListGitHubIssuesRequest. - * Use `create(ListGitHubIssuesRequestSchema)` to create a new message. - */ -export const ListGitHubIssuesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 89); - -/** - * @generated from message session.v1.ListGitHubIssuesResponse - */ -export type ListGitHubIssuesResponse = Message<"session.v1.ListGitHubIssuesResponse"> & { - /** - * @generated from field: repeated session.v1.GitHubIssueEntry issues = 1; - */ - issues: GitHubIssueEntry[]; -}; - -/** - * Describes the message session.v1.ListGitHubIssuesResponse. - * Use `create(ListGitHubIssuesResponseSchema)` to create a new message. - */ -export const ListGitHubIssuesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 90); - -/** - * @generated from message session.v1.GetBacklogItemDiffRequest - */ -export type GetBacklogItemDiffRequest = Message<"session.v1.GetBacklogItemDiffRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; -}; - -/** - * Describes the message session.v1.GetBacklogItemDiffRequest. - * Use `create(GetBacklogItemDiffRequestSchema)` to create a new message. - */ -export const GetBacklogItemDiffRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 91); - -/** - * @generated from message session.v1.GetBacklogItemDiffResponse - */ -export type GetBacklogItemDiffResponse = Message<"session.v1.GetBacklogItemDiffResponse"> & { - /** - * @generated from field: string diff = 1; - */ - diff: string; - - /** - * @generated from field: int32 added = 2; - */ - added: number; - - /** - * @generated from field: int32 removed = 3; - */ - removed: number; -}; - -/** - * Describes the message session.v1.GetBacklogItemDiffResponse. - * Use `create(GetBacklogItemDiffResponseSchema)` to create a new message. - */ -export const GetBacklogItemDiffResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 92); - -/** - * @generated from message session.v1.SessionCostEntry - */ -export type SessionCostEntry = Message<"session.v1.SessionCostEntry"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * "work", "triage", "review" - * - * @generated from field: string session_role = 2; - */ - sessionRole: string; - - /** - * @generated from field: double estimated_cost_usd = 3; - */ - estimatedCostUsd: number; - - /** - * @generated from field: int64 input_tokens = 4; - */ - inputTokens: bigint; - - /** - * @generated from field: int64 output_tokens = 5; - */ - outputTokens: bigint; -}; - -/** - * Describes the message session.v1.SessionCostEntry. - * Use `create(SessionCostEntrySchema)` to create a new message. - */ -export const SessionCostEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 93); - -/** - * @generated from message session.v1.GetBacklogItemCostRequest - */ -export type GetBacklogItemCostRequest = Message<"session.v1.GetBacklogItemCostRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; -}; - -/** - * Describes the message session.v1.GetBacklogItemCostRequest. - * Use `create(GetBacklogItemCostRequestSchema)` to create a new message. - */ -export const GetBacklogItemCostRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 94); - -/** - * @generated from message session.v1.GetBacklogItemCostResponse - */ -export type GetBacklogItemCostResponse = Message<"session.v1.GetBacklogItemCostResponse"> & { - /** - * @generated from field: double total_cost_usd = 1; - */ - totalCostUsd: number; - - /** - * @generated from field: repeated session.v1.SessionCostEntry sessions = 2; - */ - sessions: SessionCostEntry[]; -}; - -/** - * Describes the message session.v1.GetBacklogItemCostResponse. - * Use `create(GetBacklogItemCostResponseSchema)` to create a new message. - */ -export const GetBacklogItemCostResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 95); - -/** - * BacklogSessionEntry maps a tmux session UUID to the backlog item it belongs to. - * - * @generated from message session.v1.BacklogSessionEntry - */ -export type BacklogSessionEntry = Message<"session.v1.BacklogSessionEntry"> & { - /** - * @generated from field: string session_uuid = 1; - */ - sessionUuid: string; - - /** - * @generated from field: string item_id = 2; - */ - itemId: string; - - /** - * @generated from field: string item_title = 3; - */ - itemTitle: string; - - /** - * @generated from field: string item_status = 4; - */ - itemStatus: string; - - /** - * @generated from field: string session_role = 5; - */ - sessionRole: string; -}; - -/** - * Describes the message session.v1.BacklogSessionEntry. - * Use `create(BacklogSessionEntrySchema)` to create a new message. - */ -export const BacklogSessionEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 96); - -/** - * @generated from message session.v1.GetSessionBacklogIndexRequest - */ -export type GetSessionBacklogIndexRequest = Message<"session.v1.GetSessionBacklogIndexRequest"> & { -}; - -/** - * Describes the message session.v1.GetSessionBacklogIndexRequest. - * Use `create(GetSessionBacklogIndexRequestSchema)` to create a new message. - */ -export const GetSessionBacklogIndexRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 97); - -/** - * @generated from message session.v1.GetSessionBacklogIndexResponse - */ -export type GetSessionBacklogIndexResponse = Message<"session.v1.GetSessionBacklogIndexResponse"> & { - /** - * @generated from field: repeated session.v1.BacklogSessionEntry entries = 1; - */ - entries: BacklogSessionEntry[]; -}; - -/** - * Describes the message session.v1.GetSessionBacklogIndexResponse. - * Use `create(GetSessionBacklogIndexResponseSchema)` to create a new message. - */ -export const GetSessionBacklogIndexResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 98); - -/** - * @generated from message session.v1.SubmitManualReviewRequest - */ -export type SubmitManualReviewRequest = Message<"session.v1.SubmitManualReviewRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * overall_outcome must be PASS, FAIL, PARTIAL, or UNVERIFIABLE. - * - * @generated from field: string overall_outcome = 2; - */ - overallOutcome: string; - - /** - * @generated from field: string summary = 3; - */ - summary: string; - - /** - * per_criterion_verdicts is optional. When empty, a single synthetic verdict - * is created using overall_outcome for all AC criteria. - * - * @generated from field: repeated session.v1.CriterionVerdict per_criterion_verdicts = 4; - */ - perCriterionVerdicts: CriterionVerdict[]; -}; - -/** - * Describes the message session.v1.SubmitManualReviewRequest. - * Use `create(SubmitManualReviewRequestSchema)` to create a new message. - */ -export const SubmitManualReviewRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 99); - -/** - * @generated from message session.v1.SubmitManualReviewResponse - */ -export type SubmitManualReviewResponse = Message<"session.v1.SubmitManualReviewResponse"> & { - /** - * @generated from field: session.v1.BacklogItem item = 1; - */ - item?: BacklogItem; -}; - -/** - * Describes the message session.v1.SubmitManualReviewResponse. - * Use `create(SubmitManualReviewResponseSchema)` to create a new message. - */ -export const SubmitManualReviewResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 100); - -/** - * StuckBacklogItem is a single open (unresolved, un-snoozed) BacklogStuckState - * row joined with its parent item's rendering-relevant fields. - * - * @generated from message session.v1.StuckBacklogItem - */ -export type StuckBacklogItem = Message<"session.v1.StuckBacklogItem"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: string title = 2; - */ - title: string; - - /** - * @generated from field: string status = 3; - */ - status: string; - - /** - * @generated from field: session.v1.StuckReason reason = 4; - */ - reason: StuckReason; - - /** - * @generated from field: google.protobuf.Timestamp first_detected_at = 5; - */ - firstDetectedAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp last_checked_at = 6; - */ - lastCheckedAt?: Timestamp; - - /** - * @generated from field: int32 pr_number = 7; - */ - prNumber: number; - - /** - * @generated from field: string pr_url = 8; - */ - prUrl: string; - - /** - * @generated from field: string context = 9; - */ - context: string; - - /** - * snoozed_until is present only when the row was already scheduled to - * become un-snoozed at query time (ListStuckBacklogItems only ever returns - * rows that are currently un-snoozed, so this is normally unset). - * - * @generated from field: google.protobuf.Timestamp snoozed_until = 10; - */ - snoozedUntil?: Timestamp; - - /** - * allow_auto_merge surfaces the repo's GitHub auto-merge setting, read-only - * and best-effort (see plan.md Story 4.1.4 / ADR discussion). This field is - * declared here so the Phase 4 frontend work doesn't require a second - * proto-gen round-trip, but it is intentionally left unset (not populated) - * by the ListStuckBacklogItems handler added in this change — Phase 4 owns - * fetching and populating it. Unset means "not fetched / unknown", not - * "auto-merge disabled". - * - * @generated from field: optional bool allow_auto_merge = 11; - */ - allowAutoMerge?: boolean; - - /** - * remediation_attempts is how many automated (or operator-triggered via - * TriggerRemediationNow) remediation attempts have been made for this open - * row. remediation_attempts >= 5 means the row is "parked" — automated - * remediation has stopped until ResetStuckRemediation is called. - * - * @generated from field: int32 remediation_attempts = 12; - */ - remediationAttempts: number; - - /** - * next_remediation_at is when this row becomes eligible for the next - * automated remediation attempt. Unset means either no attempt has been - * made yet (remediation_attempts == 0, eligible immediately) or the row is - * parked (remediation_attempts >= 5) — check remediation_attempts to tell - * the two apart. - * - * @generated from field: optional google.protobuf.Timestamp next_remediation_at = 13; - */ - nextRemediationAt?: Timestamp; - - /** - * plan_artifacts_path mirrors BacklogItem.plan_artifacts_path — empty means - * no plan exists yet. Lets the frontend gate the PLAN_NOT_APPROVED - * "Approve Plan" affordance on an actual plan existing, instead of trusting - * `reason` alone (which only refreshes on the next ReconcileStuck tick). - * - * @generated from field: string plan_artifacts_path = 14; - */ - planArtifactsPath: string; -}; - -/** - * Describes the message session.v1.StuckBacklogItem. - * Use `create(StuckBacklogItemSchema)` to create a new message. - */ -export const StuckBacklogItemSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 101); - -/** - * @generated from message session.v1.ListStuckBacklogItemsRequest - */ -export type ListStuckBacklogItemsRequest = Message<"session.v1.ListStuckBacklogItemsRequest"> & { -}; - -/** - * Describes the message session.v1.ListStuckBacklogItemsRequest. - * Use `create(ListStuckBacklogItemsRequestSchema)` to create a new message. - */ -export const ListStuckBacklogItemsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 102); - -/** - * @generated from message session.v1.ListStuckBacklogItemsResponse - */ -export type ListStuckBacklogItemsResponse = Message<"session.v1.ListStuckBacklogItemsResponse"> & { - /** - * @generated from field: repeated session.v1.StuckBacklogItem items = 1; - */ - items: StuckBacklogItem[]; -}; - -/** - * Describes the message session.v1.ListStuckBacklogItemsResponse. - * Use `create(ListStuckBacklogItemsResponseSchema)` to create a new message. - */ -export const ListStuckBacklogItemsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 103); - -/** - * @generated from message session.v1.SnoozeStuckItemRequest - */ -export type SnoozeStuckItemRequest = Message<"session.v1.SnoozeStuckItemRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: session.v1.StuckReason reason = 2; - */ - reason: StuckReason; - - /** - * @generated from field: google.protobuf.Timestamp until = 3; - */ - until?: Timestamp; -}; - -/** - * Describes the message session.v1.SnoozeStuckItemRequest. - * Use `create(SnoozeStuckItemRequestSchema)` to create a new message. - */ -export const SnoozeStuckItemRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 104); - -/** - * @generated from message session.v1.SnoozeStuckItemResponse - */ -export type SnoozeStuckItemResponse = Message<"session.v1.SnoozeStuckItemResponse"> & { - /** - * applied is true when an open row matching (item_id, reason) was found - * and snoozed; false when no such open row exists (not an error). - * - * @generated from field: bool applied = 1; - */ - applied: boolean; -}; - -/** - * Describes the message session.v1.SnoozeStuckItemResponse. - * Use `create(SnoozeStuckItemResponseSchema)` to create a new message. - */ -export const SnoozeStuckItemResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 105); - -/** - * @generated from message session.v1.ResetStuckRemediationRequest - */ -export type ResetStuckRemediationRequest = Message<"session.v1.ResetStuckRemediationRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: session.v1.StuckReason reason = 2; - */ - reason: StuckReason; -}; - -/** - * Describes the message session.v1.ResetStuckRemediationRequest. - * Use `create(ResetStuckRemediationRequestSchema)` to create a new message. - */ -export const ResetStuckRemediationRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 106); - -/** - * @generated from message session.v1.ResetStuckRemediationResponse - */ -export type ResetStuckRemediationResponse = Message<"session.v1.ResetStuckRemediationResponse"> & { - /** - * applied is true when an open row matching (item_id, reason) was found - * and reset; false when no such open row exists (not an error). - * - * @generated from field: bool applied = 1; - */ - applied: boolean; -}; - -/** - * Describes the message session.v1.ResetStuckRemediationResponse. - * Use `create(ResetStuckRemediationResponseSchema)` to create a new message. - */ -export const ResetStuckRemediationResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 107); - -/** - * @generated from message session.v1.BulkResetStuckRemediationRequest - */ -export type BulkResetStuckRemediationRequest = Message<"session.v1.BulkResetStuckRemediationRequest"> & { - /** - * reason filters to a single stuck reason; unset (STUCK_REASON_UNSPECIFIED) - * resets matching rows across every reason. - * - * @generated from field: session.v1.StuckReason reason = 1; - */ - reason: StuckReason; - - /** - * only_parked restricts the reset to rows that actually hit the 5-attempt - * cap. Defaults to true at the RPC layer when unset — see - * only_parked_explicitly_set. - * - * @generated from field: bool only_parked = 2; - */ - onlyParked: boolean; - - /** - * only_parked_explicitly_set distinguishes "only_parked=false because the - * caller wants every open row regardless of attempt count" from "the field - * was left at its zero value" — proto3 bool fields cannot otherwise tell - * "explicitly false" apart from "unset". Set true whenever the caller - * deliberately supplied only_parked (either value). - * - * @generated from field: bool only_parked_explicitly_set = 3; - */ - onlyParkedExplicitlySet: boolean; -}; - -/** - * Describes the message session.v1.BulkResetStuckRemediationRequest. - * Use `create(BulkResetStuckRemediationRequestSchema)` to create a new message. - */ -export const BulkResetStuckRemediationRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 108); - -/** - * @generated from message session.v1.BulkResetStuckRemediationResponse - */ -export type BulkResetStuckRemediationResponse = Message<"session.v1.BulkResetStuckRemediationResponse"> & { - /** - * reset_count is how many rows were reset by this call. - * - * @generated from field: int32 reset_count = 1; - */ - resetCount: number; -}; - -/** - * Describes the message session.v1.BulkResetStuckRemediationResponse. - * Use `create(BulkResetStuckRemediationResponseSchema)` to create a new message. - */ -export const BulkResetStuckRemediationResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 109); - -/** - * @generated from message session.v1.TriggerRemediationNowRequest - */ -export type TriggerRemediationNowRequest = Message<"session.v1.TriggerRemediationNowRequest"> & { - /** - * @generated from field: string item_id = 1; - */ - itemId: string; - - /** - * @generated from field: session.v1.StuckReason reason = 2; - */ - reason: StuckReason; -}; - -/** - * Describes the message session.v1.TriggerRemediationNowRequest. - * Use `create(TriggerRemediationNowRequestSchema)` to create a new message. - */ -export const TriggerRemediationNowRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 110); - -/** - * @generated from message session.v1.TriggerRemediationNowResponse - */ -export type TriggerRemediationNowResponse = Message<"session.v1.TriggerRemediationNowResponse"> & { - /** - * triggered is true when the remediation action was invoked. False is - * never returned on success — a row that cannot be remediated (no open - * row, already parked, no action registered for this reason yet) is - * reported as an RPC error instead, so the frontend can show a specific - * reason rather than a bare "nothing happened". - * - * @generated from field: bool triggered = 1; - */ - triggered: boolean; -}; - -/** - * Describes the message session.v1.TriggerRemediationNowResponse. - * Use `create(TriggerRemediationNowResponseSchema)` to create a new message. - */ -export const TriggerRemediationNowResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_backlog, 111); - -/** - * StuckReason mirrors domain.StuckReason (session/domain/backlog.go) — the - * validated string-backed enum of classes a backlog item can be "stuck" for. - * STUCK_REASON_UNSPECIFIED is also used as the safe fallback when an unknown - * string is encountered mapping a DB row to proto (never panics). - * - * @generated from enum session.v1.StuckReason - */ -export enum StuckReason { - /** - * @generated from enum value: STUCK_REASON_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: STUCK_REASON_PR_READY_UNMERGED = 1; - */ - PR_READY_UNMERGED = 1, - - /** - * @generated from enum value: STUCK_REASON_REWORK_CAP = 2; - */ - REWORK_CAP = 2, - - /** - * @generated from enum value: STUCK_REASON_ABANDONED_REVIEW = 3; - */ - ABANDONED_REVIEW = 3, - - /** - * @generated from enum value: STUCK_REASON_STALE_WORK = 4; - */ - STALE_WORK = 4, - - /** - * @generated from enum value: STUCK_REASON_BOUNCING = 5; - */ - BOUNCING = 5, - - /** - * @generated from enum value: STUCK_REASON_PUSH_FAILED = 6; - */ - PUSH_FAILED = 6, - - /** - * @generated from enum value: STUCK_REASON_ORPHANED_TRIAGE = 7; - */ - ORPHANED_TRIAGE = 7, - - /** - * @generated from enum value: STUCK_REASON_AUTONOMOUS_STUCK = 8; - */ - AUTONOMOUS_STUCK = 8, - - /** - * @generated from enum value: STUCK_REASON_SPAWN_FAILED = 9; - */ - SPAWN_FAILED = 9, - - /** - * @generated from enum value: STUCK_REASON_PLAN_NOT_APPROVED = 10; - */ - PLAN_NOT_APPROVED = 10, - - /** - * @generated from enum value: STUCK_REASON_PR_PENDING_NO_PR = 11; - */ - PR_PENDING_NO_PR = 11, - - /** - * STUCK_REASON_REWORK_BLOCKED_STALE: see domain.StuckReasonReworkBlockedStale - * (session/domain/backlog.go) — a review-status item's rework attempt is - * blocked by a still-alive-but-stale prior work session. - * - * @generated from enum value: STUCK_REASON_REWORK_BLOCKED_STALE = 12; - */ - REWORK_BLOCKED_STALE = 12, - - /** - * STUCK_REASON_PR_NEEDS_FIX: see domain.StuckReasonPRNeedsFix - * (session/domain/backlog.go) — a pr_pending item's PR has failing CI, a - * blocking review, a merge conflict, or unaddressed comment feedback, and - * ReconcilePRPending's comment-feedback-driven fix attempts have exhausted - * the shared rework cap. - * - * @generated from enum value: STUCK_REASON_PR_NEEDS_FIX = 13; - */ - PR_NEEDS_FIX = 13, - - /** - * STUCK_REASON_RESPAWN_BLOCKED_ACTIVE: see domain.StuckReasonRespawnBlockedActive - * (session/domain/backlog.go) — an automated respawn attempt - * (AutoRespawnAutonomousWork, AutoReopenForPRFix, or AutoRespawnReview) was - * skipped because the item already has an active work or review session. - * - * @generated from enum value: STUCK_REASON_RESPAWN_BLOCKED_ACTIVE = 14; - */ - RESPAWN_BLOCKED_ACTIVE = 14, - - /** - * STUCK_REASON_LIKELY_FLAKY: see domain.StuckReasonLikelyFlaky - * (session/domain/backlog.go) — behavioral evidence (a review-verdict - * flip-flop on an unchanged diff, or a test-file-only rework cycle) that - * this item's review outcome may be non-deterministic rather than a real - * pass/fail signal. Purely informational — never gates the reopen/park - * decision; present as a hint to verify, not a confident verdict. - * - * @generated from enum value: STUCK_REASON_LIKELY_FLAKY = 15; - */ - LIKELY_FLAKY = 15, -} - -/** - * Describes the enum session.v1.StuckReason. - */ -export const StuckReasonSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_backlog, 0); - -/** - * BacklogService manages backlog items and their lifecycle through AI-assisted - * planning, implementation, and review workflows. - * - * @generated from service session.v1.BacklogService - */ -export const BacklogService: GenService<{ - /** - * CreateBacklogItem adds a new item to the backlog. - * - * @generated from rpc session.v1.BacklogService.CreateBacklogItem - */ - createBacklogItem: { - methodKind: "unary"; - input: typeof CreateBacklogItemRequestSchema; - output: typeof CreateBacklogItemResponseSchema; - }, - /** - * GetBacklogItem retrieves a single backlog item by ID. - * - * @generated from rpc session.v1.BacklogService.GetBacklogItem - */ - getBacklogItem: { - methodKind: "unary"; - input: typeof GetBacklogItemRequestSchema; - output: typeof GetBacklogItemResponseSchema; - }, - /** - * GetBacklogItemShipStatus answers "did this item's code actually ship" from - * repo_path + the most recent work session's commit — works even once the - * work session's own worktree has been cleaned up (e.g. a "done" item), - * unlike the live per-session VCSStatus widget. - * - * @generated from rpc session.v1.BacklogService.GetBacklogItemShipStatus - */ - getBacklogItemShipStatus: { - methodKind: "unary"; - input: typeof GetBacklogItemShipStatusRequestSchema; - output: typeof GetBacklogItemShipStatusResponseSchema; - }, - /** - * ListBacklogItems returns backlog items with optional filtering and sorting. - * - * @generated from rpc session.v1.BacklogService.ListBacklogItems - */ - listBacklogItems: { - methodKind: "unary"; - input: typeof ListBacklogItemsRequestSchema; - output: typeof ListBacklogItemsResponseSchema; - }, - /** - * UpdateBacklogItem modifies the properties of an existing backlog item. - * - * @generated from rpc session.v1.BacklogService.UpdateBacklogItem - */ - updateBacklogItem: { - methodKind: "unary"; - input: typeof UpdateBacklogItemRequestSchema; - output: typeof UpdateBacklogItemResponseSchema; - }, - /** - * ArchiveBacklogItem soft-deletes an item by setting its archived_at timestamp. - * - * @generated from rpc session.v1.BacklogService.ArchiveBacklogItem - */ - archiveBacklogItem: { - methodKind: "unary"; - input: typeof ArchiveBacklogItemRequestSchema; - output: typeof ArchiveBacklogItemResponseSchema; - }, - /** - * DeleteBacklogItem permanently removes an item and all its child records. - * - * @generated from rpc session.v1.BacklogService.DeleteBacklogItem - */ - deleteBacklogItem: { - methodKind: "unary"; - input: typeof DeleteBacklogItemRequestSchema; - output: typeof DeleteBacklogItemResponseSchema; - }, - /** - * TransitionBacklogItemStatus moves an item through the status state machine. - * - * @generated from rpc session.v1.BacklogService.TransitionBacklogItemStatus - */ - transitionBacklogItemStatus: { - methodKind: "unary"; - input: typeof TransitionBacklogItemStatusRequestSchema; - output: typeof TransitionBacklogItemStatusResponseSchema; - }, - /** - * SpawnSessionFromItem creates a new AI agent session for a backlog item. - * - * @generated from rpc session.v1.BacklogService.SpawnSessionFromItem - */ - spawnSessionFromItem: { - methodKind: "unary"; - input: typeof SpawnSessionFromItemRequestSchema; - output: typeof SpawnSessionFromItemResponseSchema; - }, - /** - * AttachSessionToItem links an existing session to a backlog item. - * - * @generated from rpc session.v1.BacklogService.AttachSessionToItem - */ - attachSessionToItem: { - methodKind: "unary"; - input: typeof AttachSessionToItemRequestSchema; - output: typeof AttachSessionToItemResponseSchema; - }, - /** - * TriggerTriage kicks off a triage session for a backlog item. - * - * @generated from rpc session.v1.BacklogService.TriggerTriage - */ - triggerTriage: { - methodKind: "unary"; - input: typeof TriggerTriageRequestSchema; - output: typeof TriggerTriageResponseSchema; - }, - /** - * CancelTriage stops a running triage session for a backlog item. - * - * @generated from rpc session.v1.BacklogService.CancelTriage - */ - cancelTriage: { - methodKind: "unary"; - input: typeof CancelTriageRequestSchema; - output: typeof CancelTriageResponseSchema; - }, - /** - * ApprovePlan marks the planning artifacts for an item as approved. - * - * @generated from rpc session.v1.BacklogService.ApprovePlan - */ - approvePlan: { - methodKind: "unary"; - input: typeof ApprovePlanRequestSchema; - output: typeof ApprovePlanResponseSchema; - }, - /** - * SuggestNextItem recommends the highest-priority actionable backlog item. - * - * @generated from rpc session.v1.BacklogService.SuggestNextItem - */ - suggestNextItem: { - methodKind: "unary"; - input: typeof SuggestNextItemRequestSchema; - output: typeof SuggestNextItemResponseSchema; - }, - /** - * OverrideVerdict manually overrides a review verdict for an item session. - * - * @generated from rpc session.v1.BacklogService.OverrideVerdict - */ - overrideVerdict: { - methodKind: "unary"; - input: typeof OverrideVerdictRequestSchema; - output: typeof OverrideVerdictResponseSchema; - }, - /** - * TriggerReReview re-runs the review gate for a backlog item. - * - * @generated from rpc session.v1.BacklogService.TriggerReReview - */ - triggerReReview: { - methodKind: "unary"; - input: typeof TriggerReReviewRequestSchema; - output: typeof TriggerReReviewResponseSchema; - }, - /** - * TriggerShipPR manually runs the same one-shot PR-creation flow the opt-in - * AutoCreatePR policy uses, for an item sitting in review (or done with no PR - * yet) with no PR of its own — the self-service "Ship PR" action on the item - * detail page. - * - * @generated from rpc session.v1.BacklogService.TriggerShipPR - */ - triggerShipPR: { - methodKind: "unary"; - input: typeof TriggerShipPRRequestSchema; - output: typeof TriggerShipPRResponseSchema; - }, - /** - * TriggerSync initiates a sync run for an external item source. - * - * @generated from rpc session.v1.BacklogService.TriggerSync - */ - triggerSync: { - methodKind: "unary"; - input: typeof TriggerSyncRequestSchema; - output: typeof TriggerSyncResponseSchema; - }, - /** - * CreateItemSource registers a new external plugin source. - * - * @generated from rpc session.v1.BacklogService.CreateItemSource - */ - createItemSource: { - methodKind: "unary"; - input: typeof CreateItemSourceRequestSchema; - output: typeof CreateItemSourceResponseSchema; - }, - /** - * ListItemSources returns all registered external item sources. - * - * @generated from rpc session.v1.BacklogService.ListItemSources - */ - listItemSources: { - methodKind: "unary"; - input: typeof ListItemSourcesRequestSchema; - output: typeof ListItemSourcesResponseSchema; - }, - /** - * UpdateItemSource modifies configuration for an existing item source. - * - * @generated from rpc session.v1.BacklogService.UpdateItemSource - */ - updateItemSource: { - methodKind: "unary"; - input: typeof UpdateItemSourceRequestSchema; - output: typeof UpdateItemSourceResponseSchema; - }, - /** - * DeleteItemSource removes an external item source registration. - * - * @generated from rpc session.v1.BacklogService.DeleteItemSource - */ - deleteItemSource: { - methodKind: "unary"; - input: typeof DeleteItemSourceRequestSchema; - output: typeof DeleteItemSourceResponseSchema; - }, - /** - * GetSyncHistory returns the sync event history for an item source. - * - * @generated from rpc session.v1.BacklogService.GetSyncHistory - */ - getSyncHistory: { - methodKind: "unary"; - input: typeof GetSyncHistoryRequestSchema; - output: typeof GetSyncHistoryResponseSchema; - }, - /** - * PreviewBackwardSyncImpact reports how many already-imported items for a - * source would immediately transition (per ADR-002's determineBackwardSyncTarget) - * if backward sync were enabled right now — used to gate the Settings UI's - * first-enable confirmation dialog (Epic 4.4) so a user can see the blast - * radius of already-closed linked issues before opting in. - * - * @generated from rpc session.v1.BacklogService.PreviewBackwardSyncImpact - */ - previewBackwardSyncImpact: { - methodKind: "unary"; - input: typeof PreviewBackwardSyncImpactRequestSchema; - output: typeof PreviewBackwardSyncImpactResponseSchema; - }, - /** - * CreatePipelineMode registers a new runtime-definable pipeline mode. - * - * @generated from rpc session.v1.BacklogService.CreatePipelineMode - */ - createPipelineMode: { - methodKind: "unary"; - input: typeof CreatePipelineModeRequestSchema; - output: typeof CreatePipelineModeResponseSchema; - }, - /** - * UpdatePipelineMode modifies an existing pipeline mode's fields. - * - * @generated from rpc session.v1.BacklogService.UpdatePipelineMode - */ - updatePipelineMode: { - methodKind: "unary"; - input: typeof UpdatePipelineModeRequestSchema; - output: typeof UpdatePipelineModeResponseSchema; - }, - /** - * DeletePipelineMode removes a pipeline mode definition. - * - * @generated from rpc session.v1.BacklogService.DeletePipelineMode - */ - deletePipelineMode: { - methodKind: "unary"; - input: typeof DeletePipelineModeRequestSchema; - output: typeof DeletePipelineModeResponseSchema; - }, - /** - * GetPipelineMode retrieves a single pipeline mode by slug. - * - * @generated from rpc session.v1.BacklogService.GetPipelineMode - */ - getPipelineMode: { - methodKind: "unary"; - input: typeof GetPipelineModeRequestSchema; - output: typeof GetPipelineModeResponseSchema; - }, - /** - * ListPipelineModes returns all pipeline modes, including disabled ones. - * - * @generated from rpc session.v1.BacklogService.ListPipelineModes - */ - listPipelineModes: { - methodKind: "unary"; - input: typeof ListPipelineModesRequestSchema; - output: typeof ListPipelineModesResponseSchema; - }, - /** - * ImportGitHubIssue creates a backlog item pre-populated from a GitHub issue. - * - * @generated from rpc session.v1.BacklogService.ImportGitHubIssue - */ - importGitHubIssue: { - methodKind: "unary"; - input: typeof ImportGitHubIssueRequestSchema; - output: typeof ImportGitHubIssueResponseSchema; - }, - /** - * SearchGitHubRepos returns GitHub repos accessible to the authenticated user. - * - * @generated from rpc session.v1.BacklogService.SearchGitHubRepos - */ - searchGitHubRepos: { - methodKind: "unary"; - input: typeof SearchGitHubReposRequestSchema; - output: typeof SearchGitHubReposResponseSchema; - }, - /** - * ListGitHubIssues returns issues for a specific GitHub repo. - * - * @generated from rpc session.v1.BacklogService.ListGitHubIssues - */ - listGitHubIssues: { - methodKind: "unary"; - input: typeof ListGitHubIssuesRequestSchema; - output: typeof ListGitHubIssuesResponseSchema; - }, - /** - * GetBacklogItemDiff returns the committed diff for a backlog item's work sessions - * (from the earliest work session base SHA to the current HEAD). - * - * @generated from rpc session.v1.BacklogService.GetBacklogItemDiff - */ - getBacklogItemDiff: { - methodKind: "unary"; - input: typeof GetBacklogItemDiffRequestSchema; - output: typeof GetBacklogItemDiffResponseSchema; - }, - /** - * GetBacklogItemCost returns the estimated token cost for all sessions linked to an item. - * - * @generated from rpc session.v1.BacklogService.GetBacklogItemCost - */ - getBacklogItemCost: { - methodKind: "unary"; - input: typeof GetBacklogItemCostRequestSchema; - output: typeof GetBacklogItemCostResponseSchema; - }, - /** - * GetSessionBacklogIndex returns all item sessions mapped to their backlog item metadata. - * Used by the Insights dashboard to annotate sessions with backlog context. - * - * @generated from rpc session.v1.BacklogService.GetSessionBacklogIndex - */ - getSessionBacklogIndex: { - methodKind: "unary"; - input: typeof GetSessionBacklogIndexRequestSchema; - output: typeof GetSessionBacklogIndexResponseSchema; - }, - /** - * SubmitManualReview allows a user to submit a review verdict directly, - * without running an AI review session. - * - * @generated from rpc session.v1.BacklogService.SubmitManualReview - */ - submitManualReview: { - methodKind: "unary"; - input: typeof SubmitManualReviewRequestSchema; - output: typeof SubmitManualReviewResponseSchema; - }, - /** - * ListStuckBacklogItems returns open (unresolved, un-snoozed) stuck backlog - * items — items that have stopped progressing toward merge, with a reason, - * since-when, and PR context. - * - * @generated from rpc session.v1.BacklogService.ListStuckBacklogItems - */ - listStuckBacklogItems: { - methodKind: "unary"; - input: typeof ListStuckBacklogItemsRequestSchema; - output: typeof ListStuckBacklogItemsResponseSchema; - }, - /** - * SnoozeStuckItem suppresses a stuck row from the active view and from - * re-notification until the given time. - * - * @generated from rpc session.v1.BacklogService.SnoozeStuckItem - */ - snoozeStuckItem: { - methodKind: "unary"; - input: typeof SnoozeStuckItemRequestSchema; - output: typeof SnoozeStuckItemResponseSchema; - }, - /** - * ResetStuckRemediation clears the automated-remediation counters - * (remediation_attempts, next_remediation_at, notified_at) on a single open - * stuck row, letting a fresh automated attempt/notification cycle fire - * immediately instead of waiting on stale backoff/dedup state. Distinct - * from TriggerRemediationNow: this never itself invokes a remediation - * action, it only un-parks the row. - * - * @generated from rpc session.v1.BacklogService.ResetStuckRemediation - */ - resetStuckRemediation: { - methodKind: "unary"; - input: typeof ResetStuckRemediationRequestSchema; - output: typeof ResetStuckRemediationResponseSchema; - }, - /** - * BulkResetStuckRemediation applies ResetStuckRemediation's reset to every - * open stuck row matching the optional reason filter — the "something - * upstream broke a batch of these, give them all a fresh shot" admin - * action, e.g. after an OOM-restart storm inflated attempt counts across - * many items at once. - * - * @generated from rpc session.v1.BacklogService.BulkResetStuckRemediation - */ - bulkResetStuckRemediation: { - methodKind: "unary"; - input: typeof BulkResetStuckRemediationRequestSchema; - output: typeof BulkResetStuckRemediationResponseSchema; - }, - /** - * TriggerRemediationNow immediately runs the reason-specific remediation - * action for a single open stuck row, bypassing only the next_remediation_at - * backoff timer — every other safety gate (the 5-attempt cap, the wrapped - * action's own circuit breaker) still applies, and this attempt still - * counts toward remediation_attempts like any dispatcher-triggered one. - * Rejects with an error (rather than silently un-parking) when the row has - * already exhausted its attempt budget — use ResetStuckRemediation first. - * - * @generated from rpc session.v1.BacklogService.TriggerRemediationNow - */ - triggerRemediationNow: { - methodKind: "unary"; - input: typeof TriggerRemediationNowRequestSchema; - output: typeof TriggerRemediationNowResponseSchema; - }, - /** - * WatchBacklogItems streams real-time backlog item events (status changes, - * verdicts, session attachments, updates, archival, removal). - * Server-streaming RPC for live backlog updates without polling. - * - * @generated from rpc session.v1.BacklogService.WatchBacklogItems - */ - watchBacklogItems: { - methodKind: "server_streaming"; - input: typeof WatchBacklogItemsRequestSchema; - output: typeof BacklogItemEventSchema; - }, -}> = /*@__PURE__*/ - serviceDesc(file_session_v1_backlog, 0); - diff --git a/web-app/src/gen/session/v1/events_connect.ts b/web-app/src/gen/session/v1/events_connect.ts deleted file mode 100644 index 82cd1d104..000000000 --- a/web-app/src/gen/session/v1/events_connect.ts +++ /dev/null @@ -1,4 +0,0 @@ -// @generated by protoc-gen-connect-es v1.6.1 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/events.proto (package session.v1, syntax proto3) -/* eslint-disable */ - diff --git a/web-app/src/gen/session/v1/events_pb.ts b/web-app/src/gen/session/v1/events_pb.ts deleted file mode 100644 index cb8d80476..000000000 --- a/web-app/src/gen/session/v1/events_pb.ts +++ /dev/null @@ -1,1251 +0,0 @@ -// @generated by protoc-gen-es v2.11.0 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/events.proto (package session.v1, syntax proto3) -/* eslint-disable */ - -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; -import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; -import type { Timestamp } from "@bufbuild/protobuf/wkt"; -import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; -import type { DetectedStatus, NotificationPriority, NotificationType, ReviewItem, Session, ShellStatus } from "./types_pb"; -import { file_session_v1_types } from "./types_pb"; -import type { Message } from "@bufbuild/protobuf"; - -/** - * Describes the file session/v1/events.proto. - */ -export const file_session_v1_events: GenFile = /*@__PURE__*/ - fileDesc("ChdzZXNzaW9uL3YxL2V2ZW50cy5wcm90bxIKc2Vzc2lvbi52MSKYBAoMU2Vzc2lvbkV2ZW50Ei0KCXRpbWVzdGFtcBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOgoPc2Vzc2lvbl9jcmVhdGVkGAIgASgLMh8uc2Vzc2lvbi52MS5TZXNzaW9uQ3JlYXRlZEV2ZW50SAASOgoPc2Vzc2lvbl91cGRhdGVkGAMgASgLMh8uc2Vzc2lvbi52MS5TZXNzaW9uVXBkYXRlZEV2ZW50SAASOgoPc2Vzc2lvbl9kZWxldGVkGAQgASgLMh8uc2Vzc2lvbi52MS5TZXNzaW9uRGVsZXRlZEV2ZW50SAASPAoQdXNlcl9pbnRlcmFjdGlvbhgGIAEoCzIgLnNlc3Npb24udjEuVXNlckludGVyYWN0aW9uRXZlbnRIABJEChRzZXNzaW9uX2Fja25vd2xlZGdlZBgHIAEoCzIkLnNlc3Npb24udjEuU2Vzc2lvbkFja25vd2xlZGdlZEV2ZW50SAASPgoRYXBwcm92YWxfcmVzcG9uc2UYCCABKAsyIS5zZXNzaW9uLnYxLkFwcHJvdmFsUmVzcG9uc2VFdmVudEgAEjUKDG5vdGlmaWNhdGlvbhgJIAEoCzIdLnNlc3Npb24udjEuTm90aWZpY2F0aW9uRXZlbnRIABILCgNzZXEYCiABKARCBwoFZXZlbnRKBAgFEAZSDnN0YXR1c19jaGFuZ2VkIjsKE1Nlc3Npb25DcmVhdGVkRXZlbnQSJAoHc2Vzc2lvbhgBIAEoCzITLnNlc3Npb24udjEuU2Vzc2lvbiKiAQoTU2Vzc2lvblVwZGF0ZWRFdmVudBIkCgdzZXNzaW9uGAEgASgLMhMuc2Vzc2lvbi52MS5TZXNzaW9uEhYKDnVwZGF0ZWRfZmllbGRzGAIgAygJEjMKD2RldGVjdGVkX3N0YXR1cxgDIAEoDjIaLnNlc3Npb24udjEuRGV0ZWN0ZWRTdGF0dXMSGAoQZGV0ZWN0ZWRfY29udGV4dBgEIAEoCSI5ChNTZXNzaW9uRGVsZXRlZEV2ZW50EhIKCnNlc3Npb25faWQYASABKAkSDgoGcmVhc29uGAIgASgJIucFCgxUZXJtaW5hbERhdGESEgoKc2Vzc2lvbl9pZBgBIAEoCRIsCgZvdXRwdXQYAiABKAsyGi5zZXNzaW9uLnYxLlRlcm1pbmFsT3V0cHV0SAASKgoFaW5wdXQYAyABKAsyGS5zZXNzaW9uLnYxLlRlcm1pbmFsSW5wdXRIABIsCgZyZXNpemUYBCABKAsyGi5zZXNzaW9uLnYxLlRlcm1pbmFsUmVzaXplSAASKgoFZXJyb3IYBSABKAsyGS5zZXNzaW9uLnYxLlRlcm1pbmFsRXJyb3JIABI7ChJzY3JvbGxiYWNrX3JlcXVlc3QYBiABKAsyHS5zZXNzaW9uLnYxLlNjcm9sbGJhY2tSZXF1ZXN0SAASPQoTc2Nyb2xsYmFja19yZXNwb25zZRgHIAEoCzIeLnNlc3Npb24udjEuU2Nyb2xsYmFja1Jlc3BvbnNlSAASPgoUY3VycmVudF9wYW5lX3JlcXVlc3QYCSABKAsyHi5zZXNzaW9uLnYxLkN1cnJlbnRQYW5lUmVxdWVzdEgAEkAKFWN1cnJlbnRfcGFuZV9yZXNwb25zZRgKIAEoCzIfLnNlc3Npb24udjEuQ3VycmVudFBhbmVSZXNwb25zZUgAEi8KDGZsb3dfY29udHJvbBgLIAEoCzIXLnNlc3Npb24udjEuRmxvd0NvbnRyb2xIABI5ChFyZXNpemVfcXVpZXNjZW5jZRgQIAEoCzIcLnNlc3Npb24udjEuUmVzaXplUXVpZXNjZW5jZUgAEjwKE3NoZWxsX3N0YXR1c191cGRhdGUYEiABKAsyHS5zZXNzaW9uLnYxLlNoZWxsU3RhdHVzVXBkYXRlSAASEAoIc2hlbGxfaWQYESABKAlCBgoEZGF0YUoECAgQCUoECAwQDUoECA0QDkoECA4QD0oECA8QEFIFZGVsdGFSBXN0YXRlUgRkaWZmUgppbnB1dF9lY2hvUg9zc3BfbmVnb3RpYXRpb24iZQoRU2hlbGxTdGF0dXNVcGRhdGUSEAoIc2hlbGxfaWQYASABKAkSKwoKbmV3X3N0YXR1cxgCIAEoDjIXLnNlc3Npb24udjEuU2hlbGxTdGF0dXMSEQoJZXhpdF9jb2RlGAMgASgFIkAKEFJlc2l6ZVF1aWVzY2VuY2USEAoIcmVzaXppbmcYASABKAgSDAoEY29scxgCIAEoBRIMCgRyb3dzGAMgASgFIh4KDlRlcm1pbmFsT3V0cHV0EgwKBGRhdGEYASABKAwiHQoNVGVybWluYWxJbnB1dBIMCgRkYXRhGAEgASgMIiwKDlRlcm1pbmFsUmVzaXplEgwKBHJvd3MYASABKAUSDAoEY29scxgCIAEoBSIuCg1UZXJtaW5hbEVycm9yEg8KB21lc3NhZ2UYASABKAkSDAoEY29kZRgCIAEoCSJDCgtGbG93Q29udHJvbBIOCgZwYXVzZWQYASABKAgSFgoJd2F0ZXJtYXJrGAIgASgESACIAQFCDAoKX3dhdGVybWFyayI5ChFTY3JvbGxiYWNrUmVxdWVzdBIVCg1mcm9tX3NlcXVlbmNlGAEgASgEEg0KBWxpbWl0GAIgASgFIpoBChJTY3JvbGxiYWNrUmVzcG9uc2USKwoGY2h1bmtzGAEgAygLMhsuc2Vzc2lvbi52MS5TY3JvbGxiYWNrQ2h1bmsSEAoIaGFzX21vcmUYAiABKAgSEwoLdG90YWxfbGluZXMYAyABKAQSFwoPb2xkZXN0X3NlcXVlbmNlGAQgASgEEhcKD25ld2VzdF9zZXF1ZW5jZRgFIAEoBCJHCg9TY3JvbGxiYWNrQ2h1bmsSDAoEZGF0YRgBIAEoDBIQCghzZXF1ZW5jZRgCIAEoBBIUCgx0aW1lc3RhbXBfbXMYAyABKAMipgEKEkN1cnJlbnRQYW5lUmVxdWVzdBINCgVsaW5lcxgBIAEoBRIXCg9pbmNsdWRlX2VzY2FwZXMYAiABKAgSGAoLdGFyZ2V0X2NvbHMYAyABKAVIAIgBARIYCgt0YXJnZXRfcm93cxgEIAEoBUgBiAEBQg4KDF90YXJnZXRfY29sc0IOCgxfdGFyZ2V0X3Jvd3NKBAgFEAZSDnN0cmVhbWluZ19tb2RlInMKE0N1cnJlbnRQYW5lUmVzcG9uc2USDwoHY29udGVudBgBIAEoDBIQCghjdXJzb3JfeBgCIAEoBRIQCghjdXJzb3JfeRgDIAEoBRISCgpwYW5lX3dpZHRoGAQgASgFEhMKC3BhbmVfaGVpZ2h0GAUgASgFIr8GChRVc2VySW50ZXJhY3Rpb25FdmVudBISCgpzZXNzaW9uX2lkGAEgASgJEj4KBHR5cGUYAiABKA4yMC5zZXNzaW9uLnYxLlVzZXJJbnRlcmFjdGlvbkV2ZW50LkludGVyYWN0aW9uVHlwZRIPCgdjb250ZXh0GAMgASgJIsEFCg9JbnRlcmFjdGlvblR5cGUSIAocSU5URVJBQ1RJT05fVFlQRV9VTlNQRUNJRklFRBAAEiMKH0lOVEVSQUNUSU9OX1RZUEVfVEVSTUlOQUxfSU5QVVQQARIjCh9JTlRFUkFDVElPTl9UWVBFX0FQUFJPVkFMX0dJVkVOEAISJAogSU5URVJBQ1RJT05fVFlQRV9BUFBST1ZBTF9ERU5JRUQQAxIlCiFJTlRFUkFDVElPTl9UWVBFX0NPTU1BTkRfRVhFQ1VURUQQBBIlCiFJTlRFUkFDVElPTl9UWVBFX1NFU1NJT05fQVRUQUNIRUQQBRIlCiFJTlRFUkFDVElPTl9UWVBFX1NFU1NJT05fREVUQUNIRUQQBhIuCipJTlRFUkFDVElPTl9UWVBFX05PVElGSUNBVElPTl9QQU5FTF9PUEVORUQQBxIuCipJTlRFUkFDVElPTl9UWVBFX05PVElGSUNBVElPTl9QQU5FTF9DTE9TRUQQCBIoCiRJTlRFUkFDVElPTl9UWVBFX05PVElGSUNBVElPTl9WSUVXRUQQCRIrCidJTlRFUkFDVElPTl9UWVBFX05PVElGSUNBVElPTl9ESVNNSVNTRUQQChItCilJTlRFUkFDVElPTl9UWVBFX05PVElGSUNBVElPTl9NQVJLRURfUkVBRBALEjEKLUlOVEVSQUNUSU9OX1RZUEVfTk9USUZJQ0FUSU9OX01BUktFRF9BTExfUkVBRBAMEikKJUlOVEVSQUNUSU9OX1RZUEVfTk9USUZJQ0FUSU9OX1JFTU9WRUQQDRIxCi1JTlRFUkFDVElPTl9UWVBFX05PVElGSUNBVElPTl9ISVNUT1JZX0NMRUFSRUQQDhIwCixJTlRFUkFDVElPTl9UWVBFX05PVElGSUNBVElPTl9TRVNTSU9OX1ZJRVdFRBAPInMKGFNlc3Npb25BY2tub3dsZWRnZWRFdmVudBISCgpzZXNzaW9uX2lkGAEgASgJEjMKD2Fja25vd2xlZGdlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGcmVhc29uGAMgASgJIoABChVBcHByb3ZhbFJlc3BvbnNlRXZlbnQSEgoKc2Vzc2lvbl9pZBgBIAEoCRIQCghhcHByb3ZlZBgCIAEoCBIPCgdjb250ZXh0GAMgASgJEjAKDHJlc3BvbmRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAixwIKEFJldmlld1F1ZXVlRXZlbnQSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI7CgppdGVtX2FkZGVkGAIgASgLMiUuc2Vzc2lvbi52MS5SZXZpZXdRdWV1ZUl0ZW1BZGRlZEV2ZW50SAASPwoMaXRlbV9yZW1vdmVkGAMgASgLMicuc2Vzc2lvbi52MS5SZXZpZXdRdWV1ZUl0ZW1SZW1vdmVkRXZlbnRIABI/CgxpdGVtX3VwZGF0ZWQYBCABKAsyJy5zZXNzaW9uLnYxLlJldmlld1F1ZXVlSXRlbVVwZGF0ZWRFdmVudEgAEjwKCnN0YXRpc3RpY3MYBSABKAsyJi5zZXNzaW9uLnYxLlJldmlld1F1ZXVlU3RhdGlzdGljc0V2ZW50SABCBwoFZXZlbnQiZwoZUmV2aWV3UXVldWVJdGVtQWRkZWRFdmVudBIkCgRpdGVtGAEgASgLMhYuc2Vzc2lvbi52MS5SZXZpZXdJdGVtEg8KB3RyaWdnZXIYAiABKAkSEwoLaXNfc25hcHNob3QYAyABKAgiQQobUmV2aWV3UXVldWVJdGVtUmVtb3ZlZEV2ZW50EhIKCnNlc3Npb25faWQYASABKAkSDgoGcmVhc29uGAIgASgJIm8KG1Jldmlld1F1ZXVlSXRlbVVwZGF0ZWRFdmVudBISCgpzZXNzaW9uX2lkGAEgASgJEiQKBGl0ZW0YAiABKAsyFi5zZXNzaW9uLnYxLlJldmlld0l0ZW0SFgoOdXBkYXRlZF9maWVsZHMYAyADKAki3AIKGlJldmlld1F1ZXVlU3RhdGlzdGljc0V2ZW50EhMKC3RvdGFsX2l0ZW1zGAEgASgFEksKC2J5X3ByaW9yaXR5GAIgAygLMjYuc2Vzc2lvbi52MS5SZXZpZXdRdWV1ZVN0YXRpc3RpY3NFdmVudC5CeVByaW9yaXR5RW50cnkSRwoJYnlfcmVhc29uGAMgAygLMjQuc2Vzc2lvbi52MS5SZXZpZXdRdWV1ZVN0YXRpc3RpY3NFdmVudC5CeVJlYXNvbkVudHJ5EhYKDmF2ZXJhZ2VfYWdlX21zGAQgASgDEhcKD2VzY2FsYXRlZF9pdGVtcxgFIAMoCRoxCg9CeVByaW9yaXR5RW50cnkSCwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ARovCg1CeVJlYXNvbkVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiggMKEU5vdGlmaWNhdGlvbkV2ZW50EhIKCnNlc3Npb25faWQYASABKAkSFAoMc2Vzc2lvbl9uYW1lGAIgASgJEjcKEW5vdGlmaWNhdGlvbl90eXBlGAMgASgOMhwuc2Vzc2lvbi52MS5Ob3RpZmljYXRpb25UeXBlEjIKCHByaW9yaXR5GAQgASgOMiAuc2Vzc2lvbi52MS5Ob3RpZmljYXRpb25Qcmlvcml0eRINCgV0aXRsZRgFIAEoCRIPCgdtZXNzYWdlGAYgASgJEj0KCG1ldGFkYXRhGAcgAygLMisuc2Vzc2lvbi52MS5Ob3RpZmljYXRpb25FdmVudC5NZXRhZGF0YUVudHJ5Ei0KCXRpbWVzdGFtcBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoPbm90aWZpY2F0aW9uX2lkGAkgASgJGi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUKrAQoOY29tLnNlc3Npb24udjFCC0V2ZW50c1Byb3RvUAFaQ2dpdGh1Yi5jb20vdHN0YXBsZXIvc3RhcGxlci1zcXVhZC9nZW4vcHJvdG8vZ28vc2Vzc2lvbi92MTtzZXNzaW9udjGiAgNTWFiqAgpTZXNzaW9uLlYxygIKU2Vzc2lvblxWMeICFlNlc3Npb25cVjFcR1BCTWV0YWRhdGHqAgtTZXNzaW9uOjpWMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_session_v1_types]); - -/** - * SessionEvent represents a real-time event about session state changes. - * Used for WatchSessions streaming RPC to push updates to clients. - * - * @generated from message session.v1.SessionEvent - */ -export type SessionEvent = Message<"session.v1.SessionEvent"> & { - /** - * Timestamp when the event occurred - * - * @generated from field: google.protobuf.Timestamp timestamp = 1; - */ - timestamp?: Timestamp; - - /** - * Event type (one of the following) - * - * @generated from oneof session.v1.SessionEvent.event - */ - event: { - /** - * @generated from field: session.v1.SessionCreatedEvent session_created = 2; - */ - value: SessionCreatedEvent; - case: "sessionCreated"; - } | { - /** - * @generated from field: session.v1.SessionUpdatedEvent session_updated = 3; - */ - value: SessionUpdatedEvent; - case: "sessionUpdated"; - } | { - /** - * @generated from field: session.v1.SessionDeletedEvent session_deleted = 4; - */ - value: SessionDeletedEvent; - case: "sessionDeleted"; - } | { - /** - * field 5 (status_changed / SessionStatusChangedEvent) removed in Epic 4 - * - * @generated from field: session.v1.UserInteractionEvent user_interaction = 6; - */ - value: UserInteractionEvent; - case: "userInteraction"; - } | { - /** - * @generated from field: session.v1.SessionAcknowledgedEvent session_acknowledged = 7; - */ - value: SessionAcknowledgedEvent; - case: "sessionAcknowledged"; - } | { - /** - * @generated from field: session.v1.ApprovalResponseEvent approval_response = 8; - */ - value: ApprovalResponseEvent; - case: "approvalResponse"; - } | { - /** - * @generated from field: session.v1.NotificationEvent notification = 9; - */ - value: NotificationEvent; - case: "notification"; - } | { case: undefined; value?: undefined }; - - /** - * Monotonically increasing sequence number assigned by the server EventBus. - * Clients should track the highest seq they have received and pass it as - * after_seq in WatchSessionsRequest on reconnect to replay missed events. - * Events are retained for up to one hour. - * - * @generated from field: uint64 seq = 10; - */ - seq: bigint; -}; - -/** - * Describes the message session.v1.SessionEvent. - * Use `create(SessionEventSchema)` to create a new message. - */ -export const SessionEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 0); - -/** - * SessionCreatedEvent is emitted when a new session is created - * - * @generated from message session.v1.SessionCreatedEvent - */ -export type SessionCreatedEvent = Message<"session.v1.SessionCreatedEvent"> & { - /** - * @generated from field: session.v1.Session session = 1; - */ - session?: Session; -}; - -/** - * Describes the message session.v1.SessionCreatedEvent. - * Use `create(SessionCreatedEventSchema)` to create a new message. - */ -export const SessionCreatedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 1); - -/** - * SessionUpdatedEvent is emitted when session properties are modified - * - * @generated from message session.v1.SessionUpdatedEvent - */ -export type SessionUpdatedEvent = Message<"session.v1.SessionUpdatedEvent"> & { - /** - * @generated from field: session.v1.Session session = 1; - */ - session?: Session; - - /** - * Fields that were updated (for efficient client updates) - * - * @generated from field: repeated string updated_fields = 2; - */ - updatedFields: string[]; - - /** - * Fine-grained detected status at event publish time. Transitional shortcut for the - * migration period; populated when the detection layer has a registered controller. - * Deprecated once StatusBadge reads from session.detected_status directly (Epic 5). - * - * @generated from field: session.v1.DetectedStatus detected_status = 3; - */ - detectedStatus: DetectedStatus; - - /** - * Human-readable context string from the terminal pattern detector. - * Empty when detected_status is UNSPECIFIED. - * - * @generated from field: string detected_context = 4; - */ - detectedContext: string; -}; - -/** - * Describes the message session.v1.SessionUpdatedEvent. - * Use `create(SessionUpdatedEventSchema)` to create a new message. - */ -export const SessionUpdatedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 2); - -/** - * SessionDeletedEvent is emitted when a session is deleted - * - * @generated from message session.v1.SessionDeletedEvent - */ -export type SessionDeletedEvent = Message<"session.v1.SessionDeletedEvent"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Optional deletion reason - * - * @generated from field: string reason = 2; - */ - reason: string; -}; - -/** - * Describes the message session.v1.SessionDeletedEvent. - * Use `create(SessionDeletedEventSchema)` to create a new message. - */ -export const SessionDeletedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 3); - -/** - * TerminalData represents terminal I/O for bidirectional streaming. - * Used for StreamTerminal RPC to provide real-time terminal access. - * - * @generated from message session.v1.TerminalData - */ -export type TerminalData = Message<"session.v1.TerminalData"> & { - /** - * Session identifier - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Terminal message type - * - * @generated from oneof session.v1.TerminalData.data - */ - data: { - /** - * @generated from field: session.v1.TerminalOutput output = 2; - */ - value: TerminalOutput; - case: "output"; - } | { - /** - * @generated from field: session.v1.TerminalInput input = 3; - */ - value: TerminalInput; - case: "input"; - } | { - /** - * @generated from field: session.v1.TerminalResize resize = 4; - */ - value: TerminalResize; - case: "resize"; - } | { - /** - * @generated from field: session.v1.TerminalError error = 5; - */ - value: TerminalError; - case: "error"; - } | { - /** - * @generated from field: session.v1.ScrollbackRequest scrollback_request = 6; - */ - value: ScrollbackRequest; - case: "scrollbackRequest"; - } | { - /** - * @generated from field: session.v1.ScrollbackResponse scrollback_response = 7; - */ - value: ScrollbackResponse; - case: "scrollbackResponse"; - } | { - /** - * Request current tmux pane content - * - * @generated from field: session.v1.CurrentPaneRequest current_pane_request = 9; - */ - value: CurrentPaneRequest; - case: "currentPaneRequest"; - } | { - /** - * Response with current pane content - * - * @generated from field: session.v1.CurrentPaneResponse current_pane_response = 10; - */ - value: CurrentPaneResponse; - case: "currentPaneResponse"; - } | { - /** - * Flow control signals for backpressure management (xterm.js best practice) - * - * @generated from field: session.v1.FlowControl flow_control = 11; - */ - value: FlowControl; - case: "flowControl"; - } | { - /** - * Resize quiescence signal — sent before/after server-side tmux reflow wait - * - * @generated from field: session.v1.ResizeQuiescence resize_quiescence = 16; - */ - value: ResizeQuiescence; - case: "resizeQuiescence"; - } | { - /** - * Shell status update event (server → client); shell_id identifies the shell. - * - * @generated from field: session.v1.ShellStatusUpdate shell_status_update = 18; - */ - value: ShellStatusUpdate; - case: "shellStatusUpdate"; - } | { case: undefined; value?: undefined }; - - /** - * Optional shell identifier. When non-empty, this TerminalData message is - * scoped to a custom shell (sibling tmux session) rather than the main session. - * - * @generated from field: string shell_id = 17; - */ - shellId: string; -}; - -/** - * Describes the message session.v1.TerminalData. - * Use `create(TerminalDataSchema)` to create a new message. - */ -export const TerminalDataSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 4); - -/** - * ShellStatusUpdate notifies the client that a custom shell's status has changed. - * Delivered via the StreamTerminal stream with shell_id set. - * - * @generated from message session.v1.ShellStatusUpdate - */ -export type ShellStatusUpdate = Message<"session.v1.ShellStatusUpdate"> & { - /** - * The shell whose status changed. - * - * @generated from field: string shell_id = 1; - */ - shellId: string; - - /** - * New lifecycle status. - * - * @generated from field: session.v1.ShellStatus new_status = 2; - */ - newStatus: ShellStatus; - - /** - * Exit code (only meaningful when new_status is STOPPED or ERROR). - * - * @generated from field: int32 exit_code = 3; - */ - exitCode: number; -}; - -/** - * Describes the message session.v1.ShellStatusUpdate. - * Use `create(ShellStatusUpdateSchema)` to create a new message. - */ -export const ShellStatusUpdateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 5); - -/** - * ResizeQuiescence signals the client that the server is waiting for tmux to - * finish reflowing after a resize (resizing=true) or that the stable post-resize - * snapshot has been sent (resizing=false). Enables the frontend to show/hide a - * non-blocking overlay during the reflow window. - * - * @generated from message session.v1.ResizeQuiescence - */ -export type ResizeQuiescence = Message<"session.v1.ResizeQuiescence"> & { - /** - * true=reflow in progress, false=reflow complete - * - * @generated from field: bool resizing = 1; - */ - resizing: boolean; - - /** - * Target columns for this resize event - * - * @generated from field: int32 cols = 2; - */ - cols: number; - - /** - * Target rows for this resize event - * - * @generated from field: int32 rows = 3; - */ - rows: number; -}; - -/** - * Describes the message session.v1.ResizeQuiescence. - * Use `create(ResizeQuiescenceSchema)` to create a new message. - */ -export const ResizeQuiescenceSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 6); - -/** - * TerminalOutput contains data from the terminal (server to client) - * - * @generated from message session.v1.TerminalOutput - */ -export type TerminalOutput = Message<"session.v1.TerminalOutput"> & { - /** - * Raw terminal output bytes (ANSI escape codes, etc) - * - * @generated from field: bytes data = 1; - */ - data: Uint8Array; -}; - -/** - * Describes the message session.v1.TerminalOutput. - * Use `create(TerminalOutputSchema)` to create a new message. - */ -export const TerminalOutputSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 7); - -/** - * TerminalInput contains user input for the terminal (client to server) - * - * @generated from message session.v1.TerminalInput - */ -export type TerminalInput = Message<"session.v1.TerminalInput"> & { - /** - * Raw input bytes (keystrokes, etc) - * - * @generated from field: bytes data = 1; - */ - data: Uint8Array; -}; - -/** - * Describes the message session.v1.TerminalInput. - * Use `create(TerminalInputSchema)` to create a new message. - */ -export const TerminalInputSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 8); - -/** - * TerminalResize notifies of terminal dimension changes - * - * @generated from message session.v1.TerminalResize - */ -export type TerminalResize = Message<"session.v1.TerminalResize"> & { - /** - * @generated from field: int32 rows = 1; - */ - rows: number; - - /** - * @generated from field: int32 cols = 2; - */ - cols: number; -}; - -/** - * Describes the message session.v1.TerminalResize. - * Use `create(TerminalResizeSchema)` to create a new message. - */ -export const TerminalResizeSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 9); - -/** - * TerminalError indicates a terminal streaming error - * - * @generated from message session.v1.TerminalError - */ -export type TerminalError = Message<"session.v1.TerminalError"> & { - /** - * @generated from field: string message = 1; - */ - message: string; - - /** - * Error code (e.g., "session_not_found", "tmux_error") - * - * @generated from field: string code = 2; - */ - code: string; -}; - -/** - * Describes the message session.v1.TerminalError. - * Use `create(TerminalErrorSchema)` to create a new message. - */ -export const TerminalErrorSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 10); - -/** - * FlowControl manages backpressure between client and server for terminal streaming. - * Implements watermark-based flow control following xterm.js best practices. - * - * Reference: https://xtermjs.org/docs/guides/flowcontrol/ - * - * How it works: - * 1. Client tracks watermark (bytes queued in xterm.js write buffer) - * 2. When watermark exceeds HIGH threshold (100KB), client sends pause=true - * 3. Server stops reading from PTY and buffers data - * 4. When watermark drops below LOW threshold (10KB), client sends pause=false - * 5. Server resumes reading from PTY - * - * This prevents: - * - Browser tab crashes from memory exhaustion - * - Terminal rendering lag from write queue backup - * - Lost data from WebSocket buffer overflow - * - * @generated from message session.v1.FlowControl - */ -export type FlowControl = Message<"session.v1.FlowControl"> & { - /** - * If true, server should pause PTY output (HIGH watermark exceeded) - * If false, server should resume PTY output (LOW watermark reached) - * - * @generated from field: bool paused = 1; - */ - paused: boolean; - - /** - * Current watermark value in bytes (optional, for server-side metrics/debugging) - * Watermark = bytes queued in xterm.js but not yet parsed/rendered - * - * @generated from field: optional uint64 watermark = 2; - */ - watermark?: bigint; -}; - -/** - * Describes the message session.v1.FlowControl. - * Use `create(FlowControlSchema)` to create a new message. - */ -export const FlowControlSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 11); - -/** - * ScrollbackRequest requests historical terminal scrollback - * - * @generated from message session.v1.ScrollbackRequest - */ -export type ScrollbackRequest = Message<"session.v1.ScrollbackRequest"> & { - /** - * Start from this sequence (0 for latest) - * - * @generated from field: uint64 from_sequence = 1; - */ - fromSequence: bigint; - - /** - * Maximum number of lines to return - * - * @generated from field: int32 limit = 2; - */ - limit: number; -}; - -/** - * Describes the message session.v1.ScrollbackRequest. - * Use `create(ScrollbackRequestSchema)` to create a new message. - */ -export const ScrollbackRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 12); - -/** - * ScrollbackResponse contains historical terminal scrollback data - * - * @generated from message session.v1.ScrollbackResponse - */ -export type ScrollbackResponse = Message<"session.v1.ScrollbackResponse"> & { - /** - * Scrollback data chunks - * - * @generated from field: repeated session.v1.ScrollbackChunk chunks = 1; - */ - chunks: ScrollbackChunk[]; - - /** - * True if more data available - * - * @generated from field: bool has_more = 2; - */ - hasMore: boolean; - - /** - * Total lines available - * - * @generated from field: uint64 total_lines = 3; - */ - totalLines: bigint; - - /** - * Oldest sequence in storage - * - * @generated from field: uint64 oldest_sequence = 4; - */ - oldestSequence: bigint; - - /** - * Newest sequence in storage - * - * @generated from field: uint64 newest_sequence = 5; - */ - newestSequence: bigint; -}; - -/** - * Describes the message session.v1.ScrollbackResponse. - * Use `create(ScrollbackResponseSchema)` to create a new message. - */ -export const ScrollbackResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 13); - -/** - * ScrollbackChunk represents a chunk of scrollback data - * - * @generated from message session.v1.ScrollbackChunk - */ -export type ScrollbackChunk = Message<"session.v1.ScrollbackChunk"> & { - /** - * Terminal output data - * - * @generated from field: bytes data = 1; - */ - data: Uint8Array; - - /** - * Sequence number for ordering - * - * @generated from field: uint64 sequence = 2; - */ - sequence: bigint; - - /** - * Unix timestamp in milliseconds - * - * @generated from field: int64 timestamp_ms = 3; - */ - timestampMs: bigint; -}; - -/** - * Describes the message session.v1.ScrollbackChunk. - * Use `create(ScrollbackChunkSchema)` to create a new message. - */ -export const ScrollbackChunkSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 14); - -/** - * CurrentPaneRequest requests the current visible tmux pane content. - * This gives the exact content the user would see if they attached to tmux directly. - * - * @generated from message session.v1.CurrentPaneRequest - */ -export type CurrentPaneRequest = Message<"session.v1.CurrentPaneRequest"> & { - /** - * Number of lines to capture from the bottom of the pane (default: 50) - * If 0 or negative, captures the entire visible pane - * - * @generated from field: int32 lines = 1; - */ - lines: number; - - /** - * Include escape sequences for colors and formatting (default: true) - * - * @generated from field: bool include_escapes = 2; - */ - includeEscapes: boolean; - - /** - * Target terminal dimensions (optional) - * If provided, server will resize tmux pane to match BEFORE capturing content - * This prevents size mismatches between client's browser terminal and server's tmux pane - * - * Target columns (width) - * - * @generated from field: optional int32 target_cols = 3; - */ - targetCols?: number; - - /** - * Target rows (height) - * - * @generated from field: optional int32 target_rows = 4; - */ - targetRows?: number; -}; - -/** - * Describes the message session.v1.CurrentPaneRequest. - * Use `create(CurrentPaneRequestSchema)` to create a new message. - */ -export const CurrentPaneRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 15); - -/** - * CurrentPaneResponse contains the current visible tmux pane content - * - * @generated from message session.v1.CurrentPaneResponse - */ -export type CurrentPaneResponse = Message<"session.v1.CurrentPaneResponse"> & { - /** - * Raw terminal content from tmux capture-pane - * - * @generated from field: bytes content = 1; - */ - content: Uint8Array; - - /** - * Cursor position in the pane - * - * Column (0-based) - * - * @generated from field: int32 cursor_x = 2; - */ - cursorX: number; - - /** - * Row (0-based) - * - * @generated from field: int32 cursor_y = 3; - */ - cursorY: number; - - /** - * Current pane dimensions - * - * Columns - * - * @generated from field: int32 pane_width = 4; - */ - paneWidth: number; - - /** - * Rows - * - * @generated from field: int32 pane_height = 5; - */ - paneHeight: number; -}; - -/** - * Describes the message session.v1.CurrentPaneResponse. - * Use `create(CurrentPaneResponseSchema)` to create a new message. - */ -export const CurrentPaneResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 16); - -/** - * UserInteractionEvent is emitted when user interacts with a session. - * Triggers immediate review queue re-evaluation for responsive feedback. - * - * @generated from message session.v1.UserInteractionEvent - */ -export type UserInteractionEvent = Message<"session.v1.UserInteractionEvent"> & { - /** - * Session identifier - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Type of interaction - * - * @generated from field: session.v1.UserInteractionEvent.InteractionType type = 2; - */ - type: UserInteractionEvent_InteractionType; - - /** - * Optional context about the interaction - * - * @generated from field: string context = 3; - */ - context: string; -}; - -/** - * Describes the message session.v1.UserInteractionEvent. - * Use `create(UserInteractionEventSchema)` to create a new message. - */ -export const UserInteractionEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 17); - -/** - * Interaction types - * - * @generated from enum session.v1.UserInteractionEvent.InteractionType - */ -export enum UserInteractionEvent_InteractionType { - /** - * @generated from enum value: INTERACTION_TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * User typed input in terminal - * - * @generated from enum value: INTERACTION_TYPE_TERMINAL_INPUT = 1; - */ - TERMINAL_INPUT = 1, - - /** - * User approved a prompt - * - * @generated from enum value: INTERACTION_TYPE_APPROVAL_GIVEN = 2; - */ - APPROVAL_GIVEN = 2, - - /** - * User denied/rejected a prompt - * - * @generated from enum value: INTERACTION_TYPE_APPROVAL_DENIED = 3; - */ - APPROVAL_DENIED = 3, - - /** - * User executed a command - * - * @generated from enum value: INTERACTION_TYPE_COMMAND_EXECUTED = 4; - */ - COMMAND_EXECUTED = 4, - - /** - * User attached to session - * - * @generated from enum value: INTERACTION_TYPE_SESSION_ATTACHED = 5; - */ - SESSION_ATTACHED = 5, - - /** - * User detached from session - * - * @generated from enum value: INTERACTION_TYPE_SESSION_DETACHED = 6; - */ - SESSION_DETACHED = 6, - - /** - * User opened notification panel - * - * @generated from enum value: INTERACTION_TYPE_NOTIFICATION_PANEL_OPENED = 7; - */ - NOTIFICATION_PANEL_OPENED = 7, - - /** - * User closed notification panel - * - * @generated from enum value: INTERACTION_TYPE_NOTIFICATION_PANEL_CLOSED = 8; - */ - NOTIFICATION_PANEL_CLOSED = 8, - - /** - * User viewed a notification - * - * @generated from enum value: INTERACTION_TYPE_NOTIFICATION_VIEWED = 9; - */ - NOTIFICATION_VIEWED = 9, - - /** - * User dismissed a notification - * - * @generated from enum value: INTERACTION_TYPE_NOTIFICATION_DISMISSED = 10; - */ - NOTIFICATION_DISMISSED = 10, - - /** - * User marked notification as read - * - * @generated from enum value: INTERACTION_TYPE_NOTIFICATION_MARKED_READ = 11; - */ - NOTIFICATION_MARKED_READ = 11, - - /** - * User marked all notifications as read - * - * @generated from enum value: INTERACTION_TYPE_NOTIFICATION_MARKED_ALL_READ = 12; - */ - NOTIFICATION_MARKED_ALL_READ = 12, - - /** - * User removed notification from history - * - * @generated from enum value: INTERACTION_TYPE_NOTIFICATION_REMOVED = 13; - */ - NOTIFICATION_REMOVED = 13, - - /** - * User cleared notification history - * - * @generated from enum value: INTERACTION_TYPE_NOTIFICATION_HISTORY_CLEARED = 14; - */ - NOTIFICATION_HISTORY_CLEARED = 14, - - /** - * User clicked notification to view session - * - * @generated from enum value: INTERACTION_TYPE_NOTIFICATION_SESSION_VIEWED = 15; - */ - NOTIFICATION_SESSION_VIEWED = 15, -} - -/** - * Describes the enum session.v1.UserInteractionEvent.InteractionType. - */ -export const UserInteractionEvent_InteractionTypeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_events, 17, 0); - -/** - * SessionAcknowledgedEvent is emitted when user acknowledges/skips a session. - * Session is immediately removed from review queue until next update. - * - * @generated from message session.v1.SessionAcknowledgedEvent - */ -export type SessionAcknowledgedEvent = Message<"session.v1.SessionAcknowledgedEvent"> & { - /** - * Session identifier - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * When the acknowledgment occurred - * - * @generated from field: google.protobuf.Timestamp acknowledged_at = 2; - */ - acknowledgedAt?: Timestamp; - - /** - * Optional reason for acknowledgment - * - * @generated from field: string reason = 3; - */ - reason: string; -}; - -/** - * Describes the message session.v1.SessionAcknowledgedEvent. - * Use `create(SessionAcknowledgedEventSchema)` to create a new message. - */ -export const SessionAcknowledgedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 18); - -/** - * ApprovalResponseEvent is emitted when user responds to approval dialog. - * Session status is updated and review queue item is removed. - * - * @generated from message session.v1.ApprovalResponseEvent - */ -export type ApprovalResponseEvent = Message<"session.v1.ApprovalResponseEvent"> & { - /** - * Session identifier - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Whether user approved (true) or denied (false) - * - * @generated from field: bool approved = 2; - */ - approved: boolean; - - /** - * What was being approved - * - * @generated from field: string context = 3; - */ - context: string; - - /** - * When the response occurred - * - * @generated from field: google.protobuf.Timestamp responded_at = 4; - */ - respondedAt?: Timestamp; -}; - -/** - * Describes the message session.v1.ApprovalResponseEvent. - * Use `create(ApprovalResponseEventSchema)` to create a new message. - */ -export const ApprovalResponseEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 19); - -/** - * ReviewQueueEvent represents changes to the review queue. - * Used for WatchReviewQueue streaming RPC. - * - * @generated from message session.v1.ReviewQueueEvent - */ -export type ReviewQueueEvent = Message<"session.v1.ReviewQueueEvent"> & { - /** - * Timestamp when the event occurred - * - * @generated from field: google.protobuf.Timestamp timestamp = 1; - */ - timestamp?: Timestamp; - - /** - * Event type - * - * @generated from oneof session.v1.ReviewQueueEvent.event - */ - event: { - /** - * @generated from field: session.v1.ReviewQueueItemAddedEvent item_added = 2; - */ - value: ReviewQueueItemAddedEvent; - case: "itemAdded"; - } | { - /** - * @generated from field: session.v1.ReviewQueueItemRemovedEvent item_removed = 3; - */ - value: ReviewQueueItemRemovedEvent; - case: "itemRemoved"; - } | { - /** - * @generated from field: session.v1.ReviewQueueItemUpdatedEvent item_updated = 4; - */ - value: ReviewQueueItemUpdatedEvent; - case: "itemUpdated"; - } | { - /** - * @generated from field: session.v1.ReviewQueueStatisticsEvent statistics = 5; - */ - value: ReviewQueueStatisticsEvent; - case: "statistics"; - } | { case: undefined; value?: undefined }; -}; - -/** - * Describes the message session.v1.ReviewQueueEvent. - * Use `create(ReviewQueueEventSchema)` to create a new message. - */ -export const ReviewQueueEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 20); - -/** - * ReviewQueueItemAddedEvent is emitted when item is added to queue - * - * @generated from message session.v1.ReviewQueueItemAddedEvent - */ -export type ReviewQueueItemAddedEvent = Message<"session.v1.ReviewQueueItemAddedEvent"> & { - /** - * The item that was added - * - * @generated from field: session.v1.ReviewItem item = 1; - */ - item?: ReviewItem; - - /** - * What triggered this addition - * - * "poller", "manual_check", "status_change" - * - * @generated from field: string trigger = 2; - */ - trigger: string; - - /** - * Whether this item is part of an initial snapshot (sent on WebSocket reconnection). - * Frontend should NOT fire notifications for snapshot items to prevent duplicates. - * - true: Item is part of initial snapshot (existing queue items sent on reconnect) - * - false: Item is a real-time addition (new session needs attention) - * - * @generated from field: bool is_snapshot = 3; - */ - isSnapshot: boolean; -}; - -/** - * Describes the message session.v1.ReviewQueueItemAddedEvent. - * Use `create(ReviewQueueItemAddedEventSchema)` to create a new message. - */ -export const ReviewQueueItemAddedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 21); - -/** - * ReviewQueueItemRemovedEvent is emitted when item is removed from queue - * - * @generated from message session.v1.ReviewQueueItemRemovedEvent - */ -export type ReviewQueueItemRemovedEvent = Message<"session.v1.ReviewQueueItemRemovedEvent"> & { - /** - * Session ID of removed item - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Why it was removed - * - * "resolved", "dismissed", "timeout", "acknowledged" - * - * @generated from field: string reason = 2; - */ - reason: string; -}; - -/** - * Describes the message session.v1.ReviewQueueItemRemovedEvent. - * Use `create(ReviewQueueItemRemovedEventSchema)` to create a new message. - */ -export const ReviewQueueItemRemovedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 22); - -/** - * ReviewQueueItemUpdatedEvent is emitted when item properties change - * - * @generated from message session.v1.ReviewQueueItemUpdatedEvent - */ -export type ReviewQueueItemUpdatedEvent = Message<"session.v1.ReviewQueueItemUpdatedEvent"> & { - /** - * Session ID - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Updated item - * - * @generated from field: session.v1.ReviewItem item = 2; - */ - item?: ReviewItem; - - /** - * What changed - * - * "priority", "context", "reason" - * - * @generated from field: repeated string updated_fields = 3; - */ - updatedFields: string[]; -}; - -/** - * Describes the message session.v1.ReviewQueueItemUpdatedEvent. - * Use `create(ReviewQueueItemUpdatedEventSchema)` to create a new message. - */ -export const ReviewQueueItemUpdatedEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 23); - -/** - * ReviewQueueStatisticsEvent provides aggregate queue statistics - * - * @generated from message session.v1.ReviewQueueStatisticsEvent - */ -export type ReviewQueueStatisticsEvent = Message<"session.v1.ReviewQueueStatisticsEvent"> & { - /** - * Total items in queue - * - * @generated from field: int32 total_items = 1; - */ - totalItems: number; - - /** - * Items by priority level - * - * @generated from field: map by_priority = 2; - */ - byPriority: { [key: number]: number }; - - /** - * Items by attention reason - * - * @generated from field: map by_reason = 3; - */ - byReason: { [key: number]: number }; - - /** - * Average age in milliseconds - * - * @generated from field: int64 average_age_ms = 4; - */ - averageAgeMs: bigint; - - /** - * Sessions that auto-escalated since last statistics - * - * @generated from field: repeated string escalated_items = 5; - */ - escalatedItems: string[]; -}; - -/** - * Describes the message session.v1.ReviewQueueStatisticsEvent. - * Use `create(ReviewQueueStatisticsEventSchema)` to create a new message. - */ -export const ReviewQueueStatisticsEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 24); - -/** - * NotificationEvent is emitted when a tmux session sends a notification. - * Broadcast to all connected clients (web UI and TUI) for display. - * - * @generated from message session.v1.NotificationEvent - */ -export type NotificationEvent = Message<"session.v1.NotificationEvent"> & { - /** - * Session that sent the notification - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Session name for display - * - * @generated from field: string session_name = 2; - */ - sessionName: string; - - /** - * Type of notification (determines default UI treatment) - * - * @generated from field: session.v1.NotificationType notification_type = 3; - */ - notificationType: NotificationType; - - /** - * Priority level (determines audio, visual styling, auto-dismiss) - * - * @generated from field: session.v1.NotificationPriority priority = 4; - */ - priority: NotificationPriority; - - /** - * Human-readable title - * - * @generated from field: string title = 5; - */ - title: string; - - /** - * Detailed message - * - * @generated from field: string message = 6; - */ - message: string; - - /** - * Optional metadata (key-value pairs for additional context) - * - * @generated from field: map metadata = 7; - */ - metadata: { [key: string]: string }; - - /** - * When the notification was sent (from server) - * - * @generated from field: google.protobuf.Timestamp timestamp = 8; - */ - timestamp?: Timestamp; - - /** - * Unique notification ID (for tracking) - * - * @generated from field: string notification_id = 9; - */ - notificationId: string; -}; - -/** - * Describes the message session.v1.NotificationEvent. - * Use `create(NotificationEventSchema)` to create a new message. - */ -export const NotificationEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_events, 25); - diff --git a/web-app/src/gen/session/v1/github_user_pb.ts b/web-app/src/gen/session/v1/github_user_pb.ts deleted file mode 100644 index 5d500e564..000000000 --- a/web-app/src/gen/session/v1/github_user_pb.ts +++ /dev/null @@ -1,700 +0,0 @@ -// @generated by protoc-gen-es v2.11.0 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/github_user.proto (package session.v1, syntax proto3) -/* eslint-disable */ - -import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; -import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; -import type { UserPR } from "./types_pb"; -import { file_session_v1_types } from "./types_pb"; -import type { Message } from "@bufbuild/protobuf"; - -/** - * Describes the file session/v1/github_user.proto. - */ -export const file_session_v1_github_user: GenFile = /*@__PURE__*/ - fileDesc("ChxzZXNzaW9uL3YxL2dpdGh1Yl91c2VyLnByb3RvEgpzZXNzaW9uLnYxIkUKDUdpdEh1YkFjY291bnQSEAoIdXNlcm5hbWUYASABKAkSFAoMaXNfZW52X3Rva2VuGAIgASgIEgwKBGhvc3QYAyABKAkiegoPR2l0SHViQXV0aFN0YXRlEhEKCWF2YWlsYWJsZRgBIAEoCBIQCgh1c2VybmFtZRgCIAEoCRIVCg1lcnJvcl9tZXNzYWdlGAMgASgJEisKCGFjY291bnRzGAQgAygLMhkuc2Vzc2lvbi52MS5HaXRIdWJBY2NvdW50IhQKEkxpc3RVc2VyUFJzUmVxdWVzdCJnChNMaXN0VXNlclBSc1Jlc3BvbnNlEh8KA3BycxgBIAMoCzISLnNlc3Npb24udjEuVXNlclBSEi8KCmF1dGhfc3RhdGUYAiABKAsyGy5zZXNzaW9uLnYxLkdpdEh1YkF1dGhTdGF0ZSIVChNXYXRjaFVzZXJQUnNSZXF1ZXN0InMKC1VzZXJQUkV2ZW50EhIKCmV2ZW50X3R5cGUYASABKAkSHwoDcHJzGAIgAygLMhIuc2Vzc2lvbi52MS5Vc2VyUFISLwoKYXV0aF9zdGF0ZRgDIAEoCzIbLnNlc3Npb24udjEuR2l0SHViQXV0aFN0YXRlIhsKGUdldEdpdEh1YkF1dGhTdGF0ZVJlcXVlc3QiTQoaR2V0R2l0SHViQXV0aFN0YXRlUmVzcG9uc2USLwoKYXV0aF9zdGF0ZRgBIAEoCzIbLnNlc3Npb24udjEuR2l0SHViQXV0aFN0YXRlIiwKHFN0YXJ0R2l0SHViRGV2aWNlQXV0aFJlcXVlc3QSDAoEaG9zdBgBIAEoCSKHAQodU3RhcnRHaXRIdWJEZXZpY2VBdXRoUmVzcG9uc2USEwoLZGV2aWNlX2NvZGUYASABKAkSEQoJdXNlcl9jb2RlGAIgASgJEhgKEHZlcmlmaWNhdGlvbl91cmkYAyABKAkSEgoKZXhwaXJlc19pbhgEIAEoBRIQCghpbnRlcnZhbBgFIAEoBSIyChtQb2xsR2l0SHViRGV2aWNlQXV0aFJlcXVlc3QSEwoLZGV2aWNlX2NvZGUYASABKAkijAEKHFBvbGxHaXRIdWJEZXZpY2VBdXRoUmVzcG9uc2USLAoGc3RhdHVzGAEgASgOMhwuc2Vzc2lvbi52MS5EZXZpY2VBdXRoU3RhdHVzEg0KBWVycm9yGAIgASgJEi8KCmF1dGhfc3RhdGUYAyABKAsyGy5zZXNzaW9uLnYxLkdpdEh1YkF1dGhTdGF0ZSI6ChhSZXZva2VHaXRIdWJUb2tlblJlcXVlc3QSEAoIdXNlcm5hbWUYASABKAkSDAoEaG9zdBgCIAEoCSIbChlSZXZva2VHaXRIdWJUb2tlblJlc3BvbnNlIhsKGUxpc3RHaXRIdWJBY2NvdW50c1JlcXVlc3QiYwoaTGlzdEdpdEh1YkFjY291bnRzUmVzcG9uc2USKwoIYWNjb3VudHMYASADKAsyGS5zZXNzaW9uLnYxLkdpdEh1YkFjY291bnQSGAoQZW50ZXJwcmlzZV9ob3N0cxgCIAMoCSI/CiBBZGRHaXRIdWJBY2NvdW50V2l0aFRva2VuUmVxdWVzdBIMCgRob3N0GAEgASgJEg0KBXRva2VuGAIgASgJIlQKIUFkZEdpdEh1YkFjY291bnRXaXRoVG9rZW5SZXNwb25zZRIvCgphdXRoX3N0YXRlGAEgASgLMhsuc2Vzc2lvbi52MS5HaXRIdWJBdXRoU3RhdGUiRgoNR2l0SHViQ0xJSG9zdBIMCgRob3N0GAEgASgJEhAKCHVzZXJuYW1lGAIgASgJEhUKDWFscmVhZHlfYWRkZWQYAyABKAgiGwoZTGlzdEdpdEh1YkNMSUhvc3RzUmVxdWVzdCJcChpMaXN0R2l0SHViQ0xJSG9zdHNSZXNwb25zZRIoCgVob3N0cxgBIAMoCzIZLnNlc3Npb24udjEuR2l0SHViQ0xJSG9zdBIUCgxnaF9hdmFpbGFibGUYAiABKAgiLgoeQWRkR2l0SHViQWNjb3VudEZyb21DTElSZXF1ZXN0EgwKBGhvc3QYASABKAkqtQEKEERldmljZUF1dGhTdGF0dXMSIgoeREVWSUNFX0FVVEhfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHgoaREVWSUNFX0FVVEhfU1RBVFVTX1BFTkRJTkcQARIfChtERVZJQ0VfQVVUSF9TVEFUVVNfQ09NUExFVEUQAhIeChpERVZJQ0VfQVVUSF9TVEFUVVNfRVhQSVJFRBADEhwKGERFVklDRV9BVVRIX1NUQVRVU19FUlJPUhAEMp0IChFHaXRIdWJVc2VyU2VydmljZRJQCgtMaXN0VXNlclBScxIeLnNlc3Npb24udjEuTGlzdFVzZXJQUnNSZXF1ZXN0Gh8uc2Vzc2lvbi52MS5MaXN0VXNlclBSc1Jlc3BvbnNlIgASTAoMV2F0Y2hVc2VyUFJzEh8uc2Vzc2lvbi52MS5XYXRjaFVzZXJQUnNSZXF1ZXN0Ghcuc2Vzc2lvbi52MS5Vc2VyUFJFdmVudCIAMAESZQoSR2V0R2l0SHViQXV0aFN0YXRlEiUuc2Vzc2lvbi52MS5HZXRHaXRIdWJBdXRoU3RhdGVSZXF1ZXN0GiYuc2Vzc2lvbi52MS5HZXRHaXRIdWJBdXRoU3RhdGVSZXNwb25zZSIAEm4KFVN0YXJ0R2l0SHViRGV2aWNlQXV0aBIoLnNlc3Npb24udjEuU3RhcnRHaXRIdWJEZXZpY2VBdXRoUmVxdWVzdBopLnNlc3Npb24udjEuU3RhcnRHaXRIdWJEZXZpY2VBdXRoUmVzcG9uc2UiABJrChRQb2xsR2l0SHViRGV2aWNlQXV0aBInLnNlc3Npb24udjEuUG9sbEdpdEh1YkRldmljZUF1dGhSZXF1ZXN0Giguc2Vzc2lvbi52MS5Qb2xsR2l0SHViRGV2aWNlQXV0aFJlc3BvbnNlIgASYgoRUmV2b2tlR2l0SHViVG9rZW4SJC5zZXNzaW9uLnYxLlJldm9rZUdpdEh1YlRva2VuUmVxdWVzdBolLnNlc3Npb24udjEuUmV2b2tlR2l0SHViVG9rZW5SZXNwb25zZSIAEmUKEkxpc3RHaXRIdWJBY2NvdW50cxIlLnNlc3Npb24udjEuTGlzdEdpdEh1YkFjY291bnRzUmVxdWVzdBomLnNlc3Npb24udjEuTGlzdEdpdEh1YkFjY291bnRzUmVzcG9uc2UiABJ6ChlBZGRHaXRIdWJBY2NvdW50V2l0aFRva2VuEiwuc2Vzc2lvbi52MS5BZGRHaXRIdWJBY2NvdW50V2l0aFRva2VuUmVxdWVzdBotLnNlc3Npb24udjEuQWRkR2l0SHViQWNjb3VudFdpdGhUb2tlblJlc3BvbnNlIgASZQoSTGlzdEdpdEh1YkNMSUhvc3RzEiUuc2Vzc2lvbi52MS5MaXN0R2l0SHViQ0xJSG9zdHNSZXF1ZXN0GiYuc2Vzc2lvbi52MS5MaXN0R2l0SHViQ0xJSG9zdHNSZXNwb25zZSIAEnYKF0FkZEdpdEh1YkFjY291bnRGcm9tQ0xJEiouc2Vzc2lvbi52MS5BZGRHaXRIdWJBY2NvdW50RnJvbUNMSVJlcXVlc3QaLS5zZXNzaW9uLnYxLkFkZEdpdEh1YkFjY291bnRXaXRoVG9rZW5SZXNwb25zZSIAQq8BCg5jb20uc2Vzc2lvbi52MUIPR2l0aHViVXNlclByb3RvUAFaQ2dpdGh1Yi5jb20vdHN0YXBsZXIvc3RhcGxlci1zcXVhZC9nZW4vcHJvdG8vZ28vc2Vzc2lvbi92MTtzZXNzaW9udjGiAgNTWFiqAgpTZXNzaW9uLlYxygIKU2Vzc2lvblxWMeICFlNlc3Npb25cVjFcR1BCTWV0YWRhdGHqAgtTZXNzaW9uOjpWMWIGcHJvdG8z", [file_session_v1_types]); - -/** - * GitHubAccount is a single connected GitHub account. - * - * @generated from message session.v1.GitHubAccount - */ -export type GitHubAccount = Message<"session.v1.GitHubAccount"> & { - /** - * @generated from field: string username = 1; - */ - username: string; - - /** - * true when sourced from GITHUB_TOKEN/GH_TOKEN env var - * - * @generated from field: bool is_env_token = 2; - */ - isEnvToken: boolean; - - /** - * GitHub host, e.g. "github.com" or a GHES hostname; empty means github.com - * - * @generated from field: string host = 3; - */ - host: string; -}; - -/** - * Describes the message session.v1.GitHubAccount. - * Use `create(GitHubAccountSchema)` to create a new message. - */ -export const GitHubAccountSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 0); - -/** - * GitHubAuthState describes the current GitHub authentication status. - * - * @generated from message session.v1.GitHubAuthState - */ -export type GitHubAuthState = Message<"session.v1.GitHubAuthState"> & { - /** - * true when a token is present and /user returned 200 - * - * @generated from field: bool available = 1; - */ - available: boolean; - - /** - * primary (first) GitHub login; empty when available=false - * - * @generated from field: string username = 2; - */ - username: string; - - /** - * human-readable reason when available=false - * - * @generated from field: string error_message = 3; - */ - errorMessage: string; - - /** - * all connected accounts - * - * @generated from field: repeated session.v1.GitHubAccount accounts = 4; - */ - accounts: GitHubAccount[]; -}; - -/** - * Describes the message session.v1.GitHubAuthState. - * Use `create(GitHubAuthStateSchema)` to create a new message. - */ -export const GitHubAuthStateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 1); - -/** - * @generated from message session.v1.ListUserPRsRequest - */ -export type ListUserPRsRequest = Message<"session.v1.ListUserPRsRequest"> & { -}; - -/** - * Describes the message session.v1.ListUserPRsRequest. - * Use `create(ListUserPRsRequestSchema)` to create a new message. - */ -export const ListUserPRsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 2); - -/** - * @generated from message session.v1.ListUserPRsResponse - */ -export type ListUserPRsResponse = Message<"session.v1.ListUserPRsResponse"> & { - /** - * @generated from field: repeated session.v1.UserPR prs = 1; - */ - prs: UserPR[]; - - /** - * @generated from field: session.v1.GitHubAuthState auth_state = 2; - */ - authState?: GitHubAuthState; -}; - -/** - * Describes the message session.v1.ListUserPRsResponse. - * Use `create(ListUserPRsResponseSchema)` to create a new message. - */ -export const ListUserPRsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 3); - -/** - * @generated from message session.v1.WatchUserPRsRequest - */ -export type WatchUserPRsRequest = Message<"session.v1.WatchUserPRsRequest"> & { -}; - -/** - * Describes the message session.v1.WatchUserPRsRequest. - * Use `create(WatchUserPRsRequestSchema)` to create a new message. - */ -export const WatchUserPRsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 4); - -/** - * @generated from message session.v1.UserPREvent - */ -export type UserPREvent = Message<"session.v1.UserPREvent"> & { - /** - * event_type is "snapshot", "added", "updated", or "removed". - * - * @generated from field: string event_type = 1; - */ - eventType: string; - - /** - * full list for "snapshot"; changed PRs otherwise - * - * @generated from field: repeated session.v1.UserPR prs = 2; - */ - prs: UserPR[]; - - /** - * @generated from field: session.v1.GitHubAuthState auth_state = 3; - */ - authState?: GitHubAuthState; -}; - -/** - * Describes the message session.v1.UserPREvent. - * Use `create(UserPREventSchema)` to create a new message. - */ -export const UserPREventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 5); - -/** - * @generated from message session.v1.GetGitHubAuthStateRequest - */ -export type GetGitHubAuthStateRequest = Message<"session.v1.GetGitHubAuthStateRequest"> & { -}; - -/** - * Describes the message session.v1.GetGitHubAuthStateRequest. - * Use `create(GetGitHubAuthStateRequestSchema)` to create a new message. - */ -export const GetGitHubAuthStateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 6); - -/** - * @generated from message session.v1.GetGitHubAuthStateResponse - */ -export type GetGitHubAuthStateResponse = Message<"session.v1.GetGitHubAuthStateResponse"> & { - /** - * @generated from field: session.v1.GitHubAuthState auth_state = 1; - */ - authState?: GitHubAuthState; -}; - -/** - * Describes the message session.v1.GetGitHubAuthStateResponse. - * Use `create(GetGitHubAuthStateResponseSchema)` to create a new message. - */ -export const GetGitHubAuthStateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 7); - -/** - * @generated from message session.v1.StartGitHubDeviceAuthRequest - */ -export type StartGitHubDeviceAuthRequest = Message<"session.v1.StartGitHubDeviceAuthRequest"> & { - /** - * GitHub host to authenticate against; empty means github.com - * - * @generated from field: string host = 1; - */ - host: string; -}; - -/** - * Describes the message session.v1.StartGitHubDeviceAuthRequest. - * Use `create(StartGitHubDeviceAuthRequestSchema)` to create a new message. - */ -export const StartGitHubDeviceAuthRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 8); - -/** - * @generated from message session.v1.StartGitHubDeviceAuthResponse - */ -export type StartGitHubDeviceAuthResponse = Message<"session.v1.StartGitHubDeviceAuthResponse"> & { - /** - * opaque code passed back to PollGitHubDeviceAuth - * - * @generated from field: string device_code = 1; - */ - deviceCode: string; - - /** - * 8-char code the user enters at verification_uri - * - * @generated from field: string user_code = 2; - */ - userCode: string; - - /** - * URL to open (e.g. https://github.com/login/device) - * - * @generated from field: string verification_uri = 3; - */ - verificationUri: string; - - /** - * seconds until the device_code expires - * - * @generated from field: int32 expires_in = 4; - */ - expiresIn: number; - - /** - * minimum poll interval in seconds - * - * @generated from field: int32 interval = 5; - */ - interval: number; -}; - -/** - * Describes the message session.v1.StartGitHubDeviceAuthResponse. - * Use `create(StartGitHubDeviceAuthResponseSchema)` to create a new message. - */ -export const StartGitHubDeviceAuthResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 9); - -/** - * @generated from message session.v1.PollGitHubDeviceAuthRequest - */ -export type PollGitHubDeviceAuthRequest = Message<"session.v1.PollGitHubDeviceAuthRequest"> & { - /** - * @generated from field: string device_code = 1; - */ - deviceCode: string; -}; - -/** - * Describes the message session.v1.PollGitHubDeviceAuthRequest. - * Use `create(PollGitHubDeviceAuthRequestSchema)` to create a new message. - */ -export const PollGitHubDeviceAuthRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 10); - -/** - * @generated from message session.v1.PollGitHubDeviceAuthResponse - */ -export type PollGitHubDeviceAuthResponse = Message<"session.v1.PollGitHubDeviceAuthResponse"> & { - /** - * @generated from field: session.v1.DeviceAuthStatus status = 1; - */ - status: DeviceAuthStatus; - - /** - * set when status == ERROR - * - * @generated from field: string error = 2; - */ - error: string; - - /** - * set when status == COMPLETE - * - * @generated from field: session.v1.GitHubAuthState auth_state = 3; - */ - authState?: GitHubAuthState; -}; - -/** - * Describes the message session.v1.PollGitHubDeviceAuthResponse. - * Use `create(PollGitHubDeviceAuthResponseSchema)` to create a new message. - */ -export const PollGitHubDeviceAuthResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 11); - -/** - * @generated from message session.v1.RevokeGitHubTokenRequest - */ -export type RevokeGitHubTokenRequest = Message<"session.v1.RevokeGitHubTokenRequest"> & { - /** - * if set, remove only this account; otherwise remove the legacy single-account token - * - * @generated from field: string username = 1; - */ - username: string; - - /** - * host the account belongs to; empty means github.com - * - * @generated from field: string host = 2; - */ - host: string; -}; - -/** - * Describes the message session.v1.RevokeGitHubTokenRequest. - * Use `create(RevokeGitHubTokenRequestSchema)` to create a new message. - */ -export const RevokeGitHubTokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 12); - -/** - * @generated from message session.v1.RevokeGitHubTokenResponse - */ -export type RevokeGitHubTokenResponse = Message<"session.v1.RevokeGitHubTokenResponse"> & { -}; - -/** - * Describes the message session.v1.RevokeGitHubTokenResponse. - * Use `create(RevokeGitHubTokenResponseSchema)` to create a new message. - */ -export const RevokeGitHubTokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 13); - -/** - * @generated from message session.v1.ListGitHubAccountsRequest - */ -export type ListGitHubAccountsRequest = Message<"session.v1.ListGitHubAccountsRequest"> & { -}; - -/** - * Describes the message session.v1.ListGitHubAccountsRequest. - * Use `create(ListGitHubAccountsRequestSchema)` to create a new message. - */ -export const ListGitHubAccountsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 14); - -/** - * @generated from message session.v1.ListGitHubAccountsResponse - */ -export type ListGitHubAccountsResponse = Message<"session.v1.ListGitHubAccountsResponse"> & { - /** - * @generated from field: repeated session.v1.GitHubAccount accounts = 1; - */ - accounts: GitHubAccount[]; - - /** - * enterprise_hosts lists the GHES hostnames configured on the server - * (github.com is always implicitly available and not included here). - * - * @generated from field: repeated string enterprise_hosts = 2; - */ - enterpriseHosts: string[]; -}; - -/** - * Describes the message session.v1.ListGitHubAccountsResponse. - * Use `create(ListGitHubAccountsResponseSchema)` to create a new message. - */ -export const ListGitHubAccountsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 15); - -/** - * @generated from message session.v1.AddGitHubAccountWithTokenRequest - */ -export type AddGitHubAccountWithTokenRequest = Message<"session.v1.AddGitHubAccountWithTokenRequest"> & { - /** - * GitHub host to authenticate against; empty means github.com - * - * @generated from field: string host = 1; - */ - host: string; - - /** - * personal access token - * - * @generated from field: string token = 2; - */ - token: string; -}; - -/** - * Describes the message session.v1.AddGitHubAccountWithTokenRequest. - * Use `create(AddGitHubAccountWithTokenRequestSchema)` to create a new message. - */ -export const AddGitHubAccountWithTokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 16); - -/** - * @generated from message session.v1.AddGitHubAccountWithTokenResponse - */ -export type AddGitHubAccountWithTokenResponse = Message<"session.v1.AddGitHubAccountWithTokenResponse"> & { - /** - * updated state on success - * - * @generated from field: session.v1.GitHubAuthState auth_state = 1; - */ - authState?: GitHubAuthState; -}; - -/** - * Describes the message session.v1.AddGitHubAccountWithTokenResponse. - * Use `create(AddGitHubAccountWithTokenResponseSchema)` to create a new message. - */ -export const AddGitHubAccountWithTokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 17); - -/** - * GitHubCLIHost is a host the local `gh` CLI is already authenticated to. - * - * @generated from message session.v1.GitHubCLIHost - */ -export type GitHubCLIHost = Message<"session.v1.GitHubCLIHost"> & { - /** - * normalized host, e.g. "github.com" or a GHES hostname - * - * @generated from field: string host = 1; - */ - host: string; - - /** - * gh CLI's recorded username for this host, if known - * - * @generated from field: string username = 2; - */ - username: string; - - /** - * true when this host+username is already a connected account - * - * @generated from field: bool already_added = 3; - */ - alreadyAdded: boolean; -}; - -/** - * Describes the message session.v1.GitHubCLIHost. - * Use `create(GitHubCLIHostSchema)` to create a new message. - */ -export const GitHubCLIHostSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 18); - -/** - * @generated from message session.v1.ListGitHubCLIHostsRequest - */ -export type ListGitHubCLIHostsRequest = Message<"session.v1.ListGitHubCLIHostsRequest"> & { -}; - -/** - * Describes the message session.v1.ListGitHubCLIHostsRequest. - * Use `create(ListGitHubCLIHostsRequestSchema)` to create a new message. - */ -export const ListGitHubCLIHostsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 19); - -/** - * @generated from message session.v1.ListGitHubCLIHostsResponse - */ -export type ListGitHubCLIHostsResponse = Message<"session.v1.ListGitHubCLIHostsResponse"> & { - /** - * @generated from field: repeated session.v1.GitHubCLIHost hosts = 1; - */ - hosts: GitHubCLIHost[]; - - /** - * false when the gh CLI config could not be read (not installed / never logged in) - * - * @generated from field: bool gh_available = 2; - */ - ghAvailable: boolean; -}; - -/** - * Describes the message session.v1.ListGitHubCLIHostsResponse. - * Use `create(ListGitHubCLIHostsResponseSchema)` to create a new message. - */ -export const ListGitHubCLIHostsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 20); - -/** - * @generated from message session.v1.AddGitHubAccountFromCLIRequest - */ -export type AddGitHubAccountFromCLIRequest = Message<"session.v1.AddGitHubAccountFromCLIRequest"> & { - /** - * host to import, as returned by ListGitHubCLIHosts - * - * @generated from field: string host = 1; - */ - host: string; -}; - -/** - * Describes the message session.v1.AddGitHubAccountFromCLIRequest. - * Use `create(AddGitHubAccountFromCLIRequestSchema)` to create a new message. - */ -export const AddGitHubAccountFromCLIRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_github_user, 21); - -/** - * DeviceAuthStatus describes the outcome of a single poll attempt. - * - * @generated from enum session.v1.DeviceAuthStatus - */ -export enum DeviceAuthStatus { - /** - * @generated from enum value: DEVICE_AUTH_STATUS_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * waiting for user to authorize - * - * @generated from enum value: DEVICE_AUTH_STATUS_PENDING = 1; - */ - PENDING = 1, - - /** - * token received and stored in keychain - * - * @generated from enum value: DEVICE_AUTH_STATUS_COMPLETE = 2; - */ - COMPLETE = 2, - - /** - * device code expired; restart the flow - * - * @generated from enum value: DEVICE_AUTH_STATUS_EXPIRED = 3; - */ - EXPIRED = 3, - - /** - * unexpected error - * - * @generated from enum value: DEVICE_AUTH_STATUS_ERROR = 4; - */ - ERROR = 4, -} - -/** - * Describes the enum session.v1.DeviceAuthStatus. - */ -export const DeviceAuthStatusSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_github_user, 0); - -/** - * GitHubUserService provides access to the authenticated user's GitHub pull - * requests across all repos. Data is served from the in-process UserPRCache - * (which polls the GitHub GraphQL API in the background). No subprocess calls. - * - * @generated from service session.v1.GitHubUserService - */ -export const GitHubUserService: GenService<{ - /** - * ListUserPRs returns all open PRs authored by the authenticated user, - * annotated with any matching local session IDs and worktree paths. - * Returns an empty list with auth_state.available=false when unauthenticated. - * - * @generated from rpc session.v1.GitHubUserService.ListUserPRs - */ - listUserPRs: { - methodKind: "unary"; - input: typeof ListUserPRsRequestSchema; - output: typeof ListUserPRsResponseSchema; - }, - /** - * WatchUserPRs streams UserPREvent messages whenever the UserPRCache - * refreshes. The first event always contains a full snapshot. - * - * @generated from rpc session.v1.GitHubUserService.WatchUserPRs - */ - watchUserPRs: { - methodKind: "server_streaming"; - input: typeof WatchUserPRsRequestSchema; - output: typeof UserPREventSchema; - }, - /** - * GetGitHubAuthState returns current auth availability and username. - * Used by the frontend to show/hide the GitHub PRs section and render - * the auth banner when the user has not authenticated. - * - * @generated from rpc session.v1.GitHubUserService.GetGitHubAuthState - */ - getGitHubAuthState: { - methodKind: "unary"; - input: typeof GetGitHubAuthStateRequestSchema; - output: typeof GetGitHubAuthStateResponseSchema; - }, - /** - * StartGitHubDeviceAuth initiates the GitHub Device Flow OAuth. Returns the - * user_code to display and verification_uri to open. The caller should then - * poll PollGitHubDeviceAuth until auth completes or expires. - * - * @generated from rpc session.v1.GitHubUserService.StartGitHubDeviceAuth - */ - startGitHubDeviceAuth: { - methodKind: "unary"; - input: typeof StartGitHubDeviceAuthRequestSchema; - output: typeof StartGitHubDeviceAuthResponseSchema; - }, - /** - * PollGitHubDeviceAuth polls GitHub's token endpoint once. Returns the - * current status: pending, complete (token stored in keychain), or expired. - * - * @generated from rpc session.v1.GitHubUserService.PollGitHubDeviceAuth - */ - pollGitHubDeviceAuth: { - methodKind: "unary"; - input: typeof PollGitHubDeviceAuthRequestSchema; - output: typeof PollGitHubDeviceAuthResponseSchema; - }, - /** - * RevokeGitHubToken removes the keychain-stored GitHub token and clears - * the auth state. Does not revoke the token on GitHub's side. - * - * @generated from rpc session.v1.GitHubUserService.RevokeGitHubToken - */ - revokeGitHubToken: { - methodKind: "unary"; - input: typeof RevokeGitHubTokenRequestSchema; - output: typeof RevokeGitHubTokenResponseSchema; - }, - /** - * ListGitHubAccounts returns all connected GitHub accounts (from keychain and env vars). - * - * @generated from rpc session.v1.GitHubUserService.ListGitHubAccounts - */ - listGitHubAccounts: { - methodKind: "unary"; - input: typeof ListGitHubAccountsRequestSchema; - output: typeof ListGitHubAccountsResponseSchema; - }, - /** - * AddGitHubAccountWithToken validates a personal access token against the - * host's /user endpoint and stores it in the keychain on success. Use this - * for hosts that don't support OAuth Device Flow (e.g. some GHES instances). - * - * @generated from rpc session.v1.GitHubUserService.AddGitHubAccountWithToken - */ - addGitHubAccountWithToken: { - methodKind: "unary"; - input: typeof AddGitHubAccountWithTokenRequestSchema; - output: typeof AddGitHubAccountWithTokenResponseSchema; - }, - /** - * ListGitHubCLIHosts discovers hosts the local `gh` CLI is already - * authenticated to (via its hosts.yml config), so the UI can offer them as - * one-click imports instead of requiring the user to paste a token. - * - * @generated from rpc session.v1.GitHubUserService.ListGitHubCLIHosts - */ - listGitHubCLIHosts: { - methodKind: "unary"; - input: typeof ListGitHubCLIHostsRequestSchema; - output: typeof ListGitHubCLIHostsResponseSchema; - }, - /** - * AddGitHubAccountFromCLI fetches the token gh CLI already holds for host - * (via `gh auth token --hostname `), validates it, and stores it in - * the keychain on success — the same outcome as AddGitHubAccountWithToken - * but without the user needing to locate/paste the token by hand. - * - * @generated from rpc session.v1.GitHubUserService.AddGitHubAccountFromCLI - */ - addGitHubAccountFromCLI: { - methodKind: "unary"; - input: typeof AddGitHubAccountFromCLIRequestSchema; - output: typeof AddGitHubAccountWithTokenResponseSchema; - }, -}> = /*@__PURE__*/ - serviceDesc(file_session_v1_github_user, 0); - diff --git a/web-app/src/gen/session/v1/headless_pb.ts b/web-app/src/gen/session/v1/headless_pb.ts deleted file mode 100644 index fa759d9fc..000000000 --- a/web-app/src/gen/session/v1/headless_pb.ts +++ /dev/null @@ -1,132 +0,0 @@ -// @generated by protoc-gen-es v2.11.0 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/headless.proto (package session.v1, syntax proto3) -/* eslint-disable */ - -import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; -import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; -import type { Message } from "@bufbuild/protobuf"; - -/** - * Describes the file session/v1/headless.proto. - */ -export const file_session_v1_headless: GenFile = /*@__PURE__*/ - fileDesc("ChlzZXNzaW9uL3YxL2hlYWRsZXNzLnByb3RvEgpzZXNzaW9uLnYxIoEBChZSdW5IZWFkbGVzc0NhbGxSZXF1ZXN0EhMKC2ZlYXR1cmVfa2V5GAEgASgJEhUKDXN5c3RlbV9wcm9tcHQYAiABKAkSEwoLdXNlcl9wcm9tcHQYAyABKAkSDQoFbW9kZWwYBCABKAkSFwoPdGltZW91dF9zZWNvbmRzGAUgASgFInAKF1J1bkhlYWRsZXNzQ2FsbFJlc3BvbnNlEgwKBHRleHQYASABKAkSDAoEZG9uZRgCIAEoCBIQCghpc19lcnJvchgDIAEoCBIVCg1lcnJvcl9tZXNzYWdlGAQgASgJEhAKCGNvc3RfdXNkGAUgASgBMnEKD0hlYWRsZXNzU2VydmljZRJeCg9SdW5IZWFkbGVzc0NhbGwSIi5zZXNzaW9uLnYxLlJ1bkhlYWRsZXNzQ2FsbFJlcXVlc3QaIy5zZXNzaW9uLnYxLlJ1bkhlYWRsZXNzQ2FsbFJlc3BvbnNlIgAwAUKtAQoOY29tLnNlc3Npb24udjFCDUhlYWRsZXNzUHJvdG9QAVpDZ2l0aHViLmNvbS90c3RhcGxlci9zdGFwbGVyLXNxdWFkL2dlbi9wcm90by9nby9zZXNzaW9uL3YxO3Nlc3Npb252MaICA1NYWKoCClNlc3Npb24uVjHKAgpTZXNzaW9uXFYx4gIWU2Vzc2lvblxWMVxHUEJNZXRhZGF0YeoCC1Nlc3Npb246OlYxYgZwcm90bzM"); - -/** - * RunHeadlessCallRequest specifies the parameters for a headless LLM call. - * - * @generated from message session.v1.RunHeadlessCallRequest - */ -export type RunHeadlessCallRequest = Message<"session.v1.RunHeadlessCallRequest"> & { - /** - * feature_key identifies which AI feature session pool to use. - * Allowed values: "review", "summarize", "pr-description", "commit-message", "custom". - * - * @generated from field: string feature_key = 1; - */ - featureKey: string; - - /** - * system_prompt is the stable system-level instruction sent on first call. - * - * @generated from field: string system_prompt = 2; - */ - systemPrompt: string; - - /** - * user_prompt is the per-call user message. - * - * @generated from field: string user_prompt = 3; - */ - userPrompt: string; - - /** - * model overrides the pool's default model for this call. - * - * @generated from field: string model = 4; - */ - model: string; - - /** - * timeout_seconds overrides the default timeout (default: 900s, max: 1800s). - * - * @generated from field: int32 timeout_seconds = 5; - */ - timeoutSeconds: number; -}; - -/** - * Describes the message session.v1.RunHeadlessCallRequest. - * Use `create(RunHeadlessCallRequestSchema)` to create a new message. - */ -export const RunHeadlessCallRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_headless, 0); - -/** - * RunHeadlessCallResponse is a single streaming chunk from the LLM response. - * - * @generated from message session.v1.RunHeadlessCallResponse - */ -export type RunHeadlessCallResponse = Message<"session.v1.RunHeadlessCallResponse"> & { - /** - * text is the streamed text fragment. May be empty for error/done-only messages. - * - * @generated from field: string text = 1; - */ - text: string; - - /** - * done is true when this is the final chunk. - * - * @generated from field: bool done = 2; - */ - done: boolean; - - /** - * is_error is true when an error occurred. - * - * @generated from field: bool is_error = 3; - */ - isError: boolean; - - /** - * error_message contains the error description when is_error is true. - * - * @generated from field: string error_message = 4; - */ - errorMessage: string; - - /** - * cost_usd is the estimated cost for this call (only set on the final chunk). - * - * @generated from field: double cost_usd = 5; - */ - costUsd: number; -}; - -/** - * Describes the message session.v1.RunHeadlessCallResponse. - * Use `create(RunHeadlessCallResponseSchema)` to create a new message. - */ -export const RunHeadlessCallResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_headless, 1); - -/** - * HeadlessService provides streaming LLM calls via the headless pool. - * - * @generated from service session.v1.HeadlessService - */ -export const HeadlessService: GenService<{ - /** - * RunHeadlessCall runs a headless LLM call and streams chunks back to the client. - * - * @generated from rpc session.v1.HeadlessService.RunHeadlessCall - */ - runHeadlessCall: { - methodKind: "server_streaming"; - input: typeof RunHeadlessCallRequestSchema; - output: typeof RunHeadlessCallResponseSchema; - }, -}> = /*@__PURE__*/ - serviceDesc(file_session_v1_headless, 0); - diff --git a/web-app/src/gen/session/v1/import_pb.ts b/web-app/src/gen/session/v1/import_pb.ts deleted file mode 100644 index 14432e81e..000000000 --- a/web-app/src/gen/session/v1/import_pb.ts +++ /dev/null @@ -1,622 +0,0 @@ -// @generated by protoc-gen-es v2.11.0 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/import.proto (package session.v1, syntax proto3) -/* eslint-disable */ - -import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; -import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; -import type { Message } from "@bufbuild/protobuf"; - -/** - * Describes the file session/v1/import.proto. - */ -export const file_session_v1_import: GenFile = /*@__PURE__*/ - fileDesc("ChdzZXNzaW9uL3YxL2ltcG9ydC5wcm90bxIKc2Vzc2lvbi52MSIyCgtQSURJZGVudGl0eRILCgNwaWQYASABKAUSFgoOY3JlYXRlX3RpbWVfbXMYAiABKAMipwEKG0V4dGVybmFsU2Vzc2lvbkNhbmRpZGF0ZVJlZhIxCgtzb3VyY2Vfa2luZBgBIAEoDjIcLnNlc3Npb24udjEuSW1wb3J0U291cmNlS2luZBIMCgRwYXRoGAIgASgJEg8KB3Byb2dyYW0YAyABKAkSCwoDcGlkGAQgASgFEhQKDHRtdXhfc2Vzc2lvbhgFIAEoCRITCgtzb2NrZXRfcGF0aBgGIAEoCSJhChRIaXN0b3J5RmlsZUNhbmRpZGF0ZRIZChFjb252ZXJzYXRpb25fdXVpZBgBIAEoCRIZChFoaXN0b3J5X2ZpbGVfcGF0aBgCIAEoCRITCgtwcm9qZWN0X2RpchgDIAEoCSK+AQoWQ29ycmVsYXRpb25SZXN1bHRQcm90bxIpCgRraW5kGAEgASgOMhsuc2Vzc2lvbi52MS5Db3JyZWxhdGlvbktpbmQSDAoEdXVpZBgCIAEoCRI1Cgpjb25maWRlbmNlGAMgASgOMiEuc2Vzc2lvbi52MS5Db3JyZWxhdGlvbkNvbmZpZGVuY2USNAoKY2FuZGlkYXRlcxgEIAMoCzIgLnNlc3Npb24udjEuSGlzdG9yeUZpbGVDYW5kaWRhdGUiYQojUHJldmlld0ltcG9ydEV4dGVybmFsU2Vzc2lvblJlcXVlc3QSOgoJY2FuZGlkYXRlGAEgASgLMicuc2Vzc2lvbi52MS5FeHRlcm5hbFNlc3Npb25DYW5kaWRhdGVSZWYi3wEKJFByZXZpZXdJbXBvcnRFeHRlcm5hbFNlc3Npb25SZXNwb25zZRIPCgdwcm9ncmFtGAEgASgJEgwKBHBhdGgYAiABKAkSNwoLY29ycmVsYXRpb24YAyABKAsyIi5zZXNzaW9uLnYxLkNvcnJlbGF0aW9uUmVzdWx0UHJvdG8SEgoKdHVybl9jb3VudBgEIAEoBRIcChRsYXN0X21lc3NhZ2VfZXhjZXJwdBgFIAEoCRItCgxwaWRfaWRlbnRpdHkYBiABKAsyFy5zZXNzaW9uLnYxLlBJRElkZW50aXR5IvABCiJDb21taXRJbXBvcnRFeHRlcm5hbFNlc3Npb25SZXF1ZXN0EjoKCWNhbmRpZGF0ZRgBIAEoCzInLnNlc3Npb24udjEuRXh0ZXJuYWxTZXNzaW9uQ2FuZGlkYXRlUmVmEkAKFGV4cGVjdGVkX2NvcnJlbGF0aW9uGAIgASgLMiIuc2Vzc2lvbi52MS5Db3JyZWxhdGlvblJlc3VsdFByb3RvEh0KFWRpc2FtYmlndWF0aW9uX2Nob2ljZRgDIAEoCRItCgxwaWRfaWRlbnRpdHkYBCABKAsyFy5zZXNzaW9uLnYxLlBJRElkZW50aXR5IqIBCiNDb21taXRJbXBvcnRFeHRlcm5hbFNlc3Npb25SZXNwb25zZRIoCgZzdGF0dXMYASABKA4yGC5zZXNzaW9uLnYxLkltcG9ydFN0YXR1cxITCgtpbnN0YW5jZV9pZBgCIAEoCRINCgVlcnJvchgDIAEoCRItCgxwaWRfaWRlbnRpdHkYBCABKAsyFy5zZXNzaW9uLnYxLlBJRElkZW50aXR5ImcKIUNvbmZpcm1LaWxsRXh0ZXJuYWxTZXNzaW9uUmVxdWVzdBITCgtpbnN0YW5jZV9pZBgBIAEoCRItCgxwaWRfaWRlbnRpdHkYAiABKAsyFy5zZXNzaW9uLnYxLlBJRElkZW50aXR5IlsKIkNvbmZpcm1LaWxsRXh0ZXJuYWxTZXNzaW9uUmVzcG9uc2USJgoGc3RhdHVzGAEgASgOMhYuc2Vzc2lvbi52MS5LaWxsU3RhdHVzEg0KBWVycm9yGAIgASgJIl4KGENhbmNlbFBlbmRpbmdLaWxsUmVxdWVzdBITCgtpbnN0YW5jZV9pZBgBIAEoCRItCgxwaWRfaWRlbnRpdHkYAiABKAsyFy5zZXNzaW9uLnYxLlBJRElkZW50aXR5IjsKGUNhbmNlbFBlbmRpbmdLaWxsUmVzcG9uc2USDwoHcmVzdW1lZBgBIAEoCBINCgVlcnJvchgCIAEoCSqAAQoQSW1wb3J0U291cmNlS2luZBIiCh5JTVBPUlRfU09VUkNFX0tJTkRfVU5TUEVDSUZJRUQQABIlCiFJTVBPUlRfU09VUkNFX0tJTkRfTVVYX0RJU0NPVkVSRUQQARIhCh1JTVBPUlRfU09VUkNFX0tJTkRfUExBSU5fVE1VWBACKpIBCg9Db3JyZWxhdGlvbktpbmQSIAocQ09SUkVMQVRJT05fS0lORF9VTlNQRUNJRklFRBAAEh4KGkNPUlJFTEFUSU9OX0tJTkRfTk9UX0ZPVU5EEAESHQoZQ09SUkVMQVRJT05fS0lORF9SRVNPTFZFRBACEh4KGkNPUlJFTEFUSU9OX0tJTkRfQU1CSUdVT1VTEAMqsQEKFUNvcnJlbGF0aW9uQ29uZmlkZW5jZRImCiJDT1JSRUxBVElPTl9DT05GSURFTkNFX1VOU1BFQ0lGSUVEEAASHwobQ09SUkVMQVRJT05fQ09ORklERU5DRV9OT05FEAESJAogQ09SUkVMQVRJT05fQ09ORklERU5DRV9QSURfRVhBQ1QQAhIpCiVDT1JSRUxBVElPTl9DT05GSURFTkNFX1BBVEhfSEVVUklTVElDEAMqZAoMSW1wb3J0U3RhdHVzEh0KGUlNUE9SVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIbChdJTVBPUlRfU1RBVFVTX0NPTU1JVFRFRBABEhgKFElNUE9SVF9TVEFUVVNfRkFJTEVEEAIqdwoKS2lsbFN0YXR1cxIbChdLSUxMX1NUQVRVU19VTlNQRUNJRklFRBAAEhYKEktJTExfU1RBVFVTX0tJTExFRBABEhwKGEtJTExfU1RBVFVTX0FMUkVBRFlfR09ORRACEhYKEktJTExfU1RBVFVTX0ZBSUxFRBADMvsDCg1JbXBvcnRTZXJ2aWNlEoMBChxQcmV2aWV3SW1wb3J0RXh0ZXJuYWxTZXNzaW9uEi8uc2Vzc2lvbi52MS5QcmV2aWV3SW1wb3J0RXh0ZXJuYWxTZXNzaW9uUmVxdWVzdBowLnNlc3Npb24udjEuUHJldmlld0ltcG9ydEV4dGVybmFsU2Vzc2lvblJlc3BvbnNlIgASgAEKG0NvbW1pdEltcG9ydEV4dGVybmFsU2Vzc2lvbhIuLnNlc3Npb24udjEuQ29tbWl0SW1wb3J0RXh0ZXJuYWxTZXNzaW9uUmVxdWVzdBovLnNlc3Npb24udjEuQ29tbWl0SW1wb3J0RXh0ZXJuYWxTZXNzaW9uUmVzcG9uc2UiABJ9ChpDb25maXJtS2lsbEV4dGVybmFsU2Vzc2lvbhItLnNlc3Npb24udjEuQ29uZmlybUtpbGxFeHRlcm5hbFNlc3Npb25SZXF1ZXN0Gi4uc2Vzc2lvbi52MS5Db25maXJtS2lsbEV4dGVybmFsU2Vzc2lvblJlc3BvbnNlIgASYgoRQ2FuY2VsUGVuZGluZ0tpbGwSJC5zZXNzaW9uLnYxLkNhbmNlbFBlbmRpbmdLaWxsUmVxdWVzdBolLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ0tpbGxSZXNwb25zZSIAQqsBCg5jb20uc2Vzc2lvbi52MUILSW1wb3J0UHJvdG9QAVpDZ2l0aHViLmNvbS90c3RhcGxlci9zdGFwbGVyLXNxdWFkL2dlbi9wcm90by9nby9zZXNzaW9uL3YxO3Nlc3Npb252MaICA1NYWKoCClNlc3Npb24uVjHKAgpTZXNzaW9uXFYx4gIWU2Vzc2lvblxWMVxHUEJNZXRhZGF0YeoCC1Nlc3Npb246OlYxYgZwcm90bzM"); - -/** - * PIDIdentity pins a process identity to a specific PID + creation time so - * that ProcessInspector.IsAlive can detect PID reuse before signaling. - * Minted once at preview time (from the original process) and threaded - * verbatim through the commit request. The commit response mints a FRESH - * PIDIdentity (re-read from the still-suspended original process) for use - * by the subsequent ConfirmKillExternalSession/CancelPendingKill call, - * since more time elapses between commit and kill than between preview and - * commit. - * - * @generated from message session.v1.PIDIdentity - */ -export type PIDIdentity = Message<"session.v1.PIDIdentity"> & { - /** - * @generated from field: int32 pid = 1; - */ - pid: number; - - /** - * @generated from field: int64 create_time_ms = 2; - */ - createTimeMs: bigint; -}; - -/** - * Describes the message session.v1.PIDIdentity. - * Use `create(PIDIdentitySchema)` to create a new message. - */ -export const PIDIdentitySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_import, 0); - -/** - * ExternalSessionCandidateRef identifies the discovered, unmanaged - * candidate a preview/commit call refers to. The client round-trips this - * verbatim from whatever discovery list surfaced it. - * - * @generated from message session.v1.ExternalSessionCandidateRef - */ -export type ExternalSessionCandidateRef = Message<"session.v1.ExternalSessionCandidateRef"> & { - /** - * @generated from field: session.v1.ImportSourceKind source_kind = 1; - */ - sourceKind: ImportSourceKind; - - /** - * @generated from field: string path = 2; - */ - path: string; - - /** - * @generated from field: string program = 3; - */ - program: string; - - /** - * @generated from field: int32 pid = 4; - */ - pid: number; - - /** - * @generated from field: string tmux_session = 5; - */ - tmuxSession: string; - - /** - * socket_path is empty for PLAIN_TMUX candidates. - * - * @generated from field: string socket_path = 6; - */ - socketPath: string; -}; - -/** - * Describes the message session.v1.ExternalSessionCandidateRef. - * Use `create(ExternalSessionCandidateRefSchema)` to create a new message. - */ -export const ExternalSessionCandidateRefSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_import, 1); - -/** - * HistoryFileCandidate mirrors session.HistoryFileInfo, surfaced to the - * client when CorrelationResult.kind == AMBIGUOUS so the user can pick one. - * - * @generated from message session.v1.HistoryFileCandidate - */ -export type HistoryFileCandidate = Message<"session.v1.HistoryFileCandidate"> & { - /** - * @generated from field: string conversation_uuid = 1; - */ - conversationUuid: string; - - /** - * @generated from field: string history_file_path = 2; - */ - historyFilePath: string; - - /** - * @generated from field: string project_dir = 3; - */ - projectDir: string; -}; - -/** - * Describes the message session.v1.HistoryFileCandidate. - * Use `create(HistoryFileCandidateSchema)` to create a new message. - */ -export const HistoryFileCandidateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_import, 2); - -/** - * CorrelationResultProto mirrors session.CorrelationResult. - * - * @generated from message session.v1.CorrelationResultProto - */ -export type CorrelationResultProto = Message<"session.v1.CorrelationResultProto"> & { - /** - * @generated from field: session.v1.CorrelationKind kind = 1; - */ - kind: CorrelationKind; - - /** - * @generated from field: string uuid = 2; - */ - uuid: string; - - /** - * @generated from field: session.v1.CorrelationConfidence confidence = 3; - */ - confidence: CorrelationConfidence; - - /** - * candidates is populated only when kind == AMBIGUOUS. - * - * @generated from field: repeated session.v1.HistoryFileCandidate candidates = 4; - */ - candidates: HistoryFileCandidate[]; -}; - -/** - * Describes the message session.v1.CorrelationResultProto. - * Use `create(CorrelationResultProtoSchema)` to create a new message. - */ -export const CorrelationResultProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_import, 3); - -/** - * @generated from message session.v1.PreviewImportExternalSessionRequest - */ -export type PreviewImportExternalSessionRequest = Message<"session.v1.PreviewImportExternalSessionRequest"> & { - /** - * @generated from field: session.v1.ExternalSessionCandidateRef candidate = 1; - */ - candidate?: ExternalSessionCandidateRef; -}; - -/** - * Describes the message session.v1.PreviewImportExternalSessionRequest. - * Use `create(PreviewImportExternalSessionRequestSchema)` to create a new message. - */ -export const PreviewImportExternalSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_import, 4); - -/** - * @generated from message session.v1.PreviewImportExternalSessionResponse - */ -export type PreviewImportExternalSessionResponse = Message<"session.v1.PreviewImportExternalSessionResponse"> & { - /** - * @generated from field: string program = 1; - */ - program: string; - - /** - * @generated from field: string path = 2; - */ - path: string; - - /** - * @generated from field: session.v1.CorrelationResultProto correlation = 3; - */ - correlation?: CorrelationResultProto; - - /** - * turn_count and last_message_excerpt are populated only when - * correlation.kind == RESOLVED (a single history file could be read). - * - * @generated from field: int32 turn_count = 4; - */ - turnCount: number; - - /** - * @generated from field: string last_message_excerpt = 5; - */ - lastMessageExcerpt: string; - - /** - * pid_identity is populated only when candidate.pid > 0 and the process - * is currently alive; the client must echo it verbatim in the commit - * request. - * - * @generated from field: session.v1.PIDIdentity pid_identity = 6; - */ - pidIdentity?: PIDIdentity; -}; - -/** - * Describes the message session.v1.PreviewImportExternalSessionResponse. - * Use `create(PreviewImportExternalSessionResponseSchema)` to create a new message. - */ -export const PreviewImportExternalSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_import, 5); - -/** - * @generated from message session.v1.CommitImportExternalSessionRequest - */ -export type CommitImportExternalSessionRequest = Message<"session.v1.CommitImportExternalSessionRequest"> & { - /** - * @generated from field: session.v1.ExternalSessionCandidateRef candidate = 1; - */ - candidate?: ExternalSessionCandidateRef; - - /** - * expected_correlation is exactly what PreviewImportExternalSession - * returned. Commit re-runs correlation fresh and aborts with - * FAILED_PRECONDITION if the fresh result disagrees (correlation drift). - * - * @generated from field: session.v1.CorrelationResultProto expected_correlation = 2; - */ - expectedCorrelation?: CorrelationResultProto; - - /** - * disambiguation_choice selects one of expected_correlation.candidates by - * conversation_uuid when expected_correlation.kind == AMBIGUOUS. Must be - * empty when kind == RESOLVED. - * - * @generated from field: string disambiguation_choice = 3; - */ - disambiguationChoice: string; - - /** - * @generated from field: session.v1.PIDIdentity pid_identity = 4; - */ - pidIdentity?: PIDIdentity; -}; - -/** - * Describes the message session.v1.CommitImportExternalSessionRequest. - * Use `create(CommitImportExternalSessionRequestSchema)` to create a new message. - */ -export const CommitImportExternalSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_import, 6); - -/** - * @generated from message session.v1.CommitImportExternalSessionResponse - */ -export type CommitImportExternalSessionResponse = Message<"session.v1.CommitImportExternalSessionResponse"> & { - /** - * @generated from field: session.v1.ImportStatus status = 1; - */ - status: ImportStatus; - - /** - * @generated from field: string instance_id = 2; - */ - instanceId: string; - - /** - * @generated from field: string error = 3; - */ - error: string; - - /** - * pid_identity echoes a freshly re-read identity of the original, - * now-SIGSTOP'd process for use by a subsequent - * ConfirmKillExternalSession/CancelPendingKill call. Absent when status - * == FAILED. - * - * @generated from field: session.v1.PIDIdentity pid_identity = 4; - */ - pidIdentity?: PIDIdentity; -}; - -/** - * Describes the message session.v1.CommitImportExternalSessionResponse. - * Use `create(CommitImportExternalSessionResponseSchema)` to create a new message. - */ -export const CommitImportExternalSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_import, 7); - -/** - * @generated from message session.v1.ConfirmKillExternalSessionRequest - */ -export type ConfirmKillExternalSessionRequest = Message<"session.v1.ConfirmKillExternalSessionRequest"> & { - /** - * @generated from field: string instance_id = 1; - */ - instanceId: string; - - /** - * @generated from field: session.v1.PIDIdentity pid_identity = 2; - */ - pidIdentity?: PIDIdentity; -}; - -/** - * Describes the message session.v1.ConfirmKillExternalSessionRequest. - * Use `create(ConfirmKillExternalSessionRequestSchema)` to create a new message. - */ -export const ConfirmKillExternalSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_import, 8); - -/** - * @generated from message session.v1.ConfirmKillExternalSessionResponse - */ -export type ConfirmKillExternalSessionResponse = Message<"session.v1.ConfirmKillExternalSessionResponse"> & { - /** - * @generated from field: session.v1.KillStatus status = 1; - */ - status: KillStatus; - - /** - * @generated from field: string error = 2; - */ - error: string; -}; - -/** - * Describes the message session.v1.ConfirmKillExternalSessionResponse. - * Use `create(ConfirmKillExternalSessionResponseSchema)` to create a new message. - */ -export const ConfirmKillExternalSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_import, 9); - -/** - * @generated from message session.v1.CancelPendingKillRequest - */ -export type CancelPendingKillRequest = Message<"session.v1.CancelPendingKillRequest"> & { - /** - * @generated from field: string instance_id = 1; - */ - instanceId: string; - - /** - * @generated from field: session.v1.PIDIdentity pid_identity = 2; - */ - pidIdentity?: PIDIdentity; -}; - -/** - * Describes the message session.v1.CancelPendingKillRequest. - * Use `create(CancelPendingKillRequestSchema)` to create a new message. - */ -export const CancelPendingKillRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_import, 10); - -/** - * @generated from message session.v1.CancelPendingKillResponse - */ -export type CancelPendingKillResponse = Message<"session.v1.CancelPendingKillResponse"> & { - /** - * resumed is true only if the compensating delete of instance_id - * succeeded AND the original process was SIGCONT'd. If the compensating - * delete fails, resumed is false and the original process is left - * SIGSTOP'd -- ResumeOriginalProcess is never called in that case. - * - * @generated from field: bool resumed = 1; - */ - resumed: boolean; - - /** - * @generated from field: string error = 2; - */ - error: string; -}; - -/** - * Describes the message session.v1.CancelPendingKillResponse. - * Use `create(CancelPendingKillResponseSchema)` to create a new message. - */ -export const CancelPendingKillResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_import, 11); - -/** - * ImportSourceKind mirrors session.ImportSourceKind. - * - * @generated from enum session.v1.ImportSourceKind - */ -export enum ImportSourceKind { - /** - * @generated from enum value: IMPORT_SOURCE_KIND_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: IMPORT_SOURCE_KIND_MUX_DISCOVERED = 1; - */ - MUX_DISCOVERED = 1, - - /** - * @generated from enum value: IMPORT_SOURCE_KIND_PLAIN_TMUX = 2; - */ - PLAIN_TMUX = 2, -} - -/** - * Describes the enum session.v1.ImportSourceKind. - */ -export const ImportSourceKindSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_import, 0); - -/** - * CorrelationKind mirrors session.CorrelationKind. Ambiguous and NotFound - * are valid, non-error outcomes and must never be silently collapsed. - * - * @generated from enum session.v1.CorrelationKind - */ -export enum CorrelationKind { - /** - * @generated from enum value: CORRELATION_KIND_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: CORRELATION_KIND_NOT_FOUND = 1; - */ - NOT_FOUND = 1, - - /** - * @generated from enum value: CORRELATION_KIND_RESOLVED = 2; - */ - RESOLVED = 2, - - /** - * @generated from enum value: CORRELATION_KIND_AMBIGUOUS = 3; - */ - AMBIGUOUS = 3, -} - -/** - * Describes the enum session.v1.CorrelationKind. - */ -export const CorrelationKindSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_import, 1); - -/** - * CorrelationConfidence mirrors session.CorrelationConfidence. - * - * @generated from enum session.v1.CorrelationConfidence - */ -export enum CorrelationConfidence { - /** - * @generated from enum value: CORRELATION_CONFIDENCE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: CORRELATION_CONFIDENCE_NONE = 1; - */ - NONE = 1, - - /** - * @generated from enum value: CORRELATION_CONFIDENCE_PID_EXACT = 2; - */ - PID_EXACT = 2, - - /** - * @generated from enum value: CORRELATION_CONFIDENCE_PATH_HEURISTIC = 3; - */ - PATH_HEURISTIC = 3, -} - -/** - * Describes the enum session.v1.CorrelationConfidence. - */ -export const CorrelationConfidenceSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_import, 2); - -/** - * @generated from enum session.v1.ImportStatus - */ -export enum ImportStatus { - /** - * @generated from enum value: IMPORT_STATUS_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: IMPORT_STATUS_COMMITTED = 1; - */ - COMMITTED = 1, - - /** - * @generated from enum value: IMPORT_STATUS_FAILED = 2; - */ - FAILED = 2, -} - -/** - * Describes the enum session.v1.ImportStatus. - */ -export const ImportStatusSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_import, 3); - -/** - * @generated from enum session.v1.KillStatus - */ -export enum KillStatus { - /** - * @generated from enum value: KILL_STATUS_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: KILL_STATUS_KILLED = 1; - */ - KILLED = 1, - - /** - * already_gone means IsAlive re-verification failed (PID reused or - * process already exited) -- no signal was sent. - * - * @generated from enum value: KILL_STATUS_ALREADY_GONE = 2; - */ - ALREADY_GONE = 2, - - /** - * failed means the kill primitive (tmux kill-session) itself failed; the - * original process is left SIGSTOP'd, never auto-resumed. - * - * @generated from enum value: KILL_STATUS_FAILED = 3; - */ - FAILED = 3, -} - -/** - * Describes the enum session.v1.KillStatus. - */ -export const KillStatusSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_import, 4); - -/** - * ImportService manages import of externally-created (unmanaged) agent - * sessions -- e.g. ssq-mux-wrapped Claude processes discovered outside - * Stapler Squad's own session tracking -- into managed Stapler Squad - * sessions. - * - * Two-phase command pattern (ADR-001): Preview (side-effect-free) -> Commit - * (persists a managed Instance, starts a resumed session, and SIGSTOPs the - * original process to prevent two writers touching the same Claude JSONL - * transcript) -> a separate, explicitly user-issued ConfirmKill or - * CancelPendingKill to resolve the SIGSTOP'd original process left behind - * by Commit. Kill confirmation is never bundled into Commit's response -- - * it is always a distinct, separately-issued action. - * - * All three RPCs are gated behind the STAPLER_SQUAD_ENABLE_SESSION_IMPORT - * feature flag (Story 1.3.2) and return CodeUnimplemented when disabled. - * - * @generated from service session.v1.ImportService - */ -export const ImportService: GenService<{ - /** - * PreviewImportExternalSession runs correlation against a candidate and - * reports what an import WOULD do, without any side effects (no process - * signaling, no persistence). - * - * @generated from rpc session.v1.ImportService.PreviewImportExternalSession - */ - previewImportExternalSession: { - methodKind: "unary"; - input: typeof PreviewImportExternalSessionRequestSchema; - output: typeof PreviewImportExternalSessionResponseSchema; - }, - /** - * CommitImportExternalSession persists a managed Instance for the - * candidate, starts a resumed session, and SIGSTOPs the original process. - * - * @generated from rpc session.v1.ImportService.CommitImportExternalSession - */ - commitImportExternalSession: { - methodKind: "unary"; - input: typeof CommitImportExternalSessionRequestSchema; - output: typeof CommitImportExternalSessionResponseSchema; - }, - /** - * ConfirmKillExternalSession terminates the original (SIGSTOP'd) process - * after the user has verified the imported session looks correct. - * - * @generated from rpc session.v1.ImportService.ConfirmKillExternalSession - */ - confirmKillExternalSession: { - methodKind: "unary"; - input: typeof ConfirmKillExternalSessionRequestSchema; - output: typeof ConfirmKillExternalSessionResponseSchema; - }, - /** - * CancelPendingKill abandons an in-progress import: deletes the newly - * committed managed Instance, then SIGCONTs the original process so it - * resumes exactly as if the import had never happened. - * - * @generated from rpc session.v1.ImportService.CancelPendingKill - */ - cancelPendingKill: { - methodKind: "unary"; - input: typeof CancelPendingKillRequestSchema; - output: typeof CancelPendingKillResponseSchema; - }, -}> = /*@__PURE__*/ - serviceDesc(file_session_v1_import, 0); - diff --git a/web-app/src/gen/session/v1/insights_pb.ts b/web-app/src/gen/session/v1/insights_pb.ts deleted file mode 100644 index 31e774213..000000000 --- a/web-app/src/gen/session/v1/insights_pb.ts +++ /dev/null @@ -1,703 +0,0 @@ -// @generated by protoc-gen-es v2.11.0 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/insights.proto (package session.v1, syntax proto3) -/* eslint-disable */ - -import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; -import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; -import type { Timestamp } from "@bufbuild/protobuf/wkt"; -import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; -import type { Message } from "@bufbuild/protobuf"; - -/** - * Describes the file session/v1/insights.proto. - */ -export const file_session_v1_insights: GenFile = /*@__PURE__*/ - fileDesc("ChlzZXNzaW9uL3YxL2luc2lnaHRzLnByb3RvEgpzZXNzaW9uLnYxIowEChNTZXNzaW9uVG9rZW5TdW1tYXJ5EhIKCnNlc3Npb25faWQYASABKAkSFwoPY29udmVyc2F0aW9uX2lkGAIgASgJEhQKDHByb2plY3RfcGF0aBgDIAEoCRIVCg1wcmltYXJ5X21vZGVsGAQgASgJEhoKEnRvdGFsX2lucHV0X3Rva2VucxgFIAEoAxIbChN0b3RhbF9vdXRwdXRfdG9rZW5zGAYgASgDEh0KFWNhY2hlX2NyZWF0aW9uX3Rva2VucxgHIAEoAxIZChFjYWNoZV9yZWFkX3Rva2VucxgIIAEoAxIaChJlc3RpbWF0ZWRfY29zdF91c2QYCSABKAESFgoOY2FjaGVfaGl0X3JhdGUYCiABKAESFQoNbWVzc2FnZV9jb3VudBgLIAEoBRI0ChBmaXJzdF9tZXNzYWdlX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9sYXN0X21lc3NhZ2VfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKCWlzX29ycGhhbhgOIAEoCBIZChFza2lsbF9hY3RpdmF0aW9ucxgPIAMoCRIrCgl0b3BfdG9vbHMYECADKAsyGC5zZXNzaW9uLnYxLlRvcFRvb2xFbnRyeRIXCg91bnByaWNlZF9tb2RlbHMYESADKAkiSQoMVG9wVG9vbEVudHJ5EhEKCXRvb2xfbmFtZRgBIAEoCRISCgpjYWxsX2NvdW50GAIgASgFEhIKCm1jcF9zZXJ2ZXIYAyABKAki1gMKEERhaWx5VG9rZW5CdWNrZXQSKAoEZGF0ZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdG90YWxfaW5wdXRfdG9rZW5zGAIgASgDEhsKE3RvdGFsX291dHB1dF90b2tlbnMYAyABKAMSGQoRY2FjaGVfcmVhZF90b2tlbnMYBCABKAMSGgoSZXN0aW1hdGVkX2Nvc3RfdXNkGAUgASgBEhUKDXNlc3Npb25fY291bnQYBiABKAUSRAoNY29zdF9ieV9tb2RlbBgHIAMoCzItLnNlc3Npb24udjEuRGFpbHlUb2tlbkJ1Y2tldC5Db3N0QnlNb2RlbEVudHJ5EkgKD3Rva2Vuc19ieV9tb2RlbBgIIAMoCzIvLnNlc3Npb24udjEuRGFpbHlUb2tlbkJ1Y2tldC5Ub2tlbnNCeU1vZGVsRW50cnkSFwoPdW5wcmljZWRfbW9kZWxzGAkgAygJGjIKEENvc3RCeU1vZGVsRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgBOgI4ARo0ChJUb2tlbnNCeU1vZGVsRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ASLKAQoOTW9kZWxCcmVha2Rvd24SFAoMbW9kZWxfZmFtaWx5GAEgASgJEhoKEnRvdGFsX2lucHV0X3Rva2VucxgCIAEoAxIbChN0b3RhbF9vdXRwdXRfdG9rZW5zGAMgASgDEhkKEWNhY2hlX3JlYWRfdG9rZW5zGAQgASgDEhoKEmVzdGltYXRlZF9jb3N0X3VzZBgFIAEoARIVCg1zZXNzaW9uX2NvdW50GAYgASgFEhsKE3ByaWNpbmdfdW5hdmFpbGFibGUYByABKAgiWQoIVG9wRW50cnkSDAoEbmFtZRgBIAEoCRITCgt0b2tlbl9jb3VudBgCIAEoAxIYChBhY3RpdmF0aW9uX2NvdW50GAMgASgFEhAKCGNvc3RfdXNkGAQgASgBIugBChlHZXRJbnNpZ2h0c1N1bW1hcnlSZXF1ZXN0EigKBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZCgxtb2RlbF9maWx0ZXIYAyABKAlIAIgBARIeChFzZXNzaW9uX2lkX2ZpbHRlchgEIAEoCUgBiAEBEhcKD2luY2x1ZGVfb3JwaGFucxgFIAEoCEIPCg1fbW9kZWxfZmlsdGVyQhQKEl9zZXNzaW9uX2lkX2ZpbHRlciLtAwoaR2V0SW5zaWdodHNTdW1tYXJ5UmVzcG9uc2USMQoIc2Vzc2lvbnMYASADKAsyHy5zZXNzaW9uLnYxLlNlc3Npb25Ub2tlblN1bW1hcnkSFgoOdG90YWxfY29zdF91c2QYAiABKAESGgoSdG90YWxfaW5wdXRfdG9rZW5zGAMgASgDEhsKE3RvdGFsX291dHB1dF90b2tlbnMYBCABKAMSHwoXdG90YWxfY2FjaGVfcmVhZF90b2tlbnMYBSABKAMSHgoWb3ZlcmFsbF9jYWNoZV9oaXRfcmF0ZRgGIAEoARIrCgVkYWlseRgHIAMoCzIcLnNlc3Npb24udjEuRGFpbHlUb2tlbkJ1Y2tldBIqCgZtb2RlbHMYCCADKAsyGi5zZXNzaW9uLnYxLk1vZGVsQnJlYWtkb3duEigKCnRvcF9za2lsbHMYCSADKAsyFC5zZXNzaW9uLnYxLlRvcEVudHJ5EicKCXRvcF90b29scxgKIAMoCzIULnNlc3Npb24udjEuVG9wRW50cnkSEgoKaXNfbG9hZGluZxgLIAEoCBIxCg1wcmljaW5nX2FzX29mGAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCg91bnByaWNlZF9tb2RlbHMYDSADKAkitwEKGExpc3RTZXNzaW9uVG9rZW5zUmVxdWVzdBIoCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBImCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHc29ydF9ieRgDIAEoCRIRCglzb3J0X2Rlc2MYBCABKAgSEQoJcGFnZV9zaXplGAUgASgFEhIKCnBhZ2VfdG9rZW4YBiABKAkifAoZTGlzdFNlc3Npb25Ub2tlbnNSZXNwb25zZRIxCghzZXNzaW9ucxgBIAMoCzIfLnNlc3Npb24udjEuU2Vzc2lvblRva2VuU3VtbWFyeRIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSEwoLdG90YWxfY291bnQYAyABKAUiaAoUV2F0Y2hJbnNpZ2h0c1JlcXVlc3QSKAoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wInoKDUluc2lnaHRzRXZlbnQSEgoKZXZlbnRfdHlwZRgBIAEoCRI1CgdzZXNzaW9uGAIgASgLMh8uc2Vzc2lvbi52MS5TZXNzaW9uVG9rZW5TdW1tYXJ5SACIAQESEgoKYWxsX3BhcnNlZBgDIAEoCEIKCghfc2Vzc2lvbiLIAQoNVHVyblRva2VuU3RhdBItCgl0aW1lc3RhbXAYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBW1vZGVsGAIgASgJEhQKDGlucHV0X3Rva2VucxgDIAEoAxIVCg1vdXRwdXRfdG9rZW5zGAQgASgDEh0KFWNhY2hlX2NyZWF0aW9uX3Rva2VucxgFIAEoAxIZChFjYWNoZV9yZWFkX3Rva2VucxgGIAEoAxISCgp0b29sX25hbWVzGAcgAygJIjgKHUdldFNlc3Npb25UdXJuVGltZWxpbmVSZXF1ZXN0EhcKD2NvbnZlcnNhdGlvbl9pZBgBIAEoCSJKCh5HZXRTZXNzaW9uVHVyblRpbWVsaW5lUmVzcG9uc2USKAoFdHVybnMYASADKAsyGS5zZXNzaW9uLnYxLlR1cm5Ub2tlblN0YXQyoQMKD0luc2lnaHRzU2VydmljZRJlChJHZXRJbnNpZ2h0c1N1bW1hcnkSJS5zZXNzaW9uLnYxLkdldEluc2lnaHRzU3VtbWFyeVJlcXVlc3QaJi5zZXNzaW9uLnYxLkdldEluc2lnaHRzU3VtbWFyeVJlc3BvbnNlIgASYgoRTGlzdFNlc3Npb25Ub2tlbnMSJC5zZXNzaW9uLnYxLkxpc3RTZXNzaW9uVG9rZW5zUmVxdWVzdBolLnNlc3Npb24udjEuTGlzdFNlc3Npb25Ub2tlbnNSZXNwb25zZSIAElAKDVdhdGNoSW5zaWdodHMSIC5zZXNzaW9uLnYxLldhdGNoSW5zaWdodHNSZXF1ZXN0Ghkuc2Vzc2lvbi52MS5JbnNpZ2h0c0V2ZW50IgAwARJxChZHZXRTZXNzaW9uVHVyblRpbWVsaW5lEikuc2Vzc2lvbi52MS5HZXRTZXNzaW9uVHVyblRpbWVsaW5lUmVxdWVzdBoqLnNlc3Npb24udjEuR2V0U2Vzc2lvblR1cm5UaW1lbGluZVJlc3BvbnNlIgBCrQEKDmNvbS5zZXNzaW9uLnYxQg1JbnNpZ2h0c1Byb3RvUAFaQ2dpdGh1Yi5jb20vdHN0YXBsZXIvc3RhcGxlci1zcXVhZC9nZW4vcHJvdG8vZ28vc2Vzc2lvbi92MTtzZXNzaW9udjGiAgNTWFiqAgpTZXNzaW9uLlYxygIKU2Vzc2lvblxWMeICFlNlc3Npb25cVjFcR1BCTWV0YWRhdGHqAgtTZXNzaW9uOjpWMWIGcHJvdG8z", [file_google_protobuf_timestamp]); - -/** - * SessionTokenSummary is the per-session aggregated token record. - * - * @generated from message session.v1.SessionTokenSummary - */ -export type SessionTokenSummary = Message<"session.v1.SessionTokenSummary"> & { - /** - * stapler-squad session ID (may be empty for orphans) - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * JSONL conversation UUID - * - * @generated from field: string conversation_id = 2; - */ - conversationId: string; - - /** - * @generated from field: string project_path = 3; - */ - projectPath: string; - - /** - * @generated from field: string primary_model = 4; - */ - primaryModel: string; - - /** - * @generated from field: int64 total_input_tokens = 5; - */ - totalInputTokens: bigint; - - /** - * @generated from field: int64 total_output_tokens = 6; - */ - totalOutputTokens: bigint; - - /** - * @generated from field: int64 cache_creation_tokens = 7; - */ - cacheCreationTokens: bigint; - - /** - * @generated from field: int64 cache_read_tokens = 8; - */ - cacheReadTokens: bigint; - - /** - * @generated from field: double estimated_cost_usd = 9; - */ - estimatedCostUsd: number; - - /** - * cache_read / (input + cache_read) - * - * @generated from field: double cache_hit_rate = 10; - */ - cacheHitRate: number; - - /** - * @generated from field: int32 message_count = 11; - */ - messageCount: number; - - /** - * @generated from field: google.protobuf.Timestamp first_message_at = 12; - */ - firstMessageAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp last_message_at = 13; - */ - lastMessageAt?: Timestamp; - - /** - * true = no matching stapler-squad session - * - * @generated from field: bool is_orphan = 14; - */ - isOrphan: boolean; - - /** - * @generated from field: repeated string skill_activations = 15; - */ - skillActivations: string[]; - - /** - * @generated from field: repeated session.v1.TopToolEntry top_tools = 16; - */ - topTools: TopToolEntry[]; - - /** - * unpriced_models lists ModelFamily values with usage but no pricing entry, for this session. - * - * @generated from field: repeated string unpriced_models = 17; - */ - unpricedModels: string[]; -}; - -/** - * Describes the message session.v1.SessionTokenSummary. - * Use `create(SessionTokenSummarySchema)` to create a new message. - */ -export const SessionTokenSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 0); - -/** - * TopToolEntry records a tool name and its call count in a session. - * - * @generated from message session.v1.TopToolEntry - */ -export type TopToolEntry = Message<"session.v1.TopToolEntry"> & { - /** - * @generated from field: string tool_name = 1; - */ - toolName: string; - - /** - * @generated from field: int32 call_count = 2; - */ - callCount: number; - - /** - * non-empty for mcp____ - * - * @generated from field: string mcp_server = 3; - */ - mcpServer: string; -}; - -/** - * Describes the message session.v1.TopToolEntry. - * Use `create(TopToolEntrySchema)` to create a new message. - */ -export const TopToolEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 1); - -/** - * DailyTokenBucket aggregates token usage for one calendar day. - * - * @generated from message session.v1.DailyTokenBucket - */ -export type DailyTokenBucket = Message<"session.v1.DailyTokenBucket"> & { - /** - * @generated from field: google.protobuf.Timestamp date = 1; - */ - date?: Timestamp; - - /** - * @generated from field: int64 total_input_tokens = 2; - */ - totalInputTokens: bigint; - - /** - * @generated from field: int64 total_output_tokens = 3; - */ - totalOutputTokens: bigint; - - /** - * @generated from field: int64 cache_read_tokens = 4; - */ - cacheReadTokens: bigint; - - /** - * @generated from field: double estimated_cost_usd = 5; - */ - estimatedCostUsd: number; - - /** - * @generated from field: int32 session_count = 6; - */ - sessionCount: number; - - /** - * cost_by_model maps normalized model family (e.g. "claude-sonnet-4") to USD cost for that day. - * - * @generated from field: map cost_by_model = 7; - */ - costByModel: { [key: string]: number }; - - /** - * tokens_by_model maps normalized model family to total token count (input+output) for that day. - * - * @generated from field: map tokens_by_model = 8; - */ - tokensByModel: { [key: string]: bigint }; - - /** - * unpriced_models is the union of unpriced ModelFamily values across sessions rolled into this day. - * - * @generated from field: repeated string unpriced_models = 9; - */ - unpricedModels: string[]; -}; - -/** - * Describes the message session.v1.DailyTokenBucket. - * Use `create(DailyTokenBucketSchema)` to create a new message. - */ -export const DailyTokenBucketSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 2); - -/** - * ModelBreakdown aggregates token usage by model family. - * - * @generated from message session.v1.ModelBreakdown - */ -export type ModelBreakdown = Message<"session.v1.ModelBreakdown"> & { - /** - * normalized, e.g. "claude-sonnet-4" - * - * @generated from field: string model_family = 1; - */ - modelFamily: string; - - /** - * @generated from field: int64 total_input_tokens = 2; - */ - totalInputTokens: bigint; - - /** - * @generated from field: int64 total_output_tokens = 3; - */ - totalOutputTokens: bigint; - - /** - * @generated from field: int64 cache_read_tokens = 4; - */ - cacheReadTokens: bigint; - - /** - * @generated from field: double estimated_cost_usd = 5; - */ - estimatedCostUsd: number; - - /** - * @generated from field: int32 session_count = 6; - */ - sessionCount: number; - - /** - * pricing_unavailable is true when total_input_tokens/total_output_tokens > 0 but no - * PricingTable entry exists for model_family. - * - * @generated from field: bool pricing_unavailable = 7; - */ - pricingUnavailable: boolean; -}; - -/** - * Describes the message session.v1.ModelBreakdown. - * Use `create(ModelBreakdownSchema)` to create a new message. - */ -export const ModelBreakdownSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 3); - -/** - * TopEntry is a generic name/value pair for top-N tables. - * - * @generated from message session.v1.TopEntry - */ -export type TopEntry = Message<"session.v1.TopEntry"> & { - /** - * @generated from field: string name = 1; - */ - name: string; - - /** - * @generated from field: int64 token_count = 2; - */ - tokenCount: bigint; - - /** - * @generated from field: int32 activation_count = 3; - */ - activationCount: number; - - /** - * @generated from field: double cost_usd = 4; - */ - costUsd: number; -}; - -/** - * Describes the message session.v1.TopEntry. - * Use `create(TopEntrySchema)` to create a new message. - */ -export const TopEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 4); - -/** - * GetInsightsSummaryRequest filters the summary response. - * - * @generated from message session.v1.GetInsightsSummaryRequest - */ -export type GetInsightsSummaryRequest = Message<"session.v1.GetInsightsSummaryRequest"> & { - /** - * @generated from field: google.protobuf.Timestamp from = 1; - */ - from?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp to = 2; - */ - to?: Timestamp; - - /** - * @generated from field: optional string model_filter = 3; - */ - modelFilter?: string; - - /** - * @generated from field: optional string session_id_filter = 4; - */ - sessionIdFilter?: string; - - /** - * @generated from field: bool include_orphans = 5; - */ - includeOrphans: boolean; -}; - -/** - * Describes the message session.v1.GetInsightsSummaryRequest. - * Use `create(GetInsightsSummaryRequestSchema)` to create a new message. - */ -export const GetInsightsSummaryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 5); - -/** - * GetInsightsSummaryResponse returns the full dashboard dataset. - * - * @generated from message session.v1.GetInsightsSummaryResponse - */ -export type GetInsightsSummaryResponse = Message<"session.v1.GetInsightsSummaryResponse"> & { - /** - * @generated from field: repeated session.v1.SessionTokenSummary sessions = 1; - */ - sessions: SessionTokenSummary[]; - - /** - * @generated from field: double total_cost_usd = 2; - */ - totalCostUsd: number; - - /** - * @generated from field: int64 total_input_tokens = 3; - */ - totalInputTokens: bigint; - - /** - * @generated from field: int64 total_output_tokens = 4; - */ - totalOutputTokens: bigint; - - /** - * @generated from field: int64 total_cache_read_tokens = 5; - */ - totalCacheReadTokens: bigint; - - /** - * @generated from field: double overall_cache_hit_rate = 6; - */ - overallCacheHitRate: number; - - /** - * @generated from field: repeated session.v1.DailyTokenBucket daily = 7; - */ - daily: DailyTokenBucket[]; - - /** - * @generated from field: repeated session.v1.ModelBreakdown models = 8; - */ - models: ModelBreakdown[]; - - /** - * @generated from field: repeated session.v1.TopEntry top_skills = 9; - */ - topSkills: TopEntry[]; - - /** - * @generated from field: repeated session.v1.TopEntry top_tools = 10; - */ - topTools: TopEntry[]; - - /** - * true = background parse still in progress - * - * @generated from field: bool is_loading = 11; - */ - isLoading: boolean; - - /** - * @generated from field: google.protobuf.Timestamp pricing_as_of = 12; - */ - pricingAsOf?: Timestamp; - - /** - * unpriced_models is the aggregate union across all sessions in this response, for a dashboard-level banner. - * - * @generated from field: repeated string unpriced_models = 13; - */ - unpricedModels: string[]; -}; - -/** - * Describes the message session.v1.GetInsightsSummaryResponse. - * Use `create(GetInsightsSummaryResponseSchema)` to create a new message. - */ -export const GetInsightsSummaryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 6); - -/** - * ListSessionTokensRequest supports paginated session listing. - * - * @generated from message session.v1.ListSessionTokensRequest - */ -export type ListSessionTokensRequest = Message<"session.v1.ListSessionTokensRequest"> & { - /** - * @generated from field: google.protobuf.Timestamp from = 1; - */ - from?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp to = 2; - */ - to?: Timestamp; - - /** - * "cost" | "tokens" | "date" (default: "date") - * - * @generated from field: string sort_by = 3; - */ - sortBy: string; - - /** - * @generated from field: bool sort_desc = 4; - */ - sortDesc: boolean; - - /** - * @generated from field: int32 page_size = 5; - */ - pageSize: number; - - /** - * @generated from field: string page_token = 6; - */ - pageToken: string; -}; - -/** - * Describes the message session.v1.ListSessionTokensRequest. - * Use `create(ListSessionTokensRequestSchema)` to create a new message. - */ -export const ListSessionTokensRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 7); - -/** - * ListSessionTokensResponse returns paginated session summaries. - * - * @generated from message session.v1.ListSessionTokensResponse - */ -export type ListSessionTokensResponse = Message<"session.v1.ListSessionTokensResponse"> & { - /** - * @generated from field: repeated session.v1.SessionTokenSummary sessions = 1; - */ - sessions: SessionTokenSummary[]; - - /** - * @generated from field: string next_page_token = 2; - */ - nextPageToken: string; - - /** - * @generated from field: int32 total_count = 3; - */ - totalCount: number; -}; - -/** - * Describes the message session.v1.ListSessionTokensResponse. - * Use `create(ListSessionTokensResponseSchema)` to create a new message. - */ -export const ListSessionTokensResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 8); - -/** - * WatchInsightsRequest initiates a streaming subscription. - * - * @generated from message session.v1.WatchInsightsRequest - */ -export type WatchInsightsRequest = Message<"session.v1.WatchInsightsRequest"> & { - /** - * @generated from field: google.protobuf.Timestamp from = 1; - */ - from?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp to = 2; - */ - to?: Timestamp; -}; - -/** - * Describes the message session.v1.WatchInsightsRequest. - * Use `create(WatchInsightsRequestSchema)` to create a new message. - */ -export const WatchInsightsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 9); - -/** - * InsightsEvent is pushed when TokenStore processes a new or updated JSONL file. - * - * @generated from message session.v1.InsightsEvent - */ -export type InsightsEvent = Message<"session.v1.InsightsEvent"> & { - /** - * "update" | "parse_complete" - * - * @generated from field: string event_type = 1; - */ - eventType: string; - - /** - * @generated from field: optional session.v1.SessionTokenSummary session = 2; - */ - session?: SessionTokenSummary; - - /** - * @generated from field: bool all_parsed = 3; - */ - allParsed: boolean; -}; - -/** - * Describes the message session.v1.InsightsEvent. - * Use `create(InsightsEventSchema)` to create a new message. - */ -export const InsightsEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 10); - -/** - * TurnTokenStat is one assistant turn's token usage (per-turn breakdown tables). - * - * @generated from message session.v1.TurnTokenStat - */ -export type TurnTokenStat = Message<"session.v1.TurnTokenStat"> & { - /** - * unset if the turn has no timestamp - * - * @generated from field: google.protobuf.Timestamp timestamp = 1; - */ - timestamp?: Timestamp; - - /** - * @generated from field: string model = 2; - */ - model: string; - - /** - * @generated from field: int64 input_tokens = 3; - */ - inputTokens: bigint; - - /** - * @generated from field: int64 output_tokens = 4; - */ - outputTokens: bigint; - - /** - * @generated from field: int64 cache_creation_tokens = 5; - */ - cacheCreationTokens: bigint; - - /** - * @generated from field: int64 cache_read_tokens = 6; - */ - cacheReadTokens: bigint; - - /** - * @generated from field: repeated string tool_names = 7; - */ - toolNames: string[]; -}; - -/** - * Describes the message session.v1.TurnTokenStat. - * Use `create(TurnTokenStatSchema)` to create a new message. - */ -export const TurnTokenStatSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 11); - -/** - * GetSessionTurnTimelineRequest looks up per-turn stats for a single session, - * fetched on-demand when the session detail drawer opens. - * - * @generated from message session.v1.GetSessionTurnTimelineRequest - */ -export type GetSessionTurnTimelineRequest = Message<"session.v1.GetSessionTurnTimelineRequest"> & { - /** - * JSONL conversation UUID (SessionTokenSummary.conversation_id) - * - * @generated from field: string conversation_id = 1; - */ - conversationId: string; -}; - -/** - * Describes the message session.v1.GetSessionTurnTimelineRequest. - * Use `create(GetSessionTurnTimelineRequestSchema)` to create a new message. - */ -export const GetSessionTurnTimelineRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 12); - -/** - * GetSessionTurnTimelineResponse returns the per-turn breakdown for one session. - * - * @generated from message session.v1.GetSessionTurnTimelineResponse - */ -export type GetSessionTurnTimelineResponse = Message<"session.v1.GetSessionTurnTimelineResponse"> & { - /** - * @generated from field: repeated session.v1.TurnTokenStat turns = 1; - */ - turns: TurnTokenStat[]; -}; - -/** - * Describes the message session.v1.GetSessionTurnTimelineResponse. - * Use `create(GetSessionTurnTimelineResponseSchema)` to create a new message. - */ -export const GetSessionTurnTimelineResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_insights, 13); - -/** - * InsightsService provides token usage analytics derived from JSONL transcripts. - * - * @generated from service session.v1.InsightsService - */ -export const InsightsService: GenService<{ - /** - * GetInsightsSummary returns aggregated token and cost data for a time range. - * - * @generated from rpc session.v1.InsightsService.GetInsightsSummary - */ - getInsightsSummary: { - methodKind: "unary"; - input: typeof GetInsightsSummaryRequestSchema; - output: typeof GetInsightsSummaryResponseSchema; - }, - /** - * ListSessionTokens returns per-session token summaries with pagination. - * - * @generated from rpc session.v1.InsightsService.ListSessionTokens - */ - listSessionTokens: { - methodKind: "unary"; - input: typeof ListSessionTokensRequestSchema; - output: typeof ListSessionTokensResponseSchema; - }, - /** - * WatchInsights streams summary updates when new JSONL data is parsed. - * - * @generated from rpc session.v1.InsightsService.WatchInsights - */ - watchInsights: { - methodKind: "server_streaming"; - input: typeof WatchInsightsRequestSchema; - output: typeof InsightsEventSchema; - }, - /** - * GetSessionTurnTimeline returns per-turn token stats for one session, fetched - * on-demand when the session detail drawer opens (not embedded in list responses). - * - * @generated from rpc session.v1.InsightsService.GetSessionTurnTimeline - */ - getSessionTurnTimeline: { - methodKind: "unary"; - input: typeof GetSessionTurnTimelineRequestSchema; - output: typeof GetSessionTurnTimelineResponseSchema; - }, -}> = /*@__PURE__*/ - serviceDesc(file_session_v1_insights, 0); - diff --git a/web-app/src/gen/session/v1/session_connect.ts b/web-app/src/gen/session/v1/session_connect.ts deleted file mode 100644 index 1eef86fe4..000000000 --- a/web-app/src/gen/session/v1/session_connect.ts +++ /dev/null @@ -1,578 +0,0 @@ -// @generated by protoc-gen-connect-es v1.6.1 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/session.proto (package session.v1, syntax proto3) -/* eslint-disable */ - -import { AcknowledgeSessionRequest, AcknowledgeSessionResponse, ClearNotificationHistoryRequest, ClearNotificationHistoryResponse, ClosePRRequest, ClosePRResponse, CreateDebugSnapshotRequest, CreateDebugSnapshotResponse, CreateSessionRequest, CreateSessionResponse, DeleteApprovalRuleRequest, DeleteApprovalRuleResponse, DeleteSessionRequest, DeleteSessionResponse, FocusWindowRequest, FocusWindowResponse, GetApprovalAnalyticsRequest, GetApprovalAnalyticsResponse, GetClaudeConfigRequest, GetClaudeConfigResponse, GetClaudeHistoryDetailRequest, GetClaudeHistoryDetailResponse, GetClaudeHistoryMessagesRequest, GetClaudeHistoryMessagesResponse, GetCurrentDatabaseRequest, GetCurrentDatabaseResponse, GetLogsRequest, GetLogsResponse, GetNotificationHistoryRequest, GetNotificationHistoryResponse, GetPRCommentsRequest, GetPRCommentsResponse, GetPRInfoRequest, GetPRInfoResponse, GetReviewQueueRequest, GetReviewQueueResponse, GetSessionDiffRequest, GetSessionDiffResponse, GetSessionRequest, GetSessionResponse, GetVCSStatusRequest, GetVCSStatusResponse, GetWorkspaceInfoRequest, GetWorkspaceInfoResponse, ListApprovalRulesRequest, ListApprovalRulesResponse, ListClaudeConfigsRequest, ListClaudeConfigsResponse, ListClaudeHistoryRequest, ListClaudeHistoryResponse, ListDatabasesRequest, ListDatabasesResponse, ListPendingApprovalsRequest, ListPendingApprovalsResponse, ListSessionsRequest, ListSessionsResponse, ListWorkspaceTargetsRequest, ListWorkspaceTargetsResponse, LogClientEventsRequest, LogClientEventsResponse, LogUserInteractionRequest, LogUserInteractionResponse, MarkNotificationReadRequest, MarkNotificationReadResponse, MergeDatabaseRequest, MergeDatabaseResponse, MergePRRequest, MergePRResponse, PostPRCommentRequest, PostPRCommentResponse, RenameSessionRequest, RenameSessionResponse, ResolveApprovalRequest, ResolveApprovalResponse, RestartSessionRequest, RestartSessionResponse, SearchClaudeHistoryRequest, SearchClaudeHistoryResponse, SendNotificationRequest, SendNotificationResponse, SwitchDatabaseRequest, SwitchDatabaseResponse, SwitchWorkspaceRequest, SwitchWorkspaceResponse, UpdateClaudeConfigRequest, UpdateClaudeConfigResponse, UpdateSessionRequest, UpdateSessionResponse, UpsertApprovalRuleRequest, UpsertApprovalRuleResponse, WatchReviewQueueRequest, WatchSessionsRequest } from "./session_pb.js"; -import { MethodKind } from "@bufbuild/protobuf"; -import { ReviewQueueEvent, SessionEvent, TerminalData } from "./events_pb.js"; - -/** - * SessionService manages AI agent session lifecycle operations. - * Provides CRUD operations and real-time streaming for session management. - * - * @generated from service session.v1.SessionService - */ -export const SessionService = { - typeName: "session.v1.SessionService", - methods: { - /** - * ListSessions returns all sessions with optional filtering. - * - * @generated from rpc session.v1.SessionService.ListSessions - */ - listSessions: { - name: "ListSessions", - I: ListSessionsRequest, - O: ListSessionsResponse, - kind: MethodKind.Unary, - }, - /** - * GetSession retrieves a specific session by ID. - * - * @generated from rpc session.v1.SessionService.GetSession - */ - getSession: { - name: "GetSession", - I: GetSessionRequest, - O: GetSessionResponse, - kind: MethodKind.Unary, - }, - /** - * CreateSession initializes a new AI agent session with tmux and git worktree. - * - * @generated from rpc session.v1.SessionService.CreateSession - */ - createSession: { - name: "CreateSession", - I: CreateSessionRequest, - O: CreateSessionResponse, - kind: MethodKind.Unary, - }, - /** - * UpdateSession modifies session properties (pause/resume, category, etc). - * - * @generated from rpc session.v1.SessionService.UpdateSession - */ - updateSession: { - name: "UpdateSession", - I: UpdateSessionRequest, - O: UpdateSessionResponse, - kind: MethodKind.Unary, - }, - /** - * DeleteSession stops and removes a session, cleaning up resources. - * - * @generated from rpc session.v1.SessionService.DeleteSession - */ - deleteSession: { - name: "DeleteSession", - I: DeleteSessionRequest, - O: DeleteSessionResponse, - kind: MethodKind.Unary, - }, - /** - * WatchSessions streams real-time session events (created/updated/deleted). - * Server-streaming RPC for live updates without polling. - * - * @generated from rpc session.v1.SessionService.WatchSessions - */ - watchSessions: { - name: "WatchSessions", - I: WatchSessionsRequest, - O: SessionEvent, - kind: MethodKind.ServerStreaming, - }, - /** - * StreamTerminal provides bidirectional streaming for terminal I/O. - * Clients can send input and receive output from the tmux PTY. - * - * @generated from rpc session.v1.SessionService.StreamTerminal - */ - streamTerminal: { - name: "StreamTerminal", - I: TerminalData, - O: TerminalData, - kind: MethodKind.BiDiStreaming, - }, - /** - * GetSessionDiff retrieves the current git diff for a session. - * - * @generated from rpc session.v1.SessionService.GetSessionDiff - */ - getSessionDiff: { - name: "GetSessionDiff", - I: GetSessionDiffRequest, - O: GetSessionDiffResponse, - kind: MethodKind.Unary, - }, - /** - * GetVCSStatus retrieves the current version control status for a session. - * Returns branch info, changed files, staged/unstaged status, and remote sync state. - * - * @generated from rpc session.v1.SessionService.GetVCSStatus - */ - getVCSStatus: { - name: "GetVCSStatus", - I: GetVCSStatusRequest, - O: GetVCSStatusResponse, - kind: MethodKind.Unary, - }, - /** - * GetReviewQueue returns sessions needing user attention with priority ordering. - * - * @generated from rpc session.v1.SessionService.GetReviewQueue - */ - getReviewQueue: { - name: "GetReviewQueue", - I: GetReviewQueueRequest, - O: GetReviewQueueResponse, - kind: MethodKind.Unary, - }, - /** - * AcknowledgeSession marks a session as acknowledged in the review queue. - * The session won't reappear in the queue until it receives an update. - * - * @generated from rpc session.v1.SessionService.AcknowledgeSession - */ - acknowledgeSession: { - name: "AcknowledgeSession", - I: AcknowledgeSessionRequest, - O: AcknowledgeSessionResponse, - kind: MethodKind.Unary, - }, - /** - * GetLogs retrieves application logs with optional filtering and search. - * - * @generated from rpc session.v1.SessionService.GetLogs - */ - getLogs: { - name: "GetLogs", - I: GetLogsRequest, - O: GetLogsResponse, - kind: MethodKind.Unary, - }, - /** - * WatchReviewQueue streams real-time review queue events (items added/removed/updated). - * Server-streaming RPC for live queue updates without polling. - * - * @generated from rpc session.v1.SessionService.WatchReviewQueue - */ - watchReviewQueue: { - name: "WatchReviewQueue", - I: WatchReviewQueueRequest, - O: ReviewQueueEvent, - kind: MethodKind.ServerStreaming, - }, - /** - * LogUserInteraction logs a user interaction event for audit trail. - * Records user actions for compliance, debugging, and analytics. - * - * @generated from rpc session.v1.SessionService.LogUserInteraction - */ - logUserInteraction: { - name: "LogUserInteraction", - I: LogUserInteractionRequest, - O: LogUserInteractionResponse, - kind: MethodKind.Unary, - }, - /** - * GetClaudeConfig retrieves a Claude configuration file by name (CLAUDE.md, settings.json, agents.md). - * - * @generated from rpc session.v1.SessionService.GetClaudeConfig - */ - getClaudeConfig: { - name: "GetClaudeConfig", - I: GetClaudeConfigRequest, - O: GetClaudeConfigResponse, - kind: MethodKind.Unary, - }, - /** - * ListClaudeConfigs returns all configuration files in the ~/.claude directory. - * - * @generated from rpc session.v1.SessionService.ListClaudeConfigs - */ - listClaudeConfigs: { - name: "ListClaudeConfigs", - I: ListClaudeConfigsRequest, - O: ListClaudeConfigsResponse, - kind: MethodKind.Unary, - }, - /** - * UpdateClaudeConfig updates a Claude configuration file with atomic write and backup. - * - * @generated from rpc session.v1.SessionService.UpdateClaudeConfig - */ - updateClaudeConfig: { - name: "UpdateClaudeConfig", - I: UpdateClaudeConfigRequest, - O: UpdateClaudeConfigResponse, - kind: MethodKind.Unary, - }, - /** - * ListClaudeHistory returns Claude session history entries with optional filtering. - * - * @generated from rpc session.v1.SessionService.ListClaudeHistory - */ - listClaudeHistory: { - name: "ListClaudeHistory", - I: ListClaudeHistoryRequest, - O: ListClaudeHistoryResponse, - kind: MethodKind.Unary, - }, - /** - * GetClaudeHistoryDetail retrieves detailed information for a specific history entry. - * - * @generated from rpc session.v1.SessionService.GetClaudeHistoryDetail - */ - getClaudeHistoryDetail: { - name: "GetClaudeHistoryDetail", - I: GetClaudeHistoryDetailRequest, - O: GetClaudeHistoryDetailResponse, - kind: MethodKind.Unary, - }, - /** - * GetClaudeHistoryMessages retrieves messages from a specific conversation. - * - * @generated from rpc session.v1.SessionService.GetClaudeHistoryMessages - */ - getClaudeHistoryMessages: { - name: "GetClaudeHistoryMessages", - I: GetClaudeHistoryMessagesRequest, - O: GetClaudeHistoryMessagesResponse, - kind: MethodKind.Unary, - }, - /** - * SearchClaudeHistory performs full-text search across Claude conversation history. - * Returns ranked results with contextual snippets showing where query terms appear. - * - * @generated from rpc session.v1.SessionService.SearchClaudeHistory - */ - searchClaudeHistory: { - name: "SearchClaudeHistory", - I: SearchClaudeHistoryRequest, - O: SearchClaudeHistoryResponse, - kind: MethodKind.Unary, - }, - /** - * GetPRInfo retrieves the latest PR information for a session. - * - * @generated from rpc session.v1.SessionService.GetPRInfo - */ - getPRInfo: { - name: "GetPRInfo", - I: GetPRInfoRequest, - O: GetPRInfoResponse, - kind: MethodKind.Unary, - }, - /** - * GetPRComments retrieves all comments on the PR for a session. - * - * @generated from rpc session.v1.SessionService.GetPRComments - */ - getPRComments: { - name: "GetPRComments", - I: GetPRCommentsRequest, - O: GetPRCommentsResponse, - kind: MethodKind.Unary, - }, - /** - * PostPRComment posts a new comment to the PR for a session. - * - * @generated from rpc session.v1.SessionService.PostPRComment - */ - postPRComment: { - name: "PostPRComment", - I: PostPRCommentRequest, - O: PostPRCommentResponse, - kind: MethodKind.Unary, - }, - /** - * MergePR merges the PR for a session using the specified merge method. - * - * @generated from rpc session.v1.SessionService.MergePR - */ - mergePR: { - name: "MergePR", - I: MergePRRequest, - O: MergePRResponse, - kind: MethodKind.Unary, - }, - /** - * ClosePR closes the PR without merging for a session. - * - * @generated from rpc session.v1.SessionService.ClosePR - */ - closePR: { - name: "ClosePR", - I: ClosePRRequest, - O: ClosePRResponse, - kind: MethodKind.Unary, - }, - /** - * SendNotification allows tmux sessions to send notifications to the server. - * Notifications are broadcast to all connected clients (web UI and TUI). - * Requires session_id to identify the source session. - * Enforces localhost-only restriction and rate limiting (10/sec per session). - * - * @generated from rpc session.v1.SessionService.SendNotification - */ - sendNotification: { - name: "SendNotification", - I: SendNotificationRequest, - O: SendNotificationResponse, - kind: MethodKind.Unary, - }, - /** - * FocusWindow activates a window for the specified application. - * Used for deep linking from notifications to bring the source IDE/terminal to front. - * Only works on macOS via AppleScript. Requires localhost origin. - * - * @generated from rpc session.v1.SessionService.FocusWindow - */ - focusWindow: { - name: "FocusWindow", - I: FocusWindowRequest, - O: FocusWindowResponse, - kind: MethodKind.Unary, - }, - /** - * RenameSession changes the title of an existing session. - * Validates that the new title doesn't conflict with existing sessions. - * - * @generated from rpc session.v1.SessionService.RenameSession - */ - renameSession: { - name: "RenameSession", - I: RenameSessionRequest, - O: RenameSessionResponse, - kind: MethodKind.Unary, - }, - /** - * RestartSession restarts a session by killing and recreating the tmux session. - * Optionally preserves terminal output for debugging purposes. - * - * @generated from rpc session.v1.SessionService.RestartSession - */ - restartSession: { - name: "RestartSession", - I: RestartSessionRequest, - O: RestartSessionResponse, - kind: MethodKind.Unary, - }, - /** - * GetWorkspaceInfo retrieves VCS and workspace information for a session. - * Returns VCS type (Git/JJ), current branch, revision, and uncommitted changes status. - * - * @generated from rpc session.v1.SessionService.GetWorkspaceInfo - */ - getWorkspaceInfo: { - name: "GetWorkspaceInfo", - I: GetWorkspaceInfoRequest, - O: GetWorkspaceInfoResponse, - kind: MethodKind.Unary, - }, - /** - * ListWorkspaceTargets returns available switch targets for a session. - * Includes bookmarks/branches, recent revisions, and worktrees. - * - * @generated from rpc session.v1.SessionService.ListWorkspaceTargets - */ - listWorkspaceTargets: { - name: "ListWorkspaceTargets", - I: ListWorkspaceTargetsRequest, - O: ListWorkspaceTargetsResponse, - kind: MethodKind.Unary, - }, - /** - * SwitchWorkspace switches a session's workspace to a different branch, revision, or worktree. - * The session is restarted with Claude --resume to preserve conversation context. - * - * @generated from rpc session.v1.SessionService.SwitchWorkspace - */ - switchWorkspace: { - name: "SwitchWorkspace", - I: SwitchWorkspaceRequest, - O: SwitchWorkspaceResponse, - kind: MethodKind.Unary, - }, - /** - * ResolveApproval allows the web UI to approve or deny a pending Claude Code tool use request. - * This unblocks the HTTP hook handler that is waiting for the user's decision. - * - * @generated from rpc session.v1.SessionService.ResolveApproval - */ - resolveApproval: { - name: "ResolveApproval", - I: ResolveApprovalRequest, - O: ResolveApprovalResponse, - kind: MethodKind.Unary, - }, - /** - * ListPendingApprovals returns all pending Claude Code tool approval requests. - * Used by the web UI to populate the approval panel on initial load. - * - * @generated from rpc session.v1.SessionService.ListPendingApprovals - */ - listPendingApprovals: { - name: "ListPendingApprovals", - I: ListPendingApprovalsRequest, - O: ListPendingApprovalsResponse, - kind: MethodKind.Unary, - }, - /** - * CreateDebugSnapshot captures diagnostic information and writes it to a JSON file. - * Gathers session state, tmux info, pending approvals, and recent logs. - * The file is written to ~/.claude-squad/logs/debug-snapshot-{timestamp}.json. - * - * @generated from rpc session.v1.SessionService.CreateDebugSnapshot - */ - createDebugSnapshot: { - name: "CreateDebugSnapshot", - I: CreateDebugSnapshotRequest, - O: CreateDebugSnapshotResponse, - kind: MethodKind.Unary, - }, - /** - * GetNotificationHistory returns persisted notification history with optional filtering. - * Notifications survive server restarts and page refreshes. - * - * @generated from rpc session.v1.SessionService.GetNotificationHistory - */ - getNotificationHistory: { - name: "GetNotificationHistory", - I: GetNotificationHistoryRequest, - O: GetNotificationHistoryResponse, - kind: MethodKind.Unary, - }, - /** - * MarkNotificationRead marks specific notifications as read. - * If notification_ids is empty, marks all notifications as read. - * - * @generated from rpc session.v1.SessionService.MarkNotificationRead - */ - markNotificationRead: { - name: "MarkNotificationRead", - I: MarkNotificationReadRequest, - O: MarkNotificationReadResponse, - kind: MethodKind.Unary, - }, - /** - * ClearNotificationHistory removes notifications from the history. - * Optionally filters by timestamp to only clear older notifications. - * - * @generated from rpc session.v1.SessionService.ClearNotificationHistory - */ - clearNotificationHistory: { - name: "ClearNotificationHistory", - I: ClearNotificationHistoryRequest, - O: ClearNotificationHistoryResponse, - kind: MethodKind.Unary, - }, - /** - * ListApprovalRules returns all auto-approval rules (user, seed, and claude-settings). - * - * @generated from rpc session.v1.SessionService.ListApprovalRules - */ - listApprovalRules: { - name: "ListApprovalRules", - I: ListApprovalRulesRequest, - O: ListApprovalRulesResponse, - kind: MethodKind.Unary, - }, - /** - * UpsertApprovalRule creates or updates a user-defined auto-approval rule. - * - * @generated from rpc session.v1.SessionService.UpsertApprovalRule - */ - upsertApprovalRule: { - name: "UpsertApprovalRule", - I: UpsertApprovalRuleRequest, - O: UpsertApprovalRuleResponse, - kind: MethodKind.Unary, - }, - /** - * DeleteApprovalRule removes a user-defined auto-approval rule by ID. - * - * @generated from rpc session.v1.SessionService.DeleteApprovalRule - */ - deleteApprovalRule: { - name: "DeleteApprovalRule", - I: DeleteApprovalRuleRequest, - O: DeleteApprovalRuleResponse, - kind: MethodKind.Unary, - }, - /** - * GetApprovalAnalytics returns aggregated analytics for classification decisions. - * - * @generated from rpc session.v1.SessionService.GetApprovalAnalytics - */ - getApprovalAnalytics: { - name: "GetApprovalAnalytics", - I: GetApprovalAnalyticsRequest, - O: GetApprovalAnalyticsResponse, - kind: MethodKind.Unary, - }, - /** - * ListDatabases returns all discovered workspace databases with metadata. - * Used by the workspace switcher UI to show available workspaces. - * - * @generated from rpc session.v1.SessionService.ListDatabases - */ - listDatabases: { - name: "ListDatabases", - I: ListDatabasesRequest, - O: ListDatabasesResponse, - kind: MethodKind.Unary, - }, - /** - * GetCurrentDatabase returns metadata for the currently active workspace database. - * - * @generated from rpc session.v1.SessionService.GetCurrentDatabase - */ - getCurrentDatabase: { - name: "GetCurrentDatabase", - I: GetCurrentDatabaseRequest, - O: GetCurrentDatabaseResponse, - kind: MethodKind.Unary, - }, - /** - * SwitchDatabase switches to a different workspace database and restarts the server. - * The server will exec-restart itself after writing a preference file. - * The client should poll until the server is back up, then reload. - * - * @generated from rpc session.v1.SessionService.SwitchDatabase - */ - switchDatabase: { - name: "SwitchDatabase", - I: SwitchDatabaseRequest, - O: SwitchDatabaseResponse, - kind: MethodKind.Unary, - }, - /** - * MergeDatabase copies all sessions from a source workspace database into the - * currently active database. Skips sessions whose titles already exist. - * No server restart required — changes are immediately visible. - * - * @generated from rpc session.v1.SessionService.MergeDatabase - */ - mergeDatabase: { - name: "MergeDatabase", - I: MergeDatabaseRequest, - O: MergeDatabaseResponse, - kind: MethodKind.Unary, - }, - /** - * LogClientEvents receives batched browser console log entries from the web UI. - * Used for remote debugging of mobile browser sessions where DevTools are unavailable. - * - * @generated from rpc session.v1.SessionService.LogClientEvents - */ - logClientEvents: { - name: "LogClientEvents", - I: LogClientEventsRequest, - O: LogClientEventsResponse, - kind: MethodKind.Unary, - }, - } -} as const; - diff --git a/web-app/src/gen/session/v1/session_pb.ts b/web-app/src/gen/session/v1/session_pb.ts deleted file mode 100644 index 5cffe7536..000000000 --- a/web-app/src/gen/session/v1/session_pb.ts +++ /dev/null @@ -1,9005 +0,0 @@ -// @generated by protoc-gen-es v2.11.0 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/session.proto (package session.v1, syntax proto3) -/* eslint-disable */ - -import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; -import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; -import type { Timestamp } from "@bufbuild/protobuf/wkt"; -import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; -import type { AnalyticsSummaryProto, ApprovalRuleProto, AttentionReason, AvailableWorkspaceTargets, ChangeStrategy, CheckpointProto, DailyBucketProto, DatabaseInfo, DiffStats, FileNode, NotificationPriority, NotificationType, PendingApprovalProto, PRComment, PRInfo, Priority, ReviewQueue, Session, SessionStatus, SessionType, Shell, SubcommandBreakdownProto, SuggestedRuleProto, SuggestionSource, VCSInfo, VCSStatus, VCSType, WorkspaceSwitchType } from "./types_pb"; -import { file_session_v1_types } from "./types_pb"; -import type { ReviewQueueEventSchema, SessionEventSchema, TerminalDataSchema, UserInteractionEvent_InteractionType } from "./events_pb"; -import { file_session_v1_events } from "./events_pb"; -import type { Message } from "@bufbuild/protobuf"; - -/** - * Describes the file session/v1/session.proto. - */ -export const file_session_v1_session: GenFile = /*@__PURE__*/ - fileDesc("ChhzZXNzaW9uL3YxL3Nlc3Npb24ucHJvdG8SCnNlc3Npb24udjEiuQIKE0xpc3RTZXNzaW9uc1JlcXVlc3QSLgoGc3RhdHVzGAEgASgOMhkuc2Vzc2lvbi52MS5TZXNzaW9uU3RhdHVzSACIAQESFQoIY2F0ZWdvcnkYAiABKAlIAYgBARITCgtoaWRlX3BhdXNlZBgDIAEoCBIZCgxzZWFyY2hfcXVlcnkYBCABKAlIAogBARIXCgpwcm9qZWN0X2lkGAUgASgJSAOIAQESFgoOaW5jbHVkZV9oaWRkZW4YBiABKAgSGAoLd29ya2Zsb3dfaWQYByABKAlIBIgBARIYChBpbmNsdWRlX2FyY2hpdmVkGAggASgIQgkKB19zdGF0dXNCCwoJX2NhdGVnb3J5Qg8KDV9zZWFyY2hfcXVlcnlCDQoLX3Byb2plY3RfaWRCDgoMX3dvcmtmbG93X2lkIlgKFExpc3RTZXNzaW9uc1Jlc3BvbnNlEiUKCHNlc3Npb25zGAEgAygLMhMuc2Vzc2lvbi52MS5TZXNzaW9uEhkKEXN5c3RlbV9tZW1vcnlfcGN0GAIgASgCIh8KEUdldFNlc3Npb25SZXF1ZXN0EgoKAmlkGAEgASgJIjoKEkdldFNlc3Npb25SZXNwb25zZRIkCgdzZXNzaW9uGAEgASgLMhMuc2Vzc2lvbi52MS5TZXNzaW9uIscFChRDcmVhdGVTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRIMCgRwYXRoGAIgASgJEhMKC3dvcmtpbmdfZGlyGAMgASgJEg4KBmJyYW5jaBgEIAEoCRIPCgdwcm9ncmFtGAUgASgJEhAKCGNhdGVnb3J5GAYgASgJEg4KBnByb21wdBgHIAEoCRIQCghhdXRvX3llcxgIIAEoCBIZChFleGlzdGluZ193b3JrdHJlZRgJIAEoCRIRCglyZXN1bWVfaWQYCiABKAkSDwoHcHJvZmlsZRgLIAEoCRIVCg1za2lwX2RlZmF1bHRzGAwgASgIEi0KDHNlc3Npb25fdHlwZRgNIAEoDjIXLnNlc3Npb24udjEuU2Vzc2lvblR5cGUSFgoOaW5pdGlhbF9wcm9tcHQYDyABKAkSEAoIb25lX3Nob3QYECABKAgSEgoKcHJvamVjdF9pZBgRIAEoCRIZChFjcmVhdGVfaWZfbWlzc2luZxgSIAEoCBIWCg5mb3JrX3NvdXJjZV9pZBgTIAEoCRIXCg9mb3JrX2F0X21lc3NhZ2UYFCABKAUSFQoNYWxsb3dlZF90b29scxgVIAEoCRIXCg9wZXJtaXNzaW9uX21vZGUYFiABKAkSFwoPYXV0b25vbW91c19tb2RlGBcgASgIEhMKC3dvcmtmbG93X2lkGBggASgJEj8KCGVudl92YXJzGBkgAygLMi0uc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdC5FbnZWYXJzRW50cnkSEQoJY2xpX2ZsYWdzGBogASgJEhIKCmFsaWFzX25hbWUYGyABKAkSFAoMYXV0b19hcHByb3ZlGBwgASgIGi4KDEVudlZhcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBSgQIDhAPUgdvbmVfb2ZmIj0KFUNyZWF0ZVNlc3Npb25SZXNwb25zZRIkCgdzZXNzaW9uGAEgASgLMhMuc2Vzc2lvbi52MS5TZXNzaW9uIoUEChRVcGRhdGVTZXNzaW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgZzdGF0dXMYAiABKA4yGS5zZXNzaW9uLnYxLlNlc3Npb25TdGF0dXNIAIgBARIVCghjYXRlZ29yeRgDIAEoCUgBiAEBEhIKBXRpdGxlGAQgASgJSAKIAQESFAoHcHJvZ3JhbRgFIAEoCUgDiAEBEgwKBHRhZ3MYBiADKAkSGAoLd29ya2luZ19kaXIYByABKAlIBIgBARIfChJyYXRlX2xpbWl0X2VuYWJsZWQYCCABKAhIBYgBARIZCgxwYXVzZV9yZWFzb24YCSABKAlIBogBARIcCg9hdXRvbm9tb3VzX21vZGUYCiABKAhIB4gBARIaCg1zdGVlcl9tZXNzYWdlGAsgASgJSAiIAQESEQoEbm90ZRgMIAEoCUgJiAEBEhkKDGF1dG9fYXBwcm92ZRgNIAEoCEgKiAEBQgkKB19zdGF0dXNCCwoJX2NhdGVnb3J5QggKBl90aXRsZUIKCghfcHJvZ3JhbUIOCgxfd29ya2luZ19kaXJCFQoTX3JhdGVfbGltaXRfZW5hYmxlZEIPCg1fcGF1c2VfcmVhc29uQhIKEF9hdXRvbm9tb3VzX21vZGVCEAoOX3N0ZWVyX21lc3NhZ2VCBwoFX25vdGVCDwoNX2F1dG9fYXBwcm92ZSI9ChVVcGRhdGVTZXNzaW9uUmVzcG9uc2USJAoHc2Vzc2lvbhgBIAEoCzITLnNlc3Npb24udjEuU2Vzc2lvbiIxChREZWxldGVTZXNzaW9uUmVxdWVzdBIKCgJpZBgBIAEoCRINCgVmb3JjZRgCIAEoCCI5ChVEZWxldGVTZXNzaW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJIqQBChRXYXRjaFNlc3Npb25zUmVxdWVzdBIcCg9jYXRlZ29yeV9maWx0ZXIYASABKAlIAIgBARI1Cg1zdGF0dXNfZmlsdGVyGAIgASgOMhkuc2Vzc2lvbi52MS5TZXNzaW9uU3RhdHVzSAGIAQESEQoJYWZ0ZXJfc2VxGAMgASgEQhIKEF9jYXRlZ29yeV9maWx0ZXJCEAoOX3N0YXR1c19maWx0ZXIiIwoVR2V0U2Vzc2lvbkRpZmZSZXF1ZXN0EgoKAmlkGAEgASgJIkMKFkdldFNlc3Npb25EaWZmUmVzcG9uc2USKQoKZGlmZl9zdGF0cxgBIAEoCzIVLnNlc3Npb24udjEuRGlmZlN0YXRzIiEKE0dldFZDU1N0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiUAoUR2V0VkNTU3RhdHVzUmVzcG9uc2USKQoKdmNzX3N0YXR1cxgBIAEoCzIVLnNlc3Npb24udjEuVkNTU3RhdHVzEg0KBWVycm9yGAIgASgJIqoBChVHZXRSZXZpZXdRdWV1ZVJlcXVlc3QSMgoPcHJpb3JpdHlfZmlsdGVyGAEgASgOMhQuc2Vzc2lvbi52MS5Qcmlvcml0eUgAiAEBEjcKDXJlYXNvbl9maWx0ZXIYAiABKA4yGy5zZXNzaW9uLnYxLkF0dGVudGlvblJlYXNvbkgBiAEBQhIKEF9wcmlvcml0eV9maWx0ZXJCEAoOX3JlYXNvbl9maWx0ZXIiRwoWR2V0UmV2aWV3UXVldWVSZXNwb25zZRItCgxyZXZpZXdfcXVldWUYASABKAsyFy5zZXNzaW9uLnYxLlJldmlld1F1ZXVlIicKGUFja25vd2xlZGdlU2Vzc2lvblJlcXVlc3QSCgoCaWQYASABKAkiPgoaQWNrbm93bGVkZ2VTZXNzaW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJItQCCg5HZXRMb2dzUmVxdWVzdBIZCgxzZWFyY2hfcXVlcnkYASABKAlIAIgBARISCgVsZXZlbBgCIAEoCUgBiAEBEjMKCnN0YXJ0X3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESMQoIZW5kX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAOIAQESEgoFbGltaXQYBSABKAVIBIgBARITCgZvZmZzZXQYBiABKAVIBYgBARIXCgpzZXNzaW9uX2lkGAcgASgJSAaIAQESDgoGbGV2ZWxzGAggAygJQg8KDV9zZWFyY2hfcXVlcnlCCAoGX2xldmVsQg0KC19zdGFydF90aW1lQgsKCV9lbmRfdGltZUIICgZfbGltaXRCCQoHX29mZnNldEINCgtfc2Vzc2lvbl9pZCJfCg9HZXRMb2dzUmVzcG9uc2USJQoHZW50cmllcxgBIAMoCzIULnNlc3Npb24udjEuTG9nRW50cnkSEwoLdG90YWxfY291bnQYAiABKAUSEAoIaGFzX21vcmUYAyABKAgieQoITG9nRW50cnkSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgVsZXZlbBgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhMKBnNvdXJjZRgEIAEoCUgAiAEBQgkKB19zb3VyY2UixwEKF1dhdGNoUmV2aWV3UXVldWVSZXF1ZXN0Ei0KD3ByaW9yaXR5X2ZpbHRlchgBIAMoDjIULnNlc3Npb24udjEuUHJpb3JpdHkSMgoNcmVhc29uX2ZpbHRlchgCIAMoDjIbLnNlc3Npb24udjEuQXR0ZW50aW9uUmVhc29uEhoKEmluY2x1ZGVfc3RhdGlzdGljcxgDIAEoCBIYChBpbml0aWFsX3NuYXBzaG90GAQgASgIEhMKC3Nlc3Npb25faWRzGAUgAygJItsCChlMb2dVc2VySW50ZXJhY3Rpb25SZXF1ZXN0EhcKCnNlc3Npb25faWQYASABKAlIAIgBARJKChBpbnRlcmFjdGlvbl90eXBlGAIgASgOMjAuc2Vzc2lvbi52MS5Vc2VySW50ZXJhY3Rpb25FdmVudC5JbnRlcmFjdGlvblR5cGUSFAoHY29udGV4dBgDIAEoCUgBiAEBEhwKD25vdGlmaWNhdGlvbl9pZBgEIAEoCUgCiAEBEkUKCG1ldGFkYXRhGAUgAygLMjMuc2Vzc2lvbi52MS5Mb2dVc2VySW50ZXJhY3Rpb25SZXF1ZXN0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19zZXNzaW9uX2lkQgoKCF9jb250ZXh0QhIKEF9ub3RpZmljYXRpb25faWQiSwoaTG9nVXNlckludGVyYWN0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBISCgVlcnJvchgCIAEoCUgAiAEBQggKBl9lcnJvciIqChZHZXRDbGF1ZGVDb25maWdSZXF1ZXN0EhAKCGZpbGVuYW1lGAEgASgJIkcKF0dldENsYXVkZUNvbmZpZ1Jlc3BvbnNlEiwKBmNvbmZpZxgBIAEoCzIcLnNlc3Npb24udjEuQ2xhdWRlQ29uZmlnRmlsZSIaChhMaXN0Q2xhdWRlQ29uZmlnc1JlcXVlc3QiSgoZTGlzdENsYXVkZUNvbmZpZ3NSZXNwb25zZRItCgdjb25maWdzGAEgAygLMhwuc2Vzc2lvbi52MS5DbGF1ZGVDb25maWdGaWxlIlAKGVVwZGF0ZUNsYXVkZUNvbmZpZ1JlcXVlc3QSEAoIZmlsZW5hbWUYASABKAkSDwoHY29udGVudBgCIAEoCRIQCgh2YWxpZGF0ZRgDIAEoCCJKChpVcGRhdGVDbGF1ZGVDb25maWdSZXNwb25zZRIsCgZjb25maWcYASABKAsyHC5zZXNzaW9uLnYxLkNsYXVkZUNvbmZpZ0ZpbGUibQoQQ2xhdWRlQ29uZmlnRmlsZRIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSDwoHY29udGVudBgDIAEoCRIsCghtb2RfdGltZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi6AEKGExpc3RDbGF1ZGVIaXN0b3J5UmVxdWVzdBIUCgdwcm9qZWN0GAEgASgJSACIAQESGQoMc2VhcmNoX3F1ZXJ5GAIgASgJSAGIAQESDQoFbGltaXQYAyABKAUSEQoJcGFnZV9zaXplGAQgASgFEhIKCnBhZ2VfdG9rZW4YBSABKAkSKAobZXhjbHVkZV9hdXRvbWF0aW9uX3Nlc3Npb25zGAYgASgISAKIAQFCCgoIX3Byb2plY3RCDwoNX3NlYXJjaF9xdWVyeUIeChxfZXhjbHVkZV9hdXRvbWF0aW9uX3Nlc3Npb25zInoKGUxpc3RDbGF1ZGVIaXN0b3J5UmVzcG9uc2USLwoHZW50cmllcxgBIAMoCzIeLnNlc3Npb24udjEuQ2xhdWRlSGlzdG9yeUVudHJ5EhMKC3RvdGFsX2NvdW50GAIgASgFEhcKD25leHRfcGFnZV90b2tlbhgDIAEoCSIrCh1HZXRDbGF1ZGVIaXN0b3J5RGV0YWlsUmVxdWVzdBIKCgJpZBgBIAEoCSJPCh5HZXRDbGF1ZGVIaXN0b3J5RGV0YWlsUmVzcG9uc2USLQoFZW50cnkYASABKAsyHi5zZXNzaW9uLnYxLkNsYXVkZUhpc3RvcnlFbnRyeSKFAwoSQ2xhdWRlSGlzdG9yeUVudHJ5EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDwoHcHJvamVjdBgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgVtb2RlbBgGIAEoCRIVCg1tZXNzYWdlX2NvdW50GAcgASgFEikKCnZjc19zdGF0dXMYCCABKAsyFS5zZXNzaW9uLnYxLlZDU1N0YXR1cxIOCgZicmFuY2gYCSABKAkSMQoOc2Vzc2lvbl9zdGF0dXMYCiABKA4yGS5zZXNzaW9uLnYxLlNlc3Npb25TdGF0dXMSGgoSZ2l0X3N0YXR1c19zdW1tYXJ5GAsgASgJEhsKE2xhc3RfY29tbWl0X21lc3NhZ2UYDCABKAkSFwoPZGlmZl9maWxlX2NvdW50GA0gASgFIoYBCh9HZXRDbGF1ZGVIaXN0b3J5TWVzc2FnZXNSZXF1ZXN0EgoKAmlkGAEgASgJEg0KBWxpbWl0GAIgASgFEg4KBm9mZnNldBgDIAEoBRIMCgR0YWlsGAQgASgIEhkKDGFuY2hvcl9pbmRleBgFIAEoBUgAiAEBQg8KDV9hbmNob3JfaW5kZXgiZAogR2V0Q2xhdWRlSGlzdG9yeU1lc3NhZ2VzUmVzcG9uc2USKwoIbWVzc2FnZXMYASADKAsyGS5zZXNzaW9uLnYxLkNsYXVkZU1lc3NhZ2USEwoLdG90YWxfY291bnQYAiABKAUibAoNQ2xhdWRlTWVzc2FnZRIMCgRyb2xlGAEgASgJEg8KB2NvbnRlbnQYAiABKAkSLQoJdGltZXN0YW1wGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgVtb2RlbBgEIAEoCSK+AwoaU2VhcmNoQ2xhdWRlSGlzdG9yeVJlcXVlc3QSDQoFcXVlcnkYASABKAkSFAoHcHJvamVjdBgCIAEoCUgAiAEBEhIKBW1vZGVsGAMgASgJSAGIAQESMwoKc3RhcnRfdGltZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIxCghlbmRfdGltZRgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARINCgVsaW1pdBgGIAEoBRIOCgZvZmZzZXQYByABKAUSHQoQZ3JvdXBfYnlfc2Vzc2lvbhgIIAEoCEgEiAEBEhwKD2luY2x1ZGVfY29udGV4dBgJIAEoCEgFiAEBEigKG2V4Y2x1ZGVfYXV0b21hdGlvbl9zZXNzaW9ucxgKIAEoCEgGiAEBQgoKCF9wcm9qZWN0QggKBl9tb2RlbEINCgtfc3RhcnRfdGltZUILCglfZW5kX3RpbWVCEwoRX2dyb3VwX2J5X3Nlc3Npb25CEgoQX2luY2x1ZGVfY29udGV4dEIeChxfZXhjbHVkZV9hdXRvbWF0aW9uX3Nlc3Npb25zIogBChtTZWFyY2hDbGF1ZGVIaXN0b3J5UmVzcG9uc2USKQoHcmVzdWx0cxgBIAMoCzIYLnNlc3Npb24udjEuU2VhcmNoUmVzdWx0EhUKDXRvdGFsX21hdGNoZXMYAiABKAUSFQoNcXVlcnlfdGltZV9tcxgDIAEoAxIQCghoYXNfbW9yZRgEIAEoCCKNAwoMU2VhcmNoUmVzdWx0EhIKCnNlc3Npb25faWQYASABKAkSFAoMc2Vzc2lvbl9uYW1lGAIgASgJEg8KB3Byb2plY3QYAyABKAkSFQoNbWVzc2FnZV9pbmRleBgEIAEoBRINCgVzY29yZRgFIAEoAhIrCghzbmlwcGV0cxgGIAMoCzIZLnNlc3Npb24udjEuU2VhcmNoU25pcHBldBIyCghtZXRhZGF0YRgHIAEoCzIgLnNlc3Npb24udjEuU2VhcmNoUmVzdWx0TWV0YWRhdGESJQodbW9yZV9tYXRjaGVzX2luX3Nlc3Npb25fY291bnQYCCABKAUSMQoOY29udGV4dF93aW5kb3cYCSADKAsyGS5zZXNzaW9uLnYxLkNsYXVkZU1lc3NhZ2USMAoNYm9va2VuZF9maXJzdBgKIAMoCzIZLnNlc3Npb24udjEuQ2xhdWRlTWVzc2FnZRIvCgxib29rZW5kX2xhc3QYCyADKAsyGS5zZXNzaW9uLnYxLkNsYXVkZU1lc3NhZ2UimwEKDVNlYXJjaFNuaXBwZXQSDAoEdGV4dBgBIAEoCRI0ChBoaWdobGlnaHRfcmFuZ2VzGAIgAygLMhouc2Vzc2lvbi52MS5IaWdobGlnaHRSYW5nZRIUCgxtZXNzYWdlX3JvbGUYAyABKAkSMAoMbWVzc2FnZV90aW1lGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIsCg5IaWdobGlnaHRSYW5nZRINCgVzdGFydBgBIAEoBRILCgNlbmQYAiABKAUihgEKFFNlYXJjaFJlc3VsdE1ldGFkYXRhEhkKEWlzX21ldGFkYXRhX21hdGNoGAEgASgIEhQKDG1hdGNoX3NvdXJjZRgCIAEoCRINCgVtb2RlbBgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIeChBHZXRQUkluZm9SZXF1ZXN0EgoKAmlkGAEgASgJIjgKEUdldFBSSW5mb1Jlc3BvbnNlEiMKB3ByX2luZm8YASABKAsyEi5zZXNzaW9uLnYxLlBSSW5mbyIiChRHZXRQUkNvbW1lbnRzUmVxdWVzdBIKCgJpZBgBIAEoCSJAChVHZXRQUkNvbW1lbnRzUmVzcG9uc2USJwoIY29tbWVudHMYASADKAsyFS5zZXNzaW9uLnYxLlBSQ29tbWVudCIwChRQb3N0UFJDb21tZW50UmVxdWVzdBIKCgJpZBgBIAEoCRIMCgRib2R5GAIgASgJIjkKFVBvc3RQUkNvbW1lbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkiPAoOTWVyZ2VQUlJlcXVlc3QSCgoCaWQYASABKAkSEwoGbWV0aG9kGAIgASgJSACIAQFCCQoHX21ldGhvZCIzCg9NZXJnZVBSUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJIhwKDkNsb3NlUFJSZXF1ZXN0EgoKAmlkGAEgASgJIjMKD0Nsb3NlUFJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkisAIKF1NlbmROb3RpZmljYXRpb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSNwoRbm90aWZpY2F0aW9uX3R5cGUYAiABKA4yHC5zZXNzaW9uLnYxLk5vdGlmaWNhdGlvblR5cGUSMgoIcHJpb3JpdHkYAyABKA4yIC5zZXNzaW9uLnYxLk5vdGlmaWNhdGlvblByaW9yaXR5Eg0KBXRpdGxlGAQgASgJEg8KB21lc3NhZ2UYBSABKAkSQwoIbWV0YWRhdGEYBiADKAsyMS5zZXNzaW9uLnYxLlNlbmROb3RpZmljYXRpb25SZXF1ZXN0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlUKGFNlbmROb3RpZmljYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkSFwoPbm90aWZpY2F0aW9uX2lkGAMgASgJIpoBChJGb2N1c1dpbmRvd1JlcXVlc3QSFgoJYnVuZGxlX2lkGAEgASgJSACIAQESFQoIYXBwX25hbWUYAiABKAlIAYgBARIQCgNwaWQYAyABKAVIAogBARIUCgdwcm9qZWN0GAQgASgJSAOIAQFCDAoKX2J1bmRsZV9pZEILCglfYXBwX25hbWVCBgoEX3BpZEIKCghfcHJvamVjdCJJChNGb2N1c1dpbmRvd1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIQCghwbGF0Zm9ybRgDIAEoCSI1ChRSZW5hbWVTZXNzaW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgluZXdfdGl0bGUYAiABKAkiPQoVUmVuYW1lU2Vzc2lvblJlc3BvbnNlEiQKB3Nlc3Npb24YASABKAsyEy5zZXNzaW9uLnYxLlNlc3Npb24iPAoVUmVzdGFydFNlc3Npb25SZXF1ZXN0EgoKAmlkGAEgASgJEhcKD3ByZXNlcnZlX291dHB1dBgCIAEoCCJgChZSZXN0YXJ0U2Vzc2lvblJlc3BvbnNlEiQKB3Nlc3Npb24YASABKAsyEy5zZXNzaW9uLnYxLlNlc3Npb24SDwoHc3VjY2VzcxgCIAEoCBIPCgdtZXNzYWdlGAMgASgJIiUKF0dldFdvcmtzcGFjZUluZm9SZXF1ZXN0EgoKAmlkGAEgASgJIlAKGEdldFdvcmtzcGFjZUluZm9SZXNwb25zZRIlCgh2Y3NfaW5mbxgBIAEoCzITLnNlc3Npb24udjEuVkNTSW5mbxINCgVlcnJvchgCIAEoCSIpChtMaXN0V29ya3NwYWNlVGFyZ2V0c1JlcXVlc3QSCgoCaWQYASABKAkiZQocTGlzdFdvcmtzcGFjZVRhcmdldHNSZXNwb25zZRI2Cgd0YXJnZXRzGAEgASgLMiUuc2Vzc2lvbi52MS5BdmFpbGFibGVXb3Jrc3BhY2VUYXJnZXRzEg0KBWVycm9yGAIgASgJItEBChZTd2l0Y2hXb3Jrc3BhY2VSZXF1ZXN0EgoKAmlkGAEgASgJEjQKC3N3aXRjaF90eXBlGAIgASgOMh8uc2Vzc2lvbi52MS5Xb3Jrc3BhY2VTd2l0Y2hUeXBlEg4KBnRhcmdldBgDIAEoCRIzCg9jaGFuZ2Vfc3RyYXRlZ3kYBCABKA4yGi5zZXNzaW9uLnYxLkNoYW5nZVN0cmF0ZWd5EhkKEWNyZWF0ZV9pZl9taXNzaW5nGAUgASgIEhUKDWJhc2VfcmV2aXNpb24YBiABKAkifAoWUmVzb2x2ZUFwcHJvdmFsUmVxdWVzdBITCgthcHByb3ZhbF9pZBgBIAEoCRIQCghkZWNpc2lvbhgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQESGQoRb3ZlcnJpZGVfY2lfYmxvY2sYBCABKAhCCgoIX21lc3NhZ2UiOwoXUmVzb2x2ZUFwcHJvdmFsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJIkUKG0xpc3RQZW5kaW5nQXBwcm92YWxzUmVxdWVzdBIXCgpzZXNzaW9uX2lkGAEgASgJSACIAQFCDQoLX3Nlc3Npb25faWQiUwocTGlzdFBlbmRpbmdBcHByb3ZhbHNSZXNwb25zZRIzCglhcHByb3ZhbHMYASADKAsyIC5zZXNzaW9uLnYxLlBlbmRpbmdBcHByb3ZhbFByb3RvItYBChdTd2l0Y2hXb3Jrc3BhY2VSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkSGQoRcHJldmlvdXNfcmV2aXNpb24YAyABKAkSGAoQY3VycmVudF9yZXZpc2lvbhgEIAEoCRIlCgh2Y3NfdHlwZRgFIAEoDjITLnNlc3Npb24udjEuVkNTVHlwZRIXCg9jaGFuZ2VzX2hhbmRsZWQYBiABKAkSJAoHc2Vzc2lvbhgHIAEoCzITLnNlc3Npb24udjEuU2Vzc2lvbiJeChpDcmVhdGVEZWJ1Z1NuYXBzaG90UmVxdWVzdBIRCgRub3RlGAEgASgJSACIAQESFgoJbG9nX2xpbmVzGAIgASgFSAGIAQFCBwoFX25vdGVCDAoKX2xvZ19saW5lcyJtChtDcmVhdGVEZWJ1Z1NuYXBzaG90UmVzcG9uc2USEQoJZmlsZV9wYXRoGAEgASgJEg8KB3N1bW1hcnkYAiABKAkSEQoJdGltZXN0YW1wGAMgASgJEhcKD2ZpbGVfc2l6ZV9ieXRlcxgEIAEoAyK/BAoZTm90aWZpY2F0aW9uSGlzdG9yeVJlY29yZBIKCgJpZBgBIAEoCRISCgpzZXNzaW9uX2lkGAIgASgJEhQKDHNlc3Npb25fbmFtZRgDIAEoCRI3ChFub3RpZmljYXRpb25fdHlwZRgEIAEoDjIcLnNlc3Npb24udjEuTm90aWZpY2F0aW9uVHlwZRIyCghwcmlvcml0eRgFIAEoDjIgLnNlc3Npb24udjEuTm90aWZpY2F0aW9uUHJpb3JpdHkSDQoFdGl0bGUYBiABKAkSDwoHbWVzc2FnZRgHIAEoCRJFCghtZXRhZGF0YRgIIAMoCzIzLnNlc3Npb24udjEuTm90aWZpY2F0aW9uSGlzdG9yeVJlY29yZC5NZXRhZGF0YUVudHJ5Ei4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg8KB2lzX3JlYWQYCiABKAgSMAoHcmVhZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIYChBvY2N1cnJlbmNlX2NvdW50GAwgASgFEjkKEGxhc3Rfb2NjdXJyZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQEaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgoKCF9yZWFkX2F0QhMKEV9sYXN0X29jY3VycmVkX2F0IvcBCh1HZXROb3RpZmljYXRpb25IaXN0b3J5UmVxdWVzdBISCgVsaW1pdBgBIAEoBUgAiAEBEhMKBm9mZnNldBgCIAEoBUgBiAEBEjYKC3R5cGVfZmlsdGVyGAMgASgOMhwuc2Vzc2lvbi52MS5Ob3RpZmljYXRpb25UeXBlSAKIAQESFwoKc2Vzc2lvbl9pZBgEIAEoCUgDiAEBEhgKC3VucmVhZF9vbmx5GAUgASgISASIAQFCCAoGX2xpbWl0QgkKB19vZmZzZXRCDgoMX3R5cGVfZmlsdGVyQg0KC19zZXNzaW9uX2lkQg4KDF91bnJlYWRfb25seSKbAQoeR2V0Tm90aWZpY2F0aW9uSGlzdG9yeVJlc3BvbnNlEjwKDW5vdGlmaWNhdGlvbnMYASADKAsyJS5zZXNzaW9uLnYxLk5vdGlmaWNhdGlvbkhpc3RvcnlSZWNvcmQSEwoLdG90YWxfY291bnQYAiABKAUSFAoMdW5yZWFkX2NvdW50GAMgASgFEhAKCGhhc19tb3JlGAQgASgIIjcKG01hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIYChBub3RpZmljYXRpb25faWRzGAEgAygJIkUKHE1hcmtOb3RpZmljYXRpb25SZWFkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIUCgxtYXJrZWRfY291bnQYAiABKAUiVQofQ2xlYXJOb3RpZmljYXRpb25IaXN0b3J5UmVxdWVzdBIdChBiZWZvcmVfdGltZXN0YW1wGAEgASgJSACIAQFCEwoRX2JlZm9yZV90aW1lc3RhbXAiSgogQ2xlYXJOb3RpZmljYXRpb25IaXN0b3J5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIVCg1jbGVhcmVkX2NvdW50GAIgASgFIkgKGExpc3RBcHByb3ZhbFJ1bGVzUmVxdWVzdBIaCg1zb3VyY2VfZmlsdGVyGAEgASgJSACIAQFCEAoOX3NvdXJjZV9maWx0ZXIiSQoZTGlzdEFwcHJvdmFsUnVsZXNSZXNwb25zZRIsCgVydWxlcxgBIAMoCzIdLnNlc3Npb24udjEuQXBwcm92YWxSdWxlUHJvdG8iSAoZVXBzZXJ0QXBwcm92YWxSdWxlUmVxdWVzdBIrCgRydWxlGAEgASgLMh0uc2Vzc2lvbi52MS5BcHByb3ZhbFJ1bGVQcm90byJaChpVcHNlcnRBcHByb3ZhbFJ1bGVSZXNwb25zZRIrCgRydWxlGAEgASgLMh0uc2Vzc2lvbi52MS5BcHByb3ZhbFJ1bGVQcm90bxIPCgdjcmVhdGVkGAIgASgIIicKGURlbGV0ZUFwcHJvdmFsUnVsZVJlcXVlc3QSCgoCaWQYASABKAkiPgoaRGVsZXRlQXBwcm92YWxSdWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJIkcKG0dldEFwcHJvdmFsQW5hbHl0aWNzUmVxdWVzdBIYCgt3aW5kb3dfZGF5cxgBIAEoBUgAiAEBQg4KDF93aW5kb3dfZGF5cyKHAQocR2V0QXBwcm92YWxBbmFseXRpY3NSZXNwb25zZRIyCgdzdW1tYXJ5GAEgASgLMiEuc2Vzc2lvbi52MS5BbmFseXRpY3NTdW1tYXJ5UHJvdG8SMwoNZGFpbHlfYnVja2V0cxgCIAMoCzIcLnNlc3Npb24udjEuRGFpbHlCdWNrZXRQcm90byJXChpHZXRQcm9ncmFtQW5hbHl0aWNzUmVxdWVzdBIPCgdwcm9ncmFtGAEgASgJEhgKC3dpbmRvd19kYXlzGAIgASgFSACIAQFCDgoMX3dpbmRvd19kYXlzIsEBChtHZXRQcm9ncmFtQW5hbHl0aWNzUmVzcG9uc2USDwoHcHJvZ3JhbRgBIAEoCRIQCghjYXRlZ29yeRgCIAEoCRI5CgtzdWJjb21tYW5kcxgDIAMoCzIkLnNlc3Npb24udjEuU3ViY29tbWFuZEJyZWFrZG93blByb3RvEhcKD3JlY2VudF9leGFtcGxlcxgEIAMoCRIrCgV0cmVuZBgFIAMoCzIcLnNlc3Npb24udjEuRGFpbHlCdWNrZXRQcm90byIWChRMaXN0RGF0YWJhc2VzUmVxdWVzdCJiChVMaXN0RGF0YWJhc2VzUmVzcG9uc2USKwoJZGF0YWJhc2VzGAEgAygLMhguc2Vzc2lvbi52MS5EYXRhYmFzZUluZm8SHAoUY3VycmVudF93b3Jrc3BhY2VfaWQYAiABKAkiGwoZR2V0Q3VycmVudERhdGFiYXNlUmVxdWVzdCJIChpHZXRDdXJyZW50RGF0YWJhc2VSZXNwb25zZRIqCghkYXRhYmFzZRgBIAEoCzIYLnNlc3Npb24udjEuRGF0YWJhc2VJbmZvIisKFVN3aXRjaERhdGFiYXNlUmVxdWVzdBISCgpjb25maWdfZGlyGAEgASgJIjoKFlN3aXRjaERhdGFiYXNlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJIioKFE1lcmdlRGF0YWJhc2VSZXF1ZXN0EhIKCmNvbmZpZ19kaXIYASABKAkibgoVTWVyZ2VEYXRhYmFzZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIZChFzZXNzaW9uc19pbXBvcnRlZBgDIAEoBRIYChBzZXNzaW9uc19za2lwcGVkGAQgASgFIjwKF0NyZWF0ZUNoZWNrcG9pbnRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDQoFbGFiZWwYAiABKAkiSwoYQ3JlYXRlQ2hlY2twb2ludFJlc3BvbnNlEi8KCmNoZWNrcG9pbnQYASABKAsyGy5zZXNzaW9uLnYxLkNoZWNrcG9pbnRQcm90byIsChZMaXN0Q2hlY2twb2ludHNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiSwoXTGlzdENoZWNrcG9pbnRzUmVzcG9uc2USMAoLY2hlY2twb2ludHMYASADKAsyGy5zZXNzaW9uLnYxLkNoZWNrcG9pbnRQcm90byJSChJGb3JrU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIVCg1jaGVja3BvaW50X2lkGAIgASgJEhEKCW5ld190aXRsZRgDIAEoCSI7ChNGb3JrU2Vzc2lvblJlc3BvbnNlEiQKB3Nlc3Npb24YASABKAsyEy5zZXNzaW9uLnYxLlNlc3Npb24iTQoQTGlzdEZpbGVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHBhdGgYAiABKAkSFwoPaW5jbHVkZV9pZ25vcmVkGAMgASgIInMKEUxpc3RGaWxlc1Jlc3BvbnNlEiMKBWZpbGVzGAEgAygLMhQuc2Vzc2lvbi52MS5GaWxlTm9kZRIRCgliYXNlX3BhdGgYAiABKAkSEQoJdHJ1bmNhdGVkGAMgASgIEhMKC3RvdGFsX2NvdW50GAQgASgFIjkKFUdldEZpbGVDb250ZW50UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHBhdGgYAiABKAkiiAEKFkdldEZpbGVDb250ZW50UmVzcG9uc2USDwoHY29udGVudBgBIAEoCRIQCghlbmNvZGluZxgCIAEoCRIRCglpc19iaW5hcnkYAyABKAgSDAoEc2l6ZRgEIAEoAxIUCgxjb250ZW50X3R5cGUYBSABKAkSFAoMaXNfdHJ1bmNhdGVkGAYgASgIImUKElNlYXJjaEZpbGVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg0KBXF1ZXJ5GAIgASgJEhcKD2luY2x1ZGVfaWdub3JlZBgDIAEoCBITCgttYXhfcmVzdWx0cxgEIAEoBSJkChNTZWFyY2hGaWxlc1Jlc3BvbnNlEiMKBWZpbGVzGAEgAygLMhQuc2Vzc2lvbi52MS5GaWxlTm9kZRIRCgl0cnVuY2F0ZWQYAiABKAgSFQoNdG90YWxfbWF0Y2hlcxgDIAEoBSJgChpMaXN0UGF0aENvbXBsZXRpb25zUmVxdWVzdBITCgtwYXRoX3ByZWZpeBgBIAEoCRITCgttYXhfcmVzdWx0cxgCIAEoBRIYChBkaXJlY3Rvcmllc19vbmx5GAMgASgIIpgBChtMaXN0UGF0aENvbXBsZXRpb25zUmVzcG9uc2USJgoHZW50cmllcxgBIAMoCzIVLnNlc3Npb24udjEuUGF0aEVudHJ5EhAKCGJhc2VfZGlyGAIgASgJEhEKCXRydW5jYXRlZBgDIAEoCBIXCg9iYXNlX2Rpcl9leGlzdHMYBCABKAgSEwoLcGF0aF9leGlzdHMYBSABKAgiPQoJUGF0aEVudHJ5EgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIUCgxpc19kaXJlY3RvcnkYAyABKAgizgIKFFByb2ZpbGVEZWZhdWx0c1Byb3RvEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSDwoHcHJvZ3JhbRgDIAEoCRIQCghhdXRvX3llcxgEIAEoCBIMCgR0YWdzGAUgAygJEj8KCGVudl92YXJzGAYgAygLMi0uc2Vzc2lvbi52MS5Qcm9maWxlRGVmYXVsdHNQcm90by5FbnZWYXJzRW50cnkSEQoJY2xpX2ZsYWdzGAcgASgJEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGi4KDEVudlZhcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBImgKEkRpcmVjdG9yeVJ1bGVQcm90bxIMCgRwYXRoGAEgASgJEg8KB3Byb2ZpbGUYAiABKAkSMwoJb3ZlcnJpZGVzGAMgASgLMiAuc2Vzc2lvbi52MS5Qcm9maWxlRGVmYXVsdHNQcm90byKjBAoVU2Vzc2lvbkRlZmF1bHRzQ29uZmlnEg8KB3Byb2dyYW0YASABKAkSEAoIYXV0b195ZXMYAiABKAgSDAoEdGFncxgDIAMoCRJACghlbnZfdmFycxgEIAMoCzIuLnNlc3Npb24udjEuU2Vzc2lvbkRlZmF1bHRzQ29uZmlnLkVudlZhcnNFbnRyeRIRCgljbGlfZmxhZ3MYBSABKAkSQQoIcHJvZmlsZXMYBiADKAsyLy5zZXNzaW9uLnYxLlNlc3Npb25EZWZhdWx0c0NvbmZpZy5Qcm9maWxlc0VudHJ5EjcKD2RpcmVjdG9yeV9ydWxlcxgHIAMoCzIeLnNlc3Npb24udjEuRGlyZWN0b3J5UnVsZVByb3RvEhgKEG9uZV9vZmZfYmFzZV9kaXIYCCABKAkSHAoUbmV3X3Byb2plY3RfYmFzZV9kaXIYCSABKAkSIgoabWF4X2F1dG9fcmV3b3JrX2l0ZXJhdGlvbnMYCiABKAUSKQohbWF4X2NvbmN1cnJlbnRfYmFja2xvZ193b3JrX2l0ZW1zGAsgASgFGi4KDEVudlZhcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGlEKDVByb2ZpbGVzRW50cnkSCwoDa2V5GAEgASgJEi8KBXZhbHVlGAIgASgLMiAuc2Vzc2lvbi52MS5Qcm9maWxlRGVmYXVsdHNQcm90bzoCOAEiGwoZR2V0U2Vzc2lvbkRlZmF1bHRzUmVxdWVzdCJRChpHZXRTZXNzaW9uRGVmYXVsdHNSZXNwb25zZRIzCghkZWZhdWx0cxgBIAEoCzIhLnNlc3Npb24udjEuU2Vzc2lvbkRlZmF1bHRzQ29uZmlnImUKHVByZXZpZXdEZXN0aW5hdGlvblBhdGhSZXF1ZXN0Eg0KBWlucHV0GAEgASgJEgwKBG1vZGUYAiABKAkSEQoJcmVwb19wYXRoGAMgASgJEhQKDHNlc3Npb25fbmFtZRgEIAEoCSJbCh5QcmV2aWV3RGVzdGluYXRpb25QYXRoUmVzcG9uc2USDAoEcGF0aBgBIAEoCRIQCghpc19leGFjdBgCIAEoCBIZChF1bnJlc29sdmVkX3JlYXNvbhgDIAEoCSJDChZSZXNvbHZlRGVmYXVsdHNSZXF1ZXN0EhMKC3dvcmtpbmdfZGlyGAEgASgJEhQKDHByb2ZpbGVfbmFtZRgCIAEoCSKvAgoXUmVzb2x2ZURlZmF1bHRzUmVzcG9uc2USDwoHcHJvZ3JhbRgBIAEoCRIQCghhdXRvX3llcxgCIAEoCBIMCgR0YWdzGAMgAygJEkIKCGVudl92YXJzGAQgAygLMjAuc2Vzc2lvbi52MS5SZXNvbHZlRGVmYXVsdHNSZXNwb25zZS5FbnZWYXJzRW50cnkSEQoJY2xpX2ZsYWdzGAUgASgJEhMKC3VzZWRfZ2xvYmFsGAYgASgIEhYKDnVzZWRfZGlyZWN0b3J5GAcgASgIEhQKDHVzZWRfcHJvZmlsZRgIIAEoCBIZChFtYXRjaGVkX2RpcmVjdG9yeRgJIAEoCRouCgxFbnZWYXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLgAgobVXBkYXRlR2xvYmFsRGVmYXVsdHNSZXF1ZXN0Eg8KB3Byb2dyYW0YASABKAkSEAoIYXV0b195ZXMYAiABKAgSDAoEdGFncxgDIAMoCRJGCghlbnZfdmFycxgEIAMoCzI0LnNlc3Npb24udjEuVXBkYXRlR2xvYmFsRGVmYXVsdHNSZXF1ZXN0LkVudlZhcnNFbnRyeRIRCgljbGlfZmxhZ3MYBSABKAkSGAoQb25lX29mZl9iYXNlX2RpchgGIAEoCRIcChRuZXdfcHJvamVjdF9iYXNlX2RpchgHIAEoCRIiChptYXhfYXV0b19yZXdvcmtfaXRlcmF0aW9ucxgIIAEoBRIpCiFtYXhfY29uY3VycmVudF9iYWNrbG9nX3dvcmtfaXRlbXMYCSABKAUaLgoMRW52VmFyc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiUwocVXBkYXRlR2xvYmFsRGVmYXVsdHNSZXNwb25zZRIzCghkZWZhdWx0cxgBIAEoCzIhLnNlc3Npb24udjEuU2Vzc2lvbkRlZmF1bHRzQ29uZmlnIkkKFFVwc2VydFByb2ZpbGVSZXF1ZXN0EjEKB3Byb2ZpbGUYASABKAsyIC5zZXNzaW9uLnYxLlByb2ZpbGVEZWZhdWx0c1Byb3RvIkoKFVVwc2VydFByb2ZpbGVSZXNwb25zZRIxCgdwcm9maWxlGAEgASgLMiAuc2Vzc2lvbi52MS5Qcm9maWxlRGVmYXVsdHNQcm90byIkChREZWxldGVQcm9maWxlUmVxdWVzdBIMCgRuYW1lGAEgASgJIhcKFURlbGV0ZVByb2ZpbGVSZXNwb25zZSJKChpVcHNlcnREaXJlY3RvcnlSdWxlUmVxdWVzdBIsCgRydWxlGAEgASgLMh4uc2Vzc2lvbi52MS5EaXJlY3RvcnlSdWxlUHJvdG8iSwobVXBzZXJ0RGlyZWN0b3J5UnVsZVJlc3BvbnNlEiwKBHJ1bGUYASABKAsyHi5zZXNzaW9uLnYxLkRpcmVjdG9yeVJ1bGVQcm90byIqChpEZWxldGVEaXJlY3RvcnlSdWxlUmVxdWVzdBIMCgRwYXRoGAEgASgJIh0KG0RlbGV0ZURpcmVjdG9yeVJ1bGVSZXNwb25zZSLMAgoKQWxpYXNQcm90bxIMCgRuYW1lGAEgASgJEg0KBWdyb3VwGAIgASgJEgwKBHBhdGgYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSDwoHcHJvZmlsZRgFIAEoCRIPCgdwcm9ncmFtGAYgASgJEhAKCGF1dG9feWVzGAcgASgIEgwKBHRhZ3MYCCADKAkSNQoIZW52X3ZhcnMYCSADKAsyIy5zZXNzaW9uLnYxLkFsaWFzUHJvdG8uRW52VmFyc0VudHJ5EhEKCWNsaV9mbGFncxgKIAEoCRItCgxzZXNzaW9uX3R5cGUYCyABKA4yFy5zZXNzaW9uLnYxLlNlc3Npb25UeXBlEhMKC25hbWVfcHJlZml4GAwgASgJGi4KDEVudlZhcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIhQKEkxpc3RBbGlhc2VzUmVxdWVzdCI+ChNMaXN0QWxpYXNlc1Jlc3BvbnNlEicKB2FsaWFzZXMYASADKAsyFi5zZXNzaW9uLnYxLkFsaWFzUHJvdG8iOwoSVXBzZXJ0QWxpYXNSZXF1ZXN0EiUKBWFsaWFzGAEgASgLMhYuc2Vzc2lvbi52MS5BbGlhc1Byb3RvIjwKE1Vwc2VydEFsaWFzUmVzcG9uc2USJQoFYWxpYXMYASABKAsyFi5zZXNzaW9uLnYxLkFsaWFzUHJvdG8iIgoSRGVsZXRlQWxpYXNSZXF1ZXN0EgwKBG5hbWUYASABKAkiFQoTRGVsZXRlQWxpYXNSZXNwb25zZSIpChRMaXN0V29ya3RyZWVzUmVxdWVzdBIRCglyZXBvX3BhdGgYASABKAkiPgoNV29ya3RyZWVFbnRyeRIMCgRwYXRoGAEgASgJEg4KBmJyYW5jaBgCIAEoCRIPCgdpc19tYWluGAMgASgIIkUKFUxpc3RXb3JrdHJlZXNSZXNwb25zZRIsCgl3b3JrdHJlZXMYASADKAsyGS5zZXNzaW9uLnYxLldvcmt0cmVlRW50cnkisAEKElByb21wdEhpc3RvcnlFbnRyeRIKCgJpZBgBIAEoCRIMCgR0ZXh0GAIgASgJEg0KBWxhYmVsGAMgASgJEhIKCnVzZWRfY291bnQYBCABKAUSLQoJbGFzdF91c2VkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpjcmVhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIpChhMaXN0UHJvbXB0SGlzdG9yeVJlcXVlc3QSDQoFbGltaXQYASABKAUiTAoZTGlzdFByb21wdEhpc3RvcnlSZXNwb25zZRIvCgdlbnRyaWVzGAEgAygLMh4uc2Vzc2lvbi52MS5Qcm9tcHRIaXN0b3J5RW50cnkiKAoaRGVsZXRlUHJvbXB0SGlzdG9yeVJlcXVlc3QSCgoCaWQYASABKAkiHQobRGVsZXRlUHJvbXB0SGlzdG9yeVJlc3BvbnNlIvUBChNCYXRjaFNlc3Npb25SZXF1ZXN0Eg0KBXRpdGxlGAEgASgJEgwKBHBhdGgYAiABKAkSEwoLd29ya2luZ19kaXIYAyABKAkSDgoGYnJhbmNoGAQgASgJEg8KB3Byb2dyYW0YBSABKAkSEAoIY2F0ZWdvcnkYBiABKAkSFgoOaW5pdGlhbF9wcm9tcHQYByABKAkSEAoIYXV0b195ZXMYCCABKAgSLQoMc2Vzc2lvbl90eXBlGAkgASgOMhcuc2Vzc2lvbi52MS5TZXNzaW9uVHlwZRISCgpwcm9qZWN0X2lkGAogASgJEgwKBHRhZ3MYCyADKAkiVgoRQmF0Y2hDcmVhdGVSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBISCgpzZXNzaW9uX2lkGAIgASgJEg0KBWVycm9yGAMgASgJEg0KBXRpdGxlGAQgASgJImgKGkJhdGNoQ3JlYXRlU2Vzc2lvbnNSZXF1ZXN0EjEKCHNlc3Npb25zGAEgAygLMh8uc2Vzc2lvbi52MS5CYXRjaFNlc3Npb25SZXF1ZXN0EhcKD21heF9jb25jdXJyZW5jeRgCIAEoBSJwChtCYXRjaENyZWF0ZVNlc3Npb25zUmVzcG9uc2USLgoHcmVzdWx0cxgBIAMoCzIdLnNlc3Npb24udjEuQmF0Y2hDcmVhdGVSZXN1bHQSEQoJc3VjY2VlZGVkGAIgASgFEg4KBmZhaWxlZBgDIAEoBSJQChFSdW5PbmVTaG90UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg4KBnByb21wdBgCIAEoCRIXCg90aW1lb3V0X3NlY29uZHMYAyABKAUieQoSUnVuT25lU2hvdFJlc3BvbnNlEg4KBm91dHB1dBgBIAEoCRINCgVlcnJvchgCIAEoCRIRCglleGl0X2NvZGUYAyABKAUSDgoGcHJfdXJsGAQgASgJEiEKGWJyYW5jaF9kaXZlcmdlZF9mcm9tX2Jhc2UYBSABKAgi+gEKB1Byb2plY3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1zZXNzaW9uX2NvdW50GAYgASgFEhUKDXJ1bm5pbmdfY291bnQYByABKAUSFgoOY29tcGxldGVfY291bnQYCCABKAUSGgoScmV2aWV3X3JlYWR5X2NvdW50GAkgASgFIjkKFENyZWF0ZVByb2plY3RSZXF1ZXN0EgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkiPQoVQ3JlYXRlUHJvamVjdFJlc3BvbnNlEiQKB3Byb2plY3QYASABKAsyEy5zZXNzaW9uLnYxLlByb2plY3QiFQoTTGlzdFByb2plY3RzUmVxdWVzdCI9ChRMaXN0UHJvamVjdHNSZXNwb25zZRIlCghwcm9qZWN0cxgBIAMoCzITLnNlc3Npb24udjEuUHJvamVjdCJFChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJIj0KFVVwZGF0ZVByb2plY3RSZXNwb25zZRIkCgdwcm9qZWN0GAEgASgLMhMuc2Vzc2lvbi52MS5Qcm9qZWN0IiIKFERlbGV0ZVByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIigKFURlbGV0ZVByb2plY3RSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkkKHkFzc2lnblNlc3Npb25zVG9Qcm9qZWN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKC3Nlc3Npb25faWRzGAIgAygJIjgKH0Fzc2lnblNlc3Npb25zVG9Qcm9qZWN0UmVzcG9uc2USFQoNdXBkYXRlZF9jb3VudBgBIAEoBSJlChNMaXN0QnJhbmNoZXNSZXF1ZXN0EhEKCXJlcG9fcGF0aBgBIAEoCRIOCgZmaWx0ZXIYAiABKAkSEwoLbWF4X3Jlc3VsdHMYAyABKAUSFgoOaW5jbHVkZV9yZW1vdGUYBCABKAgiUAoUTGlzdEJyYW5jaGVzUmVzcG9uc2USEAoIYnJhbmNoZXMYASADKAkSEwoLdG90YWxfY291bnQYAiABKAUSEQoJdHJ1bmNhdGVkGAMgASgIIkYKGkdldFRlcm1pbmFsU25hcHNob3RSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSFAoMbGFzdF9uX2xpbmVzGAIgASgFIkAKG0dldFRlcm1pbmFsU25hcHNob3RSZXNwb25zZRIPCgdjb250ZW50GAEgASgJEhAKCGlzX2VtcHR5GAIgASgIIk8KFVdyaXRlVG9TZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg0KBWlucHV0GAIgASgJEhMKC3ByZXNzX2VudGVyGAMgASgIIikKFldyaXRlVG9TZXNzaW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJ4Cg5DbGllbnRMb2dFbnRyeRINCgVsZXZlbBgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhEKCXRpbWVzdGFtcBgDIAEoCRILCgN1cmwYBCABKAkSEgoKdXNlcl9hZ2VudBgFIAEoCRISCgpzZXNzaW9uX2lkGAYgASgJIkUKFkxvZ0NsaWVudEV2ZW50c1JlcXVlc3QSKwoHZW50cmllcxgBIAMoCzIaLnNlc3Npb24udjEuQ2xpZW50TG9nRW50cnkiGQoXTG9nQ2xpZW50RXZlbnRzUmVzcG9uc2UiMQoRTGlzdEVycm9yc1JlcXVlc3QSHAoUaW5jbHVkZV9hY2tub3dsZWRnZWQYASABKAgihwIKEEVycm9yRXZlbnRSZWNvcmQSEwoLZmluZ2VycHJpbnQYASABKAkSEgoKZXJyb3JfdHlwZRgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhMKC3N0YWNrX3RyYWNlGAQgASgJEhUKDXJwY19wcm9jZWR1cmUYBSABKAkSGAoQb2NjdXJyZW5jZV9jb3VudBgGIAEoBRIuCgpmaXJzdF9zZWVuGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglsYXN0X3NlZW4YCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDGFja25vd2xlZGdlZBgJIAEoCCJCChJMaXN0RXJyb3JzUmVzcG9uc2USLAoGZXJyb3JzGAEgAygLMhwuc2Vzc2lvbi52MS5FcnJvckV2ZW50UmVjb3JkIi4KF0Fja25vd2xlZGdlRXJyb3JSZXF1ZXN0EhMKC2ZpbmdlcnByaW50GAEgASgJIhoKGEFja25vd2xlZGdlRXJyb3JSZXNwb25zZSIrCh1DbGVhckNvbnZlcnNhdGlvblN0YXRlUmVxdWVzdBIKCgJpZBgBIAEoCSJCCh5DbGVhckNvbnZlcnNhdGlvblN0YXRlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJIlgKC0ZlYXR1cmVGbGFnEgwKBG5hbWUYASABKAkSDwoHZW5hYmxlZBgCIAEoCBITCgtkZXNjcmlwdGlvbhgDIAEoCRIVCg1zdGF0dXNfZGV0YWlsGAQgASgJIhgKFkdldEZlYXR1cmVGbGFnc1JlcXVlc3QiQQoXR2V0RmVhdHVyZUZsYWdzUmVzcG9uc2USJgoFZmxhZ3MYASADKAsyFy5zZXNzaW9uLnYxLkZlYXR1cmVGbGFnIhYKFEdldEhvb2tTdGF0dXNSZXF1ZXN0IosBChVHZXRIb29rU3RhdHVzUmVzcG9uc2USFwoPcnVsZXNfaW5zdGFsbGVkGAEgASgIEh8KF25vdGlmaWNhdGlvbnNfaW5zdGFsbGVkGAIgASgIEhcKD3J1bGVzX2F2YWlsYWJsZRgDIAEoCBIfChdub3RpZmljYXRpb25zX2F2YWlsYWJsZRgEIAEoCCJLChNJbnN0YWxsSG9va3NSZXF1ZXN0EhUKDWluc3RhbGxfcnVsZXMYASABKAgSHQoVaW5zdGFsbF9ub3RpZmljYXRpb25zGAIgASgIIlsKFEluc3RhbGxIb29rc1Jlc3BvbnNlEjEKBnN0YXR1cxgBIAEoCzIhLnNlc3Npb24udjEuR2V0SG9va1N0YXR1c1Jlc3BvbnNlEhAKCG1lc3NhZ2VzGAIgAygJIjkKGFVwZGF0ZUZlYXR1cmVGbGFnUmVxdWVzdBIMCgRuYW1lGAEgASgJEg8KB2VuYWJsZWQYAiABKAgiQgoZVXBkYXRlRmVhdHVyZUZsYWdSZXNwb25zZRIlCgRmbGFnGAEgASgLMhcuc2Vzc2lvbi52MS5GZWF0dXJlRmxhZyKaAgoQRXNjYXBlRXZlbnRQcm90bxIKCgJpZBgBIAEoCRISCgpzZXNzaW9uX2lkGAIgASgJEg0KBXN0YWdlGAMgASgJEhUKDXNlcXVlbmNlX3R5cGUYBCABKAkSGAoQc2VxdWVuY2Vfc3VidHlwZRgFIAEoCRITCgtieXRlX2xlbmd0aBgGIAEoBRIUCgxwYXlsb2FkX2hhc2gYByABKAkSEQoJcmF3X2J5dGVzGAggASgMEg8KB21hbmdsZWQYCSABKAgSEwoLbWFuZ2xlX3R5cGUYCiABKAkSLQoJd2FsbF90aW1lGAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtzZXNzaW9uX3NlcRgMIAEoAyLyAQobUXVlcnlFc2NhcGVBbmFseXRpY3NSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDQoFc3RhZ2UYAiABKAkSFQoNc2VxdWVuY2VfdHlwZRgDIAEoCRIUCgxtYW5nbGVkX29ubHkYBCABKAgSLgoKc3RhcnRfdGltZRgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIZW5kX3RpbWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKCXBhZ2Vfc2l6ZRgHIAEoBRISCgpwYWdlX3Rva2VuGAggASgJInoKHFF1ZXJ5RXNjYXBlQW5hbHl0aWNzUmVzcG9uc2USLAoGZXZlbnRzGAEgAygLMhwuc2Vzc2lvbi52MS5Fc2NhcGVFdmVudFByb3RvEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRITCgt0b3RhbF9jb3VudBgDIAEoBSJSChNFc2NhcGVTZXF1ZW5jZUNvdW50EhUKDXNlcXVlbmNlX3R5cGUYASABKAkSDQoFY291bnQYAiABKAMSFQoNbWFuZ2xlZF9jb3VudBgDIAEoAyKUAQogR2V0RXNjYXBlQW5hbHl0aWNzU3VtbWFyeVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIuCgpzdGFydF90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAinAEKIUdldEVzY2FwZUFuYWx5dGljc1N1bW1hcnlSZXNwb25zZRIyCgloaXN0b2dyYW0YASADKAsyHy5zZXNzaW9uLnYxLkVzY2FwZVNlcXVlbmNlQ291bnQSFwoPdG90YWxfc2VxdWVuY2VzGAIgASgDEhUKDXRvdGFsX21hbmdsZWQYAyABKAMSEwoLbWFuZ2xlX3JhdGUYBCABKAEirAEKJkdldEVzY2FwZUFuYWx5dGljc0dsb2JhbFN1bW1hcnlSZXF1ZXN0EjMKCnN0YXJ0X3RpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESMQoIZW5kX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQFCDQoLX3N0YXJ0X3RpbWVCCwoJX2VuZF90aW1lItkBCidHZXRFc2NhcGVBbmFseXRpY3NHbG9iYWxTdW1tYXJ5UmVzcG9uc2USMgoJaGlzdG9ncmFtGAEgAygLMh8uc2Vzc2lvbi52MS5Fc2NhcGVTZXF1ZW5jZUNvdW50EhcKD3RvdGFsX3NlcXVlbmNlcxgCIAEoAxIVCg10b3RhbF9tYW5nbGVkGAMgASgDEhMKC21hbmdsZV9yYXRlGAQgASgBEjUKC3Blcl9zZXNzaW9uGAUgAygLMiAuc2Vzc2lvbi52MS5TZXNzaW9uRXNjYXBlU3VtbWFyeSJvChRTZXNzaW9uRXNjYXBlU3VtbWFyeRISCgpzZXNzaW9uX2lkGAEgASgJEhcKD3RvdGFsX3NlcXVlbmNlcxgCIAEoAxIVCg10b3RhbF9tYW5nbGVkGAMgASgDEhMKC21hbmdsZV9yYXRlGAQgASgBIlsKEVNwYXduU2hlbGxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDAoEbmFtZRgCIAEoCRIPCgdjb21tYW5kGAMgASgJEhMKC3dvcmtpbmdfZGlyGAQgASgJIjYKElNwYXduU2hlbGxSZXNwb25zZRIgCgVzaGVsbBgBIAEoCzIRLnNlc3Npb24udjEuU2hlbGwiOAoQU3RvcFNoZWxsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEhAKCHNoZWxsX2lkGAIgASgJIjUKEVN0b3BTaGVsbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCSI7ChNSZXN0YXJ0U2hlbGxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEAoIc2hlbGxfaWQYAiABKAkiOAoUUmVzdGFydFNoZWxsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJIicKEUxpc3RTaGVsbHNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiNwoSTGlzdFNoZWxsc1Jlc3BvbnNlEiEKBnNoZWxscxgBIAMoCzIRLnNlc3Npb24udjEuU2hlbGwiOgoSRGVsZXRlU2hlbGxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEAoIc2hlbGxfaWQYAiABKAkiNwoTRGVsZXRlU2hlbGxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAki4AEKHEdlbmVyYXRlU3VnZ2VzdGVkUnVsZVJlcXVlc3QSLAoGc291cmNlGAEgASgOMhwuc2Vzc2lvbi52MS5TdWdnZXN0aW9uU291cmNlEhgKC3dpbmRvd19kYXlzGAIgASgFSACIAQESFgoOY29tbWFuZF9zYW1wbGUYAyABKAkSGQoRYW5hbHl0aWNzX2l0ZW1faWQYBCABKAkSGAoQdG9vbF9uYW1lX2ZpbHRlchgFIAEoCRIbChNwcm9ncmFtX25hbWVfZmlsdGVyGAYgASgJQg4KDF93aW5kb3dfZGF5cyJUCh1HZW5lcmF0ZVN1Z2dlc3RlZFJ1bGVSZXNwb25zZRIzCgtzdWdnZXN0aW9ucxgBIAMoCzIeLnNlc3Npb24udjEuU3VnZ2VzdGVkUnVsZVByb3RvIjUKF0hpYmVybmF0ZVNlc3Npb25SZXF1ZXN0EgoKAmlkGAEgASgJEg4KBnJlYXNvbhgCIAEoCSJAChhIaWJlcm5hdGVTZXNzaW9uUmVzcG9uc2USJAoHc2Vzc2lvbhgBIAEoCzITLnNlc3Npb24udjEuU2Vzc2lvbiIsCh5SZXN1bWVIaWJlcm5hdGVkU2Vzc2lvblJlcXVlc3QSCgoCaWQYASABKAkiRwofUmVzdW1lSGliZXJuYXRlZFNlc3Npb25SZXNwb25zZRIkCgdzZXNzaW9uGAEgASgLMhMuc2Vzc2lvbi52MS5TZXNzaW9uIikKG1Jlc3VtZUNyYXNoZWRTZXNzaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJEChxSZXN1bWVDcmFzaGVkU2Vzc2lvblJlc3BvbnNlEiQKB3Nlc3Npb24YASABKAsyEy5zZXNzaW9uLnYxLlNlc3Npb24iLAoUVmFsaWRhdGVSdWxlc1JlcXVlc3QSFAoMeWFtbF9jb250ZW50GAEgASgJInAKFVZhbGlkYXRlUnVsZXNSZXNwb25zZRItCgdyZXN1bHRzGAEgAygLMhwuc2Vzc2lvbi52MS5QYXJzZWRSdWxlUmVzdWx0EhMKC3ZhbGlkX2NvdW50GAIgASgFEhMKC2Vycm9yX2NvdW50GAMgASgFInUKEFBhcnNlZFJ1bGVSZXN1bHQSKwoEcnVsZRgBIAEoCzIdLnNlc3Npb24udjEuQXBwcm92YWxSdWxlUHJvdG8SDgoGZXJyb3JzGAIgAygJEg0KBXZhbGlkGAMgASgIEhUKDW9yaWdpbmFsX25hbWUYBCABKAkiJgoSRXhwb3J0UnVsZXNSZXF1ZXN0EhAKCHJ1bGVfaWRzGAEgAygJIisKE0V4cG9ydFJ1bGVzUmVzcG9uc2USFAoMeWFtbF9jb250ZW50GAEgASgJImQKFkJ1bGtVcHNlcnRSdWxlc1JlcXVlc3QSLAoFcnVsZXMYASADKAsyHS5zZXNzaW9uLnYxLkFwcHJvdmFsUnVsZVByb3RvEhwKFG92ZXJ3cml0ZV9kdXBsaWNhdGVzGAIgASgIIlwKF0J1bGtVcHNlcnRSdWxlc1Jlc3BvbnNlEg8KB2NyZWF0ZWQYASABKAUSDwoHdXBkYXRlZBgCIAEoBRIPCgdza2lwcGVkGAMgASgFEg4KBmVycm9ycxgEIAMoCSIbChlHZXRDb25maWdGaWxlUnVsZXNSZXF1ZXN0Il0KGkdldENvbmZpZ0ZpbGVSdWxlc1Jlc3BvbnNlEiwKBXJ1bGVzGAEgAygLMh0uc2Vzc2lvbi52MS5BcHByb3ZhbFJ1bGVQcm90bxIRCglmaWxlX3BhdGgYAiABKAkiXQocU2F2ZVJ1bGVzVG9Db25maWdGaWxlUmVxdWVzdBIQCghydWxlX2lkcxgBIAMoCRIrCgRydWxlGAIgASgLMh0uc2Vzc2lvbi52MS5BcHByb3ZhbFJ1bGVQcm90byIyCh1TYXZlUnVsZXNUb0NvbmZpZ0ZpbGVSZXNwb25zZRIRCglmaWxlX3BhdGgYASABKAkivwMKDVdvcmtmbG93UHJvdG8SCgoCaWQYASABKAkSDAoEc2x1ZxgCIAEoCRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEg8KB2NvbW1hbmQYBSABKAkSGAoQdGFyZ2V0X2RpcmVjdG9yeRgGIAEoCRIWCg5pbnB1dF90ZW1wbGF0ZRgHIAEoCRIUCgxzZXNzaW9uX3R5cGUYCCABKAkSDQoFbW9kZWwYCSABKAkSEgoKYWdlbnRfdHlwZRgKIAEoCRIXCg9jcm9uX2V4cHJlc3Npb24YCyABKAkSFAoMY3Jvbl9lbmFibGVkGAwgASgIEi4KCmNyZWF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhoKDWtlZXBfc2Vzc2lvbnMYDyABKAVIAIgBARIgChNhcmNoaXZlX2FmdGVyX2hvdXJzGBAgASgFSAGIAQFCEAoOX2tlZXBfc2Vzc2lvbnNCFgoUX2FyY2hpdmVfYWZ0ZXJfaG91cnMi2wIKFUNyZWF0ZVdvcmtmbG93UmVxdWVzdBIMCgRzbHVnGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDwoHY29tbWFuZBgEIAEoCRIYChB0YXJnZXRfZGlyZWN0b3J5GAUgASgJEhYKDmlucHV0X3RlbXBsYXRlGAYgASgJEhQKDHNlc3Npb25fdHlwZRgHIAEoCRINCgVtb2RlbBgIIAEoCRISCgphZ2VudF90eXBlGAkgASgJEhcKD2Nyb25fZXhwcmVzc2lvbhgKIAEoCRIUCgxjcm9uX2VuYWJsZWQYCyABKAgSGgoNa2VlcF9zZXNzaW9ucxgMIAEoBUgAiAEBEiAKE2FyY2hpdmVfYWZ0ZXJfaG91cnMYDSABKAVIAYgBAUIQCg5fa2VlcF9zZXNzaW9uc0IWChRfYXJjaGl2ZV9hZnRlcl9ob3VycyJFChZDcmVhdGVXb3JrZmxvd1Jlc3BvbnNlEisKCHdvcmtmbG93GAEgASgLMhkuc2Vzc2lvbi52MS5Xb3JrZmxvd1Byb3RvIqcEChVVcGRhdGVXb3JrZmxvd1JlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESFAoHY29tbWFuZBgEIAEoCUgCiAEBEh0KEHRhcmdldF9kaXJlY3RvcnkYBSABKAlIA4gBARIbCg5pbnB1dF90ZW1wbGF0ZRgGIAEoCUgEiAEBEhkKDHNlc3Npb25fdHlwZRgHIAEoCUgFiAEBEhIKBW1vZGVsGAggASgJSAaIAQESFwoKYWdlbnRfdHlwZRgJIAEoCUgHiAEBEhwKD2Nyb25fZXhwcmVzc2lvbhgKIAEoCUgIiAEBEhkKDGNyb25fZW5hYmxlZBgLIAEoCEgJiAEBEhoKDWtlZXBfc2Vzc2lvbnMYDCABKAVICogBARIgChNhcmNoaXZlX2FmdGVyX2hvdXJzGA0gASgFSAuIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgoKCF9jb21tYW5kQhMKEV90YXJnZXRfZGlyZWN0b3J5QhEKD19pbnB1dF90ZW1wbGF0ZUIPCg1fc2Vzc2lvbl90eXBlQggKBl9tb2RlbEINCgtfYWdlbnRfdHlwZUISChBfY3Jvbl9leHByZXNzaW9uQg8KDV9jcm9uX2VuYWJsZWRCEAoOX2tlZXBfc2Vzc2lvbnNCFgoUX2FyY2hpdmVfYWZ0ZXJfaG91cnMiRQoWVXBkYXRlV29ya2Zsb3dSZXNwb25zZRIrCgh3b3JrZmxvdxgBIAEoCzIZLnNlc3Npb24udjEuV29ya2Zsb3dQcm90byIjChVEZWxldGVXb3JrZmxvd1JlcXVlc3QSCgoCaWQYASABKAkiGAoWRGVsZXRlV29ya2Zsb3dSZXNwb25zZSIWChRMaXN0V29ya2Zsb3dzUmVxdWVzdCJFChVMaXN0V29ya2Zsb3dzUmVzcG9uc2USLAoJd29ya2Zsb3dzGAEgAygLMhkuc2Vzc2lvbi52MS5Xb3JrZmxvd1Byb3RvIi0KElJ1bldvcmtmbG93UmVxdWVzdBIKCgJpZBgBIAEoCRILCgNhcmcYAiABKAkiNAoYTGlzdFNsYXNoQ29tbWFuZHNSZXF1ZXN0EhgKEHRhcmdldF9kaXJlY3RvcnkYASABKAkiVAoQU2xhc2hDb21tYW5kSW5mbxIMCgRuYW1lGAEgASgJEg0KBXRpdGxlGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg4KBnNvdXJjZRgEIAEoCSJLChlMaXN0U2xhc2hDb21tYW5kc1Jlc3BvbnNlEi4KCGNvbW1hbmRzGAEgAygLMhwuc2Vzc2lvbi52MS5TbGFzaENvbW1hbmRJbmZvIikKE1J1bldvcmtmbG93UmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCSK4AQoTRGV0ZWN0aW9uRXZlbnRQcm90bxISCgpzZXNzaW9uX2lkGAEgASgJEi0KCXRpbWVzdGFtcBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoPbWF0Y2hlZF9wYXR0ZXJuGAMgASgJEhgKEG1hdGNoZWRfY2F0ZWdvcnkYBCABKAkSFQoNcmVzdWx0X3N0YXR1cxgFIAEoBRIUCgx0YWlsX3NuaXBwZXQYBiABKAkiPgoZR2V0RGV0ZWN0aW9uRXZlbnRzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg0KBWxpbWl0GAIgASgFIk0KGkdldERldGVjdGlvbkV2ZW50c1Jlc3BvbnNlEi8KBmV2ZW50cxgBIAMoCzIfLnNlc3Npb24udjEuRGV0ZWN0aW9uRXZlbnRQcm90byIrChVBcmNoaXZlU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSIYChZBcmNoaXZlU2Vzc2lvblJlc3BvbnNlIi0KF1VuYXJjaGl2ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiGgoYVW5hcmNoaXZlU2Vzc2lvblJlc3BvbnNlIjUKHkFyY2hpdmVXb3JrZmxvd1Nlc3Npb25zUmVxdWVzdBITCgt3b3JrZmxvd19pZBgBIAEoCSI5Ch9BcmNoaXZlV29ya2Zsb3dTZXNzaW9uc1Jlc3BvbnNlEhYKDmFyY2hpdmVkX2NvdW50GAEgASgFIjoKI0RlbGV0ZVdvcmtmbG93RmFpbGVkU2Vzc2lvbnNSZXF1ZXN0EhMKC3dvcmtmbG93X2lkGAEgASgJIj0KJERlbGV0ZVdvcmtmbG93RmFpbGVkU2Vzc2lvbnNSZXNwb25zZRIVCg1kZWxldGVkX2NvdW50GAEgASgFIi4KGEdldFByb3ZpZGVyTGltaXRzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIu4DChNQcm92aWRlckxpbWl0c1Byb3RvEhAKCHByb3ZpZGVyGAEgASgJEg0KBW1vZGVsGAIgASgJEhYKDnJlcXVlc3RzX2xpbWl0GAMgASgFEhoKEnJlcXVlc3RzX3JlbWFpbmluZxgEIAEoBRIyCg5yZXF1ZXN0c19yZXNldBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMdG9rZW5zX2xpbWl0GAYgASgFEhgKEHRva2Vuc19yZW1haW5pbmcYByABKAUSMAoMdG9rZW5zX3Jlc2V0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIbChNjb250ZXh0X3Rva2Vuc191c2VkGAkgASgFEhoKEmNvbnRleHRfdG9rZW5zX21heBgKIAEoBRIcChRzZXNzaW9uX2lucHV0X3Rva2VucxgLIAEoBRIdChVzZXNzaW9uX291dHB1dF90b2tlbnMYDCABKAUSGgoSZXN0aW1hdGVkX2Nvc3RfdXNkGA0gASgBEhEKCWF2YWlsYWJsZRgOIAEoCBIXCg9sYXN0X2Vycm9yX2NvZGUYDyABKAkSLgoKZmV0Y2hlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiTAoZR2V0UHJvdmlkZXJMaW1pdHNSZXNwb25zZRIvCgZsaW1pdHMYASABKAsyHy5zZXNzaW9uLnYxLlByb3ZpZGVyTGltaXRzUHJvdG8y5lYKDlNlc3Npb25TZXJ2aWNlElMKDExpc3RTZXNzaW9ucxIfLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVxdWVzdBogLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVzcG9uc2UiABJNCgpHZXRTZXNzaW9uEh0uc2Vzc2lvbi52MS5HZXRTZXNzaW9uUmVxdWVzdBoeLnNlc3Npb24udjEuR2V0U2Vzc2lvblJlc3BvbnNlIgASVgoNQ3JlYXRlU2Vzc2lvbhIgLnNlc3Npb24udjEuQ3JlYXRlU2Vzc2lvblJlcXVlc3QaIS5zZXNzaW9uLnYxLkNyZWF0ZVNlc3Npb25SZXNwb25zZSIAElYKDVVwZGF0ZVNlc3Npb24SIC5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25SZXF1ZXN0GiEuc2Vzc2lvbi52MS5VcGRhdGVTZXNzaW9uUmVzcG9uc2UiABJWCg1EZWxldGVTZXNzaW9uEiAuc2Vzc2lvbi52MS5EZWxldGVTZXNzaW9uUmVxdWVzdBohLnNlc3Npb24udjEuRGVsZXRlU2Vzc2lvblJlc3BvbnNlIgASTwoNV2F0Y2hTZXNzaW9ucxIgLnNlc3Npb24udjEuV2F0Y2hTZXNzaW9uc1JlcXVlc3QaGC5zZXNzaW9uLnYxLlNlc3Npb25FdmVudCIAMAESSgoOU3RyZWFtVGVybWluYWwSGC5zZXNzaW9uLnYxLlRlcm1pbmFsRGF0YRoYLnNlc3Npb24udjEuVGVybWluYWxEYXRhIgAoATABElkKDkdldFNlc3Npb25EaWZmEiEuc2Vzc2lvbi52MS5HZXRTZXNzaW9uRGlmZlJlcXVlc3QaIi5zZXNzaW9uLnYxLkdldFNlc3Npb25EaWZmUmVzcG9uc2UiABJTCgxHZXRWQ1NTdGF0dXMSHy5zZXNzaW9uLnYxLkdldFZDU1N0YXR1c1JlcXVlc3QaIC5zZXNzaW9uLnYxLkdldFZDU1N0YXR1c1Jlc3BvbnNlIgASWQoOR2V0UmV2aWV3UXVldWUSIS5zZXNzaW9uLnYxLkdldFJldmlld1F1ZXVlUmVxdWVzdBoiLnNlc3Npb24udjEuR2V0UmV2aWV3UXVldWVSZXNwb25zZSIAEmUKEkFja25vd2xlZGdlU2Vzc2lvbhIlLnNlc3Npb24udjEuQWNrbm93bGVkZ2VTZXNzaW9uUmVxdWVzdBomLnNlc3Npb24udjEuQWNrbm93bGVkZ2VTZXNzaW9uUmVzcG9uc2UiABJECgdHZXRMb2dzEhouc2Vzc2lvbi52MS5HZXRMb2dzUmVxdWVzdBobLnNlc3Npb24udjEuR2V0TG9nc1Jlc3BvbnNlIgASWQoQV2F0Y2hSZXZpZXdRdWV1ZRIjLnNlc3Npb24udjEuV2F0Y2hSZXZpZXdRdWV1ZVJlcXVlc3QaHC5zZXNzaW9uLnYxLlJldmlld1F1ZXVlRXZlbnQiADABEmUKEkxvZ1VzZXJJbnRlcmFjdGlvbhIlLnNlc3Npb24udjEuTG9nVXNlckludGVyYWN0aW9uUmVxdWVzdBomLnNlc3Npb24udjEuTG9nVXNlckludGVyYWN0aW9uUmVzcG9uc2UiABJcCg9HZXRDbGF1ZGVDb25maWcSIi5zZXNzaW9uLnYxLkdldENsYXVkZUNvbmZpZ1JlcXVlc3QaIy5zZXNzaW9uLnYxLkdldENsYXVkZUNvbmZpZ1Jlc3BvbnNlIgASYgoRTGlzdENsYXVkZUNvbmZpZ3MSJC5zZXNzaW9uLnYxLkxpc3RDbGF1ZGVDb25maWdzUmVxdWVzdBolLnNlc3Npb24udjEuTGlzdENsYXVkZUNvbmZpZ3NSZXNwb25zZSIAEmUKElVwZGF0ZUNsYXVkZUNvbmZpZxIlLnNlc3Npb24udjEuVXBkYXRlQ2xhdWRlQ29uZmlnUmVxdWVzdBomLnNlc3Npb24udjEuVXBkYXRlQ2xhdWRlQ29uZmlnUmVzcG9uc2UiABJiChFMaXN0Q2xhdWRlSGlzdG9yeRIkLnNlc3Npb24udjEuTGlzdENsYXVkZUhpc3RvcnlSZXF1ZXN0GiUuc2Vzc2lvbi52MS5MaXN0Q2xhdWRlSGlzdG9yeVJlc3BvbnNlIgAScQoWR2V0Q2xhdWRlSGlzdG9yeURldGFpbBIpLnNlc3Npb24udjEuR2V0Q2xhdWRlSGlzdG9yeURldGFpbFJlcXVlc3QaKi5zZXNzaW9uLnYxLkdldENsYXVkZUhpc3RvcnlEZXRhaWxSZXNwb25zZSIAEncKGEdldENsYXVkZUhpc3RvcnlNZXNzYWdlcxIrLnNlc3Npb24udjEuR2V0Q2xhdWRlSGlzdG9yeU1lc3NhZ2VzUmVxdWVzdBosLnNlc3Npb24udjEuR2V0Q2xhdWRlSGlzdG9yeU1lc3NhZ2VzUmVzcG9uc2UiABJoChNTZWFyY2hDbGF1ZGVIaXN0b3J5EiYuc2Vzc2lvbi52MS5TZWFyY2hDbGF1ZGVIaXN0b3J5UmVxdWVzdBonLnNlc3Npb24udjEuU2VhcmNoQ2xhdWRlSGlzdG9yeVJlc3BvbnNlIgASSgoJR2V0UFJJbmZvEhwuc2Vzc2lvbi52MS5HZXRQUkluZm9SZXF1ZXN0Gh0uc2Vzc2lvbi52MS5HZXRQUkluZm9SZXNwb25zZSIAElYKDUdldFBSQ29tbWVudHMSIC5zZXNzaW9uLnYxLkdldFBSQ29tbWVudHNSZXF1ZXN0GiEuc2Vzc2lvbi52MS5HZXRQUkNvbW1lbnRzUmVzcG9uc2UiABJWCg1Qb3N0UFJDb21tZW50EiAuc2Vzc2lvbi52MS5Qb3N0UFJDb21tZW50UmVxdWVzdBohLnNlc3Npb24udjEuUG9zdFBSQ29tbWVudFJlc3BvbnNlIgASRAoHTWVyZ2VQUhIaLnNlc3Npb24udjEuTWVyZ2VQUlJlcXVlc3QaGy5zZXNzaW9uLnYxLk1lcmdlUFJSZXNwb25zZSIAEkQKB0Nsb3NlUFISGi5zZXNzaW9uLnYxLkNsb3NlUFJSZXF1ZXN0Ghsuc2Vzc2lvbi52MS5DbG9zZVBSUmVzcG9uc2UiABJfChBTZW5kTm90aWZpY2F0aW9uEiMuc2Vzc2lvbi52MS5TZW5kTm90aWZpY2F0aW9uUmVxdWVzdBokLnNlc3Npb24udjEuU2VuZE5vdGlmaWNhdGlvblJlc3BvbnNlIgASUAoLRm9jdXNXaW5kb3cSHi5zZXNzaW9uLnYxLkZvY3VzV2luZG93UmVxdWVzdBofLnNlc3Npb24udjEuRm9jdXNXaW5kb3dSZXNwb25zZSIAElYKDVJlbmFtZVNlc3Npb24SIC5zZXNzaW9uLnYxLlJlbmFtZVNlc3Npb25SZXF1ZXN0GiEuc2Vzc2lvbi52MS5SZW5hbWVTZXNzaW9uUmVzcG9uc2UiABJZCg5SZXN0YXJ0U2Vzc2lvbhIhLnNlc3Npb24udjEuUmVzdGFydFNlc3Npb25SZXF1ZXN0GiIuc2Vzc2lvbi52MS5SZXN0YXJ0U2Vzc2lvblJlc3BvbnNlIgASXwoQR2V0V29ya3NwYWNlSW5mbxIjLnNlc3Npb24udjEuR2V0V29ya3NwYWNlSW5mb1JlcXVlc3QaJC5zZXNzaW9uLnYxLkdldFdvcmtzcGFjZUluZm9SZXNwb25zZSIAEmsKFExpc3RXb3Jrc3BhY2VUYXJnZXRzEicuc2Vzc2lvbi52MS5MaXN0V29ya3NwYWNlVGFyZ2V0c1JlcXVlc3QaKC5zZXNzaW9uLnYxLkxpc3RXb3Jrc3BhY2VUYXJnZXRzUmVzcG9uc2UiABJcCg9Td2l0Y2hXb3Jrc3BhY2USIi5zZXNzaW9uLnYxLlN3aXRjaFdvcmtzcGFjZVJlcXVlc3QaIy5zZXNzaW9uLnYxLlN3aXRjaFdvcmtzcGFjZVJlc3BvbnNlIgASXAoPUmVzb2x2ZUFwcHJvdmFsEiIuc2Vzc2lvbi52MS5SZXNvbHZlQXBwcm92YWxSZXF1ZXN0GiMuc2Vzc2lvbi52MS5SZXNvbHZlQXBwcm92YWxSZXNwb25zZSIAEmsKFExpc3RQZW5kaW5nQXBwcm92YWxzEicuc2Vzc2lvbi52MS5MaXN0UGVuZGluZ0FwcHJvdmFsc1JlcXVlc3QaKC5zZXNzaW9uLnYxLkxpc3RQZW5kaW5nQXBwcm92YWxzUmVzcG9uc2UiABJoChNDcmVhdGVEZWJ1Z1NuYXBzaG90EiYuc2Vzc2lvbi52MS5DcmVhdGVEZWJ1Z1NuYXBzaG90UmVxdWVzdBonLnNlc3Npb24udjEuQ3JlYXRlRGVidWdTbmFwc2hvdFJlc3BvbnNlIgAScQoWR2V0Tm90aWZpY2F0aW9uSGlzdG9yeRIpLnNlc3Npb24udjEuR2V0Tm90aWZpY2F0aW9uSGlzdG9yeVJlcXVlc3QaKi5zZXNzaW9uLnYxLkdldE5vdGlmaWNhdGlvbkhpc3RvcnlSZXNwb25zZSIAEmsKFE1hcmtOb3RpZmljYXRpb25SZWFkEicuc2Vzc2lvbi52MS5NYXJrTm90aWZpY2F0aW9uUmVhZFJlcXVlc3QaKC5zZXNzaW9uLnYxLk1hcmtOb3RpZmljYXRpb25SZWFkUmVzcG9uc2UiABJ3ChhDbGVhck5vdGlmaWNhdGlvbkhpc3RvcnkSKy5zZXNzaW9uLnYxLkNsZWFyTm90aWZpY2F0aW9uSGlzdG9yeVJlcXVlc3QaLC5zZXNzaW9uLnYxLkNsZWFyTm90aWZpY2F0aW9uSGlzdG9yeVJlc3BvbnNlIgASYgoRTGlzdEFwcHJvdmFsUnVsZXMSJC5zZXNzaW9uLnYxLkxpc3RBcHByb3ZhbFJ1bGVzUmVxdWVzdBolLnNlc3Npb24udjEuTGlzdEFwcHJvdmFsUnVsZXNSZXNwb25zZSIAEmUKElVwc2VydEFwcHJvdmFsUnVsZRIlLnNlc3Npb24udjEuVXBzZXJ0QXBwcm92YWxSdWxlUmVxdWVzdBomLnNlc3Npb24udjEuVXBzZXJ0QXBwcm92YWxSdWxlUmVzcG9uc2UiABJlChJEZWxldGVBcHByb3ZhbFJ1bGUSJS5zZXNzaW9uLnYxLkRlbGV0ZUFwcHJvdmFsUnVsZVJlcXVlc3QaJi5zZXNzaW9uLnYxLkRlbGV0ZUFwcHJvdmFsUnVsZVJlc3BvbnNlIgASawoUR2V0QXBwcm92YWxBbmFseXRpY3MSJy5zZXNzaW9uLnYxLkdldEFwcHJvdmFsQW5hbHl0aWNzUmVxdWVzdBooLnNlc3Npb24udjEuR2V0QXBwcm92YWxBbmFseXRpY3NSZXNwb25zZSIAEmgKE0dldFByb2dyYW1BbmFseXRpY3MSJi5zZXNzaW9uLnYxLkdldFByb2dyYW1BbmFseXRpY3NSZXF1ZXN0Gicuc2Vzc2lvbi52MS5HZXRQcm9ncmFtQW5hbHl0aWNzUmVzcG9uc2UiABJuChVHZW5lcmF0ZVN1Z2dlc3RlZFJ1bGUSKC5zZXNzaW9uLnYxLkdlbmVyYXRlU3VnZ2VzdGVkUnVsZVJlcXVlc3QaKS5zZXNzaW9uLnYxLkdlbmVyYXRlU3VnZ2VzdGVkUnVsZVJlc3BvbnNlIgASVgoNVmFsaWRhdGVSdWxlcxIgLnNlc3Npb24udjEuVmFsaWRhdGVSdWxlc1JlcXVlc3QaIS5zZXNzaW9uLnYxLlZhbGlkYXRlUnVsZXNSZXNwb25zZSIAElAKC0V4cG9ydFJ1bGVzEh4uc2Vzc2lvbi52MS5FeHBvcnRSdWxlc1JlcXVlc3QaHy5zZXNzaW9uLnYxLkV4cG9ydFJ1bGVzUmVzcG9uc2UiABJcCg9CdWxrVXBzZXJ0UnVsZXMSIi5zZXNzaW9uLnYxLkJ1bGtVcHNlcnRSdWxlc1JlcXVlc3QaIy5zZXNzaW9uLnYxLkJ1bGtVcHNlcnRSdWxlc1Jlc3BvbnNlIgASZQoSR2V0Q29uZmlnRmlsZVJ1bGVzEiUuc2Vzc2lvbi52MS5HZXRDb25maWdGaWxlUnVsZXNSZXF1ZXN0GiYuc2Vzc2lvbi52MS5HZXRDb25maWdGaWxlUnVsZXNSZXNwb25zZSIAEm4KFVNhdmVSdWxlc1RvQ29uZmlnRmlsZRIoLnNlc3Npb24udjEuU2F2ZVJ1bGVzVG9Db25maWdGaWxlUmVxdWVzdBopLnNlc3Npb24udjEuU2F2ZVJ1bGVzVG9Db25maWdGaWxlUmVzcG9uc2UiABJWCg1MaXN0RGF0YWJhc2VzEiAuc2Vzc2lvbi52MS5MaXN0RGF0YWJhc2VzUmVxdWVzdBohLnNlc3Npb24udjEuTGlzdERhdGFiYXNlc1Jlc3BvbnNlIgASZQoSR2V0Q3VycmVudERhdGFiYXNlEiUuc2Vzc2lvbi52MS5HZXRDdXJyZW50RGF0YWJhc2VSZXF1ZXN0GiYuc2Vzc2lvbi52MS5HZXRDdXJyZW50RGF0YWJhc2VSZXNwb25zZSIAElkKDlN3aXRjaERhdGFiYXNlEiEuc2Vzc2lvbi52MS5Td2l0Y2hEYXRhYmFzZVJlcXVlc3QaIi5zZXNzaW9uLnYxLlN3aXRjaERhdGFiYXNlUmVzcG9uc2UiABJWCg1NZXJnZURhdGFiYXNlEiAuc2Vzc2lvbi52MS5NZXJnZURhdGFiYXNlUmVxdWVzdBohLnNlc3Npb24udjEuTWVyZ2VEYXRhYmFzZVJlc3BvbnNlIgASXwoQQ3JlYXRlQ2hlY2twb2ludBIjLnNlc3Npb24udjEuQ3JlYXRlQ2hlY2twb2ludFJlcXVlc3QaJC5zZXNzaW9uLnYxLkNyZWF0ZUNoZWNrcG9pbnRSZXNwb25zZSIAElwKD0xpc3RDaGVja3BvaW50cxIiLnNlc3Npb24udjEuTGlzdENoZWNrcG9pbnRzUmVxdWVzdBojLnNlc3Npb24udjEuTGlzdENoZWNrcG9pbnRzUmVzcG9uc2UiABJQCgtGb3JrU2Vzc2lvbhIeLnNlc3Npb24udjEuRm9ya1Nlc3Npb25SZXF1ZXN0Gh8uc2Vzc2lvbi52MS5Gb3JrU2Vzc2lvblJlc3BvbnNlIgAScQoWQ2xlYXJDb252ZXJzYXRpb25TdGF0ZRIpLnNlc3Npb24udjEuQ2xlYXJDb252ZXJzYXRpb25TdGF0ZVJlcXVlc3QaKi5zZXNzaW9uLnYxLkNsZWFyQ29udmVyc2F0aW9uU3RhdGVSZXNwb25zZSIAEkoKCUxpc3RGaWxlcxIcLnNlc3Npb24udjEuTGlzdEZpbGVzUmVxdWVzdBodLnNlc3Npb24udjEuTGlzdEZpbGVzUmVzcG9uc2UiABJZCg5HZXRGaWxlQ29udGVudBIhLnNlc3Npb24udjEuR2V0RmlsZUNvbnRlbnRSZXF1ZXN0GiIuc2Vzc2lvbi52MS5HZXRGaWxlQ29udGVudFJlc3BvbnNlIgASUAoLU2VhcmNoRmlsZXMSHi5zZXNzaW9uLnYxLlNlYXJjaEZpbGVzUmVxdWVzdBofLnNlc3Npb24udjEuU2VhcmNoRmlsZXNSZXNwb25zZSIAEmgKE0xpc3RQYXRoQ29tcGxldGlvbnMSJi5zZXNzaW9uLnYxLkxpc3RQYXRoQ29tcGxldGlvbnNSZXF1ZXN0Gicuc2Vzc2lvbi52MS5MaXN0UGF0aENvbXBsZXRpb25zUmVzcG9uc2UiABJlChJHZXRTZXNzaW9uRGVmYXVsdHMSJS5zZXNzaW9uLnYxLkdldFNlc3Npb25EZWZhdWx0c1JlcXVlc3QaJi5zZXNzaW9uLnYxLkdldFNlc3Npb25EZWZhdWx0c1Jlc3BvbnNlIgASXAoPUmVzb2x2ZURlZmF1bHRzEiIuc2Vzc2lvbi52MS5SZXNvbHZlRGVmYXVsdHNSZXF1ZXN0GiMuc2Vzc2lvbi52MS5SZXNvbHZlRGVmYXVsdHNSZXNwb25zZSIAEnEKFlByZXZpZXdEZXN0aW5hdGlvblBhdGgSKS5zZXNzaW9uLnYxLlByZXZpZXdEZXN0aW5hdGlvblBhdGhSZXF1ZXN0Giouc2Vzc2lvbi52MS5QcmV2aWV3RGVzdGluYXRpb25QYXRoUmVzcG9uc2UiABJrChRVcGRhdGVHbG9iYWxEZWZhdWx0cxInLnNlc3Npb24udjEuVXBkYXRlR2xvYmFsRGVmYXVsdHNSZXF1ZXN0Giguc2Vzc2lvbi52MS5VcGRhdGVHbG9iYWxEZWZhdWx0c1Jlc3BvbnNlIgASVgoNVXBzZXJ0UHJvZmlsZRIgLnNlc3Npb24udjEuVXBzZXJ0UHJvZmlsZVJlcXVlc3QaIS5zZXNzaW9uLnYxLlVwc2VydFByb2ZpbGVSZXNwb25zZSIAElYKDURlbGV0ZVByb2ZpbGUSIC5zZXNzaW9uLnYxLkRlbGV0ZVByb2ZpbGVSZXF1ZXN0GiEuc2Vzc2lvbi52MS5EZWxldGVQcm9maWxlUmVzcG9uc2UiABJoChNVcHNlcnREaXJlY3RvcnlSdWxlEiYuc2Vzc2lvbi52MS5VcHNlcnREaXJlY3RvcnlSdWxlUmVxdWVzdBonLnNlc3Npb24udjEuVXBzZXJ0RGlyZWN0b3J5UnVsZVJlc3BvbnNlIgASaAoTRGVsZXRlRGlyZWN0b3J5UnVsZRImLnNlc3Npb24udjEuRGVsZXRlRGlyZWN0b3J5UnVsZVJlcXVlc3QaJy5zZXNzaW9uLnYxLkRlbGV0ZURpcmVjdG9yeVJ1bGVSZXNwb25zZSIAElYKDUxpc3RXb3JrdHJlZXMSIC5zZXNzaW9uLnYxLkxpc3RXb3JrdHJlZXNSZXF1ZXN0GiEuc2Vzc2lvbi52MS5MaXN0V29ya3RyZWVzUmVzcG9uc2UiABJiChFMaXN0UHJvbXB0SGlzdG9yeRIkLnNlc3Npb24udjEuTGlzdFByb21wdEhpc3RvcnlSZXF1ZXN0GiUuc2Vzc2lvbi52MS5MaXN0UHJvbXB0SGlzdG9yeVJlc3BvbnNlIgASaAoTRGVsZXRlUHJvbXB0SGlzdG9yeRImLnNlc3Npb24udjEuRGVsZXRlUHJvbXB0SGlzdG9yeVJlcXVlc3QaJy5zZXNzaW9uLnYxLkRlbGV0ZVByb21wdEhpc3RvcnlSZXNwb25zZSIAEmgKE0JhdGNoQ3JlYXRlU2Vzc2lvbnMSJi5zZXNzaW9uLnYxLkJhdGNoQ3JlYXRlU2Vzc2lvbnNSZXF1ZXN0Gicuc2Vzc2lvbi52MS5CYXRjaENyZWF0ZVNlc3Npb25zUmVzcG9uc2UiABJNCgpSdW5PbmVTaG90Eh0uc2Vzc2lvbi52MS5SdW5PbmVTaG90UmVxdWVzdBoeLnNlc3Npb24udjEuUnVuT25lU2hvdFJlc3BvbnNlIgASVgoNQ3JlYXRlUHJvamVjdBIgLnNlc3Npb24udjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaIS5zZXNzaW9uLnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZSIAElMKDExpc3RQcm9qZWN0cxIfLnNlc3Npb24udjEuTGlzdFByb2plY3RzUmVxdWVzdBogLnNlc3Npb24udjEuTGlzdFByb2plY3RzUmVzcG9uc2UiABJWCg1VcGRhdGVQcm9qZWN0EiAuc2Vzc2lvbi52MS5VcGRhdGVQcm9qZWN0UmVxdWVzdBohLnNlc3Npb24udjEuVXBkYXRlUHJvamVjdFJlc3BvbnNlIgASVgoNRGVsZXRlUHJvamVjdBIgLnNlc3Npb24udjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaIS5zZXNzaW9uLnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZSIAEnQKF0Fzc2lnblNlc3Npb25zVG9Qcm9qZWN0Eiouc2Vzc2lvbi52MS5Bc3NpZ25TZXNzaW9uc1RvUHJvamVjdFJlcXVlc3QaKy5zZXNzaW9uLnYxLkFzc2lnblNlc3Npb25zVG9Qcm9qZWN0UmVzcG9uc2UiABJTCgxMaXN0QnJhbmNoZXMSHy5zZXNzaW9uLnYxLkxpc3RCcmFuY2hlc1JlcXVlc3QaIC5zZXNzaW9uLnYxLkxpc3RCcmFuY2hlc1Jlc3BvbnNlIgASaAoTR2V0VGVybWluYWxTbmFwc2hvdBImLnNlc3Npb24udjEuR2V0VGVybWluYWxTbmFwc2hvdFJlcXVlc3QaJy5zZXNzaW9uLnYxLkdldFRlcm1pbmFsU25hcHNob3RSZXNwb25zZSIAElkKDldyaXRlVG9TZXNzaW9uEiEuc2Vzc2lvbi52MS5Xcml0ZVRvU2Vzc2lvblJlcXVlc3QaIi5zZXNzaW9uLnYxLldyaXRlVG9TZXNzaW9uUmVzcG9uc2UiABJcCg9Mb2dDbGllbnRFdmVudHMSIi5zZXNzaW9uLnYxLkxvZ0NsaWVudEV2ZW50c1JlcXVlc3QaIy5zZXNzaW9uLnYxLkxvZ0NsaWVudEV2ZW50c1Jlc3BvbnNlIgASTQoKTGlzdEVycm9ycxIdLnNlc3Npb24udjEuTGlzdEVycm9yc1JlcXVlc3QaHi5zZXNzaW9uLnYxLkxpc3RFcnJvcnNSZXNwb25zZSIAEl8KEEFja25vd2xlZGdlRXJyb3ISIy5zZXNzaW9uLnYxLkFja25vd2xlZGdlRXJyb3JSZXF1ZXN0GiQuc2Vzc2lvbi52MS5BY2tub3dsZWRnZUVycm9yUmVzcG9uc2UiABJcCg9HZXRGZWF0dXJlRmxhZ3MSIi5zZXNzaW9uLnYxLkdldEZlYXR1cmVGbGFnc1JlcXVlc3QaIy5zZXNzaW9uLnYxLkdldEZlYXR1cmVGbGFnc1Jlc3BvbnNlIgASYgoRVXBkYXRlRmVhdHVyZUZsYWcSJC5zZXNzaW9uLnYxLlVwZGF0ZUZlYXR1cmVGbGFnUmVxdWVzdBolLnNlc3Npb24udjEuVXBkYXRlRmVhdHVyZUZsYWdSZXNwb25zZSIAEmsKFFF1ZXJ5RXNjYXBlQW5hbHl0aWNzEicuc2Vzc2lvbi52MS5RdWVyeUVzY2FwZUFuYWx5dGljc1JlcXVlc3QaKC5zZXNzaW9uLnYxLlF1ZXJ5RXNjYXBlQW5hbHl0aWNzUmVzcG9uc2UiABJ6ChlHZXRFc2NhcGVBbmFseXRpY3NTdW1tYXJ5Eiwuc2Vzc2lvbi52MS5HZXRFc2NhcGVBbmFseXRpY3NTdW1tYXJ5UmVxdWVzdBotLnNlc3Npb24udjEuR2V0RXNjYXBlQW5hbHl0aWNzU3VtbWFyeVJlc3BvbnNlIgASjAEKH0dldEVzY2FwZUFuYWx5dGljc0dsb2JhbFN1bW1hcnkSMi5zZXNzaW9uLnYxLkdldEVzY2FwZUFuYWx5dGljc0dsb2JhbFN1bW1hcnlSZXF1ZXN0GjMuc2Vzc2lvbi52MS5HZXRFc2NhcGVBbmFseXRpY3NHbG9iYWxTdW1tYXJ5UmVzcG9uc2UiABJfChBIaWJlcm5hdGVTZXNzaW9uEiMuc2Vzc2lvbi52MS5IaWJlcm5hdGVTZXNzaW9uUmVxdWVzdBokLnNlc3Npb24udjEuSGliZXJuYXRlU2Vzc2lvblJlc3BvbnNlIgASdAoXUmVzdW1lSGliZXJuYXRlZFNlc3Npb24SKi5zZXNzaW9uLnYxLlJlc3VtZUhpYmVybmF0ZWRTZXNzaW9uUmVxdWVzdBorLnNlc3Npb24udjEuUmVzdW1lSGliZXJuYXRlZFNlc3Npb25SZXNwb25zZSIAEmsKFFJlc3VtZUNyYXNoZWRTZXNzaW9uEicuc2Vzc2lvbi52MS5SZXN1bWVDcmFzaGVkU2Vzc2lvblJlcXVlc3QaKC5zZXNzaW9uLnYxLlJlc3VtZUNyYXNoZWRTZXNzaW9uUmVzcG9uc2UiABJNCgpTcGF3blNoZWxsEh0uc2Vzc2lvbi52MS5TcGF3blNoZWxsUmVxdWVzdBoeLnNlc3Npb24udjEuU3Bhd25TaGVsbFJlc3BvbnNlIgASSgoJU3RvcFNoZWxsEhwuc2Vzc2lvbi52MS5TdG9wU2hlbGxSZXF1ZXN0Gh0uc2Vzc2lvbi52MS5TdG9wU2hlbGxSZXNwb25zZSIAElMKDFJlc3RhcnRTaGVsbBIfLnNlc3Npb24udjEuUmVzdGFydFNoZWxsUmVxdWVzdBogLnNlc3Npb24udjEuUmVzdGFydFNoZWxsUmVzcG9uc2UiABJNCgpMaXN0U2hlbGxzEh0uc2Vzc2lvbi52MS5MaXN0U2hlbGxzUmVxdWVzdBoeLnNlc3Npb24udjEuTGlzdFNoZWxsc1Jlc3BvbnNlIgASUAoLRGVsZXRlU2hlbGwSHi5zZXNzaW9uLnYxLkRlbGV0ZVNoZWxsUmVxdWVzdBofLnNlc3Npb24udjEuRGVsZXRlU2hlbGxSZXNwb25zZSIAElkKDkNyZWF0ZVdvcmtmbG93EiEuc2Vzc2lvbi52MS5DcmVhdGVXb3JrZmxvd1JlcXVlc3QaIi5zZXNzaW9uLnYxLkNyZWF0ZVdvcmtmbG93UmVzcG9uc2UiABJZCg5VcGRhdGVXb3JrZmxvdxIhLnNlc3Npb24udjEuVXBkYXRlV29ya2Zsb3dSZXF1ZXN0GiIuc2Vzc2lvbi52MS5VcGRhdGVXb3JrZmxvd1Jlc3BvbnNlIgASWQoORGVsZXRlV29ya2Zsb3cSIS5zZXNzaW9uLnYxLkRlbGV0ZVdvcmtmbG93UmVxdWVzdBoiLnNlc3Npb24udjEuRGVsZXRlV29ya2Zsb3dSZXNwb25zZSIAElYKDUxpc3RXb3JrZmxvd3MSIC5zZXNzaW9uLnYxLkxpc3RXb3JrZmxvd3NSZXF1ZXN0GiEuc2Vzc2lvbi52MS5MaXN0V29ya2Zsb3dzUmVzcG9uc2UiABJQCgtSdW5Xb3JrZmxvdxIeLnNlc3Npb24udjEuUnVuV29ya2Zsb3dSZXF1ZXN0Gh8uc2Vzc2lvbi52MS5SdW5Xb3JrZmxvd1Jlc3BvbnNlIgASZQoSR2V0RGV0ZWN0aW9uRXZlbnRzEiUuc2Vzc2lvbi52MS5HZXREZXRlY3Rpb25FdmVudHNSZXF1ZXN0GiYuc2Vzc2lvbi52MS5HZXREZXRlY3Rpb25FdmVudHNSZXNwb25zZSIAEmIKEUxpc3RTbGFzaENvbW1hbmRzEiQuc2Vzc2lvbi52MS5MaXN0U2xhc2hDb21tYW5kc1JlcXVlc3QaJS5zZXNzaW9uLnYxLkxpc3RTbGFzaENvbW1hbmRzUmVzcG9uc2UiABJQCgtMaXN0QWxpYXNlcxIeLnNlc3Npb24udjEuTGlzdEFsaWFzZXNSZXF1ZXN0Gh8uc2Vzc2lvbi52MS5MaXN0QWxpYXNlc1Jlc3BvbnNlIgASUAoLVXBzZXJ0QWxpYXMSHi5zZXNzaW9uLnYxLlVwc2VydEFsaWFzUmVxdWVzdBofLnNlc3Npb24udjEuVXBzZXJ0QWxpYXNSZXNwb25zZSIAElAKC0RlbGV0ZUFsaWFzEh4uc2Vzc2lvbi52MS5EZWxldGVBbGlhc1JlcXVlc3QaHy5zZXNzaW9uLnYxLkRlbGV0ZUFsaWFzUmVzcG9uc2UiABJZCg5BcmNoaXZlU2Vzc2lvbhIhLnNlc3Npb24udjEuQXJjaGl2ZVNlc3Npb25SZXF1ZXN0GiIuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlc3BvbnNlIgASXwoQVW5hcmNoaXZlU2Vzc2lvbhIjLnNlc3Npb24udjEuVW5hcmNoaXZlU2Vzc2lvblJlcXVlc3QaJC5zZXNzaW9uLnYxLlVuYXJjaGl2ZVNlc3Npb25SZXNwb25zZSIAEnQKF0FyY2hpdmVXb3JrZmxvd1Nlc3Npb25zEiouc2Vzc2lvbi52MS5BcmNoaXZlV29ya2Zsb3dTZXNzaW9uc1JlcXVlc3QaKy5zZXNzaW9uLnYxLkFyY2hpdmVXb3JrZmxvd1Nlc3Npb25zUmVzcG9uc2UiABKDAQocRGVsZXRlV29ya2Zsb3dGYWlsZWRTZXNzaW9ucxIvLnNlc3Npb24udjEuRGVsZXRlV29ya2Zsb3dGYWlsZWRTZXNzaW9uc1JlcXVlc3QaMC5zZXNzaW9uLnYxLkRlbGV0ZVdvcmtmbG93RmFpbGVkU2Vzc2lvbnNSZXNwb25zZSIAEmIKEUdldFByb3ZpZGVyTGltaXRzEiQuc2Vzc2lvbi52MS5HZXRQcm92aWRlckxpbWl0c1JlcXVlc3QaJS5zZXNzaW9uLnYxLkdldFByb3ZpZGVyTGltaXRzUmVzcG9uc2UiABJWCg1HZXRIb29rU3RhdHVzEiAuc2Vzc2lvbi52MS5HZXRIb29rU3RhdHVzUmVxdWVzdBohLnNlc3Npb24udjEuR2V0SG9va1N0YXR1c1Jlc3BvbnNlIgASUwoMSW5zdGFsbEhvb2tzEh8uc2Vzc2lvbi52MS5JbnN0YWxsSG9va3NSZXF1ZXN0GiAuc2Vzc2lvbi52MS5JbnN0YWxsSG9va3NSZXNwb25zZSIAQqwBCg5jb20uc2Vzc2lvbi52MUIMU2Vzc2lvblByb3RvUAFaQ2dpdGh1Yi5jb20vdHN0YXBsZXIvc3RhcGxlci1zcXVhZC9nZW4vcHJvdG8vZ28vc2Vzc2lvbi92MTtzZXNzaW9udjGiAgNTWFiqAgpTZXNzaW9uLlYxygIKU2Vzc2lvblxWMeICFlNlc3Npb25cVjFcR1BCTWV0YWRhdGHqAgtTZXNzaW9uOjpWMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_session_v1_types, file_session_v1_events]); - -/** - * ListSessionsRequest allows filtering sessions by various criteria. - * - * @generated from message session.v1.ListSessionsRequest - */ -export type ListSessionsRequest = Message<"session.v1.ListSessionsRequest"> & { - /** - * Filter by session status (e.g., RUNNING, PAUSED). - * - * @generated from field: optional session.v1.SessionStatus status = 1; - */ - status?: SessionStatus; - - /** - * Filter by category name. - * - * @generated from field: optional string category = 2; - */ - category?: string; - - /** - * Hide paused sessions from results. - * - * @generated from field: bool hide_paused = 3; - */ - hidePaused: boolean; - - /** - * Search query for fuzzy matching across title, path, branch. - * - * @generated from field: optional string search_query = 4; - */ - searchQuery?: string; - - /** - * Filter by project ID (only return sessions in this project). - * - * @generated from field: optional string project_id = 5; - */ - projectId?: string; - - /** - * When true, include hidden (system/background) sessions in results. - * Defaults to false — hidden sessions are excluded unless explicitly requested. - * - * @generated from field: bool include_hidden = 6; - */ - includeHidden: boolean; - - /** - * Filter by the workflow that created the session. - * - * @generated from field: optional string workflow_id = 7; - */ - workflowId?: string; - - /** - * When true, include archived sessions in results. - * Defaults to false — archived sessions are excluded unless explicitly requested. - * - * @generated from field: bool include_archived = 8; - */ - includeArchived: boolean; -}; - -/** - * Describes the message session.v1.ListSessionsRequest. - * Use `create(ListSessionsRequestSchema)` to create a new message. - */ -export const ListSessionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 0); - -/** - * @generated from message session.v1.ListSessionsResponse - */ -export type ListSessionsResponse = Message<"session.v1.ListSessionsResponse"> & { - /** - * @generated from field: repeated session.v1.Session sessions = 1; - */ - sessions: Session[]; - - /** - * System-wide memory usage percentage (0–100). Populated by the server on each response. - * Zero when measurement is unavailable (e.g., macOS without /proc). - * - * @generated from field: float system_memory_pct = 2; - */ - systemMemoryPct: number; -}; - -/** - * Describes the message session.v1.ListSessionsResponse. - * Use `create(ListSessionsResponseSchema)` to create a new message. - */ -export const ListSessionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 1); - -/** - * @generated from message session.v1.GetSessionRequest - */ -export type GetSessionRequest = Message<"session.v1.GetSessionRequest"> & { - /** - * Session identifier (uses session title as ID). - * - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.GetSessionRequest. - * Use `create(GetSessionRequestSchema)` to create a new message. - */ -export const GetSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 2); - -/** - * @generated from message session.v1.GetSessionResponse - */ -export type GetSessionResponse = Message<"session.v1.GetSessionResponse"> & { - /** - * @generated from field: session.v1.Session session = 1; - */ - session?: Session; -}; - -/** - * Describes the message session.v1.GetSessionResponse. - * Use `create(GetSessionResponseSchema)` to create a new message. - */ -export const GetSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 3); - -/** - * @generated from message session.v1.CreateSessionRequest - */ -export type CreateSessionRequest = Message<"session.v1.CreateSessionRequest"> & { - /** - * Required: Human-readable session title. - * - * @generated from field: string title = 1; - */ - title: string; - - /** - * Required: Path to workspace repository root. - * - * @generated from field: string path = 2; - */ - path: string; - - /** - * Optional: Directory within repository to start in. - * - * @generated from field: string working_dir = 3; - */ - workingDir: string; - - /** - * Optional: Git branch name (creates new branch if doesn't exist). - * - * @generated from field: string branch = 4; - */ - branch: string; - - /** - * Optional: Program to run (default: "claude"). - * - * @generated from field: string program = 5; - */ - program: string; - - /** - * Optional: Category for organization. - * - * @generated from field: string category = 6; - */ - category: string; - - /** - * Optional: prompt passed as a CLI argument at process-spawn time (fresh spawns / one-shot - * only). See initial_prompt for the tmux-typed alternative used for resume/attach flows — - * the two are independent and may both be set on the same request. - * - * @generated from field: string prompt = 7; - */ - prompt: string; - - /** - * Optional: Auto-approve prompts without user interaction. - * - * @generated from field: bool auto_yes = 8; - */ - autoYes: boolean; - - /** - * Optional: Reuse existing worktree at this path. - * - * @generated from field: string existing_worktree = 9; - */ - existingWorktree: string; - - /** - * Optional: Resume an existing Claude conversation by ID. - * This ID comes from ClaudeHistoryEntry.id and will use Claude's --resume flag. - * - * @generated from field: string resume_id = 10; - */ - resumeId: string; - - /** - * Optional: Apply a named profile's defaults before creation. - * - * @generated from field: string profile = 11; - */ - profile: string; - - /** - * Optional: Skip all session defaults (explicit override — form values used as-is). - * - * @generated from field: bool skip_defaults = 12; - */ - skipDefaults: boolean; - - /** - * Optional: Session type (directory, new_worktree, existing_worktree). - * If not specified, backend will infer from other fields (branch, existing_worktree). - * - * @generated from field: session.v1.SessionType session_type = 13; - */ - sessionType: SessionType; - - /** - * Optional: prompt typed into the tmux pane as simulated keystrokes once the session reaches - * Ready state (no size limit; shell-safe) — used for resume/attach flows where a CLI arg can - * no longer be injected. See prompt (field 7) for the CLI-arg alternative. - * - * @generated from field: string initial_prompt = 15; - */ - initialPrompt: string; - - /** - * Optional: Run claude in one-shot mode (-p flag); session exits after task completes. - * - * @generated from field: bool one_shot = 16; - */ - oneShot: boolean; - - /** - * Optional: Associate session with a project ID. - * - * @generated from field: string project_id = 17; - */ - projectId: string; - - /** - * Optional: When session_type is DIRECTORY and the path does not exist, - * setting this to true will create the directory and initialize a git repo. - * The backend returns CodeNotFound when path is missing and this is false. - * - * @generated from field: bool create_if_missing = 18; - */ - createIfMissing: boolean; - - /** - * Optional: History entry ID to fork from (ClaudeHistoryEntry.id). - * When set, the handler calls ForkClaudeConversation to produce a new - * conversation file, sets resume_id to the forked UUID, and proceeds - * with the normal session-start flow. - * - * @generated from field: string fork_source_id = 19; - */ - forkSourceId: string; - - /** - * Optional: Truncate the forked conversation to the first N messages. - * 0 means copy all messages. Only meaningful when fork_source_id is set. - * - * @generated from field: int32 fork_at_message = 20; - */ - forkAtMessage: number; - - /** - * allowed_tools pre-approves specific Claude Code tool calls, avoiding permission prompts. - * Format: "Bash,Read,Edit" or "Bash(git commit *),Read". - * - * @generated from field: string allowed_tools = 21; - */ - allowedTools: string; - - /** - * permission_mode sets Claude Code's permission handling mode. - * Values: "default", "acceptEdits", "bypassPermissions", "auto". - * - * @generated from field: string permission_mode = 22; - */ - permissionMode: string; - - /** - * Optional: If true, start an AutonomousDriver that injects orchestrator - * prompts when the session is idle, running the session to completion. - * - * @generated from field: bool autonomous_mode = 23; - */ - autonomousMode: boolean; - - /** - * workflow_id associates the new session with a workflow. - * Set by the scheduler when firing a workflow; not intended for direct client use. - * - * @generated from field: string workflow_id = 24; - */ - workflowId: string; - - /** - * env_vars are additional environment variables passed to the new session. - * Applied on top of any defaults-resolved env vars. - * - * @generated from field: map env_vars = 25; - */ - envVars: { [key: string]: string }; - - /** - * cli_flags are additional CLI flags appended to the program launch command. - * Applied on top of any defaults-resolved flags. - * - * @generated from field: string cli_flags = 26; - */ - cliFlags: string; - - /** - * alias_name, when non-empty, resolves session defaults via the named alias preset. - * Path and profile are resolved from the alias config; path from req is used as override if non-empty. - * - * @generated from field: string alias_name = 27; - */ - aliasName: string; - - /** - * auto_approve injects a per-agent CLI flag that skips permission/approval - * prompts entirely (e.g. --dangerously-skip-permissions for Claude Code). - * Independent of auto_yes — see auto_yes's own comment for the distinction. - * Defaults to false; never implicitly set true. Rejected server-side if the - * resolved program isn't a supported agent (see AutoApproveSupported). - * - * @generated from field: bool auto_approve = 28; - */ - autoApprove: boolean; -}; - -/** - * Describes the message session.v1.CreateSessionRequest. - * Use `create(CreateSessionRequestSchema)` to create a new message. - */ -export const CreateSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 4); - -/** - * @generated from message session.v1.CreateSessionResponse - */ -export type CreateSessionResponse = Message<"session.v1.CreateSessionResponse"> & { - /** - * @generated from field: session.v1.Session session = 1; - */ - session?: Session; -}; - -/** - * Describes the message session.v1.CreateSessionResponse. - * Use `create(CreateSessionResponseSchema)` to create a new message. - */ -export const CreateSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 5); - -/** - * @generated from message session.v1.UpdateSessionRequest - */ -export type UpdateSessionRequest = Message<"session.v1.UpdateSessionRequest"> & { - /** - * Session identifier. - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Update session status (pause/resume). - * - * @generated from field: optional session.v1.SessionStatus status = 2; - */ - status?: SessionStatus; - - /** - * Update category. - * - * @generated from field: optional string category = 3; - */ - category?: string; - - /** - * Update title. - * - * @generated from field: optional string title = 4; - */ - title?: string; - - /** - * Update program command. - * - * @generated from field: optional string program = 5; - */ - program?: string; - - /** - * Update session tags. If non-empty, replaces all existing tags. - * To clear all tags, send tags=[""] (single empty string). - * - * @generated from field: repeated string tags = 6; - */ - tags: string[]; - - /** - * Update working directory. Empty string clears the override (uses workspace root). - * - * @generated from field: optional string working_dir = 7; - */ - workingDir?: string; - - /** - * Update whether rate limit auto-resume is enabled for this session. - * - * @generated from field: optional bool rate_limit_enabled = 8; - */ - rateLimitEnabled?: boolean; - - /** - * Reason for pausing (only meaningful when status is set to PAUSED). - * If empty when pausing, defaults to "manual" in the backend handler. - * - * @generated from field: optional string pause_reason = 9; - */ - pauseReason?: string; - - /** - * Enable or disable autonomous mode (AutonomousDriver) on a running session. - * When set to true, an AutonomousDriver is started if one is not already running. - * When set to false, the running driver is stopped. - * - * @generated from field: optional bool autonomous_mode = 10; - */ - autonomousMode?: boolean; - - /** - * Steering message to inject into an autonomous session mid-run. - * Sends the text immediately via SendCommandImmediate. Only meaningful when autonomous_mode is true. - * - * @generated from field: optional string steer_message = 11; - */ - steerMessage?: string; - - /** - * Update the session's free-form note. Capped at 10,000 bytes. - * - * @generated from field: optional string note = 12; - */ - note?: string; - - /** - * Enable or disable auto-approve (yolo mode) on a session. Injects a - * per-agent CLI flag that skips permission/approval prompts entirely. - * Independent of autonomous_mode and of auto_yes (create-time only, - * not updatable). Toggling this on an Active session restarts it so the - * flag takes effect (see SetAutoApprove's doc comment). - * - * @generated from field: optional bool auto_approve = 13; - */ - autoApprove?: boolean; -}; - -/** - * Describes the message session.v1.UpdateSessionRequest. - * Use `create(UpdateSessionRequestSchema)` to create a new message. - */ -export const UpdateSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 6); - -/** - * @generated from message session.v1.UpdateSessionResponse - */ -export type UpdateSessionResponse = Message<"session.v1.UpdateSessionResponse"> & { - /** - * @generated from field: session.v1.Session session = 1; - */ - session?: Session; -}; - -/** - * Describes the message session.v1.UpdateSessionResponse. - * Use `create(UpdateSessionResponseSchema)` to create a new message. - */ -export const UpdateSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 7); - -/** - * @generated from message session.v1.DeleteSessionRequest - */ -export type DeleteSessionRequest = Message<"session.v1.DeleteSessionRequest"> & { - /** - * Session identifier. - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Force deletion even if session is running. - * - * @generated from field: bool force = 2; - */ - force: boolean; -}; - -/** - * Describes the message session.v1.DeleteSessionRequest. - * Use `create(DeleteSessionRequestSchema)` to create a new message. - */ -export const DeleteSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 8); - -/** - * @generated from message session.v1.DeleteSessionResponse - */ -export type DeleteSessionResponse = Message<"session.v1.DeleteSessionResponse"> & { - /** - * Whether deletion was successful. - * - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * Human-readable message. - * - * @generated from field: string message = 2; - */ - message: string; -}; - -/** - * Describes the message session.v1.DeleteSessionResponse. - * Use `create(DeleteSessionResponseSchema)` to create a new message. - */ -export const DeleteSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 9); - -/** - * @generated from message session.v1.WatchSessionsRequest - */ -export type WatchSessionsRequest = Message<"session.v1.WatchSessionsRequest"> & { - /** - * Optional: Only watch sessions matching this category. - * - * @generated from field: optional string category_filter = 1; - */ - categoryFilter?: string; - - /** - * Optional: Only watch sessions with this status. - * - * @generated from field: optional session.v1.SessionStatus status_filter = 2; - */ - statusFilter?: SessionStatus; - - /** - * Optional: If non-zero, replay buffered events with seq > after_seq before - * going live. Pass the last seq received before disconnecting. Events up to - * one hour old are available; older events are not guaranteed to be present. - * - * @generated from field: uint64 after_seq = 3; - */ - afterSeq: bigint; -}; - -/** - * Describes the message session.v1.WatchSessionsRequest. - * Use `create(WatchSessionsRequestSchema)` to create a new message. - */ -export const WatchSessionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 10); - -/** - * @generated from message session.v1.GetSessionDiffRequest - */ -export type GetSessionDiffRequest = Message<"session.v1.GetSessionDiffRequest"> & { - /** - * Session identifier. - * - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.GetSessionDiffRequest. - * Use `create(GetSessionDiffRequestSchema)` to create a new message. - */ -export const GetSessionDiffRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 11); - -/** - * @generated from message session.v1.GetSessionDiffResponse - */ -export type GetSessionDiffResponse = Message<"session.v1.GetSessionDiffResponse"> & { - /** - * Git diff statistics. - * - * @generated from field: session.v1.DiffStats diff_stats = 1; - */ - diffStats?: DiffStats; -}; - -/** - * Describes the message session.v1.GetSessionDiffResponse. - * Use `create(GetSessionDiffResponseSchema)` to create a new message. - */ -export const GetSessionDiffResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 12); - -/** - * @generated from message session.v1.GetVCSStatusRequest - */ -export type GetVCSStatusRequest = Message<"session.v1.GetVCSStatusRequest"> & { - /** - * Session identifier. - * - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.GetVCSStatusRequest. - * Use `create(GetVCSStatusRequestSchema)` to create a new message. - */ -export const GetVCSStatusRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 13); - -/** - * @generated from message session.v1.GetVCSStatusResponse - */ -export type GetVCSStatusResponse = Message<"session.v1.GetVCSStatusResponse"> & { - /** - * VCS status for the session's working directory. - * - * @generated from field: session.v1.VCSStatus vcs_status = 1; - */ - vcsStatus?: VCSStatus; - - /** - * Error message if VCS status couldn't be retrieved. - * - * @generated from field: string error = 2; - */ - error: string; -}; - -/** - * Describes the message session.v1.GetVCSStatusResponse. - * Use `create(GetVCSStatusResponseSchema)` to create a new message. - */ -export const GetVCSStatusResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 14); - -/** - * @generated from message session.v1.GetReviewQueueRequest - */ -export type GetReviewQueueRequest = Message<"session.v1.GetReviewQueueRequest"> & { - /** - * Optional: Filter by priority level. - * - * @generated from field: optional session.v1.Priority priority_filter = 1; - */ - priorityFilter?: Priority; - - /** - * Optional: Filter by attention reason. - * - * @generated from field: optional session.v1.AttentionReason reason_filter = 2; - */ - reasonFilter?: AttentionReason; -}; - -/** - * Describes the message session.v1.GetReviewQueueRequest. - * Use `create(GetReviewQueueRequestSchema)` to create a new message. - */ -export const GetReviewQueueRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 15); - -/** - * @generated from message session.v1.GetReviewQueueResponse - */ -export type GetReviewQueueResponse = Message<"session.v1.GetReviewQueueResponse"> & { - /** - * Review queue with all items and statistics. - * - * @generated from field: session.v1.ReviewQueue review_queue = 1; - */ - reviewQueue?: ReviewQueue; -}; - -/** - * Describes the message session.v1.GetReviewQueueResponse. - * Use `create(GetReviewQueueResponseSchema)` to create a new message. - */ -export const GetReviewQueueResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 16); - -/** - * @generated from message session.v1.AcknowledgeSessionRequest - */ -export type AcknowledgeSessionRequest = Message<"session.v1.AcknowledgeSessionRequest"> & { - /** - * Session identifier to acknowledge. - * - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.AcknowledgeSessionRequest. - * Use `create(AcknowledgeSessionRequestSchema)` to create a new message. - */ -export const AcknowledgeSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 17); - -/** - * @generated from message session.v1.AcknowledgeSessionResponse - */ -export type AcknowledgeSessionResponse = Message<"session.v1.AcknowledgeSessionResponse"> & { - /** - * Whether acknowledgment was successful. - * - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * Human-readable message. - * - * @generated from field: string message = 2; - */ - message: string; -}; - -/** - * Describes the message session.v1.AcknowledgeSessionResponse. - * Use `create(AcknowledgeSessionResponseSchema)` to create a new message. - */ -export const AcknowledgeSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 18); - -/** - * @generated from message session.v1.GetLogsRequest - */ -export type GetLogsRequest = Message<"session.v1.GetLogsRequest"> & { - /** - * Optional: Search query to filter log entries by content. - * - * @generated from field: optional string search_query = 1; - */ - searchQuery?: string; - - /** - * Optional: Filter by log level (DEBUG, INFO, WARNING, ERROR). - * Deprecated: prefer levels for multi-level filtering. If both are set, levels takes precedence. - * - * @generated from field: optional string level = 2; - */ - level?: string; - - /** - * Optional: Start time for log range (RFC3339 format). - * - * @generated from field: optional google.protobuf.Timestamp start_time = 3; - */ - startTime?: Timestamp; - - /** - * Optional: End time for log range (RFC3339 format). - * - * @generated from field: optional google.protobuf.Timestamp end_time = 4; - */ - endTime?: Timestamp; - - /** - * Optional: Maximum number of log entries to return (default: 100). - * - * @generated from field: optional int32 limit = 5; - */ - limit?: number; - - /** - * Optional: Number of entries to skip for pagination (default: 0). - * - * @generated from field: optional int32 offset = 6; - */ - offset?: number; - - /** - * Optional: Filter to a specific session's log file. Uses session title/id. - * - * @generated from field: optional string session_id = 7; - */ - sessionId?: string; - - /** - * Optional: Filter by multiple log levels using OR logic (e.g., ["ERROR", "WARN"]). - * Takes precedence over the single level field when non-empty. - * - * @generated from field: repeated string levels = 8; - */ - levels: string[]; -}; - -/** - * Describes the message session.v1.GetLogsRequest. - * Use `create(GetLogsRequestSchema)` to create a new message. - */ -export const GetLogsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 19); - -/** - * @generated from message session.v1.GetLogsResponse - */ -export type GetLogsResponse = Message<"session.v1.GetLogsResponse"> & { - /** - * Log entries matching the filter criteria. - * - * @generated from field: repeated session.v1.LogEntry entries = 1; - */ - entries: LogEntry[]; - - /** - * Total number of log entries matching the filter (before limit/offset). - * - * @generated from field: int32 total_count = 2; - */ - totalCount: number; - - /** - * Whether there are more logs available to fetch. - * - * @generated from field: bool has_more = 3; - */ - hasMore: boolean; -}; - -/** - * Describes the message session.v1.GetLogsResponse. - * Use `create(GetLogsResponseSchema)` to create a new message. - */ -export const GetLogsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 20); - -/** - * @generated from message session.v1.LogEntry - */ -export type LogEntry = Message<"session.v1.LogEntry"> & { - /** - * Timestamp of the log entry. - * - * @generated from field: google.protobuf.Timestamp timestamp = 1; - */ - timestamp?: Timestamp; - - /** - * Log level (DEBUG, INFO, WARNING, ERROR). - * - * @generated from field: string level = 2; - */ - level: string; - - /** - * Log message content. - * - * @generated from field: string message = 3; - */ - message: string; - - /** - * Source file and line number (e.g., "app.go:123"). - * - * @generated from field: optional string source = 4; - */ - source?: string; -}; - -/** - * Describes the message session.v1.LogEntry. - * Use `create(LogEntrySchema)` to create a new message. - */ -export const LogEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 21); - -/** - * @generated from message session.v1.WatchReviewQueueRequest - */ -export type WatchReviewQueueRequest = Message<"session.v1.WatchReviewQueueRequest"> & { - /** - * Optional: Filter by priority level (only receive events for these priorities). - * - * @generated from field: repeated session.v1.Priority priority_filter = 1; - */ - priorityFilter: Priority[]; - - /** - * Optional: Filter by attention reason. - * - * @generated from field: repeated session.v1.AttentionReason reason_filter = 2; - */ - reasonFilter: AttentionReason[]; - - /** - * Include statistics events (aggregate queue stats). - * - * @generated from field: bool include_statistics = 3; - */ - includeStatistics: boolean; - - /** - * Send initial snapshot of current queue state. - * - * @generated from field: bool initial_snapshot = 4; - */ - initialSnapshot: boolean; - - /** - * Optional: Only events for specific sessions. - * - * @generated from field: repeated string session_ids = 5; - */ - sessionIds: string[]; -}; - -/** - * Describes the message session.v1.WatchReviewQueueRequest. - * Use `create(WatchReviewQueueRequestSchema)` to create a new message. - */ -export const WatchReviewQueueRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 22); - -/** - * @generated from message session.v1.LogUserInteractionRequest - */ -export type LogUserInteractionRequest = Message<"session.v1.LogUserInteractionRequest"> & { - /** - * Session identifier (optional - may be empty for panel-level actions). - * - * @generated from field: optional string session_id = 1; - */ - sessionId?: string; - - /** - * Type of interaction (from UserInteractionEvent.InteractionType enum). - * - * @generated from field: session.v1.UserInteractionEvent.InteractionType interaction_type = 2; - */ - interactionType: UserInteractionEvent_InteractionType; - - /** - * Additional context about the interaction. - * - * @generated from field: optional string context = 3; - */ - context?: string; - - /** - * Optional: Notification ID if this interaction involves a notification. - * - * @generated from field: optional string notification_id = 4; - */ - notificationId?: string; - - /** - * Optional: Additional metadata as key-value pairs. - * - * @generated from field: map metadata = 5; - */ - metadata: { [key: string]: string }; -}; - -/** - * Describes the message session.v1.LogUserInteractionRequest. - * Use `create(LogUserInteractionRequestSchema)` to create a new message. - */ -export const LogUserInteractionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 23); - -/** - * @generated from message session.v1.LogUserInteractionResponse - */ -export type LogUserInteractionResponse = Message<"session.v1.LogUserInteractionResponse"> & { - /** - * Whether the log was successfully recorded. - * - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * Optional: Error message if logging failed. - * - * @generated from field: optional string error = 2; - */ - error?: string; -}; - -/** - * Describes the message session.v1.LogUserInteractionResponse. - * Use `create(LogUserInteractionResponseSchema)` to create a new message. - */ -export const LogUserInteractionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 24); - -/** - * @generated from message session.v1.GetClaudeConfigRequest - */ -export type GetClaudeConfigRequest = Message<"session.v1.GetClaudeConfigRequest"> & { - /** - * Filename to retrieve (e.g., "CLAUDE.md", "settings.json", "agents.md") - * - * @generated from field: string filename = 1; - */ - filename: string; -}; - -/** - * Describes the message session.v1.GetClaudeConfigRequest. - * Use `create(GetClaudeConfigRequestSchema)` to create a new message. - */ -export const GetClaudeConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 25); - -/** - * @generated from message session.v1.GetClaudeConfigResponse - */ -export type GetClaudeConfigResponse = Message<"session.v1.GetClaudeConfigResponse"> & { - /** - * Configuration file data - * - * @generated from field: session.v1.ClaudeConfigFile config = 1; - */ - config?: ClaudeConfigFile; -}; - -/** - * Describes the message session.v1.GetClaudeConfigResponse. - * Use `create(GetClaudeConfigResponseSchema)` to create a new message. - */ -export const GetClaudeConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 26); - -/** - * Empty request - returns all config files - * - * @generated from message session.v1.ListClaudeConfigsRequest - */ -export type ListClaudeConfigsRequest = Message<"session.v1.ListClaudeConfigsRequest"> & { -}; - -/** - * Describes the message session.v1.ListClaudeConfigsRequest. - * Use `create(ListClaudeConfigsRequestSchema)` to create a new message. - */ -export const ListClaudeConfigsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 27); - -/** - * @generated from message session.v1.ListClaudeConfigsResponse - */ -export type ListClaudeConfigsResponse = Message<"session.v1.ListClaudeConfigsResponse"> & { - /** - * List of all configuration files - * - * @generated from field: repeated session.v1.ClaudeConfigFile configs = 1; - */ - configs: ClaudeConfigFile[]; -}; - -/** - * Describes the message session.v1.ListClaudeConfigsResponse. - * Use `create(ListClaudeConfigsResponseSchema)` to create a new message. - */ -export const ListClaudeConfigsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 28); - -/** - * @generated from message session.v1.UpdateClaudeConfigRequest - */ -export type UpdateClaudeConfigRequest = Message<"session.v1.UpdateClaudeConfigRequest"> & { - /** - * Filename to update - * - * @generated from field: string filename = 1; - */ - filename: string; - - /** - * New file content - * - * @generated from field: string content = 2; - */ - content: string; - - /** - * If true, validate JSON content before writing (for .json files) - * - * @generated from field: bool validate = 3; - */ - validate: boolean; -}; - -/** - * Describes the message session.v1.UpdateClaudeConfigRequest. - * Use `create(UpdateClaudeConfigRequestSchema)` to create a new message. - */ -export const UpdateClaudeConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 29); - -/** - * @generated from message session.v1.UpdateClaudeConfigResponse - */ -export type UpdateClaudeConfigResponse = Message<"session.v1.UpdateClaudeConfigResponse"> & { - /** - * Updated configuration file data - * - * @generated from field: session.v1.ClaudeConfigFile config = 1; - */ - config?: ClaudeConfigFile; -}; - -/** - * Describes the message session.v1.UpdateClaudeConfigResponse. - * Use `create(UpdateClaudeConfigResponseSchema)` to create a new message. - */ -export const UpdateClaudeConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 30); - -/** - * @generated from message session.v1.ClaudeConfigFile - */ -export type ClaudeConfigFile = Message<"session.v1.ClaudeConfigFile"> & { - /** - * Filename (e.g., "CLAUDE.md", "settings.json") - * - * @generated from field: string name = 1; - */ - name: string; - - /** - * Absolute path to the file - * - * @generated from field: string path = 2; - */ - path: string; - - /** - * File content - * - * @generated from field: string content = 3; - */ - content: string; - - /** - * Last modification timestamp - * - * @generated from field: google.protobuf.Timestamp mod_time = 4; - */ - modTime?: Timestamp; -}; - -/** - * Describes the message session.v1.ClaudeConfigFile. - * Use `create(ClaudeConfigFileSchema)` to create a new message. - */ -export const ClaudeConfigFileSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 31); - -/** - * @generated from message session.v1.ListClaudeHistoryRequest - */ -export type ListClaudeHistoryRequest = Message<"session.v1.ListClaudeHistoryRequest"> & { - /** - * Optional project path filter - * - * @generated from field: optional string project = 1; - */ - project?: string; - - /** - * Optional search query (searches name and project) - * - * @generated from field: optional string search_query = 2; - */ - searchQuery?: string; - - /** - * Legacy limit field; prefer page_size for new callers. - * - * @generated from field: int32 limit = 3; - */ - limit: number; - - /** - * Maximum number of results per page (default 100, max 500). - * When combined with page_token this enables cursor-based pagination. - * - * @generated from field: int32 page_size = 4; - */ - pageSize: number; - - /** - * Opaque pagination token returned by a previous ListClaudeHistory call. - * When set, returns the page of results after the cursor position. - * Leave empty to start from the beginning. - * - * @generated from field: string page_token = 5; - */ - pageToken: string; - - /** - * When true, best-effort exclude sessions whose live Instance has - * Hidden=true — same semantics as SearchClaudeHistoryRequest's field of - * the same name. Default false. - * - * @generated from field: optional bool exclude_automation_sessions = 6; - */ - excludeAutomationSessions?: boolean; -}; - -/** - * Describes the message session.v1.ListClaudeHistoryRequest. - * Use `create(ListClaudeHistoryRequestSchema)` to create a new message. - */ -export const ListClaudeHistoryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 32); - -/** - * @generated from message session.v1.ListClaudeHistoryResponse - */ -export type ListClaudeHistoryResponse = Message<"session.v1.ListClaudeHistoryResponse"> & { - /** - * List of history entries for this page - * - * @generated from field: repeated session.v1.ClaudeHistoryEntry entries = 1; - */ - entries: ClaudeHistoryEntry[]; - - /** - * Total count of matching entries across all pages - * - * @generated from field: int32 total_count = 2; - */ - totalCount: number; - - /** - * Opaque token to pass as page_token in the next request. - * Empty string indicates this is the last page. - * - * @generated from field: string next_page_token = 3; - */ - nextPageToken: string; -}; - -/** - * Describes the message session.v1.ListClaudeHistoryResponse. - * Use `create(ListClaudeHistoryResponseSchema)` to create a new message. - */ -export const ListClaudeHistoryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 33); - -/** - * @generated from message session.v1.GetClaudeHistoryDetailRequest - */ -export type GetClaudeHistoryDetailRequest = Message<"session.v1.GetClaudeHistoryDetailRequest"> & { - /** - * History entry ID - * - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.GetClaudeHistoryDetailRequest. - * Use `create(GetClaudeHistoryDetailRequestSchema)` to create a new message. - */ -export const GetClaudeHistoryDetailRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 34); - -/** - * @generated from message session.v1.GetClaudeHistoryDetailResponse - */ -export type GetClaudeHistoryDetailResponse = Message<"session.v1.GetClaudeHistoryDetailResponse"> & { - /** - * Detailed history entry - * - * @generated from field: session.v1.ClaudeHistoryEntry entry = 1; - */ - entry?: ClaudeHistoryEntry; -}; - -/** - * Describes the message session.v1.GetClaudeHistoryDetailResponse. - * Use `create(GetClaudeHistoryDetailResponseSchema)` to create a new message. - */ -export const GetClaudeHistoryDetailResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 35); - -/** - * @generated from message session.v1.ClaudeHistoryEntry - */ -export type ClaudeHistoryEntry = Message<"session.v1.ClaudeHistoryEntry"> & { - /** - * Unique conversation identifier - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Conversation title/name - * - * @generated from field: string name = 2; - */ - name: string; - - /** - * Project/directory path - * - * @generated from field: string project = 3; - */ - project: string; - - /** - * Conversation creation timestamp - * - * @generated from field: google.protobuf.Timestamp created_at = 4; - */ - createdAt?: Timestamp; - - /** - * Last update timestamp - * - * @generated from field: google.protobuf.Timestamp updated_at = 5; - */ - updatedAt?: Timestamp; - - /** - * Claude model used (e.g., "claude-sonnet-4") - * - * @generated from field: string model = 6; - */ - model: string; - - /** - * Number of messages in the conversation - * - * @generated from field: int32 message_count = 7; - */ - messageCount: number; - - /** - * VCS state for the project directory — populated only by GetClaudeHistoryDetail - * (lazy enrichment, not included in list responses). Null/absent means the - * directory is not a version-controlled repo or state was not requested. - * - * @generated from field: session.v1.VCSStatus vcs_status = 8; - */ - vcsStatus?: VCSStatus; - - /** - * Git branch the project directory was on when last observed (60s TTL cache). - * Empty when the directory is not a git repo or branch could not be resolved. - * - * @generated from field: string branch = 9; - */ - branch: string; - - /** - * Live session status, cross-referenced with in-memory session store via ResumeId. - * SESSION_STATUS_UNSPECIFIED means no live session matches this history entry. - * - * @generated from field: session.v1.SessionStatus session_status = 10; - */ - sessionStatus: SessionStatus; - - /** - * Short git status summary (e.g. "2 modified, 1 untracked"). - * Only populated when a live worktree exists for this entry. - * - * @generated from field: string git_status_summary = 11; - */ - gitStatusSummary: string; - - /** - * Message of the most recent git commit in the project directory. - * Only populated when a live worktree exists for this entry. - * - * @generated from field: string last_commit_message = 12; - */ - lastCommitMessage: string; - - /** - * Number of files changed in the worktree diff vs HEAD. - * Only populated when a live worktree exists for this entry. - * - * @generated from field: int32 diff_file_count = 13; - */ - diffFileCount: number; -}; - -/** - * Describes the message session.v1.ClaudeHistoryEntry. - * Use `create(ClaudeHistoryEntrySchema)` to create a new message. - */ -export const ClaudeHistoryEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 36); - -/** - * @generated from message session.v1.GetClaudeHistoryMessagesRequest - */ -export type GetClaudeHistoryMessagesRequest = Message<"session.v1.GetClaudeHistoryMessagesRequest"> & { - /** - * History entry ID (session ID) - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Optional limit on number of messages to return - * - * @generated from field: int32 limit = 2; - */ - limit: number; - - /** - * Optional offset for pagination (reads from the start of the conversation) - * - * @generated from field: int32 offset = 3; - */ - offset: number; - - /** - * When true and limit > 0, return the last `limit` messages instead of the - * first `limit` messages. Used by the preview panel to efficiently read - * the tail of a large conversation file without loading the whole file. - * Mutually exclusive with offset. - * - * @generated from field: bool tail = 4; - */ - tail: boolean; - - /** - * When set, overrides offset: the server centers the returned page on - * this message index (offset = max(0, anchor_index - limit/2)), - * enabling forward/backward scroll paging without re-running search. - * Mutually exclusive with tail. - * - * @generated from field: optional int32 anchor_index = 5; - */ - anchorIndex?: number; -}; - -/** - * Describes the message session.v1.GetClaudeHistoryMessagesRequest. - * Use `create(GetClaudeHistoryMessagesRequestSchema)` to create a new message. - */ -export const GetClaudeHistoryMessagesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 37); - -/** - * @generated from message session.v1.GetClaudeHistoryMessagesResponse - */ -export type GetClaudeHistoryMessagesResponse = Message<"session.v1.GetClaudeHistoryMessagesResponse"> & { - /** - * Messages from the conversation - * - * @generated from field: repeated session.v1.ClaudeMessage messages = 1; - */ - messages: ClaudeMessage[]; - - /** - * Total number of messages in the conversation - * - * @generated from field: int32 total_count = 2; - */ - totalCount: number; -}; - -/** - * Describes the message session.v1.GetClaudeHistoryMessagesResponse. - * Use `create(GetClaudeHistoryMessagesResponseSchema)` to create a new message. - */ -export const GetClaudeHistoryMessagesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 38); - -/** - * @generated from message session.v1.ClaudeMessage - */ -export type ClaudeMessage = Message<"session.v1.ClaudeMessage"> & { - /** - * Message role (user or assistant) - * - * @generated from field: string role = 1; - */ - role: string; - - /** - * Message content (text or JSON string) - * - * @generated from field: string content = 2; - */ - content: string; - - /** - * Message timestamp - * - * @generated from field: google.protobuf.Timestamp timestamp = 3; - */ - timestamp?: Timestamp; - - /** - * Model used (for assistant messages) - * - * @generated from field: string model = 4; - */ - model: string; -}; - -/** - * Describes the message session.v1.ClaudeMessage. - * Use `create(ClaudeMessageSchema)` to create a new message. - */ -export const ClaudeMessageSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 39); - -/** - * @generated from message session.v1.SearchClaudeHistoryRequest - */ -export type SearchClaudeHistoryRequest = Message<"session.v1.SearchClaudeHistoryRequest"> & { - /** - * Search query (required). Supports natural language queries. - * - * @generated from field: string query = 1; - */ - query: string; - - /** - * Optional project path filter. - * - * @generated from field: optional string project = 2; - */ - project?: string; - - /** - * Optional model filter (e.g., "claude-sonnet-4"). - * - * @generated from field: optional string model = 3; - */ - model?: string; - - /** - * Optional start of date range filter. - * - * @generated from field: optional google.protobuf.Timestamp start_time = 4; - */ - startTime?: Timestamp; - - /** - * Optional end of date range filter. - * - * @generated from field: optional google.protobuf.Timestamp end_time = 5; - */ - endTime?: Timestamp; - - /** - * Maximum number of results to return (default: 20, max: 100). - * - * @generated from field: int32 limit = 6; - */ - limit: number; - - /** - * Number of results to skip for pagination (default: 0). - * - * @generated from field: int32 offset = 7; - */ - offset: number; - - /** - * When true, collapse results to one entry per session (highest-scored - * hit kept; others counted via more_matches_in_session_count). Default false. - * - * @generated from field: optional bool group_by_session = 8; - */ - groupBySession?: boolean; - - /** - * When true, populate context_window/bookend_first/bookend_last on each - * retained result. Default false. - * - * @generated from field: optional bool include_context = 9; - */ - includeContext?: boolean; - - /** - * When true, best-effort exclude sessions whose live Instance has - * Hidden=true. Sessions with no live Instance record are NOT excluded - * (signal unavailable, not assumed absent). Default false. - * - * @generated from field: optional bool exclude_automation_sessions = 10; - */ - excludeAutomationSessions?: boolean; -}; - -/** - * Describes the message session.v1.SearchClaudeHistoryRequest. - * Use `create(SearchClaudeHistoryRequestSchema)` to create a new message. - */ -export const SearchClaudeHistoryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 40); - -/** - * @generated from message session.v1.SearchClaudeHistoryResponse - */ -export type SearchClaudeHistoryResponse = Message<"session.v1.SearchClaudeHistoryResponse"> & { - /** - * List of search results, ranked by relevance. - * - * @generated from field: repeated session.v1.SearchResult results = 1; - */ - results: SearchResult[]; - - /** - * Total number of matching documents (before pagination). - * - * @generated from field: int32 total_matches = 2; - */ - totalMatches: number; - - /** - * Query execution time in milliseconds. - * - * @generated from field: int64 query_time_ms = 3; - */ - queryTimeMs: bigint; - - /** - * Indicates if there are more results available. - * - * @generated from field: bool has_more = 4; - */ - hasMore: boolean; -}; - -/** - * Describes the message session.v1.SearchClaudeHistoryResponse. - * Use `create(SearchClaudeHistoryResponseSchema)` to create a new message. - */ -export const SearchClaudeHistoryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 41); - -/** - * @generated from message session.v1.SearchResult - */ -export type SearchResult = Message<"session.v1.SearchResult"> & { - /** - * The conversation/session ID containing this match. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Conversation name/title. - * - * @generated from field: string session_name = 2; - */ - sessionName: string; - - /** - * Project/directory path. - * - * @generated from field: string project = 3; - */ - project: string; - - /** - * Index of the matched message within the conversation. - * - * @generated from field: int32 message_index = 4; - */ - messageIndex: number; - - /** - * BM25 relevance score (higher is more relevant). - * - * @generated from field: float score = 5; - */ - score: number; - - /** - * Contextual snippets showing where the query terms appear. - * - * @generated from field: repeated session.v1.SearchSnippet snippets = 6; - */ - snippets: SearchSnippet[]; - - /** - * Metadata about the match source. - * - * @generated from field: session.v1.SearchResultMetadata metadata = 7; - */ - metadata?: SearchResultMetadata; - - /** - * Count of additional matching messages in this session beyond this hit. - * Only meaningful when the request set group_by_session=true. - * - * @generated from field: int32 more_matches_in_session_count = 8; - */ - moreMatchesInSessionCount: number; - - /** - * ±5 messages around message_index, read from the raw conversation file. - * Populated only when the request set include_context=true. - * - * @generated from field: repeated session.v1.ClaudeMessage context_window = 9; - */ - contextWindow: ClaudeMessage[]; - - /** - * First 3 messages of the session. Empty when context_window already - * spans the full session (see contextWindowAndBookends). - * - * @generated from field: repeated session.v1.ClaudeMessage bookend_first = 10; - */ - bookendFirst: ClaudeMessage[]; - - /** - * Last 3 messages of the session. Empty when context_window already - * spans the full session. - * - * @generated from field: repeated session.v1.ClaudeMessage bookend_last = 11; - */ - bookendLast: ClaudeMessage[]; -}; - -/** - * Describes the message session.v1.SearchResult. - * Use `create(SearchResultSchema)` to create a new message. - */ -export const SearchResultSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 42); - -/** - * @generated from message session.v1.SearchSnippet - */ -export type SearchSnippet = Message<"session.v1.SearchSnippet"> & { - /** - * Snippet text with surrounding context. - * - * @generated from field: string text = 1; - */ - text: string; - - /** - * Ranges within text that should be highlighted. - * - * @generated from field: repeated session.v1.HighlightRange highlight_ranges = 2; - */ - highlightRanges: HighlightRange[]; - - /** - * Role of the message (user, assistant, system). - * - * @generated from field: string message_role = 3; - */ - messageRole: string; - - /** - * When the message was created. - * - * @generated from field: google.protobuf.Timestamp message_time = 4; - */ - messageTime?: Timestamp; -}; - -/** - * Describes the message session.v1.SearchSnippet. - * Use `create(SearchSnippetSchema)` to create a new message. - */ -export const SearchSnippetSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 43); - -/** - * @generated from message session.v1.HighlightRange - */ -export type HighlightRange = Message<"session.v1.HighlightRange"> & { - /** - * Start position in text (character offset). - * - * @generated from field: int32 start = 1; - */ - start: number; - - /** - * End position in text (character offset). - * - * @generated from field: int32 end = 2; - */ - end: number; -}; - -/** - * Describes the message session.v1.HighlightRange. - * Use `create(HighlightRangeSchema)` to create a new message. - */ -export const HighlightRangeSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 44); - -/** - * @generated from message session.v1.SearchResultMetadata - */ -export type SearchResultMetadata = Message<"session.v1.SearchResultMetadata"> & { - /** - * True if match is in session name/project (vs message content). - * - * @generated from field: bool is_metadata_match = 1; - */ - isMetadataMatch: boolean; - - /** - * Source of the match: "session_name", "project", "message_content". - * - * @generated from field: string match_source = 2; - */ - matchSource: string; - - /** - * Claude model used in this conversation. - * - * @generated from field: string model = 3; - */ - model: string; - - /** - * Conversation creation timestamp. - * - * @generated from field: google.protobuf.Timestamp created_at = 4; - */ - createdAt?: Timestamp; -}; - -/** - * Describes the message session.v1.SearchResultMetadata. - * Use `create(SearchResultMetadataSchema)` to create a new message. - */ -export const SearchResultMetadataSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 45); - -/** - * @generated from message session.v1.GetPRInfoRequest - */ -export type GetPRInfoRequest = Message<"session.v1.GetPRInfoRequest"> & { - /** - * Session identifier (must be a PR session) - * - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.GetPRInfoRequest. - * Use `create(GetPRInfoRequestSchema)` to create a new message. - */ -export const GetPRInfoRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 46); - -/** - * @generated from message session.v1.GetPRInfoResponse - */ -export type GetPRInfoResponse = Message<"session.v1.GetPRInfoResponse"> & { - /** - * PR metadata - * - * @generated from field: session.v1.PRInfo pr_info = 1; - */ - prInfo?: PRInfo; -}; - -/** - * Describes the message session.v1.GetPRInfoResponse. - * Use `create(GetPRInfoResponseSchema)` to create a new message. - */ -export const GetPRInfoResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 47); - -/** - * @generated from message session.v1.GetPRCommentsRequest - */ -export type GetPRCommentsRequest = Message<"session.v1.GetPRCommentsRequest"> & { - /** - * Session identifier (must be a PR session) - * - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.GetPRCommentsRequest. - * Use `create(GetPRCommentsRequestSchema)` to create a new message. - */ -export const GetPRCommentsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 48); - -/** - * @generated from message session.v1.GetPRCommentsResponse - */ -export type GetPRCommentsResponse = Message<"session.v1.GetPRCommentsResponse"> & { - /** - * List of PR comments - * - * @generated from field: repeated session.v1.PRComment comments = 1; - */ - comments: PRComment[]; -}; - -/** - * Describes the message session.v1.GetPRCommentsResponse. - * Use `create(GetPRCommentsResponseSchema)` to create a new message. - */ -export const GetPRCommentsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 49); - -/** - * @generated from message session.v1.PostPRCommentRequest - */ -export type PostPRCommentRequest = Message<"session.v1.PostPRCommentRequest"> & { - /** - * Session identifier (must be a PR session) - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Comment body (required) - * - * @generated from field: string body = 2; - */ - body: string; -}; - -/** - * Describes the message session.v1.PostPRCommentRequest. - * Use `create(PostPRCommentRequestSchema)` to create a new message. - */ -export const PostPRCommentRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 50); - -/** - * @generated from message session.v1.PostPRCommentResponse - */ -export type PostPRCommentResponse = Message<"session.v1.PostPRCommentResponse"> & { - /** - * Whether the comment was successfully posted - * - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * Human-readable message - * - * @generated from field: string message = 2; - */ - message: string; -}; - -/** - * Describes the message session.v1.PostPRCommentResponse. - * Use `create(PostPRCommentResponseSchema)` to create a new message. - */ -export const PostPRCommentResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 51); - -/** - * @generated from message session.v1.MergePRRequest - */ -export type MergePRRequest = Message<"session.v1.MergePRRequest"> & { - /** - * Session identifier (must be a PR session) - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Merge method: "merge", "squash", or "rebase" (default: "merge") - * - * @generated from field: optional string method = 2; - */ - method?: string; -}; - -/** - * Describes the message session.v1.MergePRRequest. - * Use `create(MergePRRequestSchema)` to create a new message. - */ -export const MergePRRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 52); - -/** - * @generated from message session.v1.MergePRResponse - */ -export type MergePRResponse = Message<"session.v1.MergePRResponse"> & { - /** - * Whether the PR was successfully merged - * - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * Human-readable message - * - * @generated from field: string message = 2; - */ - message: string; -}; - -/** - * Describes the message session.v1.MergePRResponse. - * Use `create(MergePRResponseSchema)` to create a new message. - */ -export const MergePRResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 53); - -/** - * @generated from message session.v1.ClosePRRequest - */ -export type ClosePRRequest = Message<"session.v1.ClosePRRequest"> & { - /** - * Session identifier (must be a PR session) - * - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.ClosePRRequest. - * Use `create(ClosePRRequestSchema)` to create a new message. - */ -export const ClosePRRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 54); - -/** - * @generated from message session.v1.ClosePRResponse - */ -export type ClosePRResponse = Message<"session.v1.ClosePRResponse"> & { - /** - * Whether the PR was successfully closed - * - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * Human-readable message - * - * @generated from field: string message = 2; - */ - message: string; -}; - -/** - * Describes the message session.v1.ClosePRResponse. - * Use `create(ClosePRResponseSchema)` to create a new message. - */ -export const ClosePRResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 55); - -/** - * SendNotificationRequest allows tmux sessions to send notifications. - * - * @generated from message session.v1.SendNotificationRequest - */ -export type SendNotificationRequest = Message<"session.v1.SendNotificationRequest"> & { - /** - * Session identifier sending the notification (required) - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Type of notification (determines default priority and UI treatment) - * - * @generated from field: session.v1.NotificationType notification_type = 2; - */ - notificationType: NotificationType; - - /** - * Priority level (optional, overrides default for notification type) - * - * @generated from field: session.v1.NotificationPriority priority = 3; - */ - priority: NotificationPriority; - - /** - * Human-readable title (required) - * - * @generated from field: string title = 4; - */ - title: string; - - /** - * Detailed message (optional) - * - * @generated from field: string message = 5; - */ - message: string; - - /** - * Optional metadata (key-value pairs for additional context) - * Common keys: "command", "file", "duration", "error_code" - * - * @generated from field: map metadata = 6; - */ - metadata: { [key: string]: string }; -}; - -/** - * Describes the message session.v1.SendNotificationRequest. - * Use `create(SendNotificationRequestSchema)` to create a new message. - */ -export const SendNotificationRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 56); - -/** - * SendNotificationResponse confirms notification was received. - * - * @generated from message session.v1.SendNotificationResponse - */ -export type SendNotificationResponse = Message<"session.v1.SendNotificationResponse"> & { - /** - * Whether notification was accepted and broadcast - * - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * Human-readable response message - * - * @generated from field: string message = 2; - */ - message: string; - - /** - * Notification ID (for tracking/debugging) - * - * @generated from field: string notification_id = 3; - */ - notificationId: string; -}; - -/** - * Describes the message session.v1.SendNotificationResponse. - * Use `create(SendNotificationResponseSchema)` to create a new message. - */ -export const SendNotificationResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 57); - -/** - * FocusWindowRequest specifies which application window to bring to front. - * - * @generated from message session.v1.FocusWindowRequest - */ -export type FocusWindowRequest = Message<"session.v1.FocusWindowRequest"> & { - /** - * macOS bundle identifier (e.g., "com.jetbrains.intellij", "com.microsoft.VSCode") - * This is the preferred method for window activation. - * - * @generated from field: optional string bundle_id = 1; - */ - bundleId?: string; - - /** - * Application name (e.g., "IntelliJ IDEA", "Visual Studio Code") - * Used as fallback if bundle_id is not provided. - * - * @generated from field: optional string app_name = 2; - */ - appName?: string; - - /** - * Process ID (optional, for more specific targeting) - * - * @generated from field: optional int32 pid = 3; - */ - pid?: number; - - /** - * Project name/path (for IDEs that support project-specific activation) - * - * @generated from field: optional string project = 4; - */ - project?: string; -}; - -/** - * Describes the message session.v1.FocusWindowRequest. - * Use `create(FocusWindowRequestSchema)` to create a new message. - */ -export const FocusWindowRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 58); - -/** - * FocusWindowResponse indicates whether window activation succeeded. - * - * @generated from message session.v1.FocusWindowResponse - */ -export type FocusWindowResponse = Message<"session.v1.FocusWindowResponse"> & { - /** - * Whether the window was successfully activated - * - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * Human-readable message (error details if failed) - * - * @generated from field: string message = 2; - */ - message: string; - - /** - * Platform (e.g., "darwin", "linux", "windows") - * - * @generated from field: string platform = 3; - */ - platform: string; -}; - -/** - * Describes the message session.v1.FocusWindowResponse. - * Use `create(FocusWindowResponseSchema)` to create a new message. - */ -export const FocusWindowResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 59); - -/** - * RenameSessionRequest changes the title of an existing session. - * - * @generated from message session.v1.RenameSessionRequest - */ -export type RenameSessionRequest = Message<"session.v1.RenameSessionRequest"> & { - /** - * Session identifier (uses session title as ID). - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * New title for the session (must be unique). - * - * @generated from field: string new_title = 2; - */ - newTitle: string; -}; - -/** - * Describes the message session.v1.RenameSessionRequest. - * Use `create(RenameSessionRequestSchema)` to create a new message. - */ -export const RenameSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 60); - -/** - * RenameSessionResponse returns the updated session. - * - * @generated from message session.v1.RenameSessionResponse - */ -export type RenameSessionResponse = Message<"session.v1.RenameSessionResponse"> & { - /** - * Updated session with new title. - * - * @generated from field: session.v1.Session session = 1; - */ - session?: Session; -}; - -/** - * Describes the message session.v1.RenameSessionResponse. - * Use `create(RenameSessionResponseSchema)` to create a new message. - */ -export const RenameSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 61); - -/** - * RestartSessionRequest restarts a session. - * - * @generated from message session.v1.RestartSessionRequest - */ -export type RestartSessionRequest = Message<"session.v1.RestartSessionRequest"> & { - /** - * Session identifier (uses session title as ID). - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Optional: preserve terminal output before restart (default: false). - * - * @generated from field: bool preserve_output = 2; - */ - preserveOutput: boolean; -}; - -/** - * Describes the message session.v1.RestartSessionRequest. - * Use `create(RestartSessionRequestSchema)` to create a new message. - */ -export const RestartSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 62); - -/** - * RestartSessionResponse indicates restart success. - * - * @generated from message session.v1.RestartSessionResponse - */ -export type RestartSessionResponse = Message<"session.v1.RestartSessionResponse"> & { - /** - * Restarted session. - * - * @generated from field: session.v1.Session session = 1; - */ - session?: Session; - - /** - * Whether the restart was successful. - * - * @generated from field: bool success = 2; - */ - success: boolean; - - /** - * Human-readable message (error details if failed). - * - * @generated from field: string message = 3; - */ - message: string; -}; - -/** - * Describes the message session.v1.RestartSessionResponse. - * Use `create(RestartSessionResponseSchema)` to create a new message. - */ -export const RestartSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 63); - -/** - * GetWorkspaceInfoRequest retrieves VCS information for a session. - * - * @generated from message session.v1.GetWorkspaceInfoRequest - */ -export type GetWorkspaceInfoRequest = Message<"session.v1.GetWorkspaceInfoRequest"> & { - /** - * Session identifier. - * - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.GetWorkspaceInfoRequest. - * Use `create(GetWorkspaceInfoRequestSchema)` to create a new message. - */ -export const GetWorkspaceInfoRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 64); - -/** - * GetWorkspaceInfoResponse returns VCS and workspace information. - * - * @generated from message session.v1.GetWorkspaceInfoResponse - */ -export type GetWorkspaceInfoResponse = Message<"session.v1.GetWorkspaceInfoResponse"> & { - /** - * VCS and workspace information. - * - * @generated from field: session.v1.VCSInfo vcs_info = 1; - */ - vcsInfo?: VCSInfo; - - /** - * Error message if VCS info couldn't be retrieved. - * - * @generated from field: string error = 2; - */ - error: string; -}; - -/** - * Describes the message session.v1.GetWorkspaceInfoResponse. - * Use `create(GetWorkspaceInfoResponseSchema)` to create a new message. - */ -export const GetWorkspaceInfoResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 65); - -/** - * ListWorkspaceTargetsRequest retrieves available switch targets for a session. - * - * @generated from message session.v1.ListWorkspaceTargetsRequest - */ -export type ListWorkspaceTargetsRequest = Message<"session.v1.ListWorkspaceTargetsRequest"> & { - /** - * Session identifier. - * - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.ListWorkspaceTargetsRequest. - * Use `create(ListWorkspaceTargetsRequestSchema)` to create a new message. - */ -export const ListWorkspaceTargetsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 66); - -/** - * ListWorkspaceTargetsResponse returns available workspace switch targets. - * - * @generated from message session.v1.ListWorkspaceTargetsResponse - */ -export type ListWorkspaceTargetsResponse = Message<"session.v1.ListWorkspaceTargetsResponse"> & { - /** - * Available switch targets. - * - * @generated from field: session.v1.AvailableWorkspaceTargets targets = 1; - */ - targets?: AvailableWorkspaceTargets; - - /** - * Error message if targets couldn't be retrieved. - * - * @generated from field: string error = 2; - */ - error: string; -}; - -/** - * Describes the message session.v1.ListWorkspaceTargetsResponse. - * Use `create(ListWorkspaceTargetsResponseSchema)` to create a new message. - */ -export const ListWorkspaceTargetsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 67); - -/** - * SwitchWorkspaceRequest initiates a workspace switch for a session. - * - * @generated from message session.v1.SwitchWorkspaceRequest - */ -export type SwitchWorkspaceRequest = Message<"session.v1.SwitchWorkspaceRequest"> & { - /** - * Session identifier. - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Type of switch operation. - * - * @generated from field: session.v1.WorkspaceSwitchType switch_type = 2; - */ - switchType: WorkspaceSwitchType; - - /** - * Target destination (branch name, revision ID, worktree path, or directory path). - * - * @generated from field: string target = 3; - */ - target: string; - - /** - * Strategy for handling uncommitted changes. - * - * @generated from field: session.v1.ChangeStrategy change_strategy = 4; - */ - changeStrategy: ChangeStrategy; - - /** - * Create the bookmark/branch/worktree if it doesn't exist. - * - * @generated from field: bool create_if_missing = 5; - */ - createIfMissing: boolean; - - /** - * Base revision for new bookmark creation (empty = current). - * - * @generated from field: string base_revision = 6; - */ - baseRevision: string; -}; - -/** - * Describes the message session.v1.SwitchWorkspaceRequest. - * Use `create(SwitchWorkspaceRequestSchema)` to create a new message. - */ -export const SwitchWorkspaceRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 68); - -/** - * ResolveApprovalRequest approves or denies a pending tool use request. - * - * @generated from message session.v1.ResolveApprovalRequest - */ -export type ResolveApprovalRequest = Message<"session.v1.ResolveApprovalRequest"> & { - /** - * Unique approval ID (from notification metadata.approval_id). - * - * @generated from field: string approval_id = 1; - */ - approvalId: string; - - /** - * User's decision: "allow" or "deny". - * - * @generated from field: string decision = 2; - */ - decision: string; - - /** - * Optional reason shown to Claude when denying. - * - * @generated from field: optional string message = 3; - */ - message?: string; - - /** - * When true, the caller explicitly acknowledges failing CI and re-submits an - * already-blocked approval; the server skips the CI-red guard for this request only. - * - * @generated from field: bool override_ci_block = 4; - */ - overrideCiBlock: boolean; -}; - -/** - * Describes the message session.v1.ResolveApprovalRequest. - * Use `create(ResolveApprovalRequestSchema)` to create a new message. - */ -export const ResolveApprovalRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 69); - -/** - * ResolveApprovalResponse confirms the decision was received. - * - * @generated from message session.v1.ResolveApprovalResponse - */ -export type ResolveApprovalResponse = Message<"session.v1.ResolveApprovalResponse"> & { - /** - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * @generated from field: string message = 2; - */ - message: string; -}; - -/** - * Describes the message session.v1.ResolveApprovalResponse. - * Use `create(ResolveApprovalResponseSchema)` to create a new message. - */ -export const ResolveApprovalResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 70); - -/** - * ListPendingApprovalsRequest filters pending approvals. - * - * @generated from message session.v1.ListPendingApprovalsRequest - */ -export type ListPendingApprovalsRequest = Message<"session.v1.ListPendingApprovalsRequest"> & { - /** - * Optional: only return approvals for this session. - * - * @generated from field: optional string session_id = 1; - */ - sessionId?: string; -}; - -/** - * Describes the message session.v1.ListPendingApprovalsRequest. - * Use `create(ListPendingApprovalsRequestSchema)` to create a new message. - */ -export const ListPendingApprovalsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 71); - -/** - * ListPendingApprovalsResponse returns pending approvals. - * - * @generated from message session.v1.ListPendingApprovalsResponse - */ -export type ListPendingApprovalsResponse = Message<"session.v1.ListPendingApprovalsResponse"> & { - /** - * @generated from field: repeated session.v1.PendingApprovalProto approvals = 1; - */ - approvals: PendingApprovalProto[]; -}; - -/** - * Describes the message session.v1.ListPendingApprovalsResponse. - * Use `create(ListPendingApprovalsResponseSchema)` to create a new message. - */ -export const ListPendingApprovalsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 72); - -/** - * SwitchWorkspaceResponse returns the result of a workspace switch operation. - * - * @generated from message session.v1.SwitchWorkspaceResponse - */ -export type SwitchWorkspaceResponse = Message<"session.v1.SwitchWorkspaceResponse"> & { - /** - * Whether the switch was successful. - * - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * Human-readable message (error details if failed). - * - * @generated from field: string message = 2; - */ - message: string; - - /** - * Revision before the switch. - * - * @generated from field: string previous_revision = 3; - */ - previousRevision: string; - - /** - * Revision after the switch. - * - * @generated from field: string current_revision = 4; - */ - currentRevision: string; - - /** - * VCS type that was used. - * - * @generated from field: session.v1.VCSType vcs_type = 5; - */ - vcsType: VCSType; - - /** - * Description of how uncommitted changes were handled. - * - * @generated from field: string changes_handled = 6; - */ - changesHandled: string; - - /** - * Updated session after the switch. - * - * @generated from field: session.v1.Session session = 7; - */ - session?: Session; -}; - -/** - * Describes the message session.v1.SwitchWorkspaceResponse. - * Use `create(SwitchWorkspaceResponseSchema)` to create a new message. - */ -export const SwitchWorkspaceResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 73); - -/** - * CreateDebugSnapshotRequest triggers a server-side diagnostic snapshot. - * - * @generated from message session.v1.CreateDebugSnapshotRequest - */ -export type CreateDebugSnapshotRequest = Message<"session.v1.CreateDebugSnapshotRequest"> & { - /** - * Optional user note describing the issue being diagnosed. - * - * @generated from field: optional string note = 1; - */ - note?: string; - - /** - * Optional: Maximum number of recent log lines to include (default: 200). - * - * @generated from field: optional int32 log_lines = 2; - */ - logLines?: number; -}; - -/** - * Describes the message session.v1.CreateDebugSnapshotRequest. - * Use `create(CreateDebugSnapshotRequestSchema)` to create a new message. - */ -export const CreateDebugSnapshotRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 74); - -/** - * CreateDebugSnapshotResponse returns the path and summary of the written snapshot. - * - * @generated from message session.v1.CreateDebugSnapshotResponse - */ -export type CreateDebugSnapshotResponse = Message<"session.v1.CreateDebugSnapshotResponse"> & { - /** - * Absolute path to the written snapshot JSON file. - * - * @generated from field: string file_path = 1; - */ - filePath: string; - - /** - * Human-readable summary (e.g., "Captured 5 sessions, 2 pending approvals, 200 log lines"). - * - * @generated from field: string summary = 2; - */ - summary: string; - - /** - * Timestamp when the snapshot was created (RFC3339). - * - * @generated from field: string timestamp = 3; - */ - timestamp: string; - - /** - * Size of the snapshot file in bytes. - * - * @generated from field: int64 file_size_bytes = 4; - */ - fileSizeBytes: bigint; -}; - -/** - * Describes the message session.v1.CreateDebugSnapshotResponse. - * Use `create(CreateDebugSnapshotResponseSchema)` to create a new message. - */ -export const CreateDebugSnapshotResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 75); - -/** - * NotificationHistoryRecord represents a persisted notification. - * - * @generated from message session.v1.NotificationHistoryRecord - */ -export type NotificationHistoryRecord = Message<"session.v1.NotificationHistoryRecord"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string session_id = 2; - */ - sessionId: string; - - /** - * @generated from field: string session_name = 3; - */ - sessionName: string; - - /** - * @generated from field: session.v1.NotificationType notification_type = 4; - */ - notificationType: NotificationType; - - /** - * @generated from field: session.v1.NotificationPriority priority = 5; - */ - priority: NotificationPriority; - - /** - * @generated from field: string title = 6; - */ - title: string; - - /** - * @generated from field: string message = 7; - */ - message: string; - - /** - * @generated from field: map metadata = 8; - */ - metadata: { [key: string]: string }; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 9; - */ - createdAt?: Timestamp; - - /** - * @generated from field: bool is_read = 10; - */ - isRead: boolean; - - /** - * @generated from field: optional google.protobuf.Timestamp read_at = 11; - */ - readAt?: Timestamp; - - /** - * Number of deduplicated occurrences this record represents. - * Default 0 means "1 occurrence" (backward-compatible with old clients). - * - * @generated from field: int32 occurrence_count = 12; - */ - occurrenceCount: number; - - /** - * Timestamp of the most recent occurrence (may differ from created_at - * which tracks the first occurrence). - * - * @generated from field: optional google.protobuf.Timestamp last_occurred_at = 13; - */ - lastOccurredAt?: Timestamp; -}; - -/** - * Describes the message session.v1.NotificationHistoryRecord. - * Use `create(NotificationHistoryRecordSchema)` to create a new message. - */ -export const NotificationHistoryRecordSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 76); - -/** - * GetNotificationHistoryRequest filters and paginates notification history. - * - * @generated from message session.v1.GetNotificationHistoryRequest - */ -export type GetNotificationHistoryRequest = Message<"session.v1.GetNotificationHistoryRequest"> & { - /** - * @generated from field: optional int32 limit = 1; - */ - limit?: number; - - /** - * @generated from field: optional int32 offset = 2; - */ - offset?: number; - - /** - * @generated from field: optional session.v1.NotificationType type_filter = 3; - */ - typeFilter?: NotificationType; - - /** - * @generated from field: optional string session_id = 4; - */ - sessionId?: string; - - /** - * @generated from field: optional bool unread_only = 5; - */ - unreadOnly?: boolean; -}; - -/** - * Describes the message session.v1.GetNotificationHistoryRequest. - * Use `create(GetNotificationHistoryRequestSchema)` to create a new message. - */ -export const GetNotificationHistoryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 77); - -/** - * GetNotificationHistoryResponse contains notification history results. - * - * @generated from message session.v1.GetNotificationHistoryResponse - */ -export type GetNotificationHistoryResponse = Message<"session.v1.GetNotificationHistoryResponse"> & { - /** - * @generated from field: repeated session.v1.NotificationHistoryRecord notifications = 1; - */ - notifications: NotificationHistoryRecord[]; - - /** - * @generated from field: int32 total_count = 2; - */ - totalCount: number; - - /** - * @generated from field: int32 unread_count = 3; - */ - unreadCount: number; - - /** - * @generated from field: bool has_more = 4; - */ - hasMore: boolean; -}; - -/** - * Describes the message session.v1.GetNotificationHistoryResponse. - * Use `create(GetNotificationHistoryResponseSchema)` to create a new message. - */ -export const GetNotificationHistoryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 78); - -/** - * MarkNotificationReadRequest marks notifications as read. - * If notification_ids is empty, all notifications are marked as read. - * - * @generated from message session.v1.MarkNotificationReadRequest - */ -export type MarkNotificationReadRequest = Message<"session.v1.MarkNotificationReadRequest"> & { - /** - * @generated from field: repeated string notification_ids = 1; - */ - notificationIds: string[]; -}; - -/** - * Describes the message session.v1.MarkNotificationReadRequest. - * Use `create(MarkNotificationReadRequestSchema)` to create a new message. - */ -export const MarkNotificationReadRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 79); - -/** - * MarkNotificationReadResponse confirms how many notifications were marked. - * - * @generated from message session.v1.MarkNotificationReadResponse - */ -export type MarkNotificationReadResponse = Message<"session.v1.MarkNotificationReadResponse"> & { - /** - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * @generated from field: int32 marked_count = 2; - */ - markedCount: number; -}; - -/** - * Describes the message session.v1.MarkNotificationReadResponse. - * Use `create(MarkNotificationReadResponseSchema)` to create a new message. - */ -export const MarkNotificationReadResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 80); - -/** - * ClearNotificationHistoryRequest removes notifications from history. - * - * @generated from message session.v1.ClearNotificationHistoryRequest - */ -export type ClearNotificationHistoryRequest = Message<"session.v1.ClearNotificationHistoryRequest"> & { - /** - * Optional: Clear notifications older than this timestamp (RFC3339 string). - * - * @generated from field: optional string before_timestamp = 1; - */ - beforeTimestamp?: string; -}; - -/** - * Describes the message session.v1.ClearNotificationHistoryRequest. - * Use `create(ClearNotificationHistoryRequestSchema)` to create a new message. - */ -export const ClearNotificationHistoryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 81); - -/** - * ClearNotificationHistoryResponse confirms how many notifications were cleared. - * - * @generated from message session.v1.ClearNotificationHistoryResponse - */ -export type ClearNotificationHistoryResponse = Message<"session.v1.ClearNotificationHistoryResponse"> & { - /** - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * @generated from field: int32 cleared_count = 2; - */ - clearedCount: number; -}; - -/** - * Describes the message session.v1.ClearNotificationHistoryResponse. - * Use `create(ClearNotificationHistoryResponseSchema)` to create a new message. - */ -export const ClearNotificationHistoryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 82); - -/** - * @generated from message session.v1.ListApprovalRulesRequest - */ -export type ListApprovalRulesRequest = Message<"session.v1.ListApprovalRulesRequest"> & { - /** - * Optional: filter by source ("user", "seed", "claude-settings"). Empty = all. - * - * @generated from field: optional string source_filter = 1; - */ - sourceFilter?: string; -}; - -/** - * Describes the message session.v1.ListApprovalRulesRequest. - * Use `create(ListApprovalRulesRequestSchema)` to create a new message. - */ -export const ListApprovalRulesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 83); - -/** - * @generated from message session.v1.ListApprovalRulesResponse - */ -export type ListApprovalRulesResponse = Message<"session.v1.ListApprovalRulesResponse"> & { - /** - * @generated from field: repeated session.v1.ApprovalRuleProto rules = 1; - */ - rules: ApprovalRuleProto[]; -}; - -/** - * Describes the message session.v1.ListApprovalRulesResponse. - * Use `create(ListApprovalRulesResponseSchema)` to create a new message. - */ -export const ListApprovalRulesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 84); - -/** - * @generated from message session.v1.UpsertApprovalRuleRequest - */ -export type UpsertApprovalRuleRequest = Message<"session.v1.UpsertApprovalRuleRequest"> & { - /** - * @generated from field: session.v1.ApprovalRuleProto rule = 1; - */ - rule?: ApprovalRuleProto; -}; - -/** - * Describes the message session.v1.UpsertApprovalRuleRequest. - * Use `create(UpsertApprovalRuleRequestSchema)` to create a new message. - */ -export const UpsertApprovalRuleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 85); - -/** - * @generated from message session.v1.UpsertApprovalRuleResponse - */ -export type UpsertApprovalRuleResponse = Message<"session.v1.UpsertApprovalRuleResponse"> & { - /** - * @generated from field: session.v1.ApprovalRuleProto rule = 1; - */ - rule?: ApprovalRuleProto; - - /** - * @generated from field: bool created = 2; - */ - created: boolean; -}; - -/** - * Describes the message session.v1.UpsertApprovalRuleResponse. - * Use `create(UpsertApprovalRuleResponseSchema)` to create a new message. - */ -export const UpsertApprovalRuleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 86); - -/** - * @generated from message session.v1.DeleteApprovalRuleRequest - */ -export type DeleteApprovalRuleRequest = Message<"session.v1.DeleteApprovalRuleRequest"> & { - /** - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.DeleteApprovalRuleRequest. - * Use `create(DeleteApprovalRuleRequestSchema)` to create a new message. - */ -export const DeleteApprovalRuleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 87); - -/** - * @generated from message session.v1.DeleteApprovalRuleResponse - */ -export type DeleteApprovalRuleResponse = Message<"session.v1.DeleteApprovalRuleResponse"> & { - /** - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * @generated from field: string message = 2; - */ - message: string; -}; - -/** - * Describes the message session.v1.DeleteApprovalRuleResponse. - * Use `create(DeleteApprovalRuleResponseSchema)` to create a new message. - */ -export const DeleteApprovalRuleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 88); - -/** - * @generated from message session.v1.GetApprovalAnalyticsRequest - */ -export type GetApprovalAnalyticsRequest = Message<"session.v1.GetApprovalAnalyticsRequest"> & { - /** - * Time window in days (default 7, max 90). - * - * @generated from field: optional int32 window_days = 1; - */ - windowDays?: number; -}; - -/** - * Describes the message session.v1.GetApprovalAnalyticsRequest. - * Use `create(GetApprovalAnalyticsRequestSchema)` to create a new message. - */ -export const GetApprovalAnalyticsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 89); - -/** - * @generated from message session.v1.GetApprovalAnalyticsResponse - */ -export type GetApprovalAnalyticsResponse = Message<"session.v1.GetApprovalAnalyticsResponse"> & { - /** - * @generated from field: session.v1.AnalyticsSummaryProto summary = 1; - */ - summary?: AnalyticsSummaryProto; - - /** - * Daily breakdown sorted ascending by date, covering the requested window. - * - * @generated from field: repeated session.v1.DailyBucketProto daily_buckets = 2; - */ - dailyBuckets: DailyBucketProto[]; -}; - -/** - * Describes the message session.v1.GetApprovalAnalyticsResponse. - * Use `create(GetApprovalAnalyticsResponseSchema)` to create a new message. - */ -export const GetApprovalAnalyticsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 90); - -/** - * @generated from message session.v1.GetProgramAnalyticsRequest - */ -export type GetProgramAnalyticsRequest = Message<"session.v1.GetProgramAnalyticsRequest"> & { - /** - * program is the executable name (e.g., "git", "gh", "npm"). - * - * @generated from field: string program = 1; - */ - program: string; - - /** - * window_days controls the time window (default 7, max 90). - * - * @generated from field: optional int32 window_days = 2; - */ - windowDays?: number; -}; - -/** - * Describes the message session.v1.GetProgramAnalyticsRequest. - * Use `create(GetProgramAnalyticsRequestSchema)` to create a new message. - */ -export const GetProgramAnalyticsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 91); - -/** - * @generated from message session.v1.GetProgramAnalyticsResponse - */ -export type GetProgramAnalyticsResponse = Message<"session.v1.GetProgramAnalyticsResponse"> & { - /** - * program echoed from the request. - * - * @generated from field: string program = 1; - */ - program: string; - - /** - * category is the program's category (e.g., "vcs", "node"). - * - * @generated from field: string category = 2; - */ - category: string; - - /** - * subcommands contains per-subcommand decision breakdown, sorted by total descending. - * - * @generated from field: repeated session.v1.SubcommandBreakdownProto subcommands = 3; - */ - subcommands: SubcommandBreakdownProto[]; - - /** - * recent_examples contains the last 20 raw command_preview strings across all subcommands. - * - * @generated from field: repeated string recent_examples = 4; - */ - recentExamples: string[]; - - /** - * trend contains per-day counts for the whole program in the window. - * - * @generated from field: repeated session.v1.DailyBucketProto trend = 5; - */ - trend: DailyBucketProto[]; -}; - -/** - * Describes the message session.v1.GetProgramAnalyticsResponse. - * Use `create(GetProgramAnalyticsResponseSchema)` to create a new message. - */ -export const GetProgramAnalyticsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 92); - -/** - * @generated from message session.v1.ListDatabasesRequest - */ -export type ListDatabasesRequest = Message<"session.v1.ListDatabasesRequest"> & { -}; - -/** - * Describes the message session.v1.ListDatabasesRequest. - * Use `create(ListDatabasesRequestSchema)` to create a new message. - */ -export const ListDatabasesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 93); - -/** - * @generated from message session.v1.ListDatabasesResponse - */ -export type ListDatabasesResponse = Message<"session.v1.ListDatabasesResponse"> & { - /** - * All discovered workspace databases. - * - * @generated from field: repeated session.v1.DatabaseInfo databases = 1; - */ - databases: DatabaseInfo[]; - - /** - * Workspace ID of the currently active database. - * - * @generated from field: string current_workspace_id = 2; - */ - currentWorkspaceId: string; -}; - -/** - * Describes the message session.v1.ListDatabasesResponse. - * Use `create(ListDatabasesResponseSchema)` to create a new message. - */ -export const ListDatabasesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 94); - -/** - * @generated from message session.v1.GetCurrentDatabaseRequest - */ -export type GetCurrentDatabaseRequest = Message<"session.v1.GetCurrentDatabaseRequest"> & { -}; - -/** - * Describes the message session.v1.GetCurrentDatabaseRequest. - * Use `create(GetCurrentDatabaseRequestSchema)` to create a new message. - */ -export const GetCurrentDatabaseRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 95); - -/** - * @generated from message session.v1.GetCurrentDatabaseResponse - */ -export type GetCurrentDatabaseResponse = Message<"session.v1.GetCurrentDatabaseResponse"> & { - /** - * Metadata for the currently active workspace database. - * - * @generated from field: session.v1.DatabaseInfo database = 1; - */ - database?: DatabaseInfo; -}; - -/** - * Describes the message session.v1.GetCurrentDatabaseResponse. - * Use `create(GetCurrentDatabaseResponseSchema)` to create a new message. - */ -export const GetCurrentDatabaseResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 96); - -/** - * SwitchDatabaseRequest specifies the target workspace to switch to. - * - * @generated from message session.v1.SwitchDatabaseRequest - */ -export type SwitchDatabaseRequest = Message<"session.v1.SwitchDatabaseRequest"> & { - /** - * Absolute path to the target workspace config directory. - * Must be under ~/.stapler-squad/ for security. - * - * @generated from field: string config_dir = 1; - */ - configDir: string; -}; - -/** - * Describes the message session.v1.SwitchDatabaseRequest. - * Use `create(SwitchDatabaseRequestSchema)` to create a new message. - */ -export const SwitchDatabaseRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 97); - -/** - * SwitchDatabaseResponse confirms the switch was initiated. - * - * @generated from message session.v1.SwitchDatabaseResponse - */ -export type SwitchDatabaseResponse = Message<"session.v1.SwitchDatabaseResponse"> & { - /** - * Whether the switch was successfully initiated. - * - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * Human-readable status message. - * - * @generated from field: string message = 2; - */ - message: string; -}; - -/** - * Describes the message session.v1.SwitchDatabaseResponse. - * Use `create(SwitchDatabaseResponseSchema)` to create a new message. - */ -export const SwitchDatabaseResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 98); - -/** - * MergeDatabaseRequest specifies the source workspace to merge sessions from. - * - * @generated from message session.v1.MergeDatabaseRequest - */ -export type MergeDatabaseRequest = Message<"session.v1.MergeDatabaseRequest"> & { - /** - * Absolute path to the source workspace config directory. - * Must be under ~/.stapler-squad/ for security. - * - * @generated from field: string config_dir = 1; - */ - configDir: string; -}; - -/** - * Describes the message session.v1.MergeDatabaseRequest. - * Use `create(MergeDatabaseRequestSchema)` to create a new message. - */ -export const MergeDatabaseRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 99); - -/** - * MergeDatabaseResponse reports how many sessions were imported. - * - * @generated from message session.v1.MergeDatabaseResponse - */ -export type MergeDatabaseResponse = Message<"session.v1.MergeDatabaseResponse"> & { - /** - * Whether the merge completed without error. - * - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * Human-readable status message. - * - * @generated from field: string message = 2; - */ - message: string; - - /** - * Number of sessions copied into the current database. - * - * @generated from field: int32 sessions_imported = 3; - */ - sessionsImported: number; - - /** - * Number of sessions skipped due to title conflicts. - * - * @generated from field: int32 sessions_skipped = 4; - */ - sessionsSkipped: number; -}; - -/** - * Describes the message session.v1.MergeDatabaseResponse. - * Use `create(MergeDatabaseResponseSchema)` to create a new message. - */ -export const MergeDatabaseResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 100); - -/** - * @generated from message session.v1.CreateCheckpointRequest - */ -export type CreateCheckpointRequest = Message<"session.v1.CreateCheckpointRequest"> & { - /** - * Session ID to checkpoint (uses session title as ID). - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Human-readable label for this checkpoint. - * - * @generated from field: string label = 2; - */ - label: string; -}; - -/** - * Describes the message session.v1.CreateCheckpointRequest. - * Use `create(CreateCheckpointRequestSchema)` to create a new message. - */ -export const CreateCheckpointRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 101); - -/** - * @generated from message session.v1.CreateCheckpointResponse - */ -export type CreateCheckpointResponse = Message<"session.v1.CreateCheckpointResponse"> & { - /** - * The newly created checkpoint. - * - * @generated from field: session.v1.CheckpointProto checkpoint = 1; - */ - checkpoint?: CheckpointProto; -}; - -/** - * Describes the message session.v1.CreateCheckpointResponse. - * Use `create(CreateCheckpointResponseSchema)` to create a new message. - */ -export const CreateCheckpointResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 102); - -/** - * @generated from message session.v1.ListCheckpointsRequest - */ -export type ListCheckpointsRequest = Message<"session.v1.ListCheckpointsRequest"> & { - /** - * Session ID to list checkpoints for. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; -}; - -/** - * Describes the message session.v1.ListCheckpointsRequest. - * Use `create(ListCheckpointsRequestSchema)` to create a new message. - */ -export const ListCheckpointsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 103); - -/** - * @generated from message session.v1.ListCheckpointsResponse - */ -export type ListCheckpointsResponse = Message<"session.v1.ListCheckpointsResponse"> & { - /** - * All checkpoints for the session, ordered by timestamp ascending. - * - * @generated from field: repeated session.v1.CheckpointProto checkpoints = 1; - */ - checkpoints: CheckpointProto[]; -}; - -/** - * Describes the message session.v1.ListCheckpointsResponse. - * Use `create(ListCheckpointsResponseSchema)` to create a new message. - */ -export const ListCheckpointsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 104); - -/** - * @generated from message session.v1.ForkSessionRequest - */ -export type ForkSessionRequest = Message<"session.v1.ForkSessionRequest"> & { - /** - * Source session ID to fork from. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Checkpoint ID on the source session to fork from. - * - * @generated from field: string checkpoint_id = 2; - */ - checkpointId: string; - - /** - * Title for the new forked session. Must be unique. - * - * @generated from field: string new_title = 3; - */ - newTitle: string; -}; - -/** - * Describes the message session.v1.ForkSessionRequest. - * Use `create(ForkSessionRequestSchema)` to create a new message. - */ -export const ForkSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 105); - -/** - * @generated from message session.v1.ForkSessionResponse - */ -export type ForkSessionResponse = Message<"session.v1.ForkSessionResponse"> & { - /** - * The newly created forked session. - * - * @generated from field: session.v1.Session session = 1; - */ - session?: Session; -}; - -/** - * Describes the message session.v1.ForkSessionResponse. - * Use `create(ForkSessionResponseSchema)` to create a new message. - */ -export const ForkSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 106); - -/** - * @generated from message session.v1.ListFilesRequest - */ -export type ListFilesRequest = Message<"session.v1.ListFilesRequest"> & { - /** - * Session ID whose worktree to browse. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Directory path relative to session worktree root. Use "." for root. - * - * @generated from field: string path = 2; - */ - path: string; - - /** - * If true, gitignored files are included in the response with is_ignored=true. - * - * @generated from field: bool include_ignored = 3; - */ - includeIgnored: boolean; -}; - -/** - * Describes the message session.v1.ListFilesRequest. - * Use `create(ListFilesRequestSchema)` to create a new message. - */ -export const ListFilesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 107); - -/** - * @generated from message session.v1.ListFilesResponse - */ -export type ListFilesResponse = Message<"session.v1.ListFilesResponse"> & { - /** - * Immediate children of the requested directory (dirs first, then files, alphabetical). - * - * @generated from field: repeated session.v1.FileNode files = 1; - */ - files: FileNode[]; - - /** - * Resolved base path that was listed. - * - * @generated from field: string base_path = 2; - */ - basePath: string; - - /** - * True if the directory had more than 10,000 entries and the response was capped. - * - * @generated from field: bool truncated = 3; - */ - truncated: boolean; - - /** - * Total entry count before the cap was applied. - * - * @generated from field: int32 total_count = 4; - */ - totalCount: number; -}; - -/** - * Describes the message session.v1.ListFilesResponse. - * Use `create(ListFilesResponseSchema)` to create a new message. - */ -export const ListFilesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 108); - -/** - * @generated from message session.v1.GetFileContentRequest - */ -export type GetFileContentRequest = Message<"session.v1.GetFileContentRequest"> & { - /** - * Session ID whose worktree to read from. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * File path relative to session worktree root. - * - * @generated from field: string path = 2; - */ - path: string; -}; - -/** - * Describes the message session.v1.GetFileContentRequest. - * Use `create(GetFileContentRequestSchema)` to create a new message. - */ -export const GetFileContentRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 109); - -/** - * @generated from message session.v1.GetFileContentResponse - */ -export type GetFileContentResponse = Message<"session.v1.GetFileContentResponse"> & { - /** - * UTF-8 file content. Empty when is_binary=true. - * - * @generated from field: string content = 1; - */ - content: string; - - /** - * Content encoding (always "utf-8" for text files). - * - * @generated from field: string encoding = 2; - */ - encoding: string; - - /** - * True if the file was detected as binary (no content returned). - * - * @generated from field: bool is_binary = 3; - */ - isBinary: boolean; - - /** - * File size in bytes. - * - * @generated from field: int64 size = 4; - */ - size: bigint; - - /** - * MIME content type detected from extension and content sniffing. - * - * @generated from field: string content_type = 5; - */ - contentType: string; - - /** - * True if the file exceeded 1MB and was truncated to the first 1MB. - * - * @generated from field: bool is_truncated = 6; - */ - isTruncated: boolean; -}; - -/** - * Describes the message session.v1.GetFileContentResponse. - * Use `create(GetFileContentResponseSchema)` to create a new message. - */ -export const GetFileContentResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 110); - -/** - * @generated from message session.v1.SearchFilesRequest - */ -export type SearchFilesRequest = Message<"session.v1.SearchFilesRequest"> & { - /** - * Session ID whose worktree to search. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Substring to match against file names and relative paths (case-insensitive). - * Minimum 2 characters; shorter queries return empty results. - * - * @generated from field: string query = 2; - */ - query: string; - - /** - * If true, gitignored files are included in search results. - * - * @generated from field: bool include_ignored = 3; - */ - includeIgnored: boolean; - - /** - * Maximum number of results to return. 0 uses the server default (500). - * - * @generated from field: int32 max_results = 4; - */ - maxResults: number; -}; - -/** - * Describes the message session.v1.SearchFilesRequest. - * Use `create(SearchFilesRequestSchema)` to create a new message. - */ -export const SearchFilesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 111); - -/** - * @generated from message session.v1.SearchFilesResponse - */ -export type SearchFilesResponse = Message<"session.v1.SearchFilesResponse"> & { - /** - * Matching files with full relative paths from worktree root. - * - * @generated from field: repeated session.v1.FileNode files = 1; - */ - files: FileNode[]; - - /** - * True if the result set was capped at max_results. - * - * @generated from field: bool truncated = 2; - */ - truncated: boolean; - - /** - * Total matches found before the cap was applied. - * - * @generated from field: int32 total_matches = 3; - */ - totalMatches: number; -}; - -/** - * Describes the message session.v1.SearchFilesResponse. - * Use `create(SearchFilesResponseSchema)` to create a new message. - */ -export const SearchFilesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 112); - -/** - * @generated from message session.v1.ListPathCompletionsRequest - */ -export type ListPathCompletionsRequest = Message<"session.v1.ListPathCompletionsRequest"> & { - /** - * Path prefix to complete. The server splits at the last '/' to determine - * the base directory and filter prefix. Supports ~ expansion. - * Examples: "/home/", "/home/ty", "~/projects/my" - * - * @generated from field: string path_prefix = 1; - */ - pathPrefix: string; - - /** - * Maximum entries to return. Default: 50, server cap: 500. - * Use 0 for server default. - * - * @generated from field: int32 max_results = 2; - */ - maxResults: number; - - /** - * If true, only return directory entries (not regular files). - * - * @generated from field: bool directories_only = 3; - */ - directoriesOnly: boolean; -}; - -/** - * Describes the message session.v1.ListPathCompletionsRequest. - * Use `create(ListPathCompletionsRequestSchema)` to create a new message. - */ -export const ListPathCompletionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 113); - -/** - * @generated from message session.v1.ListPathCompletionsResponse - */ -export type ListPathCompletionsResponse = Message<"session.v1.ListPathCompletionsResponse"> & { - /** - * Matching filesystem entries, sorted alphabetically. - * - * @generated from field: repeated session.v1.PathEntry entries = 1; - */ - entries: PathEntry[]; - - /** - * The resolved base directory that was listed (after ~ expansion, filepath.Clean). - * - * @generated from field: string base_dir = 2; - */ - baseDir: string; - - /** - * True if results were capped at max_results. - * - * @generated from field: bool truncated = 3; - */ - truncated: boolean; - - /** - * True if base_dir exists and is a readable directory. - * - * @generated from field: bool base_dir_exists = 4; - */ - baseDirExists: boolean; - - /** - * True if the full path_prefix (including partial filename) exists on disk. - * - * @generated from field: bool path_exists = 5; - */ - pathExists: boolean; -}; - -/** - * Describes the message session.v1.ListPathCompletionsResponse. - * Use `create(ListPathCompletionsResponseSchema)` to create a new message. - */ -export const ListPathCompletionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 114); - -/** - * @generated from message session.v1.PathEntry - */ -export type PathEntry = Message<"session.v1.PathEntry"> & { - /** - * Full absolute path to the entry. - * - * @generated from field: string path = 1; - */ - path: string; - - /** - * Filename component only. - * - * @generated from field: string name = 2; - */ - name: string; - - /** - * True if this entry is a directory (symlinks resolved). - * - * @generated from field: bool is_directory = 3; - */ - isDirectory: boolean; -}; - -/** - * Describes the message session.v1.PathEntry. - * Use `create(PathEntrySchema)` to create a new message. - */ -export const PathEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 115); - -/** - * ProfileDefaultsProto holds the configurable fields for a named profile. - * - * @generated from message session.v1.ProfileDefaultsProto - */ -export type ProfileDefaultsProto = Message<"session.v1.ProfileDefaultsProto"> & { - /** - * @generated from field: string name = 1; - */ - name: string; - - /** - * @generated from field: string description = 2; - */ - description: string; - - /** - * @generated from field: string program = 3; - */ - program: string; - - /** - * @generated from field: bool auto_yes = 4; - */ - autoYes: boolean; - - /** - * @generated from field: repeated string tags = 5; - */ - tags: string[]; - - /** - * @generated from field: map env_vars = 6; - */ - envVars: { [key: string]: string }; - - /** - * @generated from field: string cli_flags = 7; - */ - cliFlags: string; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 8; - */ - createdAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp updated_at = 9; - */ - updatedAt?: Timestamp; -}; - -/** - * Describes the message session.v1.ProfileDefaultsProto. - * Use `create(ProfileDefaultsProtoSchema)` to create a new message. - */ -export const ProfileDefaultsProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 116); - -/** - * DirectoryRuleProto associates a working-directory path prefix with defaults. - * - * @generated from message session.v1.DirectoryRuleProto - */ -export type DirectoryRuleProto = Message<"session.v1.DirectoryRuleProto"> & { - /** - * @generated from field: string path = 1; - */ - path: string; - - /** - * @generated from field: string profile = 2; - */ - profile: string; - - /** - * @generated from field: session.v1.ProfileDefaultsProto overrides = 3; - */ - overrides?: ProfileDefaultsProto; -}; - -/** - * Describes the message session.v1.DirectoryRuleProto. - * Use `create(DirectoryRuleProtoSchema)` to create a new message. - */ -export const DirectoryRuleProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 117); - -/** - * SessionDefaultsConfig is the full defaults configuration returned by GetSessionDefaults. - * - * @generated from message session.v1.SessionDefaultsConfig - */ -export type SessionDefaultsConfig = Message<"session.v1.SessionDefaultsConfig"> & { - /** - * @generated from field: string program = 1; - */ - program: string; - - /** - * @generated from field: bool auto_yes = 2; - */ - autoYes: boolean; - - /** - * @generated from field: repeated string tags = 3; - */ - tags: string[]; - - /** - * @generated from field: map env_vars = 4; - */ - envVars: { [key: string]: string }; - - /** - * @generated from field: string cli_flags = 5; - */ - cliFlags: string; - - /** - * @generated from field: map profiles = 6; - */ - profiles: { [key: string]: ProfileDefaultsProto }; - - /** - * @generated from field: repeated session.v1.DirectoryRuleProto directory_rules = 7; - */ - directoryRules: DirectoryRuleProto[]; - - /** - * @generated from field: string one_off_base_dir = 8; - */ - oneOffBaseDir: string; - - /** - * Base directory where new project folders are created. Defaults to ~/Projects. - * - * @generated from field: string new_project_base_dir = 9; - */ - newProjectBaseDir: string; - - /** - * Max automated rework iterations before a backlog item's auto-reopen loop - * leaves it in review for manual action. 0 in a request means "use the - * server default (3)"; the response always echoes the resolved value. - * - * @generated from field: int32 max_auto_rework_iterations = 10; - */ - maxAutoReworkIterations: number; - - /** - * Max backlog items that may be in_progress at once. 0 in a request means - * "use the server default (2)"; the response always echoes the resolved value. - * - * @generated from field: int32 max_concurrent_backlog_work_items = 11; - */ - maxConcurrentBacklogWorkItems: number; -}; - -/** - * Describes the message session.v1.SessionDefaultsConfig. - * Use `create(SessionDefaultsConfigSchema)` to create a new message. - */ -export const SessionDefaultsConfigSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 118); - -/** - * @generated from message session.v1.GetSessionDefaultsRequest - */ -export type GetSessionDefaultsRequest = Message<"session.v1.GetSessionDefaultsRequest"> & { -}; - -/** - * Describes the message session.v1.GetSessionDefaultsRequest. - * Use `create(GetSessionDefaultsRequestSchema)` to create a new message. - */ -export const GetSessionDefaultsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 119); - -/** - * @generated from message session.v1.GetSessionDefaultsResponse - */ -export type GetSessionDefaultsResponse = Message<"session.v1.GetSessionDefaultsResponse"> & { - /** - * @generated from field: session.v1.SessionDefaultsConfig defaults = 1; - */ - defaults?: SessionDefaultsConfig; -}; - -/** - * Describes the message session.v1.GetSessionDefaultsResponse. - * Use `create(GetSessionDefaultsResponseSchema)` to create a new message. - */ -export const GetSessionDefaultsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 120); - -/** - * @generated from message session.v1.PreviewDestinationPathRequest - */ -export type PreviewDestinationPathRequest = Message<"session.v1.PreviewDestinationPathRequest"> & { - /** - * raw omnibar text (URL/shorthand or local path) - * - * @generated from field: string input = 1; - */ - input: string; - - /** - * "github_url" | "new_worktree" - client already knows which - * - * @generated from field: string mode = 2; - */ - mode: string; - - /** - * new_worktree only: resolved local repo path - * - * @generated from field: string repo_path = 3; - */ - repoPath: string; - - /** - * new_worktree only: source string for the sanitized dir name - * - * @generated from field: string session_name = 4; - */ - sessionName: string; -}; - -/** - * Describes the message session.v1.PreviewDestinationPathRequest. - * Use `create(PreviewDestinationPathRequestSchema)` to create a new message. - */ -export const PreviewDestinationPathRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 121); - -/** - * @generated from message session.v1.PreviewDestinationPathResponse - */ -export type PreviewDestinationPathResponse = Message<"session.v1.PreviewDestinationPathResponse"> & { - /** - * exact for github_url; a directory prefix for new_worktree - * - * @generated from field: string path = 1; - */ - path: string; - - /** - * true only for github_url - * - * @generated from field: bool is_exact = 2; - */ - isExact: boolean; - - /** - * set (non-error) when input isn't resolvable yet - * - * @generated from field: string unresolved_reason = 3; - */ - unresolvedReason: string; -}; - -/** - * Describes the message session.v1.PreviewDestinationPathResponse. - * Use `create(PreviewDestinationPathResponseSchema)` to create a new message. - */ -export const PreviewDestinationPathResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 122); - -/** - * @generated from message session.v1.ResolveDefaultsRequest - */ -export type ResolveDefaultsRequest = Message<"session.v1.ResolveDefaultsRequest"> & { - /** - * @generated from field: string working_dir = 1; - */ - workingDir: string; - - /** - * @generated from field: string profile_name = 2; - */ - profileName: string; -}; - -/** - * Describes the message session.v1.ResolveDefaultsRequest. - * Use `create(ResolveDefaultsRequestSchema)` to create a new message. - */ -export const ResolveDefaultsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 123); - -/** - * @generated from message session.v1.ResolveDefaultsResponse - */ -export type ResolveDefaultsResponse = Message<"session.v1.ResolveDefaultsResponse"> & { - /** - * @generated from field: string program = 1; - */ - program: string; - - /** - * @generated from field: bool auto_yes = 2; - */ - autoYes: boolean; - - /** - * @generated from field: repeated string tags = 3; - */ - tags: string[]; - - /** - * @generated from field: map env_vars = 4; - */ - envVars: { [key: string]: string }; - - /** - * @generated from field: string cli_flags = 5; - */ - cliFlags: string; - - /** - * Source tracking - * - * @generated from field: bool used_global = 6; - */ - usedGlobal: boolean; - - /** - * @generated from field: bool used_directory = 7; - */ - usedDirectory: boolean; - - /** - * @generated from field: bool used_profile = 8; - */ - usedProfile: boolean; - - /** - * @generated from field: string matched_directory = 9; - */ - matchedDirectory: string; -}; - -/** - * Describes the message session.v1.ResolveDefaultsResponse. - * Use `create(ResolveDefaultsResponseSchema)` to create a new message. - */ -export const ResolveDefaultsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 124); - -/** - * @generated from message session.v1.UpdateGlobalDefaultsRequest - */ -export type UpdateGlobalDefaultsRequest = Message<"session.v1.UpdateGlobalDefaultsRequest"> & { - /** - * @generated from field: string program = 1; - */ - program: string; - - /** - * @generated from field: bool auto_yes = 2; - */ - autoYes: boolean; - - /** - * @generated from field: repeated string tags = 3; - */ - tags: string[]; - - /** - * @generated from field: map env_vars = 4; - */ - envVars: { [key: string]: string }; - - /** - * @generated from field: string cli_flags = 5; - */ - cliFlags: string; - - /** - * @generated from field: string one_off_base_dir = 6; - */ - oneOffBaseDir: string; - - /** - * Base directory where new project folders are created. Defaults to ~/Projects. - * - * @generated from field: string new_project_base_dir = 7; - */ - newProjectBaseDir: string; - - /** - * 0 = use the server default (3). See SessionDefaultsConfig.max_auto_rework_iterations. - * - * @generated from field: int32 max_auto_rework_iterations = 8; - */ - maxAutoReworkIterations: number; - - /** - * 0 = use the server default (2). See SessionDefaultsConfig.max_concurrent_backlog_work_items. - * - * @generated from field: int32 max_concurrent_backlog_work_items = 9; - */ - maxConcurrentBacklogWorkItems: number; -}; - -/** - * Describes the message session.v1.UpdateGlobalDefaultsRequest. - * Use `create(UpdateGlobalDefaultsRequestSchema)` to create a new message. - */ -export const UpdateGlobalDefaultsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 125); - -/** - * @generated from message session.v1.UpdateGlobalDefaultsResponse - */ -export type UpdateGlobalDefaultsResponse = Message<"session.v1.UpdateGlobalDefaultsResponse"> & { - /** - * @generated from field: session.v1.SessionDefaultsConfig defaults = 1; - */ - defaults?: SessionDefaultsConfig; -}; - -/** - * Describes the message session.v1.UpdateGlobalDefaultsResponse. - * Use `create(UpdateGlobalDefaultsResponseSchema)` to create a new message. - */ -export const UpdateGlobalDefaultsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 126); - -/** - * @generated from message session.v1.UpsertProfileRequest - */ -export type UpsertProfileRequest = Message<"session.v1.UpsertProfileRequest"> & { - /** - * @generated from field: session.v1.ProfileDefaultsProto profile = 1; - */ - profile?: ProfileDefaultsProto; -}; - -/** - * Describes the message session.v1.UpsertProfileRequest. - * Use `create(UpsertProfileRequestSchema)` to create a new message. - */ -export const UpsertProfileRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 127); - -/** - * @generated from message session.v1.UpsertProfileResponse - */ -export type UpsertProfileResponse = Message<"session.v1.UpsertProfileResponse"> & { - /** - * @generated from field: session.v1.ProfileDefaultsProto profile = 1; - */ - profile?: ProfileDefaultsProto; -}; - -/** - * Describes the message session.v1.UpsertProfileResponse. - * Use `create(UpsertProfileResponseSchema)` to create a new message. - */ -export const UpsertProfileResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 128); - -/** - * @generated from message session.v1.DeleteProfileRequest - */ -export type DeleteProfileRequest = Message<"session.v1.DeleteProfileRequest"> & { - /** - * @generated from field: string name = 1; - */ - name: string; -}; - -/** - * Describes the message session.v1.DeleteProfileRequest. - * Use `create(DeleteProfileRequestSchema)` to create a new message. - */ -export const DeleteProfileRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 129); - -/** - * @generated from message session.v1.DeleteProfileResponse - */ -export type DeleteProfileResponse = Message<"session.v1.DeleteProfileResponse"> & { -}; - -/** - * Describes the message session.v1.DeleteProfileResponse. - * Use `create(DeleteProfileResponseSchema)` to create a new message. - */ -export const DeleteProfileResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 130); - -/** - * @generated from message session.v1.UpsertDirectoryRuleRequest - */ -export type UpsertDirectoryRuleRequest = Message<"session.v1.UpsertDirectoryRuleRequest"> & { - /** - * @generated from field: session.v1.DirectoryRuleProto rule = 1; - */ - rule?: DirectoryRuleProto; -}; - -/** - * Describes the message session.v1.UpsertDirectoryRuleRequest. - * Use `create(UpsertDirectoryRuleRequestSchema)` to create a new message. - */ -export const UpsertDirectoryRuleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 131); - -/** - * @generated from message session.v1.UpsertDirectoryRuleResponse - */ -export type UpsertDirectoryRuleResponse = Message<"session.v1.UpsertDirectoryRuleResponse"> & { - /** - * @generated from field: session.v1.DirectoryRuleProto rule = 1; - */ - rule?: DirectoryRuleProto; -}; - -/** - * Describes the message session.v1.UpsertDirectoryRuleResponse. - * Use `create(UpsertDirectoryRuleResponseSchema)` to create a new message. - */ -export const UpsertDirectoryRuleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 132); - -/** - * @generated from message session.v1.DeleteDirectoryRuleRequest - */ -export type DeleteDirectoryRuleRequest = Message<"session.v1.DeleteDirectoryRuleRequest"> & { - /** - * @generated from field: string path = 1; - */ - path: string; -}; - -/** - * Describes the message session.v1.DeleteDirectoryRuleRequest. - * Use `create(DeleteDirectoryRuleRequestSchema)` to create a new message. - */ -export const DeleteDirectoryRuleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 133); - -/** - * @generated from message session.v1.DeleteDirectoryRuleResponse - */ -export type DeleteDirectoryRuleResponse = Message<"session.v1.DeleteDirectoryRuleResponse"> & { -}; - -/** - * Describes the message session.v1.DeleteDirectoryRuleResponse. - * Use `create(DeleteDirectoryRuleResponseSchema)` to create a new message. - */ -export const DeleteDirectoryRuleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 134); - -/** - * AliasProto represents a named session preset configured in config.json. - * - * @generated from message session.v1.AliasProto - */ -export type AliasProto = Message<"session.v1.AliasProto"> & { - /** - * @generated from field: string name = 1; - */ - name: string; - - /** - * @generated from field: string group = 2; - */ - group: string; - - /** - * @generated from field: string path = 3; - */ - path: string; - - /** - * @generated from field: string description = 4; - */ - description: string; - - /** - * @generated from field: string profile = 5; - */ - profile: string; - - /** - * @generated from field: string program = 6; - */ - program: string; - - /** - * @generated from field: bool auto_yes = 7; - */ - autoYes: boolean; - - /** - * @generated from field: repeated string tags = 8; - */ - tags: string[]; - - /** - * @generated from field: map env_vars = 9; - */ - envVars: { [key: string]: string }; - - /** - * @generated from field: string cli_flags = 10; - */ - cliFlags: string; - - /** - * session_type overrides the default session creation mode for this alias. - * Unspecified means the default (directory) is used. - * - * @generated from field: session.v1.SessionType session_type = 11; - */ - sessionType: SessionType; - - /** - * name_prefix is prepended to the user-supplied session label when naming sessions. - * For example, prefix "ssq-" + label "my-feature" → session name "ssq-my-feature". - * - * @generated from field: string name_prefix = 12; - */ - namePrefix: string; -}; - -/** - * Describes the message session.v1.AliasProto. - * Use `create(AliasProtoSchema)` to create a new message. - */ -export const AliasProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 135); - -/** - * @generated from message session.v1.ListAliasesRequest - */ -export type ListAliasesRequest = Message<"session.v1.ListAliasesRequest"> & { -}; - -/** - * Describes the message session.v1.ListAliasesRequest. - * Use `create(ListAliasesRequestSchema)` to create a new message. - */ -export const ListAliasesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 136); - -/** - * @generated from message session.v1.ListAliasesResponse - */ -export type ListAliasesResponse = Message<"session.v1.ListAliasesResponse"> & { - /** - * @generated from field: repeated session.v1.AliasProto aliases = 1; - */ - aliases: AliasProto[]; -}; - -/** - * Describes the message session.v1.ListAliasesResponse. - * Use `create(ListAliasesResponseSchema)` to create a new message. - */ -export const ListAliasesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 137); - -/** - * @generated from message session.v1.UpsertAliasRequest - */ -export type UpsertAliasRequest = Message<"session.v1.UpsertAliasRequest"> & { - /** - * @generated from field: session.v1.AliasProto alias = 1; - */ - alias?: AliasProto; -}; - -/** - * Describes the message session.v1.UpsertAliasRequest. - * Use `create(UpsertAliasRequestSchema)` to create a new message. - */ -export const UpsertAliasRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 138); - -/** - * @generated from message session.v1.UpsertAliasResponse - */ -export type UpsertAliasResponse = Message<"session.v1.UpsertAliasResponse"> & { - /** - * @generated from field: session.v1.AliasProto alias = 1; - */ - alias?: AliasProto; -}; - -/** - * Describes the message session.v1.UpsertAliasResponse. - * Use `create(UpsertAliasResponseSchema)` to create a new message. - */ -export const UpsertAliasResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 139); - -/** - * @generated from message session.v1.DeleteAliasRequest - */ -export type DeleteAliasRequest = Message<"session.v1.DeleteAliasRequest"> & { - /** - * @generated from field: string name = 1; - */ - name: string; -}; - -/** - * Describes the message session.v1.DeleteAliasRequest. - * Use `create(DeleteAliasRequestSchema)` to create a new message. - */ -export const DeleteAliasRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 140); - -/** - * @generated from message session.v1.DeleteAliasResponse - */ -export type DeleteAliasResponse = Message<"session.v1.DeleteAliasResponse"> & { -}; - -/** - * Describes the message session.v1.DeleteAliasResponse. - * Use `create(DeleteAliasResponseSchema)` to create a new message. - */ -export const DeleteAliasResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 141); - -/** - * @generated from message session.v1.ListWorktreesRequest - */ -export type ListWorktreesRequest = Message<"session.v1.ListWorktreesRequest"> & { - /** - * Absolute path to the git repository root. Supports ~ expansion. - * - * @generated from field: string repo_path = 1; - */ - repoPath: string; -}; - -/** - * Describes the message session.v1.ListWorktreesRequest. - * Use `create(ListWorktreesRequestSchema)` to create a new message. - */ -export const ListWorktreesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 142); - -/** - * @generated from message session.v1.WorktreeEntry - */ -export type WorktreeEntry = Message<"session.v1.WorktreeEntry"> & { - /** - * Absolute path to the worktree directory. - * - * @generated from field: string path = 1; - */ - path: string; - - /** - * Branch checked out in this worktree (empty for detached HEAD). - * - * @generated from field: string branch = 2; - */ - branch: string; - - /** - * True if this is the main worktree (not an added worktree). - * - * @generated from field: bool is_main = 3; - */ - isMain: boolean; -}; - -/** - * Describes the message session.v1.WorktreeEntry. - * Use `create(WorktreeEntrySchema)` to create a new message. - */ -export const WorktreeEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 143); - -/** - * @generated from message session.v1.ListWorktreesResponse - */ -export type ListWorktreesResponse = Message<"session.v1.ListWorktreesResponse"> & { - /** - * @generated from field: repeated session.v1.WorktreeEntry worktrees = 1; - */ - worktrees: WorktreeEntry[]; -}; - -/** - * Describes the message session.v1.ListWorktreesResponse. - * Use `create(ListWorktreesResponseSchema)` to create a new message. - */ -export const ListWorktreesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 144); - -/** - * @generated from message session.v1.PromptHistoryEntry - */ -export type PromptHistoryEntry = Message<"session.v1.PromptHistoryEntry"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string text = 2; - */ - text: string; - - /** - * @generated from field: string label = 3; - */ - label: string; - - /** - * @generated from field: int32 used_count = 4; - */ - usedCount: number; - - /** - * @generated from field: google.protobuf.Timestamp last_used = 5; - */ - lastUsed?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 6; - */ - createdAt?: Timestamp; -}; - -/** - * Describes the message session.v1.PromptHistoryEntry. - * Use `create(PromptHistoryEntrySchema)` to create a new message. - */ -export const PromptHistoryEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 145); - -/** - * @generated from message session.v1.ListPromptHistoryRequest - */ -export type ListPromptHistoryRequest = Message<"session.v1.ListPromptHistoryRequest"> & { - /** - * @generated from field: int32 limit = 1; - */ - limit: number; -}; - -/** - * Describes the message session.v1.ListPromptHistoryRequest. - * Use `create(ListPromptHistoryRequestSchema)` to create a new message. - */ -export const ListPromptHistoryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 146); - -/** - * @generated from message session.v1.ListPromptHistoryResponse - */ -export type ListPromptHistoryResponse = Message<"session.v1.ListPromptHistoryResponse"> & { - /** - * @generated from field: repeated session.v1.PromptHistoryEntry entries = 1; - */ - entries: PromptHistoryEntry[]; -}; - -/** - * Describes the message session.v1.ListPromptHistoryResponse. - * Use `create(ListPromptHistoryResponseSchema)` to create a new message. - */ -export const ListPromptHistoryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 147); - -/** - * @generated from message session.v1.DeletePromptHistoryRequest - */ -export type DeletePromptHistoryRequest = Message<"session.v1.DeletePromptHistoryRequest"> & { - /** - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.DeletePromptHistoryRequest. - * Use `create(DeletePromptHistoryRequestSchema)` to create a new message. - */ -export const DeletePromptHistoryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 148); - -/** - * @generated from message session.v1.DeletePromptHistoryResponse - */ -export type DeletePromptHistoryResponse = Message<"session.v1.DeletePromptHistoryResponse"> & { -}; - -/** - * Describes the message session.v1.DeletePromptHistoryResponse. - * Use `create(DeletePromptHistoryResponseSchema)` to create a new message. - */ -export const DeletePromptHistoryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 149); - -/** - * @generated from message session.v1.BatchSessionRequest - */ -export type BatchSessionRequest = Message<"session.v1.BatchSessionRequest"> & { - /** - * @generated from field: string title = 1; - */ - title: string; - - /** - * @generated from field: string path = 2; - */ - path: string; - - /** - * @generated from field: string working_dir = 3; - */ - workingDir: string; - - /** - * @generated from field: string branch = 4; - */ - branch: string; - - /** - * @generated from field: string program = 5; - */ - program: string; - - /** - * @generated from field: string category = 6; - */ - category: string; - - /** - * @generated from field: string initial_prompt = 7; - */ - initialPrompt: string; - - /** - * @generated from field: bool auto_yes = 8; - */ - autoYes: boolean; - - /** - * @generated from field: session.v1.SessionType session_type = 9; - */ - sessionType: SessionType; - - /** - * @generated from field: string project_id = 10; - */ - projectId: string; - - /** - * @generated from field: repeated string tags = 11; - */ - tags: string[]; -}; - -/** - * Describes the message session.v1.BatchSessionRequest. - * Use `create(BatchSessionRequestSchema)` to create a new message. - */ -export const BatchSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 150); - -/** - * @generated from message session.v1.BatchCreateResult - */ -export type BatchCreateResult = Message<"session.v1.BatchCreateResult"> & { - /** - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * @generated from field: string session_id = 2; - */ - sessionId: string; - - /** - * @generated from field: string error = 3; - */ - error: string; - - /** - * @generated from field: string title = 4; - */ - title: string; -}; - -/** - * Describes the message session.v1.BatchCreateResult. - * Use `create(BatchCreateResultSchema)` to create a new message. - */ -export const BatchCreateResultSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 151); - -/** - * @generated from message session.v1.BatchCreateSessionsRequest - */ -export type BatchCreateSessionsRequest = Message<"session.v1.BatchCreateSessionsRequest"> & { - /** - * @generated from field: repeated session.v1.BatchSessionRequest sessions = 1; - */ - sessions: BatchSessionRequest[]; - - /** - * Max concurrent worktree creations (capped at 3 server-side). - * - * @generated from field: int32 max_concurrency = 2; - */ - maxConcurrency: number; -}; - -/** - * Describes the message session.v1.BatchCreateSessionsRequest. - * Use `create(BatchCreateSessionsRequestSchema)` to create a new message. - */ -export const BatchCreateSessionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 152); - -/** - * @generated from message session.v1.BatchCreateSessionsResponse - */ -export type BatchCreateSessionsResponse = Message<"session.v1.BatchCreateSessionsResponse"> & { - /** - * @generated from field: repeated session.v1.BatchCreateResult results = 1; - */ - results: BatchCreateResult[]; - - /** - * @generated from field: int32 succeeded = 2; - */ - succeeded: number; - - /** - * @generated from field: int32 failed = 3; - */ - failed: number; -}; - -/** - * Describes the message session.v1.BatchCreateSessionsResponse. - * Use `create(BatchCreateSessionsResponseSchema)` to create a new message. - */ -export const BatchCreateSessionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 153); - -/** - * @generated from message session.v1.RunOneShotRequest - */ -export type RunOneShotRequest = Message<"session.v1.RunOneShotRequest"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * @generated from field: string prompt = 2; - */ - prompt: string; - - /** - * Timeout in seconds (default: 120, max: 300). - * - * @generated from field: int32 timeout_seconds = 3; - */ - timeoutSeconds: number; -}; - -/** - * Describes the message session.v1.RunOneShotRequest. - * Use `create(RunOneShotRequestSchema)` to create a new message. - */ -export const RunOneShotRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 154); - -/** - * @generated from message session.v1.RunOneShotResponse - */ -export type RunOneShotResponse = Message<"session.v1.RunOneShotResponse"> & { - /** - * @generated from field: string output = 1; - */ - output: string; - - /** - * @generated from field: string error = 2; - */ - error: string; - - /** - * @generated from field: int32 exit_code = 3; - */ - exitCode: number; - - /** - * @generated from field: string pr_url = 4; - */ - prUrl: string; - - /** - * @generated from field: bool branch_diverged_from_base = 5; - */ - branchDivergedFromBase: boolean; -}; - -/** - * Describes the message session.v1.RunOneShotResponse. - * Use `create(RunOneShotResponseSchema)` to create a new message. - */ -export const RunOneShotResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 155); - -/** - * @generated from message session.v1.Project - */ -export type Project = Message<"session.v1.Project"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string name = 2; - */ - name: string; - - /** - * @generated from field: string description = 3; - */ - description: string; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 4; - */ - createdAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp updated_at = 5; - */ - updatedAt?: Timestamp; - - /** - * Aggregate session counts. - * - * @generated from field: int32 session_count = 6; - */ - sessionCount: number; - - /** - * @generated from field: int32 running_count = 7; - */ - runningCount: number; - - /** - * @generated from field: int32 complete_count = 8; - */ - completeCount: number; - - /** - * @generated from field: int32 review_ready_count = 9; - */ - reviewReadyCount: number; -}; - -/** - * Describes the message session.v1.Project. - * Use `create(ProjectSchema)` to create a new message. - */ -export const ProjectSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 156); - -/** - * @generated from message session.v1.CreateProjectRequest - */ -export type CreateProjectRequest = Message<"session.v1.CreateProjectRequest"> & { - /** - * @generated from field: string name = 1; - */ - name: string; - - /** - * @generated from field: string description = 2; - */ - description: string; -}; - -/** - * Describes the message session.v1.CreateProjectRequest. - * Use `create(CreateProjectRequestSchema)` to create a new message. - */ -export const CreateProjectRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 157); - -/** - * @generated from message session.v1.CreateProjectResponse - */ -export type CreateProjectResponse = Message<"session.v1.CreateProjectResponse"> & { - /** - * @generated from field: session.v1.Project project = 1; - */ - project?: Project; -}; - -/** - * Describes the message session.v1.CreateProjectResponse. - * Use `create(CreateProjectResponseSchema)` to create a new message. - */ -export const CreateProjectResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 158); - -/** - * @generated from message session.v1.ListProjectsRequest - */ -export type ListProjectsRequest = Message<"session.v1.ListProjectsRequest"> & { -}; - -/** - * Describes the message session.v1.ListProjectsRequest. - * Use `create(ListProjectsRequestSchema)` to create a new message. - */ -export const ListProjectsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 159); - -/** - * @generated from message session.v1.ListProjectsResponse - */ -export type ListProjectsResponse = Message<"session.v1.ListProjectsResponse"> & { - /** - * @generated from field: repeated session.v1.Project projects = 1; - */ - projects: Project[]; -}; - -/** - * Describes the message session.v1.ListProjectsResponse. - * Use `create(ListProjectsResponseSchema)` to create a new message. - */ -export const ListProjectsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 160); - -/** - * @generated from message session.v1.UpdateProjectRequest - */ -export type UpdateProjectRequest = Message<"session.v1.UpdateProjectRequest"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string name = 2; - */ - name: string; - - /** - * @generated from field: string description = 3; - */ - description: string; -}; - -/** - * Describes the message session.v1.UpdateProjectRequest. - * Use `create(UpdateProjectRequestSchema)` to create a new message. - */ -export const UpdateProjectRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 161); - -/** - * @generated from message session.v1.UpdateProjectResponse - */ -export type UpdateProjectResponse = Message<"session.v1.UpdateProjectResponse"> & { - /** - * @generated from field: session.v1.Project project = 1; - */ - project?: Project; -}; - -/** - * Describes the message session.v1.UpdateProjectResponse. - * Use `create(UpdateProjectResponseSchema)` to create a new message. - */ -export const UpdateProjectResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 162); - -/** - * @generated from message session.v1.DeleteProjectRequest - */ -export type DeleteProjectRequest = Message<"session.v1.DeleteProjectRequest"> & { - /** - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.DeleteProjectRequest. - * Use `create(DeleteProjectRequestSchema)` to create a new message. - */ -export const DeleteProjectRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 163); - -/** - * @generated from message session.v1.DeleteProjectResponse - */ -export type DeleteProjectResponse = Message<"session.v1.DeleteProjectResponse"> & { - /** - * @generated from field: bool success = 1; - */ - success: boolean; -}; - -/** - * Describes the message session.v1.DeleteProjectResponse. - * Use `create(DeleteProjectResponseSchema)` to create a new message. - */ -export const DeleteProjectResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 164); - -/** - * @generated from message session.v1.AssignSessionsToProjectRequest - */ -export type AssignSessionsToProjectRequest = Message<"session.v1.AssignSessionsToProjectRequest"> & { - /** - * @generated from field: string project_id = 1; - */ - projectId: string; - - /** - * @generated from field: repeated string session_ids = 2; - */ - sessionIds: string[]; -}; - -/** - * Describes the message session.v1.AssignSessionsToProjectRequest. - * Use `create(AssignSessionsToProjectRequestSchema)` to create a new message. - */ -export const AssignSessionsToProjectRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 165); - -/** - * @generated from message session.v1.AssignSessionsToProjectResponse - */ -export type AssignSessionsToProjectResponse = Message<"session.v1.AssignSessionsToProjectResponse"> & { - /** - * @generated from field: int32 updated_count = 1; - */ - updatedCount: number; -}; - -/** - * Describes the message session.v1.AssignSessionsToProjectResponse. - * Use `create(AssignSessionsToProjectResponseSchema)` to create a new message. - */ -export const AssignSessionsToProjectResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 166); - -/** - * @generated from message session.v1.ListBranchesRequest - */ -export type ListBranchesRequest = Message<"session.v1.ListBranchesRequest"> & { - /** - * Absolute path to the git repository root. - * - * @generated from field: string repo_path = 1; - */ - repoPath: string; - - /** - * Optional substring filter applied in Go (case-insensitive). - * - * @generated from field: string filter = 2; - */ - filter: string; - - /** - * Maximum number of branches to return (default 200). - * - * @generated from field: int32 max_results = 3; - */ - maxResults: number; - - /** - * Whether to include remote-tracking branches (default false). - * - * @generated from field: bool include_remote = 4; - */ - includeRemote: boolean; -}; - -/** - * Describes the message session.v1.ListBranchesRequest. - * Use `create(ListBranchesRequestSchema)` to create a new message. - */ -export const ListBranchesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 167); - -/** - * @generated from message session.v1.ListBranchesResponse - */ -export type ListBranchesResponse = Message<"session.v1.ListBranchesResponse"> & { - /** - * @generated from field: repeated string branches = 1; - */ - branches: string[]; - - /** - * @generated from field: int32 total_count = 2; - */ - totalCount: number; - - /** - * True if the command timed out before all branches were collected. - * - * @generated from field: bool truncated = 3; - */ - truncated: boolean; -}; - -/** - * Describes the message session.v1.ListBranchesResponse. - * Use `create(ListBranchesResponseSchema)` to create a new message. - */ -export const ListBranchesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 168); - -/** - * @generated from message session.v1.GetTerminalSnapshotRequest - */ -export type GetTerminalSnapshotRequest = Message<"session.v1.GetTerminalSnapshotRequest"> & { - /** - * ID of the session to snapshot. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Number of trailing lines to return (default 20). - * - * @generated from field: int32 last_n_lines = 2; - */ - lastNLines: number; -}; - -/** - * Describes the message session.v1.GetTerminalSnapshotRequest. - * Use `create(GetTerminalSnapshotRequestSchema)` to create a new message. - */ -export const GetTerminalSnapshotRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 169); - -/** - * @generated from message session.v1.GetTerminalSnapshotResponse - */ -export type GetTerminalSnapshotResponse = Message<"session.v1.GetTerminalSnapshotResponse"> & { - /** - * Terminal content (may include ANSI escape sequences). - * - * @generated from field: string content = 1; - */ - content: string; - - /** - * True when content is entirely whitespace (cleared terminal). - * - * @generated from field: bool is_empty = 2; - */ - isEmpty: boolean; -}; - -/** - * Describes the message session.v1.GetTerminalSnapshotResponse. - * Use `create(GetTerminalSnapshotResponseSchema)` to create a new message. - */ -export const GetTerminalSnapshotResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 170); - -/** - * @generated from message session.v1.WriteToSessionRequest - */ -export type WriteToSessionRequest = Message<"session.v1.WriteToSessionRequest"> & { - /** - * ID (title) of the session to write to. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Text to send to the terminal PTY. - * - * @generated from field: string input = 2; - */ - input: string; - - /** - * When true, append a newline after input. Callers should set this explicitly. - * - * @generated from field: bool press_enter = 3; - */ - pressEnter: boolean; -}; - -/** - * Describes the message session.v1.WriteToSessionRequest. - * Use `create(WriteToSessionRequestSchema)` to create a new message. - */ -export const WriteToSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 171); - -/** - * @generated from message session.v1.WriteToSessionResponse - */ -export type WriteToSessionResponse = Message<"session.v1.WriteToSessionResponse"> & { - /** - * True when write was queued successfully. - * - * @generated from field: bool success = 1; - */ - success: boolean; -}; - -/** - * Describes the message session.v1.WriteToSessionResponse. - * Use `create(WriteToSessionResponseSchema)` to create a new message. - */ -export const WriteToSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 172); - -/** - * @generated from message session.v1.ClientLogEntry - */ -export type ClientLogEntry = Message<"session.v1.ClientLogEntry"> & { - /** - * @generated from field: string level = 1; - */ - level: string; - - /** - * @generated from field: string message = 2; - */ - message: string; - - /** - * @generated from field: string timestamp = 3; - */ - timestamp: string; - - /** - * @generated from field: string url = 4; - */ - url: string; - - /** - * @generated from field: string user_agent = 5; - */ - userAgent: string; - - /** - * @generated from field: string session_id = 6; - */ - sessionId: string; -}; - -/** - * Describes the message session.v1.ClientLogEntry. - * Use `create(ClientLogEntrySchema)` to create a new message. - */ -export const ClientLogEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 173); - -/** - * @generated from message session.v1.LogClientEventsRequest - */ -export type LogClientEventsRequest = Message<"session.v1.LogClientEventsRequest"> & { - /** - * @generated from field: repeated session.v1.ClientLogEntry entries = 1; - */ - entries: ClientLogEntry[]; -}; - -/** - * Describes the message session.v1.LogClientEventsRequest. - * Use `create(LogClientEventsRequestSchema)` to create a new message. - */ -export const LogClientEventsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 174); - -/** - * @generated from message session.v1.LogClientEventsResponse - */ -export type LogClientEventsResponse = Message<"session.v1.LogClientEventsResponse"> & { -}; - -/** - * Describes the message session.v1.LogClientEventsResponse. - * Use `create(LogClientEventsResponseSchema)` to create a new message. - */ -export const LogClientEventsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 175); - -/** - * @generated from message session.v1.ListErrorsRequest - */ -export type ListErrorsRequest = Message<"session.v1.ListErrorsRequest"> & { - /** - * When true, acknowledged error events are included in the response. - * - * @generated from field: bool include_acknowledged = 1; - */ - includeAcknowledged: boolean; -}; - -/** - * Describes the message session.v1.ListErrorsRequest. - * Use `create(ListErrorsRequestSchema)` to create a new message. - */ -export const ListErrorsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 176); - -/** - * ErrorEventRecord is the wire representation of a persisted RPC error. - * - * @generated from message session.v1.ErrorEventRecord - */ -export type ErrorEventRecord = Message<"session.v1.ErrorEventRecord"> & { - /** - * @generated from field: string fingerprint = 1; - */ - fingerprint: string; - - /** - * @generated from field: string error_type = 2; - */ - errorType: string; - - /** - * @generated from field: string message = 3; - */ - message: string; - - /** - * @generated from field: string stack_trace = 4; - */ - stackTrace: string; - - /** - * @generated from field: string rpc_procedure = 5; - */ - rpcProcedure: string; - - /** - * @generated from field: int32 occurrence_count = 6; - */ - occurrenceCount: number; - - /** - * @generated from field: google.protobuf.Timestamp first_seen = 7; - */ - firstSeen?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp last_seen = 8; - */ - lastSeen?: Timestamp; - - /** - * @generated from field: bool acknowledged = 9; - */ - acknowledged: boolean; -}; - -/** - * Describes the message session.v1.ErrorEventRecord. - * Use `create(ErrorEventRecordSchema)` to create a new message. - */ -export const ErrorEventRecordSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 177); - -/** - * @generated from message session.v1.ListErrorsResponse - */ -export type ListErrorsResponse = Message<"session.v1.ListErrorsResponse"> & { - /** - * @generated from field: repeated session.v1.ErrorEventRecord errors = 1; - */ - errors: ErrorEventRecord[]; -}; - -/** - * Describes the message session.v1.ListErrorsResponse. - * Use `create(ListErrorsResponseSchema)` to create a new message. - */ -export const ListErrorsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 178); - -/** - * @generated from message session.v1.AcknowledgeErrorRequest - */ -export type AcknowledgeErrorRequest = Message<"session.v1.AcknowledgeErrorRequest"> & { - /** - * @generated from field: string fingerprint = 1; - */ - fingerprint: string; -}; - -/** - * Describes the message session.v1.AcknowledgeErrorRequest. - * Use `create(AcknowledgeErrorRequestSchema)` to create a new message. - */ -export const AcknowledgeErrorRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 179); - -/** - * @generated from message session.v1.AcknowledgeErrorResponse - */ -export type AcknowledgeErrorResponse = Message<"session.v1.AcknowledgeErrorResponse"> & { -}; - -/** - * Describes the message session.v1.AcknowledgeErrorResponse. - * Use `create(AcknowledgeErrorResponseSchema)` to create a new message. - */ -export const AcknowledgeErrorResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 180); - -/** - * ClearConversationStateRequest identifies the session whose conversation UUID should be cleared. - * - * @generated from message session.v1.ClearConversationStateRequest - */ -export type ClearConversationStateRequest = Message<"session.v1.ClearConversationStateRequest"> & { - /** - * Session identifier (title or stable UUID). - * - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.ClearConversationStateRequest. - * Use `create(ClearConversationStateRequestSchema)` to create a new message. - */ -export const ClearConversationStateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 181); - -/** - * ClearConversationStateResponse reports whether the state was cleared. - * - * @generated from message session.v1.ClearConversationStateResponse - */ -export type ClearConversationStateResponse = Message<"session.v1.ClearConversationStateResponse"> & { - /** - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * @generated from field: string message = 2; - */ - message: string; -}; - -/** - * Describes the message session.v1.ClearConversationStateResponse. - * Use `create(ClearConversationStateResponseSchema)` to create a new message. - */ -export const ClearConversationStateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 182); - -/** - * @generated from message session.v1.FeatureFlag - */ -export type FeatureFlag = Message<"session.v1.FeatureFlag"> & { - /** - * Machine name of the feature (e.g. "backlog"). - * - * @generated from field: string name = 1; - */ - name: string; - - /** - * Whether the feature is currently enabled. - * - * @generated from field: bool enabled = 2; - */ - enabled: boolean; - - /** - * Human-readable description of what the feature does. - * - * @generated from field: string description = 3; - */ - description: string; - - /** - * Optional human-readable status line (e.g. why a controller-backed flag is - * currently off). Empty when not applicable. - * - * @generated from field: string status_detail = 4; - */ - statusDetail: string; -}; - -/** - * Describes the message session.v1.FeatureFlag. - * Use `create(FeatureFlagSchema)` to create a new message. - */ -export const FeatureFlagSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 183); - -/** - * @generated from message session.v1.GetFeatureFlagsRequest - */ -export type GetFeatureFlagsRequest = Message<"session.v1.GetFeatureFlagsRequest"> & { -}; - -/** - * Describes the message session.v1.GetFeatureFlagsRequest. - * Use `create(GetFeatureFlagsRequestSchema)` to create a new message. - */ -export const GetFeatureFlagsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 184); - -/** - * @generated from message session.v1.GetFeatureFlagsResponse - */ -export type GetFeatureFlagsResponse = Message<"session.v1.GetFeatureFlagsResponse"> & { - /** - * @generated from field: repeated session.v1.FeatureFlag flags = 1; - */ - flags: FeatureFlag[]; -}; - -/** - * Describes the message session.v1.GetFeatureFlagsResponse. - * Use `create(GetFeatureFlagsResponseSchema)` to create a new message. - */ -export const GetFeatureFlagsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 185); - -/** - * @generated from message session.v1.GetHookStatusRequest - */ -export type GetHookStatusRequest = Message<"session.v1.GetHookStatusRequest"> & { -}; - -/** - * Describes the message session.v1.GetHookStatusRequest. - * Use `create(GetHookStatusRequestSchema)` to create a new message. - */ -export const GetHookStatusRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 186); - -/** - * @generated from message session.v1.GetHookStatusResponse - */ -export type GetHookStatusResponse = Message<"session.v1.GetHookStatusResponse"> & { - /** - * Whether the PreToolUse rule-enforcement hook (ssq-hooks check) is installed globally. - * - * @generated from field: bool rules_installed = 1; - */ - rulesInstalled: boolean; - - /** - * Whether the Notification/Stop notification hooks (ssq-hook-handler) are installed globally. - * - * @generated from field: bool notifications_installed = 2; - */ - notificationsInstalled: boolean; - - /** - * True when the ssq-hooks binary is available to install the rules hook. - * - * @generated from field: bool rules_available = 3; - */ - rulesAvailable: boolean; - - /** - * True when the ssq-hook-handler is available to install the notification hooks. - * - * @generated from field: bool notifications_available = 4; - */ - notificationsAvailable: boolean; -}; - -/** - * Describes the message session.v1.GetHookStatusResponse. - * Use `create(GetHookStatusResponseSchema)` to create a new message. - */ -export const GetHookStatusResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 187); - -/** - * @generated from message session.v1.InstallHooksRequest - */ -export type InstallHooksRequest = Message<"session.v1.InstallHooksRequest"> & { - /** - * Install the PreToolUse rule-enforcement hook. - * - * @generated from field: bool install_rules = 1; - */ - installRules: boolean; - - /** - * Install the Notification/Stop notification hooks. - * - * @generated from field: bool install_notifications = 2; - */ - installNotifications: boolean; -}; - -/** - * Describes the message session.v1.InstallHooksRequest. - * Use `create(InstallHooksRequestSchema)` to create a new message. - */ -export const InstallHooksRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 188); - -/** - * @generated from message session.v1.InstallHooksResponse - */ -export type InstallHooksResponse = Message<"session.v1.InstallHooksResponse"> & { - /** - * Hook status after the install attempt. - * - * @generated from field: session.v1.GetHookStatusResponse status = 1; - */ - status?: GetHookStatusResponse; - - /** - * Human-readable per-hook result messages (e.g. a manual fallback command when a binary is missing). - * - * @generated from field: repeated string messages = 2; - */ - messages: string[]; -}; - -/** - * Describes the message session.v1.InstallHooksResponse. - * Use `create(InstallHooksResponseSchema)` to create a new message. - */ -export const InstallHooksResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 189); - -/** - * @generated from message session.v1.UpdateFeatureFlagRequest - */ -export type UpdateFeatureFlagRequest = Message<"session.v1.UpdateFeatureFlagRequest"> & { - /** - * The feature name to update (e.g. "backlog"). - * - * @generated from field: string name = 1; - */ - name: string; - - /** - * The new enabled state. - * - * @generated from field: bool enabled = 2; - */ - enabled: boolean; -}; - -/** - * Describes the message session.v1.UpdateFeatureFlagRequest. - * Use `create(UpdateFeatureFlagRequestSchema)` to create a new message. - */ -export const UpdateFeatureFlagRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 190); - -/** - * @generated from message session.v1.UpdateFeatureFlagResponse - */ -export type UpdateFeatureFlagResponse = Message<"session.v1.UpdateFeatureFlagResponse"> & { - /** - * The updated flag state. - * - * @generated from field: session.v1.FeatureFlag flag = 1; - */ - flag?: FeatureFlag; -}; - -/** - * Describes the message session.v1.UpdateFeatureFlagResponse. - * Use `create(UpdateFeatureFlagResponseSchema)` to create a new message. - */ -export const UpdateFeatureFlagResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 191); - -/** - * @generated from message session.v1.EscapeEventProto - */ -export type EscapeEventProto = Message<"session.v1.EscapeEventProto"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string session_id = 2; - */ - sessionId: string; - - /** - * @generated from field: string stage = 3; - */ - stage: string; - - /** - * @generated from field: string sequence_type = 4; - */ - sequenceType: string; - - /** - * @generated from field: string sequence_subtype = 5; - */ - sequenceSubtype: string; - - /** - * @generated from field: int32 byte_length = 6; - */ - byteLength: number; - - /** - * @generated from field: string payload_hash = 7; - */ - payloadHash: string; - - /** - * @generated from field: bytes raw_bytes = 8; - */ - rawBytes: Uint8Array; - - /** - * @generated from field: bool mangled = 9; - */ - mangled: boolean; - - /** - * @generated from field: string mangle_type = 10; - */ - mangleType: string; - - /** - * @generated from field: google.protobuf.Timestamp wall_time = 11; - */ - wallTime?: Timestamp; - - /** - * @generated from field: int64 session_seq = 12; - */ - sessionSeq: bigint; -}; - -/** - * Describes the message session.v1.EscapeEventProto. - * Use `create(EscapeEventProtoSchema)` to create a new message. - */ -export const EscapeEventProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 192); - -/** - * @generated from message session.v1.QueryEscapeAnalyticsRequest - */ -export type QueryEscapeAnalyticsRequest = Message<"session.v1.QueryEscapeAnalyticsRequest"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * @generated from field: string stage = 2; - */ - stage: string; - - /** - * @generated from field: string sequence_type = 3; - */ - sequenceType: string; - - /** - * @generated from field: bool mangled_only = 4; - */ - mangledOnly: boolean; - - /** - * @generated from field: google.protobuf.Timestamp start_time = 5; - */ - startTime?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp end_time = 6; - */ - endTime?: Timestamp; - - /** - * @generated from field: int32 page_size = 7; - */ - pageSize: number; - - /** - * @generated from field: string page_token = 8; - */ - pageToken: string; -}; - -/** - * Describes the message session.v1.QueryEscapeAnalyticsRequest. - * Use `create(QueryEscapeAnalyticsRequestSchema)` to create a new message. - */ -export const QueryEscapeAnalyticsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 193); - -/** - * @generated from message session.v1.QueryEscapeAnalyticsResponse - */ -export type QueryEscapeAnalyticsResponse = Message<"session.v1.QueryEscapeAnalyticsResponse"> & { - /** - * @generated from field: repeated session.v1.EscapeEventProto events = 1; - */ - events: EscapeEventProto[]; - - /** - * @generated from field: string next_page_token = 2; - */ - nextPageToken: string; - - /** - * @generated from field: int32 total_count = 3; - */ - totalCount: number; -}; - -/** - * Describes the message session.v1.QueryEscapeAnalyticsResponse. - * Use `create(QueryEscapeAnalyticsResponseSchema)` to create a new message. - */ -export const QueryEscapeAnalyticsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 194); - -/** - * @generated from message session.v1.EscapeSequenceCount - */ -export type EscapeSequenceCount = Message<"session.v1.EscapeSequenceCount"> & { - /** - * @generated from field: string sequence_type = 1; - */ - sequenceType: string; - - /** - * @generated from field: int64 count = 2; - */ - count: bigint; - - /** - * @generated from field: int64 mangled_count = 3; - */ - mangledCount: bigint; -}; - -/** - * Describes the message session.v1.EscapeSequenceCount. - * Use `create(EscapeSequenceCountSchema)` to create a new message. - */ -export const EscapeSequenceCountSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 195); - -/** - * @generated from message session.v1.GetEscapeAnalyticsSummaryRequest - */ -export type GetEscapeAnalyticsSummaryRequest = Message<"session.v1.GetEscapeAnalyticsSummaryRequest"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * @generated from field: google.protobuf.Timestamp start_time = 2; - */ - startTime?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp end_time = 3; - */ - endTime?: Timestamp; -}; - -/** - * Describes the message session.v1.GetEscapeAnalyticsSummaryRequest. - * Use `create(GetEscapeAnalyticsSummaryRequestSchema)` to create a new message. - */ -export const GetEscapeAnalyticsSummaryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 196); - -/** - * @generated from message session.v1.GetEscapeAnalyticsSummaryResponse - */ -export type GetEscapeAnalyticsSummaryResponse = Message<"session.v1.GetEscapeAnalyticsSummaryResponse"> & { - /** - * @generated from field: repeated session.v1.EscapeSequenceCount histogram = 1; - */ - histogram: EscapeSequenceCount[]; - - /** - * @generated from field: int64 total_sequences = 2; - */ - totalSequences: bigint; - - /** - * @generated from field: int64 total_mangled = 3; - */ - totalMangled: bigint; - - /** - * @generated from field: double mangle_rate = 4; - */ - mangleRate: number; -}; - -/** - * Describes the message session.v1.GetEscapeAnalyticsSummaryResponse. - * Use `create(GetEscapeAnalyticsSummaryResponseSchema)` to create a new message. - */ -export const GetEscapeAnalyticsSummaryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 197); - -/** - * @generated from message session.v1.GetEscapeAnalyticsGlobalSummaryRequest - */ -export type GetEscapeAnalyticsGlobalSummaryRequest = Message<"session.v1.GetEscapeAnalyticsGlobalSummaryRequest"> & { - /** - * @generated from field: optional google.protobuf.Timestamp start_time = 1; - */ - startTime?: Timestamp; - - /** - * @generated from field: optional google.protobuf.Timestamp end_time = 2; - */ - endTime?: Timestamp; -}; - -/** - * Describes the message session.v1.GetEscapeAnalyticsGlobalSummaryRequest. - * Use `create(GetEscapeAnalyticsGlobalSummaryRequestSchema)` to create a new message. - */ -export const GetEscapeAnalyticsGlobalSummaryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 198); - -/** - * @generated from message session.v1.GetEscapeAnalyticsGlobalSummaryResponse - */ -export type GetEscapeAnalyticsGlobalSummaryResponse = Message<"session.v1.GetEscapeAnalyticsGlobalSummaryResponse"> & { - /** - * @generated from field: repeated session.v1.EscapeSequenceCount histogram = 1; - */ - histogram: EscapeSequenceCount[]; - - /** - * @generated from field: int64 total_sequences = 2; - */ - totalSequences: bigint; - - /** - * @generated from field: int64 total_mangled = 3; - */ - totalMangled: bigint; - - /** - * @generated from field: double mangle_rate = 4; - */ - mangleRate: number; - - /** - * @generated from field: repeated session.v1.SessionEscapeSummary per_session = 5; - */ - perSession: SessionEscapeSummary[]; -}; - -/** - * Describes the message session.v1.GetEscapeAnalyticsGlobalSummaryResponse. - * Use `create(GetEscapeAnalyticsGlobalSummaryResponseSchema)` to create a new message. - */ -export const GetEscapeAnalyticsGlobalSummaryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 199); - -/** - * @generated from message session.v1.SessionEscapeSummary - */ -export type SessionEscapeSummary = Message<"session.v1.SessionEscapeSummary"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * @generated from field: int64 total_sequences = 2; - */ - totalSequences: bigint; - - /** - * @generated from field: int64 total_mangled = 3; - */ - totalMangled: bigint; - - /** - * @generated from field: double mangle_rate = 4; - */ - mangleRate: number; -}; - -/** - * Describes the message session.v1.SessionEscapeSummary. - * Use `create(SessionEscapeSummarySchema)` to create a new message. - */ -export const SessionEscapeSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 200); - -/** - * @generated from message session.v1.SpawnShellRequest - */ -export type SpawnShellRequest = Message<"session.v1.SpawnShellRequest"> & { - /** - * Session to attach the shell to (uses session title as ID). - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Human-readable name for the shell tab (defaults to basename of command). - * - * @generated from field: string name = 2; - */ - name: string; - - /** - * Command to run (defaults to $SHELL or /bin/sh). - * - * @generated from field: string command = 3; - */ - command: string; - - /** - * Working directory (defaults to session workspace root). - * - * @generated from field: string working_dir = 4; - */ - workingDir: string; -}; - -/** - * Describes the message session.v1.SpawnShellRequest. - * Use `create(SpawnShellRequestSchema)` to create a new message. - */ -export const SpawnShellRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 201); - -/** - * @generated from message session.v1.SpawnShellResponse - */ -export type SpawnShellResponse = Message<"session.v1.SpawnShellResponse"> & { - /** - * The newly created shell. - * - * @generated from field: session.v1.Shell shell = 1; - */ - shell?: Shell; -}; - -/** - * Describes the message session.v1.SpawnShellResponse. - * Use `create(SpawnShellResponseSchema)` to create a new message. - */ -export const SpawnShellResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 202); - -/** - * @generated from message session.v1.StopShellRequest - */ -export type StopShellRequest = Message<"session.v1.StopShellRequest"> & { - /** - * Session identifier. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Shell identifier. - * - * @generated from field: string shell_id = 2; - */ - shellId: string; -}; - -/** - * Describes the message session.v1.StopShellRequest. - * Use `create(StopShellRequestSchema)` to create a new message. - */ -export const StopShellRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 203); - -/** - * @generated from message session.v1.StopShellResponse - */ -export type StopShellResponse = Message<"session.v1.StopShellResponse"> & { - /** - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * @generated from field: string message = 2; - */ - message: string; -}; - -/** - * Describes the message session.v1.StopShellResponse. - * Use `create(StopShellResponseSchema)` to create a new message. - */ -export const StopShellResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 204); - -/** - * @generated from message session.v1.RestartShellRequest - */ -export type RestartShellRequest = Message<"session.v1.RestartShellRequest"> & { - /** - * Session identifier. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Shell identifier. - * - * @generated from field: string shell_id = 2; - */ - shellId: string; -}; - -/** - * Describes the message session.v1.RestartShellRequest. - * Use `create(RestartShellRequestSchema)` to create a new message. - */ -export const RestartShellRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 205); - -/** - * @generated from message session.v1.RestartShellResponse - */ -export type RestartShellResponse = Message<"session.v1.RestartShellResponse"> & { - /** - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * @generated from field: string message = 2; - */ - message: string; -}; - -/** - * Describes the message session.v1.RestartShellResponse. - * Use `create(RestartShellResponseSchema)` to create a new message. - */ -export const RestartShellResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 206); - -/** - * @generated from message session.v1.ListShellsRequest - */ -export type ListShellsRequest = Message<"session.v1.ListShellsRequest"> & { - /** - * Session identifier. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; -}; - -/** - * Describes the message session.v1.ListShellsRequest. - * Use `create(ListShellsRequestSchema)` to create a new message. - */ -export const ListShellsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 207); - -/** - * @generated from message session.v1.ListShellsResponse - */ -export type ListShellsResponse = Message<"session.v1.ListShellsResponse"> & { - /** - * All shells for the session, sorted by order_index ascending. - * - * @generated from field: repeated session.v1.Shell shells = 1; - */ - shells: Shell[]; -}; - -/** - * Describes the message session.v1.ListShellsResponse. - * Use `create(ListShellsResponseSchema)` to create a new message. - */ -export const ListShellsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 208); - -/** - * @generated from message session.v1.DeleteShellRequest - */ -export type DeleteShellRequest = Message<"session.v1.DeleteShellRequest"> & { - /** - * Session identifier. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Shell identifier. - * - * @generated from field: string shell_id = 2; - */ - shellId: string; -}; - -/** - * Describes the message session.v1.DeleteShellRequest. - * Use `create(DeleteShellRequestSchema)` to create a new message. - */ -export const DeleteShellRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 209); - -/** - * @generated from message session.v1.DeleteShellResponse - */ -export type DeleteShellResponse = Message<"session.v1.DeleteShellResponse"> & { - /** - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * @generated from field: string message = 2; - */ - message: string; -}; - -/** - * Describes the message session.v1.DeleteShellResponse. - * Use `create(DeleteShellResponseSchema)` to create a new message. - */ -export const DeleteShellResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 210); - -/** - * @generated from message session.v1.GenerateSuggestedRuleRequest - */ -export type GenerateSuggestedRuleRequest = Message<"session.v1.GenerateSuggestedRuleRequest"> & { - /** - * @generated from field: session.v1.SuggestionSource source = 1; - */ - source: SuggestionSource; - - /** - * For ANALYTICS_GAPS: number of days of history to analyze (1–90, default 7). - * - * @generated from field: optional int32 window_days = 2; - */ - windowDays?: number; - - /** - * For COMMAND_SAMPLE: the raw command string the user pasted. - * - * @generated from field: string command_sample = 3; - */ - commandSample: string; - - /** - * For REVIEW_QUEUE_ITEM: the analytics entry ID of the review item. - * - * @generated from field: string analytics_item_id = 4; - */ - analyticsItemId: string; - - /** - * For ANALYTICS_GAPS scoped to a single tool/program: optional filter. - * - * @generated from field: string tool_name_filter = 5; - */ - toolNameFilter: string; - - /** - * @generated from field: string program_name_filter = 6; - */ - programNameFilter: string; -}; - -/** - * Describes the message session.v1.GenerateSuggestedRuleRequest. - * Use `create(GenerateSuggestedRuleRequestSchema)` to create a new message. - */ -export const GenerateSuggestedRuleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 211); - -/** - * @generated from message session.v1.GenerateSuggestedRuleResponse - */ -export type GenerateSuggestedRuleResponse = Message<"session.v1.GenerateSuggestedRuleResponse"> & { - /** - * Multiple suggestions are returned so the user can review a batch at once. - * Analytics-gaps calls return up to 5 suggestions (one per top gap cluster). - * Command-sample and review-queue-item calls return exactly 1. - * - * @generated from field: repeated session.v1.SuggestedRuleProto suggestions = 1; - */ - suggestions: SuggestedRuleProto[]; -}; - -/** - * Describes the message session.v1.GenerateSuggestedRuleResponse. - * Use `create(GenerateSuggestedRuleResponseSchema)` to create a new message. - */ -export const GenerateSuggestedRuleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 212); - -/** - * HibernateSession messages - * - * @generated from message session.v1.HibernateSessionRequest - */ -export type HibernateSessionRequest = Message<"session.v1.HibernateSessionRequest"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * reason identifies why the session is being hibernated. - * Values: "manual", "idle", "resource_pressure". Defaults to "manual". - * - * @generated from field: string reason = 2; - */ - reason: string; -}; - -/** - * Describes the message session.v1.HibernateSessionRequest. - * Use `create(HibernateSessionRequestSchema)` to create a new message. - */ -export const HibernateSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 213); - -/** - * @generated from message session.v1.HibernateSessionResponse - */ -export type HibernateSessionResponse = Message<"session.v1.HibernateSessionResponse"> & { - /** - * @generated from field: session.v1.Session session = 1; - */ - session?: Session; -}; - -/** - * Describes the message session.v1.HibernateSessionResponse. - * Use `create(HibernateSessionResponseSchema)` to create a new message. - */ -export const HibernateSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 214); - -/** - * ResumeHibernatedSession messages - * - * @generated from message session.v1.ResumeHibernatedSessionRequest - */ -export type ResumeHibernatedSessionRequest = Message<"session.v1.ResumeHibernatedSessionRequest"> & { - /** - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.ResumeHibernatedSessionRequest. - * Use `create(ResumeHibernatedSessionRequestSchema)` to create a new message. - */ -export const ResumeHibernatedSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 215); - -/** - * @generated from message session.v1.ResumeHibernatedSessionResponse - */ -export type ResumeHibernatedSessionResponse = Message<"session.v1.ResumeHibernatedSessionResponse"> & { - /** - * @generated from field: session.v1.Session session = 1; - */ - session?: Session; -}; - -/** - * Describes the message session.v1.ResumeHibernatedSessionResponse. - * Use `create(ResumeHibernatedSessionResponseSchema)` to create a new message. - */ -export const ResumeHibernatedSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 216); - -/** - * ResumeCrashedSession messages - * - * @generated from message session.v1.ResumeCrashedSessionRequest - */ -export type ResumeCrashedSessionRequest = Message<"session.v1.ResumeCrashedSessionRequest"> & { - /** - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.ResumeCrashedSessionRequest. - * Use `create(ResumeCrashedSessionRequestSchema)` to create a new message. - */ -export const ResumeCrashedSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 217); - -/** - * @generated from message session.v1.ResumeCrashedSessionResponse - */ -export type ResumeCrashedSessionResponse = Message<"session.v1.ResumeCrashedSessionResponse"> & { - /** - * @generated from field: session.v1.Session session = 1; - */ - session?: Session; -}; - -/** - * Describes the message session.v1.ResumeCrashedSessionResponse. - * Use `create(ResumeCrashedSessionResponseSchema)` to create a new message. - */ -export const ResumeCrashedSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 218); - -/** - * ValidateRules messages - * - * @generated from message session.v1.ValidateRulesRequest - */ -export type ValidateRulesRequest = Message<"session.v1.ValidateRulesRequest"> & { - /** - * @generated from field: string yaml_content = 1; - */ - yamlContent: string; -}; - -/** - * Describes the message session.v1.ValidateRulesRequest. - * Use `create(ValidateRulesRequestSchema)` to create a new message. - */ -export const ValidateRulesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 219); - -/** - * @generated from message session.v1.ValidateRulesResponse - */ -export type ValidateRulesResponse = Message<"session.v1.ValidateRulesResponse"> & { - /** - * @generated from field: repeated session.v1.ParsedRuleResult results = 1; - */ - results: ParsedRuleResult[]; - - /** - * @generated from field: int32 valid_count = 2; - */ - validCount: number; - - /** - * @generated from field: int32 error_count = 3; - */ - errorCount: number; -}; - -/** - * Describes the message session.v1.ValidateRulesResponse. - * Use `create(ValidateRulesResponseSchema)` to create a new message. - */ -export const ValidateRulesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 220); - -/** - * @generated from message session.v1.ParsedRuleResult - */ -export type ParsedRuleResult = Message<"session.v1.ParsedRuleResult"> & { - /** - * @generated from field: session.v1.ApprovalRuleProto rule = 1; - */ - rule?: ApprovalRuleProto; - - /** - * @generated from field: repeated string errors = 2; - */ - errors: string[]; - - /** - * @generated from field: bool valid = 3; - */ - valid: boolean; - - /** - * @generated from field: string original_name = 4; - */ - originalName: string; -}; - -/** - * Describes the message session.v1.ParsedRuleResult. - * Use `create(ParsedRuleResultSchema)` to create a new message. - */ -export const ParsedRuleResultSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 221); - -/** - * ExportRules messages - * - * @generated from message session.v1.ExportRulesRequest - */ -export type ExportRulesRequest = Message<"session.v1.ExportRulesRequest"> & { - /** - * @generated from field: repeated string rule_ids = 1; - */ - ruleIds: string[]; -}; - -/** - * Describes the message session.v1.ExportRulesRequest. - * Use `create(ExportRulesRequestSchema)` to create a new message. - */ -export const ExportRulesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 222); - -/** - * @generated from message session.v1.ExportRulesResponse - */ -export type ExportRulesResponse = Message<"session.v1.ExportRulesResponse"> & { - /** - * @generated from field: string yaml_content = 1; - */ - yamlContent: string; -}; - -/** - * Describes the message session.v1.ExportRulesResponse. - * Use `create(ExportRulesResponseSchema)` to create a new message. - */ -export const ExportRulesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 223); - -/** - * BulkUpsertRules messages - * - * @generated from message session.v1.BulkUpsertRulesRequest - */ -export type BulkUpsertRulesRequest = Message<"session.v1.BulkUpsertRulesRequest"> & { - /** - * @generated from field: repeated session.v1.ApprovalRuleProto rules = 1; - */ - rules: ApprovalRuleProto[]; - - /** - * @generated from field: bool overwrite_duplicates = 2; - */ - overwriteDuplicates: boolean; -}; - -/** - * Describes the message session.v1.BulkUpsertRulesRequest. - * Use `create(BulkUpsertRulesRequestSchema)` to create a new message. - */ -export const BulkUpsertRulesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 224); - -/** - * @generated from message session.v1.BulkUpsertRulesResponse - */ -export type BulkUpsertRulesResponse = Message<"session.v1.BulkUpsertRulesResponse"> & { - /** - * @generated from field: int32 created = 1; - */ - created: number; - - /** - * @generated from field: int32 updated = 2; - */ - updated: number; - - /** - * @generated from field: int32 skipped = 3; - */ - skipped: number; - - /** - * @generated from field: repeated string errors = 4; - */ - errors: string[]; -}; - -/** - * Describes the message session.v1.BulkUpsertRulesResponse. - * Use `create(BulkUpsertRulesResponseSchema)` to create a new message. - */ -export const BulkUpsertRulesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 225); - -/** - * GetConfigFileRules messages - * - * @generated from message session.v1.GetConfigFileRulesRequest - */ -export type GetConfigFileRulesRequest = Message<"session.v1.GetConfigFileRulesRequest"> & { -}; - -/** - * Describes the message session.v1.GetConfigFileRulesRequest. - * Use `create(GetConfigFileRulesRequestSchema)` to create a new message. - */ -export const GetConfigFileRulesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 226); - -/** - * @generated from message session.v1.GetConfigFileRulesResponse - */ -export type GetConfigFileRulesResponse = Message<"session.v1.GetConfigFileRulesResponse"> & { - /** - * @generated from field: repeated session.v1.ApprovalRuleProto rules = 1; - */ - rules: ApprovalRuleProto[]; - - /** - * @generated from field: string file_path = 2; - */ - filePath: string; -}; - -/** - * Describes the message session.v1.GetConfigFileRulesResponse. - * Use `create(GetConfigFileRulesResponseSchema)` to create a new message. - */ -export const GetConfigFileRulesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 227); - -/** - * SaveRulesToConfigFile messages - * - * @generated from message session.v1.SaveRulesToConfigFileRequest - */ -export type SaveRulesToConfigFileRequest = Message<"session.v1.SaveRulesToConfigFileRequest"> & { - /** - * @generated from field: repeated string rule_ids = 1; - */ - ruleIds: string[]; - - /** - * @generated from field: session.v1.ApprovalRuleProto rule = 2; - */ - rule?: ApprovalRuleProto; -}; - -/** - * Describes the message session.v1.SaveRulesToConfigFileRequest. - * Use `create(SaveRulesToConfigFileRequestSchema)` to create a new message. - */ -export const SaveRulesToConfigFileRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 228); - -/** - * @generated from message session.v1.SaveRulesToConfigFileResponse - */ -export type SaveRulesToConfigFileResponse = Message<"session.v1.SaveRulesToConfigFileResponse"> & { - /** - * @generated from field: string file_path = 1; - */ - filePath: string; -}; - -/** - * Describes the message session.v1.SaveRulesToConfigFileResponse. - * Use `create(SaveRulesToConfigFileResponseSchema)` to create a new message. - */ -export const SaveRulesToConfigFileResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 229); - -/** - * @generated from message session.v1.WorkflowProto - */ -export type WorkflowProto = Message<"session.v1.WorkflowProto"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string slug = 2; - */ - slug: string; - - /** - * @generated from field: string name = 3; - */ - name: string; - - /** - * @generated from field: string description = 4; - */ - description: string; - - /** - * @generated from field: string command = 5; - */ - command: string; - - /** - * @generated from field: string target_directory = 6; - */ - targetDirectory: string; - - /** - * @generated from field: string input_template = 7; - */ - inputTemplate: string; - - /** - * @generated from field: string session_type = 8; - */ - sessionType: string; - - /** - * @generated from field: string model = 9; - */ - model: string; - - /** - * @generated from field: string agent_type = 10; - */ - agentType: string; - - /** - * @generated from field: string cron_expression = 11; - */ - cronExpression: string; - - /** - * @generated from field: bool cron_enabled = 12; - */ - cronEnabled: boolean; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 13; - */ - createdAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp updated_at = 14; - */ - updatedAt?: Timestamp; - - /** - * Retention: keep only the N most recent sessions (0 = keep all, i.e. disabled). - * - * @generated from field: optional int32 keep_sessions = 15; - */ - keepSessions?: number; - - /** - * Retention: auto-archive completed sessions after this many hours (0 = disabled). - * - * @generated from field: optional int32 archive_after_hours = 16; - */ - archiveAfterHours?: number; -}; - -/** - * Describes the message session.v1.WorkflowProto. - * Use `create(WorkflowProtoSchema)` to create a new message. - */ -export const WorkflowProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 230); - -/** - * @generated from message session.v1.CreateWorkflowRequest - */ -export type CreateWorkflowRequest = Message<"session.v1.CreateWorkflowRequest"> & { - /** - * @generated from field: string slug = 1; - */ - slug: string; - - /** - * @generated from field: string name = 2; - */ - name: string; - - /** - * @generated from field: string description = 3; - */ - description: string; - - /** - * @generated from field: string command = 4; - */ - command: string; - - /** - * @generated from field: string target_directory = 5; - */ - targetDirectory: string; - - /** - * @generated from field: string input_template = 6; - */ - inputTemplate: string; - - /** - * @generated from field: string session_type = 7; - */ - sessionType: string; - - /** - * @generated from field: string model = 8; - */ - model: string; - - /** - * @generated from field: string agent_type = 9; - */ - agentType: string; - - /** - * @generated from field: string cron_expression = 10; - */ - cronExpression: string; - - /** - * @generated from field: bool cron_enabled = 11; - */ - cronEnabled: boolean; - - /** - * Retention: keep only the N most recent sessions (0 = keep all). - * - * @generated from field: optional int32 keep_sessions = 12; - */ - keepSessions?: number; - - /** - * Retention: auto-archive completed sessions after this many hours (0 = disabled). - * - * @generated from field: optional int32 archive_after_hours = 13; - */ - archiveAfterHours?: number; -}; - -/** - * Describes the message session.v1.CreateWorkflowRequest. - * Use `create(CreateWorkflowRequestSchema)` to create a new message. - */ -export const CreateWorkflowRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 231); - -/** - * @generated from message session.v1.CreateWorkflowResponse - */ -export type CreateWorkflowResponse = Message<"session.v1.CreateWorkflowResponse"> & { - /** - * @generated from field: session.v1.WorkflowProto workflow = 1; - */ - workflow?: WorkflowProto; -}; - -/** - * Describes the message session.v1.CreateWorkflowResponse. - * Use `create(CreateWorkflowResponseSchema)` to create a new message. - */ -export const CreateWorkflowResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 232); - -/** - * @generated from message session.v1.UpdateWorkflowRequest - */ -export type UpdateWorkflowRequest = Message<"session.v1.UpdateWorkflowRequest"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * All fields optional — only provided fields are updated. - * - * @generated from field: optional string name = 2; - */ - name?: string; - - /** - * @generated from field: optional string description = 3; - */ - description?: string; - - /** - * @generated from field: optional string command = 4; - */ - command?: string; - - /** - * @generated from field: optional string target_directory = 5; - */ - targetDirectory?: string; - - /** - * @generated from field: optional string input_template = 6; - */ - inputTemplate?: string; - - /** - * @generated from field: optional string session_type = 7; - */ - sessionType?: string; - - /** - * @generated from field: optional string model = 8; - */ - model?: string; - - /** - * @generated from field: optional string agent_type = 9; - */ - agentType?: string; - - /** - * @generated from field: optional string cron_expression = 10; - */ - cronExpression?: string; - - /** - * @generated from field: optional bool cron_enabled = 11; - */ - cronEnabled?: boolean; - - /** - * Retention: keep only the N most recent sessions (0 = keep all). - * - * @generated from field: optional int32 keep_sessions = 12; - */ - keepSessions?: number; - - /** - * Retention: auto-archive completed sessions after this many hours (0 = disabled). - * - * @generated from field: optional int32 archive_after_hours = 13; - */ - archiveAfterHours?: number; -}; - -/** - * Describes the message session.v1.UpdateWorkflowRequest. - * Use `create(UpdateWorkflowRequestSchema)` to create a new message. - */ -export const UpdateWorkflowRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 233); - -/** - * @generated from message session.v1.UpdateWorkflowResponse - */ -export type UpdateWorkflowResponse = Message<"session.v1.UpdateWorkflowResponse"> & { - /** - * @generated from field: session.v1.WorkflowProto workflow = 1; - */ - workflow?: WorkflowProto; -}; - -/** - * Describes the message session.v1.UpdateWorkflowResponse. - * Use `create(UpdateWorkflowResponseSchema)` to create a new message. - */ -export const UpdateWorkflowResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 234); - -/** - * @generated from message session.v1.DeleteWorkflowRequest - */ -export type DeleteWorkflowRequest = Message<"session.v1.DeleteWorkflowRequest"> & { - /** - * @generated from field: string id = 1; - */ - id: string; -}; - -/** - * Describes the message session.v1.DeleteWorkflowRequest. - * Use `create(DeleteWorkflowRequestSchema)` to create a new message. - */ -export const DeleteWorkflowRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 235); - -/** - * @generated from message session.v1.DeleteWorkflowResponse - */ -export type DeleteWorkflowResponse = Message<"session.v1.DeleteWorkflowResponse"> & { -}; - -/** - * Describes the message session.v1.DeleteWorkflowResponse. - * Use `create(DeleteWorkflowResponseSchema)` to create a new message. - */ -export const DeleteWorkflowResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 236); - -/** - * @generated from message session.v1.ListWorkflowsRequest - */ -export type ListWorkflowsRequest = Message<"session.v1.ListWorkflowsRequest"> & { -}; - -/** - * Describes the message session.v1.ListWorkflowsRequest. - * Use `create(ListWorkflowsRequestSchema)` to create a new message. - */ -export const ListWorkflowsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 237); - -/** - * @generated from message session.v1.ListWorkflowsResponse - */ -export type ListWorkflowsResponse = Message<"session.v1.ListWorkflowsResponse"> & { - /** - * @generated from field: repeated session.v1.WorkflowProto workflows = 1; - */ - workflows: WorkflowProto[]; -}; - -/** - * Describes the message session.v1.ListWorkflowsResponse. - * Use `create(ListWorkflowsResponseSchema)` to create a new message. - */ -export const ListWorkflowsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 238); - -/** - * @generated from message session.v1.RunWorkflowRequest - */ -export type RunWorkflowRequest = Message<"session.v1.RunWorkflowRequest"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * arg is injected into input_template if present (replaces {{input}}). - * - * @generated from field: string arg = 2; - */ - arg: string; -}; - -/** - * Describes the message session.v1.RunWorkflowRequest. - * Use `create(RunWorkflowRequestSchema)` to create a new message. - */ -export const RunWorkflowRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 239); - -/** - * @generated from message session.v1.ListSlashCommandsRequest - */ -export type ListSlashCommandsRequest = Message<"session.v1.ListSlashCommandsRequest"> & { - /** - * Directory to scan for project-level .claude/commands/. May be empty. - * - * @generated from field: string target_directory = 1; - */ - targetDirectory: string; -}; - -/** - * Describes the message session.v1.ListSlashCommandsRequest. - * Use `create(ListSlashCommandsRequestSchema)` to create a new message. - */ -export const ListSlashCommandsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 240); - -/** - * SlashCommandInfo describes a single slash command available for autocomplete. - * - * @generated from message session.v1.SlashCommandInfo - */ -export type SlashCommandInfo = Message<"session.v1.SlashCommandInfo"> & { - /** - * Command name without the leading slash, e.g. "code:fix-loop". - * Subdirectory separators are replaced with ":". - * - * @generated from field: string name = 1; - */ - name: string; - - /** - * Human-readable title from YAML frontmatter, or the name if absent. - * - * @generated from field: string title = 2; - */ - title: string; - - /** - * Short description from YAML frontmatter. - * - * @generated from field: string description = 3; - */ - description: string; - - /** - * "builtin" | "user" | "project" - * - * @generated from field: string source = 4; - */ - source: string; -}; - -/** - * Describes the message session.v1.SlashCommandInfo. - * Use `create(SlashCommandInfoSchema)` to create a new message. - */ -export const SlashCommandInfoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 241); - -/** - * @generated from message session.v1.ListSlashCommandsResponse - */ -export type ListSlashCommandsResponse = Message<"session.v1.ListSlashCommandsResponse"> & { - /** - * @generated from field: repeated session.v1.SlashCommandInfo commands = 1; - */ - commands: SlashCommandInfo[]; -}; - -/** - * Describes the message session.v1.ListSlashCommandsResponse. - * Use `create(ListSlashCommandsResponseSchema)` to create a new message. - */ -export const ListSlashCommandsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 242); - -/** - * @generated from message session.v1.RunWorkflowResponse - */ -export type RunWorkflowResponse = Message<"session.v1.RunWorkflowResponse"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; -}; - -/** - * Describes the message session.v1.RunWorkflowResponse. - * Use `create(RunWorkflowResponseSchema)` to create a new message. - */ -export const RunWorkflowResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 243); - -/** - * DetectionEventProto is the wire representation of a single status-detection event. - * - * @generated from message session.v1.DetectionEventProto - */ -export type DetectionEventProto = Message<"session.v1.DetectionEventProto"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * @generated from field: google.protobuf.Timestamp timestamp = 2; - */ - timestamp?: Timestamp; - - /** - * pattern Name or "" if no match - * - * @generated from field: string matched_pattern = 3; - */ - matchedPattern: string; - - /** - * "active", "idle", "error", etc. - * - * @generated from field: string matched_category = 4; - */ - matchedCategory: string; - - /** - * maps to DetectedStatus int value - * - * @generated from field: int32 result_status = 5; - */ - resultStatus: number; - - /** - * last 512 bytes of cleaned terminal output - * - * @generated from field: string tail_snippet = 6; - */ - tailSnippet: string; -}; - -/** - * Describes the message session.v1.DetectionEventProto. - * Use `create(DetectionEventProtoSchema)` to create a new message. - */ -export const DetectionEventProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 244); - -/** - * @generated from message session.v1.GetDetectionEventsRequest - */ -export type GetDetectionEventsRequest = Message<"session.v1.GetDetectionEventsRequest"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * max events to return; capped at 100 server-side; 0 means default (20) - * - * @generated from field: int32 limit = 2; - */ - limit: number; -}; - -/** - * Describes the message session.v1.GetDetectionEventsRequest. - * Use `create(GetDetectionEventsRequestSchema)` to create a new message. - */ -export const GetDetectionEventsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 245); - -/** - * @generated from message session.v1.GetDetectionEventsResponse - */ -export type GetDetectionEventsResponse = Message<"session.v1.GetDetectionEventsResponse"> & { - /** - * @generated from field: repeated session.v1.DetectionEventProto events = 1; - */ - events: DetectionEventProto[]; -}; - -/** - * Describes the message session.v1.GetDetectionEventsResponse. - * Use `create(GetDetectionEventsResponseSchema)` to create a new message. - */ -export const GetDetectionEventsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 246); - -/** - * @generated from message session.v1.ArchiveSessionRequest - */ -export type ArchiveSessionRequest = Message<"session.v1.ArchiveSessionRequest"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; -}; - -/** - * Describes the message session.v1.ArchiveSessionRequest. - * Use `create(ArchiveSessionRequestSchema)` to create a new message. - */ -export const ArchiveSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 247); - -/** - * @generated from message session.v1.ArchiveSessionResponse - */ -export type ArchiveSessionResponse = Message<"session.v1.ArchiveSessionResponse"> & { -}; - -/** - * Describes the message session.v1.ArchiveSessionResponse. - * Use `create(ArchiveSessionResponseSchema)` to create a new message. - */ -export const ArchiveSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 248); - -/** - * @generated from message session.v1.UnarchiveSessionRequest - */ -export type UnarchiveSessionRequest = Message<"session.v1.UnarchiveSessionRequest"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; -}; - -/** - * Describes the message session.v1.UnarchiveSessionRequest. - * Use `create(UnarchiveSessionRequestSchema)` to create a new message. - */ -export const UnarchiveSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 249); - -/** - * @generated from message session.v1.UnarchiveSessionResponse - */ -export type UnarchiveSessionResponse = Message<"session.v1.UnarchiveSessionResponse"> & { -}; - -/** - * Describes the message session.v1.UnarchiveSessionResponse. - * Use `create(UnarchiveSessionResponseSchema)` to create a new message. - */ -export const UnarchiveSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 250); - -/** - * @generated from message session.v1.ArchiveWorkflowSessionsRequest - */ -export type ArchiveWorkflowSessionsRequest = Message<"session.v1.ArchiveWorkflowSessionsRequest"> & { - /** - * @generated from field: string workflow_id = 1; - */ - workflowId: string; -}; - -/** - * Describes the message session.v1.ArchiveWorkflowSessionsRequest. - * Use `create(ArchiveWorkflowSessionsRequestSchema)` to create a new message. - */ -export const ArchiveWorkflowSessionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 251); - -/** - * @generated from message session.v1.ArchiveWorkflowSessionsResponse - */ -export type ArchiveWorkflowSessionsResponse = Message<"session.v1.ArchiveWorkflowSessionsResponse"> & { - /** - * Number of sessions that were archived (active/creating/paused are skipped). - * - * @generated from field: int32 archived_count = 1; - */ - archivedCount: number; -}; - -/** - * Describes the message session.v1.ArchiveWorkflowSessionsResponse. - * Use `create(ArchiveWorkflowSessionsResponseSchema)` to create a new message. - */ -export const ArchiveWorkflowSessionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 252); - -/** - * @generated from message session.v1.DeleteWorkflowFailedSessionsRequest - */ -export type DeleteWorkflowFailedSessionsRequest = Message<"session.v1.DeleteWorkflowFailedSessionsRequest"> & { - /** - * @generated from field: string workflow_id = 1; - */ - workflowId: string; -}; - -/** - * Describes the message session.v1.DeleteWorkflowFailedSessionsRequest. - * Use `create(DeleteWorkflowFailedSessionsRequestSchema)` to create a new message. - */ -export const DeleteWorkflowFailedSessionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 253); - -/** - * @generated from message session.v1.DeleteWorkflowFailedSessionsResponse - */ -export type DeleteWorkflowFailedSessionsResponse = Message<"session.v1.DeleteWorkflowFailedSessionsResponse"> & { - /** - * Number of sessions that were archived (soft-deleted). - * - * @generated from field: int32 deleted_count = 1; - */ - deletedCount: number; -}; - -/** - * Describes the message session.v1.DeleteWorkflowFailedSessionsResponse. - * Use `create(DeleteWorkflowFailedSessionsResponseSchema)` to create a new message. - */ -export const DeleteWorkflowFailedSessionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 254); - -/** - * @generated from message session.v1.GetProviderLimitsRequest - */ -export type GetProviderLimitsRequest = Message<"session.v1.GetProviderLimitsRequest"> & { - /** - * session title/id - * - * @generated from field: string session_id = 1; - */ - sessionId: string; -}; - -/** - * Describes the message session.v1.GetProviderLimitsRequest. - * Use `create(GetProviderLimitsRequestSchema)` to create a new message. - */ -export const GetProviderLimitsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 255); - -/** - * @generated from message session.v1.ProviderLimitsProto - */ -export type ProviderLimitsProto = Message<"session.v1.ProviderLimitsProto"> & { - /** - * @generated from field: string provider = 1; - */ - provider: string; - - /** - * @generated from field: string model = 2; - */ - model: string; - - /** - * @generated from field: int32 requests_limit = 3; - */ - requestsLimit: number; - - /** - * @generated from field: int32 requests_remaining = 4; - */ - requestsRemaining: number; - - /** - * @generated from field: google.protobuf.Timestamp requests_reset = 5; - */ - requestsReset?: Timestamp; - - /** - * @generated from field: int32 tokens_limit = 6; - */ - tokensLimit: number; - - /** - * @generated from field: int32 tokens_remaining = 7; - */ - tokensRemaining: number; - - /** - * @generated from field: google.protobuf.Timestamp tokens_reset = 8; - */ - tokensReset?: Timestamp; - - /** - * @generated from field: int32 context_tokens_used = 9; - */ - contextTokensUsed: number; - - /** - * @generated from field: int32 context_tokens_max = 10; - */ - contextTokensMax: number; - - /** - * @generated from field: int32 session_input_tokens = 11; - */ - sessionInputTokens: number; - - /** - * @generated from field: int32 session_output_tokens = 12; - */ - sessionOutputTokens: number; - - /** - * @generated from field: double estimated_cost_usd = 13; - */ - estimatedCostUsd: number; - - /** - * @generated from field: bool available = 14; - */ - available: boolean; - - /** - * @generated from field: string last_error_code = 15; - */ - lastErrorCode: string; - - /** - * @generated from field: google.protobuf.Timestamp fetched_at = 16; - */ - fetchedAt?: Timestamp; -}; - -/** - * Describes the message session.v1.ProviderLimitsProto. - * Use `create(ProviderLimitsProtoSchema)` to create a new message. - */ -export const ProviderLimitsProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 256); - -/** - * @generated from message session.v1.GetProviderLimitsResponse - */ -export type GetProviderLimitsResponse = Message<"session.v1.GetProviderLimitsResponse"> & { - /** - * @generated from field: session.v1.ProviderLimitsProto limits = 1; - */ - limits?: ProviderLimitsProto; -}; - -/** - * Describes the message session.v1.GetProviderLimitsResponse. - * Use `create(GetProviderLimitsResponseSchema)` to create a new message. - */ -export const GetProviderLimitsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session, 257); - -/** - * SessionService manages AI agent session lifecycle operations. - * Provides CRUD operations and real-time streaming for session management. - * - * @generated from service session.v1.SessionService - */ -export const SessionService: GenService<{ - /** - * ListSessions returns all sessions with optional filtering. - * - * @generated from rpc session.v1.SessionService.ListSessions - */ - listSessions: { - methodKind: "unary"; - input: typeof ListSessionsRequestSchema; - output: typeof ListSessionsResponseSchema; - }, - /** - * GetSession retrieves a specific session by ID. - * - * @generated from rpc session.v1.SessionService.GetSession - */ - getSession: { - methodKind: "unary"; - input: typeof GetSessionRequestSchema; - output: typeof GetSessionResponseSchema; - }, - /** - * CreateSession initializes a new AI agent session with tmux and git worktree. - * - * @generated from rpc session.v1.SessionService.CreateSession - */ - createSession: { - methodKind: "unary"; - input: typeof CreateSessionRequestSchema; - output: typeof CreateSessionResponseSchema; - }, - /** - * UpdateSession modifies session properties (pause/resume, category, etc). - * - * @generated from rpc session.v1.SessionService.UpdateSession - */ - updateSession: { - methodKind: "unary"; - input: typeof UpdateSessionRequestSchema; - output: typeof UpdateSessionResponseSchema; - }, - /** - * DeleteSession stops and removes a session, cleaning up resources. - * - * @generated from rpc session.v1.SessionService.DeleteSession - */ - deleteSession: { - methodKind: "unary"; - input: typeof DeleteSessionRequestSchema; - output: typeof DeleteSessionResponseSchema; - }, - /** - * WatchSessions streams real-time session events (created/updated/deleted). - * Server-streaming RPC for live updates without polling. - * - * @generated from rpc session.v1.SessionService.WatchSessions - */ - watchSessions: { - methodKind: "server_streaming"; - input: typeof WatchSessionsRequestSchema; - output: typeof SessionEventSchema; - }, - /** - * StreamTerminal provides bidirectional streaming for terminal I/O. - * Clients can send input and receive output from the tmux PTY. - * - * @generated from rpc session.v1.SessionService.StreamTerminal - */ - streamTerminal: { - methodKind: "bidi_streaming"; - input: typeof TerminalDataSchema; - output: typeof TerminalDataSchema; - }, - /** - * GetSessionDiff retrieves the current git diff for a session. - * - * @generated from rpc session.v1.SessionService.GetSessionDiff - */ - getSessionDiff: { - methodKind: "unary"; - input: typeof GetSessionDiffRequestSchema; - output: typeof GetSessionDiffResponseSchema; - }, - /** - * GetVCSStatus retrieves the current version control status for a session. - * Returns branch info, changed files, staged/unstaged status, and remote sync state. - * - * @generated from rpc session.v1.SessionService.GetVCSStatus - */ - getVCSStatus: { - methodKind: "unary"; - input: typeof GetVCSStatusRequestSchema; - output: typeof GetVCSStatusResponseSchema; - }, - /** - * GetReviewQueue returns sessions needing user attention with priority ordering. - * - * @generated from rpc session.v1.SessionService.GetReviewQueue - */ - getReviewQueue: { - methodKind: "unary"; - input: typeof GetReviewQueueRequestSchema; - output: typeof GetReviewQueueResponseSchema; - }, - /** - * AcknowledgeSession marks a session as acknowledged in the review queue. - * The session won't reappear in the queue until it receives an update. - * - * @generated from rpc session.v1.SessionService.AcknowledgeSession - */ - acknowledgeSession: { - methodKind: "unary"; - input: typeof AcknowledgeSessionRequestSchema; - output: typeof AcknowledgeSessionResponseSchema; - }, - /** - * GetLogs retrieves application logs with optional filtering and search. - * - * @generated from rpc session.v1.SessionService.GetLogs - */ - getLogs: { - methodKind: "unary"; - input: typeof GetLogsRequestSchema; - output: typeof GetLogsResponseSchema; - }, - /** - * WatchReviewQueue streams real-time review queue events (items added/removed/updated). - * Server-streaming RPC for live queue updates without polling. - * - * @generated from rpc session.v1.SessionService.WatchReviewQueue - */ - watchReviewQueue: { - methodKind: "server_streaming"; - input: typeof WatchReviewQueueRequestSchema; - output: typeof ReviewQueueEventSchema; - }, - /** - * LogUserInteraction logs a user interaction event for audit trail. - * Records user actions for compliance, debugging, and analytics. - * - * @generated from rpc session.v1.SessionService.LogUserInteraction - */ - logUserInteraction: { - methodKind: "unary"; - input: typeof LogUserInteractionRequestSchema; - output: typeof LogUserInteractionResponseSchema; - }, - /** - * GetClaudeConfig retrieves a Claude configuration file by name (CLAUDE.md, settings.json, agents.md). - * - * @generated from rpc session.v1.SessionService.GetClaudeConfig - */ - getClaudeConfig: { - methodKind: "unary"; - input: typeof GetClaudeConfigRequestSchema; - output: typeof GetClaudeConfigResponseSchema; - }, - /** - * ListClaudeConfigs returns all configuration files in the ~/.claude directory. - * - * @generated from rpc session.v1.SessionService.ListClaudeConfigs - */ - listClaudeConfigs: { - methodKind: "unary"; - input: typeof ListClaudeConfigsRequestSchema; - output: typeof ListClaudeConfigsResponseSchema; - }, - /** - * UpdateClaudeConfig updates a Claude configuration file with atomic write and backup. - * - * @generated from rpc session.v1.SessionService.UpdateClaudeConfig - */ - updateClaudeConfig: { - methodKind: "unary"; - input: typeof UpdateClaudeConfigRequestSchema; - output: typeof UpdateClaudeConfigResponseSchema; - }, - /** - * ListClaudeHistory returns Claude session history entries with optional filtering. - * - * @generated from rpc session.v1.SessionService.ListClaudeHistory - */ - listClaudeHistory: { - methodKind: "unary"; - input: typeof ListClaudeHistoryRequestSchema; - output: typeof ListClaudeHistoryResponseSchema; - }, - /** - * GetClaudeHistoryDetail retrieves detailed information for a specific history entry. - * - * @generated from rpc session.v1.SessionService.GetClaudeHistoryDetail - */ - getClaudeHistoryDetail: { - methodKind: "unary"; - input: typeof GetClaudeHistoryDetailRequestSchema; - output: typeof GetClaudeHistoryDetailResponseSchema; - }, - /** - * GetClaudeHistoryMessages retrieves messages from a specific conversation. - * - * @generated from rpc session.v1.SessionService.GetClaudeHistoryMessages - */ - getClaudeHistoryMessages: { - methodKind: "unary"; - input: typeof GetClaudeHistoryMessagesRequestSchema; - output: typeof GetClaudeHistoryMessagesResponseSchema; - }, - /** - * SearchClaudeHistory performs full-text search across Claude conversation history. - * Returns ranked results with contextual snippets showing where query terms appear. - * - * @generated from rpc session.v1.SessionService.SearchClaudeHistory - */ - searchClaudeHistory: { - methodKind: "unary"; - input: typeof SearchClaudeHistoryRequestSchema; - output: typeof SearchClaudeHistoryResponseSchema; - }, - /** - * PR Info and management RPCs - * - * @generated from rpc session.v1.SessionService.GetPRInfo - */ - getPRInfo: { - methodKind: "unary"; - input: typeof GetPRInfoRequestSchema; - output: typeof GetPRInfoResponseSchema; - }, - /** - * @generated from rpc session.v1.SessionService.GetPRComments - */ - getPRComments: { - methodKind: "unary"; - input: typeof GetPRCommentsRequestSchema; - output: typeof GetPRCommentsResponseSchema; - }, - /** - * @generated from rpc session.v1.SessionService.PostPRComment - */ - postPRComment: { - methodKind: "unary"; - input: typeof PostPRCommentRequestSchema; - output: typeof PostPRCommentResponseSchema; - }, - /** - * @generated from rpc session.v1.SessionService.MergePR - */ - mergePR: { - methodKind: "unary"; - input: typeof MergePRRequestSchema; - output: typeof MergePRResponseSchema; - }, - /** - * @generated from rpc session.v1.SessionService.ClosePR - */ - closePR: { - methodKind: "unary"; - input: typeof ClosePRRequestSchema; - output: typeof ClosePRResponseSchema; - }, - /** - * SendNotification allows tmux sessions to send notifications to the server. - * Notifications are broadcast to all connected clients (web UI and TUI). - * Requires session_id to identify the source session. - * Enforces localhost-only restriction and rate limiting (10/sec per session). - * - * @generated from rpc session.v1.SessionService.SendNotification - */ - sendNotification: { - methodKind: "unary"; - input: typeof SendNotificationRequestSchema; - output: typeof SendNotificationResponseSchema; - }, - /** - * FocusWindow activates a window for the specified application. - * Used for deep linking from notifications to bring the source IDE/terminal to front. - * Only works on macOS via AppleScript. Requires localhost origin. - * - * @generated from rpc session.v1.SessionService.FocusWindow - */ - focusWindow: { - methodKind: "unary"; - input: typeof FocusWindowRequestSchema; - output: typeof FocusWindowResponseSchema; - }, - /** - * RenameSession changes the title of an existing session. - * Validates that the new title doesn't conflict with existing sessions. - * - * @generated from rpc session.v1.SessionService.RenameSession - */ - renameSession: { - methodKind: "unary"; - input: typeof RenameSessionRequestSchema; - output: typeof RenameSessionResponseSchema; - }, - /** - * RestartSession restarts a session by killing and recreating the tmux session. - * Optionally preserves terminal output for debugging purposes. - * - * @generated from rpc session.v1.SessionService.RestartSession - */ - restartSession: { - methodKind: "unary"; - input: typeof RestartSessionRequestSchema; - output: typeof RestartSessionResponseSchema; - }, - /** - * GetWorkspaceInfo retrieves VCS and workspace information for a session. - * Returns VCS type (Git/JJ), current branch, revision, and uncommitted changes status. - * - * @generated from rpc session.v1.SessionService.GetWorkspaceInfo - */ - getWorkspaceInfo: { - methodKind: "unary"; - input: typeof GetWorkspaceInfoRequestSchema; - output: typeof GetWorkspaceInfoResponseSchema; - }, - /** - * ListWorkspaceTargets returns available switch targets for a session. - * Includes bookmarks/branches, recent revisions, and worktrees. - * - * @generated from rpc session.v1.SessionService.ListWorkspaceTargets - */ - listWorkspaceTargets: { - methodKind: "unary"; - input: typeof ListWorkspaceTargetsRequestSchema; - output: typeof ListWorkspaceTargetsResponseSchema; - }, - /** - * SwitchWorkspace switches a session's workspace to a different branch, revision, or worktree. - * The session is restarted with Claude --resume to preserve conversation context. - * - * @generated from rpc session.v1.SessionService.SwitchWorkspace - */ - switchWorkspace: { - methodKind: "unary"; - input: typeof SwitchWorkspaceRequestSchema; - output: typeof SwitchWorkspaceResponseSchema; - }, - /** - * ResolveApproval allows the web UI to approve or deny a pending Claude Code tool use request. - * This unblocks the HTTP hook handler that is waiting for the user's decision. - * - * @generated from rpc session.v1.SessionService.ResolveApproval - */ - resolveApproval: { - methodKind: "unary"; - input: typeof ResolveApprovalRequestSchema; - output: typeof ResolveApprovalResponseSchema; - }, - /** - * ListPendingApprovals returns all pending Claude Code tool approval requests. - * Used by the web UI to populate the approval panel on initial load. - * - * @generated from rpc session.v1.SessionService.ListPendingApprovals - */ - listPendingApprovals: { - methodKind: "unary"; - input: typeof ListPendingApprovalsRequestSchema; - output: typeof ListPendingApprovalsResponseSchema; - }, - /** - * CreateDebugSnapshot captures diagnostic information and writes it to a JSON file. - * Gathers session state, tmux info, pending approvals, and recent logs. - * The file is written to ~/.claude-squad/logs/debug-snapshot-{timestamp}.json. - * - * @generated from rpc session.v1.SessionService.CreateDebugSnapshot - */ - createDebugSnapshot: { - methodKind: "unary"; - input: typeof CreateDebugSnapshotRequestSchema; - output: typeof CreateDebugSnapshotResponseSchema; - }, - /** - * GetNotificationHistory returns persisted notification history with optional filtering. - * Notifications survive server restarts and page refreshes. - * - * @generated from rpc session.v1.SessionService.GetNotificationHistory - */ - getNotificationHistory: { - methodKind: "unary"; - input: typeof GetNotificationHistoryRequestSchema; - output: typeof GetNotificationHistoryResponseSchema; - }, - /** - * MarkNotificationRead marks specific notifications as read. - * If notification_ids is empty, marks all notifications as read. - * - * @generated from rpc session.v1.SessionService.MarkNotificationRead - */ - markNotificationRead: { - methodKind: "unary"; - input: typeof MarkNotificationReadRequestSchema; - output: typeof MarkNotificationReadResponseSchema; - }, - /** - * ClearNotificationHistory removes notifications from the history. - * Optionally filters by timestamp to only clear older notifications. - * - * @generated from rpc session.v1.SessionService.ClearNotificationHistory - */ - clearNotificationHistory: { - methodKind: "unary"; - input: typeof ClearNotificationHistoryRequestSchema; - output: typeof ClearNotificationHistoryResponseSchema; - }, - /** - * ListApprovalRules returns all auto-approval rules (user, seed, and claude-settings). - * - * @generated from rpc session.v1.SessionService.ListApprovalRules - */ - listApprovalRules: { - methodKind: "unary"; - input: typeof ListApprovalRulesRequestSchema; - output: typeof ListApprovalRulesResponseSchema; - }, - /** - * UpsertApprovalRule creates or updates a user-defined auto-approval rule. - * - * @generated from rpc session.v1.SessionService.UpsertApprovalRule - */ - upsertApprovalRule: { - methodKind: "unary"; - input: typeof UpsertApprovalRuleRequestSchema; - output: typeof UpsertApprovalRuleResponseSchema; - }, - /** - * DeleteApprovalRule removes a user-defined auto-approval rule by ID. - * - * @generated from rpc session.v1.SessionService.DeleteApprovalRule - */ - deleteApprovalRule: { - methodKind: "unary"; - input: typeof DeleteApprovalRuleRequestSchema; - output: typeof DeleteApprovalRuleResponseSchema; - }, - /** - * GetApprovalAnalytics returns aggregated analytics for classification decisions. - * - * @generated from rpc session.v1.SessionService.GetApprovalAnalytics - */ - getApprovalAnalytics: { - methodKind: "unary"; - input: typeof GetApprovalAnalyticsRequestSchema; - output: typeof GetApprovalAnalyticsResponseSchema; - }, - /** - * GetProgramAnalytics returns drill-down analytics for a single command program. - * Shows subcommand breakdown, recent examples, and daily trend for the time window. - * - * @generated from rpc session.v1.SessionService.GetProgramAnalytics - */ - getProgramAnalytics: { - methodKind: "unary"; - input: typeof GetProgramAnalyticsRequestSchema; - output: typeof GetProgramAnalyticsResponseSchema; - }, - /** - * GenerateSuggestedRule asks an AI agent to propose a new auto-approval rule. - * Analyzes existing rules, seed examples, and analytics data to produce a - * pre-filled SuggestedRuleProto. May take 5–30 seconds; callers must set a - * 60-second deadline via AbortController. - * - * @generated from rpc session.v1.SessionService.GenerateSuggestedRule - */ - generateSuggestedRule: { - methodKind: "unary"; - input: typeof GenerateSuggestedRuleRequestSchema; - output: typeof GenerateSuggestedRuleResponseSchema; - }, - /** - * ValidateRules parses and validates a YAML rules file without applying it. - * Returns per-rule results including any parse or validation errors. - * - * @generated from rpc session.v1.SessionService.ValidateRules - */ - validateRules: { - methodKind: "unary"; - input: typeof ValidateRulesRequestSchema; - output: typeof ValidateRulesResponseSchema; - }, - /** - * ExportRules serializes user-authored rules to YAML format for download. - * Passing rule_ids limits export to those rules; empty = export all user rules. - * - * @generated from rpc session.v1.SessionService.ExportRules - */ - exportRules: { - methodKind: "unary"; - input: typeof ExportRulesRequestSchema; - output: typeof ExportRulesResponseSchema; - }, - /** - * BulkUpsertRules creates or updates multiple user-defined rules in one call. - * Rebuilds the in-memory classifier exactly once after all rules are stored. - * - * @generated from rpc session.v1.SessionService.BulkUpsertRules - */ - bulkUpsertRules: { - methodKind: "unary"; - input: typeof BulkUpsertRulesRequestSchema; - output: typeof BulkUpsertRulesResponseSchema; - }, - /** - * GetConfigFileRules returns rules persisted in the shared YAML config file. - * - * @generated from rpc session.v1.SessionService.GetConfigFileRules - */ - getConfigFileRules: { - methodKind: "unary"; - input: typeof GetConfigFileRulesRequestSchema; - output: typeof GetConfigFileRulesResponseSchema; - }, - /** - * SaveRulesToConfigFile exports one or more rules to the shared YAML config file. - * - * @generated from rpc session.v1.SessionService.SaveRulesToConfigFile - */ - saveRulesToConfigFile: { - methodKind: "unary"; - input: typeof SaveRulesToConfigFileRequestSchema; - output: typeof SaveRulesToConfigFileResponseSchema; - }, - /** - * ListDatabases returns all discovered workspace databases with metadata. - * Used by the workspace switcher UI to show available workspaces. - * - * @generated from rpc session.v1.SessionService.ListDatabases - */ - listDatabases: { - methodKind: "unary"; - input: typeof ListDatabasesRequestSchema; - output: typeof ListDatabasesResponseSchema; - }, - /** - * GetCurrentDatabase returns metadata for the currently active workspace database. - * - * @generated from rpc session.v1.SessionService.GetCurrentDatabase - */ - getCurrentDatabase: { - methodKind: "unary"; - input: typeof GetCurrentDatabaseRequestSchema; - output: typeof GetCurrentDatabaseResponseSchema; - }, - /** - * SwitchDatabase switches to a different workspace database and restarts the server. - * The server will exec-restart itself after writing a preference file. - * The client should poll until the server is back up, then reload. - * - * @generated from rpc session.v1.SessionService.SwitchDatabase - */ - switchDatabase: { - methodKind: "unary"; - input: typeof SwitchDatabaseRequestSchema; - output: typeof SwitchDatabaseResponseSchema; - }, - /** - * MergeDatabase copies all sessions from a source workspace database into the - * currently active database. Skips sessions whose titles already exist. - * No server restart required — changes are immediately visible. - * - * @generated from rpc session.v1.SessionService.MergeDatabase - */ - mergeDatabase: { - methodKind: "unary"; - input: typeof MergeDatabaseRequestSchema; - output: typeof MergeDatabaseResponseSchema; - }, - /** - * CreateCheckpoint captures the current state of a session as a named bookmark. - * Records scrollback position, git HEAD SHA, and conversation UUID. - * - * @generated from rpc session.v1.SessionService.CreateCheckpoint - */ - createCheckpoint: { - methodKind: "unary"; - input: typeof CreateCheckpointRequestSchema; - output: typeof CreateCheckpointResponseSchema; - }, - /** - * ListCheckpoints returns all checkpoints for the specified session. - * - * @generated from rpc session.v1.SessionService.ListCheckpoints - */ - listCheckpoints: { - methodKind: "unary"; - input: typeof ListCheckpointsRequestSchema; - output: typeof ListCheckpointsResponseSchema; - }, - /** - * ForkSession creates a new independent session branched from a checkpoint. - * The fork receives truncated scrollback, conversation history, and a git worktree - * based on the checkpoint's recorded state. - * - * @generated from rpc session.v1.SessionService.ForkSession - */ - forkSession: { - methodKind: "unary"; - input: typeof ForkSessionRequestSchema; - output: typeof ForkSessionResponseSchema; - }, - /** - * ClearConversationState removes the stored Claude conversation UUID from a session - * so that the next Resume starts a fresh conversation instead of attempting --resume - * with a stale or path-mismatched UUID. Useful when a session is stuck in a crash - * loop with "No conversation found" errors. - * - * @generated from rpc session.v1.SessionService.ClearConversationState - */ - clearConversationState: { - methodKind: "unary"; - input: typeof ClearConversationStateRequestSchema; - output: typeof ClearConversationStateResponseSchema; - }, - /** - * ListFiles returns the immediate children of a directory in a session's worktree. - * Directories are returned first, then files, both alphabetically sorted. - * Gitignored entries are excluded unless include_ignored is true. - * - * @generated from rpc session.v1.SessionService.ListFiles - */ - listFiles: { - methodKind: "unary"; - input: typeof ListFilesRequestSchema; - output: typeof ListFilesResponseSchema; - }, - /** - * GetFileContent retrieves the text content of a file in a session's worktree. - * Binary files return is_binary=true with empty content. - * Files over 10MB are rejected; files over 1MB are served truncated with is_truncated=true. - * - * @generated from rpc session.v1.SessionService.GetFileContent - */ - getFileContent: { - methodKind: "unary"; - input: typeof GetFileContentRequestSchema; - output: typeof GetFileContentResponseSchema; - }, - /** - * SearchFiles performs a recursive name-substring search in a session's worktree. - * Returns matching files with full relative paths for frontend tree reconstruction. - * Results are capped at max_results (default 500). Minimum query length is 2 characters. - * - * @generated from rpc session.v1.SessionService.SearchFiles - */ - searchFiles: { - methodKind: "unary"; - input: typeof SearchFilesRequestSchema; - output: typeof SearchFilesResponseSchema; - }, - /** - * ListPathCompletions returns filesystem directory entries matching a path prefix. - * Used by the Omnibar for real-time path completion and inline path validation. - * - * @generated from rpc session.v1.SessionService.ListPathCompletions - */ - listPathCompletions: { - methodKind: "unary"; - input: typeof ListPathCompletionsRequestSchema; - output: typeof ListPathCompletionsResponseSchema; - }, - /** - * GetSessionDefaults returns the full session defaults configuration (global, profiles, directory rules). - * - * @generated from rpc session.v1.SessionService.GetSessionDefaults - */ - getSessionDefaults: { - methodKind: "unary"; - input: typeof GetSessionDefaultsRequestSchema; - output: typeof GetSessionDefaultsResponseSchema; - }, - /** - * ResolveDefaults merges all default layers for a given working directory and optional profile. - * Returns the resolved values plus source metadata for per-field badges in the UI. - * - * @generated from rpc session.v1.SessionService.ResolveDefaults - */ - resolveDefaults: { - methodKind: "unary"; - input: typeof ResolveDefaultsRequestSchema; - output: typeof ResolveDefaultsResponseSchema; - }, - /** - * PreviewDestinationPath computes where a session's checkout/worktree would land, - * without performing any git or filesystem mutation. Used by the Omnibar to show a - * live destination hint before the user submits session creation. - * - * @generated from rpc session.v1.SessionService.PreviewDestinationPath - */ - previewDestinationPath: { - methodKind: "unary"; - input: typeof PreviewDestinationPathRequestSchema; - output: typeof PreviewDestinationPathResponseSchema; - }, - /** - * UpdateGlobalDefaults replaces the global default fields. - * - * @generated from rpc session.v1.SessionService.UpdateGlobalDefaults - */ - updateGlobalDefaults: { - methodKind: "unary"; - input: typeof UpdateGlobalDefaultsRequestSchema; - output: typeof UpdateGlobalDefaultsResponseSchema; - }, - /** - * UpsertProfile creates or updates a named profile. - * - * @generated from rpc session.v1.SessionService.UpsertProfile - */ - upsertProfile: { - methodKind: "unary"; - input: typeof UpsertProfileRequestSchema; - output: typeof UpsertProfileResponseSchema; - }, - /** - * DeleteProfile removes a named profile by name. - * - * @generated from rpc session.v1.SessionService.DeleteProfile - */ - deleteProfile: { - methodKind: "unary"; - input: typeof DeleteProfileRequestSchema; - output: typeof DeleteProfileResponseSchema; - }, - /** - * UpsertDirectoryRule creates or updates a directory rule (matched by path). - * - * @generated from rpc session.v1.SessionService.UpsertDirectoryRule - */ - upsertDirectoryRule: { - methodKind: "unary"; - input: typeof UpsertDirectoryRuleRequestSchema; - output: typeof UpsertDirectoryRuleResponseSchema; - }, - /** - * DeleteDirectoryRule removes a directory rule by path. - * - * @generated from rpc session.v1.SessionService.DeleteDirectoryRule - */ - deleteDirectoryRule: { - methodKind: "unary"; - input: typeof DeleteDirectoryRuleRequestSchema; - output: typeof DeleteDirectoryRuleResponseSchema; - }, - /** - * ListWorktrees returns the git worktrees for a given repository path. - * Used by the Omnibar to populate the "Use Existing Worktree" dropdown. - * - * @generated from rpc session.v1.SessionService.ListWorktrees - */ - listWorktrees: { - methodKind: "unary"; - input: typeof ListWorktreesRequestSchema; - output: typeof ListWorktreesResponseSchema; - }, - /** - * Prompt history RPCs (S1) - * - * @generated from rpc session.v1.SessionService.ListPromptHistory - */ - listPromptHistory: { - methodKind: "unary"; - input: typeof ListPromptHistoryRequestSchema; - output: typeof ListPromptHistoryResponseSchema; - }, - /** - * @generated from rpc session.v1.SessionService.DeletePromptHistory - */ - deletePromptHistory: { - methodKind: "unary"; - input: typeof DeletePromptHistoryRequestSchema; - output: typeof DeletePromptHistoryResponseSchema; - }, - /** - * Batch session creation (S2) - * - * @generated from rpc session.v1.SessionService.BatchCreateSessions - */ - batchCreateSessions: { - methodKind: "unary"; - input: typeof BatchCreateSessionsRequestSchema; - output: typeof BatchCreateSessionsResponseSchema; - }, - /** - * One-shot PR creation (S3) - * - * @generated from rpc session.v1.SessionService.RunOneShot - */ - runOneShot: { - methodKind: "unary"; - input: typeof RunOneShotRequestSchema; - output: typeof RunOneShotResponseSchema; - }, - /** - * Project CRUD (S4) - * - * @generated from rpc session.v1.SessionService.CreateProject - */ - createProject: { - methodKind: "unary"; - input: typeof CreateProjectRequestSchema; - output: typeof CreateProjectResponseSchema; - }, - /** - * @generated from rpc session.v1.SessionService.ListProjects - */ - listProjects: { - methodKind: "unary"; - input: typeof ListProjectsRequestSchema; - output: typeof ListProjectsResponseSchema; - }, - /** - * @generated from rpc session.v1.SessionService.UpdateProject - */ - updateProject: { - methodKind: "unary"; - input: typeof UpdateProjectRequestSchema; - output: typeof UpdateProjectResponseSchema; - }, - /** - * @generated from rpc session.v1.SessionService.DeleteProject - */ - deleteProject: { - methodKind: "unary"; - input: typeof DeleteProjectRequestSchema; - output: typeof DeleteProjectResponseSchema; - }, - /** - * @generated from rpc session.v1.SessionService.AssignSessionsToProject - */ - assignSessionsToProject: { - methodKind: "unary"; - input: typeof AssignSessionsToProjectRequestSchema; - output: typeof AssignSessionsToProjectResponseSchema; - }, - /** - * ListBranches returns the git branches for a given repository path. - * Used by the SessionWizard branch autocomplete field. - * - * @generated from rpc session.v1.SessionService.ListBranches - */ - listBranches: { - methodKind: "unary"; - input: typeof ListBranchesRequestSchema; - output: typeof ListBranchesResponseSchema; - }, - /** - * GetTerminalSnapshot returns the last N lines of terminal output for a session - * without requiring an active stream. Suitable for session card previews. - * - * @generated from rpc session.v1.SessionService.GetTerminalSnapshot - */ - getTerminalSnapshot: { - methodKind: "unary"; - input: typeof GetTerminalSnapshotRequestSchema; - output: typeof GetTerminalSnapshotResponseSchema; - }, - /** - * WriteToSession sends raw text input to a running session's PTY. - * Use for unblocking approval prompts or injecting ad-hoc input. - * Returns immediately after queueing the write; does not wait for output. - * - * @generated from rpc session.v1.SessionService.WriteToSession - */ - writeToSession: { - methodKind: "unary"; - input: typeof WriteToSessionRequestSchema; - output: typeof WriteToSessionResponseSchema; - }, - /** - * LogClientEvents receives batched browser console log entries from the web UI. - * Used for remote debugging of mobile browser sessions where DevTools are unavailable. - * Always returns an empty response; malformed entries are silently discarded. - * - * @generated from rpc session.v1.SessionService.LogClientEvents - */ - logClientEvents: { - methodKind: "unary"; - input: typeof LogClientEventsRequestSchema; - output: typeof LogClientEventsResponseSchema; - }, - /** - * ListErrors returns persisted RPC error events ordered by last_seen descending. - * Unacknowledged errors are returned by default; set include_acknowledged=true - * to include all events. - * - * @generated from rpc session.v1.SessionService.ListErrors - */ - listErrors: { - methodKind: "unary"; - input: typeof ListErrorsRequestSchema; - output: typeof ListErrorsResponseSchema; - }, - /** - * AcknowledgeError marks an error event as acknowledged so it no longer appears - * in the default (unacknowledged) listing. - * - * @generated from rpc session.v1.SessionService.AcknowledgeError - */ - acknowledgeError: { - methodKind: "unary"; - input: typeof AcknowledgeErrorRequestSchema; - output: typeof AcknowledgeErrorResponseSchema; - }, - /** - * GetFeatureFlags returns all known feature flags and their current state. - * - * @generated from rpc session.v1.SessionService.GetFeatureFlags - */ - getFeatureFlags: { - methodKind: "unary"; - input: typeof GetFeatureFlagsRequestSchema; - output: typeof GetFeatureFlagsResponseSchema; - }, - /** - * UpdateFeatureFlag enables or disables a named feature flag. - * - * @generated from rpc session.v1.SessionService.UpdateFeatureFlag - */ - updateFeatureFlag: { - methodKind: "unary"; - input: typeof UpdateFeatureFlagRequestSchema; - output: typeof UpdateFeatureFlagResponseSchema; - }, - /** - * QueryEscapeAnalytics returns paginated escape event records for a session. - * - * @generated from rpc session.v1.SessionService.QueryEscapeAnalytics - */ - queryEscapeAnalytics: { - methodKind: "unary"; - input: typeof QueryEscapeAnalyticsRequestSchema; - output: typeof QueryEscapeAnalyticsResponseSchema; - }, - /** - * GetEscapeAnalyticsSummary returns aggregate escape sequence statistics for a session. - * - * @generated from rpc session.v1.SessionService.GetEscapeAnalyticsSummary - */ - getEscapeAnalyticsSummary: { - methodKind: "unary"; - input: typeof GetEscapeAnalyticsSummaryRequestSchema; - output: typeof GetEscapeAnalyticsSummaryResponseSchema; - }, - /** - * GetEscapeAnalyticsGlobalSummary returns aggregate escape sequence statistics - * across all sessions, plus a per-session breakdown to spot outliers. - * - * @generated from rpc session.v1.SessionService.GetEscapeAnalyticsGlobalSummary - */ - getEscapeAnalyticsGlobalSummary: { - methodKind: "unary"; - input: typeof GetEscapeAnalyticsGlobalSummaryRequestSchema; - output: typeof GetEscapeAnalyticsGlobalSummaryResponseSchema; - }, - /** - * HibernateSession checkpoints the session state, kills the AI process, and - * transitions the session to Hibernated status. - * - * @generated from rpc session.v1.SessionService.HibernateSession - */ - hibernateSession: { - methodKind: "unary"; - input: typeof HibernateSessionRequestSchema; - output: typeof HibernateSessionResponseSchema; - }, - /** - * ResumeHibernatedSession re-launches the AI process for a Hibernated session, - * transitioning it back to Active status. - * - * @generated from rpc session.v1.SessionService.ResumeHibernatedSession - */ - resumeHibernatedSession: { - methodKind: "unary"; - input: typeof ResumeHibernatedSessionRequestSchema; - output: typeof ResumeHibernatedSessionResponseSchema; - }, - /** - * ResumeCrashedSession re-launches the AI process for a Crashed session - * (dead tmux pane detected by SessionHealthChecker), transitioning it back - * to Active status. Threads --resume automatically when a conversation UUID - * is known. - * - * @generated from rpc session.v1.SessionService.ResumeCrashedSession - */ - resumeCrashedSession: { - methodKind: "unary"; - input: typeof ResumeCrashedSessionRequestSchema; - output: typeof ResumeCrashedSessionResponseSchema; - }, - /** - * SpawnShell creates and starts a new custom shell attached to a session. - * The shell runs as an independent sibling tmux session. - * - * @generated from rpc session.v1.SessionService.SpawnShell - */ - spawnShell: { - methodKind: "unary"; - input: typeof SpawnShellRequestSchema; - output: typeof SpawnShellResponseSchema; - }, - /** - * StopShell stops a running custom shell. - * - * @generated from rpc session.v1.SessionService.StopShell - */ - stopShell: { - methodKind: "unary"; - input: typeof StopShellRequestSchema; - output: typeof StopShellResponseSchema; - }, - /** - * RestartShell stops a shell (if running) and relaunches it with the same command. - * - * @generated from rpc session.v1.SessionService.RestartShell - */ - restartShell: { - methodKind: "unary"; - input: typeof RestartShellRequestSchema; - output: typeof RestartShellResponseSchema; - }, - /** - * ListShells returns all custom shells for a session, sorted by order_index. - * - * @generated from rpc session.v1.SessionService.ListShells - */ - listShells: { - methodKind: "unary"; - input: typeof ListShellsRequestSchema; - output: typeof ListShellsResponseSchema; - }, - /** - * DeleteShell stops a shell and removes it from storage. - * - * @generated from rpc session.v1.SessionService.DeleteShell - */ - deleteShell: { - methodKind: "unary"; - input: typeof DeleteShellRequestSchema; - output: typeof DeleteShellResponseSchema; - }, - /** - * CreateWorkflow creates a new workflow definition. - * - * @generated from rpc session.v1.SessionService.CreateWorkflow - */ - createWorkflow: { - methodKind: "unary"; - input: typeof CreateWorkflowRequestSchema; - output: typeof CreateWorkflowResponseSchema; - }, - /** - * UpdateWorkflow modifies an existing workflow definition. - * - * @generated from rpc session.v1.SessionService.UpdateWorkflow - */ - updateWorkflow: { - methodKind: "unary"; - input: typeof UpdateWorkflowRequestSchema; - output: typeof UpdateWorkflowResponseSchema; - }, - /** - * DeleteWorkflow removes a workflow definition permanently. - * - * @generated from rpc session.v1.SessionService.DeleteWorkflow - */ - deleteWorkflow: { - methodKind: "unary"; - input: typeof DeleteWorkflowRequestSchema; - output: typeof DeleteWorkflowResponseSchema; - }, - /** - * ListWorkflows returns all saved workflow definitions. - * - * @generated from rpc session.v1.SessionService.ListWorkflows - */ - listWorkflows: { - methodKind: "unary"; - input: typeof ListWorkflowsRequestSchema; - output: typeof ListWorkflowsResponseSchema; - }, - /** - * RunWorkflow immediately fires a workflow (outside of cron schedule). - * - * @generated from rpc session.v1.SessionService.RunWorkflow - */ - runWorkflow: { - methodKind: "unary"; - input: typeof RunWorkflowRequestSchema; - output: typeof RunWorkflowResponseSchema; - }, - /** - * GetDetectionEvents returns recent status-detection events for a session. - * Intended for debugging — surfaces which patterns matched (or didn't) per detection cycle. - * - * @generated from rpc session.v1.SessionService.GetDetectionEvents - */ - getDetectionEvents: { - methodKind: "unary"; - input: typeof GetDetectionEventsRequestSchema; - output: typeof GetDetectionEventsResponseSchema; - }, - /** - * ListSlashCommands returns slash commands available in the given directory. - * Walks target_directory/.claude/commands/ (project) and ~/.claude/commands/ (user), - * merging both with a small set of built-in Claude Code commands. - * - * @generated from rpc session.v1.SessionService.ListSlashCommands - */ - listSlashCommands: { - methodKind: "unary"; - input: typeof ListSlashCommandsRequestSchema; - output: typeof ListSlashCommandsResponseSchema; - }, - /** - * ListAliases returns all configured alias presets from config.json. - * - * @generated from rpc session.v1.SessionService.ListAliases - */ - listAliases: { - methodKind: "unary"; - input: typeof ListAliasesRequestSchema; - output: typeof ListAliasesResponseSchema; - }, - /** - * UpsertAlias creates or updates a named alias preset (matched by name). - * - * @generated from rpc session.v1.SessionService.UpsertAlias - */ - upsertAlias: { - methodKind: "unary"; - input: typeof UpsertAliasRequestSchema; - output: typeof UpsertAliasResponseSchema; - }, - /** - * DeleteAlias removes an alias preset by name. - * - * @generated from rpc session.v1.SessionService.DeleteAlias - */ - deleteAlias: { - methodKind: "unary"; - input: typeof DeleteAliasRequestSchema; - output: typeof DeleteAliasResponseSchema; - }, - /** - * ArchiveSession soft-archives a session by setting archived_at. - * Archived sessions are excluded from the default session list. - * - * @generated from rpc session.v1.SessionService.ArchiveSession - */ - archiveSession: { - methodKind: "unary"; - input: typeof ArchiveSessionRequestSchema; - output: typeof ArchiveSessionResponseSchema; - }, - /** - * UnarchiveSession clears archived_at, restoring the session to the default list. - * - * @generated from rpc session.v1.SessionService.UnarchiveSession - */ - unarchiveSession: { - methodKind: "unary"; - input: typeof UnarchiveSessionRequestSchema; - output: typeof UnarchiveSessionResponseSchema; - }, - /** - * ArchiveWorkflowSessions archives all non-active sessions for a given workflow. - * Active, Creating, and Paused sessions are silently skipped. - * Returns the count of sessions that were archived. - * - * @generated from rpc session.v1.SessionService.ArchiveWorkflowSessions - */ - archiveWorkflowSessions: { - methodKind: "unary"; - input: typeof ArchiveWorkflowSessionsRequestSchema; - output: typeof ArchiveWorkflowSessionsResponseSchema; - }, - /** - * DeleteWorkflowFailedSessions archives (soft-deletes) sessions that appear to have - * failed — specifically: Stopped sessions with no meaningful terminal output. - * Returns the count of sessions that were archived. - * - * @generated from rpc session.v1.SessionService.DeleteWorkflowFailedSessions - */ - deleteWorkflowFailedSessions: { - methodKind: "unary"; - input: typeof DeleteWorkflowFailedSessionsRequestSchema; - output: typeof DeleteWorkflowFailedSessionsResponseSchema; - }, - /** - * GetProviderLimits returns the rate limit and usage details for a session. - * - * @generated from rpc session.v1.SessionService.GetProviderLimits - */ - getProviderLimits: { - methodKind: "unary"; - input: typeof GetProviderLimitsRequestSchema; - output: typeof GetProviderLimitsResponseSchema; - }, - /** - * GetHookStatus reports whether the global Claude Code hooks (rule enforcement - * and notifications) are installed in ~/.claude/settings.json. - * +api: hooks:status - * - * @generated from rpc session.v1.SessionService.GetHookStatus - */ - getHookStatus: { - methodKind: "unary"; - input: typeof GetHookStatusRequestSchema; - output: typeof GetHookStatusResponseSchema; - }, - /** - * InstallHooks installs the requested global Claude Code hooks into - * ~/.claude/settings.json. Idempotent per hook. - * +api: hooks:install - * - * @generated from rpc session.v1.SessionService.InstallHooks - */ - installHooks: { - methodKind: "unary"; - input: typeof InstallHooksRequestSchema; - output: typeof InstallHooksResponseSchema; - }, -}> = /*@__PURE__*/ - serviceDesc(file_session_v1_session, 0); - diff --git a/web-app/src/gen/session/v1/session_summary_pb.ts b/web-app/src/gen/session/v1/session_summary_pb.ts deleted file mode 100644 index 8117f4b4e..000000000 --- a/web-app/src/gen/session/v1/session_summary_pb.ts +++ /dev/null @@ -1,327 +0,0 @@ -// @generated by protoc-gen-es v2.11.0 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/session_summary.proto (package session.v1, syntax proto3) -/* eslint-disable */ - -import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; -import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; -import type { Timestamp } from "@bufbuild/protobuf/wkt"; -import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; -import type { SessionSummaryStatus } from "./types_pb"; -import { file_session_v1_types } from "./types_pb"; -import type { Message } from "@bufbuild/protobuf"; - -/** - * Describes the file session/v1/session_summary.proto. - */ -export const file_session_v1_session_summary: GenFile = /*@__PURE__*/ - fileDesc("CiBzZXNzaW9uL3YxL3Nlc3Npb25fc3VtbWFyeS5wcm90bxIKc2Vzc2lvbi52MSKPBwoTU2Vzc2lvblN1bW1hcnlQcm90bxISCgpzZXNzaW9uX2lkGAEgASgJEhUKDXNlc3Npb25fdGl0bGUYAiABKAkSMAoGc3RhdHVzGAMgASgOMiAuc2Vzc2lvbi52MS5TZXNzaW9uU3VtbWFyeVN0YXR1cxIRCgluYXJyYXRpdmUYBCABKAkSHwoXbmFycmF0aXZlX2ZhbGxiYWNrX3VzZWQYBSABKAgSMgoEZGlmZhgGIAEoCzIkLnNlc3Npb24udjEuU2Vzc2lvblN1bW1hcnlQcm90by5EaWZmEjwKCWRlY2lzaW9ucxgHIAEoCzIpLnNlc3Npb24udjEuU2Vzc2lvblN1bW1hcnlQcm90by5EZWNpc2lvbnMSOgoIdGltZWxpbmUYCCABKAsyKC5zZXNzaW9uLnYxLlNlc3Npb25TdW1tYXJ5UHJvdG8uVGltZWxpbmUSMgoEY29zdBgJIAEoCzIkLnNlc3Npb24udjEuU2Vzc2lvblN1bW1hcnlQcm90by5Db3N0EhAKCG1hcmtkb3duGAogASgJEhUKDWVycm9yX21lc3NhZ2UYCyABKAkSEwoLZXJyb3Jfc3RhZ2UYDCABKAkSMAoMZ2VuZXJhdGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBo9CgREaWZmEhUKDWZpbGVzX2NoYW5nZWQYASABKAUSDQoFYWRkZWQYAiABKAUSDwoHcmVtb3ZlZBgDIAEoBRqAAQoJRGVjaXNpb25zEhUKDWF1dG9fYXBwcm92ZWQYASABKAUSGQoRbWFudWFsbHlfYXBwcm92ZWQYAiABKAUSDgoGZGVuaWVkGAMgASgFEh0KFXJldmlld19xdWV1ZV9yZXNvbHZlZBgEIAEoBRISCgpzdGlsbF9vcGVuGAUgASgFGn8KCFRpbWVsaW5lEi4KCnN0YXJ0ZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnN0b3BwZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2R1cmF0aW9uX21zGAMgASgDGlIKBENvc3QSFAoMdG90YWxfdG9rZW5zGAEgASgDEhoKEmVzdGltYXRlZF9jb3N0X3VzZBgCIAEoARIYChBkYXRhX3VuYXZhaWxhYmxlGAMgASgIIi4KGEdldFNlc3Npb25TdW1tYXJ5UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIl4KGUdldFNlc3Npb25TdW1tYXJ5UmVzcG9uc2USNQoHc3VtbWFyeRgBIAEoCzIfLnNlc3Npb24udjEuU2Vzc2lvblN1bW1hcnlQcm90b0gAiAEBQgoKCF9zdW1tYXJ5IjUKH1JlZ2VuZXJhdGVTZXNzaW9uU3VtbWFyeVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJUCiBSZWdlbmVyYXRlU2Vzc2lvblN1bW1hcnlSZXNwb25zZRIwCgdzdW1tYXJ5GAEgASgLMh8uc2Vzc2lvbi52MS5TZXNzaW9uU3VtbWFyeVByb3RvMvQBChVTZXNzaW9uU3VtbWFyeVNlcnZpY2USYgoRR2V0U2Vzc2lvblN1bW1hcnkSJC5zZXNzaW9uLnYxLkdldFNlc3Npb25TdW1tYXJ5UmVxdWVzdBolLnNlc3Npb24udjEuR2V0U2Vzc2lvblN1bW1hcnlSZXNwb25zZSIAEncKGFJlZ2VuZXJhdGVTZXNzaW9uU3VtbWFyeRIrLnNlc3Npb24udjEuUmVnZW5lcmF0ZVNlc3Npb25TdW1tYXJ5UmVxdWVzdBosLnNlc3Npb24udjEuUmVnZW5lcmF0ZVNlc3Npb25TdW1tYXJ5UmVzcG9uc2UiAEKzAQoOY29tLnNlc3Npb24udjFCE1Nlc3Npb25TdW1tYXJ5UHJvdG9QAVpDZ2l0aHViLmNvbS90c3RhcGxlci9zdGFwbGVyLXNxdWFkL2dlbi9wcm90by9nby9zZXNzaW9uL3YxO3Nlc3Npb252MaICA1NYWKoCClNlc3Npb24uVjHKAgpTZXNzaW9uXFYx4gIWU2Vzc2lvblxWMVxHUEJNZXRhZGF0YeoCC1Nlc3Npb246OlYxYgZwcm90bzM", [file_google_protobuf_timestamp, file_session_v1_types]); - -/** - * SessionSummaryProto is the completion summary for a single session. - * - * @generated from message session.v1.SessionSummaryProto - */ -export type SessionSummaryProto = Message<"session.v1.SessionSummaryProto"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * @generated from field: string session_title = 2; - */ - sessionTitle: string; - - /** - * @generated from field: session.v1.SessionSummaryStatus status = 3; - */ - status: SessionSummaryStatus; - - /** - * @generated from field: string narrative = 4; - */ - narrative: string; - - /** - * @generated from field: bool narrative_fallback_used = 5; - */ - narrativeFallbackUsed: boolean; - - /** - * @generated from field: session.v1.SessionSummaryProto.Diff diff = 6; - */ - diff?: SessionSummaryProto_Diff; - - /** - * @generated from field: session.v1.SessionSummaryProto.Decisions decisions = 7; - */ - decisions?: SessionSummaryProto_Decisions; - - /** - * @generated from field: session.v1.SessionSummaryProto.Timeline timeline = 8; - */ - timeline?: SessionSummaryProto_Timeline; - - /** - * @generated from field: session.v1.SessionSummaryProto.Cost cost = 9; - */ - cost?: SessionSummaryProto_Cost; - - /** - * @generated from field: string markdown = 10; - */ - markdown: string; - - /** - * @generated from field: string error_message = 11; - */ - errorMessage: string; - - /** - * @generated from field: string error_stage = 12; - */ - errorStage: string; - - /** - * @generated from field: google.protobuf.Timestamp generated_at = 13; - */ - generatedAt?: Timestamp; -}; - -/** - * Describes the message session.v1.SessionSummaryProto. - * Use `create(SessionSummaryProtoSchema)` to create a new message. - */ -export const SessionSummaryProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session_summary, 0); - -/** - * Diff aggregates file change stats for the session. - * - * @generated from message session.v1.SessionSummaryProto.Diff - */ -export type SessionSummaryProto_Diff = Message<"session.v1.SessionSummaryProto.Diff"> & { - /** - * @generated from field: int32 files_changed = 1; - */ - filesChanged: number; - - /** - * @generated from field: int32 added = 2; - */ - added: number; - - /** - * @generated from field: int32 removed = 3; - */ - removed: number; -}; - -/** - * Describes the message session.v1.SessionSummaryProto.Diff. - * Use `create(SessionSummaryProto_DiffSchema)` to create a new message. - */ -export const SessionSummaryProto_DiffSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session_summary, 0, 0); - -/** - * Decisions aggregates review/approval outcomes for the session. - * - * @generated from message session.v1.SessionSummaryProto.Decisions - */ -export type SessionSummaryProto_Decisions = Message<"session.v1.SessionSummaryProto.Decisions"> & { - /** - * @generated from field: int32 auto_approved = 1; - */ - autoApproved: number; - - /** - * @generated from field: int32 manually_approved = 2; - */ - manuallyApproved: number; - - /** - * @generated from field: int32 denied = 3; - */ - denied: number; - - /** - * @generated from field: int32 review_queue_resolved = 4; - */ - reviewQueueResolved: number; - - /** - * @generated from field: int32 still_open = 5; - */ - stillOpen: number; -}; - -/** - * Describes the message session.v1.SessionSummaryProto.Decisions. - * Use `create(SessionSummaryProto_DecisionsSchema)` to create a new message. - */ -export const SessionSummaryProto_DecisionsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session_summary, 0, 1); - -/** - * Timeline records when the session ran and for how long. - * - * @generated from message session.v1.SessionSummaryProto.Timeline - */ -export type SessionSummaryProto_Timeline = Message<"session.v1.SessionSummaryProto.Timeline"> & { - /** - * @generated from field: google.protobuf.Timestamp started_at = 1; - */ - startedAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp stopped_at = 2; - */ - stoppedAt?: Timestamp; - - /** - * @generated from field: int64 duration_ms = 3; - */ - durationMs: bigint; -}; - -/** - * Describes the message session.v1.SessionSummaryProto.Timeline. - * Use `create(SessionSummaryProto_TimelineSchema)` to create a new message. - */ -export const SessionSummaryProto_TimelineSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session_summary, 0, 2); - -/** - * Cost aggregates token usage and estimated spend for the session. - * - * @generated from message session.v1.SessionSummaryProto.Cost - */ -export type SessionSummaryProto_Cost = Message<"session.v1.SessionSummaryProto.Cost"> & { - /** - * @generated from field: int64 total_tokens = 1; - */ - totalTokens: bigint; - - /** - * @generated from field: double estimated_cost_usd = 2; - */ - estimatedCostUsd: number; - - /** - * @generated from field: bool data_unavailable = 3; - */ - dataUnavailable: boolean; -}; - -/** - * Describes the message session.v1.SessionSummaryProto.Cost. - * Use `create(SessionSummaryProto_CostSchema)` to create a new message. - */ -export const SessionSummaryProto_CostSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session_summary, 0, 3); - -/** - * @generated from message session.v1.GetSessionSummaryRequest - */ -export type GetSessionSummaryRequest = Message<"session.v1.GetSessionSummaryRequest"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; -}; - -/** - * Describes the message session.v1.GetSessionSummaryRequest. - * Use `create(GetSessionSummaryRequestSchema)` to create a new message. - */ -export const GetSessionSummaryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session_summary, 1); - -/** - * @generated from message session.v1.GetSessionSummaryResponse - */ -export type GetSessionSummaryResponse = Message<"session.v1.GetSessionSummaryResponse"> & { - /** - * summary is unset/null when no row exists yet (e.g. session still running). - * - * @generated from field: optional session.v1.SessionSummaryProto summary = 1; - */ - summary?: SessionSummaryProto; -}; - -/** - * Describes the message session.v1.GetSessionSummaryResponse. - * Use `create(GetSessionSummaryResponseSchema)` to create a new message. - */ -export const GetSessionSummaryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session_summary, 2); - -/** - * @generated from message session.v1.RegenerateSessionSummaryRequest - */ -export type RegenerateSessionSummaryRequest = Message<"session.v1.RegenerateSessionSummaryRequest"> & { - /** - * @generated from field: string session_id = 1; - */ - sessionId: string; -}; - -/** - * Describes the message session.v1.RegenerateSessionSummaryRequest. - * Use `create(RegenerateSessionSummaryRequestSchema)` to create a new message. - */ -export const RegenerateSessionSummaryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session_summary, 3); - -/** - * @generated from message session.v1.RegenerateSessionSummaryResponse - */ -export type RegenerateSessionSummaryResponse = Message<"session.v1.RegenerateSessionSummaryResponse"> & { - /** - * @generated from field: session.v1.SessionSummaryProto summary = 1; - */ - summary?: SessionSummaryProto; -}; - -/** - * Describes the message session.v1.RegenerateSessionSummaryResponse. - * Use `create(RegenerateSessionSummaryResponseSchema)` to create a new message. - */ -export const RegenerateSessionSummaryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_session_summary, 4); - -/** - * SessionSummaryService provides read and regenerate access to session - * completion summaries, sourced from the SessionSummary table rather than - * SessionService's live-instance machinery. - * - * @generated from service session.v1.SessionSummaryService - */ -export const SessionSummaryService: GenService<{ - /** - * GetSessionSummary returns the current summary for a session, if one - * exists. The response's summary field is unset when no row exists yet - * (e.g. the session is still running). - * - * @generated from rpc session.v1.SessionSummaryService.GetSessionSummary - */ - getSessionSummary: { - methodKind: "unary"; - input: typeof GetSessionSummaryRequestSchema; - output: typeof GetSessionSummaryResponseSchema; - }, - /** - * RegenerateSessionSummary triggers regeneration of a session's summary - * and returns the resulting summary. - * - * @generated from rpc session.v1.SessionSummaryService.RegenerateSessionSummary - */ - regenerateSessionSummary: { - methodKind: "unary"; - input: typeof RegenerateSessionSummaryRequestSchema; - output: typeof RegenerateSessionSummaryResponseSchema; - }, -}> = /*@__PURE__*/ - serviceDesc(file_session_v1_session_summary, 0); - diff --git a/web-app/src/gen/session/v1/types_connect.ts b/web-app/src/gen/session/v1/types_connect.ts deleted file mode 100644 index de93f5c5b..000000000 --- a/web-app/src/gen/session/v1/types_connect.ts +++ /dev/null @@ -1,4 +0,0 @@ -// @generated by protoc-gen-connect-es v1.6.1 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/types.proto (package session.v1, syntax proto3) -/* eslint-disable */ - diff --git a/web-app/src/gen/session/v1/types_pb.ts b/web-app/src/gen/session/v1/types_pb.ts deleted file mode 100644 index d77919909..000000000 --- a/web-app/src/gen/session/v1/types_pb.ts +++ /dev/null @@ -1,4555 +0,0 @@ -// @generated by protoc-gen-es v2.11.0 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/types.proto (package session.v1, syntax proto3) -/* eslint-disable */ - -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; -import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; -import type { Timestamp } from "@bufbuild/protobuf/wkt"; -import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; -import type { Message } from "@bufbuild/protobuf"; - -/** - * Describes the file session/v1/types.proto. - */ -export const file_session_v1_types: GenFile = /*@__PURE__*/ - fileDesc("ChZzZXNzaW9uL3YxL3R5cGVzLnByb3RvEgpzZXNzaW9uLnYxIrQRCgdTZXNzaW9uEgoKAmlkGAEgASgJEg0KBXRpdGxlGAIgASgJEgwKBHBhdGgYAyABKAkSEwoLd29ya2luZ19kaXIYBCABKAkSDgoGYnJhbmNoGAUgASgJEikKBnN0YXR1cxgGIAEoDjIZLnNlc3Npb24udjEuU2Vzc2lvblN0YXR1cxIPCgdwcm9ncmFtGAcgASgJEg4KBmhlaWdodBgIIAEoBRINCgV3aWR0aBgJIAEoBRIuCgpjcmVhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4ChRsYXN0X3Rlcm1pbmFsX3VwZGF0ZRgWIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOgoWbGFzdF9tZWFuaW5nZnVsX291dHB1dBgXIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEAoIYXV0b195ZXMYDCABKAgSDgoGcHJvbXB0GA0gASgJEhkKEWV4aXN0aW5nX3dvcmt0cmVlGA4gASgJEhAKCGNhdGVnb3J5GA8gASgJEhMKC2lzX2V4cGFuZGVkGBAgASgIEi0KDHNlc3Npb25fdHlwZRgRIAEoDjIXLnNlc3Npb24udjEuU2Vzc2lvblR5cGUSEwoLdG11eF9wcmVmaXgYEiABKAkSKQoKZGlmZl9zdGF0cxgTIAEoCzIVLnNlc3Npb24udjEuRGlmZlN0YXRzEi0KDGdpdF93b3JrdHJlZRgUIAEoCzIXLnNlc3Npb24udjEuR2l0V29ya3RyZWUSMQoOY2xhdWRlX3Nlc3Npb24YFSABKAsyGS5zZXNzaW9uLnYxLkNsYXVkZVNlc3Npb24SDAoEdGFncxgYIAMoCRIYChBnaXRodWJfcHJfbnVtYmVyGBkgASgFEhUKDWdpdGh1Yl9wcl91cmwYGiABKAkSFAoMZ2l0aHViX293bmVyGBsgASgJEhMKC2dpdGh1Yl9yZXBvGBwgASgJEhkKEWdpdGh1Yl9zb3VyY2VfcmVmGB0gASgJEhgKEGNsb25lZF9yZXBvX3BhdGgYHiABKAkSLwoNaW5zdGFuY2VfdHlwZRgfIAEoDjIYLnNlc3Npb24udjEuSW5zdGFuY2VUeXBlEj8KEWV4dGVybmFsX21ldGFkYXRhGCAgASgLMiQuc2Vzc2lvbi52MS5FeHRlcm5hbEluc3RhbmNlTWV0YWRhdGESFwoPZ2l0aHViX3ByX3N0YXRlGCEgASgJEhoKEmdpdGh1Yl9wcl9pc19kcmFmdBgiIAEoCBIaChJnaXRodWJfcHJfcHJpb3JpdHkYIyABKAkSHQoVZ2l0aHViX2FwcHJvdmVkX2NvdW50GCQgASgFEiAKGGdpdGh1Yl9jaGFuZ2VzX3JlcV9jb3VudBglIAEoBRIfChdnaXRodWJfY2hlY2tfY29uY2x1c2lvbhgmIAEoCRI4ChRsYXN0X3ByX3N0YXR1c19jaGVjaxgnIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoQcmF0ZV9saW1pdF9zdGF0ZRgoIAEoDjIaLnNlc3Npb24udjEuUmF0ZUxpbWl0U3RhdGUSOQoVcmF0ZV9saW1pdF9yZXNldF90aW1lGC4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJyYXRlX2xpbWl0X2VuYWJsZWQYLyABKAgSGQoRaGlzdG9yeV9maWxlX3BhdGgYKSABKAkSIAoYY2xhdWRlX2NvbnZlcnNhdGlvbl91dWlkGCogASgJEhIKCnByb2plY3RfaWQYKyABKAkSFgoOaW5pdGlhbF9wcm9tcHQYLCABKAkSFgoObGF1bmNoX2NvbW1hbmQYLSABKAkSLwoNd29ya2luZ19zdGF0ZRgyIAEoDjIYLnNlc3Npb24udjEuV29ya2luZ1N0YXRlEicKCXZuY19zdGF0ZRgzIAEoCzIULnNlc3Npb24udjEuVk5DU3RhdGUSJwoJY2RwX3N0YXRlGDQgASgLMhQuc2Vzc2lvbi52MS5DRFBTdGF0ZRIZChFjcmVhdGlvbl9wcm9ncmVzcxg1IAEoCRIpCgpzdWJfc3RhdHVzGDYgASgOMhUuc2Vzc2lvbi52MS5TdWJTdGF0dXMSFQoNbWVtb3J5X3Jzc19tYhg3IAEoAxIcChRlc3RpbWF0ZWRfc2F2aW5nc19tYhg4IAEoAxIOCgZoaWRkZW4YOSABKAgSFAoMcGF1c2VfcmVhc29uGDogASgJEiwKBGdvYWwYOyABKAsyHi5zZXNzaW9uLnYxLlNlc3Npb25Hb2FsU3VtbWFyeRIXCg9hdXRvbm9tb3VzX21vZGUYPCABKAgSEwoLd29ya2Zsb3dfaWQYPiABKAkSLwoLYXJjaGl2ZWRfYXQYPyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDXdvcmtmbG93X25hbWUYQCABKAkSFwoPYXV0b25vbW91c190dXJuGEEgASgFEhwKFGF1dG9ub21vdXNfbWF4X3R1cm5zGEIgASgFEhoKEmF1dG9ub21vdXNfb3V0Y29tZRhDIAEoCRIzCg9kZXRlY3RlZF9zdGF0dXMYRCABKA4yGi5zZXNzaW9uLnYxLkRldGVjdGVkU3RhdHVzEhgKEGRldGVjdGVkX2NvbnRleHQYRSABKAkSLwoJYXJ0aWZhY3RzGEYgASgLMhwuc2Vzc2lvbi52MS5TZXNzaW9uQXJ0aWZhY3RzEhUKDXdvcmtzcGFjZV9rZXkYRyABKAkSEwoLZXhpdF9yZWFzb24YSCABKAkSDAoEbm90ZRhJIAEoCRIUCgxhdXRvX2FwcHJvdmUYSiABKAgihAEKEFNlc3Npb25BcnRpZmFjdHMSDwoHcHJfdXJscxgBIAMoCRITCgtjb21taXRfc2hhcxgCIAMoCRIVCg1leHRlcm5hbF91cmxzGAMgAygJEjMKD2xhc3Rfc2Nhbm5lZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAipAEKElNlc3Npb25Hb2FsU3VtbWFyeRIRCglnb2FsX3RleHQYASABKAkSDgoGc3RhdHVzGAIgASgJEhMKC3Rhc2tzX3RvdGFsGAMgASgFEhIKCnRhc2tzX2RvbmUYBCABKAUSEgoKdGFza3NfanNvbhgFIAEoCRIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKAAQoIVk5DU3RhdGUSJQoGc3RhdHVzGAEgASgOMhUuc2Vzc2lvbi52MS5WTkNTdGF0dXMSFgoOZGlzcGxheV9udW1iZXIYAiABKAUSFAoMdm5jX3Bhc3N3b3JkGAMgASgJEh8KF2Jyb3dzZXJfd2luZG93X2RldGVjdGVkGAQgASgIIjEKCENEUFN0YXRlEiUKBnN0YXR1cxgBIAEoDjIVLnNlc3Npb24udjEuQ0RQU3RhdHVzIokCChhFeHRlcm5hbEluc3RhbmNlTWV0YWRhdGESEwoLdG11eF9zb2NrZXQYASABKAkSGQoRdG11eF9zZXNzaW9uX25hbWUYAiABKAkSMQoNZGlzY292ZXJlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJbGFzdF9zZWVuGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxvcmlnaW5hbF9waWQYBSABKAUSFwoPbXV4X3NvY2tldF9wYXRoGAYgASgJEhMKC211eF9lbmFibGVkGAcgASgIEhcKD3NvdXJjZV90ZXJtaW5hbBgIIAEoCSI8CglEaWZmU3RhdHMSDQoFYWRkZWQYASABKAUSDwoHcmVtb3ZlZBgCIAEoBRIPCgdjb250ZW50GAMgASgJInsKC0dpdFdvcmt0cmVlEhEKCXJlcG9fcGF0aBgBIAEoCRIVCg13b3JrdHJlZV9wYXRoGAIgASgJEhQKDHNlc3Npb25fbmFtZRgDIAEoCRITCgticmFuY2hfbmFtZRgEIAEoCRIXCg9iYXNlX2NvbW1pdF9zaGEYBSABKAkinwIKDUNsYXVkZVNlc3Npb24SEgoKc2Vzc2lvbl9pZBgBIAEoCRIXCg9jb252ZXJzYXRpb25faWQYAiABKAkSFAoMcHJvamVjdF9uYW1lGAMgASgJEjEKDWxhc3RfYXR0YWNoZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKCHNldHRpbmdzGAUgASgLMhouc2Vzc2lvbi52MS5DbGF1ZGVTZXR0aW5ncxI5CghtZXRhZGF0YRgGIAMoCzInLnNlc3Npb24udjEuQ2xhdWRlU2Vzc2lvbi5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKmAQoOQ2xhdWRlU2V0dGluZ3MSFQoNYXV0b19yZWF0dGFjaBgBIAEoCBIeChZwcmVmZXJyZWRfc2Vzc2lvbl9uYW1lGAIgASgJEh0KFWNyZWF0ZV9uZXdfb25fbWlzc2luZxgDIAEoCBIdChVzaG93X3Nlc3Npb25fc2VsZWN0b3IYBCABKAgSHwoXc2Vzc2lvbl90aW1lb3V0X21pbnV0ZXMYBSABKAUizwUKClJldmlld0l0ZW0SEgoKc2Vzc2lvbl9pZBgBIAEoCRIUCgxzZXNzaW9uX25hbWUYAiABKAkSKwoGcmVhc29uGAMgASgOMhsuc2Vzc2lvbi52MS5BdHRlbnRpb25SZWFzb24SJgoIcHJpb3JpdHkYBCABKA4yFC5zZXNzaW9uLnYxLlByaW9yaXR5Ei8KC2RldGVjdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdjb250ZXh0GAYgASgJEhQKDHBhdHRlcm5fbmFtZRgHIAEoCRI2CghtZXRhZGF0YRgIIAMoCzIkLnNlc3Npb24udjEuUmV2aWV3SXRlbS5NZXRhZGF0YUVudHJ5Eg8KB3Byb2dyYW0YCSABKAkSDgoGYnJhbmNoGAogASgJEgwKBHBhdGgYCyABKAkSEwoLd29ya2luZ19kaXIYDCABKAkSKQoGc3RhdHVzGA0gASgOMhkuc2Vzc2lvbi52MS5TZXNzaW9uU3RhdHVzEgwKBHRhZ3MYDiADKAkSEAoIY2F0ZWdvcnkYDyABKAkSKQoKZGlmZl9zdGF0cxgQIAEoCzIVLnNlc3Npb24udjEuRGlmZlN0YXRzEjEKDWxhc3RfYWN0aXZpdHkYESABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWdpdGh1Yl9wcl91cmwYEiABKAkSIQoZYnJhbmNoX2RpdmVyZ2VkX2Zyb21fYmFzZRgTIAEoCBIvCg13b3JraW5nX3N0YXRlGBQgASgOMhguc2Vzc2lvbi52MS5Xb3JraW5nU3RhdGUSKQoKc3ViX3N0YXR1cxgVIAEoDjIVLnNlc3Npb24udjEuU3ViU3RhdHVzGi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLcAgoGUFJJbmZvEg4KBm51bWJlchgBIAEoBRINCgV0aXRsZRgCIAEoCRIMCgRib2R5GAMgASgJEhAKCGhlYWRfcmVmGAQgASgJEhAKCGJhc2VfcmVmGAUgASgJEg0KBXN0YXRlGAYgASgJEg4KBmF1dGhvchgHIAEoCRIOCgZsYWJlbHMYCCADKAkSEAoIaHRtbF91cmwYCSABKAkSEAoIaXNfZHJhZnQYCiABKAgSEQoJbWVyZ2VhYmxlGAsgASgJEhEKCWFkZGl0aW9ucxgMIAEoBRIRCglkZWxldGlvbnMYDSABKAUSFQoNY2hhbmdlZF9maWxlcxgOIAEoBRIuCgpjcmVhdGVkX2F0GA8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKwAQoJUFJDb21tZW50EgoKAmlkGAEgASgFEg4KBmF1dGhvchgCIAEoCRIMCgRib2R5GAMgASgJEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKBHBhdGgYBSABKAlIAIgBARIRCgRsaW5lGAYgASgFSAGIAQESEQoJaXNfcmV2aWV3GAcgASgIQgcKBV9wYXRoQgcKBV9saW5lIvYCCgtSZXZpZXdRdWV1ZRITCgt0b3RhbF9pdGVtcxgBIAEoBRIlCgVpdGVtcxgCIAMoCzIWLnNlc3Npb24udjEuUmV2aWV3SXRlbRI8CgtieV9wcmlvcml0eRgDIAMoCzInLnNlc3Npb24udjEuUmV2aWV3UXVldWUuQnlQcmlvcml0eUVudHJ5EjgKCWJ5X3JlYXNvbhgEIAMoCzIlLnNlc3Npb24udjEuUmV2aWV3UXVldWUuQnlSZWFzb25FbnRyeRIbChNhdmVyYWdlX2FnZV9zZWNvbmRzGAUgASgDEhYKDm9sZGVzdF9pdGVtX2lkGAYgASgJEhoKEm9sZGVzdF9hZ2Vfc2Vjb25kcxgHIAEoAxoxCg9CeVByaW9yaXR5RW50cnkSCwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ARovCg1CeVJlYXNvbkVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi6wIKDE5vdGlmaWNhdGlvbhIKCgJpZBgBIAEoCRISCgpzZXNzaW9uX2lkGAIgASgJEhQKDHNlc3Npb25fbmFtZRgDIAEoCRI3ChFub3RpZmljYXRpb25fdHlwZRgEIAEoDjIcLnNlc3Npb24udjEuTm90aWZpY2F0aW9uVHlwZRIyCghwcmlvcml0eRgFIAEoDjIgLnNlc3Npb24udjEuTm90aWZpY2F0aW9uUHJpb3JpdHkSDQoFdGl0bGUYBiABKAkSDwoHbWVzc2FnZRgHIAEoCRItCgl0aW1lc3RhbXAYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKCG1ldGFkYXRhGAkgAygLMiYuc2Vzc2lvbi52MS5Ob3RpZmljYXRpb24uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEijQEKCkZpbGVDaGFuZ2USDAoEcGF0aBgBIAEoCRImCgZzdGF0dXMYAiABKA4yFi5zZXNzaW9uLnYxLkZpbGVTdGF0dXMSEQoJaXNfc3RhZ2VkGAMgASgIEhAKCG9sZF9wYXRoGAQgASgJEhEKCWFkZGl0aW9ucxgFIAEoBRIRCglkZWxldGlvbnMYBiABKAUiyAMKCVZDU1N0YXR1cxIhCgR0eXBlGAEgASgOMhMuc2Vzc2lvbi52MS5WQ1NUeXBlEg4KBmJyYW5jaBgCIAEoCRITCgtoZWFkX2NvbW1pdBgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRIQCghhaGVhZF9ieRgFIAEoBRIRCgliZWhpbmRfYnkYBiABKAUSEAoIdXBzdHJlYW0YByABKAkSEgoKaGFzX3N0YWdlZBgIIAEoCBIUCgxoYXNfdW5zdGFnZWQYCSABKAgSFQoNaGFzX3VudHJhY2tlZBgKIAEoCBIVCg1oYXNfY29uZmxpY3RzGAsgASgIEhAKCGlzX2NsZWFuGAwgASgIEiwKDHN0YWdlZF9maWxlcxgNIAMoCzIWLnNlc3Npb24udjEuRmlsZUNoYW5nZRIuCg51bnN0YWdlZF9maWxlcxgOIAMoCzIWLnNlc3Npb24udjEuRmlsZUNoYW5nZRIvCg91bnRyYWNrZWRfZmlsZXMYDyADKAsyFi5zZXNzaW9uLnYxLkZpbGVDaGFuZ2USLgoOY29uZmxpY3RfZmlsZXMYECADKAsyFi5zZXNzaW9uLnYxLkZpbGVDaGFuZ2UiWAoOQm9va21hcmtUYXJnZXQSDAoEbmFtZRgBIAEoCRITCgtyZXZpc2lvbl9pZBgCIAEoCRIRCglpc19yZW1vdGUYAyABKAgSEAoIdXBzdHJlYW0YBCABKAkiqQEKDlJldmlzaW9uVGFyZ2V0EgoKAmlkGAEgASgJEhAKCHNob3J0X2lkGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg4KBmF1dGhvchgEIAEoCRItCgl0aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmlzX2N1cnJlbnQYBiABKAgSEQoJYm9va21hcmtzGAcgAygJImcKDldvcmt0cmVlVGFyZ2V0EgwKBG5hbWUYASABKAkSDAoEcGF0aBgCIAEoCRIQCghib29rbWFyaxgDIAEoCRITCgtyZXZpc2lvbl9pZBgEIAEoCRISCgppc19jdXJyZW50GAUgASgIItYBChlBdmFpbGFibGVXb3Jrc3BhY2VUYXJnZXRzEiUKCHZjc190eXBlGAEgASgOMhMuc2Vzc2lvbi52MS5WQ1NUeXBlEi0KCWJvb2ttYXJrcxgCIAMoCzIaLnNlc3Npb24udjEuQm9va21hcmtUYXJnZXQSNAoQcmVjZW50X3JldmlzaW9ucxgDIAMoCzIaLnNlc3Npb24udjEuUmV2aXNpb25UYXJnZXQSLQoJd29ya3RyZWVzGAQgAygLMhouc2Vzc2lvbi52MS5Xb3JrdHJlZVRhcmdldCLsAQoHVkNTSW5mbxIlCgh2Y3NfdHlwZRgBIAEoDjITLnNlc3Npb24udjEuVkNTVHlwZRIOCgZoYXNfamoYAiABKAgSDwoHaGFzX2dpdBgDIAEoCBIUCgxpc19jb2xvY2F0ZWQYBCABKAgSEQoJcmVwb19wYXRoGAUgASgJEhgKEGN1cnJlbnRfYm9va21hcmsYBiABKAkSGAoQY3VycmVudF9yZXZpc2lvbhgHIAEoCRIfChdoYXNfdW5jb21taXR0ZWRfY2hhbmdlcxgIIAEoCBIbChNtb2RpZmllZF9maWxlX2NvdW50GAkgASgFIvUCChRQZW5kaW5nQXBwcm92YWxQcm90bxIKCgJpZBgBIAEoCRISCgpzZXNzaW9uX2lkGAIgASgJEhEKCXRvb2xfbmFtZRgDIAEoCRJDCgp0b29sX2lucHV0GAQgAygLMi8uc2Vzc2lvbi52MS5QZW5kaW5nQXBwcm92YWxQcm90by5Ub29sSW5wdXRFbnRyeRILCgNjd2QYBSABKAkSFwoPcGVybWlzc2lvbl9tb2RlGAYgASgJEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKEXNlY29uZHNfcmVtYWluaW5nGAkgASgFEhIKCnJpc2tfbGV2ZWwYCiABKAkaMAoOVG9vbElucHV0RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLNBAoRQXBwcm92YWxSdWxlUHJvdG8SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIRCgl0b29sX25hbWUYAyABKAkSFAoMdG9vbF9wYXR0ZXJuGAQgASgJEhcKD2NvbW1hbmRfcGF0dGVybhgFIAEoCRIUCgxmaWxlX3BhdHRlcm4YBiABKAkSKgoIZGVjaXNpb24YByABKA4yGC5zZXNzaW9uLnYxLkF1dG9EZWNpc2lvbhISCgpyaXNrX2xldmVsGAggASgJEg4KBnJlYXNvbhgJIAEoCRITCgthbHRlcm5hdGl2ZRgKIAEoCRIQCghwcmlvcml0eRgLIAEoBRIPCgdlbmFibGVkGAwgASgIEg4KBnNvdXJjZRgNIAEoCRIuCgpjcmVhdGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghwcm9ncmFtcxgUIAMoCRITCgtzdWJjb21tYW5kcxgVIAMoCRIbChNibG9ja2VkX3N1YmNvbW1hbmRzGBYgAygJEhYKDnJlcXVpcmVkX2ZsYWdzGBcgAygJEhcKD2ZvcmJpZGRlbl9mbGFncxgYIAMoCRIUCgxweXRob25fbW9kZXMYGSADKAkSIAoYc2FmZV9weXRob25faW1wb3J0c19vbmx5GBogASgIEh4KFnJlcXVpcmVkX2ZsYWdfcHJlZml4ZXMYGyADKAkSFQoNdG9vbF9jYXRlZ29yeRgcIAEoCRIaChJyZXF1aXJlX2NpX3Bhc3NpbmcYHSABKAgigQkKFUFuYWx5dGljc1N1bW1hcnlQcm90bxIXCg90b3RhbF9kZWNpc2lvbnMYASABKAUSTgoPZGVjaXNpb25fY291bnRzGAIgAygLMjUuc2Vzc2lvbi52MS5BbmFseXRpY3NTdW1tYXJ5UHJvdG8uRGVjaXNpb25Db3VudHNFbnRyeRIsCgl0b3BfdG9vbHMYAyADKAsyGS5zZXNzaW9uLnYxLlRvb2xTdGF0UHJvdG8SOQoTdG9wX2RlbmllZF9jb21tYW5kcxgEIAMoCzIcLnNlc3Npb24udjEuQ29tbWFuZFN0YXRQcm90bxI2ChN0b3BfdHJpZ2dlcmVkX3J1bGVzGAUgAygLMhkuc2Vzc2lvbi52MS5SdWxlU3RhdFByb3RvEhkKEWF1dG9fYXBwcm92ZV9yYXRlGAYgASgBEhoKEm1hbnVhbF9yZXZpZXdfcmF0ZRgHIAEoARIwCgx3aW5kb3dfc3RhcnQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCndpbmRvd19lbmQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKFHRvcF9jb21tYW5kX3Byb2dyYW1zGAogAygLMhwuc2Vzc2lvbi52MS5Qcm9ncmFtU3RhdFByb3RvEjcKEnRvcF9weXRob25faW1wb3J0cxgLIAMoCzIbLnNlc3Npb24udjEuSW1wb3J0U3RhdFByb3RvEhoKEmNvdmVyYWdlX2dhcF9jb3VudBgMIAEoBRIZChFjb3ZlcmFnZV9nYXBfcmF0ZRgNIAEoARI2ChN0b3BfdW5jb3ZlcmVkX3Rvb2xzGA4gAygLMhkuc2Vzc2lvbi52MS5Ub29sU3RhdFByb3RvEjwKFnRvcF91bmNvdmVyZWRfcHJvZ3JhbXMYDyADKAsyHC5zZXNzaW9uLnYxLlByb2dyYW1TdGF0UHJvdG8SQQoYY29tbWFuZF9zdWJjb21tYW5kX3N0YXRzGBAgAygLMh8uc2Vzc2lvbi52MS5TdWJjb21tYW5kU3RhdFByb3RvEl8KGGVzY2FsYXRpb25fcmVhc29uX2NvdW50cxgRIAMoCzI9LnNlc3Npb24udjEuQW5hbHl0aWNzU3VtbWFyeVByb3RvLkVzY2FsYXRpb25SZWFzb25Db3VudHNFbnRyeRJRChFyaXNrX2xldmVsX2NvdW50cxgSIAMoCzI2LnNlc3Npb24udjEuQW5hbHl0aWNzU3VtbWFyeVByb3RvLlJpc2tMZXZlbENvdW50c0VudHJ5GjUKE0RlY2lzaW9uQ291bnRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ARo9ChtFc2NhbGF0aW9uUmVhc29uQ291bnRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ARo2ChRSaXNrTGV2ZWxDb3VudHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBIlwKDVRvb2xTdGF0UHJvdG8SEQoJdG9vbF9uYW1lGAEgASgJEg0KBWNvdW50GAIgASgFEhQKDG1hbnVhbF9hbGxvdxgDIAEoBRITCgttYW51YWxfZGVueRgEIAEoBSJFChBDb21tYW5kU3RhdFByb3RvEg8KB3ByZXZpZXcYASABKAkSEQoJdG9vbF9uYW1lGAIgASgJEg0KBWNvdW50GAMgASgFIkIKDVJ1bGVTdGF0UHJvdG8SDwoHcnVsZV9pZBgBIAEoCRIRCglydWxlX25hbWUYAiABKAkSDQoFY291bnQYAyABKAUidAoQUHJvZ3JhbVN0YXRQcm90bxIUCgxwcm9ncmFtX25hbWUYASABKAkSEAoIY2F0ZWdvcnkYAiABKAkSDQoFY291bnQYAyABKAUSFAoMbWFudWFsX2FsbG93GAQgASgFEhMKC21hbnVhbF9kZW55GAUgASgFIjAKD0ltcG9ydFN0YXRQcm90bxIOCgZtb2R1bGUYASABKAkSDQoFY291bnQYAiABKAUiiwEKE1N1YmNvbW1hbmRTdGF0UHJvdG8SFAoMcHJvZ3JhbV9uYW1lGAEgASgJEhIKCnN1YmNvbW1hbmQYAiABKAkSEAoIY2F0ZWdvcnkYAyABKAkSDQoFY291bnQYBCABKAUSFAoMbWFudWFsX2FsbG93GAUgASgFEhMKC21hbnVhbF9kZW55GAYgASgFIpMBChBEYWlseUJ1Y2tldFByb3RvEgwKBGRhdGUYASABKAkSEgoKYXV0b19hbGxvdxgCIAEoBRIRCglhdXRvX2RlbnkYAyABKAUSEAoIZXNjYWxhdGUYBCABKAUSFAoMbWFudWFsX2FsbG93GAUgASgFEhMKC21hbnVhbF9kZW55GAYgASgFEg0KBXRvdGFsGAcgASgFItkBChhTdWJjb21tYW5kQnJlYWtkb3duUHJvdG8SEgoKc3ViY29tbWFuZBgBIAEoCRINCgV0b3RhbBgCIAEoBRISCgphdXRvX2FsbG93GAMgASgFEhEKCWF1dG9fZGVueRgEIAEoBRIQCghlc2NhbGF0ZRgFIAEoBRIUCgxtYW51YWxfYWxsb3cYBiABKAUSEwoLbWFudWFsX2RlbnkYByABKAUSGQoRaGFzX3J1bGVfY292ZXJhZ2UYCCABKAgSGwoTc3VnZ2VzdGVkX3J1bGVfaGludBgJIAEoCSK7AQoMRGF0YWJhc2VJbmZvEhQKDHdvcmtzcGFjZV9pZBgBIAEoCRIMCgR0eXBlGAIgASgJEgsKA2N3ZBgDIAEoCRIMCgRuYW1lGAQgASgJEhIKCmNvbmZpZ19kaXIYBSABKAkSFQoNc2Vzc2lvbl9jb3VudBgGIAEoBRISCgppc19jdXJyZW50GAcgASgIEi0KCWxhc3RfdXNlZBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAimAEKCEZpbGVOb2RlEgwKBG5hbWUYASABKAkSDAoEcGF0aBgCIAEoCRIOCgZpc19kaXIYAyABKAgSDAoEc2l6ZRgEIAEoAxISCgpnaXRfc3RhdHVzGAUgASgJEhIKCmlzX3N5bWxpbmsYBiABKAgSFgoOc3ltbGlua190YXJnZXQYByABKAkSEgoKaXNfaWdub3JlZBgIIAEoCCLlAQoPQ2hlY2twb2ludFByb3RvEgoKAmlkGAEgASgJEhIKCnNlc3Npb25faWQYAiABKAkSEQoJcGFyZW50X2lkGAMgASgJEg0KBWxhYmVsGAQgASgJEhYKDnNjcm9sbGJhY2tfc2VxGAUgASgEEhcKD3Njcm9sbGJhY2tfcGF0aBgGIAEoCRIYChBjbGF1ZGVfY29udl91dWlkGAcgASgJEhYKDmdpdF9jb21taXRfc2hhGAggASgJEi0KCXRpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAihQUKElVuZmluaXNoZWRXb3JrdHJlZRIRCglyZXBvX3BhdGgYASABKAkSDgoGYnJhbmNoGAIgASgJEhUKDXdvcmt0cmVlX3BhdGgYAyABKAkSEQoJcmVwb19uYW1lGAQgASgJEhQKDGRpc3BsYXlfcGF0aBgFIAEoCRIXCg9oYXNfdW5jb21taXR0ZWQYBiABKAgSFQoNY29tbWl0c19haGVhZBgHIAEoBRIWCg5jb21taXRzX2JlaGluZBgIIAEoBRIWCg5kZWZhdWx0X2JyYW5jaBgJIAEoCRIVCg1jaGFuZ2VkX2ZpbGVzGAogASgFEhMKC2xpbmVzX2FkZGVkGAsgASgFEhUKDWxpbmVzX3JlbW92ZWQYDCABKAUSHQoVYWhlYWRfY29tbWl0X21lc3NhZ2VzGA0gAygJEjEKDWxhc3RfbW9kaWZpZWQYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCXNjYW5fdGltZRgPIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoLc2Nhbl9zdGF0dXMYECABKA4yFi5zZXNzaW9uLnYxLlNjYW5TdGF0dXMSFgoOc2Nhbl9lcnJvcl9tc2cYESABKAkSFAoMaXNfZGlzbWlzc2VkGBIgASgIEhIKCmlzX3Nub296ZWQYEyABKAgSEwoLc2Vzc2lvbl9pZHMYFCADKAkSGAoQZ2l0aHViX3ByX251bWJlchgVIAEoBRIVCg1naXRodWJfcHJfdXJsGBYgASgJEhcKD2dpdGh1Yl9wcl9zdGF0ZRgXIAEoCRIaChJnaXRodWJfcHJfcHJpb3JpdHkYGCABKAkiXgoUVW5maW5pc2hlZFdvcmtDb25maWcSHAoUYXV0b19zcGlkZXJfc2Vzc2lvbnMYASABKAgSEgoKd2F0Y2hfZGlycxgCIAMoCRIUCgxwaW5uZWRfcmVwb3MYAyADKAki+AEKBVNoZWxsEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDwoHY29tbWFuZBgDIAEoCRITCgt3b3JraW5nX2RpchgEIAEoCRInCgZzdGF0dXMYBSABKA4yFy5zZXNzaW9uLnYxLlNoZWxsU3RhdHVzEhEKCWV4aXRfY29kZRgGIAEoBRITCgtvcmRlcl9pbmRleBgHIAEoBRIuCgpzdGFydGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpzdG9wcGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLrAgoSU3VnZ2VzdGVkUnVsZVByb3RvEgwKBG5hbWUYASABKAkSEQoJdG9vbF9uYW1lGAIgASgJEhQKDHRvb2xfcGF0dGVybhgDIAEoCRIXCg9jb21tYW5kX3BhdHRlcm4YBCABKAkSFAoMZmlsZV9wYXR0ZXJuGAUgASgJEioKCGRlY2lzaW9uGAYgASgOMhguc2Vzc2lvbi52MS5BdXRvRGVjaXNpb24SEgoKcmlza19sZXZlbBgHIAEoCRIOCgZyZWFzb24YCCABKAkSEwoLYWx0ZXJuYXRpdmUYCSABKAkSEAoIcHJpb3JpdHkYCiABKAUSEgoKY29uZmlkZW5jZRgLIAEoAhITCgtleHBsYW5hdGlvbhgMIAEoCRIXCg9zb3VyY2VfY29tbWFuZHMYDSADKAkSHAoUc2hhZG93ZWRfYnlfcnVsZV9pZHMYDiADKAkSGAoQc2hhZG93c19ydWxlX2lkcxgPIAMoCSKoAwoGVXNlclBSEg0KBW93bmVyGAEgASgJEgwKBHJlcG8YAiABKAkSDgoGbnVtYmVyGAMgASgFEg0KBXRpdGxlGAQgASgJEhAKCGh0bWxfdXJsGAUgASgJEg0KBXN0YXRlGAYgASgJEhAKCGhlYWRfcmVmGAcgASgJEhAKCGJhc2VfcmVmGAggASgJEhAKCGlzX2RyYWZ0GAkgASgIEhgKEGNoZWNrX2NvbmNsdXNpb24YCiABKAkSFgoOYXBwcm92ZWRfY291bnQYCyABKAUSGQoRY2hhbmdlc19yZXFfY291bnQYDCABKAUSLgoKdXBkYXRlZF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJY2xvc2VkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCgltZXJnZWRfYXQYDyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC3Nlc3Npb25faWRzGBAgAygJEhsKE2xvY2FsX3dvcmt0cmVlX3BhdGgYESABKAkqqQEKCVZOQ1N0YXR1cxIaChZWTkNfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFwoTVk5DX1NUQVRVU19TVEFSVElORxABEhQKEFZOQ19TVEFUVVNfUkVBRFkQAhIZChVWTkNfU1RBVFVTX05PX0JST1dTRVIQAxIaChZWTkNfU1RBVFVTX1VOQVZBSUxBQkxFEAQSGgoWVk5DX1NUQVRVU19QQVNTVEhST1VHSBAFKpABCglDRFBTdGF0dXMSGgoWQ0RQX1NUQVRVU19VTlNQRUNJRklFRBAAEhYKEkNEUF9TVEFUVVNfV0FJVElORxABEhgKFENEUF9TVEFUVVNfU1RSRUFNSU5HEAISGQoVQ0RQX1NUQVRVU19OT19CUk9XU0VSEAMSGgoWQ0RQX1NUQVRVU19VTkFWQUlMQUJMRRAEKoADCg1TZXNzaW9uU3RhdHVzEh4KGlNFU1NJT05fU1RBVFVTX1VOU1BFQ0lGSUVEEAASGQoVU0VTU0lPTl9TVEFUVVNfQUNUSVZFEAESHgoWU0VTU0lPTl9TVEFUVVNfUlVOTklORxABGgIIARIcChRTRVNTSU9OX1NUQVRVU19SRUFEWRACGgIIARIeChZTRVNTSU9OX1NUQVRVU19MT0FESU5HEAMaAggBEhkKFVNFU1NJT05fU1RBVFVTX1BBVVNFRBAEEiUKHVNFU1NJT05fU1RBVFVTX05FRURTX0FQUFJPVkFMEAUaAggBEhsKF1NFU1NJT05fU1RBVFVTX0NSRUFUSU5HEAYSGgoWU0VTU0lPTl9TVEFUVVNfU1RPUFBFRBAHEh0KGVNFU1NJT05fU1RBVFVTX0hJQkVSTkFURUQQCBIcChhTRVNTSU9OX1NUQVRVU19SRVNUT1JJTkcQCRIaChZTRVNTSU9OX1NUQVRVU19DUkFTSEVEEAoaAhABKsIBCgtTZXNzaW9uVHlwZRIcChhTRVNTSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIaChZTRVNTSU9OX1RZUEVfRElSRUNUT1JZEAESHQoZU0VTU0lPTl9UWVBFX05FV19XT1JLVFJFRRACEiIKHlNFU1NJT05fVFlQRV9FWElTVElOR19XT1JLVFJFRRADEhwKGFNFU1NJT05fVFlQRV9ORVdfUFJPSkVDVBAEEhgKFFNFU1NJT05fVFlQRV9PTkVfT0ZGEAUqZAoMSW5zdGFuY2VUeXBlEh0KGUlOU1RBTkNFX1RZUEVfVU5TUEVDSUZJRUQQABIZChVJTlNUQU5DRV9UWVBFX01BTkFHRUQQARIaChZJTlNUQU5DRV9UWVBFX0VYVEVSTkFMEAIqjAMKDkRldGVjdGVkU3RhdHVzEh8KG0RFVEVDVEVEX1NUQVRVU19VTlNQRUNJRklFRBAAEhgKFERFVEVDVEVEX1NUQVRVU19JRExFEAESHgoaREVURUNURURfU1RBVFVTX1BST0NFU1NJTkcQAhIdChlERVRFQ1RFRF9TVEFUVVNfRVhFQ1VUSU5HEAMSIgoeREVURUNURURfU1RBVFVTX05FRURTX0FQUFJPVkFMEAQSIgoeREVURUNURURfU1RBVFVTX0lOUFVUX1JFUVVJUkVEEAUSGQoVREVURUNURURfU1RBVFVTX0VSUk9SEAYSIQodREVURUNURURfU1RBVFVTX1RFU1RTX0ZBSUxJTkcQBxIbChdERVRFQ1RFRF9TVEFUVVNfU1VDQ0VTUxAIEhsKF0RFVEVDVEVEX1NUQVRVU19VTktOT1dOEAkSGQoVREVURUNURURfU1RBVFVTX1JFQURZEAoSJQohREVURUNURURfU1RBVFVTX1dBSVRJTkdfRk9SX0FHRU5UEAsqmAEKDFdvcmtpbmdTdGF0ZRIdChlXT1JLSU5HX1NUQVRFX1VOU1BFQ0lGSUVEEAASGAoUV09SS0lOR19TVEFURV9BQ1RJVkUQARIcChhXT1JLSU5HX1NUQVRFX1BST0NFU1NJTkcQAhIWChJXT1JLSU5HX1NUQVRFX0lETEUQAxIZChVXT1JLSU5HX1NUQVRFX1dBSVRJTkcQBCq2AgoJU3ViU3RhdHVzEhoKFlNVQl9TVEFUVVNfVU5TUEVDSUZJRUQQABITCg9TVUJfU1RBVFVTX0lETEUQARIZChVTVUJfU1RBVFVTX1BST0NFU1NJTkcQAhIdChlTVUJfU1RBVFVTX05FRURTX0FQUFJPVkFMEAMSFAoQU1VCX1NUQVRVU19FUlJPUhAEEhwKGFNVQl9TVEFUVVNfVEVTVFNfRkFJTElORxAFEhsKF1NVQl9TVEFUVVNfUkFURV9MSU1JVEVEEAYSHQoZU1VCX1NUQVRVU19JTlBVVF9SRVFVSVJFRBAHEhQKEFNVQl9TVEFUVVNfUkVBRFkQCBIWChJTVUJfU1RBVFVTX1NVQ0NFU1MQCRIgChxTVUJfU1RBVFVTX1dBSVRJTkdfRk9SX0FHRU5UEAoqyQEKDlJhdGVMaW1pdFN0YXRlEiAKHFJBVEVfTElNSVRfU1RBVEVfVU5TUEVDSUZJRUQQABIZChVSQVRFX0xJTUlUX1NUQVRFX05PTkUQARIcChhSQVRFX0xJTUlUX1NUQVRFX1dBSVRJTkcQAhIfChtSQVRFX0xJTUlUX1NUQVRFX1JFQ09WRVJJTkcQAxIeChpSQVRFX0xJTUlUX1NUQVRFX1JFQ09WRVJFRBAEEhsKF1JBVEVfTElNSVRfU1RBVEVfRkFJTEVEEAUqcwoIUHJpb3JpdHkSGAoUUFJJT1JJVFlfVU5TUEVDSUZJRUQQABITCg9QUklPUklUWV9VUkdFTlQQARIRCg1QUklPUklUWV9ISUdIEAISEwoPUFJJT1JJVFlfTUVESVVNEAMSEAoMUFJJT1JJVFlfTE9XEAQqlAMKD0F0dGVudGlvblJlYXNvbhIgChxBVFRFTlRJT05fUkVBU09OX1VOU1BFQ0lGSUVEEAASJQohQVRURU5USU9OX1JFQVNPTl9BUFBST1ZBTF9QRU5ESU5HEAESIwofQVRURU5USU9OX1JFQVNPTl9JTlBVVF9SRVFVSVJFRBACEiAKHEFUVEVOVElPTl9SRUFTT05fRVJST1JfU1RBVEUQAxIhCh1BVFRFTlRJT05fUkVBU09OX0lETEVfVElNRU9VVBAEEiIKHkFUVEVOVElPTl9SRUFTT05fVEFTS19DT01QTEVURRAFEigKJEFUVEVOVElPTl9SRUFTT05fVU5DT01NSVRURURfQ0hBTkdFUxAGEhkKFUFUVEVOVElPTl9SRUFTT05fSURMRRAHEhoKFkFUVEVOVElPTl9SRUFTT05fU1RBTEUQCBIlCiFBVFRFTlRJT05fUkVBU09OX1dBSVRJTkdfRk9SX1VTRVIQCRIiCh5BVFRFTlRJT05fUkVBU09OX1RFU1RTX0ZBSUxJTkcQCiqdBAoQTm90aWZpY2F0aW9uVHlwZRIhCh1OT1RJRklDQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAEiUKIU5PVElGSUNBVElPTl9UWVBFX0FQUFJPVkFMX05FRURFRBABEiQKIE5PVElGSUNBVElPTl9UWVBFX0lOUFVUX1JFUVVJUkVEEAISKQolTk9USUZJQ0FUSU9OX1RZUEVfQ09ORklSTUFUSU9OX05FRURFRBADEiMKH05PVElGSUNBVElPTl9UWVBFX1RBU0tfQ09NUExFVEUQBBIlCiFOT1RJRklDQVRJT05fVFlQRV9QUk9DRVNTX1NUQVJURUQQBRImCiJOT1RJRklDQVRJT05fVFlQRV9QUk9DRVNTX0ZJTklTSEVEEAYSGwoXTk9USUZJQ0FUSU9OX1RZUEVfRVJST1IQBxIdChlOT1RJRklDQVRJT05fVFlQRV9XQVJOSU5HEAgSHQoZTk9USUZJQ0FUSU9OX1RZUEVfRkFJTFVSRRAJEhoKFk5PVElGSUNBVElPTl9UWVBFX0lORk8QChIbChdOT1RJRklDQVRJT05fVFlQRV9ERUJVRxALEiMKH05PVElGSUNBVElPTl9UWVBFX1NUQVRVU19DSEFOR0UQDBIjCh9OT1RJRklDQVRJT05fVFlQRV9BVVRPX0FQUFJPVkVEEA0SHAoYTk9USUZJQ0FUSU9OX1RZUEVfQ1VTVE9NEGQqwAEKFE5vdGlmaWNhdGlvblByaW9yaXR5EiUKIU5PVElGSUNBVElPTl9QUklPUklUWV9VTlNQRUNJRklFRBAAEh0KGU5PVElGSUNBVElPTl9QUklPUklUWV9MT1cQARIgChxOT1RJRklDQVRJT05fUFJJT1JJVFlfTUVESVVNEAISHgoaTk9USUZJQ0FUSU9OX1BSSU9SSVRZX0hJR0gQAxIgChxOT1RJRklDQVRJT05fUFJJT1JJVFlfVVJHRU5UEAQqSwoHVkNTVHlwZRIYChRWQ1NfVFlQRV9VTlNQRUNJRklFRBAAEhAKDFZDU19UWVBFX0dJVBABEhQKEFZDU19UWVBFX0pVSlVUU1UQAiryAQoKRmlsZVN0YXR1cxIbChdGSUxFX1NUQVRVU19VTlNQRUNJRklFRBAAEhgKFEZJTEVfU1RBVFVTX01PRElGSUVEEAESFQoRRklMRV9TVEFUVVNfQURERUQQAhIXChNGSUxFX1NUQVRVU19ERUxFVEVEEAMSFwoTRklMRV9TVEFUVVNfUkVOQU1FRBAEEhYKEkZJTEVfU1RBVFVTX0NPUElFRBAFEhkKFUZJTEVfU1RBVFVTX1VOVFJBQ0tFRBAGEhcKE0ZJTEVfU1RBVFVTX0lHTk9SRUQQBxIYChRGSUxFX1NUQVRVU19DT05GTElDVBAIKqkBChNXb3Jrc3BhY2VTd2l0Y2hUeXBlEiUKIVdPUktTUEFDRV9TV0lUQ0hfVFlQRV9VTlNQRUNJRklFRBAAEiMKH1dPUktTUEFDRV9TV0lUQ0hfVFlQRV9ESVJFQ1RPUlkQARIiCh5XT1JLU1BBQ0VfU1dJVENIX1RZUEVfUkVWSVNJT04QAhIiCh5XT1JLU1BBQ0VfU1dJVENIX1RZUEVfV09SS1RSRUUQAyqQAQoOQ2hhbmdlU3RyYXRlZ3kSHwobQ0hBTkdFX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASHwobQ0hBTkdFX1NUUkFURUdZX0tFRVBfQVNfV0lQEAESHwobQ0hBTkdFX1NUUkFURUdZX0JSSU5HX0FMT05HEAISGwoXQ0hBTkdFX1NUUkFURUdZX0FCQU5ET04QAyp6CgxBdXRvRGVjaXNpb24SHQoZQVVUT19ERUNJU0lPTl9VTlNQRUNJRklFRBAAEhcKE0FVVE9fREVDSVNJT05fQUxMT1cQARIWChJBVVRPX0RFQ0lTSU9OX0RFTlkQAhIaChZBVVRPX0RFQ0lTSU9OX0VTQ0FMQVRFEAMqiQEKClNjYW5TdGF0dXMSGwoXU0NBTl9TVEFUVVNfVU5TUEVDSUZJRUQQABISCg5TQ0FOX1NUQVRVU19PSxABEhcKE1NDQU5fU1RBVFVTX1RJTUVPVVQQAhIaChZTQ0FOX1NUQVRVU19QRVJNSVNTSU9OEAMSFQoRU0NBTl9TVEFUVVNfRVJST1IQBCrNAQoUU2Vzc2lvblN1bW1hcnlTdGF0dXMSJgoiU0VTU0lPTl9TVU1NQVJZX1NUQVRVU19VTlNQRUNJRklFRBAAEiIKHlNFU1NJT05fU1VNTUFSWV9TVEFUVVNfUEVORElORxABEiUKIVNFU1NJT05fU1VNTUFSWV9TVEFUVVNfR0VORVJBVElORxACEiAKHFNFU1NJT05fU1VNTUFSWV9TVEFUVVNfUkVBRFkQAxIgChxTRVNTSU9OX1NVTU1BUllfU1RBVFVTX0VSUk9SEAQqdwoLU2hlbGxTdGF0dXMSHAoYU0hFTExfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGAoUU0hFTExfU1RBVFVTX1JVTk5JTkcQARIYChRTSEVMTF9TVEFUVVNfU1RPUFBFRBACEhYKElNIRUxMX1NUQVRVU19FUlJPUhADKqoBChBTdWdnZXN0aW9uU291cmNlEiEKHVNVR0dFU1RJT05fU09VUkNFX1VOU1BFQ0lGSUVEEAASJAogU1VHR0VTVElPTl9TT1VSQ0VfQU5BTFlUSUNTX0dBUFMQARInCiNTVUdHRVNUSU9OX1NPVVJDRV9SRVZJRVdfUVVFVUVfSVRFTRACEiQKIFNVR0dFU1RJT05fU09VUkNFX0NPTU1BTkRfU0FNUExFEANCqgEKDmNvbS5zZXNzaW9uLnYxQgpUeXBlc1Byb3RvUAFaQ2dpdGh1Yi5jb20vdHN0YXBsZXIvc3RhcGxlci1zcXVhZC9nZW4vcHJvdG8vZ28vc2Vzc2lvbi92MTtzZXNzaW9udjGiAgNTWFiqAgpTZXNzaW9uLlYxygIKU2Vzc2lvblxWMeICFlNlc3Npb25cVjFcR1BCTWV0YWRhdGHqAgtTZXNzaW9uOjpWMWIGcHJvdG8z", [file_google_protobuf_timestamp]); - -/** - * Session represents a running AI agent instance with its associated state. - * Maps to session.Instance in the Go codebase. - * - * @generated from message session.v1.Session - */ -export type Session = Message<"session.v1.Session"> & { - /** - * Unique identifier (uses title as ID for now). - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Human-readable session title. - * - * @generated from field: string title = 2; - */ - title: string; - - /** - * Path to workspace repository root. - * - * @generated from field: string path = 3; - */ - path: string; - - /** - * Directory within repository to start in. - * - * @generated from field: string working_dir = 4; - */ - workingDir: string; - - /** - * Git branch name for this session. - * - * @generated from field: string branch = 5; - */ - branch: string; - - /** - * Current session status. - * - * @generated from field: session.v1.SessionStatus status = 6; - */ - status: SessionStatus; - - /** - * Program running in session (e.g., "claude", "aider"). - * - * @generated from field: string program = 7; - */ - program: string; - - /** - * Terminal dimensions. - * - * @generated from field: int32 height = 8; - */ - height: number; - - /** - * @generated from field: int32 width = 9; - */ - width: number; - - /** - * Timestamps. - * - * @generated from field: google.protobuf.Timestamp created_at = 10; - */ - createdAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp updated_at = 11; - */ - updatedAt?: Timestamp; - - /** - * Terminal activity timestamps for staleness detection. - * Last time any terminal output was received (including tmux banners). - * - * @generated from field: google.protobuf.Timestamp last_terminal_update = 22; - */ - lastTerminalUpdate?: Timestamp; - - /** - * Last time meaningful terminal output was received (excluding tmux banners). - * Used by review queue to detect stale sessions. - * - * @generated from field: google.protobuf.Timestamp last_meaningful_output = 23; - */ - lastMeaningfulOutput?: Timestamp; - - /** - * Auto-approve prompts without user interaction. - * - * @generated from field: bool auto_yes = 12; - */ - autoYes: boolean; - - /** - * Initial prompt passed on startup. - * - * @generated from field: string prompt = 13; - */ - prompt: string; - - /** - * Path to existing worktree (if reusing). - * - * @generated from field: string existing_worktree = 14; - */ - existingWorktree: string; - - /** - * Category for organization. - * - * @generated from field: string category = 15; - */ - category: string; - - /** - * Whether category is expanded in UI. - * - * @generated from field: bool is_expanded = 16; - */ - isExpanded: boolean; - - /** - * Session type (directory, new_worktree, existing_worktree). - * - * @generated from field: session.v1.SessionType session_type = 17; - */ - sessionType: SessionType; - - /** - * Tmux session prefix for isolation. - * - * @generated from field: string tmux_prefix = 18; - */ - tmuxPrefix: string; - - /** - * Git diff statistics. - * - * @generated from field: session.v1.DiffStats diff_stats = 19; - */ - diffStats?: DiffStats; - - /** - * Git worktree information. - * - * @generated from field: session.v1.GitWorktree git_worktree = 20; - */ - gitWorktree?: GitWorktree; - - /** - * Claude Code session persistence data. - * - * @generated from field: session.v1.ClaudeSession claude_session = 21; - */ - claudeSession?: ClaudeSession; - - /** - * Tags for flexible multi-dimensional organization. - * Replaces single-category hierarchy with tag-based grouping. - * - * @generated from field: repeated string tags = 24; - */ - tags: string[]; - - /** - * GitHub pull request number (0 if not created from PR). - * - * @generated from field: int32 github_pr_number = 25; - */ - githubPrNumber: number; - - /** - * Full URL to the GitHub pull request. - * - * @generated from field: string github_pr_url = 26; - */ - githubPrUrl: string; - - /** - * Repository owner (GitHub user or organization). - * - * @generated from field: string github_owner = 27; - */ - githubOwner: string; - - /** - * Repository name. - * - * @generated from field: string github_repo = 28; - */ - githubRepo: string; - - /** - * Original URL or reference used to create this session. - * Could be a PR URL, repository URL, or git URL. - * - * @generated from field: string github_source_ref = 29; - */ - githubSourceRef: string; - - /** - * Path where repository was cloned (for URL-based sessions). - * Empty if session uses existing repository. - * - * @generated from field: string cloned_repo_path = 30; - */ - clonedRepoPath: string; - - /** - * Instance type - indicates whether this is a managed or external session - * - * @generated from field: session.v1.InstanceType instance_type = 31; - */ - instanceType: InstanceType; - - /** - * External instance metadata (only populated for external sessions) - * - * @generated from field: session.v1.ExternalInstanceMetadata external_metadata = 32; - */ - externalMetadata?: ExternalInstanceMetadata; - - /** - * PR lifecycle state: "open", "closed", "merged" - * - * @generated from field: string github_pr_state = 33; - */ - githubPrState: string; - - /** - * Whether the PR is in draft mode - * - * @generated from field: bool github_pr_is_draft = 34; - */ - githubPrIsDraft: boolean; - - /** - * Derived priority: blocking/ready/pending/draft/complete/no_pr/auth_error - * - * @generated from field: string github_pr_priority = 35; - */ - githubPrPriority: string; - - /** - * Count of current non-dismissed APPROVED reviews - * - * @generated from field: int32 github_approved_count = 36; - */ - githubApprovedCount: number; - - /** - * Count of current non-dismissed CHANGES_REQUESTED reviews - * - * @generated from field: int32 github_changes_req_count = 37; - */ - githubChangesReqCount: number; - - /** - * CI rollup conclusion: success/failure/pending/action_required/neutral/"" - * - * @generated from field: string github_check_conclusion = 38; - */ - githubCheckConclusion: string; - - /** - * When PR status was last successfully fetched - * - * @generated from field: google.protobuf.Timestamp last_pr_status_check = 39; - */ - lastPrStatusCheck?: Timestamp; - - /** - * Rate limit detection state - * Indicates if session is experiencing rate limiting from LLM provider - * - * @generated from field: session.v1.RateLimitState rate_limit_state = 40; - */ - rateLimitState: RateLimitState; - - /** - * When the rate limit is expected to reset (populated when rate_limit_state == WAITING). - * - * @generated from field: google.protobuf.Timestamp rate_limit_reset_time = 46; - */ - rateLimitResetTime?: Timestamp; - - /** - * Whether automatic rate limit recovery is enabled for this session. - * Defaults to true. Set to false to disable auto-resume for this session. - * - * @generated from field: bool rate_limit_enabled = 47; - */ - rateLimitEnabled: boolean; - - /** - * Path to the Claude Code JSONL history file for this session. - * Populated by HistoryLinker once the session's open files are detected. - * Used to pass --resume when reattaching after server restart. - * - * @generated from field: string history_file_path = 41; - */ - historyFilePath: string; - - /** - * Claude Code conversation UUID extracted from the history file path. - * Matches the UUID in the JSONL filename under ~/.claude/projects//.jsonl. - * - * @generated from field: string claude_conversation_uuid = 42; - */ - claudeConversationUuid: string; - - /** - * Project ID this session belongs to (empty if not in a project). - * - * @generated from field: string project_id = 43; - */ - projectId: string; - - /** - * Initial prompt that was injected into CLAUDE.md at session creation. - * - * @generated from field: string initial_prompt = 44; - */ - initialPrompt: string; - - /** - * Full launch command as passed to tmux on session start, including injected flags - * (e.g. --resume , --mcp-server ..., -y, initial prompt). Empty for external sessions. - * - * @generated from field: string launch_command = 45; - */ - launchCommand: string; - - /** - * Deprecated: derived client-side via deriveWorkingState(). - * Active-work state for review queue filtering. Populated from IdleDetector state. - * - * @generated from field: session.v1.WorkingState working_state = 50; - */ - workingState: WorkingState; - - /** - * VNC/browser passthrough state. Populated when VNC is supported on the host. - * - * @generated from field: session.v1.VNCState vnc_state = 51; - */ - vncState?: VNCState; - - /** - * CDP browser streaming state. Populated when Chrome is available on the host. - * - * @generated from field: session.v1.CDPState cdp_state = 52; - */ - cdpState?: CDPState; - - /** - * Human-readable progress message during Creating state (empty otherwise). - * Set by the async creation goroutine; cleared once session becomes Active. - * - * @generated from field: string creation_progress = 53; - */ - creationProgress: string; - - /** - * Fine-grained activity state for Active sessions. Derived from terminal detection - * layer at read time; never stored in the database. - * Only meaningful when lifecycle_status == SESSION_STATUS_ACTIVE. - * - * @generated from field: session.v1.SubStatus sub_status = 54; - */ - subStatus: SubStatus; - - /** - * Approximate resident set size (RSS) in MB for all processes in this session. - * Zero for hibernated sessions or when measurement is unavailable. - * - * @generated from field: int64 memory_rss_mb = 55; - */ - memoryRssMb: bigint; - - /** - * Estimated RAM freed in MB if this session were hibernated now. - * Equal to memory_rss_mb for Active sessions; zero for Hibernated sessions. - * - * @generated from field: int64 estimated_savings_mb = 56; - */ - estimatedSavingsMb: bigint; - - /** - * When true, this session is excluded from the default session list and review queue. - * Used for system/background sessions (e.g. triage, validation) that should not - * pollute the user-facing session viewer. - * - * @generated from field: bool hidden = 57; - */ - hidden: boolean; - - /** - * Reason why the session was paused. Empty when session has never been paused. - * Values: "manual", "auto:inactivity", "auto:session_limit", "auto:resource" - * - * @generated from field: string pause_reason = 58; - */ - pauseReason: string; - - /** - * Current session goal and task tracking state. Nil when no goal has been set. - * - * @generated from field: session.v1.SessionGoalSummary goal = 59; - */ - goal?: SessionGoalSummary; - - /** - * Whether this session is running under LLM orchestration (AutonomousDriver). - * When true, the session injects prompts automatically based on idle detection. - * - * @generated from field: bool autonomous_mode = 60; - */ - autonomousMode: boolean; - - /** - * UUID of the Workflow that spawned this session. Empty for manually-created sessions. - * - * @generated from field: string workflow_id = 62; - */ - workflowId: string; - - /** - * When the session was archived. Zero value means not archived. - * - * @generated from field: google.protobuf.Timestamp archived_at = 63; - */ - archivedAt?: Timestamp; - - /** - * Human-readable name of the workflow that spawned this session. - * Populated at read time from the workflow name cache; empty for manual sessions. - * - * @generated from field: string workflow_name = 64; - */ - workflowName: string; - - /** - * Current turn number in an ongoing autonomous run. Zero when not running. - * - * @generated from field: int32 autonomous_turn = 65; - */ - autonomousTurn: number; - - /** - * Maximum turns configured for the current autonomous run. Zero when not running. - * - * @generated from field: int32 autonomous_max_turns = 66; - */ - autonomousMaxTurns: number; - - /** - * Outcome of the last completed autonomous run: "", "done", "stuck". - * - * @generated from field: string autonomous_outcome = 67; - */ - autonomousOutcome: string; - - /** - * Fine-grained detected status from PTY output analysis. - * Only meaningful when status == SESSION_STATUS_ACTIVE. - * Maps to detection.DetectedStatus in Go. - * - * @generated from field: session.v1.DetectedStatus detected_status = 68; - */ - detectedStatus: DetectedStatus; - - /** - * Human-readable context string from the terminal pattern detector - * (e.g. "Waiting for tool approval", "Tests failing: 3 of 12"). - * Empty when detected_status is UNSPECIFIED. - * - * @generated from field: string detected_context = 69; - */ - detectedContext: string; - - /** - * Structured artifacts extracted from the session's JSONL conversation history. - * Populated asynchronously by ArtifactExtractor; nil until first scan completes. - * - * @generated from field: session.v1.SessionArtifacts artifacts = 70; - */ - artifacts?: SessionArtifacts; - - /** - * Canonical workspace/repo identity (e.g. "gh:owner/repo", or "path:
" - * when there's no GitHub remote). Sessions sharing this key are workspace peers. Empty - * when neither GitHub info nor a repo path could be determined (e.g. a bare one-off session). - * - * @generated from field: string workspace_key = 71; - */ - workspaceKey: string; - - /** - * Reason the session's pane crashed. Only meaningful when status == - * SESSION_STATUS_CRASHED. Empty when the session has never crashed. - * - * @generated from field: string exit_reason = 72; - */ - exitReason: string; - - /** - * User-authored free-form markdown note attached to this session. - * - * @generated from field: string note = 73; - */ - note: string; - - /** - * auto_approve injects a per-agent CLI flag that skips permission/approval - * prompts entirely (e.g. --dangerously-skip-permissions for Claude Code). - * Independent of auto_yes — see auto_yes's own comment for the distinction. - * - * @generated from field: bool auto_approve = 74; - */ - autoApprove: boolean; -}; - -/** - * Describes the message session.v1.Session. - * Use `create(SessionSchema)` to create a new message. - */ -export const SessionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 0); - -/** - * SessionArtifacts holds structured artifacts extracted from the session's - * Claude Code JSONL conversation history. - * - * @generated from message session.v1.SessionArtifacts - */ -export type SessionArtifacts = Message<"session.v1.SessionArtifacts"> & { - /** - * GitHub PR URLs found in tool_result output (e.g. from gh pr create). - * - * @generated from field: repeated string pr_urls = 1; - */ - prUrls: string[]; - - /** - * Git commit SHAs (40-char) found in tool_result output. - * - * @generated from field: repeated string commit_shas = 2; - */ - commitShas: string[]; - - /** - * External URLs found in tool_result output (capped at 50 entries). - * - * @generated from field: repeated string external_urls = 3; - */ - externalUrls: string[]; - - /** - * When the JSONL file was last successfully scanned. - * - * @generated from field: google.protobuf.Timestamp last_scanned_at = 4; - */ - lastScannedAt?: Timestamp; -}; - -/** - * Describes the message session.v1.SessionArtifacts. - * Use `create(SessionArtifactsSchema)` to create a new message. - */ -export const SessionArtifactsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 1); - -/** - * SessionGoalSummary summarizes the current goal and task state for a session. - * Populated by the server when a goal has been set via the set_session_goal MCP tool. - * - * @generated from message session.v1.SessionGoalSummary - */ -export type SessionGoalSummary = Message<"session.v1.SessionGoalSummary"> & { - /** - * Human-readable goal description (max 2000 chars). - * - * @generated from field: string goal_text = 1; - */ - goalText: string; - - /** - * Current goal status: idle, working, blocked, done. - * - * @generated from field: string status = 2; - */ - status: string; - - /** - * Total number of tasks in the task tree (all depth levels). - * - * @generated from field: int32 tasks_total = 3; - */ - tasksTotal: number; - - /** - * Number of tasks with status "done" (all depth levels). - * - * @generated from field: int32 tasks_done = 4; - */ - tasksDone: number; - - /** - * JSON-encoded []TaskNode; "[]" when no tasks have been set. - * Parse client-side to render the full recursive task tree. - * - * @generated from field: string tasks_json = 5; - */ - tasksJson: string; - - /** - * When the goal was last set/updated. Used client-side to detect a stale goal - * independently of session liveness (workspace peer awareness). - * - * @generated from field: google.protobuf.Timestamp updated_at = 6; - */ - updatedAt?: Timestamp; -}; - -/** - * Describes the message session.v1.SessionGoalSummary. - * Use `create(SessionGoalSummarySchema)` to create a new message. - */ -export const SessionGoalSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 2); - -/** - * VNCState holds the browser-passthrough state for a session. - * - * @generated from message session.v1.VNCState - */ -export type VNCState = Message<"session.v1.VNCState"> & { - /** - * Current operational status. - * - * @generated from field: session.v1.VNCStatus status = 1; - */ - status: VNCStatus; - - /** - * Allocated X11 display number (e.g. 100 means :100). - * - * @generated from field: int32 display_number = 2; - */ - displayNumber: number; - - /** - * vnc_password is reserved for a future RFB auth implementation. - * Currently empty — x11vnc runs with -nopw and auth is handled by the Go proxy. - * - * @generated from field: string vnc_password = 3; - */ - vncPassword: string; - - /** - * True when a browser window has been detected on the virtual display. - * - * @generated from field: bool browser_window_detected = 4; - */ - browserWindowDetected: boolean; -}; - -/** - * Describes the message session.v1.VNCState. - * Use `create(VNCStateSchema)` to create a new message. - */ -export const VNCStateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 3); - -/** - * CDPState holds the Chrome DevTools Protocol streaming state for a session. - * - * @generated from message session.v1.CDPState - */ -export type CDPState = Message<"session.v1.CDPState"> & { - /** - * Current operational status. - * - * @generated from field: session.v1.CDPStatus status = 1; - */ - status: CDPStatus; -}; - -/** - * Describes the message session.v1.CDPState. - * Use `create(CDPStateSchema)` to create a new message. - */ -export const CDPStateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 4); - -/** - * ExternalInstanceMetadata contains metadata for externally discovered sessions. - * - * @generated from message session.v1.ExternalInstanceMetadata - */ -export type ExternalInstanceMetadata = Message<"session.v1.ExternalInstanceMetadata"> & { - /** - * Tmux server socket (empty = default tmux server) - * - * @generated from field: string tmux_socket = 1; - */ - tmuxSocket: string; - - /** - * Full tmux session name - * - * @generated from field: string tmux_session_name = 2; - */ - tmuxSessionName: string; - - /** - * When this instance was first discovered - * - * @generated from field: google.protobuf.Timestamp discovered_at = 3; - */ - discoveredAt?: Timestamp; - - /** - * When this instance was last seen during discovery - * - * @generated from field: google.protobuf.Timestamp last_seen = 4; - */ - lastSeen?: Timestamp; - - /** - * Original process ID when first discovered - * - * @generated from field: int32 original_pid = 5; - */ - originalPid: number; - - /** - * Path to ssq-mux Unix domain socket (if mux-enabled) - * - * @generated from field: string mux_socket_path = 6; - */ - muxSocketPath: string; - - /** - * Whether this instance supports mux protocol for bidirectional terminal access - * - * @generated from field: bool mux_enabled = 7; - */ - muxEnabled: boolean; - - /** - * Source terminal that spawned this Claude session (e.g., "IntelliJ", "VSCode", "Terminal") - * - * @generated from field: string source_terminal = 8; - */ - sourceTerminal: string; -}; - -/** - * Describes the message session.v1.ExternalInstanceMetadata. - * Use `create(ExternalInstanceMetadataSchema)` to create a new message. - */ -export const ExternalInstanceMetadataSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 5); - -/** - * DiffStats contains git diff statistics for a session. - * Maps to git.DiffStats in Go. - * - * @generated from message session.v1.DiffStats - */ -export type DiffStats = Message<"session.v1.DiffStats"> & { - /** - * Number of lines added. - * - * @generated from field: int32 added = 1; - */ - added: number; - - /** - * Number of lines removed. - * - * @generated from field: int32 removed = 2; - */ - removed: number; - - /** - * Full unified diff content. - * - * @generated from field: string content = 3; - */ - content: string; -}; - -/** - * Describes the message session.v1.DiffStats. - * Use `create(DiffStatsSchema)` to create a new message. - */ -export const DiffStatsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 6); - -/** - * GitWorktree contains git worktree information for a session. - * Maps to git.GitWorktree in Go. - * - * @generated from message session.v1.GitWorktree - */ -export type GitWorktree = Message<"session.v1.GitWorktree"> & { - /** - * Path to original repository. - * - * @generated from field: string repo_path = 1; - */ - repoPath: string; - - /** - * Path to worktree directory. - * - * @generated from field: string worktree_path = 2; - */ - worktreePath: string; - - /** - * Session name associated with worktree. - * - * @generated from field: string session_name = 3; - */ - sessionName: string; - - /** - * Branch name in worktree. - * - * @generated from field: string branch_name = 4; - */ - branchName: string; - - /** - * Base commit SHA when worktree was created. - * - * @generated from field: string base_commit_sha = 5; - */ - baseCommitSha: string; -}; - -/** - * Describes the message session.v1.GitWorktree. - * Use `create(GitWorktreeSchema)` to create a new message. - */ -export const GitWorktreeSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 7); - -/** - * ClaudeSession contains Claude Code session persistence information. - * Allows resuming/reattaching to existing Claude Code sessions. - * - * @generated from message session.v1.ClaudeSession - */ -export type ClaudeSession = Message<"session.v1.ClaudeSession"> & { - /** - * Claude Code session identifier. - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Conversation thread ID. - * - * @generated from field: string conversation_id = 2; - */ - conversationId: string; - - /** - * Project name in Claude Code. - * - * @generated from field: string project_name = 3; - */ - projectName: string; - - /** - * Last time session was attached/used. - * - * @generated from field: google.protobuf.Timestamp last_attached = 4; - */ - lastAttached?: Timestamp; - - /** - * User preferences for Claude Code integration. - * - * @generated from field: session.v1.ClaudeSettings settings = 5; - */ - settings?: ClaudeSettings; - - /** - * Additional session metadata. - * - * @generated from field: map metadata = 6; - */ - metadata: { [key: string]: string }; -}; - -/** - * Describes the message session.v1.ClaudeSession. - * Use `create(ClaudeSessionSchema)` to create a new message. - */ -export const ClaudeSessionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 8); - -/** - * ClaudeSettings contains user preferences for Claude Code integration. - * - * @generated from message session.v1.ClaudeSettings - */ -export type ClaudeSettings = Message<"session.v1.ClaudeSettings"> & { - /** - * Automatically reattach to last session on resume. - * - * @generated from field: bool auto_reattach = 1; - */ - autoReattach: boolean; - - /** - * Preferred session naming pattern. - * - * @generated from field: string preferred_session_name = 2; - */ - preferredSessionName: string; - - /** - * Create new session if previous one is missing. - * - * @generated from field: bool create_new_on_missing = 3; - */ - createNewOnMissing: boolean; - - /** - * Show session selection menu on resume. - * - * @generated from field: bool show_session_selector = 4; - */ - showSessionSelector: boolean; - - /** - * Consider sessions stale after this time (minutes). - * - * @generated from field: int32 session_timeout_minutes = 5; - */ - sessionTimeoutMinutes: number; -}; - -/** - * Describes the message session.v1.ClaudeSettings. - * Use `create(ClaudeSettingsSchema)` to create a new message. - */ -export const ClaudeSettingsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 9); - -/** - * ReviewItem represents a session that needs user attention. - * Maps to session.ReviewItem in Go. - * - * @generated from message session.v1.ReviewItem - */ -export type ReviewItem = Message<"session.v1.ReviewItem"> & { - /** - * Unique session identifier (uses session title). - * - * @generated from field: string session_id = 1; - */ - sessionId: string; - - /** - * Human-readable session name. - * - * @generated from field: string session_name = 2; - */ - sessionName: string; - - /** - * Reason why session needs attention. - * - * @generated from field: session.v1.AttentionReason reason = 3; - */ - reason: AttentionReason; - - /** - * Priority level for ordering in queue. - * - * @generated from field: session.v1.Priority priority = 4; - */ - priority: Priority; - - /** - * When this item was detected as needing attention. - * - * @generated from field: google.protobuf.Timestamp detected_at = 5; - */ - detectedAt?: Timestamp; - - /** - * Additional context about why attention is needed. - * - * @generated from field: string context = 6; - */ - context: string; - - /** - * Name of detection pattern that triggered this item. - * - * @generated from field: string pattern_name = 7; - */ - patternName: string; - - /** - * Additional metadata key-value pairs. - * - * @generated from field: map metadata = 8; - */ - metadata: { [key: string]: string }; - - /** - * Session details for rich display (matching Session message fields) - * Program running in session (e.g., "claude", "aider"). - * - * @generated from field: string program = 9; - */ - program: string; - - /** - * Git branch name for this session. - * - * @generated from field: string branch = 10; - */ - branch: string; - - /** - * Path to workspace repository root. - * - * @generated from field: string path = 11; - */ - path: string; - - /** - * Directory within repository to start in. - * - * @generated from field: string working_dir = 12; - */ - workingDir: string; - - /** - * Current session status. - * - * @generated from field: session.v1.SessionStatus status = 13; - */ - status: SessionStatus; - - /** - * Tags for flexible multi-dimensional organization. - * - * @generated from field: repeated string tags = 14; - */ - tags: string[]; - - /** - * Category for organization. - * - * @generated from field: string category = 15; - */ - category: string; - - /** - * Git diff statistics. - * - * @generated from field: session.v1.DiffStats diff_stats = 16; - */ - diffStats?: DiffStats; - - /** - * Last time meaningful terminal output was received (excluding tmux banners). - * This is the actual last activity time, used for sorting and display. - * Used instead of detected_at for showing when the session was last active. - * - * @generated from field: google.protobuf.Timestamp last_activity = 17; - */ - lastActivity?: Timestamp; - - /** - * GitHub PR URL for the session (empty if no PR exists yet). - * - * @generated from field: string github_pr_url = 18; - */ - githubPrUrl: string; - - /** - * True if the session's branch has diverged from the base branch (main/master). - * Populated by RunOneShot pre-check; shows warning badge in review queue UI. - * - * @generated from field: bool branch_diverged_from_base = 19; - */ - branchDivergedFromBase: boolean; - - /** - * Deprecated: derived client-side via deriveWorkingState(). - * Active-work state for review queue filtering. Populated from IdleDetector state. - * - * @generated from field: session.v1.WorkingState working_state = 20; - */ - workingState: WorkingState; - - /** - * Fine-grained activity state derived from ClaudeStatus at the time the item - * was enqueued. Used by the frontend deriveWorkingState() utility to compute - * the effective WorkingState without relying on the deprecated working_state field. - * - * @generated from field: session.v1.SubStatus sub_status = 21; - */ - subStatus: SubStatus; -}; - -/** - * Describes the message session.v1.ReviewItem. - * Use `create(ReviewItemSchema)` to create a new message. - */ -export const ReviewItemSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 10); - -/** - * PRInfo contains metadata about a GitHub pull request. - * Used when creating sessions from PR URLs to provide rich context. - * - * @generated from message session.v1.PRInfo - */ -export type PRInfo = Message<"session.v1.PRInfo"> & { - /** - * Pull request number. - * - * @generated from field: int32 number = 1; - */ - number: number; - - /** - * PR title. - * - * @generated from field: string title = 2; - */ - title: string; - - /** - * PR description/body. - * - * @generated from field: string body = 3; - */ - body: string; - - /** - * Head branch reference (source branch). - * - * @generated from field: string head_ref = 4; - */ - headRef: string; - - /** - * Base branch reference (target branch). - * - * @generated from field: string base_ref = 5; - */ - baseRef: string; - - /** - * Current PR state (open, closed, merged). - * - * @generated from field: string state = 6; - */ - state: string; - - /** - * PR author username. - * - * @generated from field: string author = 7; - */ - author: string; - - /** - * Labels applied to PR. - * - * @generated from field: repeated string labels = 8; - */ - labels: string[]; - - /** - * HTML URL to view PR on GitHub. - * - * @generated from field: string html_url = 9; - */ - htmlUrl: string; - - /** - * Whether PR is marked as draft. - * - * @generated from field: bool is_draft = 10; - */ - isDraft: boolean; - - /** - * Mergeable status (mergeable, conflicting, unknown). - * - * @generated from field: string mergeable = 11; - */ - mergeable: string; - - /** - * Number of lines added. - * - * @generated from field: int32 additions = 12; - */ - additions: number; - - /** - * Number of lines deleted. - * - * @generated from field: int32 deletions = 13; - */ - deletions: number; - - /** - * Number of files changed. - * - * @generated from field: int32 changed_files = 14; - */ - changedFiles: number; - - /** - * PR creation timestamp. - * - * @generated from field: google.protobuf.Timestamp created_at = 15; - */ - createdAt?: Timestamp; - - /** - * PR last updated timestamp. - * - * @generated from field: google.protobuf.Timestamp updated_at = 16; - */ - updatedAt?: Timestamp; -}; - -/** - * Describes the message session.v1.PRInfo. - * Use `create(PRInfoSchema)` to create a new message. - */ -export const PRInfoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 11); - -/** - * PRComment represents a comment on a GitHub pull request. - * - * @generated from message session.v1.PRComment - */ -export type PRComment = Message<"session.v1.PRComment"> & { - /** - * Comment ID. - * - * @generated from field: int32 id = 1; - */ - id: number; - - /** - * Comment author username. - * - * @generated from field: string author = 2; - */ - author: string; - - /** - * Comment body text. - * - * @generated from field: string body = 3; - */ - body: string; - - /** - * Comment creation timestamp. - * - * @generated from field: google.protobuf.Timestamp created_at = 4; - */ - createdAt?: Timestamp; - - /** - * File path (for review comments only). - * - * @generated from field: optional string path = 5; - */ - path?: string; - - /** - * Line number (for review comments only). - * - * @generated from field: optional int32 line = 6; - */ - line?: number; - - /** - * Whether this is a review comment (vs general comment). - * - * @generated from field: bool is_review = 7; - */ - isReview: boolean; -}; - -/** - * Describes the message session.v1.PRComment. - * Use `create(PRCommentSchema)` to create a new message. - */ -export const PRCommentSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 12); - -/** - * ReviewQueue contains statistics and items needing attention. - * - * @generated from message session.v1.ReviewQueue - */ -export type ReviewQueue = Message<"session.v1.ReviewQueue"> & { - /** - * Total number of items in queue. - * - * @generated from field: int32 total_items = 1; - */ - totalItems: number; - - /** - * Items organized by priority (sorted highest to lowest). - * - * @generated from field: repeated session.v1.ReviewItem items = 2; - */ - items: ReviewItem[]; - - /** - * Statistics by priority level. - * - * @generated from field: map by_priority = 3; - */ - byPriority: { [key: number]: number }; - - /** - * Statistics by attention reason. - * - * @generated from field: map by_reason = 4; - */ - byReason: { [key: number]: number }; - - /** - * Average age of items in queue (seconds). - * - * @generated from field: int64 average_age_seconds = 5; - */ - averageAgeSeconds: bigint; - - /** - * Oldest item session ID. - * - * @generated from field: string oldest_item_id = 6; - */ - oldestItemId: string; - - /** - * Age of oldest item (seconds). - * - * @generated from field: int64 oldest_age_seconds = 7; - */ - oldestAgeSeconds: bigint; -}; - -/** - * Describes the message session.v1.ReviewQueue. - * Use `create(ReviewQueueSchema)` to create a new message. - */ -export const ReviewQueueSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 13); - -/** - * Notification represents a notification sent from a tmux session to the server. - * - * @generated from message session.v1.Notification - */ -export type Notification = Message<"session.v1.Notification"> & { - /** - * Unique notification identifier (server-generated) - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Session identifier that sent the notification - * - * @generated from field: string session_id = 2; - */ - sessionId: string; - - /** - * Session name for display - * - * @generated from field: string session_name = 3; - */ - sessionName: string; - - /** - * Type of notification - * - * @generated from field: session.v1.NotificationType notification_type = 4; - */ - notificationType: NotificationType; - - /** - * Priority level (determines UI treatment) - * - * @generated from field: session.v1.NotificationPriority priority = 5; - */ - priority: NotificationPriority; - - /** - * Human-readable title - * - * @generated from field: string title = 6; - */ - title: string; - - /** - * Detailed message - * - * @generated from field: string message = 7; - */ - message: string; - - /** - * When the notification was created - * - * @generated from field: google.protobuf.Timestamp timestamp = 8; - */ - timestamp?: Timestamp; - - /** - * Optional metadata (key-value pairs for additional context) - * - * @generated from field: map metadata = 9; - */ - metadata: { [key: string]: string }; -}; - -/** - * Describes the message session.v1.Notification. - * Use `create(NotificationSchema)` to create a new message. - */ -export const NotificationSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 14); - -/** - * FileChange represents a changed file in the working directory - * - * @generated from message session.v1.FileChange - */ -export type FileChange = Message<"session.v1.FileChange"> & { - /** - * File path relative to repository root - * - * @generated from field: string path = 1; - */ - path: string; - - /** - * Type of change - * - * @generated from field: session.v1.FileStatus status = 2; - */ - status: FileStatus; - - /** - * Whether the change is staged for commit - * - * @generated from field: bool is_staged = 3; - */ - isStaged: boolean; - - /** - * Original path for renames/copies - * - * @generated from field: string old_path = 4; - */ - oldPath: string; - - /** - * Lines added, from `git diff --numstat` (0 for untracked/binary files) - * - * @generated from field: int32 additions = 5; - */ - additions: number; - - /** - * Lines removed, from `git diff --numstat` (0 for untracked/binary files) - * - * @generated from field: int32 deletions = 6; - */ - deletions: number; -}; - -/** - * Describes the message session.v1.FileChange. - * Use `create(FileChangeSchema)` to create a new message. - */ -export const FileChangeSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 15); - -/** - * VCSStatus represents the current status of the version control system - * - * @generated from message session.v1.VCSStatus - */ -export type VCSStatus = Message<"session.v1.VCSStatus"> & { - /** - * VCS type (git, jujutsu) - * - * @generated from field: session.v1.VCSType type = 1; - */ - type: VCSType; - - /** - * Current branch name (Git) or bookmark (Jujutsu) - * - * @generated from field: string branch = 2; - */ - branch: string; - - /** - * Short SHA (Git) or change ID (Jujutsu) - * - * @generated from field: string head_commit = 3; - */ - headCommit: string; - - /** - * Commit message or change description - * - * @generated from field: string description = 4; - */ - description: string; - - /** - * Commits ahead of upstream - * - * @generated from field: int32 ahead_by = 5; - */ - aheadBy: number; - - /** - * Commits behind upstream - * - * @generated from field: int32 behind_by = 6; - */ - behindBy: number; - - /** - * Name of upstream branch/remote - * - * @generated from field: string upstream = 7; - */ - upstream: string; - - /** - * Has staged changes - * - * @generated from field: bool has_staged = 8; - */ - hasStaged: boolean; - - /** - * Has unstaged changes - * - * @generated from field: bool has_unstaged = 9; - */ - hasUnstaged: boolean; - - /** - * Has untracked files - * - * @generated from field: bool has_untracked = 10; - */ - hasUntracked: boolean; - - /** - * Has merge/rebase conflicts - * - * @generated from field: bool has_conflicts = 11; - */ - hasConflicts: boolean; - - /** - * Working directory is clean - * - * @generated from field: bool is_clean = 12; - */ - isClean: boolean; - - /** - * Staged files list - * - * @generated from field: repeated session.v1.FileChange staged_files = 13; - */ - stagedFiles: FileChange[]; - - /** - * Unstaged files list - * - * @generated from field: repeated session.v1.FileChange unstaged_files = 14; - */ - unstagedFiles: FileChange[]; - - /** - * Untracked files list - * - * @generated from field: repeated session.v1.FileChange untracked_files = 15; - */ - untrackedFiles: FileChange[]; - - /** - * Conflict files list - * - * @generated from field: repeated session.v1.FileChange conflict_files = 16; - */ - conflictFiles: FileChange[]; -}; - -/** - * Describes the message session.v1.VCSStatus. - * Use `create(VCSStatusSchema)` to create a new message. - */ -export const VCSStatusSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 16); - -/** - * BookmarkTarget represents a bookmark/branch as a switch target - * - * @generated from message session.v1.BookmarkTarget - */ -export type BookmarkTarget = Message<"session.v1.BookmarkTarget"> & { - /** - * Bookmark/branch name - * - * @generated from field: string name = 1; - */ - name: string; - - /** - * Revision ID this bookmark points to - * - * @generated from field: string revision_id = 2; - */ - revisionId: string; - - /** - * Whether this is a remote tracking bookmark - * - * @generated from field: bool is_remote = 3; - */ - isRemote: boolean; - - /** - * Upstream branch (if any) - * - * @generated from field: string upstream = 4; - */ - upstream: string; -}; - -/** - * Describes the message session.v1.BookmarkTarget. - * Use `create(BookmarkTargetSchema)` to create a new message. - */ -export const BookmarkTargetSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 17); - -/** - * RevisionTarget represents a revision as a switch target - * - * @generated from message session.v1.RevisionTarget - */ -export type RevisionTarget = Message<"session.v1.RevisionTarget"> & { - /** - * Full revision ID (commit SHA or change ID) - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Short ID for display - * - * @generated from field: string short_id = 2; - */ - shortId: string; - - /** - * Commit/change description - * - * @generated from field: string description = 3; - */ - description: string; - - /** - * Author name - * - * @generated from field: string author = 4; - */ - author: string; - - /** - * Timestamp - * - * @generated from field: google.protobuf.Timestamp timestamp = 5; - */ - timestamp?: Timestamp; - - /** - * Whether this is the current revision - * - * @generated from field: bool is_current = 6; - */ - isCurrent: boolean; - - /** - * Bookmarks pointing to this revision - * - * @generated from field: repeated string bookmarks = 7; - */ - bookmarks: string[]; -}; - -/** - * Describes the message session.v1.RevisionTarget. - * Use `create(RevisionTargetSchema)` to create a new message. - */ -export const RevisionTargetSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 18); - -/** - * WorktreeTarget represents a worktree as a switch target - * - * @generated from message session.v1.WorktreeTarget - */ -export type WorktreeTarget = Message<"session.v1.WorktreeTarget"> & { - /** - * Worktree name (JJ workspace name) - * - * @generated from field: string name = 1; - */ - name: string; - - /** - * Filesystem path to the worktree - * - * @generated from field: string path = 2; - */ - path: string; - - /** - * Associated bookmark/branch - * - * @generated from field: string bookmark = 3; - */ - bookmark: string; - - /** - * Current revision ID in this worktree - * - * @generated from field: string revision_id = 4; - */ - revisionId: string; - - /** - * Whether this is the current worktree - * - * @generated from field: bool is_current = 5; - */ - isCurrent: boolean; -}; - -/** - * Describes the message session.v1.WorktreeTarget. - * Use `create(WorktreeTargetSchema)` to create a new message. - */ -export const WorktreeTargetSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 19); - -/** - * AvailableWorkspaceTargets contains all available workspace switch targets - * - * @generated from message session.v1.AvailableWorkspaceTargets - */ -export type AvailableWorkspaceTargets = Message<"session.v1.AvailableWorkspaceTargets"> & { - /** - * VCS type (git, jujutsu) - * - * @generated from field: session.v1.VCSType vcs_type = 1; - */ - vcsType: VCSType; - - /** - * Available bookmarks/branches - * - * @generated from field: repeated session.v1.BookmarkTarget bookmarks = 2; - */ - bookmarks: BookmarkTarget[]; - - /** - * Recent revisions - * - * @generated from field: repeated session.v1.RevisionTarget recent_revisions = 3; - */ - recentRevisions: RevisionTarget[]; - - /** - * Available worktrees - * - * @generated from field: repeated session.v1.WorktreeTarget worktrees = 4; - */ - worktrees: WorktreeTarget[]; -}; - -/** - * Describes the message session.v1.AvailableWorkspaceTargets. - * Use `create(AvailableWorkspaceTargetsSchema)` to create a new message. - */ -export const AvailableWorkspaceTargetsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 20); - -/** - * VCSInfo contains version control information for a session - * - * @generated from message session.v1.VCSInfo - */ -export type VCSInfo = Message<"session.v1.VCSInfo"> & { - /** - * VCS type (git, jujutsu) - * - * @generated from field: session.v1.VCSType vcs_type = 1; - */ - vcsType: VCSType; - - /** - * Whether JJ is available - * - * @generated from field: bool has_jj = 2; - */ - hasJj: boolean; - - /** - * Whether Git is available - * - * @generated from field: bool has_git = 3; - */ - hasGit: boolean; - - /** - * Whether this is a JJ+Git colocated repo - * - * @generated from field: bool is_colocated = 4; - */ - isColocated: boolean; - - /** - * Repository root path - * - * @generated from field: string repo_path = 5; - */ - repoPath: string; - - /** - * Current bookmark/branch name - * - * @generated from field: string current_bookmark = 6; - */ - currentBookmark: string; - - /** - * Current revision (short ID) - * - * @generated from field: string current_revision = 7; - */ - currentRevision: string; - - /** - * Whether there are uncommitted changes - * - * @generated from field: bool has_uncommitted_changes = 8; - */ - hasUncommittedChanges: boolean; - - /** - * Count of modified/added/deleted files - * - * @generated from field: int32 modified_file_count = 9; - */ - modifiedFileCount: number; -}; - -/** - * Describes the message session.v1.VCSInfo. - * Use `create(VCSInfoSchema)` to create a new message. - */ -export const VCSInfoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 21); - -/** - * PendingApprovalProto represents a Claude Code tool use request awaiting user decision. - * Created when Claude Code fires a PermissionRequest HTTP hook to claude-squad. - * - * @generated from message session.v1.PendingApprovalProto - */ -export type PendingApprovalProto = Message<"session.v1.PendingApprovalProto"> & { - /** - * Unique approval identifier (UUID). - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * claude-squad session this approval belongs to (may be "unknown" for unmapped sessions). - * - * @generated from field: string session_id = 2; - */ - sessionId: string; - - /** - * Claude Code tool name (e.g., "Bash", "Edit", "Write"). - * - * @generated from field: string tool_name = 3; - */ - toolName: string; - - /** - * Tool input key-value pairs (e.g., {"command": "npm test"}). - * - * @generated from field: map tool_input = 4; - */ - toolInput: { [key: string]: string }; - - /** - * Working directory where Claude Code is running. - * - * @generated from field: string cwd = 5; - */ - cwd: string; - - /** - * Claude Code's permission mode (e.g., "default", "auto"). - * - * @generated from field: string permission_mode = 6; - */ - permissionMode: string; - - /** - * When this approval was created. - * - * @generated from field: google.protobuf.Timestamp created_at = 7; - */ - createdAt?: Timestamp; - - /** - * When this approval expires (server-side cutoff before hook timeout). - * - * @generated from field: google.protobuf.Timestamp expires_at = 8; - */ - expiresAt?: Timestamp; - - /** - * Seconds remaining before expiry (convenience field for countdown timers). - * - * @generated from field: int32 seconds_remaining = 9; - */ - secondsRemaining: number; - - /** - * Classifier-assigned risk level ("low"/"medium"/"high"/"critical"), captured once at - * creation time. Empty for approvals that predate this field. - * - * @generated from field: string risk_level = 10; - */ - riskLevel: string; -}; - -/** - * Describes the message session.v1.PendingApprovalProto. - * Use `create(PendingApprovalProtoSchema)` to create a new message. - */ -export const PendingApprovalProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 22); - -/** - * ApprovalRuleProto represents a single auto-approval rule. - * - * @generated from message session.v1.ApprovalRuleProto - */ -export type ApprovalRuleProto = Message<"session.v1.ApprovalRuleProto"> & { - /** - * @generated from field: string id = 1; - */ - id: string; - - /** - * @generated from field: string name = 2; - */ - name: string; - - /** - * @generated from field: string tool_name = 3; - */ - toolName: string; - - /** - * @generated from field: string tool_pattern = 4; - */ - toolPattern: string; - - /** - * @generated from field: string command_pattern = 5; - */ - commandPattern: string; - - /** - * @generated from field: string file_pattern = 6; - */ - filePattern: string; - - /** - * @generated from field: session.v1.AutoDecision decision = 7; - */ - decision: AutoDecision; - - /** - * @generated from field: string risk_level = 8; - */ - riskLevel: string; - - /** - * @generated from field: string reason = 9; - */ - reason: string; - - /** - * @generated from field: string alternative = 10; - */ - alternative: string; - - /** - * @generated from field: int32 priority = 11; - */ - priority: number; - - /** - * @generated from field: bool enabled = 12; - */ - enabled: boolean; - - /** - * @generated from field: string source = 13; - */ - source: string; - - /** - * @generated from field: google.protobuf.Timestamp created_at = 14; - */ - createdAt?: Timestamp; - - /** - * Structured CommandCriteria fields (field numbers 15–19 reserved; criteria start at 20). - * When any of these are set, they are used instead of command_pattern for Bash matching. - * - * @generated from field: repeated string programs = 20; - */ - programs: string[]; - - /** - * @generated from field: repeated string subcommands = 21; - */ - subcommands: string[]; - - /** - * @generated from field: repeated string blocked_subcommands = 22; - */ - blockedSubcommands: string[]; - - /** - * @generated from field: repeated string required_flags = 23; - */ - requiredFlags: string[]; - - /** - * @generated from field: repeated string forbidden_flags = 24; - */ - forbiddenFlags: string[]; - - /** - * @generated from field: repeated string python_modes = 25; - */ - pythonModes: string[]; - - /** - * @generated from field: bool safe_python_imports_only = 26; - */ - safePythonImportsOnly: boolean; - - /** - * @generated from field: repeated string required_flag_prefixes = 27; - */ - requiredFlagPrefixes: string[]; - - /** - * tool_category matches against classifier.CategorizeToolName() result. - * Use one of: "builtin", "builtin-agent", "mcp", "mcp-read", "mcp-write". - * - * @generated from field: string tool_category = 28; - */ - toolCategory: string; - - /** - * require_ci_passing, when true, only matches when the requesting session's GitHub - * CI check conclusion is "success". Combinable (AND) with all other conditions. - * - * @generated from field: bool require_ci_passing = 29; - */ - requireCiPassing: boolean; -}; - -/** - * Describes the message session.v1.ApprovalRuleProto. - * Use `create(ApprovalRuleProtoSchema)` to create a new message. - */ -export const ApprovalRuleProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 23); - -/** - * AnalyticsSummaryProto aggregates classification decisions over a time window. - * - * @generated from message session.v1.AnalyticsSummaryProto - */ -export type AnalyticsSummaryProto = Message<"session.v1.AnalyticsSummaryProto"> & { - /** - * @generated from field: int32 total_decisions = 1; - */ - totalDecisions: number; - - /** - * @generated from field: map decision_counts = 2; - */ - decisionCounts: { [key: string]: number }; - - /** - * @generated from field: repeated session.v1.ToolStatProto top_tools = 3; - */ - topTools: ToolStatProto[]; - - /** - * @generated from field: repeated session.v1.CommandStatProto top_denied_commands = 4; - */ - topDeniedCommands: CommandStatProto[]; - - /** - * @generated from field: repeated session.v1.RuleStatProto top_triggered_rules = 5; - */ - topTriggeredRules: RuleStatProto[]; - - /** - * @generated from field: double auto_approve_rate = 6; - */ - autoApproveRate: number; - - /** - * @generated from field: double manual_review_rate = 7; - */ - manualReviewRate: number; - - /** - * @generated from field: google.protobuf.Timestamp window_start = 8; - */ - windowStart?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp window_end = 9; - */ - windowEnd?: Timestamp; - - /** - * Top programs invoked via the Bash tool (AST-derived categorization). - * - * @generated from field: repeated session.v1.ProgramStatProto top_command_programs = 10; - */ - topCommandPrograms: ProgramStatProto[]; - - /** - * Top Python modules imported in inline (-c) Python invocations. - * - * @generated from field: repeated session.v1.ImportStatProto top_python_imports = 11; - */ - topPythonImports: ImportStatProto[]; - - /** - * Coverage gap: decisions that escaped all rules (escalated with no rule match). - * These are prime candidates for new rules to reduce manual review. - * - * @generated from field: int32 coverage_gap_count = 12; - */ - coverageGapCount: number; - - /** - * coverage_gap_rate is the percentage (0–100) of decisions with no matching rule. - * - * @generated from field: double coverage_gap_rate = 13; - */ - coverageGapRate: number; - - /** - * Top tools that most frequently escape rule coverage. - * - * @generated from field: repeated session.v1.ToolStatProto top_uncovered_tools = 14; - */ - topUncoveredTools: ToolStatProto[]; - - /** - * Top Bash programs that most frequently escape rule coverage. - * - * @generated from field: repeated session.v1.ProgramStatProto top_uncovered_programs = 15; - */ - topUncoveredPrograms: ProgramStatProto[]; - - /** - * Full (program, subcommand) distribution for drill-down analysis. - * Not truncated to top-N — use to investigate specific programs like "gh" or "sed". - * - * @generated from field: repeated session.v1.SubcommandStatProto command_subcommand_stats = 16; - */ - commandSubcommandStats: SubcommandStatProto[]; - - /** - * Escalation-reason breakdown: counts per category ("no-match", "explicit-rule", - * "domain-age", "secret-scan", "unclassifiable") — see classifier.EscalationCategory. - * - * @generated from field: map escalation_reason_counts = 17; - */ - escalationReasonCounts: { [key: string]: number }; - - /** - * Risk-level breakdown: counts per classifier.RiskLevel string ("low"/"medium"/"high"/ - * "critical"), scoped to escalated decisions only (matching escalation_reason_counts' - * scope) so both tables share the same denominator. - * - * @generated from field: map risk_level_counts = 18; - */ - riskLevelCounts: { [key: string]: number }; -}; - -/** - * Describes the message session.v1.AnalyticsSummaryProto. - * Use `create(AnalyticsSummaryProtoSchema)` to create a new message. - */ -export const AnalyticsSummaryProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 24); - -/** - * @generated from message session.v1.ToolStatProto - */ -export type ToolStatProto = Message<"session.v1.ToolStatProto"> & { - /** - * @generated from field: string tool_name = 1; - */ - toolName: string; - - /** - * @generated from field: int32 count = 2; - */ - count: number; - - /** - * manual_allow / manual_deny break down how past manual reviews resolved for this tool. - * - * @generated from field: int32 manual_allow = 3; - */ - manualAllow: number; - - /** - * @generated from field: int32 manual_deny = 4; - */ - manualDeny: number; -}; - -/** - * Describes the message session.v1.ToolStatProto. - * Use `create(ToolStatProtoSchema)` to create a new message. - */ -export const ToolStatProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 25); - -/** - * @generated from message session.v1.CommandStatProto - */ -export type CommandStatProto = Message<"session.v1.CommandStatProto"> & { - /** - * @generated from field: string preview = 1; - */ - preview: string; - - /** - * @generated from field: string tool_name = 2; - */ - toolName: string; - - /** - * @generated from field: int32 count = 3; - */ - count: number; -}; - -/** - * Describes the message session.v1.CommandStatProto. - * Use `create(CommandStatProtoSchema)` to create a new message. - */ -export const CommandStatProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 26); - -/** - * @generated from message session.v1.RuleStatProto - */ -export type RuleStatProto = Message<"session.v1.RuleStatProto"> & { - /** - * @generated from field: string rule_id = 1; - */ - ruleId: string; - - /** - * @generated from field: string rule_name = 2; - */ - ruleName: string; - - /** - * @generated from field: int32 count = 3; - */ - count: number; -}; - -/** - * Describes the message session.v1.RuleStatProto. - * Use `create(RuleStatProtoSchema)` to create a new message. - */ -export const RuleStatProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 27); - -/** - * ProgramStatProto represents a program invoked via the Bash tool with its usage count. - * - * @generated from message session.v1.ProgramStatProto - */ -export type ProgramStatProto = Message<"session.v1.ProgramStatProto"> & { - /** - * program_name is the executable name (e.g., "git", "npm", "python3"). - * - * @generated from field: string program_name = 1; - */ - programName: string; - - /** - * category groups the program (e.g., "vcs", "node", "python"). - * - * @generated from field: string category = 2; - */ - category: string; - - /** - * @generated from field: int32 count = 3; - */ - count: number; - - /** - * manual_allow / manual_deny break down how past manual reviews resolved for this program. - * - * @generated from field: int32 manual_allow = 4; - */ - manualAllow: number; - - /** - * @generated from field: int32 manual_deny = 5; - */ - manualDeny: number; -}; - -/** - * Describes the message session.v1.ProgramStatProto. - * Use `create(ProgramStatProtoSchema)` to create a new message. - */ -export const ProgramStatProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 28); - -/** - * ImportStatProto represents a Python module imported in an inline invocation. - * - * @generated from message session.v1.ImportStatProto - */ -export type ImportStatProto = Message<"session.v1.ImportStatProto"> & { - /** - * module is the top-level package name (e.g., "os", "requests", "numpy"). - * - * @generated from field: string module = 1; - */ - module: string; - - /** - * @generated from field: int32 count = 2; - */ - count: number; -}; - -/** - * Describes the message session.v1.ImportStatProto. - * Use `create(ImportStatProtoSchema)` to create a new message. - */ -export const ImportStatProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 29); - -/** - * SubcommandStatProto represents a (program, subcommand) pair with its usage count. - * subcommand may contain a space for two-level CLIs (e.g., "pr create" for gh). - * - * @generated from message session.v1.SubcommandStatProto - */ -export type SubcommandStatProto = Message<"session.v1.SubcommandStatProto"> & { - /** - * @generated from field: string program_name = 1; - */ - programName: string; - - /** - * @generated from field: string subcommand = 2; - */ - subcommand: string; - - /** - * @generated from field: string category = 3; - */ - category: string; - - /** - * @generated from field: int32 count = 4; - */ - count: number; - - /** - * manual_allow / manual_deny break down how past manual reviews resolved for this pair. - * - * @generated from field: int32 manual_allow = 5; - */ - manualAllow: number; - - /** - * @generated from field: int32 manual_deny = 6; - */ - manualDeny: number; -}; - -/** - * Describes the message session.v1.SubcommandStatProto. - * Use `create(SubcommandStatProtoSchema)` to create a new message. - */ -export const SubcommandStatProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 30); - -/** - * DailyBucketProto aggregates classification decisions for a single calendar day. - * - * @generated from message session.v1.DailyBucketProto - */ -export type DailyBucketProto = Message<"session.v1.DailyBucketProto"> & { - /** - * Calendar date in "YYYY-MM-DD" format (local time). - * - * @generated from field: string date = 1; - */ - date: string; - - /** - * @generated from field: int32 auto_allow = 2; - */ - autoAllow: number; - - /** - * @generated from field: int32 auto_deny = 3; - */ - autoDeny: number; - - /** - * @generated from field: int32 escalate = 4; - */ - escalate: number; - - /** - * @generated from field: int32 manual_allow = 5; - */ - manualAllow: number; - - /** - * @generated from field: int32 manual_deny = 6; - */ - manualDeny: number; - - /** - * @generated from field: int32 total = 7; - */ - total: number; -}; - -/** - * Describes the message session.v1.DailyBucketProto. - * Use `create(DailyBucketProtoSchema)` to create a new message. - */ -export const DailyBucketProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 31); - -/** - * SubcommandBreakdownProto is a per-subcommand decision breakdown for the drill-down panel. - * - * @generated from message session.v1.SubcommandBreakdownProto - */ -export type SubcommandBreakdownProto = Message<"session.v1.SubcommandBreakdownProto"> & { - /** - * subcommand is the first positional argument (e.g., "commit", "push"). - * Empty string means no subcommand was detected. - * - * @generated from field: string subcommand = 1; - */ - subcommand: string; - - /** - * total is the total call count for this subcommand in the window. - * - * @generated from field: int32 total = 2; - */ - total: number; - - /** - * Per-decision counts. - * - * @generated from field: int32 auto_allow = 3; - */ - autoAllow: number; - - /** - * @generated from field: int32 auto_deny = 4; - */ - autoDeny: number; - - /** - * @generated from field: int32 escalate = 5; - */ - escalate: number; - - /** - * @generated from field: int32 manual_allow = 6; - */ - manualAllow: number; - - /** - * @generated from field: int32 manual_deny = 7; - */ - manualDeny: number; - - /** - * has_rule_coverage is true if any existing rule covers this (program, subcommand) pair. - * - * @generated from field: bool has_rule_coverage = 8; - */ - hasRuleCoverage: boolean; - - /** - * suggested_rule_hint is an optional pre-fill pattern hint for the rule form. - * Format: the subcommand string itself (e.g., "push") — the UI appends context. - * - * @generated from field: string suggested_rule_hint = 9; - */ - suggestedRuleHint: string; -}; - -/** - * Describes the message session.v1.SubcommandBreakdownProto. - * Use `create(SubcommandBreakdownProtoSchema)` to create a new message. - */ -export const SubcommandBreakdownProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 32); - -/** - * DatabaseInfo contains display information about a workspace database. - * Used by the workspace switcher UI in the header. - * - * @generated from message session.v1.DatabaseInfo - */ -export type DatabaseInfo = Message<"session.v1.DatabaseInfo"> & { - /** - * Short directory name (hash for workspace-based, instance name for named instances). - * - * @generated from field: string workspace_id = 1; - */ - workspaceId: string; - - /** - * Type of workspace: "workspace", "instance", or "shared". - * - * @generated from field: string type = 2; - */ - type: string; - - /** - * Working directory where the server was started (empty for shared/instance). - * - * @generated from field: string cwd = 3; - */ - cwd: string; - - /** - * Human-readable name: last path component of cwd, or "Default" for shared. - * - * @generated from field: string name = 4; - */ - name: string; - - /** - * Absolute path to this workspace's config/data directory. - * - * @generated from field: string config_dir = 5; - */ - configDir: string; - - /** - * Number of sessions stored in this workspace's database. - * - * @generated from field: int32 session_count = 6; - */ - sessionCount: number; - - /** - * Whether this is the currently active workspace. - * - * @generated from field: bool is_current = 7; - */ - isCurrent: boolean; - - /** - * When this workspace was last used (last server startup in this workspace). - * - * @generated from field: google.protobuf.Timestamp last_used = 8; - */ - lastUsed?: Timestamp; -}; - -/** - * Describes the message session.v1.DatabaseInfo. - * Use `create(DatabaseInfoSchema)` to create a new message. - */ -export const DatabaseInfoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 33); - -/** - * FileNode represents a single entry (file or directory) in a session's worktree. - * - * @generated from message session.v1.FileNode - */ -export type FileNode = Message<"session.v1.FileNode"> & { - /** - * File or directory name (basename only). - * - * @generated from field: string name = 1; - */ - name: string; - - /** - * Path relative to the session worktree root. - * - * @generated from field: string path = 2; - */ - path: string; - - /** - * True if this entry is a directory. - * - * @generated from field: bool is_dir = 3; - */ - isDir: boolean; - - /** - * File size in bytes (0 for directories). - * - * @generated from field: int64 size = 4; - */ - size: bigint; - - /** - * Git status letter (M/A/D/R/?). Populated client-side; server always returns empty. - * - * @generated from field: string git_status = 5; - */ - gitStatus: string; - - /** - * True if this entry is a symbolic link. - * - * @generated from field: bool is_symlink = 6; - */ - isSymlink: boolean; - - /** - * Symlink target path (only set when is_symlink=true). - * - * @generated from field: string symlink_target = 7; - */ - symlinkTarget: string; - - /** - * True if this entry is matched by .gitignore rules. - * - * @generated from field: bool is_ignored = 8; - */ - isIgnored: boolean; -}; - -/** - * Describes the message session.v1.FileNode. - * Use `create(FileNodeSchema)` to create a new message. - */ -export const FileNodeSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 34); - -/** - * CheckpointProto represents a named bookmark of a session's state at a point in time. - * Maps to session.Checkpoint in Go. - * - * @generated from message session.v1.CheckpointProto - */ -export type CheckpointProto = Message<"session.v1.CheckpointProto"> & { - /** - * Unique checkpoint identifier (UUID). - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Session ID this checkpoint belongs to. - * - * @generated from field: string session_id = 2; - */ - sessionId: string; - - /** - * Parent checkpoint ID (for tree navigation), empty for root checkpoints. - * - * @generated from field: string parent_id = 3; - */ - parentId: string; - - /** - * Human-readable label. - * - * @generated from field: string label = 4; - */ - label: string; - - /** - * Scrollback sequence number at checkpoint time. - * - * @generated from field: uint64 scrollback_seq = 5; - */ - scrollbackSeq: bigint; - - /** - * Path to persisted scrollback snapshot (may be empty). - * - * @generated from field: string scrollback_path = 6; - */ - scrollbackPath: string; - - /** - * Claude Code conversation UUID at checkpoint time. - * - * @generated from field: string claude_conv_uuid = 7; - */ - claudeConvUuid: string; - - /** - * Git HEAD commit SHA at checkpoint time. - * - * @generated from field: string git_commit_sha = 8; - */ - gitCommitSha: string; - - /** - * When the checkpoint was created. - * - * @generated from field: google.protobuf.Timestamp timestamp = 9; - */ - timestamp?: Timestamp; -}; - -/** - * Describes the message session.v1.CheckpointProto. - * Use `create(CheckpointProtoSchema)` to create a new message. - */ -export const CheckpointProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 35); - -/** - * UnfinishedWorktree represents a single git worktree that has unfinished work. - * - * @generated from message session.v1.UnfinishedWorktree - */ -export type UnfinishedWorktree = Message<"session.v1.UnfinishedWorktree"> & { - /** - * Composite key fields - * - * Absolute path to the repo root - * - * @generated from field: string repo_path = 1; - */ - repoPath: string; - - /** - * Branch name (e.g., "feature-auth") - * - * @generated from field: string branch = 2; - */ - branch: string; - - /** - * Absolute path to the worktree directory - * - * @generated from field: string worktree_path = 3; - */ - worktreePath: string; - - /** - * Display fields - * - * Derived from remote URL basename or dir basename - * - * @generated from field: string repo_name = 4; - */ - repoName: string; - - /** - * Worktree path with ~ substitution - * - * @generated from field: string display_path = 5; - */ - displayPath: string; - - /** - * Status flags - * - * git status --porcelain non-empty - * - * @generated from field: bool has_uncommitted = 6; - */ - hasUncommitted: boolean; - - /** - * commits in HEAD not in default branch - * - * @generated from field: int32 commits_ahead = 7; - */ - commitsAhead: number; - - /** - * commits in default branch not in HEAD - * - * @generated from field: int32 commits_behind = 8; - */ - commitsBehind: number; - - /** - * resolved default branch (main/master/etc.) - * - * @generated from field: string default_branch = 9; - */ - defaultBranch: string; - - /** - * Expanded detail fields - * - * @generated from field: int32 changed_files = 10; - */ - changedFiles: number; - - /** - * @generated from field: int32 lines_added = 11; - */ - linesAdded: number; - - /** - * @generated from field: int32 lines_removed = 12; - */ - linesRemoved: number; - - /** - * Up to 5 short messages - * - * @generated from field: repeated string ahead_commit_messages = 13; - */ - aheadCommitMessages: string[]; - - /** - * Timestamps - * - * mtime of worktree dir - * - * @generated from field: google.protobuf.Timestamp last_modified = 14; - */ - lastModified?: Timestamp; - - /** - * when this result was computed - * - * @generated from field: google.protobuf.Timestamp scan_time = 15; - */ - scanTime?: Timestamp; - - /** - * Scan status - * - * @generated from field: session.v1.ScanStatus scan_status = 16; - */ - scanStatus: ScanStatus; - - /** - * human-readable error, empty on success - * - * @generated from field: string scan_error_msg = 17; - */ - scanErrorMsg: string; - - /** - * Action state - * - * @generated from field: bool is_dismissed = 18; - */ - isDismissed: boolean; - - /** - * @generated from field: bool is_snoozed = 19; - */ - isSnoozed: boolean; - - /** - * UUIDs of active sessions covering this worktree path - * - * @generated from field: repeated string session_ids = 20; - */ - sessionIds: string[]; - - /** - * GitHub PR enrichment (populated from session PR state when sessions cover this worktree). - * - * 0 when no PR found - * - * @generated from field: int32 github_pr_number = 21; - */ - githubPrNumber: number; - - /** - * @generated from field: string github_pr_url = 22; - */ - githubPrUrl: string; - - /** - * "open" / "closed" / "merged" / "" - * - * @generated from field: string github_pr_state = 23; - */ - githubPrState: string; - - /** - * from PRStatusPoller (no_pr / needs_review / approved / etc.) - * - * @generated from field: string github_pr_priority = 24; - */ - githubPrPriority: string; -}; - -/** - * Describes the message session.v1.UnfinishedWorktree. - * Use `create(UnfinishedWorktreeSchema)` to create a new message. - */ -export const UnfinishedWorktreeSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 36); - -/** - * UnfinishedWorkConfig holds user-configurable source settings. - * - * @generated from message session.v1.UnfinishedWorkConfig - */ -export type UnfinishedWorkConfig = Message<"session.v1.UnfinishedWorkConfig"> & { - /** - * default: true - * - * @generated from field: bool auto_spider_sessions = 1; - */ - autoSpiderSessions: boolean; - - /** - * @generated from field: repeated string watch_dirs = 2; - */ - watchDirs: string[]; - - /** - * @generated from field: repeated string pinned_repos = 3; - */ - pinnedRepos: string[]; -}; - -/** - * Describes the message session.v1.UnfinishedWorkConfig. - * Use `create(UnfinishedWorkConfigSchema)` to create a new message. - */ -export const UnfinishedWorkConfigSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 37); - -/** - * Shell represents a custom shell session attached to a parent session. - * Each shell runs as an independent sibling tmux session. - * - * @generated from message session.v1.Shell - */ -export type Shell = Message<"session.v1.Shell"> & { - /** - * Unique identifier (UUID). - * - * @generated from field: string id = 1; - */ - id: string; - - /** - * Human-readable name (defaults to basename of command). - * - * @generated from field: string name = 2; - */ - name: string; - - /** - * Command that was launched (e.g., "/bin/bash", "python3"). - * - * @generated from field: string command = 3; - */ - command: string; - - /** - * Working directory for the shell process. - * - * @generated from field: string working_dir = 4; - */ - workingDir: string; - - /** - * Current lifecycle status. - * - * @generated from field: session.v1.ShellStatus status = 5; - */ - status: ShellStatus; - - /** - * Exit code of the process (only meaningful when status is STOPPED or ERROR). - * - * @generated from field: int32 exit_code = 6; - */ - exitCode: number; - - /** - * Display order index (0-based). - * - * @generated from field: int32 order_index = 7; - */ - orderIndex: number; - - /** - * When the shell was started. - * - * @generated from field: google.protobuf.Timestamp started_at = 8; - */ - startedAt?: Timestamp; - - /** - * When the shell stopped (only set when status is STOPPED or ERROR). - * - * @generated from field: google.protobuf.Timestamp stopped_at = 9; - */ - stoppedAt?: Timestamp; -}; - -/** - * Describes the message session.v1.Shell. - * Use `create(ShellSchema)` to create a new message. - */ -export const ShellSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 38); - -/** - * SuggestedRuleProto carries a pre-filled rule proposal plus AI metadata. - * It mirrors ApprovalRuleProto fields 1–11 (same field numbers) so the UI - * can reuse ApprovalRuleProto rendering helpers with a simple copy. - * - * @generated from message session.v1.SuggestedRuleProto - */ -export type SuggestedRuleProto = Message<"session.v1.SuggestedRuleProto"> & { - /** - * @generated from field: string name = 1; - */ - name: string; - - /** - * @generated from field: string tool_name = 2; - */ - toolName: string; - - /** - * @generated from field: string tool_pattern = 3; - */ - toolPattern: string; - - /** - * @generated from field: string command_pattern = 4; - */ - commandPattern: string; - - /** - * @generated from field: string file_pattern = 5; - */ - filePattern: string; - - /** - * @generated from field: session.v1.AutoDecision decision = 6; - */ - decision: AutoDecision; - - /** - * @generated from field: string risk_level = 7; - */ - riskLevel: string; - - /** - * @generated from field: string reason = 8; - */ - reason: string; - - /** - * @generated from field: string alternative = 9; - */ - alternative: string; - - /** - * @generated from field: int32 priority = 10; - */ - priority: number; - - /** - * AI metadata. - * - * 0.0–1.0; agent's certainty in the pattern - * - * @generated from field: float confidence = 11; - */ - confidence: number; - - /** - * why these fields were chosen - * - * @generated from field: string explanation = 12; - */ - explanation: string; - - /** - * up to 20 commands that informed the pattern - * - * @generated from field: repeated string source_commands = 13; - */ - sourceCommands: string[]; - - /** - * Conflict detection results (computed server-side, heuristic — may overlap). - * - * IDs of higher-priority rules that may fire first - * - * @generated from field: repeated string shadowed_by_rule_ids = 14; - */ - shadowedByRuleIds: string[]; - - /** - * IDs of lower-priority rules this may suppress - * - * @generated from field: repeated string shadows_rule_ids = 15; - */ - shadowsRuleIds: string[]; -}; - -/** - * Describes the message session.v1.SuggestedRuleProto. - * Use `create(SuggestedRuleProtoSchema)` to create a new message. - */ -export const SuggestedRuleProtoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 39); - -/** - * UserPR represents an open (or recently closed) pull request authored by the - * authenticated GitHub user. Served by GitHubUserService. - * - * @generated from message session.v1.UserPR - */ -export type UserPR = Message<"session.v1.UserPR"> & { - /** - * @generated from field: string owner = 1; - */ - owner: string; - - /** - * @generated from field: string repo = 2; - */ - repo: string; - - /** - * @generated from field: int32 number = 3; - */ - number: number; - - /** - * @generated from field: string title = 4; - */ - title: string; - - /** - * @generated from field: string html_url = 5; - */ - htmlUrl: string; - - /** - * "OPEN" / "CLOSED" / "MERGED" - * - * @generated from field: string state = 6; - */ - state: string; - - /** - * @generated from field: string head_ref = 7; - */ - headRef: string; - - /** - * @generated from field: string base_ref = 8; - */ - baseRef: string; - - /** - * @generated from field: bool is_draft = 9; - */ - isDraft: boolean; - - /** - * "success" / "failure" / "pending" / "" - * - * @generated from field: string check_conclusion = 10; - */ - checkConclusion: string; - - /** - * @generated from field: int32 approved_count = 11; - */ - approvedCount: number; - - /** - * @generated from field: int32 changes_req_count = 12; - */ - changesReqCount: number; - - /** - * @generated from field: google.protobuf.Timestamp updated_at = 13; - */ - updatedAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp closed_at = 14; - */ - closedAt?: Timestamp; - - /** - * @generated from field: google.protobuf.Timestamp merged_at = 15; - */ - mergedAt?: Timestamp; - - /** - * local sessions checked out on this branch - * - * @generated from field: repeated string session_ids = 16; - */ - sessionIds: string[]; - - /** - * local worktree path, if any - * - * @generated from field: string local_worktree_path = 17; - */ - localWorktreePath: string; -}; - -/** - * Describes the message session.v1.UserPR. - * Use `create(UserPRSchema)` to create a new message. - */ -export const UserPRSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_types, 40); - -/** - * VNCStatus represents the operational state of the VNC subsystem for a session. - * - * @generated from enum session.v1.VNCStatus - */ -export enum VNCStatus { - /** - * @generated from enum value: VNC_STATUS_UNSPECIFIED = 0; - */ - VNC_STATUS_UNSPECIFIED = 0, - - /** - * Xvfb/x11vnc processes are starting. - * - * @generated from enum value: VNC_STATUS_STARTING = 1; - */ - VNC_STATUS_STARTING = 1, - - /** - * A browser window has been detected; x11vnc is in focused -id mode. - * - * @generated from enum value: VNC_STATUS_READY = 2; - */ - VNC_STATUS_READY = 2, - - /** - * VNC is running (full display mode) but no browser window detected yet. - * - * @generated from enum value: VNC_STATUS_NO_BROWSER = 3; - */ - VNC_STATUS_NO_BROWSER = 3, - - /** - * VNC is unavailable: missing binaries, unsupported platform, or startup failed. - * - * @generated from enum value: VNC_STATUS_UNAVAILABLE = 4; - */ - VNC_STATUS_UNAVAILABLE = 4, - - /** - * A pre-existing X display was detected and reused; x11vnc is not running. - * - * @generated from enum value: VNC_STATUS_PASSTHROUGH = 5; - */ - VNC_STATUS_PASSTHROUGH = 5, -} - -/** - * Describes the enum session.v1.VNCStatus. - */ -export const VNCStatusSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 0); - -/** - * CDPStatus represents the operational state of the CDP subsystem for a session. - * - * @generated from enum session.v1.CDPStatus - */ -export enum CDPStatus { - /** - * @generated from enum value: CDP_STATUS_UNSPECIFIED = 0; - */ - CDP_STATUS_UNSPECIFIED = 0, - - /** - * Polling for Chrome on the allocated CDP port. - * - * @generated from enum value: CDP_STATUS_WAITING = 1; - */ - CDP_STATUS_WAITING = 1, - - /** - * Connected to Chrome and receiving screencast frames. - * - * @generated from enum value: CDP_STATUS_STREAMING = 2; - */ - CDP_STATUS_STREAMING = 2, - - /** - * CDP port allocated but Chrome not yet detected. - * - * @generated from enum value: CDP_STATUS_NO_BROWSER = 3; - */ - CDP_STATUS_NO_BROWSER = 3, - - /** - * CDP unavailable: Chrome not found or startup failed. - * - * @generated from enum value: CDP_STATUS_UNAVAILABLE = 4; - */ - CDP_STATUS_UNAVAILABLE = 4, -} - -/** - * Describes the enum session.v1.CDPStatus. - */ -export const CDPStatusSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 1); - -/** - * SessionStatus represents the current state of a session. - * Maps to session.Status enum in Go. - * Wire values for RUNNING(1), READY(2), LOADING(3), NEEDS_APPROVAL(5), CREATING(6), STOPPED(7) - * are preserved for backward compatibility with existing clients. - * - * @generated from enum session.v1.SessionStatus - */ -export enum SessionStatus { - /** - * @generated from enum value: SESSION_STATUS_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * Session has an active AI process (replaces legacy RUNNING and READY). - * - * @generated from enum value: SESSION_STATUS_ACTIVE = 1; - */ - ACTIVE = 1, - - /** - * Deprecated: use SESSION_STATUS_ACTIVE. Integer wire value 1 preserved. - * - * @generated from enum value: SESSION_STATUS_RUNNING = 1 [deprecated = true]; - * @deprecated - */ - RUNNING = 1, - - /** - * Deprecated: use SESSION_STATUS_ACTIVE. Integer wire value 2 (legacy ready state). - * - * @generated from enum value: SESSION_STATUS_READY = 2 [deprecated = true]; - * @deprecated - */ - READY = 2, - - /** - * Deprecated: use SESSION_STATUS_CREATING. Integer wire value 3 (legacy loading state). - * - * @generated from enum value: SESSION_STATUS_LOADING = 3 [deprecated = true]; - * @deprecated - */ - LOADING = 3, - - /** - * Session is paused (worktree removed but branch preserved). - * - * @generated from enum value: SESSION_STATUS_PAUSED = 4; - */ - PAUSED = 4, - - /** - * Deprecated: NeedsApproval is now a sub-status. Integer wire value 5 preserved. - * - * @generated from enum value: SESSION_STATUS_NEEDS_APPROVAL = 5 [deprecated = true]; - * @deprecated - */ - NEEDS_APPROVAL = 5, - - /** - * Session is being initialized (transient state before first start). - * - * @generated from enum value: SESSION_STATUS_CREATING = 6; - */ - CREATING = 6, - - /** - * Session has been stopped (terminal state, cannot transition further). - * - * @generated from enum value: SESSION_STATUS_STOPPED = 7; - */ - STOPPED = 7, - - /** - * Session has been hibernated (checkpoint written, tmux session killed). - * - * @generated from enum value: SESSION_STATUS_HIBERNATED = 8; - */ - HIBERNATED = 8, - - /** - * Session is being restored from a previous run (transient startup state). - * Never persisted to the database. Transitions to ACTIVE or CREATING on completion. - * - * @generated from enum value: SESSION_STATUS_RESTORING = 9; - */ - RESTORING = 9, - - /** - * Session's tmux pane exited abnormally (non-zero exit code or signal) and was - * detected via remain-on-exit polling, distinct from a normal STOPPED - * completion. Not auto-recovered; requires an explicit resume (see - * ResumeCrashedSession). - * - * @generated from enum value: SESSION_STATUS_CRASHED = 10; - */ - CRASHED = 10, -} - -/** - * Describes the enum session.v1.SessionStatus. - */ -export const SessionStatusSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 2); - -/** - * SessionType determines the session workflow. - * - * @generated from enum session.v1.SessionType - */ -export enum SessionType { - /** - * @generated from enum value: SESSION_TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * Work in existing directory without worktree. - * - * @generated from enum value: SESSION_TYPE_DIRECTORY = 1; - */ - DIRECTORY = 1, - - /** - * Create new git worktree with new branch. - * - * @generated from enum value: SESSION_TYPE_NEW_WORKTREE = 2; - */ - NEW_WORKTREE = 2, - - /** - * Reuse existing git worktree. - * - * @generated from enum value: SESSION_TYPE_EXISTING_WORKTREE = 3; - */ - EXISTING_WORKTREE = 3, - - /** - * Create a directory, run git init, and start a session in the new repo. - * - * @generated from enum value: SESSION_TYPE_NEW_PROJECT = 4; - */ - NEW_PROJECT = 4, - - /** - * Generate a fresh temporary directory under one_off_base_dir and start a directory session. - * - * @generated from enum value: SESSION_TYPE_ONE_OFF = 5; - */ - ONE_OFF = 5, -} - -/** - * Describes the enum session.v1.SessionType. - */ -export const SessionTypeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 3); - -/** - * InstanceType indicates whether a session is managed by claude-squad or external. - * - * @generated from enum session.v1.InstanceType - */ -export enum InstanceType { - /** - * @generated from enum value: INSTANCE_TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * Session fully managed by claude-squad with complete lifecycle control. - * - * @generated from enum value: INSTANCE_TYPE_MANAGED = 1; - */ - MANAGED = 1, - - /** - * Session discovered externally (e.g., via ssq-mux) with limited interaction. - * - * @generated from enum value: INSTANCE_TYPE_EXTERNAL = 2; - */ - EXTERNAL = 2, -} - -/** - * Describes the enum session.v1.InstanceType. - */ -export const InstanceTypeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 4); - -/** - * DetectedStatus represents the fine-grained activity state detected from PTY output analysis. - * Derived from terminal pattern matching in the detection layer; never stored in the database. - * Only meaningful when Session.status == SESSION_STATUS_ACTIVE. - * - * @generated from enum session.v1.DetectedStatus - */ -export enum DetectedStatus { - /** - * @generated from enum value: DETECTED_STATUS_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: DETECTED_STATUS_IDLE = 1; - */ - IDLE = 1, - - /** - * @generated from enum value: DETECTED_STATUS_PROCESSING = 2; - */ - PROCESSING = 2, - - /** - * @generated from enum value: DETECTED_STATUS_EXECUTING = 3; - */ - EXECUTING = 3, - - /** - * @generated from enum value: DETECTED_STATUS_NEEDS_APPROVAL = 4; - */ - NEEDS_APPROVAL = 4, - - /** - * @generated from enum value: DETECTED_STATUS_INPUT_REQUIRED = 5; - */ - INPUT_REQUIRED = 5, - - /** - * @generated from enum value: DETECTED_STATUS_ERROR = 6; - */ - ERROR = 6, - - /** - * @generated from enum value: DETECTED_STATUS_TESTS_FAILING = 7; - */ - TESTS_FAILING = 7, - - /** - * @generated from enum value: DETECTED_STATUS_SUCCESS = 8; - */ - SUCCESS = 8, - - /** - * @generated from enum value: DETECTED_STATUS_UNKNOWN = 9; - */ - UNKNOWN = 9, - - /** - * @generated from enum value: DETECTED_STATUS_READY = 10; - */ - READY = 10, - - /** - * @generated from enum value: DETECTED_STATUS_WAITING_FOR_AGENT = 11; - */ - WAITING_FOR_AGENT = 11, -} - -/** - * Describes the enum session.v1.DetectedStatus. - */ -export const DetectedStatusSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 5); - -/** - * WorkingState represents the active-work status of a session for review queue filtering. - * Populated from IdleDetector state; allows frontend to distinguish sessions that are - * actively working from those waiting for user attention. - * - * @generated from enum session.v1.WorkingState - */ -export enum WorkingState { - /** - * @generated from enum value: WORKING_STATE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * Session is actively generating output (Claude producing tokens, interrupt available). - * - * @generated from enum value: WORKING_STATE_ACTIVE = 1; - */ - ACTIVE = 1, - - /** - * Session is running a tool (Bash, Edit, etc.) with no interrupt visible. - * - * @generated from enum value: WORKING_STATE_PROCESSING = 2; - */ - PROCESSING = 2, - - /** - * Session is at the idle prompt, ready for user input. - * - * @generated from enum value: WORKING_STATE_IDLE = 3; - */ - IDLE = 3, - - /** - * Session has been silent beyond the idle threshold (may be stuck or waiting). - * - * @generated from enum value: WORKING_STATE_WAITING = 4; - */ - WAITING = 4, -} - -/** - * Describes the enum session.v1.WorkingState. - */ -export const WorkingStateSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 6); - -/** - * SubStatus provides fine-grained activity state for Active sessions. - * Derived at read time from the detection layer; never stored in the database. - * - * @generated from enum session.v1.SubStatus - */ -export enum SubStatus { - /** - * @generated from enum value: SUB_STATUS_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * Session is at the idle prompt, waiting for user input. - * - * @generated from enum value: SUB_STATUS_IDLE = 1; - */ - IDLE = 1, - - /** - * Session is actively processing (Claude generating tokens or running a tool). - * - * @generated from enum value: SUB_STATUS_PROCESSING = 2; - */ - PROCESSING = 2, - - /** - * Session is waiting for user approval on a tool-use request. - * - * @generated from enum value: SUB_STATUS_NEEDS_APPROVAL = 3; - */ - NEEDS_APPROVAL = 3, - - /** - * Session encountered an error state. - * - * @generated from enum value: SUB_STATUS_ERROR = 4; - */ - ERROR = 4, - - /** - * Tests are currently failing. - * - * @generated from enum value: SUB_STATUS_TESTS_FAILING = 5; - */ - TESTS_FAILING = 5, - - /** - * Session is experiencing API rate limiting. - * - * @generated from enum value: SUB_STATUS_RATE_LIMITED = 6; - */ - RATE_LIMITED = 6, - - /** - * Session is presenting a numbered option menu or open-ended question — user must type or select. - * - * @generated from enum value: SUB_STATUS_INPUT_REQUIRED = 7; - */ - INPUT_REQUIRED = 7, - - /** - * Session is at the input prompt, ready for the user's next instruction. - * - * @generated from enum value: SUB_STATUS_READY = 8; - */ - READY = 8, - - /** - * Task completed successfully. - * - * @generated from enum value: SUB_STATUS_SUCCESS = 9; - */ - SUCCESS = 9, - - /** - * Claude is waiting for one or more background agents to finish (e.g. "✻ Waiting for 2 background agents"). - * - * @generated from enum value: SUB_STATUS_WAITING_FOR_AGENT = 10; - */ - WAITING_FOR_AGENT = 10, -} - -/** - * Describes the enum session.v1.SubStatus. - */ -export const SubStatusSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 7); - -/** - * RateLimitState indicates whether the session is experiencing rate limiting. - * - * @generated from enum session.v1.RateLimitState - */ -export enum RateLimitState { - /** - * @generated from enum value: RATE_LIMIT_STATE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * No rate limit detected - * - * @generated from enum value: RATE_LIMIT_STATE_NONE = 1; - */ - NONE = 1, - - /** - * Rate limit detected, waiting for reset time - * - * @generated from enum value: RATE_LIMIT_STATE_WAITING = 2; - */ - WAITING = 2, - - /** - * Currently attempting recovery - * - * @generated from enum value: RATE_LIMIT_STATE_RECOVERING = 3; - */ - RECOVERING = 3, - - /** - * Successfully recovered from rate limit - * - * @generated from enum value: RATE_LIMIT_STATE_RECOVERED = 4; - */ - RECOVERED = 4, - - /** - * Recovery failed - * - * @generated from enum value: RATE_LIMIT_STATE_FAILED = 5; - */ - FAILED = 5, -} - -/** - * Describes the enum session.v1.RateLimitState. - */ -export const RateLimitStateSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 8); - -/** - * Priority levels for review queue items (highest to lowest urgency). - * - * @generated from enum session.v1.Priority - */ -export enum Priority { - /** - * @generated from enum value: PRIORITY_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * 🔴 Critical - requires immediate attention (errors, failures). - * - * @generated from enum value: PRIORITY_URGENT = 1; - */ - URGENT = 1, - - /** - * 🟡 Important - needs attention soon (approvals, prompts). - * - * @generated from enum value: PRIORITY_HIGH = 2; - */ - HIGH = 2, - - /** - * 🔵 Normal - routine attention needed (idle, waiting). - * - * @generated from enum value: PRIORITY_MEDIUM = 3; - */ - MEDIUM = 3, - - /** - * ⚪ Low - informational (task complete, status change). - * - * @generated from enum value: PRIORITY_LOW = 4; - */ - LOW = 4, -} - -/** - * Describes the enum session.v1.Priority. - */ -export const PrioritySchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 9); - -/** - * AttentionReason indicates why a session needs user attention. - * - * @generated from enum session.v1.AttentionReason - */ -export enum AttentionReason { - /** - * @generated from enum value: ATTENTION_REASON_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * Session is waiting for user approval on a prompt. - * - * @generated from enum value: ATTENTION_REASON_APPROVAL_PENDING = 1; - */ - APPROVAL_PENDING = 1, - - /** - * Session needs user input to continue. - * - * @generated from enum value: ATTENTION_REASON_INPUT_REQUIRED = 2; - */ - INPUT_REQUIRED = 2, - - /** - * Session encountered an error state. - * - * @generated from enum value: ATTENTION_REASON_ERROR_STATE = 3; - */ - ERROR_STATE = 3, - - /** - * Session has been idle for too long (DEPRECATED - use IDLE or STALE). - * - * @generated from enum value: ATTENTION_REASON_IDLE_TIMEOUT = 4; - */ - IDLE_TIMEOUT = 4, - - /** - * Session completed a task and is ready for next steps. - * - * @generated from enum value: ATTENTION_REASON_TASK_COMPLETE = 5; - */ - TASK_COMPLETE = 5, - - /** - * Session has uncommitted git changes ready to commit. - * - * @generated from enum value: ATTENTION_REASON_UNCOMMITTED_CHANGES = 6; - */ - UNCOMMITTED_CHANGES = 6, - - /** - * Session is idle and ready for next task (short idle, expected state). - * - * @generated from enum value: ATTENTION_REASON_IDLE = 7; - */ - IDLE = 7, - - /** - * Session has been stale with no output for extended period (may be stuck). - * - * @generated from enum value: ATTENTION_REASON_STALE = 8; - */ - STALE = 8, - - /** - * Session is explicitly waiting for user input (detected prompt). - * - * @generated from enum value: ATTENTION_REASON_WAITING_FOR_USER = 9; - */ - WAITING_FOR_USER = 9, - - /** - * Session has failing tests that need attention. - * - * @generated from enum value: ATTENTION_REASON_TESTS_FAILING = 10; - */ - TESTS_FAILING = 10, -} - -/** - * Describes the enum session.v1.AttentionReason. - */ -export const AttentionReasonSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 10); - -/** - * NotificationType categorizes the type of notification being sent. - * Different types have different default UI treatments. - * - * @generated from enum session.v1.NotificationType - */ -export enum NotificationType { - /** - * @generated from enum value: NOTIFICATION_TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * User Action Required (High Priority by default) - * - * User approval dialog waiting - * - * @generated from enum value: NOTIFICATION_TYPE_APPROVAL_NEEDED = 1; - */ - APPROVAL_NEEDED = 1, - - /** - * Waiting for user input - * - * @generated from enum value: NOTIFICATION_TYPE_INPUT_REQUIRED = 2; - */ - INPUT_REQUIRED = 2, - - /** - * Confirmation prompt waiting - * - * @generated from enum value: NOTIFICATION_TYPE_CONFIRMATION_NEEDED = 3; - */ - CONFIRMATION_NEEDED = 3, - - /** - * Status Updates (Medium Priority by default) - * - * Task finished successfully - * - * @generated from enum value: NOTIFICATION_TYPE_TASK_COMPLETE = 4; - */ - TASK_COMPLETE = 4, - - /** - * Long-running process started - * - * @generated from enum value: NOTIFICATION_TYPE_PROCESS_STARTED = 5; - */ - PROCESS_STARTED = 5, - - /** - * Long-running process finished - * - * @generated from enum value: NOTIFICATION_TYPE_PROCESS_FINISHED = 6; - */ - PROCESS_FINISHED = 6, - - /** - * Errors and Warnings (High/Urgent Priority by default) - * - * Error occurred - * - * @generated from enum value: NOTIFICATION_TYPE_ERROR = 7; - */ - ERROR = 7, - - /** - * Warning condition - * - * @generated from enum value: NOTIFICATION_TYPE_WARNING = 8; - */ - WARNING = 8, - - /** - * Operation failed - * - * @generated from enum value: NOTIFICATION_TYPE_FAILURE = 9; - */ - FAILURE = 9, - - /** - * Informational (Low Priority by default) - * - * General information - * - * @generated from enum value: NOTIFICATION_TYPE_INFO = 10; - */ - INFO = 10, - - /** - * Debug information - * - * @generated from enum value: NOTIFICATION_TYPE_DEBUG = 11; - */ - DEBUG = 11, - - /** - * Session status changed - * - * @generated from enum value: NOTIFICATION_TYPE_STATUS_CHANGE = 12; - */ - STATUS_CHANGE = 12, - - /** - * Classifier auto-approved or auto-denied; no human action needed - * - * @generated from enum value: NOTIFICATION_TYPE_AUTO_APPROVED = 13; - */ - AUTO_APPROVED = 13, - - /** - * Custom (Medium Priority by default) - * - * Custom notification type - * - * @generated from enum value: NOTIFICATION_TYPE_CUSTOM = 100; - */ - CUSTOM = 100, -} - -/** - * Describes the enum session.v1.NotificationType. - */ -export const NotificationTypeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 11); - -/** - * NotificationPriority determines UI treatment for notifications. - * Maps to different audio, visual styling, and auto-dismiss behavior. - * - * @generated from enum session.v1.NotificationPriority - */ -export enum NotificationPriority { - /** - * @generated from enum value: NOTIFICATION_PRIORITY_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * Info, auto-dismiss after 5s - * - * @generated from enum value: NOTIFICATION_PRIORITY_LOW = 1; - */ - LOW = 1, - - /** - * Normal, auto-dismiss after 10s - * - * @generated from enum value: NOTIFICATION_PRIORITY_MEDIUM = 2; - */ - MEDIUM = 2, - - /** - * Important, requires acknowledgment - * - * @generated from enum value: NOTIFICATION_PRIORITY_HIGH = 3; - */ - HIGH = 3, - - /** - * Critical, blocking action required - * - * @generated from enum value: NOTIFICATION_PRIORITY_URGENT = 4; - */ - URGENT = 4, -} - -/** - * Describes the enum session.v1.NotificationPriority. - */ -export const NotificationPrioritySchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 12); - -/** - * VCSType represents the type of version control system - * - * @generated from enum session.v1.VCSType - */ -export enum VCSType { - /** - * @generated from enum value: VCS_TYPE_UNSPECIFIED = 0; - */ - VCS_TYPE_UNSPECIFIED = 0, - - /** - * @generated from enum value: VCS_TYPE_GIT = 1; - */ - VCS_TYPE_GIT = 1, - - /** - * @generated from enum value: VCS_TYPE_JUJUTSU = 2; - */ - VCS_TYPE_JUJUTSU = 2, -} - -/** - * Describes the enum session.v1.VCSType. - */ -export const VCSTypeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 13); - -/** - * FileStatus represents the status of a file in version control - * - * @generated from enum session.v1.FileStatus - */ -export enum FileStatus { - /** - * @generated from enum value: FILE_STATUS_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: FILE_STATUS_MODIFIED = 1; - */ - MODIFIED = 1, - - /** - * @generated from enum value: FILE_STATUS_ADDED = 2; - */ - ADDED = 2, - - /** - * @generated from enum value: FILE_STATUS_DELETED = 3; - */ - DELETED = 3, - - /** - * @generated from enum value: FILE_STATUS_RENAMED = 4; - */ - RENAMED = 4, - - /** - * @generated from enum value: FILE_STATUS_COPIED = 5; - */ - COPIED = 5, - - /** - * @generated from enum value: FILE_STATUS_UNTRACKED = 6; - */ - UNTRACKED = 6, - - /** - * @generated from enum value: FILE_STATUS_IGNORED = 7; - */ - IGNORED = 7, - - /** - * @generated from enum value: FILE_STATUS_CONFLICT = 8; - */ - CONFLICT = 8, -} - -/** - * Describes the enum session.v1.FileStatus. - */ -export const FileStatusSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 14); - -/** - * WorkspaceSwitchType defines the type of workspace switch operation - * - * @generated from enum session.v1.WorkspaceSwitchType - */ -export enum WorkspaceSwitchType { - /** - * @generated from enum value: WORKSPACE_SWITCH_TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * Simple directory change (no VCS, no restart) - * - * @generated from enum value: WORKSPACE_SWITCH_TYPE_DIRECTORY = 1; - */ - DIRECTORY = 1, - - /** - * Switch to a different revision/branch - * - * @generated from enum value: WORKSPACE_SWITCH_TYPE_REVISION = 2; - */ - REVISION = 2, - - /** - * Switch to or create a different worktree - * - * @generated from enum value: WORKSPACE_SWITCH_TYPE_WORKTREE = 3; - */ - WORKTREE = 3, -} - -/** - * Describes the enum session.v1.WorkspaceSwitchType. - */ -export const WorkspaceSwitchTypeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 15); - -/** - * ChangeStrategy defines how to handle uncommitted changes during workspace switches - * - * @generated from enum session.v1.ChangeStrategy - */ -export enum ChangeStrategy { - /** - * @generated from enum value: CHANGE_STRATEGY_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * Keep changes as a separate WIP revision (JJ) or stash (Git) - * - * @generated from enum value: CHANGE_STRATEGY_KEEP_AS_WIP = 1; - */ - KEEP_AS_WIP = 1, - - /** - * Keep changes as parent of new location (JJ) or stash pop (Git) - * - * @generated from enum value: CHANGE_STRATEGY_BRING_ALONG = 2; - */ - BRING_ALONG = 2, - - /** - * Discard uncommitted changes - * - * @generated from enum value: CHANGE_STRATEGY_ABANDON = 3; - */ - ABANDON = 3, -} - -/** - * Describes the enum session.v1.ChangeStrategy. - */ -export const ChangeStrategySchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 16); - -/** - * AutoDecision is the action the classifier takes for a matching rule. - * - * @generated from enum session.v1.AutoDecision - */ -export enum AutoDecision { - /** - * @generated from enum value: AUTO_DECISION_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: AUTO_DECISION_ALLOW = 1; - */ - ALLOW = 1, - - /** - * @generated from enum value: AUTO_DECISION_DENY = 2; - */ - DENY = 2, - - /** - * @generated from enum value: AUTO_DECISION_ESCALATE = 3; - */ - ESCALATE = 3, -} - -/** - * Describes the enum session.v1.AutoDecision. - */ -export const AutoDecisionSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 17); - -/** - * ScanStatus indicates the result quality of the last unfinished-work scan. - * - * @generated from enum session.v1.ScanStatus - */ -export enum ScanStatus { - /** - * @generated from enum value: SCAN_STATUS_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: SCAN_STATUS_OK = 1; - */ - OK = 1, - - /** - * @generated from enum value: SCAN_STATUS_TIMEOUT = 2; - */ - TIMEOUT = 2, - - /** - * @generated from enum value: SCAN_STATUS_PERMISSION = 3; - */ - PERMISSION = 3, - - /** - * @generated from enum value: SCAN_STATUS_ERROR = 4; - */ - ERROR = 4, -} - -/** - * Describes the enum session.v1.ScanStatus. - */ -export const ScanStatusSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 18); - -/** - * SessionSummaryStatus indicates the generation state of a session completion summary. - * - * @generated from enum session.v1.SessionSummaryStatus - */ -export enum SessionSummaryStatus { - /** - * @generated from enum value: SESSION_SUMMARY_STATUS_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: SESSION_SUMMARY_STATUS_PENDING = 1; - */ - PENDING = 1, - - /** - * @generated from enum value: SESSION_SUMMARY_STATUS_GENERATING = 2; - */ - GENERATING = 2, - - /** - * @generated from enum value: SESSION_SUMMARY_STATUS_READY = 3; - */ - READY = 3, - - /** - * @generated from enum value: SESSION_SUMMARY_STATUS_ERROR = 4; - */ - ERROR = 4, -} - -/** - * Describes the enum session.v1.SessionSummaryStatus. - */ -export const SessionSummaryStatusSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 19); - -/** - * ShellStatus represents the lifecycle state of a custom shell. - * - * @generated from enum session.v1.ShellStatus - */ -export enum ShellStatus { - /** - * @generated from enum value: SHELL_STATUS_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * Shell process is running. - * - * @generated from enum value: SHELL_STATUS_RUNNING = 1; - */ - RUNNING = 1, - - /** - * Shell process exited cleanly (exit code 0) or was explicitly stopped. - * - * @generated from enum value: SHELL_STATUS_STOPPED = 2; - */ - STOPPED = 2, - - /** - * Shell process exited with non-zero exit code or failed to start. - * - * @generated from enum value: SHELL_STATUS_ERROR = 3; - */ - ERROR = 3, -} - -/** - * Describes the enum session.v1.ShellStatus. - */ -export const ShellStatusSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 20); - -/** - * SuggestionSource identifies what data was used to generate a rule suggestion. - * - * @generated from enum session.v1.SuggestionSource - */ -export enum SuggestionSource { - /** - * @generated from enum value: SUGGESTION_SOURCE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * @generated from enum value: SUGGESTION_SOURCE_ANALYTICS_GAPS = 1; - */ - ANALYTICS_GAPS = 1, - - /** - * @generated from enum value: SUGGESTION_SOURCE_REVIEW_QUEUE_ITEM = 2; - */ - REVIEW_QUEUE_ITEM = 2, - - /** - * @generated from enum value: SUGGESTION_SOURCE_COMMAND_SAMPLE = 3; - */ - COMMAND_SAMPLE = 3, -} - -/** - * Describes the enum session.v1.SuggestionSource. - */ -export const SuggestionSourceSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_session_v1_types, 21); - diff --git a/web-app/src/gen/session/v1/unfinished_pb.ts b/web-app/src/gen/session/v1/unfinished_pb.ts deleted file mode 100644 index 562dc6acc..000000000 --- a/web-app/src/gen/session/v1/unfinished_pb.ts +++ /dev/null @@ -1,576 +0,0 @@ -// @generated by protoc-gen-es v2.11.0 with parameter "target=ts,ts_nocheck=false,keep_empty_files=true" -// @generated from file session/v1/unfinished.proto (package session.v1, syntax proto3) -/* eslint-disable */ - -import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; -import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; -import type { Timestamp } from "@bufbuild/protobuf/wkt"; -import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; -import type { DiffStats, UnfinishedWorkConfig, UnfinishedWorktree } from "./types_pb"; -import { file_session_v1_types } from "./types_pb"; -import type { Message } from "@bufbuild/protobuf"; - -/** - * Describes the file session/v1/unfinished.proto. - */ -export const file_session_v1_unfinished: GenFile = /*@__PURE__*/ - fileDesc("ChtzZXNzaW9uL3YxL3VuZmluaXNoZWQucHJvdG8SCnNlc3Npb24udjEiGwoZTGlzdFVuZmluaXNoZWRXb3JrUmVxdWVzdCJ+ChpMaXN0VW5maW5pc2hlZFdvcmtSZXNwb25zZRIxCgl3b3JrdHJlZXMYASADKAsyHi5zZXNzaW9uLnYxLlVuZmluaXNoZWRXb3JrdHJlZRItCglsYXN0X3NjYW4YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIhwKGldhdGNoVW5maW5pc2hlZFdvcmtSZXF1ZXN0Is0BChNVbmZpbmlzaGVkV29ya0V2ZW50EjoKEHdvcmt0cmVlX3VwZGF0ZWQYASABKAsyHi5zZXNzaW9uLnYxLlVuZmluaXNoZWRXb3JrdHJlZUgAEjoKEHdvcmt0cmVlX3JlbW92ZWQYAiABKAsyHi5zZXNzaW9uLnYxLlVuZmluaXNoZWRXb3JrdHJlZUgAEjMKDnNjYW5fY29tcGxldGVkGAMgASgLMhkuc2Vzc2lvbi52MS5TY2FuQ29tcGxldGVkSABCCQoHcGF5bG9hZCJBCg1TY2FuQ29tcGxldGVkEjAKDGNvbXBsZXRlZF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiGwoZU2NhblVuZmluaXNoZWRXb3JrUmVxdWVzdCJRChpTY2FuVW5maW5pc2hlZFdvcmtSZXNwb25zZRIzCg9zY2FuX3N0YXJ0ZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjsKFkRpc21pc3NXb3JrdHJlZVJlcXVlc3QSEQoJcmVwb19wYXRoGAEgASgJEg4KBmJyYW5jaBgCIAEoCSIZChdEaXNtaXNzV29ya3RyZWVSZXNwb25zZSI9ChhVbmRpc21pc3NXb3JrdHJlZVJlcXVlc3QSEQoJcmVwb19wYXRoGAEgASgJEg4KBmJyYW5jaBgCIAEoCSIbChlVbmRpc21pc3NXb3JrdHJlZVJlc3BvbnNlIjoKFVNub296ZVdvcmt0cmVlUmVxdWVzdBIRCglyZXBvX3BhdGgYASABKAkSDgoGYnJhbmNoGAIgASgJIhgKFlNub296ZVdvcmt0cmVlUmVzcG9uc2UiQAobR2V0V29ya3RyZWVBSVN1bW1hcnlSZXF1ZXN0EhEKCXJlcG9fcGF0aBgBIAEoCRIOCgZicmFuY2gYAiABKAkiQwocR2V0V29ya3RyZWVBSVN1bW1hcnlSZXNwb25zZRIPCgdzdW1tYXJ5GAEgASgJEhIKCmZyb21fY2FjaGUYAiABKAgiUwoWUXVpY2tDb21taXRQdXNoUmVxdWVzdBIRCglyZXBvX3BhdGgYASABKAkSDgoGYnJhbmNoGAIgASgJEhYKDmNvbW1pdF9tZXNzYWdlGAMgASgJIkEKF1F1aWNrQ29tbWl0UHVzaFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSFQoNZXJyb3JfbWVzc2FnZRgCIAEoCSIgCh5HZXRVbmZpbmlzaGVkV29ya0NvbmZpZ1JlcXVlc3QiUwofR2V0VW5maW5pc2hlZFdvcmtDb25maWdSZXNwb25zZRIwCgZjb25maWcYASABKAsyIC5zZXNzaW9uLnYxLlVuZmluaXNoZWRXb3JrQ29uZmlnIlUKIVVwZGF0ZVVuZmluaXNoZWRXb3JrQ29uZmlnUmVxdWVzdBIwCgZjb25maWcYASABKAsyIC5zZXNzaW9uLnYxLlVuZmluaXNoZWRXb3JrQ29uZmlnIlYKIlVwZGF0ZVVuZmluaXNoZWRXb3JrQ29uZmlnUmVzcG9uc2USMAoGY29uZmlnGAEgASgLMiAuc2Vzc2lvbi52MS5VbmZpbmlzaGVkV29ya0NvbmZpZyI7ChZHZXRXb3JrdHJlZURpZmZSZXF1ZXN0EhEKCXJlcG9fcGF0aBgBIAEoCRIOCgZicmFuY2gYAiABKAkiUwoXR2V0V29ya3RyZWVEaWZmUmVzcG9uc2USKQoKZGlmZl9zdGF0cxgBIAEoCzIVLnNlc3Npb24udjEuRGlmZlN0YXRzEg0KBWVycm9yGAIgASgJMoQJChVVbmZpbmlzaGVkV29ya1NlcnZpY2USZQoSTGlzdFVuZmluaXNoZWRXb3JrEiUuc2Vzc2lvbi52MS5MaXN0VW5maW5pc2hlZFdvcmtSZXF1ZXN0GiYuc2Vzc2lvbi52MS5MaXN0VW5maW5pc2hlZFdvcmtSZXNwb25zZSIAEmIKE1dhdGNoVW5maW5pc2hlZFdvcmsSJi5zZXNzaW9uLnYxLldhdGNoVW5maW5pc2hlZFdvcmtSZXF1ZXN0Gh8uc2Vzc2lvbi52MS5VbmZpbmlzaGVkV29ya0V2ZW50IgAwARJlChJTY2FuVW5maW5pc2hlZFdvcmsSJS5zZXNzaW9uLnYxLlNjYW5VbmZpbmlzaGVkV29ya1JlcXVlc3QaJi5zZXNzaW9uLnYxLlNjYW5VbmZpbmlzaGVkV29ya1Jlc3BvbnNlIgASXAoPRGlzbWlzc1dvcmt0cmVlEiIuc2Vzc2lvbi52MS5EaXNtaXNzV29ya3RyZWVSZXF1ZXN0GiMuc2Vzc2lvbi52MS5EaXNtaXNzV29ya3RyZWVSZXNwb25zZSIAEmIKEVVuZGlzbWlzc1dvcmt0cmVlEiQuc2Vzc2lvbi52MS5VbmRpc21pc3NXb3JrdHJlZVJlcXVlc3QaJS5zZXNzaW9uLnYxLlVuZGlzbWlzc1dvcmt0cmVlUmVzcG9uc2UiABJZCg5Tbm9vemVXb3JrdHJlZRIhLnNlc3Npb24udjEuU25vb3plV29ya3RyZWVSZXF1ZXN0GiIuc2Vzc2lvbi52MS5Tbm9vemVXb3JrdHJlZVJlc3BvbnNlIgASawoUR2V0V29ya3RyZWVBSVN1bW1hcnkSJy5zZXNzaW9uLnYxLkdldFdvcmt0cmVlQUlTdW1tYXJ5UmVxdWVzdBooLnNlc3Npb24udjEuR2V0V29ya3RyZWVBSVN1bW1hcnlSZXNwb25zZSIAElwKD0dldFdvcmt0cmVlRGlmZhIiLnNlc3Npb24udjEuR2V0V29ya3RyZWVEaWZmUmVxdWVzdBojLnNlc3Npb24udjEuR2V0V29ya3RyZWVEaWZmUmVzcG9uc2UiABJcCg9RdWlja0NvbW1pdFB1c2gSIi5zZXNzaW9uLnYxLlF1aWNrQ29tbWl0UHVzaFJlcXVlc3QaIy5zZXNzaW9uLnYxLlF1aWNrQ29tbWl0UHVzaFJlc3BvbnNlIgASdAoXR2V0VW5maW5pc2hlZFdvcmtDb25maWcSKi5zZXNzaW9uLnYxLkdldFVuZmluaXNoZWRXb3JrQ29uZmlnUmVxdWVzdBorLnNlc3Npb24udjEuR2V0VW5maW5pc2hlZFdvcmtDb25maWdSZXNwb25zZSIAEn0KGlVwZGF0ZVVuZmluaXNoZWRXb3JrQ29uZmlnEi0uc2Vzc2lvbi52MS5VcGRhdGVVbmZpbmlzaGVkV29ya0NvbmZpZ1JlcXVlc3QaLi5zZXNzaW9uLnYxLlVwZGF0ZVVuZmluaXNoZWRXb3JrQ29uZmlnUmVzcG9uc2UiAEKvAQoOY29tLnNlc3Npb24udjFCD1VuZmluaXNoZWRQcm90b1ABWkNnaXRodWIuY29tL3RzdGFwbGVyL3N0YXBsZXItc3F1YWQvZ2VuL3Byb3RvL2dvL3Nlc3Npb24vdjE7c2Vzc2lvbnYxogIDU1hYqgIKU2Vzc2lvbi5WMcoCClNlc3Npb25cVjHiAhZTZXNzaW9uXFYxXEdQQk1ldGFkYXRh6gILU2Vzc2lvbjo6VjFiBnByb3RvMw", [file_google_protobuf_timestamp, file_session_v1_types]); - -/** - * @generated from message session.v1.ListUnfinishedWorkRequest - */ -export type ListUnfinishedWorkRequest = Message<"session.v1.ListUnfinishedWorkRequest"> & { -}; - -/** - * Describes the message session.v1.ListUnfinishedWorkRequest. - * Use `create(ListUnfinishedWorkRequestSchema)` to create a new message. - */ -export const ListUnfinishedWorkRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 0); - -/** - * @generated from message session.v1.ListUnfinishedWorkResponse - */ -export type ListUnfinishedWorkResponse = Message<"session.v1.ListUnfinishedWorkResponse"> & { - /** - * @generated from field: repeated session.v1.UnfinishedWorktree worktrees = 1; - */ - worktrees: UnfinishedWorktree[]; - - /** - * @generated from field: google.protobuf.Timestamp last_scan = 2; - */ - lastScan?: Timestamp; -}; - -/** - * Describes the message session.v1.ListUnfinishedWorkResponse. - * Use `create(ListUnfinishedWorkResponseSchema)` to create a new message. - */ -export const ListUnfinishedWorkResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 1); - -/** - * @generated from message session.v1.WatchUnfinishedWorkRequest - */ -export type WatchUnfinishedWorkRequest = Message<"session.v1.WatchUnfinishedWorkRequest"> & { -}; - -/** - * Describes the message session.v1.WatchUnfinishedWorkRequest. - * Use `create(WatchUnfinishedWorkRequestSchema)` to create a new message. - */ -export const WatchUnfinishedWorkRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 2); - -/** - * @generated from message session.v1.UnfinishedWorkEvent - */ -export type UnfinishedWorkEvent = Message<"session.v1.UnfinishedWorkEvent"> & { - /** - * @generated from oneof session.v1.UnfinishedWorkEvent.payload - */ - payload: { - /** - * @generated from field: session.v1.UnfinishedWorktree worktree_updated = 1; - */ - value: UnfinishedWorktree; - case: "worktreeUpdated"; - } | { - /** - * @generated from field: session.v1.UnfinishedWorktree worktree_removed = 2; - */ - value: UnfinishedWorktree; - case: "worktreeRemoved"; - } | { - /** - * @generated from field: session.v1.ScanCompleted scan_completed = 3; - */ - value: ScanCompleted; - case: "scanCompleted"; - } | { case: undefined; value?: undefined }; -}; - -/** - * Describes the message session.v1.UnfinishedWorkEvent. - * Use `create(UnfinishedWorkEventSchema)` to create a new message. - */ -export const UnfinishedWorkEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 3); - -/** - * @generated from message session.v1.ScanCompleted - */ -export type ScanCompleted = Message<"session.v1.ScanCompleted"> & { - /** - * @generated from field: google.protobuf.Timestamp completed_at = 1; - */ - completedAt?: Timestamp; -}; - -/** - * Describes the message session.v1.ScanCompleted. - * Use `create(ScanCompletedSchema)` to create a new message. - */ -export const ScanCompletedSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 4); - -/** - * @generated from message session.v1.ScanUnfinishedWorkRequest - */ -export type ScanUnfinishedWorkRequest = Message<"session.v1.ScanUnfinishedWorkRequest"> & { -}; - -/** - * Describes the message session.v1.ScanUnfinishedWorkRequest. - * Use `create(ScanUnfinishedWorkRequestSchema)` to create a new message. - */ -export const ScanUnfinishedWorkRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 5); - -/** - * @generated from message session.v1.ScanUnfinishedWorkResponse - */ -export type ScanUnfinishedWorkResponse = Message<"session.v1.ScanUnfinishedWorkResponse"> & { - /** - * @generated from field: google.protobuf.Timestamp scan_started_at = 1; - */ - scanStartedAt?: Timestamp; -}; - -/** - * Describes the message session.v1.ScanUnfinishedWorkResponse. - * Use `create(ScanUnfinishedWorkResponseSchema)` to create a new message. - */ -export const ScanUnfinishedWorkResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 6); - -/** - * @generated from message session.v1.DismissWorktreeRequest - */ -export type DismissWorktreeRequest = Message<"session.v1.DismissWorktreeRequest"> & { - /** - * @generated from field: string repo_path = 1; - */ - repoPath: string; - - /** - * @generated from field: string branch = 2; - */ - branch: string; -}; - -/** - * Describes the message session.v1.DismissWorktreeRequest. - * Use `create(DismissWorktreeRequestSchema)` to create a new message. - */ -export const DismissWorktreeRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 7); - -/** - * @generated from message session.v1.DismissWorktreeResponse - */ -export type DismissWorktreeResponse = Message<"session.v1.DismissWorktreeResponse"> & { -}; - -/** - * Describes the message session.v1.DismissWorktreeResponse. - * Use `create(DismissWorktreeResponseSchema)` to create a new message. - */ -export const DismissWorktreeResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 8); - -/** - * @generated from message session.v1.UndismissWorktreeRequest - */ -export type UndismissWorktreeRequest = Message<"session.v1.UndismissWorktreeRequest"> & { - /** - * @generated from field: string repo_path = 1; - */ - repoPath: string; - - /** - * @generated from field: string branch = 2; - */ - branch: string; -}; - -/** - * Describes the message session.v1.UndismissWorktreeRequest. - * Use `create(UndismissWorktreeRequestSchema)` to create a new message. - */ -export const UndismissWorktreeRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 9); - -/** - * @generated from message session.v1.UndismissWorktreeResponse - */ -export type UndismissWorktreeResponse = Message<"session.v1.UndismissWorktreeResponse"> & { -}; - -/** - * Describes the message session.v1.UndismissWorktreeResponse. - * Use `create(UndismissWorktreeResponseSchema)` to create a new message. - */ -export const UndismissWorktreeResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 10); - -/** - * @generated from message session.v1.SnoozeWorktreeRequest - */ -export type SnoozeWorktreeRequest = Message<"session.v1.SnoozeWorktreeRequest"> & { - /** - * @generated from field: string repo_path = 1; - */ - repoPath: string; - - /** - * @generated from field: string branch = 2; - */ - branch: string; -}; - -/** - * Describes the message session.v1.SnoozeWorktreeRequest. - * Use `create(SnoozeWorktreeRequestSchema)` to create a new message. - */ -export const SnoozeWorktreeRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 11); - -/** - * @generated from message session.v1.SnoozeWorktreeResponse - */ -export type SnoozeWorktreeResponse = Message<"session.v1.SnoozeWorktreeResponse"> & { -}; - -/** - * Describes the message session.v1.SnoozeWorktreeResponse. - * Use `create(SnoozeWorktreeResponseSchema)` to create a new message. - */ -export const SnoozeWorktreeResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 12); - -/** - * @generated from message session.v1.GetWorktreeAISummaryRequest - */ -export type GetWorktreeAISummaryRequest = Message<"session.v1.GetWorktreeAISummaryRequest"> & { - /** - * @generated from field: string repo_path = 1; - */ - repoPath: string; - - /** - * @generated from field: string branch = 2; - */ - branch: string; -}; - -/** - * Describes the message session.v1.GetWorktreeAISummaryRequest. - * Use `create(GetWorktreeAISummaryRequestSchema)` to create a new message. - */ -export const GetWorktreeAISummaryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 13); - -/** - * @generated from message session.v1.GetWorktreeAISummaryResponse - */ -export type GetWorktreeAISummaryResponse = Message<"session.v1.GetWorktreeAISummaryResponse"> & { - /** - * @generated from field: string summary = 1; - */ - summary: string; - - /** - * @generated from field: bool from_cache = 2; - */ - fromCache: boolean; -}; - -/** - * Describes the message session.v1.GetWorktreeAISummaryResponse. - * Use `create(GetWorktreeAISummaryResponseSchema)` to create a new message. - */ -export const GetWorktreeAISummaryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 14); - -/** - * @generated from message session.v1.QuickCommitPushRequest - */ -export type QuickCommitPushRequest = Message<"session.v1.QuickCommitPushRequest"> & { - /** - * @generated from field: string repo_path = 1; - */ - repoPath: string; - - /** - * @generated from field: string branch = 2; - */ - branch: string; - - /** - * @generated from field: string commit_message = 3; - */ - commitMessage: string; -}; - -/** - * Describes the message session.v1.QuickCommitPushRequest. - * Use `create(QuickCommitPushRequestSchema)` to create a new message. - */ -export const QuickCommitPushRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 15); - -/** - * @generated from message session.v1.QuickCommitPushResponse - */ -export type QuickCommitPushResponse = Message<"session.v1.QuickCommitPushResponse"> & { - /** - * @generated from field: bool success = 1; - */ - success: boolean; - - /** - * @generated from field: string error_message = 2; - */ - errorMessage: string; -}; - -/** - * Describes the message session.v1.QuickCommitPushResponse. - * Use `create(QuickCommitPushResponseSchema)` to create a new message. - */ -export const QuickCommitPushResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 16); - -/** - * @generated from message session.v1.GetUnfinishedWorkConfigRequest - */ -export type GetUnfinishedWorkConfigRequest = Message<"session.v1.GetUnfinishedWorkConfigRequest"> & { -}; - -/** - * Describes the message session.v1.GetUnfinishedWorkConfigRequest. - * Use `create(GetUnfinishedWorkConfigRequestSchema)` to create a new message. - */ -export const GetUnfinishedWorkConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 17); - -/** - * @generated from message session.v1.GetUnfinishedWorkConfigResponse - */ -export type GetUnfinishedWorkConfigResponse = Message<"session.v1.GetUnfinishedWorkConfigResponse"> & { - /** - * @generated from field: session.v1.UnfinishedWorkConfig config = 1; - */ - config?: UnfinishedWorkConfig; -}; - -/** - * Describes the message session.v1.GetUnfinishedWorkConfigResponse. - * Use `create(GetUnfinishedWorkConfigResponseSchema)` to create a new message. - */ -export const GetUnfinishedWorkConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 18); - -/** - * @generated from message session.v1.UpdateUnfinishedWorkConfigRequest - */ -export type UpdateUnfinishedWorkConfigRequest = Message<"session.v1.UpdateUnfinishedWorkConfigRequest"> & { - /** - * @generated from field: session.v1.UnfinishedWorkConfig config = 1; - */ - config?: UnfinishedWorkConfig; -}; - -/** - * Describes the message session.v1.UpdateUnfinishedWorkConfigRequest. - * Use `create(UpdateUnfinishedWorkConfigRequestSchema)` to create a new message. - */ -export const UpdateUnfinishedWorkConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 19); - -/** - * @generated from message session.v1.UpdateUnfinishedWorkConfigResponse - */ -export type UpdateUnfinishedWorkConfigResponse = Message<"session.v1.UpdateUnfinishedWorkConfigResponse"> & { - /** - * @generated from field: session.v1.UnfinishedWorkConfig config = 1; - */ - config?: UnfinishedWorkConfig; -}; - -/** - * Describes the message session.v1.UpdateUnfinishedWorkConfigResponse. - * Use `create(UpdateUnfinishedWorkConfigResponseSchema)` to create a new message. - */ -export const UpdateUnfinishedWorkConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 20); - -/** - * @generated from message session.v1.GetWorktreeDiffRequest - */ -export type GetWorktreeDiffRequest = Message<"session.v1.GetWorktreeDiffRequest"> & { - /** - * @generated from field: string repo_path = 1; - */ - repoPath: string; - - /** - * @generated from field: string branch = 2; - */ - branch: string; -}; - -/** - * Describes the message session.v1.GetWorktreeDiffRequest. - * Use `create(GetWorktreeDiffRequestSchema)` to create a new message. - */ -export const GetWorktreeDiffRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 21); - -/** - * @generated from message session.v1.GetWorktreeDiffResponse - */ -export type GetWorktreeDiffResponse = Message<"session.v1.GetWorktreeDiffResponse"> & { - /** - * @generated from field: session.v1.DiffStats diff_stats = 1; - */ - diffStats?: DiffStats; - - /** - * @generated from field: string error = 2; - */ - error: string; -}; - -/** - * Describes the message session.v1.GetWorktreeDiffResponse. - * Use `create(GetWorktreeDiffResponseSchema)` to create a new message. - */ -export const GetWorktreeDiffResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_session_v1_unfinished, 22); - -/** - * UnfinishedWorkService manages detection, display, and dismissal of - * unfinished git worktrees across all configured sources. - * - * @generated from service session.v1.UnfinishedWorkService - */ -export const UnfinishedWorkService: GenService<{ - /** - * ListUnfinishedWork returns the current snapshot of all unfinished worktrees. - * - * @generated from rpc session.v1.UnfinishedWorkService.ListUnfinishedWork - */ - listUnfinishedWork: { - methodKind: "unary"; - input: typeof ListUnfinishedWorkRequestSchema; - output: typeof ListUnfinishedWorkResponseSchema; - }, - /** - * WatchUnfinishedWork streams real-time updates as worktrees are scanned. - * Sends initial snapshot then emits events on each scan result change. - * - * @generated from rpc session.v1.UnfinishedWorkService.WatchUnfinishedWork - */ - watchUnfinishedWork: { - methodKind: "server_streaming"; - input: typeof WatchUnfinishedWorkRequestSchema; - output: typeof UnfinishedWorkEventSchema; - }, - /** - * ScanUnfinishedWork triggers an immediate scan of all sources. - * - * @generated from rpc session.v1.UnfinishedWorkService.ScanUnfinishedWork - */ - scanUnfinishedWork: { - methodKind: "unary"; - input: typeof ScanUnfinishedWorkRequestSchema; - output: typeof ScanUnfinishedWorkResponseSchema; - }, - /** - * DismissWorktree permanently hides a worktree from the Unfinished list. - * - * @generated from rpc session.v1.UnfinishedWorkService.DismissWorktree - */ - dismissWorktree: { - methodKind: "unary"; - input: typeof DismissWorktreeRequestSchema; - output: typeof DismissWorktreeResponseSchema; - }, - /** - * UndismissWorktree removes the dismiss record so the worktree reappears. - * - * @generated from rpc session.v1.UnfinishedWorkService.UndismissWorktree - */ - undismissWorktree: { - methodKind: "unary"; - input: typeof UndismissWorktreeRequestSchema; - output: typeof UndismissWorktreeResponseSchema; - }, - /** - * SnoozeWorktree hides a worktree until its HEAD SHA changes. - * - * @generated from rpc session.v1.UnfinishedWorkService.SnoozeWorktree - */ - snoozeWorktree: { - methodKind: "unary"; - input: typeof SnoozeWorktreeRequestSchema; - output: typeof SnoozeWorktreeResponseSchema; - }, - /** - * GetWorktreeAISummary generates (or returns cached) an AI summary for a worktree. - * - * @generated from rpc session.v1.UnfinishedWorkService.GetWorktreeAISummary - */ - getWorktreeAISummary: { - methodKind: "unary"; - input: typeof GetWorktreeAISummaryRequestSchema; - output: typeof GetWorktreeAISummaryResponseSchema; - }, - /** - * GetWorktreeDiff returns the full git diff for an unfinished worktree without - * requiring an open session. Compares the worktree against the remote default branch. - * - * @generated from rpc session.v1.UnfinishedWorkService.GetWorktreeDiff - */ - getWorktreeDiff: { - methodKind: "unary"; - input: typeof GetWorktreeDiffRequestSchema; - output: typeof GetWorktreeDiffResponseSchema; - }, - /** - * QuickCommitPush stages all changes, commits, and pushes in one operation. - * - * @generated from rpc session.v1.UnfinishedWorkService.QuickCommitPush - */ - quickCommitPush: { - methodKind: "unary"; - input: typeof QuickCommitPushRequestSchema; - output: typeof QuickCommitPushResponseSchema; - }, - /** - * GetUnfinishedWorkConfig retrieves current source configuration. - * - * @generated from rpc session.v1.UnfinishedWorkService.GetUnfinishedWorkConfig - */ - getUnfinishedWorkConfig: { - methodKind: "unary"; - input: typeof GetUnfinishedWorkConfigRequestSchema; - output: typeof GetUnfinishedWorkConfigResponseSchema; - }, - /** - * UpdateUnfinishedWorkConfig adds/removes watch dirs and pinned repos. - * - * @generated from rpc session.v1.UnfinishedWorkService.UpdateUnfinishedWorkConfig - */ - updateUnfinishedWorkConfig: { - methodKind: "unary"; - input: typeof UpdateUnfinishedWorkConfigRequestSchema; - output: typeof UpdateUnfinishedWorkConfigResponseSchema; - }, -}> = /*@__PURE__*/ - serviceDesc(file_session_v1_unfinished, 0); - From 1bb310edb7e7d71c61e97116e8c0a987245cae5d Mon Sep 17 00:00:00 2001 From: Tyler Stapler Date: Wed, 12 Aug 2026 10:15:28 -0700 Subject: [PATCH 3/7] fix(ci): widen tmux session-create timeout in CI test job (env-overridable) The socket-isolation fix (previous commit) removed cross-test tmux contention, but TestCommitImportExternalSession_PersistsAndLinksAndSuspends_ When_StartAndSuspendSucceed still failed deterministically twice in the same CI run (Makefile's coverage-then-verbose-rerun fallback) with the same "timed out waiting for tmux session" error -- a fresh, isolated tmux -L server still has to fork and become responsive within sessionCreateTimeout, and a fully CPU-saturated CI runner (every package's -race suite running concurrently) can push that past 10s on pure scheduling delay, independent of any lock/socket contention. sessionCreateTimeout is now a var, computed once from the optional STAPLER_SQUAD_TMUX_CREATE_TIMEOUT_SECONDS env var (unset/invalid -> unchanged 10s default -- zero production behavior change). Set to 30s in build.yml's "Run tests with coverage" step only. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01SW6Nbaqim2AS5knaHVY5dx --- .github/workflows/build.yml | 9 +++++++++ session/tmux/tmux.go | 25 ++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 192ddf14c..881c3aee2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -164,6 +164,15 @@ jobs: run: ./scripts/build-tmux.sh - name: Run tests with coverage (pinned tmux 3.4) + # STAPLER_SQUAD_TMUX_CREATE_TIMEOUT_SECONDS: production default is 10s + # (session/tmux/tmux.go's sessionCreateTimeoutDefault) -- this only + # widens the budget for this CI job, where a fully-loaded runner + # running every package's -race suite concurrently can occasionally + # exceed 10s of pure CPU-scheduling delay spinning up even an + # isolated tmux -L server, not lock contention. See tmux.go's + # sessionCreateTimeout doc comment for the incident this closes. + env: + STAPLER_SQUAD_TMUX_CREATE_TIMEOUT_SECONDS: "30" run: | TMUX_BIN="$(pwd)/bin/tmux" go test -race -coverprofile=coverage.out \ -covermode=atomic ./server/... ./session/... ./config/... \ diff --git a/session/tmux/tmux.go b/session/tmux/tmux.go index b30e0f81a..f8d5f5e2f 100644 --- a/session/tmux/tmux.go +++ b/session/tmux/tmux.go @@ -194,10 +194,33 @@ const ( sessionExistsTimeout = 3 * time.Second sessionExistsNoCacheTimeout = 5 * time.Second existsCacheDefaultTTL = 5 * time.Second // registry fast-path is push-based; this is only the subprocess fallback - sessionCreateTimeout = 10 * time.Second + sessionCreateTimeoutDefault = 10 * time.Second sessionPollInitialDelay = 5 * time.Millisecond ) +// sessionCreateTimeout is sessionCreateTimeoutDefault unless overridden via +// STAPLER_SQUAD_TMUX_CREATE_TIMEOUT_SECONDS (unset/invalid -> default, no +// production behavior change). Exists for CI specifically: even with a +// per-test isolated tmux -L server (NewTmuxSessionWithServerSocket), a brand +// new server still has to fork and become responsive within this budget, and +// a fully-loaded CI runner (many packages' -race suites competing for CPU) +// can occasionally exceed 10s just on scheduling delay, not lock contention +// -- confirmed via TestCommitImportExternalSession_PersistsAndLinksAndSuspends_ +// When_StartAndSuspendSucceed failing deterministically twice in the same CI +// run (Makefile's own coverage-then-verbose-rerun fallback) even after socket +// isolation removed cross-test contention as a cause. A var (not const) so +// it's computed once at package init, ponytail: global var read at init, +// per-process override only -- add a setter if a future caller needs to vary +// it mid-process. +var sessionCreateTimeout = func() time.Duration { + if raw := os.Getenv("STAPLER_SQUAD_TMUX_CREATE_TIMEOUT_SECONDS"); raw != "" { + if secs, err := strconv.Atoi(raw); err == nil && secs > 0 { + return time.Duration(secs) * time.Second + } + } + return sessionCreateTimeoutDefault +}() + var whiteSpaceRegex = regexp.MustCompile(`\s+`) // existsCacheState is the immutable snapshot stored in TmuxSession.existsCache. From 3c639391840bdea27e708a94f8b09fc507f518e9 Mon Sep 17 00:00:00 2001 From: Tyler Stapler Date: Wed, 12 Aug 2026 13:10:11 -0700 Subject: [PATCH 4/7] debug(tmux): log raw tmux output on session-existence-check failure Diagnostic-only change for the still-unresolved TestCommitImportExternalSession CI flake (see PR #445 comments): DoesSessionExistNoCache's failure log only ever included the generic Go error ("exit status 1"), never tmux's own stderr text -- the one piece of evidence that would distinguish "server never came up" from some other failure mode. Also logs immediately after a successful `new-session` command, including its stderr, since the CI failure's wrapped err is (new-session itself reports success) while the subsequent list-sessions poll never finds it for the entire timeout window -- a pattern that already reproduced identically before this PR's socket-isolation and timeout changes, meaning neither of those addressed the actual root cause. This commit exists purely to get the missing evidence on the next CI run; expect a fast follow-up once the actual tmux error text is visible. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01SW6Nbaqim2AS5knaHVY5dx --- session/tmux/tmux.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/session/tmux/tmux.go b/session/tmux/tmux.go index f8d5f5e2f..69add1528 100644 --- a/session/tmux/tmux.go +++ b/session/tmux/tmux.go @@ -1095,6 +1095,14 @@ func (t *TmuxSession) start(workDir string, setupCleanup bool, cleanup *CleanupF return fmt.Errorf("error starting tmux session: %w", err) } + // `tmux new-session -d` reported success (exit 0) at this point -- confirmed + // unambiguously via PID and socket file existence, not just the exit code, + // since a false-positive exit 0 with a not-yet-listening server is exactly + // the failure mode under investigation for PR #445's CI-only flake (see + // DoesSessionExistNoCache's expanded error log for the other half of this + // diagnostic pair). + log.Info("tmux new-session command succeeded", "session", t.sanitizedName, "serverSocket", t.serverSocket, "stderr", stderrOutput) + // Invalidate cache so the poll loop gets a fresh check immediately. // The pre-creation DoesSessionExist() call above caches a "false" result, // and the 5s cache TTL would otherwise cause the first 5s of the @@ -2101,7 +2109,13 @@ func (t *TmuxSession) DoesSessionExistNoCache() bool { output, err := t.listSessionsRaw(ctx) if err != nil { - log.Warn("DoesSessionExistNoCache: tmux list-sessions failed", "session", t.sanitizedName, "err", err) + // output is included: the Go error alone (e.g. "exit status 1") never + // carries tmux's own stderr text (e.g. "no server running on ", + // "error connecting to (No such file or directory)"), which is + // the one piece of evidence that actually distinguishes "server never + // came up" from "server up but genuinely doesn't have this session yet" + // -- see the incident this comment documents in PR #445. + log.Warn("DoesSessionExistNoCache: tmux list-sessions failed", "session", t.sanitizedName, "serverSocket", t.serverSocket, "err", err, "output", string(output)) // Only attempt auto-recovery for the default server (not isolated test servers). if t.serverSocket == "" && serverNotRunning(output) { recoverFromServerFailure(t.serverSocket, "DoesSessionExistNoCache") From e1b5523943012589f9b02243e7701b278b9ab877 Mon Sep 17 00:00:00 2001 From: Tyler Stapler Date: Wed, 12 Aug 2026 14:07:17 -0700 Subject: [PATCH 5/7] fix(tmux): set remain-on-exit before session creation to close a race with fast-exiting programs Root cause of TestCommitImportExternalSession_PersistsAndLinksAndSuspends_ When_StartAndSuspendSucceed's CI flake, found via the diagnostic logging added in the previous commit. CI evidence (PR #445): new-session command succeeded session=... serverSocket=test_coldrestore_... DoesSessionExistNoCache: ... sessions=[""] (not visible yet) DoesSessionExistNoCache: ... output="no server running on " [repeats for the entire poll window -- never recovers] `new-session -d` reports success, but every subsequent list-sessions call says the SERVER isn't running at all -- not "session not found yet", the whole server is gone. This test's candidate uses Program: "true", which exits in microseconds. t.setRemainOnExit() (which prevents tmux's default behavior of destroying a pane/window/session when its program exits) was only ever called AFTER Start()'s poll loop confirms the session exists -- but "true" can already have exited and torn down the session (and, since it was the server's only session on a freshly-isolated socket, the server itself) before that point is ever reached. This race is always present, not new to this PR's socket-isolation work: it likely also explains the identical failure signature seen pre-isolation, on the shared default socket's first-ever invocation. Fix: set remain-on-exit as a server-wide default (`set-option -g`) BEFORE the new-session command, not after. This command's own invocation safely spins up a sessionless server if none exists for this socket yet (a zero- session server doesn't exit-on-empty until it's HAD a session), so a server that has to be freshly created for this call already has the option active from its very first session -- before any program, however fast, gets a chance to run. Best-effort (log + continue on failure), matching every other non-essential tmux option set in this function. No behavior change for the common case: every session already ends up with remain-on-exit on via the existing (unchanged) later call -- this only moves that same eventual state earlier, closing the window rather than changing the outcome. Verified: go build clean; session/tmux and session packages pass under -race (45s / 62s); 10 consecutive runs of the previously-flaky test pass under `taskset -c 0 GOMAXPROCS=1` (single-core constrained, closer to a GitHub Actions runner's profile than this sandbox's 24 cores). Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01SW6Nbaqim2AS5knaHVY5dx --- session/tmux/tmux.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/session/tmux/tmux.go b/session/tmux/tmux.go index 69add1528..cd92aa58b 100644 --- a/session/tmux/tmux.go +++ b/session/tmux/tmux.go @@ -1036,6 +1036,34 @@ func (t *TmuxSession) start(workDir string, setupCleanup bool, cleanup *CleanupF return fmt.Errorf("cannot start tmux session %s: %w", t.sanitizedName, err) } + // Set remain-on-exit as a server-wide DEFAULT before the session exists, + // closing a race that's always present but usually wins locally and loses + // under CI's slower, -race-instrumented syscalls: t.setRemainOnExit() + // below only runs AFTER the new-session command below returns AND + // existence is confirmed, but a fast-exiting program (e.g. Program="true", + // which exits in microseconds) can already have destroyed the session -- + // and, since it was the server's only session, killed the server itself -- + // before that point, especially on a brand-new socket where there's no + // existing server to inherit an already-set option from. Setting the + // GLOBAL default first means a server that has to be freshly spawned for + // this call already has the option active from its very first session, + // before any program gets a chance to run. This command's own invocation + // safely spins up a sessionless server if none exists yet for this socket + // (a tmux server with zero sessions doesn't exit-on-empty until it has + // HAD at least one) -- confirmed via PR #445's diagnostic logging, which + // caught "no server running" on 100% of list-sessions polls immediately + // following a successful new-session for exactly this Program="true" case. + // Best-effort: log and continue on failure, matching every other + // non-essential tmux option set in this function (history-limit, + // setRemainOnExit itself) -- a failure here degrades to the pre-existing + // (racy) behavior, not a hard Start() failure. + remainOnExitCmd := t.buildTmuxCommand("set-option", "-g", "remain-on-exit", "on") + if err := runGatedErr(context.Background(), t.serverSocket, func() error { + return t.cmdExec.Run(remainOnExitCmd) + }); err != nil { + log.Warn("failed to pre-set global remain-on-exit before session creation", "session", t.sanitizedName, "serverSocket", t.serverSocket, "err", err) + } + // Create a new detached tmux session and start the program in it. // Pass -e CLAUDECODE= to unset CLAUDECODE in the child environment so that // nested Claude Code sessions are not blocked by the "nested session" guard. From 024dbec3b13216e90687bf1190031f1d9631c589 Mon Sep 17 00:00:00 2001 From: Tyler Stapler Date: Wed, 12 Aug 2026 14:29:01 -0700 Subject: [PATCH 6/7] fix(tmux): chain start-server + exit-empty off + remain-on-exit into one invocation Previous commit's fix (separate set-option -g remain-on-exit before new-session) did not actually work -- confirmed by re-running in CI, which failed identically, plus a new log line proving why: the set-option command itself failed with "error connecting to " on a brand-new socket, because set-option (unlike new-session) does not implicitly start a server. Root cause, now fully nailed down empirically (manual `tmux -L start-server` / `set-option` reproduction, not guesswork): a tmux server that reaches zero sessions exits almost instantly by default (the `exit-empty` option defaults to on). `start-server` alone succeeds, but the server it starts is already gone by the time ANY subsequent, separate tmux invocation connects to check or configure it -- there is no window to run a second command against the same server unless it's chained into the SAME invocation. Fix: `tmux -L start-server \; set-option -g exit-empty off \; set-option -g remain-on-exit on` as one chained command (tmux's own `;` command-separator syntax, parsed by tmux from distinct argv elements -- no shell is involved via exec.Cmd, so no escaping needed). This keeps the server alive through its own zero-session startup window (exit-empty off) AND protects the session new-session is about to create from being destroyed the instant a fast-exiting program (e.g. Program="true") exits (remain-on-exit on) -- both options are active before any program ever gets a chance to run. Verified empirically before touching the test suite: manually reproduced the exact failure (start-server succeeds, very next `set-option` invocation reports "no server running") and the exact fix (chained invocation keeps the session visible after a `true` program exits) via raw tmux invocations, matching buildTmuxCommand's plain-argv (no-shell) construction exactly. Verified in Go: TestCommitImportExternalSession_PersistsAndLinksAndSuspends_ When_StartAndSuspendSucceed now completes in ~0.08-0.1s (down from 1.66s) -- it hits the fast existence-check path immediately after creation instead of falling through the 5-retry poll loop, meaning the session is now reliably visible right away, not eventually. 20/20 consecutive runs pass under `taskset -c 0 GOMAXPROCS=1 -count=20`. Full session and session/tmux packages pass under -race (61s / 45s). Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01SW6Nbaqim2AS5knaHVY5dx --- session/tmux/tmux.go | 47 +++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/session/tmux/tmux.go b/session/tmux/tmux.go index cd92aa58b..4fa502b6e 100644 --- a/session/tmux/tmux.go +++ b/session/tmux/tmux.go @@ -1036,32 +1036,39 @@ func (t *TmuxSession) start(workDir string, setupCleanup bool, cleanup *CleanupF return fmt.Errorf("cannot start tmux session %s: %w", t.sanitizedName, err) } - // Set remain-on-exit as a server-wide DEFAULT before the session exists, - // closing a race that's always present but usually wins locally and loses - // under CI's slower, -race-instrumented syscalls: t.setRemainOnExit() - // below only runs AFTER the new-session command below returns AND - // existence is confirmed, but a fast-exiting program (e.g. Program="true", - // which exits in microseconds) can already have destroyed the session -- - // and, since it was the server's only session, killed the server itself -- - // before that point, especially on a brand-new socket where there's no - // existing server to inherit an already-set option from. Setting the - // GLOBAL default first means a server that has to be freshly spawned for - // this call already has the option active from its very first session, - // before any program gets a chance to run. This command's own invocation - // safely spins up a sessionless server if none exists yet for this socket - // (a tmux server with zero sessions doesn't exit-on-empty until it has - // HAD at least one) -- confirmed via PR #445's diagnostic logging, which - // caught "no server running" on 100% of list-sessions polls immediately - // following a successful new-session for exactly this Program="true" case. + // Pre-configure the server, in ONE tmux invocation, before the session + // exists -- closing a race that's always present but usually wins locally + // and loses under CI's slower, -race-instrumented syscalls: + // t.setRemainOnExit() below only runs AFTER the new-session command below + // returns AND existence is confirmed, but a fast-exiting program (e.g. + // Program="true", which exits in microseconds) can already have + // destroyed the session -- and, since it was the server's only session, + // killed the server itself -- before that point, especially on a + // brand-new socket with no pre-existing server to inherit options from. + // + // MUST be one chained invocation (`cmd1 \; cmd2 \; cmd3`), not separate + // commands run back-to-back -- confirmed empirically (PR #445): a tmux + // server that reaches zero sessions exits near-instantly by default + // (exit-empty defaults to on), so `start-server` followed by a SEPARATE + // `set-option` invocation already finds "no server running" -- the + // server that start-server just reported success for is already gone by + // the time the next process connects. Chaining into one invocation means + // the server never has a gap where it's both running and unprotected: + // start-server brings it up, exit-empty off keeps a zero-session server + // alive, remain-on-exit on then protects the session new-session (below) + // is about to create from destruction the instant its program exits. + // `;` here is tmux's own command-separator syntax (parsed by tmux itself + // from distinct argv elements), not a shell operator -- no shell is + // involved via exec.Cmd, so no escaping is needed or applicable. // Best-effort: log and continue on failure, matching every other // non-essential tmux option set in this function (history-limit, // setRemainOnExit itself) -- a failure here degrades to the pre-existing // (racy) behavior, not a hard Start() failure. - remainOnExitCmd := t.buildTmuxCommand("set-option", "-g", "remain-on-exit", "on") + preconfigureCmd := t.buildTmuxCommand("start-server", ";", "set-option", "-g", "exit-empty", "off", ";", "set-option", "-g", "remain-on-exit", "on") if err := runGatedErr(context.Background(), t.serverSocket, func() error { - return t.cmdExec.Run(remainOnExitCmd) + return t.cmdExec.Run(preconfigureCmd) }); err != nil { - log.Warn("failed to pre-set global remain-on-exit before session creation", "session", t.sanitizedName, "serverSocket", t.serverSocket, "err", err) + log.Warn("failed to pre-configure tmux server before session creation", "session", t.sanitizedName, "serverSocket", t.serverSocket, "err", err) } // Create a new detached tmux session and start the program in it. From 6a2bb49ba83758bdcce4e3143089055c32dc7c7f Mon Sep 17 00:00:00 2001 From: Tyler Stapler Date: Wed, 12 Aug 2026 14:58:03 -0700 Subject: [PATCH 7/7] refactor(tmux): extract server preconfigure into its own function t.start() was already at cognitive complexity 48 (over the gocognit threshold of 40) on main before this branch's tmux race-condition fix added ~1 more point. Pulling the new start-server/set-option logic into preconfigureServerBeforeSession() keeps start() at its pre-existing 48 (verified via gocognit) instead of nudging it to 49, so the lint complexity gate doesn't flag this PR's diff for pre-existing debt it didn't introduce. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01RetjyvJVU24VieQ3GUMJqm --- session/tmux/tmux.go | 74 ++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/session/tmux/tmux.go b/session/tmux/tmux.go index 4fa502b6e..7cfc41908 100644 --- a/session/tmux/tmux.go +++ b/session/tmux/tmux.go @@ -1012,6 +1012,45 @@ func validateWorkDir(workDir string) error { return nil } +// preconfigureServerBeforeSession sets exit-empty off and remain-on-exit on, +// in ONE chained tmux invocation, before the session in start() below is +// created -- closing a race that's always present but usually wins locally +// and loses under CI's slower, -race-instrumented syscalls: +// t.setRemainOnExit() only runs AFTER the new-session command returns AND +// existence is confirmed, but a fast-exiting program (e.g. Program="true", +// which exits in microseconds) can already have destroyed the session -- +// and, since it was the server's only session, killed the server itself -- +// before that point, especially on a brand-new socket with no pre-existing +// server to inherit options from. +// +// MUST be one chained invocation (`cmd1 \; cmd2 \; cmd3`), not separate +// commands run back-to-back -- confirmed empirically (PR #445): a tmux +// server that reaches zero sessions exits near-instantly by default +// (exit-empty defaults to on), so `start-server` followed by a SEPARATE +// `set-option` invocation already finds "no server running" -- the server +// that start-server just reported success for is already gone by the time +// the next process connects. Chaining into one invocation means the server +// never has a gap where it's both running and unprotected: start-server +// brings it up, exit-empty off keeps a zero-session server alive, +// remain-on-exit on then protects the session new-session (in start()) is +// about to create from destruction the instant its program exits. `;` here +// is tmux's own command-separator syntax (parsed by tmux itself from +// distinct argv elements), not a shell operator -- no shell is involved via +// exec.Cmd, so no escaping is needed or applicable. +// +// Best-effort: log and continue on failure, matching every other +// non-essential tmux option set in start() (history-limit, +// setRemainOnExit itself) -- a failure here degrades to the pre-existing +// (racy) behavior, not a hard Start() failure. +func (t *TmuxSession) preconfigureServerBeforeSession() { + preconfigureCmd := t.buildTmuxCommand("start-server", ";", "set-option", "-g", "exit-empty", "off", ";", "set-option", "-g", "remain-on-exit", "on") + if err := runGatedErr(context.Background(), t.serverSocket, func() error { + return t.cmdExec.Run(preconfigureCmd) + }); err != nil { + log.Warn("failed to pre-configure tmux server before session creation", "session", t.sanitizedName, "serverSocket", t.serverSocket, "err", err) + } +} + // start is the internal implementation for Start and StartWithCleanup func (t *TmuxSession) start(workDir string, setupCleanup bool, cleanup *CleanupFunc) error { // Use a no-cache check here to detect stale sessions from previous server runs. @@ -1036,40 +1075,7 @@ func (t *TmuxSession) start(workDir string, setupCleanup bool, cleanup *CleanupF return fmt.Errorf("cannot start tmux session %s: %w", t.sanitizedName, err) } - // Pre-configure the server, in ONE tmux invocation, before the session - // exists -- closing a race that's always present but usually wins locally - // and loses under CI's slower, -race-instrumented syscalls: - // t.setRemainOnExit() below only runs AFTER the new-session command below - // returns AND existence is confirmed, but a fast-exiting program (e.g. - // Program="true", which exits in microseconds) can already have - // destroyed the session -- and, since it was the server's only session, - // killed the server itself -- before that point, especially on a - // brand-new socket with no pre-existing server to inherit options from. - // - // MUST be one chained invocation (`cmd1 \; cmd2 \; cmd3`), not separate - // commands run back-to-back -- confirmed empirically (PR #445): a tmux - // server that reaches zero sessions exits near-instantly by default - // (exit-empty defaults to on), so `start-server` followed by a SEPARATE - // `set-option` invocation already finds "no server running" -- the - // server that start-server just reported success for is already gone by - // the time the next process connects. Chaining into one invocation means - // the server never has a gap where it's both running and unprotected: - // start-server brings it up, exit-empty off keeps a zero-session server - // alive, remain-on-exit on then protects the session new-session (below) - // is about to create from destruction the instant its program exits. - // `;` here is tmux's own command-separator syntax (parsed by tmux itself - // from distinct argv elements), not a shell operator -- no shell is - // involved via exec.Cmd, so no escaping is needed or applicable. - // Best-effort: log and continue on failure, matching every other - // non-essential tmux option set in this function (history-limit, - // setRemainOnExit itself) -- a failure here degrades to the pre-existing - // (racy) behavior, not a hard Start() failure. - preconfigureCmd := t.buildTmuxCommand("start-server", ";", "set-option", "-g", "exit-empty", "off", ";", "set-option", "-g", "remain-on-exit", "on") - if err := runGatedErr(context.Background(), t.serverSocket, func() error { - return t.cmdExec.Run(preconfigureCmd) - }); err != nil { - log.Warn("failed to pre-configure tmux server before session creation", "session", t.sanitizedName, "serverSocket", t.serverSocket, "err", err) - } + t.preconfigureServerBeforeSession() // Create a new detached tmux session and start the program in it. // Pass -e CLAUDECODE= to unset CLAUDECODE in the child environment so that