cli-jaw 2.17.72 → 2.17.73

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.
Files changed (169) hide show
  1. package/README.md +16 -0
  2. package/dist/src/agent/aside-catalog.js +339 -0
  3. package/dist/src/agent/aside-catalog.js.map +1 -0
  4. package/dist/src/agent/aside-cli.js +208 -0
  5. package/dist/src/agent/aside-cli.js.map +1 -0
  6. package/dist/src/agent/aside-replay.js +120 -0
  7. package/dist/src/agent/aside-replay.js.map +1 -0
  8. package/dist/src/agent/aside-runtime.js +175 -0
  9. package/dist/src/agent/aside-runtime.js.map +1 -0
  10. package/dist/src/agent/lifecycle-handler.js +26 -18
  11. package/dist/src/agent/lifecycle-handler.js.map +1 -1
  12. package/dist/src/agent/memory-flush-controller.js +3 -0
  13. package/dist/src/agent/memory-flush-controller.js.map +1 -1
  14. package/dist/src/agent/prompt-context.js +2 -2
  15. package/dist/src/agent/prompt-context.js.map +1 -1
  16. package/dist/src/agent/session-persistence.js +2 -0
  17. package/dist/src/agent/session-persistence.js.map +1 -1
  18. package/dist/src/agent/spawn/backend-aside.js +314 -0
  19. package/dist/src/agent/spawn/backend-aside.js.map +1 -0
  20. package/dist/src/agent/spawn/resume.js +3 -0
  21. package/dist/src/agent/spawn/resume.js.map +1 -1
  22. package/dist/src/agent/spawn-env.js +5 -0
  23. package/dist/src/agent/spawn-env.js.map +1 -1
  24. package/dist/src/agent/spawn.js +60 -6
  25. package/dist/src/agent/spawn.js.map +1 -1
  26. package/dist/src/cli/cli-status-worker.js +2 -1
  27. package/dist/src/cli/cli-status-worker.js.map +1 -1
  28. package/dist/src/cli/employee-handler.js +2 -0
  29. package/dist/src/cli/employee-handler.js.map +1 -1
  30. package/dist/src/cli/handlers-completions.js +20 -8
  31. package/dist/src/cli/handlers-completions.js.map +1 -1
  32. package/dist/src/cli/handlers-runtime.js +2 -0
  33. package/dist/src/cli/handlers-runtime.js.map +1 -1
  34. package/dist/src/cli/readiness.js +7 -3
  35. package/dist/src/cli/readiness.js.map +1 -1
  36. package/dist/src/cli/registry-live.js +47 -0
  37. package/dist/src/cli/registry-live.js.map +1 -1
  38. package/dist/src/cli/registry.js +5 -0
  39. package/dist/src/cli/registry.js.map +1 -1
  40. package/dist/src/core/config.js +10 -3
  41. package/dist/src/core/config.js.map +1 -1
  42. package/dist/src/core/employees.js +5 -3
  43. package/dist/src/core/employees.js.map +1 -1
  44. package/dist/src/core/settings-merge.js +35 -0
  45. package/dist/src/core/settings-merge.js.map +1 -1
  46. package/dist/src/core/settings-watch.js +10 -1
  47. package/dist/src/core/settings-watch.js.map +1 -1
  48. package/dist/src/orchestrator/gateway.js +2 -0
  49. package/dist/src/orchestrator/gateway.js.map +1 -1
  50. package/dist/src/routes/employees.js +8 -0
  51. package/dist/src/routes/employees.js.map +1 -1
  52. package/dist/src/routes/jaw-memory.js +4 -0
  53. package/dist/src/routes/jaw-memory.js.map +1 -1
  54. package/dist/src/routes/orchestrate.js +22 -3
  55. package/dist/src/routes/orchestrate.js.map +1 -1
  56. package/dist/src/routes/settings.js +23 -0
  57. package/dist/src/routes/settings.js.map +1 -1
  58. package/dist/src/shared/aside-contract.js +2 -0
  59. package/dist/src/shared/aside-contract.js.map +1 -0
  60. package/dist/src/types/cli-engine.js +1 -0
  61. package/dist/src/types/cli-engine.js.map +1 -1
  62. package/package.json +1 -1
  63. package/public/dist/.vite/manifest.json +186 -175
  64. package/public/dist/assets/{Activity-DPLlOJ46.js → Activity-DsBgOkCP.js} +1 -1
  65. package/public/dist/assets/{AdvancedExport-BgOgGvc5.js → AdvancedExport-COGQ7vbK.js} +1 -1
  66. package/public/dist/assets/Agent-6qGQN7lY.js +1 -0
  67. package/public/dist/assets/AsideSelectionFields-DvU5xWAP.js +1 -0
  68. package/public/dist/assets/{Browser-m6VynQXV.js → Browser-r09vOsR1.js} +1 -1
  69. package/public/dist/assets/ChannelEnablementControl-ooOkdd-Q.js +85 -0
  70. package/public/dist/assets/{ChannelSetupEntry-DHLoZEzJ.js → ChannelSetupEntry-B0b4TdhH.js} +1 -1
  71. package/public/dist/assets/{ChannelsDiscord-B-G8vsYy.js → ChannelsDiscord-9EMLt5b3.js} +1 -1
  72. package/public/dist/assets/{ChannelsSlack-oPuh922z.js → ChannelsSlack-B8ETzWFt.js} +1 -1
  73. package/public/dist/assets/{ChannelsTelegram-PmTv43KQ.js → ChannelsTelegram-CflLUsQw.js} +1 -1
  74. package/public/dist/assets/{DashboardMeta-BqEiJrvr.js → DashboardMeta-wjEuh9-E.js} +1 -1
  75. package/public/dist/assets/{Developer-CbySB7_Z.js → Developer-B3cDkldo.js} +1 -1
  76. package/public/dist/assets/{Display-DU4_76cS.js → Display-BXQxpv6-.js} +1 -1
  77. package/public/dist/assets/{Display-C0Zdamcb.js → Display-Cl4DD334.js} +1 -1
  78. package/public/dist/assets/{Embedding-CCFMOB_2.js → Embedding-D-T92-En.js} +1 -1
  79. package/public/dist/assets/{Employees-BanvF58d.js → Employees-Cf4IeF0N.js} +1 -1
  80. package/public/dist/assets/{Heartbeat-uyi_MpUd.js → Heartbeat-Bj8V_bUM.js} +1 -1
  81. package/public/dist/assets/{Mcp-rjPoL_Zo.js → Mcp-jAcut_fw.js} +1 -1
  82. package/public/dist/assets/Memory-BOXkBFKg.js +1 -0
  83. package/public/dist/assets/ModelProvider-DIDQ37z-.js +1 -0
  84. package/public/dist/assets/{Network-CuqFrOvR.js → Network-I5eOe2hf.js} +1 -1
  85. package/public/dist/assets/{Permissions-BltXiZnz.js → Permissions-B7PthH01.js} +1 -1
  86. package/public/dist/assets/{Permissions-DcCbFMIq.js → Permissions-BCYUfJg1.js} +1 -1
  87. package/public/dist/assets/Profile-CYPMVhQM.js +1 -0
  88. package/public/dist/assets/{Prompts-C9vY8ivQ.js → Prompts-BRAgZLNQ.js} +1 -1
  89. package/public/dist/assets/{SpeechKeys-BJ8V7U5E.js → SpeechKeys-UlXNSFoe.js} +1 -1
  90. package/public/dist/assets/{TelegramHub-DtyjLGFR.js → TelegramHub-BhUFhIcv.js} +1 -1
  91. package/public/dist/assets/agent-meta-v4jNRAbX.js +1 -0
  92. package/public/dist/assets/app-SVIyP1TT.js +59 -0
  93. package/public/dist/assets/bgtask-badge-HIrvpcr_.js +1 -0
  94. package/public/dist/assets/{bgtask-badge-oPvZyylH.js → bgtask-badge-tYRnplEV.js} +1 -1
  95. package/public/dist/assets/constants-_iw-lnKY.js +1 -0
  96. package/public/dist/assets/{employees-BchFBkDz.js → employees-DNTPcxtZ.js} +2 -2
  97. package/public/dist/assets/{error-normalize-clOi-AAA.js → error-normalize-jnjrKZDu.js} +1 -1
  98. package/public/dist/assets/{iframe-renderer-CcGzEi0v.js → iframe-renderer--lHbKTDh.js} +2 -2
  99. package/public/dist/assets/iframe-renderer-DigNC5FU.js +1 -0
  100. package/public/dist/assets/{manager-nquYZ7_x.js → manager-qGH-xUZ7.js} +1 -1
  101. package/public/dist/assets/{memory-DTpD4see.js → memory-BAdRkBdk.js} +1 -1
  102. package/public/dist/assets/memory-DA8x5314.js +1 -0
  103. package/public/dist/assets/message-history-CGOgZH4l.js +1 -0
  104. package/public/dist/assets/{message-history-DSvflaZ9.js → message-history-PAYeKmia.js} +1 -1
  105. package/public/dist/assets/page-shell-Cz2ylri8.js +1 -0
  106. package/public/dist/assets/{render-D8dVQ_bm.js → render-F6xF6w6c.js} +1 -1
  107. package/public/dist/assets/settings-DMbNzuTm.js +1 -0
  108. package/public/dist/assets/{settings-DMiQe469.js → settings-DZ2-ca8T.js} +1 -1
  109. package/public/dist/assets/{settings-Bp0sgQ2a.js → settings-W0WFhBf2.js} +1 -1
  110. package/public/dist/assets/settings-core-2vZXNf6n.js +2 -0
  111. package/public/dist/assets/settings-core-BofMyzL9.js +1 -0
  112. package/public/dist/assets/{settings-embedding-BRW0WZvh.js → settings-embedding-Bjwpe8xu.js} +2 -2
  113. package/public/dist/assets/{shared-D1begqvi.js → shared-CftvKNY9.js} +1 -1
  114. package/public/dist/assets/{sidebar-CrpBbYFg.js → sidebar-Clkqd78q.js} +3 -3
  115. package/public/dist/assets/{skills-Bx8U-gJa.js → skills-0aA-RuN9.js} +1 -1
  116. package/public/dist/assets/skills-SqmQXndw.js +1 -0
  117. package/public/dist/assets/{slash-commands-DkrGUOnC.js → slash-commands-4zHHXEeU.js} +1 -1
  118. package/public/dist/assets/slash-commands-D5LqONzL.js +1 -0
  119. package/public/dist/assets/{trace-drawer-Dbe5pTbf.js → trace-drawer-B4O0Tl1M.js} +1 -1
  120. package/public/dist/assets/{ui-rnVAM91F.js → ui-CVtGpivr.js} +1 -1
  121. package/public/dist/assets/ui-_cqgseFX.js +1 -0
  122. package/public/dist/index.html +1 -1
  123. package/public/dist/manager/index.html +1 -1
  124. package/public/dist/settings/index.html +1 -1
  125. package/public/js/constants.ts +5 -0
  126. package/public/js/features/employees.ts +3 -3
  127. package/public/js/features/heartbeat.ts +14 -1
  128. package/public/js/features/settings-core.ts +39 -13
  129. package/public/js/features/settings-types.ts +1 -1
  130. package/public/locales/en.json +2 -0
  131. package/public/locales/ja.json +2 -0
  132. package/public/locales/ko.json +2 -0
  133. package/public/locales/zh.json +2 -0
  134. package/public/manager/src/settings/SettingsShell.tsx +1 -1
  135. package/public/manager/src/settings/pages/Agent.tsx +137 -52
  136. package/public/manager/src/settings/pages/Heartbeat.tsx +6 -0
  137. package/public/manager/src/settings/pages/Memory.tsx +8 -6
  138. package/public/manager/src/settings/pages/ModelProvider.tsx +31 -6
  139. package/public/manager/src/settings/pages/Profile.tsx +2 -2
  140. package/public/manager/src/settings/pages/components/AsideSelectionFields.tsx +33 -0
  141. package/public/manager/src/settings/pages/components/AvatarCard.tsx +22 -34
  142. package/public/manager/src/settings/pages/components/PerCliRow.tsx +29 -1
  143. package/public/manager/src/settings/pages/components/agent/FlushAgentSection.tsx +7 -6
  144. package/public/manager/src/settings/pages/components/agent/RuntimeEmployeeRow.tsx +4 -4
  145. package/public/manager/src/settings/pages/components/agent/RuntimeHeader.tsx +5 -0
  146. package/public/manager/src/settings/pages/components/agent/agent-meta.ts +7 -0
  147. package/public/manager/src/settings/pages/components/agent/runtime-employees-helpers.ts +3 -2
  148. package/public/manager/src/settings/pages/components/aside-models.ts +104 -0
  149. package/public/manager/src/settings/settings-client.ts +3 -1
  150. package/public/manager/src/settings/types.ts +1 -0
  151. package/public/dist/assets/Agent-O_U8ny90.js +0 -1
  152. package/public/dist/assets/ChannelEnablementControl-BSuKQhTW.js +0 -85
  153. package/public/dist/assets/Memory-C9I33pIi.js +0 -1
  154. package/public/dist/assets/ModelProvider-fiUktMaO.js +0 -1
  155. package/public/dist/assets/Profile-DUL7-RE_.js +0 -1
  156. package/public/dist/assets/agent-meta-94LMwZZK.js +0 -1
  157. package/public/dist/assets/app-Iu76iEiU.js +0 -59
  158. package/public/dist/assets/bgtask-badge-DHo2mkMI.js +0 -1
  159. package/public/dist/assets/constants-DmZ9Rjym.js +0 -1
  160. package/public/dist/assets/iframe-renderer-DSLsfZq8.js +0 -1
  161. package/public/dist/assets/memory-BgUF3M9l.js +0 -1
  162. package/public/dist/assets/message-history-DkB768L3.js +0 -1
  163. package/public/dist/assets/page-shell-DfinU3mb.js +0 -1
  164. package/public/dist/assets/settings-DxjoyiIM.js +0 -1
  165. package/public/dist/assets/settings-core-CXWmPKUE.js +0 -1
  166. package/public/dist/assets/settings-core-D4zGy72z.js +0 -2
  167. package/public/dist/assets/skills-BY-hQnqM.js +0 -1
  168. package/public/dist/assets/slash-commands-C53T9J3g.js +0 -1
  169. package/public/dist/assets/ui-C0o427q6.js +0 -1
