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/.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 c844e693b..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 - - name: Jest - working-directory: web-app - run: npx jest --ci --maxWorkers=4 - + # 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: 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/session/tmux/tmux.go b/session/tmux/tmux.go index b30e0f81a..7cfc41908 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. @@ -989,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. @@ -1013,6 +1075,8 @@ func (t *TmuxSession) start(workDir string, setupCleanup bool, cleanup *CleanupF return fmt.Errorf("cannot start tmux session %s: %w", t.sanitizedName, 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 // nested Claude Code sessions are not blocked by the "nested session" guard. @@ -1072,6 +1136,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 @@ -2078,7 +2150,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") 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); -