@overdeck/contracts 0.63.0 → 0.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -82,7 +82,8 @@ const IssueState = Schema.Literals([
82
82
  const IssueAttention = Schema.Literals([
83
83
  "needs-you",
84
84
  "stuck",
85
- "api-error"
85
+ "api-error",
86
+ "work-not-started"
86
87
  ]);
87
88
  /** Latest review decision on the PR, as the forge reports it. */
88
89
  const PrReviewState = Schema.Literals([
@@ -115,6 +116,16 @@ const DerivedBranchState = Schema.Struct({
115
116
  aheadOfMain: Schema.Number,
116
117
  pushed: Schema.Boolean
117
118
  });
119
+ /** The workspace journal's read on a post-planning auto-start (PAN-4399). */
120
+ const DerivedWorkStart = Schema.Struct({
121
+ status: Schema.Literals(["retrying", "not-started"]),
122
+ /** ISO time of the journal entry the status was read from. */
123
+ at: Schema.String,
124
+ error: Schema.optional(Schema.String),
125
+ nextRetryAt: Schema.optional(Schema.String),
126
+ /** The retry is journaled but not actually running because the Deacon is frozen (PAN-4210). Present only when true. */
127
+ held: Schema.optional(Schema.Literal(true))
128
+ });
118
129
  /** Everything the dashboard needs to render an issue's pipeline position. */
119
130
  const DerivedIssueState = Schema.Struct({
120
131
  issueId: Schema.String,
@@ -127,7 +138,9 @@ const DerivedIssueState = Schema.Struct({
127
138
  * precedence — could not be ruled in or out. Present only in that case; an
128
139
  * unresolved tracker read is never reported as an open issue.
129
140
  */
130
- trackerUnknown: Schema.optional(Schema.Literal(true))
141
+ trackerUnknown: Schema.optional(Schema.Literal(true)),
142
+ /** A deferred or gave-up post-planning auto-start read from the workspace journal (PAN-4399). */
143
+ workStart: Schema.optional(DerivedWorkStart)
131
144
  });
132
145
  const ISSUE_STATES = [
133
146
  "backlog",
@@ -155,7 +168,8 @@ const ISSUE_STATE_PRECEDENCE = [
155
168
  const ISSUE_ATTENTIONS = [
156
169
  "needs-you",
157
170
  "stuck",
158
- "api-error"
171
+ "api-error",
172
+ "work-not-started"
159
173
  ];
160
174
  function isIssueState(value) {
161
175
  return typeof value === "string" && ISSUE_STATES.includes(value);
@@ -458,6 +472,13 @@ const ChannelPermissionRequestSnapshot = Schema.Struct({
458
472
  inputPreview: Schema.String,
459
473
  createdAt: Schema.String
460
474
  });
475
+ /** PAN-4371 — advisory Jev reading of why an idle agent ended its turn. kind is a string (append-only store). */
476
+ const TurnEndAssessment = Schema.Struct({
477
+ kind: Schema.String,
478
+ confidence: Schema.Number,
479
+ needsAnswer: Schema.Boolean,
480
+ model: Schema.String
481
+ });
461
482
  const AgentSnapshot = Schema.Struct({
462
483
  id: AgentId,
463
484
  issueId: IssueId,
@@ -520,6 +541,7 @@ const AgentSnapshot = Schema.Struct({
520
541
  })),
521
542
  resolution: Schema.optional(AgentResolution),
522
543
  resolutionCount: Schema.optional(Schema.Number),
544
+ turnEndAssessment: Schema.optional(TurnEndAssessment),
523
545
  runtimeSnapshotSequence: Schema.optional(SequenceNumber)
524
546
  });
525
547
  /** PAN-3151: A recorded cycle in the review convergence tracking series */
@@ -1777,7 +1799,8 @@ const AgentEnrichmentChangedEvent = Schema.Struct({
1777
1799
  plan: Schema.String
1778
1800
  })),
1779
1801
  resolution: Schema.optional(AgentResolution),
1780
- resolutionCount: Schema.optional(Schema.Number)
1802
+ resolutionCount: Schema.optional(Schema.Number),
1803
+ turnEndAssessment: Schema.optional(TurnEndAssessment)
1781
1804
  })
1782
1805
  });
1783
1806
  /** New — agent created in database */
@@ -3172,6 +3195,30 @@ const OpenInEditorInput = Schema.Struct({
3172
3195
  editor: EditorIdSchema
3173
3196
  });
3174
3197
  //#endregion
3198
+ //#region src/effort.ts
3199
+ /**
3200
+ * Canonical reasoning-effort levels, end to end. `xhigh` was added in Opus 4.7
3201
+ * (between `high` and `max`); `max` predates it (Opus 4.6+/Sonnet 4.6). This is
3202
+ * the single source of truth for the enum — every other copy in the codebase
3203
+ * derives from it.
3204
+ */
3205
+ const EFFORT_LEVELS = [
3206
+ "low",
3207
+ "medium",
3208
+ "high",
3209
+ "xhigh",
3210
+ "max"
3211
+ ];
3212
+ const DEFAULT_EFFORT = "high";
3213
+ const EffortLevelSchema = Schema.Literals(EFFORT_LEVELS);
3214
+ function isEffortLevel(value) {
3215
+ return typeof value === "string" && EFFORT_LEVELS.includes(value);
3216
+ }
3217
+ /** Compares two effort levels by rank; negative when `a` is lower than `b`. */
3218
+ function compareEffort(a, b) {
3219
+ return EFFORT_LEVELS.indexOf(a) - EFFORT_LEVELS.indexOf(b);
3220
+ }
3221
+ //#endregion
3175
3222
  //#region src/rpc.ts
3176
3223
  const WS_METHODS = {
3177
3224
  scanConversations: "pan.scanConversations",
@@ -3257,6 +3304,8 @@ const ContextUsage = Schema.Struct({
3257
3304
  maxObservedInputTokens: Schema.optional(Schema.Number),
3258
3305
  /** Model the most recent assistant turn ran under (from JSONL). */
3259
3306
  lastModel: Schema.optional(Schema.NullOr(Schema.String)),
3307
+ /** PAN-4255: effort observed in the transcript (assistant `effort` or an /effort confirmation). Claude Code only. */
3308
+ lastEffort: Schema.optional(Schema.NullOr(Schema.String)),
3260
3309
  /** ISO timestamp of the most recent assistant turn. */
3261
3310
  lastTurnAt: Schema.optional(Schema.NullOr(Schema.String))
3262
3311
  });
@@ -3327,7 +3376,14 @@ const ConversationResponse = Schema.Struct({
3327
3376
  proposedPlan: Schema.optional(ProposedPlan),
3328
3377
  compactBoundaries: Schema.optional(Schema.Array(CompactBoundary)),
3329
3378
  contextUsage: Schema.optional(Schema.NullOr(ContextUsage)),
3330
- subagents: Schema.optional(Schema.Array(SubagentSummary))
3379
+ subagents: Schema.optional(Schema.Array(SubagentSummary)),
3380
+ /** PAN-4255: effort read from the agent's transcript (claude-code only). */
3381
+ observedEffort: Schema.optional(Schema.NullOr(EffortLevelSchema)),
3382
+ /** PAN-4255: the effort the agent was launched/pinned with and its EffortSource layer. */
3383
+ effortResolution: Schema.optional(Schema.NullOr(Schema.Struct({
3384
+ effort: EffortLevelSchema,
3385
+ source: Schema.String
3386
+ })))
3331
3387
  });
3332
3388
  const ConversationEvent = Schema.Union([
3333
3389
  Schema.Struct({
@@ -3768,6 +3824,39 @@ const GetConversationStatsRpc = Rpc.make(WS_METHODS.getConversationStats, {
3768
3824
  /** All Overdeck WebSocket RPC methods */
3769
3825
  const PanRpcGroup = RpcGroup.make(SubscribeDomainEventsRpc, SubscribeIssueEventsRpc, SubscribeTerminalRpc, SubscribeAgentOutputRpc, GetSnapshotRpc, ReplayEventsRpc, ReadWorkspaceFileRpc, ReadFileAtPathRpc, WriteFileAtPathRpc, ResolveFilePathExistsRpc, TerminalOpenRpc, TerminalWriteRpc, TerminalResizeRpc, TerminalCloseRpc, StartPlanningRpc, StartAgentRpc, DeepWipeRpc, SendTerminalInputRpc, ResizeTerminalRpc, SubscribeConversationMessagesRpc, SubscribeProjectSessionTreeRpc, ShellOpenInEditorRpc, GetAvailableEditorsRpc, ScanConversationsRpc, SearchConversationsRpc, ListDiscoveredSessionsRpc, ListSessionsFeedRpc, GetSessionsFeedFacetsRpc, GetDiscoveredSessionRpc, EnrichSessionsRpc, EmbedSessionsRpc, GetConversationCostRpc, GetConversationCostByWorkspaceRpc, GetConversationStatsRpc);
3770
3826
  //#endregion
3827
+ //#region src/agent-runtime-merge.ts
3828
+ function defaultRuntimeSnapshot(agentId, timestamp, sequence) {
3829
+ return {
3830
+ id: agentId,
3831
+ activity: "idle",
3832
+ lastActivity: timestamp,
3833
+ updatedAtSequence: sequence
3834
+ };
3835
+ }
3836
+ /**
3837
+ * Merge a snapshot's runtime map into the client's, per agent. A freshly booted
3838
+ * server may serve an older or missing entry; a client entry with a strictly
3839
+ * newer `lastActivity` (or an equal stamp with a higher `updatedAtSequence`)
3840
+ * survives, and an agent the snapshot omits keeps its entry.
3841
+ */
3842
+ function mergeSnapshotRuntimeById(current, incoming) {
3843
+ if (!incoming) return { ...current };
3844
+ const merged = { ...current };
3845
+ for (const [agentId, next] of Object.entries(incoming)) {
3846
+ const held = current[agentId];
3847
+ merged[agentId] = held && heldIsNewer(held, next) ? held : next;
3848
+ }
3849
+ return merged;
3850
+ }
3851
+ /** Newer `lastActivity` wins; equal stamps fall to the higher `updatedAtSequence`. */
3852
+ function heldIsNewer(held, next) {
3853
+ const heldAt = Date.parse(held.lastActivity);
3854
+ const nextAt = Date.parse(next.lastActivity);
3855
+ if (heldAt > nextAt) return true;
3856
+ if (heldAt !== nextAt) return false;
3857
+ return Number.isFinite(held.updatedAtSequence) && Number.isFinite(next.updatedAtSequence) && held.updatedAtSequence > next.updatedAtSequence;
3858
+ }
3859
+ //#endregion
3771
3860
  //#region src/issue-delta.ts
3772
3861
  function createIssueDelta(previous, next) {
3773
3862
  const changes = [];
@@ -3883,14 +3972,6 @@ function removeAgentFromSessionIndex(agentIdBySessionId, agentId) {
3883
3972
  for (const [sessionId, id] of Object.entries(agentIdBySessionId ?? {})) if (id !== agentId) next[sessionId] = id;
3884
3973
  return next;
3885
3974
  }
3886
- function defaultRuntimeSnapshot(agentId, timestamp, sequence) {
3887
- return {
3888
- id: agentId,
3889
- activity: "idle",
3890
- lastActivity: timestamp,
3891
- updatedAtSequence: sequence
3892
- };
3893
- }
3894
3975
  /**
3895
3976
  * Bump runtimeSnapshotSequence on the corresponding AgentSnapshot (if present)
3896
3977
  * so low-frequency subscribers can cheaply detect a runtime change. No-op if
@@ -3923,16 +4004,17 @@ function syncSnapshot(state, snapshot) {
3923
4004
  channelPermissionRequestIdsByAgentId[request.agentId] = [...existing, request.requestId];
3924
4005
  }
3925
4006
  const memory = snapshot.memory;
4007
+ const agentRuntimeById = mergeSnapshotRuntimeById(state.agentRuntimeById, snapshot.agentRuntimeById);
3926
4008
  const agentIdBySessionId = {};
3927
4009
  for (const agent of snapshot.agents) if (agent.sessionId) agentIdBySessionId[agent.sessionId] = agent.id;
3928
- for (const [agentId, runtime] of Object.entries(snapshot.agentRuntimeById ?? {})) if (runtime.claudeSessionId) agentIdBySessionId[runtime.claudeSessionId] = agentId;
4010
+ for (const [agentId, runtime] of Object.entries(agentRuntimeById)) if (runtime.claudeSessionId) agentIdBySessionId[runtime.claudeSessionId] = agentId;
3929
4011
  return {
3930
4012
  ...state,
3931
4013
  sequence: snapshot.sequence,
3932
4014
  agentsById,
3933
4015
  derivedIssueStateByIssueId,
3934
4016
  backendPanesById,
3935
- agentRuntimeById: snapshot.agentRuntimeById ?? state.agentRuntimeById,
4017
+ agentRuntimeById,
3936
4018
  channelPermissionRequestsById,
3937
4019
  channelPermissionRequestIdsByAgentId,
3938
4020
  resolvedChannelPermissionDecisionsById: {},
@@ -4031,7 +4113,8 @@ function applyEvent(state, event) {
4031
4113
  pendingAskUserQuestion: event.payload.pendingAskUserQuestion,
4032
4114
  pendingProposedPlan: event.payload.pendingProposedPlan,
4033
4115
  resolution: event.payload.resolution,
4034
- resolutionCount: event.payload.resolutionCount
4116
+ resolutionCount: event.payload.resolutionCount,
4117
+ turnEndAssessment: event.payload.turnEndAssessment
4035
4118
  }
4036
4119
  }
4037
4120
  };
@@ -4169,6 +4252,7 @@ function applyEvent(state, event) {
4169
4252
  delete base["pendingInputKinds"];
4170
4253
  delete base["pendingAskUserQuestion"];
4171
4254
  delete base["pendingProposedPlan"];
4255
+ delete base["turnEndAssessment"];
4172
4256
  }
4173
4257
  return base;
4174
4258
  })();
@@ -5262,30 +5346,6 @@ function deriveProjectCi(record) {
5262
5346
  };
5263
5347
  }
5264
5348
  //#endregion
5265
- //#region src/effort.ts
5266
- /**
5267
- * Canonical reasoning-effort levels, end to end. `xhigh` was added in Opus 4.7
5268
- * (between `high` and `max`); `max` predates it (Opus 4.6+/Sonnet 4.6). This is
5269
- * the single source of truth for the enum — every other copy in the codebase
5270
- * derives from it.
5271
- */
5272
- const EFFORT_LEVELS = [
5273
- "low",
5274
- "medium",
5275
- "high",
5276
- "xhigh",
5277
- "max"
5278
- ];
5279
- const DEFAULT_EFFORT = "high";
5280
- const EffortLevelSchema = Schema.Literals(EFFORT_LEVELS);
5281
- function isEffortLevel(value) {
5282
- return typeof value === "string" && EFFORT_LEVELS.includes(value);
5283
- }
5284
- /** Compares two effort levels by rank; negative when `a` is lower than `b`. */
5285
- function compareEffort(a, b) {
5286
- return EFFORT_LEVELS.indexOf(a) - EFFORT_LEVELS.indexOf(b);
5287
- }
5288
- //#endregion
5289
5349
  //#region src/flywheel.ts
5290
5350
  const FlywheelRunId = Schema.String.check(Schema.isPattern(/^RUN-\d+$/));
5291
5351
  const FlywheelHttpUrl = Schema.String.check(Schema.isPattern(/^https?:\/\/\S+$/i));
@@ -6886,196 +6946,649 @@ const COMPOSER_COMMAND_MANIFEST = [
6886
6946
  "id": "pan-skills-set",
6887
6947
  "path": ["skills", "set"],
6888
6948
  "display": "/pan skills set",
6889
- "description": "Set a skill on, off, or inherit (global unless --project/--issue)",
6949
+ "description": "Set a skill (<skill> <state>) or a pack (--pack <id> <state>) on, off, or inherit",
6890
6950
  "args": [{
6891
- "name": "skill",
6892
- "required": true,
6893
- "variadic": false
6894
- }, {
6895
- "name": "state",
6896
- "required": true,
6897
- "variadic": false
6898
- }],
6899
- "options": [{
6900
- "flags": "--project <key>",
6901
- "description": "Project override",
6951
+ "name": "args",
6902
6952
  "required": true,
6903
- "valueHint": "key"
6904
- }, {
6905
- "flags": "--issue <id>",
6906
- "description": "Issue override",
6907
- "required": true,
6908
- "valueHint": "id"
6953
+ "variadic": true
6909
6954
  }],
6910
- "aliases": [],
6911
- "category": "Core"
6912
- },
6913
- {
6914
- "id": "pan-issues",
6915
- "path": ["issues"],
6916
- "display": "/pan issues",
6917
- "description": "List and triage work across configured trackers",
6918
- "args": [],
6919
6955
  "options": [
6920
6956
  {
6921
- "flags": "--all",
6922
- "description": "Include closed issues",
6923
- "required": false,
6924
- "valueHint": null
6925
- },
6926
- {
6927
- "flags": "--mine",
6928
- "description": "Show only my assigned issues",
6929
- "required": false,
6930
- "valueHint": null
6931
- },
6932
- {
6933
- "flags": "--json",
6934
- "description": "Output as JSON",
6935
- "required": false,
6936
- "valueHint": null
6937
- },
6938
- {
6939
- "flags": "--tracker <type>",
6940
- "description": "Query specific tracker (linear/github/gitlab)",
6957
+ "flags": "--project <key>",
6958
+ "description": "Project override",
6941
6959
  "required": true,
6942
- "valueHint": "type"
6960
+ "valueHint": "key"
6943
6961
  },
6944
6962
  {
6945
- "flags": "--all-trackers",
6946
- "description": "Query all configured trackers",
6947
- "required": false,
6948
- "valueHint": null
6963
+ "flags": "--issue <id>",
6964
+ "description": "Issue override",
6965
+ "required": true,
6966
+ "valueHint": "id"
6949
6967
  },
6950
6968
  {
6951
- "flags": "--triage",
6952
- "description": "Show triage queue",
6953
- "required": false,
6954
- "valueHint": null
6969
+ "flags": "--pack <id>",
6970
+ "description": "Set a whole skill pack instead of one skill",
6971
+ "required": true,
6972
+ "valueHint": "id"
6955
6973
  }
6956
6974
  ],
6957
6975
  "aliases": [],
6958
- "category": "Lifecycle"
6976
+ "category": "Core"
6959
6977
  },
6960
6978
  {
6961
- "id": "pan-show",
6962
- "path": ["show"],
6963
- "display": "/pan show",
6964
- "description": "Unified lens: derived issue state, CV, context, health for one issue",
6979
+ "id": "pan-skills-pack",
6980
+ "path": ["skills", "pack"],
6981
+ "display": "/pan skills pack",
6982
+ "description": "Register, update, and cache external skill packs pinned to a commit",
6983
+ "args": [],
6984
+ "options": [],
6985
+ "aliases": [],
6986
+ "category": "Core"
6987
+ },
6988
+ {
6989
+ "id": "pan-skills-pack-add",
6990
+ "path": [
6991
+ "skills",
6992
+ "pack",
6993
+ "add"
6994
+ ],
6995
+ "display": "/pan skills pack add",
6996
+ "description": "Register a git skill pack at the commit a ref resolves to (enables nothing)",
6965
6997
  "args": [{
6966
6998
  "name": "id",
6967
6999
  "required": true,
6968
7000
  "variadic": false
7001
+ }, {
7002
+ "name": "url",
7003
+ "required": true,
7004
+ "variadic": false
6969
7005
  }],
6970
7006
  "options": [
6971
7007
  {
6972
- "flags": "--cv",
6973
- "description": "Agent work history only",
6974
- "required": false,
6975
- "valueHint": null
6976
- },
6977
- {
6978
- "flags": "--context",
6979
- "description": "Context engineering state only",
6980
- "required": false,
6981
- "valueHint": null
7008
+ "flags": "--ref <ref>",
7009
+ "description": "Tag or branch to pin",
7010
+ "required": true,
7011
+ "valueHint": "ref"
6982
7012
  },
6983
7013
  {
6984
- "flags": "--health",
6985
- "description": "Health + heartbeat only",
6986
- "required": false,
6987
- "valueHint": null
7014
+ "flags": "--adapter <adapter>",
7015
+ "description": "plain, claude-plugin, or deft-readonly",
7016
+ "required": true,
7017
+ "valueHint": "adapter"
6988
7018
  },
6989
7019
  {
6990
- "flags": "--json",
6991
- "description": "Output as JSON",
7020
+ "flags": "--yes",
7021
+ "description": "Trust the resolved commit without asking",
6992
7022
  "required": false,
6993
7023
  "valueHint": null
6994
7024
  }
6995
7025
  ],
6996
7026
  "aliases": [],
6997
- "category": "Observation"
7027
+ "category": "Core"
6998
7028
  },
6999
7029
  {
7000
- "id": "pan-open",
7001
- "path": ["open"],
7002
- "display": "/pan open",
7003
- "description": "Open an issue workspace in your preferred editor",
7030
+ "id": "pan-skills-pack-update",
7031
+ "path": [
7032
+ "skills",
7033
+ "pack",
7034
+ "update"
7035
+ ],
7036
+ "display": "/pan skills pack update",
7037
+ "description": "Move a pack to the commit its ref (or --ref) now resolves to",
7004
7038
  "args": [{
7005
7039
  "name": "id",
7006
7040
  "required": true,
7007
7041
  "variadic": false
7008
7042
  }],
7009
7043
  "options": [{
7010
- "flags": "-e, --editor <editor>",
7011
- "description": "Editor to use (cursor, windsurf, vscode, zed, etc.)",
7044
+ "flags": "--ref <ref>",
7045
+ "description": "Switch to a different tag or branch",
7012
7046
  "required": true,
7013
- "valueHint": "editor"
7047
+ "valueHint": "ref"
7048
+ }, {
7049
+ "flags": "--yes",
7050
+ "description": "Trust the new commit without asking",
7051
+ "required": false,
7052
+ "valueHint": null
7014
7053
  }],
7015
7054
  "aliases": [],
7016
- "category": "Observation"
7055
+ "category": "Core"
7017
7056
  },
7018
7057
  {
7019
- "id": "pan-review",
7020
- "path": ["review"],
7021
- "display": "/pan review",
7022
- "description": "Review-loop management: request re-review, abort reviewers, restart a round",
7058
+ "id": "pan-skills-pack-list",
7059
+ "path": [
7060
+ "skills",
7061
+ "pack",
7062
+ "list"
7063
+ ],
7064
+ "display": "/pan skills pack list",
7065
+ "description": "List registered skill packs",
7023
7066
  "args": [],
7024
- "options": [],
7067
+ "options": [{
7068
+ "flags": "--json",
7069
+ "description": "Output as JSON",
7070
+ "required": false,
7071
+ "valueHint": null
7072
+ }, {
7073
+ "flags": "--offline",
7074
+ "description": "Skip the update check (no network)",
7075
+ "required": false,
7076
+ "valueHint": null
7077
+ }],
7025
7078
  "aliases": [],
7026
- "category": "Review"
7079
+ "category": "Core"
7027
7080
  },
7028
7081
  {
7029
- "id": "pan-review-request",
7030
- "path": ["review", "request"],
7031
- "display": "/pan review request",
7032
- "description": "Request re-review after fixing feedback",
7082
+ "id": "pan-skills-pack-remove",
7083
+ "path": [
7084
+ "skills",
7085
+ "pack",
7086
+ "remove"
7087
+ ],
7088
+ "display": "/pan skills pack remove",
7089
+ "description": "Unregister a pack, clear its global toggles, and delete its cache",
7033
7090
  "args": [{
7034
7091
  "name": "id",
7035
7092
  "required": true,
7036
7093
  "variadic": false
7037
7094
  }],
7038
- "options": [{
7039
- "flags": "-m, --message <text>",
7040
- "description": "Message describing the fixes applied",
7041
- "required": true,
7042
- "valueHint": "text"
7043
- }],
7095
+ "options": [],
7044
7096
  "aliases": [],
7045
- "category": "Review"
7097
+ "category": "Core"
7046
7098
  },
7047
7099
  {
7048
- "id": "pan-review-abort",
7049
- "path": ["review", "abort"],
7050
- "display": "/pan review abort",
7051
- "description": "Kill all running reviewer sessions and leave the worker idle",
7100
+ "id": "pan-skills-pack-sync",
7101
+ "path": [
7102
+ "skills",
7103
+ "pack",
7104
+ "sync"
7105
+ ],
7106
+ "display": "/pan skills pack sync",
7107
+ "description": "Re-fetch packs and extract their trusted commits (all packs when omitted)",
7052
7108
  "args": [{
7053
7109
  "name": "id",
7054
- "required": true,
7110
+ "required": false,
7055
7111
  "variadic": false
7056
7112
  }],
7057
7113
  "options": [],
7058
7114
  "aliases": [],
7059
- "category": "Review"
7115
+ "category": "Core"
7060
7116
  },
7061
7117
  {
7062
- "id": "pan-review-restart",
7063
- "path": ["review", "restart"],
7064
- "display": "/pan review restart",
7065
- "description": "Resume review and re-dispatch reviewers missing a report",
7066
- "args": [{
7067
- "name": "id",
7068
- "required": true,
7069
- "variadic": false
7070
- }],
7118
+ "id": "pan-skills-pack-gc",
7119
+ "path": [
7120
+ "skills",
7121
+ "pack",
7122
+ "gc"
7123
+ ],
7124
+ "display": "/pan skills pack gc",
7125
+ "description": "Remove unused skill pack mounts and dangling launch links",
7126
+ "args": [],
7071
7127
  "options": [{
7072
- "flags": "--model <model>",
7073
- "description": "Override model for all reviewers (e.g. gpt-5.4, claude-sonnet-5)",
7128
+ "flags": "--max-age-days <n>",
7129
+ "description": "Keep unused mounts younger than this",
7074
7130
  "required": true,
7075
- "valueHint": "model"
7076
- }, {
7077
- "flags": "--role <role>",
7078
- "description": "Restart only a specific reviewer role (correctness/security/performance/requirements)",
7131
+ "valueHint": "n"
7132
+ }],
7133
+ "aliases": [],
7134
+ "category": "Core"
7135
+ },
7136
+ {
7137
+ "id": "pan-skills-pack-sageox",
7138
+ "path": [
7139
+ "skills",
7140
+ "pack",
7141
+ "sageox"
7142
+ ],
7143
+ "display": "/pan skills pack sageox",
7144
+ "description": "SageOx pack state and per-project upload opt-in (PAN-2444)",
7145
+ "args": [],
7146
+ "options": [],
7147
+ "aliases": [],
7148
+ "category": "Core"
7149
+ },
7150
+ {
7151
+ "id": "pan-skills-pack-sageox-status",
7152
+ "path": [
7153
+ "skills",
7154
+ "pack",
7155
+ "sageox",
7156
+ "status"
7157
+ ],
7158
+ "display": "/pan skills pack sageox status",
7159
+ "description": "Show, per project, the sageox pack state and the upload state",
7160
+ "args": [],
7161
+ "options": [{
7162
+ "flags": "--project <key>",
7163
+ "description": "Only this project",
7164
+ "required": true,
7165
+ "valueHint": "key"
7166
+ }, {
7167
+ "flags": "--json",
7168
+ "description": "Output as JSON",
7169
+ "required": false,
7170
+ "valueHint": null
7171
+ }],
7172
+ "aliases": [],
7173
+ "category": "Core"
7174
+ },
7175
+ {
7176
+ "id": "pan-skills-pack-sageox-upload",
7177
+ "path": [
7178
+ "skills",
7179
+ "pack",
7180
+ "sageox",
7181
+ "upload"
7182
+ ],
7183
+ "display": "/pan skills pack sageox upload",
7184
+ "description": "Turn SageOx uploads on or off for a project (off by default)",
7185
+ "args": [{
7186
+ "name": "state",
7187
+ "required": true,
7188
+ "variadic": false
7189
+ }],
7190
+ "options": [{
7191
+ "flags": "--project <key>",
7192
+ "description": "Project key",
7193
+ "required": true,
7194
+ "valueHint": "key"
7195
+ }],
7196
+ "aliases": [],
7197
+ "category": "Core"
7198
+ },
7199
+ {
7200
+ "id": "pan-skills-deft",
7201
+ "path": ["skills", "deft"],
7202
+ "display": "/pan skills deft",
7203
+ "description": "Deft Directive detection, ownership report, and managed mode",
7204
+ "args": [],
7205
+ "options": [],
7206
+ "aliases": [],
7207
+ "category": "Core"
7208
+ },
7209
+ {
7210
+ "id": "pan-skills-deft-status",
7211
+ "path": [
7212
+ "skills",
7213
+ "deft",
7214
+ "status"
7215
+ ],
7216
+ "display": "/pan skills deft status",
7217
+ "description": "Show Directive detection, the deft pack, the skill map, managed mode, and the ownership report",
7218
+ "args": [],
7219
+ "options": [{
7220
+ "flags": "--project <key>",
7221
+ "description": "Registered project (default: the current repo)",
7222
+ "required": true,
7223
+ "valueHint": "key"
7224
+ }, {
7225
+ "flags": "--json",
7226
+ "description": "Output as JSON",
7227
+ "required": false,
7228
+ "valueHint": null
7229
+ }],
7230
+ "aliases": [],
7231
+ "category": "Core"
7232
+ },
7233
+ {
7234
+ "id": "pan-skills-deft-enable",
7235
+ "path": [
7236
+ "skills",
7237
+ "deft",
7238
+ "enable"
7239
+ ],
7240
+ "display": "/pan skills deft enable",
7241
+ "description": "Enable Deft managed mode for a Directive project after showing the ownership plan",
7242
+ "args": [],
7243
+ "options": [{
7244
+ "flags": "--project <key>",
7245
+ "description": "Registered project",
7246
+ "required": true,
7247
+ "valueHint": "key"
7248
+ }, {
7249
+ "flags": "--yes",
7250
+ "description": "Accept the printed plan without asking",
7251
+ "required": false,
7252
+ "valueHint": null
7253
+ }],
7254
+ "aliases": [],
7255
+ "category": "Core"
7256
+ },
7257
+ {
7258
+ "id": "pan-skills-deft-disable",
7259
+ "path": [
7260
+ "skills",
7261
+ "deft",
7262
+ "disable"
7263
+ ],
7264
+ "display": "/pan skills deft disable",
7265
+ "description": "Disable Deft managed mode; project files are untouched",
7266
+ "args": [],
7267
+ "options": [{
7268
+ "flags": "--project <key>",
7269
+ "description": "Registered project",
7270
+ "required": true,
7271
+ "valueHint": "key"
7272
+ }],
7273
+ "aliases": [],
7274
+ "category": "Core"
7275
+ },
7276
+ {
7277
+ "id": "pan-pair",
7278
+ "path": ["pair"],
7279
+ "display": "/pan pair",
7280
+ "description": "Print a one-time URL that pairs another device with this dashboard (see configuration/remote-access.mdx)",
7281
+ "args": [],
7282
+ "options": [
7283
+ {
7284
+ "flags": "--label <name>",
7285
+ "description": "Name to record for the pairing in the activity log",
7286
+ "required": true,
7287
+ "valueHint": "name"
7288
+ },
7289
+ {
7290
+ "flags": "--url <base>",
7291
+ "description": "Base URL the other device can reach (default: this dashboard's API URL)",
7292
+ "required": true,
7293
+ "valueHint": "base"
7294
+ },
7295
+ {
7296
+ "flags": "--json",
7297
+ "description": "Print { url, credential, expiresAt } as JSON",
7298
+ "required": false,
7299
+ "valueHint": null
7300
+ }
7301
+ ],
7302
+ "aliases": [],
7303
+ "category": "CLI"
7304
+ },
7305
+ {
7306
+ "id": "pan-devices",
7307
+ "path": ["devices"],
7308
+ "display": "/pan devices",
7309
+ "description": "List or revoke paired devices (see configuration/remote-access.mdx)",
7310
+ "args": [],
7311
+ "options": [],
7312
+ "aliases": [],
7313
+ "category": "CLI"
7314
+ },
7315
+ {
7316
+ "id": "pan-devices-list",
7317
+ "path": ["devices", "list"],
7318
+ "display": "/pan devices list",
7319
+ "description": "List paired devices with created, last-used and revoked times",
7320
+ "args": [],
7321
+ "options": [{
7322
+ "flags": "--json",
7323
+ "description": "Print the devices as JSON",
7324
+ "required": false,
7325
+ "valueHint": null
7326
+ }],
7327
+ "aliases": [],
7328
+ "category": "CLI"
7329
+ },
7330
+ {
7331
+ "id": "pan-devices-revoke",
7332
+ "path": ["devices", "revoke"],
7333
+ "display": "/pan devices revoke",
7334
+ "description": "Revoke a paired device and close its live connections",
7335
+ "args": [{
7336
+ "name": "id",
7337
+ "required": true,
7338
+ "variadic": false
7339
+ }],
7340
+ "options": [],
7341
+ "aliases": [],
7342
+ "category": "CLI"
7343
+ },
7344
+ {
7345
+ "id": "pan-token",
7346
+ "path": ["token"],
7347
+ "display": "/pan token",
7348
+ "description": "Create, list or revoke scoped access tokens (see configuration/remote-access.mdx)",
7349
+ "args": [],
7350
+ "options": [],
7351
+ "aliases": [],
7352
+ "category": "CLI"
7353
+ },
7354
+ {
7355
+ "id": "pan-token-create",
7356
+ "path": ["token", "create"],
7357
+ "display": "/pan token create",
7358
+ "description": "Create a scoped access token and print it once",
7359
+ "args": [{
7360
+ "name": "name",
7361
+ "required": true,
7362
+ "variadic": false
7363
+ }],
7364
+ "options": [{
7365
+ "flags": "--scopes <list>",
7366
+ "description": "Comma-separated scopes: read:events, read:state, read:conversations, tell, operate, admin",
7367
+ "required": true,
7368
+ "valueHint": "list"
7369
+ }, {
7370
+ "flags": "--json",
7371
+ "description": "Print { id, name, scopes, token } as JSON",
7372
+ "required": false,
7373
+ "valueHint": null
7374
+ }],
7375
+ "aliases": [],
7376
+ "category": "CLI"
7377
+ },
7378
+ {
7379
+ "id": "pan-token-list",
7380
+ "path": ["token", "list"],
7381
+ "display": "/pan token list",
7382
+ "description": "List access tokens with scopes and created, last-used and revoked times",
7383
+ "args": [],
7384
+ "options": [{
7385
+ "flags": "--json",
7386
+ "description": "Print the tokens as JSON",
7387
+ "required": false,
7388
+ "valueHint": null
7389
+ }],
7390
+ "aliases": [],
7391
+ "category": "CLI"
7392
+ },
7393
+ {
7394
+ "id": "pan-token-revoke",
7395
+ "path": ["token", "revoke"],
7396
+ "display": "/pan token revoke",
7397
+ "description": "Revoke an access token and close its live connections",
7398
+ "args": [{
7399
+ "name": "id",
7400
+ "required": true,
7401
+ "variadic": false
7402
+ }],
7403
+ "options": [],
7404
+ "aliases": [],
7405
+ "category": "CLI"
7406
+ },
7407
+ {
7408
+ "id": "pan-issues",
7409
+ "path": ["issues"],
7410
+ "display": "/pan issues",
7411
+ "description": "List and triage work across configured trackers",
7412
+ "args": [],
7413
+ "options": [
7414
+ {
7415
+ "flags": "--all",
7416
+ "description": "Include closed issues",
7417
+ "required": false,
7418
+ "valueHint": null
7419
+ },
7420
+ {
7421
+ "flags": "--mine",
7422
+ "description": "Show only my assigned issues",
7423
+ "required": false,
7424
+ "valueHint": null
7425
+ },
7426
+ {
7427
+ "flags": "--json",
7428
+ "description": "Output as JSON",
7429
+ "required": false,
7430
+ "valueHint": null
7431
+ },
7432
+ {
7433
+ "flags": "--tracker <type>",
7434
+ "description": "Query specific tracker (linear/github/gitlab)",
7435
+ "required": true,
7436
+ "valueHint": "type"
7437
+ },
7438
+ {
7439
+ "flags": "--all-trackers",
7440
+ "description": "Query all configured trackers",
7441
+ "required": false,
7442
+ "valueHint": null
7443
+ },
7444
+ {
7445
+ "flags": "--triage",
7446
+ "description": "Show triage queue",
7447
+ "required": false,
7448
+ "valueHint": null
7449
+ }
7450
+ ],
7451
+ "aliases": [],
7452
+ "category": "Lifecycle"
7453
+ },
7454
+ {
7455
+ "id": "pan-show",
7456
+ "path": ["show"],
7457
+ "display": "/pan show",
7458
+ "description": "Unified lens: derived issue state, CV, context, health for one issue",
7459
+ "args": [{
7460
+ "name": "id",
7461
+ "required": true,
7462
+ "variadic": false
7463
+ }],
7464
+ "options": [
7465
+ {
7466
+ "flags": "--cv",
7467
+ "description": "Agent work history only",
7468
+ "required": false,
7469
+ "valueHint": null
7470
+ },
7471
+ {
7472
+ "flags": "--context",
7473
+ "description": "Context engineering state only",
7474
+ "required": false,
7475
+ "valueHint": null
7476
+ },
7477
+ {
7478
+ "flags": "--health",
7479
+ "description": "Health + heartbeat only",
7480
+ "required": false,
7481
+ "valueHint": null
7482
+ },
7483
+ {
7484
+ "flags": "--json",
7485
+ "description": "Output as JSON",
7486
+ "required": false,
7487
+ "valueHint": null
7488
+ }
7489
+ ],
7490
+ "aliases": [],
7491
+ "category": "Observation"
7492
+ },
7493
+ {
7494
+ "id": "pan-open",
7495
+ "path": ["open"],
7496
+ "display": "/pan open",
7497
+ "description": "Open an issue workspace in your preferred editor",
7498
+ "args": [{
7499
+ "name": "id",
7500
+ "required": true,
7501
+ "variadic": false
7502
+ }],
7503
+ "options": [{
7504
+ "flags": "-e, --editor <editor>",
7505
+ "description": "Editor to use (cursor, windsurf, vscode, zed, etc.)",
7506
+ "required": true,
7507
+ "valueHint": "editor"
7508
+ }],
7509
+ "aliases": [],
7510
+ "category": "Observation"
7511
+ },
7512
+ {
7513
+ "id": "pan-review",
7514
+ "path": ["review"],
7515
+ "display": "/pan review",
7516
+ "description": "Review-loop management: request re-review, abort reviewers, restart a round",
7517
+ "args": [],
7518
+ "options": [],
7519
+ "aliases": [],
7520
+ "category": "Review"
7521
+ },
7522
+ {
7523
+ "id": "pan-review-request",
7524
+ "path": ["review", "request"],
7525
+ "display": "/pan review request",
7526
+ "description": "Request re-review after fixing feedback",
7527
+ "args": [{
7528
+ "name": "id",
7529
+ "required": true,
7530
+ "variadic": false
7531
+ }],
7532
+ "options": [{
7533
+ "flags": "-m, --message <text>",
7534
+ "description": "Message describing the fixes applied",
7535
+ "required": true,
7536
+ "valueHint": "text"
7537
+ }],
7538
+ "aliases": [],
7539
+ "category": "Review"
7540
+ },
7541
+ {
7542
+ "id": "pan-review-waive-test-removal",
7543
+ "path": ["review", "waive-test-removal"],
7544
+ "display": "/pan review waive-test-removal",
7545
+ "description": "Operator-only: let a net test removal past the test-skip gate at the current head",
7546
+ "args": [{
7547
+ "name": "id",
7548
+ "required": true,
7549
+ "variadic": false
7550
+ }],
7551
+ "options": [{
7552
+ "flags": "--reason <text>",
7553
+ "description": "Why the removed tests are gone and nothing replaces them",
7554
+ "required": true,
7555
+ "valueHint": "text"
7556
+ }],
7557
+ "aliases": [],
7558
+ "category": "Review"
7559
+ },
7560
+ {
7561
+ "id": "pan-review-abort",
7562
+ "path": ["review", "abort"],
7563
+ "display": "/pan review abort",
7564
+ "description": "Kill all running reviewer sessions and leave the worker idle",
7565
+ "args": [{
7566
+ "name": "id",
7567
+ "required": true,
7568
+ "variadic": false
7569
+ }],
7570
+ "options": [],
7571
+ "aliases": [],
7572
+ "category": "Review"
7573
+ },
7574
+ {
7575
+ "id": "pan-review-restart",
7576
+ "path": ["review", "restart"],
7577
+ "display": "/pan review restart",
7578
+ "description": "Resume review and re-dispatch reviewers missing a report",
7579
+ "args": [{
7580
+ "name": "id",
7581
+ "required": true,
7582
+ "variadic": false
7583
+ }],
7584
+ "options": [{
7585
+ "flags": "--model <model>",
7586
+ "description": "Override model for all reviewers (e.g. gpt-5.4, claude-sonnet-5)",
7587
+ "required": true,
7588
+ "valueHint": "model"
7589
+ }, {
7590
+ "flags": "--role <role>",
7591
+ "description": "Restart only a specific reviewer role (correctness/security/performance/requirements)",
7079
7592
  "required": true,
7080
7593
  "valueHint": "role"
7081
7594
  }],
@@ -7168,7 +7681,7 @@ const COMPOSER_COMMAND_MANIFEST = [
7168
7681
  },
7169
7682
  {
7170
7683
  "flags": "--effort <level>",
7171
- "description": "Planning effort: low | medium | high",
7684
+ "description": "Planning effort: low | medium | high | xhigh | max",
7172
7685
  "required": true,
7173
7686
  "valueHint": "level"
7174
7687
  },
@@ -7224,6 +7737,12 @@ const COMPOSER_COMMAND_MANIFEST = [
7224
7737
  "description": "Bypass the PRD-first gate for a genuinely trivial issue (loud; prefer writing the PRD)",
7225
7738
  "required": false,
7226
7739
  "valueHint": null
7740
+ },
7741
+ {
7742
+ "flags": "--critic",
7743
+ "description": "Require an independent different-family plan critique before promotion (automatic for architecture, substrate-improvement and security labels)",
7744
+ "required": false,
7745
+ "valueHint": null
7227
7746
  }
7228
7747
  ],
7229
7748
  "aliases": [],
@@ -7276,6 +7795,43 @@ const COMPOSER_COMMAND_MANIFEST = [
7276
7795
  "aliases": [],
7277
7796
  "category": "Lifecycle"
7278
7797
  },
7798
+ {
7799
+ "id": "pan-ask",
7800
+ "path": ["ask"],
7801
+ "display": "/pan ask",
7802
+ "description": "Ask the operator a blocking decision; it appears in the dashboard Needs-you",
7803
+ "args": [{
7804
+ "name": "id",
7805
+ "required": true,
7806
+ "variadic": false
7807
+ }, {
7808
+ "name": "question",
7809
+ "required": false,
7810
+ "variadic": false
7811
+ }],
7812
+ "options": [
7813
+ {
7814
+ "flags": "--option <label>",
7815
+ "description": "A choice the operator can pick (repeat 2-4 times)",
7816
+ "required": true,
7817
+ "valueHint": "label"
7818
+ },
7819
+ {
7820
+ "flags": "--context <text>",
7821
+ "description": "What you already tried or know, shown with the question",
7822
+ "required": true,
7823
+ "valueHint": "text"
7824
+ },
7825
+ {
7826
+ "flags": "--withdraw",
7827
+ "description": "Close your open decision request (answered another way, or no longer needed)",
7828
+ "required": false,
7829
+ "valueHint": null
7830
+ }
7831
+ ],
7832
+ "aliases": [],
7833
+ "category": "CLI"
7834
+ },
7279
7835
  {
7280
7836
  "id": "pan-answer",
7281
7837
  "path": ["answer"],
@@ -7424,12 +7980,24 @@ const COMPOSER_COMMAND_MANIFEST = [
7424
7980
  "required": true,
7425
7981
  "valueHint": "model"
7426
7982
  },
7983
+ {
7984
+ "flags": "--effort <level>",
7985
+ "description": "Reasoning effort for the new conversation: low, medium, high, xhigh or max; defaults to the source conversation's effort",
7986
+ "required": true,
7987
+ "valueHint": "level"
7988
+ },
7427
7989
  {
7428
7990
  "flags": "--cwd <path>",
7429
7991
  "description": "Working directory for the summary-forked session",
7430
7992
  "required": true,
7431
7993
  "valueHint": "path"
7432
7994
  },
7995
+ {
7996
+ "flags": "--allow-primary",
7997
+ "description": "Operator only: allow --cwd to be a project's primary checkout (refused for agent sessions)",
7998
+ "required": false,
7999
+ "valueHint": null
8000
+ },
7433
8001
  {
7434
8002
  "flags": "--project <key>",
7435
8003
  "description": "Project (yaml key or display name) for the new conversation; defaults to inheriting the source conversation's project",
@@ -7467,6 +8035,12 @@ const COMPOSER_COMMAND_MANIFEST = [
7467
8035
  "required": true,
7468
8036
  "valueHint": "model"
7469
8037
  },
8038
+ {
8039
+ "flags": "--effort <level>",
8040
+ "description": "Reasoning effort for the new conversation: low, medium, high, xhigh or max; defaults to the source conversation's effort",
8041
+ "required": true,
8042
+ "valueHint": "level"
8043
+ },
7470
8044
  {
7471
8045
  "flags": "--harness <harness>",
7472
8046
  "description": "Ignored: harness is provider-default-only (PAN-1984)",
@@ -7479,6 +8053,12 @@ const COMPOSER_COMMAND_MANIFEST = [
7479
8053
  "required": true,
7480
8054
  "valueHint": "path"
7481
8055
  },
8056
+ {
8057
+ "flags": "--allow-primary",
8058
+ "description": "Operator only: allow --cwd to be a project's primary checkout (refused for agent sessions)",
8059
+ "required": false,
8060
+ "valueHint": null
8061
+ },
7482
8062
  {
7483
8063
  "flags": "--project <key>",
7484
8064
  "description": "Project (yaml key or display name) for the new conversation; defaults to inheriting the source conversation's project",
@@ -7520,6 +8100,24 @@ const COMPOSER_COMMAND_MANIFEST = [
7520
8100
  "description": "Ignored: author harness is provider-default-only (PAN-1984)",
7521
8101
  "required": true,
7522
8102
  "valueHint": "harness"
8103
+ },
8104
+ {
8105
+ "flags": "--skill <name>",
8106
+ "description": "Turn this skill on for the new conversation only (repeatable); a pack skill is <pack>/<skill>",
8107
+ "required": true,
8108
+ "valueHint": "name"
8109
+ },
8110
+ {
8111
+ "flags": "--pack <id>",
8112
+ "description": "Turn every skill of this cached skill pack on for the new conversation only (repeatable)",
8113
+ "required": true,
8114
+ "valueHint": "id"
8115
+ },
8116
+ {
8117
+ "flags": "--hold",
8118
+ "description": "Create and launch the new conversation without sending the kickoff; start it with Send in the dashboard or pan handoff start <conv>",
8119
+ "required": false,
8120
+ "valueHint": null
7523
8121
  }
7524
8122
  ],
7525
8123
  "aliases": [],
@@ -8309,6 +8907,11 @@ const COMPOSER_COMMAND_MANIFEST = [
8309
8907
  "description": "Print JSON",
8310
8908
  "required": false,
8311
8909
  "valueHint": null
8910
+ }, {
8911
+ "flags": "--steal",
8912
+ "description": "Claim even when a running agent holds this item or an overlapping one (foreman/operator override)",
8913
+ "required": false,
8914
+ "valueHint": null
8312
8915
  }],
8313
8916
  "aliases": [],
8314
8917
  "category": "Lifecycle"
@@ -8355,6 +8958,11 @@ const COMPOSER_COMMAND_MANIFEST = [
8355
8958
  "description": "Print JSON",
8356
8959
  "required": false,
8357
8960
  "valueHint": null
8961
+ }, {
8962
+ "flags": "--on <refs...>",
8963
+ "description": "Issues or PRs this item waits on (PAN-123, #45, owner/repo#45, PR URL); Overdeck wakes the agent when all have merged",
8964
+ "required": true,
8965
+ "valueHint": "refs..."
8358
8966
  }],
8359
8967
  "aliases": [],
8360
8968
  "category": "Lifecycle"
@@ -8461,12 +9069,187 @@ const COMPOSER_COMMAND_MANIFEST = [
8461
9069
  "required": false,
8462
9070
  "valueHint": null
8463
9071
  },
8464
- {
8465
- "flags": "--labels <labels>",
8466
- "description": "Comma-separated labels for routing (e.g., docs,marketing)",
8467
- "required": true,
8468
- "valueHint": "labels"
8469
- },
9072
+ {
9073
+ "flags": "--labels <labels>",
9074
+ "description": "Comma-separated labels for routing (e.g., docs,marketing)",
9075
+ "required": true,
9076
+ "valueHint": "labels"
9077
+ },
9078
+ {
9079
+ "flags": "--project <path>",
9080
+ "description": "Explicit project path (overrides registry)",
9081
+ "required": true,
9082
+ "valueHint": "path"
9083
+ },
9084
+ {
9085
+ "flags": "--docker",
9086
+ "description": "Start Docker containers after workspace creation",
9087
+ "required": false,
9088
+ "valueHint": null
9089
+ },
9090
+ {
9091
+ "flags": "--remote",
9092
+ "description": "Create workspace on remote VM (Fly.io)",
9093
+ "required": false,
9094
+ "valueHint": null
9095
+ },
9096
+ {
9097
+ "flags": "--local",
9098
+ "description": "Create workspace locally (explicit override)",
9099
+ "required": false,
9100
+ "valueHint": null
9101
+ }
9102
+ ],
9103
+ "aliases": [],
9104
+ "category": "Workspace"
9105
+ },
9106
+ {
9107
+ "id": "pan-workspace-migrate",
9108
+ "path": ["workspace", "migrate"],
9109
+ "display": "/pan workspace migrate",
9110
+ "description": "Migrate workspace between local and remote (stops+pauses the local agent, commits and pushes all work first)",
9111
+ "args": [{
9112
+ "name": "issueId",
9113
+ "required": true,
9114
+ "variadic": false
9115
+ }],
9116
+ "options": [
9117
+ {
9118
+ "flags": "--to <location>",
9119
+ "description": "Target location: \"remote\" or \"local\" (default: auto-detect from current location)",
9120
+ "required": true,
9121
+ "valueHint": "location"
9122
+ },
9123
+ {
9124
+ "flags": "--keep",
9125
+ "description": "Keep the source workspace after migration",
9126
+ "required": false,
9127
+ "valueHint": null
9128
+ },
9129
+ {
9130
+ "flags": "--force",
9131
+ "description": "Overwrite an existing destination workspace / ignore branch-drift guard",
9132
+ "required": false,
9133
+ "valueHint": null
9134
+ }
9135
+ ],
9136
+ "aliases": [],
9137
+ "category": "Workspace"
9138
+ },
9139
+ {
9140
+ "id": "pan-workspace-ssh",
9141
+ "path": ["workspace", "ssh"],
9142
+ "display": "/pan workspace ssh",
9143
+ "description": "SSH into remote workspace VM",
9144
+ "args": [{
9145
+ "name": "issueId",
9146
+ "required": true,
9147
+ "variadic": false
9148
+ }],
9149
+ "options": [],
9150
+ "aliases": [],
9151
+ "category": "Workspace"
9152
+ },
9153
+ {
9154
+ "id": "pan-workspace-sync-auth",
9155
+ "path": ["workspace", "sync-auth"],
9156
+ "display": "/pan workspace sync-auth",
9157
+ "description": "Sync Claude Code credentials to remote workspace",
9158
+ "args": [{
9159
+ "name": "issueId",
9160
+ "required": true,
9161
+ "variadic": false
9162
+ }],
9163
+ "options": [],
9164
+ "aliases": [],
9165
+ "category": "Workspace"
9166
+ },
9167
+ {
9168
+ "id": "pan-workspace-start",
9169
+ "path": ["workspace", "start"],
9170
+ "display": "/pan workspace start",
9171
+ "description": "Start a stopped remote workspace",
9172
+ "args": [{
9173
+ "name": "issueId",
9174
+ "required": true,
9175
+ "variadic": false
9176
+ }],
9177
+ "options": [],
9178
+ "aliases": [],
9179
+ "category": "Workspace"
9180
+ },
9181
+ {
9182
+ "id": "pan-workspace-stop",
9183
+ "path": ["workspace", "stop"],
9184
+ "display": "/pan workspace stop",
9185
+ "description": "Stop (hibernate) a remote workspace",
9186
+ "args": [{
9187
+ "name": "issueId",
9188
+ "required": true,
9189
+ "variadic": false
9190
+ }],
9191
+ "options": [],
9192
+ "aliases": [],
9193
+ "category": "Workspace"
9194
+ },
9195
+ {
9196
+ "id": "pan-workspace-list",
9197
+ "path": ["workspace", "list"],
9198
+ "display": "/pan workspace list",
9199
+ "description": "List all workspaces",
9200
+ "args": [],
9201
+ "options": [
9202
+ {
9203
+ "flags": "--json",
9204
+ "description": "Output as JSON",
9205
+ "required": false,
9206
+ "valueHint": null
9207
+ },
9208
+ {
9209
+ "flags": "--all",
9210
+ "description": "List workspaces across all registered projects",
9211
+ "required": false,
9212
+ "valueHint": null
9213
+ },
9214
+ {
9215
+ "flags": "--kind <kind>",
9216
+ "description": "Filter by workspace kind (main|issue|scratch), reading through the resolver",
9217
+ "required": true,
9218
+ "valueHint": "kind"
9219
+ },
9220
+ {
9221
+ "flags": "--archived",
9222
+ "description": "Include archived workspaces (only applies with --kind)",
9223
+ "required": false,
9224
+ "valueHint": null
9225
+ },
9226
+ {
9227
+ "flags": "--stale",
9228
+ "description": "Show reclaim candidates: merged branches still on disk, with sizes",
9229
+ "required": false,
9230
+ "valueHint": null
9231
+ }
9232
+ ],
9233
+ "aliases": [],
9234
+ "category": "Workspace"
9235
+ },
9236
+ {
9237
+ "id": "pan-workspace-destroy",
9238
+ "path": ["workspace", "destroy"],
9239
+ "display": "/pan workspace destroy",
9240
+ "description": "Destroy workspace (all shapes by default: base, strike, and slot worktrees)",
9241
+ "args": [{
9242
+ "name": "issueId",
9243
+ "required": true,
9244
+ "variadic": false
9245
+ }],
9246
+ "options": [
9247
+ {
9248
+ "flags": "--force",
9249
+ "description": "Force removal even with uncommitted changes",
9250
+ "required": false,
9251
+ "valueHint": null
9252
+ },
8470
9253
  {
8471
9254
  "flags": "--project <path>",
8472
9255
  "description": "Explicit project path (overrides registry)",
@@ -8474,20 +9257,14 @@ const COMPOSER_COMMAND_MANIFEST = [
8474
9257
  "valueHint": "path"
8475
9258
  },
8476
9259
  {
8477
- "flags": "--docker",
8478
- "description": "Start Docker containers after workspace creation",
8479
- "required": false,
8480
- "valueHint": null
8481
- },
8482
- {
8483
- "flags": "--remote",
8484
- "description": "Create workspace on remote VM (Fly.io)",
8485
- "required": false,
8486
- "valueHint": null
9260
+ "flags": "--shape <shape>",
9261
+ "description": "Limit to one shape: base|strike|slot|all (default: all)",
9262
+ "required": true,
9263
+ "valueHint": "shape"
8487
9264
  },
8488
9265
  {
8489
- "flags": "--local",
8490
- "description": "Create workspace locally (explicit override)",
9266
+ "flags": "--purge-memory",
9267
+ "description": "Also permanently delete the workspace's memory home (irreversible)",
8491
9268
  "required": false,
8492
9269
  "valueHint": null
8493
9270
  }
@@ -8496,31 +9273,43 @@ const COMPOSER_COMMAND_MANIFEST = [
8496
9273
  "category": "Workspace"
8497
9274
  },
8498
9275
  {
8499
- "id": "pan-workspace-migrate",
8500
- "path": ["workspace", "migrate"],
8501
- "display": "/pan workspace migrate",
8502
- "description": "Migrate workspace between local and remote (stops+pauses the local agent, commits and pushes all work first)",
9276
+ "id": "pan-workspace-new",
9277
+ "path": ["workspace", "new"],
9278
+ "display": "/pan workspace new",
9279
+ "description": "Create a scratch workspace (shared dir by default; --isolated for a git worktree)",
8503
9280
  "args": [{
8504
- "name": "issueId",
9281
+ "name": "name",
8505
9282
  "required": true,
8506
9283
  "variadic": false
8507
9284
  }],
8508
9285
  "options": [
8509
9286
  {
8510
- "flags": "--to <location>",
8511
- "description": "Target location: \"remote\" or \"local\" (default: auto-detect from current location)",
9287
+ "flags": "--project <key>",
9288
+ "description": "Registered project key (defaults to the sole project, or the one resolved from cwd)",
8512
9289
  "required": true,
8513
- "valueHint": "location"
9290
+ "valueHint": "key"
8514
9291
  },
8515
9292
  {
8516
- "flags": "--keep",
8517
- "description": "Keep the source workspace after migration",
9293
+ "flags": "--isolated",
9294
+ "description": "Create an isolated git worktree instead of sharing the project directory",
8518
9295
  "required": false,
8519
9296
  "valueHint": null
8520
9297
  },
8521
9298
  {
8522
- "flags": "--force",
8523
- "description": "Overwrite an existing destination workspace / ignore branch-drift guard",
9299
+ "flags": "--parent-branch <branch>",
9300
+ "description": "Parent branch for the isolated worktree (default: inferred from the project's current branch)",
9301
+ "required": true,
9302
+ "valueHint": "branch"
9303
+ },
9304
+ {
9305
+ "flags": "--target-path <dir>",
9306
+ "description": "Target an existing directory as the workspace path (rejects --isolated)",
9307
+ "required": true,
9308
+ "valueHint": "dir"
9309
+ },
9310
+ {
9311
+ "flags": "--dry-run",
9312
+ "description": "Print the resolved intent as JSON and create nothing",
8524
9313
  "required": false,
8525
9314
  "valueHint": null
8526
9315
  }
@@ -8529,12 +9318,27 @@ const COMPOSER_COMMAND_MANIFEST = [
8529
9318
  "category": "Workspace"
8530
9319
  },
8531
9320
  {
8532
- "id": "pan-workspace-ssh",
8533
- "path": ["workspace", "ssh"],
8534
- "display": "/pan workspace ssh",
8535
- "description": "SSH into remote workspace VM",
9321
+ "id": "pan-workspace-main",
9322
+ "path": ["workspace", "main"],
9323
+ "display": "/pan workspace main",
9324
+ "description": "Resolve or create the project's singleton main workspace",
9325
+ "args": [],
9326
+ "options": [{
9327
+ "flags": "--project <key>",
9328
+ "description": "Registered project key (defaults to the sole project, or the one resolved from cwd)",
9329
+ "required": true,
9330
+ "valueHint": "key"
9331
+ }],
9332
+ "aliases": [],
9333
+ "category": "Workspace"
9334
+ },
9335
+ {
9336
+ "id": "pan-workspace-get",
9337
+ "path": ["workspace", "get"],
9338
+ "display": "/pan workspace get",
9339
+ "description": "Show a workspace row by id",
8536
9340
  "args": [{
8537
- "name": "issueId",
9341
+ "name": "ws",
8538
9342
  "required": true,
8539
9343
  "variadic": false
8540
9344
  }],
@@ -8543,12 +9347,12 @@ const COMPOSER_COMMAND_MANIFEST = [
8543
9347
  "category": "Workspace"
8544
9348
  },
8545
9349
  {
8546
- "id": "pan-workspace-sync-auth",
8547
- "path": ["workspace", "sync-auth"],
8548
- "display": "/pan workspace sync-auth",
8549
- "description": "Sync Claude Code credentials to remote workspace",
9350
+ "id": "pan-workspace-activate",
9351
+ "path": ["workspace", "activate"],
9352
+ "display": "/pan workspace activate",
9353
+ "description": "Touch a workspace's last-accessed time and print its layout hint",
8550
9354
  "args": [{
8551
- "name": "issueId",
9355
+ "name": "ws",
8552
9356
  "required": true,
8553
9357
  "variadic": false
8554
9358
  }],
@@ -8557,12 +9361,12 @@ const COMPOSER_COMMAND_MANIFEST = [
8557
9361
  "category": "Workspace"
8558
9362
  },
8559
9363
  {
8560
- "id": "pan-workspace-start",
8561
- "path": ["workspace", "start"],
8562
- "display": "/pan workspace start",
8563
- "description": "Start a stopped remote workspace",
9364
+ "id": "pan-workspace-archive",
9365
+ "path": ["workspace", "archive"],
9366
+ "display": "/pan workspace archive",
9367
+ "description": "Archive a workspace (reversible; refuses kind=main)",
8564
9368
  "args": [{
8565
- "name": "issueId",
9369
+ "name": "ws",
8566
9370
  "required": true,
8567
9371
  "variadic": false
8568
9372
  }],
@@ -8571,53 +9375,117 @@ const COMPOSER_COMMAND_MANIFEST = [
8571
9375
  "category": "Workspace"
8572
9376
  },
8573
9377
  {
8574
- "id": "pan-workspace-stop",
8575
- "path": ["workspace", "stop"],
8576
- "display": "/pan workspace stop",
8577
- "description": "Stop (hibernate) a remote workspace",
9378
+ "id": "pan-workspace-relocate",
9379
+ "path": ["workspace", "relocate"],
9380
+ "display": "/pan workspace relocate",
9381
+ "description": "Point a workspace at a new path (refuses kind=issue; kind=main requires --force)",
8578
9382
  "args": [{
8579
- "name": "issueId",
9383
+ "name": "ws",
8580
9384
  "required": true,
8581
9385
  "variadic": false
8582
9386
  }],
8583
- "options": [],
9387
+ "options": [{
9388
+ "flags": "--path <dir>",
9389
+ "description": "New path (must be an existing directory)",
9390
+ "required": true,
9391
+ "valueHint": "dir"
9392
+ }, {
9393
+ "flags": "--force",
9394
+ "description": "Allow relocating the main workspace, diverging it from projects.yaml",
9395
+ "required": false,
9396
+ "valueHint": null
9397
+ }],
8584
9398
  "aliases": [],
8585
9399
  "category": "Workspace"
8586
9400
  },
8587
9401
  {
8588
- "id": "pan-workspace-list",
8589
- "path": ["workspace", "list"],
8590
- "display": "/pan workspace list",
8591
- "description": "List all workspaces",
8592
- "args": [],
9402
+ "id": "pan-workspace-render-devcontainer",
9403
+ "path": ["workspace", "render-devcontainer"],
9404
+ "display": "/pan workspace render-devcontainer",
9405
+ "description": "Re-render <workspace>/.devcontainer/ from the project compose template",
9406
+ "args": [{
9407
+ "name": "featureName",
9408
+ "required": true,
9409
+ "variadic": false
9410
+ }],
8593
9411
  "options": [
8594
9412
  {
8595
- "flags": "--json",
8596
- "description": "Output as JSON",
8597
- "required": false,
8598
- "valueHint": null
9413
+ "flags": "--project <key>",
9414
+ "description": "Project key in projects.yaml (e.g. mind-your-now)",
9415
+ "required": true,
9416
+ "valueHint": "key"
8599
9417
  },
8600
9418
  {
8601
- "flags": "--all",
8602
- "description": "List workspaces across all registered projects",
9419
+ "flags": "--workspace <path>",
9420
+ "description": "Override the inferred workspace path",
9421
+ "required": true,
9422
+ "valueHint": "path"
9423
+ },
9424
+ {
9425
+ "flags": "--json",
9426
+ "description": "Emit JSON instead of human-readable output",
8603
9427
  "required": false,
8604
9428
  "valueHint": null
8605
- },
9429
+ }
9430
+ ],
9431
+ "aliases": [],
9432
+ "category": "Workspace"
9433
+ },
9434
+ {
9435
+ "id": "pan-workspace-deep-clean",
9436
+ "path": ["workspace", "deep-clean"],
9437
+ "display": "/pan workspace deep-clean",
9438
+ "description": "Interactive: git clean -fd against a workspace (preserves protected paths)",
9439
+ "args": [{
9440
+ "name": "issueId",
9441
+ "required": true,
9442
+ "variadic": false
9443
+ }],
9444
+ "options": [{
9445
+ "flags": "--yes",
9446
+ "description": "Skip confirmation prompt (still requires a TTY)",
9447
+ "required": false,
9448
+ "valueHint": null
9449
+ }],
9450
+ "aliases": [],
9451
+ "category": "Workspace"
9452
+ },
9453
+ {
9454
+ "id": "pan-workspace-rebuild",
9455
+ "path": ["workspace", "rebuild"],
9456
+ "display": "/pan workspace rebuild",
9457
+ "description": "Tear down, re-render, and restart a single workspace Docker stack",
9458
+ "args": [{
9459
+ "name": "issueId",
9460
+ "required": true,
9461
+ "variadic": false
9462
+ }],
9463
+ "options": [],
9464
+ "aliases": [],
9465
+ "category": "Workspace"
9466
+ },
9467
+ {
9468
+ "id": "pan-workspace-reap",
9469
+ "path": ["workspace", "reap"],
9470
+ "display": "/pan workspace reap",
9471
+ "description": "List or remove orphaned unhealthy workspace Docker stacks and orphaned workspace networks",
9472
+ "args": [],
9473
+ "options": [
8606
9474
  {
8607
- "flags": "--kind <kind>",
8608
- "description": "Filter by workspace kind (main|issue|scratch), reading through the resolver",
9475
+ "flags": "--days <days>",
9476
+ "description": "Minimum age in days",
8609
9477
  "required": true,
8610
- "valueHint": "kind"
9478
+ "valueHint": "days"
8611
9479
  },
8612
9480
  {
8613
- "flags": "--archived",
8614
- "description": "Include archived workspaces (only applies with --kind)",
9481
+ "flags": "--apply",
9482
+ "description": "Run docker compose down -v --remove-orphans for stack candidates and remove orphaned workspace networks",
8615
9483
  "required": false,
8616
9484
  "valueHint": null
8617
9485
  },
8618
9486
  {
8619
- "flags": "--stale",
8620
- "description": "Show reclaim candidates: merged branches still on disk, with sizes",
9487
+ "flags": "--yes",
9488
+ "description": "Skip confirmation when using --apply",
8621
9489
  "required": false,
8622
9490
  "valueHint": null
8623
9491
  }
@@ -8626,345 +9494,515 @@ const COMPOSER_COMMAND_MANIFEST = [
8626
9494
  "category": "Workspace"
8627
9495
  },
8628
9496
  {
8629
- "id": "pan-workspace-destroy",
8630
- "path": ["workspace", "destroy"],
8631
- "display": "/pan workspace destroy",
8632
- "description": "Destroy workspace (all shapes by default: base, strike, and slot worktrees)",
9497
+ "id": "pan-workspace-update",
9498
+ "path": ["workspace", "update"],
9499
+ "display": "/pan workspace update",
9500
+ "description": "Update skills/agents/rules in an existing workspace",
9501
+ "args": [{
9502
+ "name": "issueId",
9503
+ "required": true,
9504
+ "variadic": false
9505
+ }],
9506
+ "options": [{
9507
+ "flags": "--force",
9508
+ "description": "Overwrite user-modified files",
9509
+ "required": false,
9510
+ "valueHint": null
9511
+ }],
9512
+ "aliases": [],
9513
+ "category": "Workspace"
9514
+ },
9515
+ {
9516
+ "id": "pan-workspace-use-config",
9517
+ "path": ["workspace", "use-config"],
9518
+ "display": "/pan workspace use-config",
9519
+ "description": "Copy installed Overdeck config into workspace (makes it user settings)",
9520
+ "args": [{
9521
+ "name": "issueId",
9522
+ "required": true,
9523
+ "variadic": false
9524
+ }],
9525
+ "options": [{
9526
+ "flags": "--project <path>",
9527
+ "description": "Explicit project path (overrides registry)",
9528
+ "required": true,
9529
+ "valueHint": "path"
9530
+ }],
9531
+ "aliases": [],
9532
+ "category": "Workspace"
9533
+ },
9534
+ {
9535
+ "id": "pan-workspace-add-repo",
9536
+ "path": ["workspace", "add-repo"],
9537
+ "display": "/pan workspace add-repo",
9538
+ "description": "Add configured repositories or register a new repository in a polyrepo workspace",
8633
9539
  "args": [{
8634
- "name": "issueId",
9540
+ "name": "workspaceId",
8635
9541
  "required": true,
8636
9542
  "variadic": false
9543
+ }, {
9544
+ "name": "repoNames",
9545
+ "required": false,
9546
+ "variadic": true
8637
9547
  }],
8638
9548
  "options": [
8639
9549
  {
8640
- "flags": "--force",
8641
- "description": "Force removal even with uncommitted changes",
9550
+ "flags": "--dry-run",
9551
+ "description": "Show what would be added",
8642
9552
  "required": false,
8643
9553
  "valueHint": null
8644
9554
  },
8645
9555
  {
8646
- "flags": "--project <path>",
8647
- "description": "Explicit project path (overrides registry)",
9556
+ "flags": "--group <groupName>",
9557
+ "description": "Add all repos from a named group (from groups_file)",
8648
9558
  "required": true,
8649
- "valueHint": "path"
9559
+ "valueHint": "groupName"
8650
9560
  },
8651
9561
  {
8652
- "flags": "--shape <shape>",
8653
- "description": "Limit to one shape: base|strike|slot|all (default: all)",
9562
+ "flags": "--new <gitUrl>",
9563
+ "description": "Register a repository that was created during this issue",
8654
9564
  "required": true,
8655
- "valueHint": "shape"
9565
+ "valueHint": "gitUrl"
8656
9566
  },
8657
9567
  {
8658
- "flags": "--purge-memory",
8659
- "description": "Also permanently delete the workspace's memory home (irreversible)",
8660
- "required": false,
8661
- "valueHint": null
9568
+ "flags": "--project <key>",
9569
+ "description": "Explicit project key from projects.yaml (overrides registry)",
9570
+ "required": true,
9571
+ "valueHint": "key"
8662
9572
  }
8663
9573
  ],
8664
9574
  "aliases": [],
8665
9575
  "category": "Workspace"
8666
9576
  },
8667
9577
  {
8668
- "id": "pan-workspace-new",
8669
- "path": ["workspace", "new"],
8670
- "display": "/pan workspace new",
8671
- "description": "Create a scratch workspace (shared dir by default; --isolated for a git worktree)",
9578
+ "id": "pan-vault",
9579
+ "path": ["vault"],
9580
+ "display": "/pan vault",
9581
+ "description": "Session Vault: encrypted off-machine storage and cross-machine resume for agent conversations",
9582
+ "args": [],
9583
+ "options": [],
9584
+ "aliases": [],
9585
+ "category": "CLI"
9586
+ },
9587
+ {
9588
+ "id": "pan-vault-setup",
9589
+ "path": ["vault", "setup"],
9590
+ "display": "/pan vault setup",
9591
+ "description": "Enable the vault against your own git remote and print the recovery phrase once",
8672
9592
  "args": [{
8673
- "name": "name",
9593
+ "name": "git-url",
8674
9594
  "required": true,
8675
9595
  "variadic": false
8676
9596
  }],
8677
9597
  "options": [
8678
9598
  {
8679
- "flags": "--project <key>",
8680
- "description": "Registered project key (defaults to the sole project, or the one resolved from cwd)",
8681
- "required": true,
8682
- "valueHint": "key"
8683
- },
8684
- {
8685
- "flags": "--isolated",
8686
- "description": "Create an isolated git worktree instead of sharing the project directory",
9599
+ "flags": "--hooks",
9600
+ "description": "Also register the Claude Code Stop hook that saves after each turn",
8687
9601
  "required": false,
8688
9602
  "valueHint": null
8689
9603
  },
8690
9604
  {
8691
- "flags": "--parent-branch <branch>",
8692
- "description": "Parent branch for the isolated worktree (default: inferred from the project's current branch)",
9605
+ "flags": "--passphrase-file <path>",
9606
+ "description": "Also enable passphrase unlock with the passphrase in this file",
8693
9607
  "required": true,
8694
- "valueHint": "branch"
9608
+ "valueHint": "path"
8695
9609
  },
8696
9610
  {
8697
- "flags": "--target-path <dir>",
8698
- "description": "Target an existing directory as the workspace path (rejects --isolated)",
8699
- "required": true,
8700
- "valueHint": "dir"
9611
+ "flags": "--generate-passphrase",
9612
+ "description": "Also enable passphrase unlock with a generated 6-word passphrase, printed once",
9613
+ "required": false,
9614
+ "valueHint": null
8701
9615
  },
8702
9616
  {
8703
- "flags": "--dry-run",
8704
- "description": "Print the resolved intent as JSON and create nothing",
9617
+ "flags": "--no-passphrase",
9618
+ "description": "Do not offer passphrase unlock",
8705
9619
  "required": false,
8706
9620
  "valueHint": null
8707
9621
  }
8708
9622
  ],
8709
9623
  "aliases": [],
8710
- "category": "Workspace"
9624
+ "category": "CLI"
8711
9625
  },
8712
9626
  {
8713
- "id": "pan-workspace-main",
8714
- "path": ["workspace", "main"],
8715
- "display": "/pan workspace main",
8716
- "description": "Resolve or create the project's singleton main workspace",
8717
- "args": [],
9627
+ "id": "pan-vault-join",
9628
+ "path": ["vault", "join"],
9629
+ "display": "/pan vault join",
9630
+ "description": "Join an existing vault from another machine with the vault passphrase or the recovery phrase",
9631
+ "args": [{
9632
+ "name": "git-url",
9633
+ "required": true,
9634
+ "variadic": false
9635
+ }],
8718
9636
  "options": [{
8719
- "flags": "--project <key>",
8720
- "description": "Registered project key (defaults to the sole project, or the one resolved from cwd)",
9637
+ "flags": "--phrase-file <path>",
9638
+ "description": "Read the 24-word recovery phrase from a file instead of prompting",
8721
9639
  "required": true,
8722
- "valueHint": "key"
9640
+ "valueHint": "path"
9641
+ }, {
9642
+ "flags": "--passphrase-file <path>",
9643
+ "description": "Read the vault passphrase from a file instead of prompting",
9644
+ "required": true,
9645
+ "valueHint": "path"
8723
9646
  }],
8724
9647
  "aliases": [],
8725
- "category": "Workspace"
9648
+ "category": "CLI"
8726
9649
  },
8727
9650
  {
8728
- "id": "pan-workspace-get",
8729
- "path": ["workspace", "get"],
8730
- "display": "/pan workspace get",
8731
- "description": "Show a workspace row by id",
8732
- "args": [{
8733
- "name": "ws",
8734
- "required": true,
8735
- "variadic": false
8736
- }],
9651
+ "id": "pan-vault-passphrase",
9652
+ "path": ["vault", "passphrase"],
9653
+ "display": "/pan vault passphrase",
9654
+ "description": "Turn passphrase unlock for new machines on (set) or off (remove); the vault key stays the same",
9655
+ "args": [],
8737
9656
  "options": [],
8738
9657
  "aliases": [],
8739
- "category": "Workspace"
9658
+ "category": "CLI"
8740
9659
  },
8741
9660
  {
8742
- "id": "pan-workspace-activate",
8743
- "path": ["workspace", "activate"],
8744
- "display": "/pan workspace activate",
8745
- "description": "Touch a workspace's last-accessed time and print its layout hint",
8746
- "args": [{
8747
- "name": "ws",
9661
+ "id": "pan-vault-passphrase-set",
9662
+ "path": [
9663
+ "vault",
9664
+ "passphrase",
9665
+ "set"
9666
+ ],
9667
+ "display": "/pan vault passphrase set",
9668
+ "description": "Wrap the vault key under a passphrase so a new machine can join without the recovery phrase",
9669
+ "args": [],
9670
+ "options": [{
9671
+ "flags": "--passphrase-file <path>",
9672
+ "description": "Read the passphrase from a file instead of prompting",
8748
9673
  "required": true,
8749
- "variadic": false
9674
+ "valueHint": "path"
9675
+ }, {
9676
+ "flags": "--generate",
9677
+ "description": "Generate a 6-word passphrase and print it once",
9678
+ "required": false,
9679
+ "valueHint": null
8750
9680
  }],
8751
- "options": [],
8752
9681
  "aliases": [],
8753
- "category": "Workspace"
9682
+ "category": "CLI"
8754
9683
  },
8755
9684
  {
8756
- "id": "pan-workspace-archive",
8757
- "path": ["workspace", "archive"],
8758
- "display": "/pan workspace archive",
8759
- "description": "Archive a workspace (reversible; refuses kind=main)",
8760
- "args": [{
8761
- "name": "ws",
8762
- "required": true,
8763
- "variadic": false
8764
- }],
9685
+ "id": "pan-vault-passphrase-remove",
9686
+ "path": [
9687
+ "vault",
9688
+ "passphrase",
9689
+ "remove"
9690
+ ],
9691
+ "display": "/pan vault passphrase remove",
9692
+ "description": "Delete the passphrase unlock object; joining then needs the recovery phrase",
9693
+ "args": [],
8765
9694
  "options": [],
8766
9695
  "aliases": [],
8767
- "category": "Workspace"
9696
+ "category": "CLI"
8768
9697
  },
8769
9698
  {
8770
- "id": "pan-workspace-relocate",
8771
- "path": ["workspace", "relocate"],
8772
- "display": "/pan workspace relocate",
8773
- "description": "Point a workspace at a new path (refuses kind=issue; kind=main requires --force)",
8774
- "args": [{
8775
- "name": "ws",
8776
- "required": true,
8777
- "variadic": false
8778
- }],
9699
+ "id": "pan-vault-rotate-key",
9700
+ "path": ["vault", "rotate-key"],
9701
+ "display": "/pan vault rotate-key",
9702
+ "description": "Replace the vault key after losing a device: re-encrypt refs under a new key, keep old chunks readable, print a new recovery phrase",
9703
+ "args": [],
9704
+ "options": [
9705
+ {
9706
+ "flags": "--yes",
9707
+ "description": "Rotate without the confirmation prompt",
9708
+ "required": false,
9709
+ "valueHint": null
9710
+ },
9711
+ {
9712
+ "flags": "--passphrase-file <path>",
9713
+ "description": "Re-wrap passphrase unlock under the new key with the passphrase in this file",
9714
+ "required": true,
9715
+ "valueHint": "path"
9716
+ },
9717
+ {
9718
+ "flags": "--generate-passphrase",
9719
+ "description": "Re-wrap passphrase unlock under the new key with a generated 6-word passphrase, printed once",
9720
+ "required": false,
9721
+ "valueHint": null
9722
+ },
9723
+ {
9724
+ "flags": "--no-passphrase",
9725
+ "description": "Turn passphrase unlock off",
9726
+ "required": false,
9727
+ "valueHint": null
9728
+ }
9729
+ ],
9730
+ "aliases": [],
9731
+ "category": "CLI"
9732
+ },
9733
+ {
9734
+ "id": "pan-vault-status",
9735
+ "path": ["vault", "status"],
9736
+ "display": "/pan vault status",
9737
+ "description": "Show backend, this machine, owned records, last sync and the machine list",
9738
+ "args": [],
8779
9739
  "options": [{
8780
- "flags": "--path <dir>",
8781
- "description": "New path (must be an existing directory)",
8782
- "required": true,
8783
- "valueHint": "dir"
8784
- }, {
8785
- "flags": "--force",
8786
- "description": "Allow relocating the main workspace, diverging it from projects.yaml",
9740
+ "flags": "--json",
9741
+ "description": "Output in JSON format",
8787
9742
  "required": false,
8788
9743
  "valueHint": null
8789
9744
  }],
8790
9745
  "aliases": [],
8791
- "category": "Workspace"
9746
+ "category": "CLI"
8792
9747
  },
8793
9748
  {
8794
- "id": "pan-workspace-render-devcontainer",
8795
- "path": ["workspace", "render-devcontainer"],
8796
- "display": "/pan workspace render-devcontainer",
8797
- "description": "Re-render <workspace>/.devcontainer/ from the project compose template",
9749
+ "id": "pan-vault-save",
9750
+ "path": ["vault", "save"],
9751
+ "display": "/pan vault save",
9752
+ "description": "Settle one transcript (by session id or path) or many into the vault",
8798
9753
  "args": [{
8799
- "name": "featureName",
8800
- "required": true,
9754
+ "name": "session-id-or-path",
9755
+ "required": false,
8801
9756
  "variadic": false
8802
9757
  }],
8803
9758
  "options": [
8804
9759
  {
8805
- "flags": "--project <key>",
8806
- "description": "Project key in projects.yaml (e.g. mind-your-now)",
9760
+ "flags": "--all",
9761
+ "description": "Settle every discovered transcript",
9762
+ "required": false,
9763
+ "valueHint": null
9764
+ },
9765
+ {
9766
+ "flags": "--since <date>",
9767
+ "description": "With --all: only transcripts modified on or after this date",
8807
9768
  "required": true,
8808
- "valueHint": "key"
9769
+ "valueHint": "date"
8809
9770
  },
8810
9771
  {
8811
- "flags": "--workspace <path>",
8812
- "description": "Override the inferred workspace path",
9772
+ "flags": "--harness <harness>",
9773
+ "description": "With --all: only this harness (claude-code, codex, ...)",
8813
9774
  "required": true,
8814
- "valueHint": "path"
9775
+ "valueHint": "harness"
8815
9776
  },
8816
9777
  {
8817
- "flags": "--json",
8818
- "description": "Emit JSON instead of human-readable output",
9778
+ "flags": "--hook",
9779
+ "description": "Claude Code Stop-hook mode: read {session_id, transcript_path} JSON from stdin, print nothing, exit 0",
8819
9780
  "required": false,
8820
9781
  "valueHint": null
8821
9782
  }
8822
9783
  ],
8823
9784
  "aliases": [],
8824
- "category": "Workspace"
9785
+ "category": "CLI"
8825
9786
  },
8826
9787
  {
8827
- "id": "pan-workspace-deep-clean",
8828
- "path": ["workspace", "deep-clean"],
8829
- "display": "/pan workspace deep-clean",
8830
- "description": "Interactive: git clean -fd against a workspace (preserves protected paths)",
9788
+ "id": "pan-vault-sync",
9789
+ "path": ["vault", "sync"],
9790
+ "display": "/pan vault sync",
9791
+ "description": "Settle owned transcripts that grew, register this machine and refresh the list",
9792
+ "args": [],
9793
+ "options": [],
9794
+ "aliases": [],
9795
+ "category": "CLI"
9796
+ },
9797
+ {
9798
+ "id": "pan-vault-list",
9799
+ "path": ["vault", "list"],
9800
+ "display": "/pan vault list",
9801
+ "description": "List saved conversations from the local cache (never contacts the backend)",
9802
+ "args": [],
9803
+ "options": [{
9804
+ "flags": "--json",
9805
+ "description": "Output in JSON format",
9806
+ "required": false,
9807
+ "valueHint": null
9808
+ }],
9809
+ "aliases": [],
9810
+ "category": "CLI"
9811
+ },
9812
+ {
9813
+ "id": "pan-vault-show",
9814
+ "path": ["vault", "show"],
9815
+ "display": "/pan vault show",
9816
+ "description": "Print a saved conversation read-only with its versions",
8831
9817
  "args": [{
8832
- "name": "issueId",
9818
+ "name": "id",
8833
9819
  "required": true,
8834
9820
  "variadic": false
8835
9821
  }],
8836
9822
  "options": [{
8837
- "flags": "--yes",
8838
- "description": "Skip confirmation prompt (still requires a TTY)",
9823
+ "flags": "--json",
9824
+ "description": "Output in JSON format",
8839
9825
  "required": false,
8840
9826
  "valueHint": null
8841
9827
  }],
8842
9828
  "aliases": [],
8843
- "category": "Workspace"
9829
+ "category": "CLI"
8844
9830
  },
8845
9831
  {
8846
- "id": "pan-workspace-rebuild",
8847
- "path": ["workspace", "rebuild"],
8848
- "display": "/pan workspace rebuild",
8849
- "description": "Tear down, re-render, and restart a single workspace Docker stack",
9832
+ "id": "pan-vault-resume",
9833
+ "path": ["vault", "resume"],
9834
+ "display": "/pan vault resume",
9835
+ "description": "Continue a saved conversation here: <id> or <id>@<version>; adopts it and launches the harness",
8850
9836
  "args": [{
8851
- "name": "issueId",
9837
+ "name": "id",
8852
9838
  "required": true,
8853
9839
  "variadic": false
8854
9840
  }],
8855
- "options": [],
8856
- "aliases": [],
8857
- "category": "Workspace"
8858
- },
8859
- {
8860
- "id": "pan-workspace-reap",
8861
- "path": ["workspace", "reap"],
8862
- "display": "/pan workspace reap",
8863
- "description": "List or remove orphaned unhealthy workspace Docker stacks and orphaned workspace networks",
8864
- "args": [],
8865
9841
  "options": [
8866
9842
  {
8867
- "flags": "--days <days>",
8868
- "description": "Minimum age in days",
9843
+ "flags": "--cwd <dir>",
9844
+ "description": "Working directory to resume in (default: the saved cwd)",
8869
9845
  "required": true,
8870
- "valueHint": "days"
9846
+ "valueHint": "dir"
8871
9847
  },
8872
9848
  {
8873
- "flags": "--apply",
8874
- "description": "Run docker compose down -v --remove-orphans for stack candidates and remove orphaned workspace networks",
9849
+ "flags": "--no-launch",
9850
+ "description": "Print the launch command instead of running it",
8875
9851
  "required": false,
8876
9852
  "valueHint": null
8877
9853
  },
8878
9854
  {
8879
- "flags": "--yes",
8880
- "description": "Skip confirmation when using --apply",
9855
+ "flags": "--on-drift <choice>",
9856
+ "description": "When the cwd state differs from the saved state: continue | note | cancel",
9857
+ "required": true,
9858
+ "valueHint": "choice"
9859
+ },
9860
+ {
9861
+ "flags": "--no-code",
9862
+ "description": "Do not apply the saved code snapshot; only continue the conversation",
8881
9863
  "required": false,
8882
9864
  "valueHint": null
9865
+ },
9866
+ {
9867
+ "flags": "--worktree <dir>",
9868
+ "description": "Apply the code snapshot into a new git worktree at <dir> instead of the target checkout",
9869
+ "required": true,
9870
+ "valueHint": "dir"
8883
9871
  }
8884
9872
  ],
8885
9873
  "aliases": [],
8886
- "category": "Workspace"
9874
+ "category": "CLI"
8887
9875
  },
8888
9876
  {
8889
- "id": "pan-workspace-update",
8890
- "path": ["workspace", "update"],
8891
- "display": "/pan workspace update",
8892
- "description": "Update skills/agents/rules in an existing workspace",
9877
+ "id": "pan-vault-exclude",
9878
+ "path": ["vault", "exclude"],
9879
+ "display": "/pan vault exclude",
9880
+ "description": "Exclude conversations by cwd path, git origin or session id; an excluded saved record becomes a tombstone",
8893
9881
  "args": [{
8894
- "name": "issueId",
8895
- "required": true,
9882
+ "name": "path",
9883
+ "required": false,
8896
9884
  "variadic": false
8897
9885
  }],
8898
9886
  "options": [{
8899
- "flags": "--force",
8900
- "description": "Overwrite user-modified files",
8901
- "required": false,
8902
- "valueHint": null
9887
+ "flags": "--origin <url>",
9888
+ "description": "Exclude conversations whose git origin is this URL",
9889
+ "required": true,
9890
+ "valueHint": "url"
9891
+ }, {
9892
+ "flags": "--session <id>",
9893
+ "description": "Exclude one session by native session id or vault id",
9894
+ "required": true,
9895
+ "valueHint": "id"
8903
9896
  }],
8904
9897
  "aliases": [],
8905
- "category": "Workspace"
9898
+ "category": "CLI"
8906
9899
  },
8907
9900
  {
8908
- "id": "pan-workspace-use-config",
8909
- "path": ["workspace", "use-config"],
8910
- "display": "/pan workspace use-config",
8911
- "description": "Copy installed Overdeck config into workspace (makes it user settings)",
9901
+ "id": "pan-vault-include",
9902
+ "path": ["vault", "include"],
9903
+ "display": "/pan vault include",
9904
+ "description": "Remove an exclusion added with pan vault exclude",
8912
9905
  "args": [{
8913
- "name": "issueId",
8914
- "required": true,
9906
+ "name": "path",
9907
+ "required": false,
8915
9908
  "variadic": false
8916
9909
  }],
8917
9910
  "options": [{
8918
- "flags": "--project <path>",
8919
- "description": "Explicit project path (overrides registry)",
9911
+ "flags": "--origin <url>",
9912
+ "description": "Include conversations whose git origin is this URL again",
8920
9913
  "required": true,
8921
- "valueHint": "path"
9914
+ "valueHint": "url"
9915
+ }, {
9916
+ "flags": "--session <id>",
9917
+ "description": "Include one session again",
9918
+ "required": true,
9919
+ "valueHint": "id"
8922
9920
  }],
8923
9921
  "aliases": [],
8924
- "category": "Workspace"
9922
+ "category": "CLI"
8925
9923
  },
8926
9924
  {
8927
- "id": "pan-workspace-add-repo",
8928
- "path": ["workspace", "add-repo"],
8929
- "display": "/pan workspace add-repo",
8930
- "description": "Add configured repositories or register a new repository in a polyrepo workspace",
9925
+ "id": "pan-vault-allow-secret",
9926
+ "path": ["vault", "allow-secret"],
9927
+ "display": "/pan vault allow-secret",
9928
+ "description": "Allow one blocked transcript line, or the blocked code lines of one file, for that record only",
8931
9929
  "args": [{
8932
- "name": "workspaceId",
9930
+ "name": "id-or-path",
8933
9931
  "required": true,
8934
9932
  "variadic": false
8935
9933
  }, {
8936
- "name": "repoNames",
9934
+ "name": "line",
8937
9935
  "required": false,
8938
- "variadic": true
9936
+ "variadic": false
9937
+ }],
9938
+ "options": [{
9939
+ "flags": "--file <path>",
9940
+ "description": "Allow the blocked lines of this file in the code snapshot (path relative to the repository root)",
9941
+ "required": true,
9942
+ "valueHint": "path"
8939
9943
  }],
9944
+ "aliases": [],
9945
+ "category": "CLI"
9946
+ },
9947
+ {
9948
+ "id": "pan-vault-evict",
9949
+ "path": ["vault", "evict"],
9950
+ "display": "/pan vault evict",
9951
+ "description": "Review the pending-deletion batch (default) or act on it; nothing is deleted without --confirm",
9952
+ "args": [],
8940
9953
  "options": [
8941
9954
  {
8942
- "flags": "--dry-run",
8943
- "description": "Show what would be added",
9955
+ "flags": "--review",
9956
+ "description": "Scan and print the batch with its fingerprint (default)",
8944
9957
  "required": false,
8945
9958
  "valueHint": null
8946
9959
  },
8947
9960
  {
8948
- "flags": "--group <groupName>",
8949
- "description": "Add all repos from a named group (from groups_file)",
9961
+ "flags": "--confirm <fingerprint>",
9962
+ "description": "Delete the reviewed files if the batch still matches this fingerprint",
8950
9963
  "required": true,
8951
- "valueHint": "groupName"
9964
+ "valueHint": "fingerprint"
8952
9965
  },
8953
9966
  {
8954
- "flags": "--new <gitUrl>",
8955
- "description": "Register a repository that was created during this issue",
9967
+ "flags": "--decline <vaultId>",
9968
+ "description": "Remove an entry from the batch and do not offer it again",
8956
9969
  "required": true,
8957
- "valueHint": "gitUrl"
9970
+ "valueHint": "vaultId"
8958
9971
  },
8959
9972
  {
8960
- "flags": "--project <key>",
8961
- "description": "Explicit project key from projects.yaml (overrides registry)",
9973
+ "flags": "--reoffer <vaultId>",
9974
+ "description": "Allow a declined entry to be offered again",
8962
9975
  "required": true,
8963
- "valueHint": "key"
9976
+ "valueHint": "vaultId"
9977
+ },
9978
+ {
9979
+ "flags": "--clear",
9980
+ "description": "Empty the batch without deleting or declining anything",
9981
+ "required": false,
9982
+ "valueHint": null
8964
9983
  }
8965
9984
  ],
8966
9985
  "aliases": [],
8967
- "category": "Workspace"
9986
+ "category": "CLI"
9987
+ },
9988
+ {
9989
+ "id": "pan-vault-restore",
9990
+ "path": ["vault", "restore"],
9991
+ "display": "/pan vault restore",
9992
+ "description": "Rebuild an evicted transcript byte for byte at its original path",
9993
+ "args": [{
9994
+ "name": "id",
9995
+ "required": true,
9996
+ "variadic": false
9997
+ }],
9998
+ "options": [{
9999
+ "flags": "--to <path>",
10000
+ "description": "Write the rebuilt file here instead of the recorded path",
10001
+ "required": true,
10002
+ "valueHint": "path"
10003
+ }],
10004
+ "aliases": [],
10005
+ "category": "CLI"
8968
10006
  },
8969
10007
  {
8970
10008
  "id": "pan-test",
@@ -10241,6 +11279,124 @@ const COMPOSER_COMMAND_MANIFEST = [
10241
11279
  "aliases": [],
10242
11280
  "category": "Flywheel"
10243
11281
  },
11282
+ {
11283
+ "id": "pan-models",
11284
+ "path": ["models"],
11285
+ "display": "/pan models",
11286
+ "description": "Model settings: provider presets",
11287
+ "args": [],
11288
+ "options": [],
11289
+ "aliases": [],
11290
+ "category": "CLI"
11291
+ },
11292
+ {
11293
+ "id": "pan-models-preset",
11294
+ "path": ["models", "preset"],
11295
+ "display": "/pan models preset",
11296
+ "description": "Apply eval-backed provider model presets (writes explicit values once; never auto-applies)",
11297
+ "args": [],
11298
+ "options": [],
11299
+ "aliases": [],
11300
+ "category": "CLI"
11301
+ },
11302
+ {
11303
+ "id": "pan-models-preset-list",
11304
+ "path": [
11305
+ "models",
11306
+ "preset",
11307
+ "list"
11308
+ ],
11309
+ "display": "/pan models preset list",
11310
+ "description": "List presets, their versions and what was last applied",
11311
+ "args": [],
11312
+ "options": [{
11313
+ "flags": "--json",
11314
+ "description": "Print JSON",
11315
+ "required": false,
11316
+ "valueHint": null
11317
+ }],
11318
+ "aliases": [],
11319
+ "category": "CLI"
11320
+ },
11321
+ {
11322
+ "id": "pan-models-preset-show",
11323
+ "path": [
11324
+ "models",
11325
+ "preset",
11326
+ "show"
11327
+ ],
11328
+ "display": "/pan models preset show",
11329
+ "description": "Show the per-setting diff a preset would make to config.yaml",
11330
+ "args": [{
11331
+ "name": "id",
11332
+ "required": true,
11333
+ "variadic": false
11334
+ }],
11335
+ "options": [{
11336
+ "flags": "--json",
11337
+ "description": "Print the plan JSON (same body as GET /api/model-presets/:id/plan)",
11338
+ "required": false,
11339
+ "valueHint": null
11340
+ }],
11341
+ "aliases": [],
11342
+ "category": "CLI"
11343
+ },
11344
+ {
11345
+ "id": "pan-models-preset-apply",
11346
+ "path": [
11347
+ "models",
11348
+ "preset",
11349
+ "apply"
11350
+ ],
11351
+ "display": "/pan models preset apply",
11352
+ "description": "Apply a preset: print the diff, confirm, then write only the changed settings",
11353
+ "args": [{
11354
+ "name": "id",
11355
+ "required": true,
11356
+ "variadic": false
11357
+ }],
11358
+ "options": [
11359
+ {
11360
+ "flags": "--dry-run",
11361
+ "description": "Print the diff and write nothing",
11362
+ "required": false,
11363
+ "valueHint": null
11364
+ },
11365
+ {
11366
+ "flags": "--yes",
11367
+ "description": "Apply without the confirmation prompt",
11368
+ "required": false,
11369
+ "valueHint": null
11370
+ },
11371
+ {
11372
+ "flags": "--json",
11373
+ "description": "Print JSON",
11374
+ "required": false,
11375
+ "valueHint": null
11376
+ }
11377
+ ],
11378
+ "aliases": [],
11379
+ "category": "CLI"
11380
+ },
11381
+ {
11382
+ "id": "pan-models-preset-undo",
11383
+ "path": [
11384
+ "models",
11385
+ "preset",
11386
+ "undo"
11387
+ ],
11388
+ "display": "/pan models preset undo",
11389
+ "description": "Restore the values the last preset apply replaced",
11390
+ "args": [],
11391
+ "options": [{
11392
+ "flags": "--json",
11393
+ "description": "Print JSON",
11394
+ "required": false,
11395
+ "valueHint": null
11396
+ }],
11397
+ "aliases": [],
11398
+ "category": "CLI"
11399
+ },
10244
11400
  {
10245
11401
  "id": "pan-parked",
10246
11402
  "path": ["parked"],
@@ -11115,29 +12271,6 @@ const COMPOSER_COMMAND_MANIFEST = [
11115
12271
  "aliases": [],
11116
12272
  "category": "Admin"
11117
12273
  },
11118
- {
11119
- "id": "pan-admin-tldr",
11120
- "path": ["admin", "tldr"],
11121
- "display": "/pan admin tldr",
11122
- "description": "TLDR daemon: status, start, stop, warm",
11123
- "args": [{
11124
- "name": "action",
11125
- "required": false,
11126
- "variadic": false
11127
- }, {
11128
- "name": "workspace",
11129
- "required": false,
11130
- "variadic": false
11131
- }],
11132
- "options": [{
11133
- "flags": "--json",
11134
- "description": "Output as JSON",
11135
- "required": false,
11136
- "valueHint": null
11137
- }],
11138
- "aliases": [],
11139
- "category": "Admin"
11140
- },
11141
12274
  {
11142
12275
  "id": "pan-admin-fpp",
11143
12276
  "path": ["admin", "fpp"],
@@ -12108,7 +13241,7 @@ const COMPOSER_COMMAND_MANIFEST = [
12108
13241
  "id": "pan-spawn",
12109
13242
  "path": ["spawn"],
12110
13243
  "display": "/pan spawn",
12111
- "description": "Create a worker pane for one xBRIEF item in the issue workspace",
13244
+ "description": "Create a worker pane for one xBRIEF item in its own item worktree",
12112
13245
  "args": [],
12113
13246
  "options": [
12114
13247
  {
@@ -12134,6 +13267,18 @@ const COMPOSER_COMMAND_MANIFEST = [
12134
13267
  "description": "Coding-agent harness (default: claude-code)",
12135
13268
  "required": true,
12136
13269
  "valueHint": "harness"
13270
+ },
13271
+ {
13272
+ "flags": "--effort <level>",
13273
+ "description": "Reasoning effort: low | medium | high | xhigh | max (defaults to the item/plan metadata, then roles.worker.effort)",
13274
+ "required": true,
13275
+ "valueHint": "level"
13276
+ },
13277
+ {
13278
+ "flags": "--shared",
13279
+ "description": "Run the worker in the issue workspace instead of an item worktree (foreman/operator only; serial use)",
13280
+ "required": false,
13281
+ "valueHint": null
12137
13282
  }
12138
13283
  ],
12139
13284
  "aliases": [],
@@ -12186,6 +13331,12 @@ const COMPOSER_COMMAND_MANIFEST = [
12186
13331
  "required": true,
12187
13332
  "valueHint": "harness"
12188
13333
  },
13334
+ {
13335
+ "flags": "--effort <level>",
13336
+ "description": "Reasoning effort: low | medium | high | xhigh | max (defaults to roles.worker.effort)",
13337
+ "required": true,
13338
+ "valueHint": "level"
13339
+ },
12189
13340
  {
12190
13341
  "flags": "--read-only",
12191
13342
  "description": "Run in the issue workspace with git writes blocked",
@@ -12520,6 +13671,12 @@ const COMPOSER_COMMAND_MANIFEST = [
12520
13671
  "required": false,
12521
13672
  "valueHint": null
12522
13673
  },
13674
+ {
13675
+ "flags": "--force",
13676
+ "description": "Launch even while the host is CPU-saturated",
13677
+ "required": false,
13678
+ "valueHint": null
13679
+ },
12523
13680
  {
12524
13681
  "flags": "--no-wait",
12525
13682
  "description": "Return without waiting for the lane to start",
@@ -13157,26 +14314,17 @@ const COMPOSER_COMMAND_MANIFEST = [
13157
14314
  "display": "/pan status",
13158
14315
  "description": "Show running agents",
13159
14316
  "args": [],
13160
- "options": [
13161
- {
13162
- "flags": "--json",
13163
- "description": "Output as JSON",
13164
- "required": false,
13165
- "valueHint": null
13166
- },
13167
- {
13168
- "flags": "--tldr",
13169
- "description": "Show TLDR index health across all workspaces",
13170
- "required": false,
13171
- "valueHint": null
13172
- },
13173
- {
13174
- "flags": "--context",
13175
- "description": "Show context window usage % for each agent",
13176
- "required": false,
13177
- "valueHint": null
13178
- }
13179
- ],
14317
+ "options": [{
14318
+ "flags": "--json",
14319
+ "description": "Output as JSON",
14320
+ "required": false,
14321
+ "valueHint": null
14322
+ }, {
14323
+ "flags": "--context",
14324
+ "description": "Show context window usage % for each agent",
14325
+ "required": false,
14326
+ "valueHint": null
14327
+ }],
13180
14328
  "aliases": [],
13181
14329
  "category": "Core"
13182
14330
  },
@@ -13340,7 +14488,7 @@ const COMPOSER_COMMAND_MANIFEST = [
13340
14488
  "id": "pan-restart",
13341
14489
  "path": ["restart"],
13342
14490
  "display": "/pan restart",
13343
- "description": "Restart a platform component (default: dashboard only — leaves CLIProxy, Traefik, TLDR running)",
14491
+ "description": "Restart a platform component (default: dashboard only — leaves CLIProxy and Traefik running)",
13344
14492
  "args": [],
13345
14493
  "options": [
13346
14494
  {
@@ -14045,6 +15193,26 @@ const COMPOSER_COMMAND_MANIFEST = [
14045
15193
  "aliases": [],
14046
15194
  "category": "Data"
14047
15195
  },
15196
+ {
15197
+ "id": "pan-cost-effort",
15198
+ "path": ["cost", "effort"],
15199
+ "display": "/pan cost effort",
15200
+ "description": "Show costs grouped by reasoning effort",
15201
+ "args": [],
15202
+ "options": [{
15203
+ "flags": "-i, --issue <issueId>",
15204
+ "description": "Limit to one issue",
15205
+ "required": true,
15206
+ "valueHint": "issueId"
15207
+ }, {
15208
+ "flags": "--json",
15209
+ "description": "Print JSON",
15210
+ "required": false,
15211
+ "valueHint": null
15212
+ }],
15213
+ "aliases": [],
15214
+ "category": "Data"
15215
+ },
14048
15216
  {
14049
15217
  "id": "pan-cost-budget",
14050
15218
  "path": ["cost", "budget"],
@@ -14450,6 +15618,10 @@ const DirectoryEntry = Schema.Struct({
14450
15618
  harness: Schema.String,
14451
15619
  /** `unknown` when not known. */
14452
15620
  model: Schema.String,
15621
+ /** The launch effort from state.json, native agents only (PAN-4259). */
15622
+ effort: Schema.optional(EffortLevelSchema),
15623
+ /** Where `effort` came from (an EffortSource), native agents only. */
15624
+ effortSource: Schema.optional(Schema.String),
14453
15625
  state: DirectoryEntryState,
14454
15626
  startedAt: Schema.NullOr(Schema.String),
14455
15627
  lastActivityAt: Schema.NullOr(Schema.String),
@@ -14602,6 +15774,47 @@ function laneActivityOf(row, now) {
14602
15774
  return "stopped";
14603
15775
  }
14604
15776
  //#endregion
14605
- export { ACP_BEHAVIOR, AGENT_ROLES, Activity, ActivityDetailedEvent, ActivityEntryEvent, ActivityTtsEvent, ActivityUpdatedEvent, AdmissionState, AgentActivityChangedEvent, AgentChannelReply, AgentChannelReplyEvent, AgentCompletedEvent, AgentContextSaturationChangedEvent, AgentCreatedEvent, AgentCurrentIssueSetEvent, AgentDirectoryResponse, AgentEnrichmentChangedEvent, AgentHealthKind, AgentHealthSnapshot, AgentHealthStatus, AgentHeartbeatDeadEvent, AgentHookFiredEvent, AgentId, AgentMessageReceivedEvent, AgentModelSetEvent, AgentOutput, AgentOutputReceivedEvent, AgentPermissionRequestedEvent, AgentPermissionResolvedEvent, AgentResolution, AgentResolutionChangedEvent, AgentRuntimeSnapshot, AgentSnapshot, AgentStartedEvent, AgentStateRestoredEvent, AgentStatus, AgentStatusChangedEvent, AgentStoppedEvent, AgentThinkingStartedEvent, AgentThinkingStoppedEvent, AgentTurnDiffCompletedEvent, AgentWaitingClearedEvent, AgentWaitingStartedEvent, ArtifactAgentHarness, ArtifactAgentRole, ArtifactCreateResponse, ArtifactDetailResponse, ArtifactHash, ArtifactId, ArtifactLifecycleState, ArtifactListEntry, ArtifactListResponse, ArtifactMetadata, ArtifactPublishResponse, ArtifactSlug, ArtifactStatusResponse, ArtifactUnshareResponse, ArtifactUrls, ArtifactValidationCode, ArtifactValidationFinding, ArtifactValidationResult, BackendPane, BackendPaneChangedEvent, BackendPaneRemovedEvent, BeadsFreshnessChangedEvent, CHANNEL_REPLY_KIND_VALUES, CLAUDE_CODE_BEHAVIOR, CODEX_BEHAVIOR, COMPANION_TERMINAL_CLOSE_BODY_KEYS, COMPANION_TERMINAL_OPEN_BODY_KEYS, COMPOSER_COMMAND_INSERT_OVERRIDES, COMPOSER_COMMAND_MANIFEST, COMPOSER_COMMAND_VARIANTS, CONTEXT_LAYER_KINDS, CONTEXT_PREVIEW_HARNESSES, ChannelPermissionRequestSnapshot, ChannelReplyArtifactRef, ChannelReplyKind, ChatMessage, ClaudeChannelPermissionBehavior, CompactBoundary, ContextEditableLayerRecord, ContextHarnessPreviews, ContextLayerDraft, ContextLayerKind, ContextLayerSaveRequest, ContextLayerSaveResponse, ContextLayerTarget, ContextLayersResponse, ContextPreviewDiagnostic, ContextPreviewHarness, ContextPreviewRequest, ContextPreviewResponse, ContextProjectSummary, ContextSyncRequest, ContextSyncResponse, ContextSyncTarget, ContextUsage, ContextWorkspaceSummary, ConversationCompactingChangedEvent, ConversationCostSummary, ConversationCreatedEvent, ConversationEvent, ConversationFilter, ConversationMovedEvent, ConversationPermissionChangedEvent, ConversationPullRequests, ConversationPullRequestsChangedEvent, ConversationResponse, ConversationTitleChangedEvent, CostEventRecordedEvent, DEFAULT_EFFORT, DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE, DEFAULT_MAX_TURN_DIFF_SUMMARIES_PER_AGENT, DashboardLifecycleCompletedEvent, DashboardLifecycleFailedEvent, DashboardLifecycleStartedEvent, DashboardSnapshot, DeepWipeRpc, DeployStalenessSnapshot, DerivedBranchState, DerivedIssueState, DerivedPrState, DirectoryEntry, DirectoryEntryKind, DirectoryEntryLocation, DirectoryEntrySource, DirectoryEntryState, DirectoryPause, DirectoryPauseBy, DirectoryProviderError, DirectoryScope, DirectoryTranscriptRef, DiscoveredSessionSnapshot, DomainEvent, EDITORS, EFFORT_LEVELS, EditorIdSchema, EffortLevelSchema, EmbedProgressEvent, EmbedProgressSnapshot, EmbedSessionsRpc, EnrichCompleteEvent, EnrichProgressEvent, EnrichProgressSnapshot, EnrichSessionsRpc, EnrichStatsSnapshot, ExtractionProviderConfig, ExtractionProviderTarget, FeatureNode, FeatureRegistryEntry, FeatureRegistryStatus, FlywheelAgent, FlywheelAgentStatus, FlywheelAgentSummary, FlywheelBugRateCriterion, FlywheelConversationSummary, FlywheelDerivedStatus, FlywheelEffort, FlywheelFreshness, FlywheelHarness, FlywheelHeadline, FlywheelHttpUrl, FlywheelInFlightRow, FlywheelJournalSummary, FlywheelLastTick, FlywheelOrchestrator, FlywheelOrderBookSummary, FlywheelOrders, FlywheelP0Criterion, FlywheelParkedItem, FlywheelPipelineItem, FlywheelPipelineStatus, FlywheelPipelineVerb, FlywheelPolicies, FlywheelRunId, FlywheelRunState, FlywheelScope, FlywheelStats, FlywheelStatsCriterionStatus, FlywheelStatsTrend, FlywheelStatsWindow, FlywheelStatus, FlywheelSubstrateBug, FlywheelSubstrateBugRow, FlywheelSubstrateBugStatus, FlywheelSubstrateSeverity, FlywheelSuggestion, FlywheelSuggestionAction, FlywheelSuggestionPriority, FlywheelSystemStatus, GITHUB_QUOTA_BUCKETS, GITHUB_QUOTA_CALLERS, GITHUB_QUOTA_POOLS, GetAvailableEditorsRpc, GetConversationCostByWorkspaceRpc, GetConversationCostRpc, GetConversationStatsRpc, GetDiscoveredSessionRpc, GetSessionsFeedFacetsRpc, GetSnapshotRpc, GitHubQuotaBucket, GitHubQuotaCaller, GitHubQuotaCallerUsage, GitHubQuotaChangedEvent, GitHubQuotaPause, GitHubQuotaPool, GitHubQuotaSample, GitHubQuotaSnapshot, GitHubQuotaUsage, GitHubRateLimitKind, GlobalContextLayerRecord, GlobalContextLayerTarget, HOOK_INVENTORY, HealthReason, HealthState, HostHealthMetrics, HostPlatform, HygieneFinding, HygienePullRequest, HygieneReport, INITIAL_READ_MODEL_STATE, ISSUE_ATTENTIONS, ISSUE_STATES, ISSUE_STATE_PRECEDENCE, IssueAttention, IssueId, IssueState, IssueStateChangedEvent, IssueStatusChangedEvent, IssueTransitionedEvent, IssuesDeltaEvent, IssuesSnapshotEvent, IssuesUpdatedEvent, KIMI_CODE_BEHAVIOR, KNOWN_HARNESSES, LANE_STARTING_GRACE_MS, LegacySystemHealthSummary, LegacyWebhookRelaySummary, LinearMcpAuthCallbackRelayedEvent, LinearMcpAuthHealthyEvent, LinearMcpAuthNotifiedEvent, LinearMcpAuthRequiredEvent, ListDiscoveredSessionsRpc, ListSessionsFeedRpc, MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH, MAX_CHANNEL_REPLY_ARTIFACT_REFS, MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH, MAX_CHANNEL_REPLY_SUMMARY_LENGTH, MEMBERSHIP_UNAVAILABLE_REASONS, MUSE_BEHAVIOR, MemoryAgentRole, MemoryHealthChangedEvent, MemoryIdentity, MemoryObservation, MemoryObservationCreatedEvent, MemoryResetMarkerCreatedEvent, MemoryRollupTriggeredEvent, MemoryStatus, MemoryStatusPhase, MemoryStatusUpdatedEvent, MemoryTokenUsage, MergeReadyEvent, ModelOrigin, ModelOriginEntry, NON_ESSENTIAL_GITHUB_CALLERS, OHMYPI_BEHAVIOR, OPENCODE_BEHAVIOR, OVERDECK_AGENT_PROTOCOL_VERSION, OVERDECK_DASHBOARD_PROTOCOL_VERSION, OpenInEditorInput, OperatorInterventionEvent, OrderBook, OrderBookIndexEntry, OrderBookItem, OrderBookLane, OrderBookPosture, OrderBookSettings, OrderBookStatus, PIPELINE_MEMBERSHIP_LOADING_CODE, PRIME_AGENT_BEHAVIOR, PanRpcError, PanRpcGroup, PendingTurn, PipelineReviewCompletedEvent, PipelineReviewStartedEvent, PipelineTestCompletedEvent, PipelineTestStartedEvent, PipelineVerificationFailedEvent, PipelineVerificationStartedEvent, PlanItemStatusChangedEvent, PlanItemsUnblockedEvent, PlanSubitemStatusChangedEvent, PlanningFailedEvent, PlanningStartedEvent, PlanningSyncEvent, PrChecksState, PrReviewState, ProjectCiHeadObservedEvent, ProjectCiSnapshot, ProjectCiSuite, ProjectCiSuiteObservedEvent, ProjectContextLayerRecord, ProjectContextLayerTarget, ProjectDeployChangedEvent, ProjectDeployPhase, ProjectDeploySnapshot, ProjectSessionTree, ProposedPlan, PullRequestKey, PullRequestLink, PullRequestLinkListing, PullRequestLinkSource, PullRequestLinkedConversation, PullRequestSnapshot, PullRequestState, RagDecision, RagDecisionSource, ReadFileAtPathInput, ReadFileAtPathResult, ReadFileAtPathRpc, ReadWorkspaceFileInput, ReadWorkspaceFileResult, ReadWorkspaceFileRpc, ReplayEventsRpc, ResetMarker, ResetMarkerScope, ResizeTerminalRpc, ResolveFilePathExistsInput, ResolveFilePathExistsResult, ResolveFilePathExistsRpc, ResourceStats, ResourcesUpdatedEvent, RestartGateChangedEvent, RestartGateKind, RestartGateOutcome, RestartGateRequest, RestartGateSnapshot, ReviewApprovedEvent, ReviewCoordinatorDiedEvent, ReviewCoordinatorStartedEvent, ReviewReviewerCompletedEvent, ReviewReviewerStartedEvent, ReviewSpecialistTimedOutEvent, ReviewVerdictDispatchedEvent, ReviewVerdictRejectedEvent, ReviewVerdictRestoreBlockedEvent, ReviewerRoundMetadata, ReviewerRoundSummary, Role, SINGLETON_AGENT_IDS, ScanCompleteEvent, ScanConversationsRpc, ScanProgressEvent, ScanProgressSnapshot, ScanResult, ScanStartedEvent, SearchConversationsRpc, SendTerminalInputRpc, SequenceNumber, ServiceHealthSnapshot, ServiceHealthStatus, SessionNode, SessionNodePresence, SessionNodeType, SessionTreeDelta, SessionsFeedFacetsSnapshot, SessionsFeedRowSnapshot, SessionsFeedSource, ShadowInferenceUpdateEvent, ShellOpenInEditorRpc, SpecialistCompletedEvent, SpecialistFailedEvent, SpecialistLifecycle, SpecialistStartedEvent, StartAgentRpc, StartPlanningRpc, SubagentHumanInput, SubagentSummary, SubscribeAgentOutputRpc, SubscribeConversationMessagesRpc, SubscribeDomainEventsRpc, SubscribeIssueEventsRpc, SubscribeProjectSessionTreeRpc, SubscribeTerminalRpc, SubstrateBugFiledEvent, SweepEscalatedEvent, SweepRecommendationEvent, SweepScanEvent, SystemHealthConsumer, SystemHealthSeverityChangedEvent, SystemHealthSnapshot, SystemHeartbeatEvent, TELEMETRY_CLI_VERBS, TELEMETRY_EVENT_CATALOG, TELEMETRY_EVENT_NAMES, TELEMETRY_PROPERTY_DOMAINS, TERMINAL_BACKEND_NAMES, TerminalCloseRpc, TerminalOpenRpc, TerminalOutput, TerminalResizeRpc, TerminalWriteRpc, TestPassedEvent, ThinkingState, TickMarker, TickMarkerPhase, TurnDiffFileChange, TurnDiffSummary, WIRED_HOOK_INVENTORY, WIRED_HOOK_NAMES, WS_METHODS, WaitingReason, WaitingState, WorkCompletedEvent, WorkLogEntry, WorkspaceAbortedEvent, WorkspaceArtifactsResponse, WorkspaceContextLayerRecord, WorkspaceContextLayerTarget, WorkspaceCreatedEvent, WorkspaceDeletedEvent, WorkspaceDestroyedEvent, WorkspaceWipeStartedEvent, WriteFileAtPathInput, WriteFileAtPathResult, WriteFileAtPathRpc, applyEvent, applyEvents, applyIssueDelta, bucketQuotaPoints, bucketQuotaRemaining, canonicalPullRequestUrl, companionTerminalKindFor, compareEffort, compareIssueIds, createIssueDelta, decodeFlywheelDerivedStatus, decodeFlywheelStats, deriveProjectCi, encodeFlywheelStats, getHarness, getHarnessBehavior, getMaxMemoryObservationsPerIssue, getMaxTurnDiffSummariesPerAgent, getRuntimeBehavior, indexPanesByAgentKey, isAgentRole, isAgentSessionName, isChannelReplyKind, isConfiguredPullRequestRepo, isEffortLevel, isIssueAttention, isIssueState, isSingletonConversation, isTerminalBackendName, isTerminalTurnDiffSummaryStatus, laneActivityOf, normalizeChannelReplyPayload, omitTurnDiffSummariesForAgent, paneAgentKey, parsePullRequestRef, projectLegacySystemHealthSummary, repoFromRemoteUrl, resolveEffectivePullRequest, syncSnapshot, trimMemoryObservations, trimTurnDiffSummaries, withPaneLivenessAlias };
15777
+ //#region src/environment.ts
15778
+ /** Wire protocol version a client and server must agree on. */
15779
+ const ENVIRONMENT_PROTOCOL_VERSION = 1;
15780
+ const EnvironmentId = Schema.String.pipe(Schema.brand("EnvironmentId"));
15781
+ const EnvironmentCapabilities = Schema.Struct({
15782
+ /** `POST /api/pairing/*` is available. */
15783
+ pairing: Schema.Boolean,
15784
+ /** `GET/DELETE /api/devices` is available. */
15785
+ deviceSessions: Schema.Boolean,
15786
+ /** `/ws/*` upgrades require a credential (PAN-1166). */
15787
+ terminalAuth: Schema.Boolean
15788
+ });
15789
+ const EnvironmentDescriptor = Schema.Struct({
15790
+ descriptorVersion: Schema.Literal(1),
15791
+ environmentId: EnvironmentId,
15792
+ label: Schema.String,
15793
+ platform: Schema.Struct({
15794
+ os: Schema.String,
15795
+ arch: Schema.String
15796
+ }),
15797
+ /** Exact package version of the serving Overdeck. */
15798
+ serverVersion: Schema.String,
15799
+ /** The server's `ENVIRONMENT_PROTOCOL_VERSION`. */
15800
+ protocolVersion: Schema.Number,
15801
+ capabilities: EnvironmentCapabilities
15802
+ });
15803
+ /** A server-local id qualified by the environment that owns it. */
15804
+ const ScopedRef = (localId) => Schema.Struct({
15805
+ environmentId: EnvironmentId,
15806
+ localId
15807
+ });
15808
+ const ScopedProjectRef = ScopedRef(Schema.String);
15809
+ const ScopedIssueRef = ScopedRef(Schema.String);
15810
+ const ScopedAgentRef = ScopedRef(Schema.String);
15811
+ const ScopedConversationRef = ScopedRef(Schema.String);
15812
+ const ScopedTerminalRef = ScopedRef(Schema.String);
15813
+ /** True only when the server speaks exactly the client's protocol version. */
15814
+ function isProtocolCompatible(descriptor, clientProtocolVersion) {
15815
+ return descriptor.protocolVersion === clientProtocolVersion;
15816
+ }
15817
+ //#endregion
15818
+ export { ACP_BEHAVIOR, AGENT_ROLES, Activity, ActivityDetailedEvent, ActivityEntryEvent, ActivityTtsEvent, ActivityUpdatedEvent, AdmissionState, AgentActivityChangedEvent, AgentChannelReply, AgentChannelReplyEvent, AgentCompletedEvent, AgentContextSaturationChangedEvent, AgentCreatedEvent, AgentCurrentIssueSetEvent, AgentDirectoryResponse, AgentEnrichmentChangedEvent, AgentHealthKind, AgentHealthSnapshot, AgentHealthStatus, AgentHeartbeatDeadEvent, AgentHookFiredEvent, AgentId, AgentMessageReceivedEvent, AgentModelSetEvent, AgentOutput, AgentOutputReceivedEvent, AgentPermissionRequestedEvent, AgentPermissionResolvedEvent, AgentResolution, AgentResolutionChangedEvent, AgentRuntimeSnapshot, AgentSnapshot, AgentStartedEvent, AgentStateRestoredEvent, AgentStatus, AgentStatusChangedEvent, AgentStoppedEvent, AgentThinkingStartedEvent, AgentThinkingStoppedEvent, AgentTurnDiffCompletedEvent, AgentWaitingClearedEvent, AgentWaitingStartedEvent, ArtifactAgentHarness, ArtifactAgentRole, ArtifactCreateResponse, ArtifactDetailResponse, ArtifactHash, ArtifactId, ArtifactLifecycleState, ArtifactListEntry, ArtifactListResponse, ArtifactMetadata, ArtifactPublishResponse, ArtifactSlug, ArtifactStatusResponse, ArtifactUnshareResponse, ArtifactUrls, ArtifactValidationCode, ArtifactValidationFinding, ArtifactValidationResult, BackendPane, BackendPaneChangedEvent, BackendPaneRemovedEvent, BeadsFreshnessChangedEvent, CHANNEL_REPLY_KIND_VALUES, CLAUDE_CODE_BEHAVIOR, CODEX_BEHAVIOR, COMPANION_TERMINAL_CLOSE_BODY_KEYS, COMPANION_TERMINAL_OPEN_BODY_KEYS, COMPOSER_COMMAND_INSERT_OVERRIDES, COMPOSER_COMMAND_MANIFEST, COMPOSER_COMMAND_VARIANTS, CONTEXT_LAYER_KINDS, CONTEXT_PREVIEW_HARNESSES, ChannelPermissionRequestSnapshot, ChannelReplyArtifactRef, ChannelReplyKind, ChatMessage, ClaudeChannelPermissionBehavior, CompactBoundary, ContextEditableLayerRecord, ContextHarnessPreviews, ContextLayerDraft, ContextLayerKind, ContextLayerSaveRequest, ContextLayerSaveResponse, ContextLayerTarget, ContextLayersResponse, ContextPreviewDiagnostic, ContextPreviewHarness, ContextPreviewRequest, ContextPreviewResponse, ContextProjectSummary, ContextSyncRequest, ContextSyncResponse, ContextSyncTarget, ContextUsage, ContextWorkspaceSummary, ConversationCompactingChangedEvent, ConversationCostSummary, ConversationCreatedEvent, ConversationEvent, ConversationFilter, ConversationMovedEvent, ConversationPermissionChangedEvent, ConversationPullRequests, ConversationPullRequestsChangedEvent, ConversationResponse, ConversationTitleChangedEvent, CostEventRecordedEvent, DEFAULT_EFFORT, DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE, DEFAULT_MAX_TURN_DIFF_SUMMARIES_PER_AGENT, DashboardLifecycleCompletedEvent, DashboardLifecycleFailedEvent, DashboardLifecycleStartedEvent, DashboardSnapshot, DeepWipeRpc, DeployStalenessSnapshot, DerivedBranchState, DerivedIssueState, DerivedPrState, DerivedWorkStart, DirectoryEntry, DirectoryEntryKind, DirectoryEntryLocation, DirectoryEntrySource, DirectoryEntryState, DirectoryPause, DirectoryPauseBy, DirectoryProviderError, DirectoryScope, DirectoryTranscriptRef, DiscoveredSessionSnapshot, DomainEvent, EDITORS, EFFORT_LEVELS, ENVIRONMENT_PROTOCOL_VERSION, EditorIdSchema, EffortLevelSchema, EmbedProgressEvent, EmbedProgressSnapshot, EmbedSessionsRpc, EnrichCompleteEvent, EnrichProgressEvent, EnrichProgressSnapshot, EnrichSessionsRpc, EnrichStatsSnapshot, EnvironmentCapabilities, EnvironmentDescriptor, EnvironmentId, ExtractionProviderConfig, ExtractionProviderTarget, FeatureNode, FeatureRegistryEntry, FeatureRegistryStatus, FlywheelAgent, FlywheelAgentStatus, FlywheelAgentSummary, FlywheelBugRateCriterion, FlywheelConversationSummary, FlywheelDerivedStatus, FlywheelEffort, FlywheelFreshness, FlywheelHarness, FlywheelHeadline, FlywheelHttpUrl, FlywheelInFlightRow, FlywheelJournalSummary, FlywheelLastTick, FlywheelOrchestrator, FlywheelOrderBookSummary, FlywheelOrders, FlywheelP0Criterion, FlywheelParkedItem, FlywheelPipelineItem, FlywheelPipelineStatus, FlywheelPipelineVerb, FlywheelPolicies, FlywheelRunId, FlywheelRunState, FlywheelScope, FlywheelStats, FlywheelStatsCriterionStatus, FlywheelStatsTrend, FlywheelStatsWindow, FlywheelStatus, FlywheelSubstrateBug, FlywheelSubstrateBugRow, FlywheelSubstrateBugStatus, FlywheelSubstrateSeverity, FlywheelSuggestion, FlywheelSuggestionAction, FlywheelSuggestionPriority, FlywheelSystemStatus, GITHUB_QUOTA_BUCKETS, GITHUB_QUOTA_CALLERS, GITHUB_QUOTA_POOLS, GetAvailableEditorsRpc, GetConversationCostByWorkspaceRpc, GetConversationCostRpc, GetConversationStatsRpc, GetDiscoveredSessionRpc, GetSessionsFeedFacetsRpc, GetSnapshotRpc, GitHubQuotaBucket, GitHubQuotaCaller, GitHubQuotaCallerUsage, GitHubQuotaChangedEvent, GitHubQuotaPause, GitHubQuotaPool, GitHubQuotaSample, GitHubQuotaSnapshot, GitHubQuotaUsage, GitHubRateLimitKind, GlobalContextLayerRecord, GlobalContextLayerTarget, HOOK_INVENTORY, HealthReason, HealthState, HostHealthMetrics, HostPlatform, HygieneFinding, HygienePullRequest, HygieneReport, INITIAL_READ_MODEL_STATE, ISSUE_ATTENTIONS, ISSUE_STATES, ISSUE_STATE_PRECEDENCE, IssueAttention, IssueId, IssueState, IssueStateChangedEvent, IssueStatusChangedEvent, IssueTransitionedEvent, IssuesDeltaEvent, IssuesSnapshotEvent, IssuesUpdatedEvent, KIMI_CODE_BEHAVIOR, KNOWN_HARNESSES, LANE_STARTING_GRACE_MS, LegacySystemHealthSummary, LegacyWebhookRelaySummary, LinearMcpAuthCallbackRelayedEvent, LinearMcpAuthHealthyEvent, LinearMcpAuthNotifiedEvent, LinearMcpAuthRequiredEvent, ListDiscoveredSessionsRpc, ListSessionsFeedRpc, MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH, MAX_CHANNEL_REPLY_ARTIFACT_REFS, MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH, MAX_CHANNEL_REPLY_SUMMARY_LENGTH, MEMBERSHIP_UNAVAILABLE_REASONS, MUSE_BEHAVIOR, MemoryAgentRole, MemoryHealthChangedEvent, MemoryIdentity, MemoryObservation, MemoryObservationCreatedEvent, MemoryResetMarkerCreatedEvent, MemoryRollupTriggeredEvent, MemoryStatus, MemoryStatusPhase, MemoryStatusUpdatedEvent, MemoryTokenUsage, MergeReadyEvent, ModelOrigin, ModelOriginEntry, NON_ESSENTIAL_GITHUB_CALLERS, OHMYPI_BEHAVIOR, OPENCODE_BEHAVIOR, OVERDECK_AGENT_PROTOCOL_VERSION, OVERDECK_DASHBOARD_PROTOCOL_VERSION, OpenInEditorInput, OperatorInterventionEvent, OrderBook, OrderBookIndexEntry, OrderBookItem, OrderBookLane, OrderBookPosture, OrderBookSettings, OrderBookStatus, PIPELINE_MEMBERSHIP_LOADING_CODE, PRIME_AGENT_BEHAVIOR, PanRpcError, PanRpcGroup, PendingTurn, PipelineReviewCompletedEvent, PipelineReviewStartedEvent, PipelineTestCompletedEvent, PipelineTestStartedEvent, PipelineVerificationFailedEvent, PipelineVerificationStartedEvent, PlanItemStatusChangedEvent, PlanItemsUnblockedEvent, PlanSubitemStatusChangedEvent, PlanningFailedEvent, PlanningStartedEvent, PlanningSyncEvent, PrChecksState, PrReviewState, ProjectCiHeadObservedEvent, ProjectCiSnapshot, ProjectCiSuite, ProjectCiSuiteObservedEvent, ProjectContextLayerRecord, ProjectContextLayerTarget, ProjectDeployChangedEvent, ProjectDeployPhase, ProjectDeploySnapshot, ProjectSessionTree, ProposedPlan, PullRequestKey, PullRequestLink, PullRequestLinkListing, PullRequestLinkSource, PullRequestLinkedConversation, PullRequestSnapshot, PullRequestState, RagDecision, RagDecisionSource, ReadFileAtPathInput, ReadFileAtPathResult, ReadFileAtPathRpc, ReadWorkspaceFileInput, ReadWorkspaceFileResult, ReadWorkspaceFileRpc, ReplayEventsRpc, ResetMarker, ResetMarkerScope, ResizeTerminalRpc, ResolveFilePathExistsInput, ResolveFilePathExistsResult, ResolveFilePathExistsRpc, ResourceStats, ResourcesUpdatedEvent, RestartGateChangedEvent, RestartGateKind, RestartGateOutcome, RestartGateRequest, RestartGateSnapshot, ReviewApprovedEvent, ReviewCoordinatorDiedEvent, ReviewCoordinatorStartedEvent, ReviewReviewerCompletedEvent, ReviewReviewerStartedEvent, ReviewSpecialistTimedOutEvent, ReviewVerdictDispatchedEvent, ReviewVerdictRejectedEvent, ReviewVerdictRestoreBlockedEvent, ReviewerRoundMetadata, ReviewerRoundSummary, Role, SINGLETON_AGENT_IDS, ScanCompleteEvent, ScanConversationsRpc, ScanProgressEvent, ScanProgressSnapshot, ScanResult, ScanStartedEvent, ScopedAgentRef, ScopedConversationRef, ScopedIssueRef, ScopedProjectRef, ScopedRef, ScopedTerminalRef, SearchConversationsRpc, SendTerminalInputRpc, SequenceNumber, ServiceHealthSnapshot, ServiceHealthStatus, SessionNode, SessionNodePresence, SessionNodeType, SessionTreeDelta, SessionsFeedFacetsSnapshot, SessionsFeedRowSnapshot, SessionsFeedSource, ShadowInferenceUpdateEvent, ShellOpenInEditorRpc, SpecialistCompletedEvent, SpecialistFailedEvent, SpecialistLifecycle, SpecialistStartedEvent, StartAgentRpc, StartPlanningRpc, SubagentHumanInput, SubagentSummary, SubscribeAgentOutputRpc, SubscribeConversationMessagesRpc, SubscribeDomainEventsRpc, SubscribeIssueEventsRpc, SubscribeProjectSessionTreeRpc, SubscribeTerminalRpc, SubstrateBugFiledEvent, SweepEscalatedEvent, SweepRecommendationEvent, SweepScanEvent, SystemHealthConsumer, SystemHealthSeverityChangedEvent, SystemHealthSnapshot, SystemHeartbeatEvent, TELEMETRY_CLI_VERBS, TELEMETRY_EVENT_CATALOG, TELEMETRY_EVENT_NAMES, TELEMETRY_PROPERTY_DOMAINS, TERMINAL_BACKEND_NAMES, TerminalCloseRpc, TerminalOpenRpc, TerminalOutput, TerminalResizeRpc, TerminalWriteRpc, TestPassedEvent, ThinkingState, TickMarker, TickMarkerPhase, TurnDiffFileChange, TurnDiffSummary, TurnEndAssessment, WIRED_HOOK_INVENTORY, WIRED_HOOK_NAMES, WS_METHODS, WaitingReason, WaitingState, WorkCompletedEvent, WorkLogEntry, WorkspaceAbortedEvent, WorkspaceArtifactsResponse, WorkspaceContextLayerRecord, WorkspaceContextLayerTarget, WorkspaceCreatedEvent, WorkspaceDeletedEvent, WorkspaceDestroyedEvent, WorkspaceWipeStartedEvent, WriteFileAtPathInput, WriteFileAtPathResult, WriteFileAtPathRpc, applyEvent, applyEvents, applyIssueDelta, bucketQuotaPoints, bucketQuotaRemaining, canonicalPullRequestUrl, companionTerminalKindFor, compareEffort, compareIssueIds, createIssueDelta, decodeFlywheelDerivedStatus, decodeFlywheelStats, deriveProjectCi, encodeFlywheelStats, getHarness, getHarnessBehavior, getMaxMemoryObservationsPerIssue, getMaxTurnDiffSummariesPerAgent, getRuntimeBehavior, indexPanesByAgentKey, isAgentRole, isAgentSessionName, isChannelReplyKind, isConfiguredPullRequestRepo, isEffortLevel, isIssueAttention, isIssueState, isProtocolCompatible, isSingletonConversation, isTerminalBackendName, isTerminalTurnDiffSummaryStatus, laneActivityOf, normalizeChannelReplyPayload, omitTurnDiffSummariesForAgent, paneAgentKey, parsePullRequestRef, projectLegacySystemHealthSummary, repoFromRemoteUrl, resolveEffectivePullRequest, syncSnapshot, trimMemoryObservations, trimTurnDiffSummaries, withPaneLivenessAlias };
14606
15819
 
14607
15820
  //# sourceMappingURL=index.mjs.map