@@ -0,0 +1,314 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { readAsideCatalog, resolveAsideSelection, AsideCatalogError } from '../aside-catalog.js';
3
+ import { startAsideRun } from '../aside-runtime.js';
4
+ import { broadcast } from '../../core/bus.js';
5
+ import { getSessionBucket, clearSessionBucket, insertMessage } from '../../core/db.js';
6
+ import { consumePendingBootstrapPrompt } from '../../core/main-session.js';
7
+ import { stripSkillMentionBlock } from '../../core/skill-mentions.js';
8
+ import { startTraceRun } from '../../trace/store.js';
9
+ import { resolveScopedSessionBucket } from '../args.js';
10
+ import { buildAsideResumeKey } from '../spawn-env.js';
11
+ import { buildPromptForArgs, PROMPT_HISTORY_MAX_CHARS, PROMPT_HISTORY_MAX_ROWS } from '../prompt-context.js';
12
+ import { shouldResumeBucketSession } from './resume.js';
13
+ import { beginLiveRun, setLiveRunTraceId, getLiveRun, clearLiveRun } from '../live-run-state.js';
14
+ import { isCurrentSessionOwner } from '../session-persistence.js';
15
+ import { handleAgentExit } from '../lifecycle-handler.js';
16
+ import { handoffRuntimeOutcome } from '../runtime/outcome.js';
17
+ import { createPrintActivity, finishPrintActivity } from '../runtime/print-activity.js';
18
+ import { captureExitSettler, settleCapturedExit } from './exit-settle.js';
19
+ import { isLifecycleSteerReason } from './kill-reason.js';
20
+ import { FALLBACK_MAX_RETRIES } from './queue.js';
21
+ import { settleOnce } from '../../orchestrator/request-registry.js';
22
+ /** Admission is deliberately before bootstrap, isolation, generic argv or NDJSON. */
23
+ export function asideAdmissionError(mainManaged, opts, policy, origin) {
24
+ if (!mainManaged || opts.agentId || opts.employeeSessionId || opts.internal || opts.forceNew)
25
+ return 'aside_main_only';
26
+ if (origin === 'heartbeat')
27
+ return 'aside_scheduled_unsupported';
28
+ if (opts._isFallback || opts._retryAttempt !== undefined || opts._isSmokeContinuation || opts._isGoalContinuation
29
+ || opts._isCapacityFallback || opts._employeeFreshSessionRetry)
30
+ return 'aside_automatic_retry_unsupported';
31
+ if (opts.images?.length)
32
+ return 'aside_images_unsupported';
33
+ if (policy !== 'auto' && policy !== 'safe')
34
+ return 'aside_policy_unsupported';
35
+ return null;
36
+ }
37
+ /** Dedicated CLI backend; the runtime, rather than a process exit event, selects finality. */
38
+ export function runAsideBackend(locals, host) {
39
+ const { mainRun: run, scopeKey, chatSessionId, ownerGeneration, persistenceOwner, origin, runPin } = locals;
40
+ if (!run)
41
+ throw new Error('aside_main_owner_required');
42
+ // Every execution selector is copied before the catalog's first await.
43
+ const context = { ...locals.context };
44
+ const cwd = locals.spawnCwd || process.cwd();
45
+ const policy = locals.policy;
46
+ const opts = { ...locals.opts };
47
+ const env = { ...locals.spawnEnv };
48
+ const model = locals.model || 'default', effort = locals.effort || 'default';
49
+ const sysPrompt = locals.sysPrompt;
50
+ const originalPrompt = locals.prompt;
51
+ // Generation fences session mutations, not control of captured commands.
52
+ const controlsRun = () => host.activeMainProcesses.get(scopeKey) === run;
53
+ const owned = () => controlsRun()
54
+ && run.ownerGeneration === ownerGeneration && isCurrentSessionOwner(persistenceOwner, scopeKey);
55
+ let child = null;
56
+ let childClosed = true;
57
+ let handle;
58
+ let cancelled = false, reason = null, sealed = false;
59
+ let uncertain = false;
60
+ let exitArm;
61
+ const cancel = (cause) => {
62
+ if (sealed || cancelled)
63
+ return;
64
+ cancelled = true;
65
+ reason = cause;
66
+ exitArm = captureExitSettler(scopeKey);
67
+ // Runtime cancellation latches synchronously, including before its session receipt.
68
+ if (handle)
69
+ void handle.cancel().catch(() => { });
70
+ };
71
+ run.starting = true;
72
+ run.cancelTurn = cancel;
73
+ void (async () => {
74
+ let ctx;
75
+ const retireCapturedRun = () => {
76
+ if (!controlsRun() || !childClosed || (handle && !handle.commandsClosed()))
77
+ return false;
78
+ // Identity above prevents releasing a replacement, including process=null.
79
+ // The same captured run may have had its generation invalidated in place.
80
+ const released = host.releaseMainRun(scopeKey, child, run.ownerGeneration);
81
+ if (released && ctx?.traceRunId && getLiveRun(scopeKey).traceRunId === ctx.traceRunId)
82
+ clearLiveRun(scopeKey);
83
+ return released;
84
+ };
85
+ let bucket = '', resumeKey = null, selectedModel = model, selectedEffort = '';
86
+ let isResume = false;
87
+ let result;
88
+ try {
89
+ const catalog = await readAsideCatalog(context);
90
+ const selection = resolveAsideSelection(catalog, model, effort);
91
+ selectedModel = selection.model;
92
+ selectedEffort = selection.effort || '';
93
+ resumeKey = buildAsideResumeKey(selection, cwd, policy);
94
+ bucket = resolveScopedSessionBucket('aside', selectedModel, 'aside', scopeKey, selectedEffort, 'fallback', false);
95
+ const row = getSessionBucket.get(bucket);
96
+ isResume = !opts._skipResume && !!row?.session_id
97
+ && shouldResumeBucketSession('aside', selectedModel, row.model, resumeKey, row.resume_key);
98
+ if (!owned() || !isCurrentSessionOwner(persistenceOwner, scopeKey))
99
+ cancelled = true;
100
+ if (cancelled) {
101
+ result = { status: 'stopped', finalText: null, partialText: '', sessionId: null, reusable: false, exitCode: null, cleanup: 'confirmed' };
102
+ }
103
+ else {
104
+ run.meta.model = selectedModel;
105
+ run.meta.effectiveProvider = 'aside';
106
+ const bootstrap = isResume ? '' : consumePendingBootstrapPrompt(scopeKey);
107
+ const prompt = bootstrap ? `${bootstrap}\n\n---\n\n${originalPrompt}` : originalPrompt;
108
+ const history = !isResume && !opts._skipHistory
109
+ ? host.buildHistoryBlock(originalPrompt, cwd, chatSessionId, PROMPT_HISTORY_MAX_ROWS, PROMPT_HISTORY_MAX_CHARS) : '';
110
+ const fullPrompt = buildPromptForArgs({ cli: 'aside', effectiveProvider: 'aside', prompt: `[Workspace Context]\nProject root: ${cwd}\n${opts.workspaceContext || ''}\n\n${prompt}`,
111
+ historyBlock: history, sysPrompt, isResume });
112
+ if (!opts._skipInsert)
113
+ insertMessage.run('user', stripSkillMentionBlock(originalPrompt), 'aside', selectedModel, cwd, chatSessionId);
114
+ // Journal failure cannot change execution or select an empty/error final.
115
+ let traceRunId = `tr_aside_${randomUUID()}`;
116
+ try {
117
+ traceRunId = startTraceRun({ cli: 'aside', model: selectedModel, workingDir: cwd,
118
+ agentLabel: 'main', audience: 'public', sessionId: chatSessionId, scopeKey });
119
+ }
120
+ catch {
121
+ console.warn('[aside] trace admission unavailable');
122
+ }
123
+ try {
124
+ beginLiveRun(scopeKey, 'aside');
125
+ setLiveRunTraceId(scopeKey, traceRunId);
126
+ }
127
+ catch {
128
+ console.warn('[aside] live projection unavailable');
129
+ }
130
+ const capturedCtx = { fullText: '', traceLog: [], toolLog: [], seenToolKeys: new Set(),
131
+ hasClaudeStreamEvents: false, sessionId: null, stderrBuf: '',
132
+ cost: null, turns: null, duration: null, tokens: null, runStartedAt: Date.now(),
133
+ liveScope: scopeKey, traceRunId, traceAudience: 'public', origin,
134
+ activityIdentity: { sessionId: chatSessionId, scope: scopeKey },
135
+ ...(opts.requestId ? { requestId: opts.requestId } : {}) };
136
+ ctx = capturedCtx;
137
+ try {
138
+ capturedCtx.printActivity = createPrintActivity({ runId: traceRunId, sessionId: chatSessionId,
139
+ scope: scopeKey, turnId: traceRunId, audience: 'public' }, 'aside');
140
+ }
141
+ catch {
142
+ console.warn('[aside] Activity projection unavailable');
143
+ }
144
+ try {
145
+ broadcast('agent_status', { running: true, cli: 'aside', agentId: 'main', scope: scopeKey });
146
+ }
147
+ catch {
148
+ console.warn('[aside] status observer failed');
149
+ }
150
+ handle = startAsideRun({ binary: locals.binary, cwd, env,
151
+ selection, permission: policy === 'safe' ? 'guard' : 'full-access', prompt: fullPrompt,
152
+ ...(isResume && row?.session_id ? { sessionId: row.session_id } : {}) }, {
153
+ onChild(proc) {
154
+ if (sealed)
155
+ return;
156
+ child = proc;
157
+ childClosed = false;
158
+ proc.once('close', () => { childClosed = true; host.consumeKillReason(proc.pid); });
159
+ if (controlsRun()) {
160
+ run.process = proc;
161
+ run.starting = false;
162
+ }
163
+ },
164
+ onSession(id) { if (!sealed)
165
+ capturedCtx.sessionId = id; },
166
+ onOutput(text) {
167
+ if (sealed)
168
+ return;
169
+ // CLI output is bounded diagnostics, never an assistant final or tool proof.
170
+ capturedCtx.stderrBuf = (capturedCtx.stderrBuf + text).slice(-4000);
171
+ try {
172
+ opts.lifecycle?.onActivity?.('aside');
173
+ }
174
+ catch { /* observer only */ }
175
+ },
176
+ });
177
+ if (cancelled)
178
+ void handle.cancel().catch(() => { });
179
+ result = await handle.result;
180
+ }
181
+ }
182
+ catch (error) {
183
+ // A rejected run promise has supplied no physical-close proof.
184
+ uncertain = handle !== undefined;
185
+ result = { status: cancelled ? 'stopped' : 'error', finalText: null, partialText: '',
186
+ sessionId: null, reusable: false, exitCode: null, cleanup: handle ? 'uncertain' : 'confirmed',
187
+ diagnostic: error instanceof AsideCatalogError ? error.message : 'Aside runtime preparation failed.' };
188
+ }
189
+ sealed = true;
190
+ uncertain = result.cleanup === 'uncertain';
191
+ if (uncertain && controlsRun()) {
192
+ run.starting = true;
193
+ const acknowledgementToken = randomUUID();
194
+ const recovery = 'aside_control_uncertain: reconcile the captured session in Aside, then POST /api/orchestrate/aside/reconcile with sessionId, acknowledgementToken and acknowledged:true. All captured local commands must close. Send fresh input afterward.';
195
+ result = { ...result, diagnostic: `${result.diagnostic || 'Aside cleanup is unresolved.'} Jaw chat ID: ${chatSessionId}. External Aside ID: ${result.sessionId || 'unavailable'} (account ${context.account}, local). Acknowledgement token: ${acknowledgementToken}. ${recovery}` };
196
+ // Repeated Stop closes captured commands without repeating external control.
197
+ run.cancelTurn = () => {
198
+ if (controlsRun() && handle)
199
+ void handle.closeCommands().catch(() => { });
200
+ };
201
+ run.reconcileAside = token => {
202
+ if (token !== acknowledgementToken || !controlsRun() || !childClosed || (handle && !handle.commandsClosed()))
203
+ return false;
204
+ host.queueCtrl.purgeQueueOnStop(scopeKey, 'aside-manual-reconciliation');
205
+ delete run.cancelTurn;
206
+ delete run.reconcileAside;
207
+ return retireCapturedRun();
208
+ };
209
+ }
210
+ try {
211
+ opts.lifecycle?.onExit?.(result.exitCode);
212
+ }
213
+ catch { /* observer only */ }
214
+ if (!owned()) {
215
+ // A captured terminal still settles its caller, but cannot mutate a newer
216
+ // session's MESSAGE history, flush counters, goal or persistence via lifecycle.
217
+ const outcome = cancelled ? { ...result, status: 'stopped', finalText: null } : result;
218
+ if (ctx) {
219
+ handoffRuntimeOutcome(ctx, outcome);
220
+ finishPrintActivity(ctx, { kind: 'turn-end', status: outcome.status, finalText: outcome.finalText });
221
+ }
222
+ settleOnce(opts.requestId, outcome.status === 'done' ? 'completed' : outcome.status === 'stopped' ? 'cancelled' : 'failed', {
223
+ text: outcome.finalText ?? '', scope: scopeKey, sessionId: chatSessionId,
224
+ runtimeStatus: outcome.status, runtimeFinality: outcome.finalText === null ? 'absent' : 'present'
225
+ });
226
+ locals.resolve({ text: outcome.finalText ?? '',
227
+ code: outcome.status === 'done' ? 0 : outcome.status === 'stopped' ? 130 : 1,
228
+ runtimeOutcome: outcome, ...(ctx?.traceRunId ? { traceRunId: ctx.traceRunId } : {}) });
229
+ if (run.cancelTurn === cancel)
230
+ delete run.cancelTurn;
231
+ if (!uncertain && retireCapturedRun() && !cancelled)
232
+ void host.processQueue(scopeKey);
233
+ settleCapturedExit(scopeKey, exitArm);
234
+ return;
235
+ }
236
+ if (!ctx) {
237
+ if (!uncertain)
238
+ retireCapturedRun();
239
+ const text = result.status === 'error' ? result.diagnostic || 'Aside unavailable.' : '';
240
+ settleOnce(opts.requestId, result.status === 'stopped' ? 'cancelled' : 'failed', {
241
+ text, scope: scopeKey, sessionId: chatSessionId
242
+ });
243
+ broadcast('agent_done', { ...runPin, cli: 'aside', text, error: result.status === 'error', runtimeStatus: result.status });
244
+ locals.resolve({ text, code: result.status === 'stopped' ? 130 : 78,
245
+ runtimeOutcome: result, executionInterrupted: result.status === 'stopped', executionFailed: result.status === 'error' });
246
+ if (run.cancelTurn === cancel && !uncertain)
247
+ delete run.cancelTurn;
248
+ if (!cancelled && !uncertain)
249
+ void host.processQueue(scopeKey);
250
+ settleCapturedExit(scopeKey, exitArm);
251
+ return;
252
+ }
253
+ // Failed/stopped sessions must not survive in their captured resumable bucket.
254
+ if ((cancelled || !result.reusable || uncertain) && owned() && isCurrentSessionOwner(persistenceOwner, scopeKey)) {
255
+ try {
256
+ clearSessionBucket.run(bucket);
257
+ }
258
+ catch {
259
+ console.warn('[aside] resumable bucket clear failed');
260
+ }
261
+ }
262
+ ctx.sessionId = !uncertain && !cancelled && result.reusable && result.status === 'done' ? result.sessionId : null;
263
+ ctx.metadata = { ...ctx.metadata, asideCleanup: result.cleanup };
264
+ if (result.diagnostic !== undefined)
265
+ ctx.runtimeDiagnostic = result.diagnostic;
266
+ handoffRuntimeOutcome(ctx, cancelled ? { status: 'stopped', finalText: null, partialText: result.partialText } : result);
267
+ const capturedRun = run;
268
+ try {
269
+ await handleAgentExit({ ctx, code: result.exitCode, cli: 'aside', model: selectedModel, effectiveProvider: 'aside',
270
+ resumeKey, workingDir: cwd, permissions: policy, agentLabel: 'main', mainManaged: true, origin, prompt: originalPrompt,
271
+ opts: { ...opts, _skipSessionPersist: opts._skipSessionPersist === true || !owned() || !result.reusable || cancelled || uncertain },
272
+ cfg: { effort: selectedEffort }, ownerGeneration, persistenceOwner, forceNew: false, empSid: null,
273
+ isResume, wasKilled: cancelled, wasSteer: isLifecycleSteerReason(reason), killReason: reason,
274
+ childExitCode: result.exitCode,
275
+ smokeResult: { isSmoke: false, confidence: 'low', matchedPattern: null, reason: '' },
276
+ effortDefault: '', costLine: '', resolve: locals.resolve, activeProcesses: host.activeProcesses,
277
+ scopeKey, chatSessionId, scopedBucket: bucket, runtimeTransport: 'print', childProcess: child,
278
+ releaseMainRun: (scope, proc, generation) => !uncertain && owned() && host.releaseMainRun(scope, proc, generation),
279
+ retryState: host.queueCtrl.retryStateForScope(scopeKey), fallbackState: host.queueCtrl.fallbackStateForScope(scopeKey),
280
+ fallbackMaxRetries: FALLBACK_MAX_RETRIES,
281
+ processQueue: scope => { if (!cancelled && !uncertain)
282
+ void host.processQueue(scope); },
283
+ onRuntimeEnd: end => ctx?.printActivity?.finish(end) });
284
+ }
285
+ catch {
286
+ // Lifecycle/projection failures cannot replace the runtime's selected terminal.
287
+ const outcome = ctx.runtimeOutcome;
288
+ finishPrintActivity(ctx, { kind: 'turn-end', status: outcome.status, finalText: outcome.finalText });
289
+ if (!ctx.runtimeTerminalAttempted) {
290
+ ctx.runtimeTerminalAttempted = true;
291
+ try {
292
+ broadcast('agent_done', { ...runPin, cli: 'aside', runtimeStatus: outcome.status,
293
+ runtimeFinality: outcome.finalText === null ? 'absent' : 'present',
294
+ text: outcome.finalText ?? '', error: outcome.status === 'error' });
295
+ }
296
+ catch { /* observer only */ }
297
+ }
298
+ locals.resolve({ text: outcome.finalText ?? '',
299
+ code: outcome.status === 'done' ? 0 : outcome.status === 'stopped' ? 130 : 1,
300
+ runtimeOutcome: outcome, ...(ctx.traceRunId ? { traceRunId: ctx.traceRunId } : {}) });
301
+ }
302
+ finally {
303
+ if (!uncertain) {
304
+ if (capturedRun.cancelTurn === cancel)
305
+ delete capturedRun.cancelTurn;
306
+ if (retireCapturedRun() && !cancelled)
307
+ void host.processQueue(scopeKey);
308
+ }
309
+ settleCapturedExit(scopeKey, exitArm);
310
+ }
311
+ })();
312
+ return { child: null, promise: locals.resultPromise };
313
+ }
314
+ //# sourceMappingURL=backend-aside.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-aside.js","sourceRoot":"","sources":["../../../../src/agent/spawn/backend-aside.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,9 @@ export function shouldResumeBucketSession(cli, requestedModel, bucketModel, requ
24
24
  return false;
25
25
  return normalizeModelForCli('kiro-code', requestedModel) === normalizeModelForCli('kiro-code', bucketModel);
26
26
  }
27
+ if (cli === 'aside')
28
+ return Boolean(requestedResumeKey) && requestedResumeKey === bucketResumeKey
29
+ && requestedModel === bucketModel;
27
30
  if (cli === 'opencode' && requestedResumeKey) {
28
31
  return requestedResumeKey === (bucketResumeKey ?? null);
29
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../../src/agent/spawn/resume.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../../src/agent/spawn/resume.ts"],"names":[],"mappings":"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"}
@@ -165,4 +165,9 @@ export function ensureOpencodeAlwaysAllowPermissions(configPath = join(os.homedi
165
165
  console.warn('[jaw:opencode] permission sync failed:', error.message);
166
166
  }
167
167
  }
168
+ /** Full concrete identity; changing any selector starts a fresh Aside session. */
169
+ export function buildAsideResumeKey(selection, cwd, policy) {
170
+ return JSON.stringify(['aside-v1', selection.account, selection.host, selection.provider,
171
+ selection.modelId, selection.effort, cwd, policy]);
172
+ }
168
173
  //# sourceMappingURL=spawn-env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawn-env.js","sourceRoot":"","sources":["../../../src/agent/spawn-env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spawn-env.js","sourceRoot":"","sources":["../../../src/agent/spawn-env.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,7 @@ import { resolveCursorModelVariant } from './cursor-runtime.js';
70
70
  import * as piExecutionControls from './pi-runtime.js';
71
71
  import { runNativeAcpBackend } from './spawn/backend-native-acp.js';
72
72
  import { runCopilotBackend } from './spawn/backend-copilot.js';
73
+ import { runAsideBackend, asideAdmissionError } from './spawn/backend-aside.js';
73
74
  import { runPiBackend } from './spawn/backend-pi.js';
74
75
  import { runCodexAppBackend } from './spawn/backend-codex-app.js';
75
76
  // ─── State ───────────────────────────────────────────
@@ -469,14 +470,14 @@ export function killActiveAgent(scopeKeyOrReason = 'user', scopedReason) {
469
470
  settleOnce(run?.meta?.requestId, 'cancelled', { reason });
470
471
  clearWorkerSlotsOnStop(scopeKey, reason);
471
472
  }
472
- if (run?.cancelTurn && ['codex-app', 'pi', 'cursor', 'grok', 'claude'].includes(getActiveMainCli(scopeKey) || '')) {
473
+ if (run?.cancelTurn && ['codex-app', 'pi', 'cursor', 'grok', 'claude', 'aside'].includes(getActiveMainCli(scopeKey) || '')) {
473
474
  if (run.process?.pid)
474
475
  killReasons.set(run.process.pid, reason);
475
476
  console.log(`[jaw:kill] reason=${reason} scope=${scopeKey} cli=${getActiveMainCli(scopeKey)} action=lease.cancel`);
476
477
  if (isLifecycleExitSettleReason(reason))
477
478
  armExitSettle(scopeKey);
478
479
  run.cancelTurn(reason);
479
- if (isImmediateScopeReleaseReason(reason))
480
+ if (getActiveMainCli(scopeKey) !== 'aside' && isImmediateScopeReleaseReason(reason))
480
481
  activeMainProcesses.delete(scopeKey);
481
482
  return true;
482
483
  }
@@ -616,11 +617,18 @@ export function waitForAllProcessesEnd(timeoutMs = 2000) {
616
617
  const deadline = setTimeout(() => { clearInterval(check); resolve(); }, timeoutMs);
617
618
  });
618
619
  }
620
+ /** Human acknowledgement after external reconciliation; retained owner verifies local close. */
621
+ export function reconcileAsideScope(scopeKey, chatSessionId, acknowledgementToken) {
622
+ const run = activeMainProcesses.get(scopeKey);
623
+ if (run?.meta.chatSessionId !== chatSessionId)
624
+ return false;
625
+ return run?.reconcileAside?.(acknowledgementToken) === true;
626
+ }
619
627
  export function canSteerAgent(scopeKey) {
620
628
  const run = activeMainProcesses.get(scopeKey);
621
629
  // Route CLI steering through either the in-band hook or the native replacement hook.
622
630
  // Each owning hook decides whether the current turn can still accept the input.
623
- return typeof run?.steerTurnInBand === 'function' || typeof run?.replaceTurn === 'function';
631
+ return run?.meta.cli === 'aside' || typeof run?.steerTurnInBand === 'function' || typeof run?.replaceTurn === 'function';
624
632
  }
625
633
  /** Native replacement owns a stricter mismatch contract than queue fallback:
626
634
  * malformed cross-conversation metadata must fail before it is persisted. */
@@ -638,6 +646,8 @@ export async function steerAgent(scopeKey, newPrompt, source, meta) {
638
646
  scope: scopeKey, sessionId: chatSessionId });
639
647
  return 'retired';
640
648
  }
649
+ if (run?.meta.cli === 'aside')
650
+ return 'fallback-queue';
641
651
  if (typeof run?.replaceTurn === 'function') {
642
652
  const capturedSessionOwner = getSessionOwnershipGeneration(scopeKey);
643
653
  const owner = run.meta;
@@ -1062,7 +1072,9 @@ export function spawnAgent(prompt, opts = {}) {
1062
1072
  // saved-session reads, bootstrap consumption, or worker isolation.
1063
1073
  const runtimeTransport = isSwitchableNativeCli(cli)
1064
1074
  ? resolveRuntimeTransport(settings['perCli']?.[cli]?.transport) : 'print';
1065
- const selectedPermissions = opts.permissions || settings['permissions'] || session.permissions || 'auto';
1075
+ const selectedPermissions = cli === 'aside'
1076
+ ? opts.permissions ?? settings['permissions'] ?? session.permissions ?? 'auto'
1077
+ : opts.permissions || settings['permissions'] || session.permissions || 'auto';
1066
1078
  const permissions = Array.isArray(selectedPermissions) ? [...selectedPermissions] : selectedPermissions;
1067
1079
  const capturedPermissions = typeof permissions === 'string'
1068
1080
  || (Array.isArray(permissions) && permissions.every(value => typeof value === 'string')) ? permissions : undefined;
@@ -1089,6 +1101,48 @@ export function spawnAgent(prompt, opts = {}) {
1089
1101
  void processQueue(scopeKey);
1090
1102
  return { child: null, promise: resultPromise };
1091
1103
  }
1104
+ if (cli === 'aside') {
1105
+ const admission = asideAdmissionError(mainManaged, opts, permissions, origin);
1106
+ const cfg = { ...settings['perCli']?.aside };
1107
+ const overrides = { ...settings['activeOverrides']?.aside };
1108
+ const account = cfg.account, selectedHost = cfg.host;
1109
+ const invalidContext = typeof account !== 'string' || !/^u(?:0|[1-9][0-9]{0,8})$/.test(account) || selectedHost !== 'local';
1110
+ const diagnostic = admission || (invalidContext ? 'aside_explicit_local_account_required' : null);
1111
+ if (diagnostic) {
1112
+ if (activeMainProcesses.get(scopeKey) === mainRun)
1113
+ releaseMainRun(scopeKey, null, ownerGeneration);
1114
+ settleOnce(opts.requestId, 'failed', { error: diagnostic, scope: scopeKey, sessionId: chatSessionId });
1115
+ broadcast('agent_done', { ...runPin, text: diagnostic, cli, error: true, ...empTag }, isEmployee ? 'internal' : 'public');
1116
+ try {
1117
+ opts.lifecycle?.onExit?.(78);
1118
+ }
1119
+ catch { /* observer only */ }
1120
+ resolve({ text: diagnostic, code: 78 });
1121
+ return { child: null, promise: resultPromise };
1122
+ }
1123
+ const cwd = settings['workingDir'] || process.cwd();
1124
+ const detected = detectCli('aside');
1125
+ const env = makeCleanEnv(applyCliEnvDefaults('aside', opts.env));
1126
+ env[COMPUTER_USE_APPROVAL_ENV] = permissions === 'auto' ? 'auto' : 'safe';
1127
+ const model = opts.model || overrides.model || cfg.model || 'default';
1128
+ if (mainManaged) {
1129
+ setCurrentMainMeta(scopeKey, stripUndefined({
1130
+ origin, cli: 'aside', permissions: capturedPermissions, target: opts.target,
1131
+ chatId: opts.chatId, requestId: opts.requestId, replyViaTarget: opts.replyViaTarget,
1132
+ scopeId: scopeKey, chatSessionId,
1133
+ ...(opts.remoteKey ? { remoteKey: opts.remoteKey } : {}),
1134
+ model, effectiveProvider: 'aside',
1135
+ }));
1136
+ }
1137
+ return runAsideBackend({ mainRun, scopeKey, chatSessionId, opts, origin, ownerGeneration,
1138
+ persistenceOwner, runPin, prompt, resolve: value => resolve(value), resultPromise,
1139
+ binary: detected.path || 'aside', context: { account, host: 'local' }, policy: permissions,
1140
+ spawnCwd: cwd, spawnEnv: env, model,
1141
+ effort: opts.effort || overrides.effort || cfg.effort || 'default',
1142
+ sysPrompt: customSysPrompt !== undefined ? customSysPrompt : getSystemPrompt(stripUndefined({
1143
+ currentPrompt: prompt, forDisk: false, memorySnapshot, activeCli: 'aside', freshSession: true
1144
+ })) }, { activeMainProcesses, activeProcesses, buildHistoryBlock, releaseMainRun, queueCtrl, processQueue, consumeKillReason });
1145
+ }
1092
1146
  // Ensure AGENTS.md on disk is fresh before CLI reads it
1093
1147
  // Skip for employee spawns — distribute.ts manages AGENTS.md isolation
1094
1148
  if (!opts.internal && !opts._isFallback && !opts.agentId)
@@ -1122,11 +1176,11 @@ export function spawnAgent(prompt, opts = {}) {
1122
1176
  // computation so we can use the authoritative per-bucket resume decision
1123
1177
  // instead of the legacy `isResumeGuess` heuristic. See comment near line 762.
1124
1178
  // ─── Fallback retry: skip to fallback if retries exhausted ───
1125
- if (runtimeTransport !== 'native' && !opts._isFallback && !opts.internal) {
1179
+ if (cli !== 'aside' && runtimeTransport !== 'native' && !opts._isFallback && !opts.internal) {
1126
1180
  const st = queueCtrl.fallbackStateForScope(scopeKey).get(cli);
1127
1181
  if (st?.fallbackCli && st.retriesLeft <= 0) {
1128
1182
  const fbAvail = detectCli(st.fallbackCli)?.available;
1129
- if (fbAvail && !isRetiredCliSelection(st.fallbackCli)) {
1183
+ if (fbAvail && st.fallbackCli !== 'aside' && !isRetiredCliSelection(st.fallbackCli)) {
1130
1184
  console.log(`[jaw:fallback] ${cli} retries exhausted → direct ${st.fallbackCli}`);
1131
1185
  broadcast('agent_fallback', { from: cli, to: st.fallbackCli, reason: 'retries exhausted', ...empTag }, isEmployee ? 'internal' : 'public');
1132
1186
  return spawnAgent(prompt, {