@namzu/cli 12.1.0 → 13.0.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.
Files changed (199) hide show
  1. package/README.md +25 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +119 -60
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/acp.d.ts +24 -8
  6. package/dist/commands/acp.d.ts.map +1 -1
  7. package/dist/commands/acp.js +221 -80
  8. package/dist/commands/acp.js.map +1 -1
  9. package/dist/commands/drain.d.ts.map +1 -1
  10. package/dist/commands/drain.js +45 -9
  11. package/dist/commands/drain.js.map +1 -1
  12. package/dist/commands/prior-messages.d.ts +11 -0
  13. package/dist/commands/prior-messages.d.ts.map +1 -0
  14. package/dist/commands/prior-messages.js +280 -0
  15. package/dist/commands/prior-messages.js.map +1 -0
  16. package/dist/commands/resume.d.ts.map +1 -1
  17. package/dist/commands/resume.js +21 -19
  18. package/dist/commands/resume.js.map +1 -1
  19. package/dist/commands/run-stream.d.ts +5 -3
  20. package/dist/commands/run-stream.d.ts.map +1 -1
  21. package/dist/commands/run-stream.js +66 -62
  22. package/dist/commands/run-stream.js.map +1 -1
  23. package/dist/commands/run.d.ts.map +1 -1
  24. package/dist/commands/run.js +50 -37
  25. package/dist/commands/run.js.map +1 -1
  26. package/dist/config/debug.d.ts +55 -0
  27. package/dist/config/debug.d.ts.map +1 -0
  28. package/dist/config/debug.js +126 -0
  29. package/dist/config/debug.js.map +1 -0
  30. package/dist/config/load.d.ts +88 -4
  31. package/dist/config/load.d.ts.map +1 -1
  32. package/dist/config/load.js +386 -56
  33. package/dist/config/load.js.map +1 -1
  34. package/dist/config/schema.d.ts +87 -5
  35. package/dist/config/schema.d.ts.map +1 -1
  36. package/dist/config/schema.js +5 -5
  37. package/dist/config/schema.js.map +1 -1
  38. package/dist/config/trusted-project-context.d.ts +11 -0
  39. package/dist/config/trusted-project-context.d.ts.map +1 -0
  40. package/dist/config/trusted-project-context.js +28 -0
  41. package/dist/config/trusted-project-context.js.map +1 -0
  42. package/dist/context/project-path.d.ts +3 -0
  43. package/dist/context/project-path.d.ts.map +1 -0
  44. package/dist/context/project-path.js +16 -0
  45. package/dist/context/project-path.js.map +1 -0
  46. package/dist/context/project-tracker.d.ts +30 -0
  47. package/dist/context/project-tracker.d.ts.map +1 -0
  48. package/dist/context/project-tracker.js +217 -0
  49. package/dist/context/project-tracker.js.map +1 -0
  50. package/dist/context/sandbox.d.ts +29 -9
  51. package/dist/context/sandbox.d.ts.map +1 -1
  52. package/dist/context/sandbox.js +8 -0
  53. package/dist/context/sandbox.js.map +1 -1
  54. package/dist/exit-codes.d.ts +5 -4
  55. package/dist/exit-codes.d.ts.map +1 -1
  56. package/dist/exit-codes.js +5 -4
  57. package/dist/exit-codes.js.map +1 -1
  58. package/dist/index.d.ts +2 -2
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +2 -2
  61. package/dist/index.js.map +1 -1
  62. package/dist/integrations/clipboard/text.d.ts +43 -0
  63. package/dist/integrations/clipboard/text.d.ts.map +1 -0
  64. package/dist/integrations/clipboard/text.js +43 -0
  65. package/dist/integrations/clipboard/text.js.map +1 -0
  66. package/dist/integrations/mcp/servers.d.ts +9 -0
  67. package/dist/integrations/mcp/servers.d.ts.map +1 -1
  68. package/dist/integrations/mcp/servers.js +11 -4
  69. package/dist/integrations/mcp/servers.js.map +1 -1
  70. package/dist/integrations/notifications/terminal.d.ts +32 -0
  71. package/dist/integrations/notifications/terminal.d.ts.map +1 -0
  72. package/dist/integrations/notifications/terminal.js +46 -0
  73. package/dist/integrations/notifications/terminal.js.map +1 -0
  74. package/dist/integrations/plugins/runtime.d.ts +17 -0
  75. package/dist/integrations/plugins/runtime.d.ts.map +1 -0
  76. package/dist/integrations/plugins/runtime.js +100 -0
  77. package/dist/integrations/plugins/runtime.js.map +1 -0
  78. package/dist/integrations/providers/credential-store.d.ts +17 -0
  79. package/dist/integrations/providers/credential-store.d.ts.map +1 -1
  80. package/dist/integrations/providers/credential-store.js +114 -2
  81. package/dist/integrations/providers/credential-store.js.map +1 -1
  82. package/dist/integrations/providers/index.d.ts +2 -2
  83. package/dist/integrations/providers/index.d.ts.map +1 -1
  84. package/dist/integrations/providers/index.js +2 -2
  85. package/dist/integrations/providers/index.js.map +1 -1
  86. package/dist/integrations/providers/keychain.d.ts +0 -13
  87. package/dist/integrations/providers/keychain.d.ts.map +1 -1
  88. package/dist/integrations/providers/keychain.js +0 -76
  89. package/dist/integrations/providers/keychain.js.map +1 -1
  90. package/dist/integrations/providers/oauth.d.ts +45 -16
  91. package/dist/integrations/providers/oauth.d.ts.map +1 -1
  92. package/dist/integrations/providers/oauth.js +170 -43
  93. package/dist/integrations/providers/oauth.js.map +1 -1
  94. package/dist/integrations/providers/subscription-login.d.ts +2 -0
  95. package/dist/integrations/providers/subscription-login.d.ts.map +1 -1
  96. package/dist/integrations/providers/subscription-login.js +117 -14
  97. package/dist/integrations/providers/subscription-login.js.map +1 -1
  98. package/dist/integrations/sessions/store.d.ts +111 -1
  99. package/dist/integrations/sessions/store.d.ts.map +1 -1
  100. package/dist/integrations/sessions/store.js +400 -7
  101. package/dist/integrations/sessions/store.js.map +1 -1
  102. package/dist/integrations/sessions/transcript-export.d.ts +25 -0
  103. package/dist/integrations/sessions/transcript-export.d.ts.map +1 -0
  104. package/dist/integrations/sessions/transcript-export.js +441 -0
  105. package/dist/integrations/sessions/transcript-export.js.map +1 -0
  106. package/dist/integrations/sessions/turn-evidence.d.ts +138 -0
  107. package/dist/integrations/sessions/turn-evidence.d.ts.map +1 -0
  108. package/dist/integrations/sessions/turn-evidence.js +506 -0
  109. package/dist/integrations/sessions/turn-evidence.js.map +1 -0
  110. package/dist/integrations/subagents/runtime.d.ts +7 -12
  111. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  112. package/dist/integrations/subagents/runtime.js +19 -10
  113. package/dist/integrations/subagents/runtime.js.map +1 -1
  114. package/dist/integrations/trust/store.d.ts.map +1 -1
  115. package/dist/integrations/trust/store.js +27 -13
  116. package/dist/integrations/trust/store.js.map +1 -1
  117. package/dist/permissions/canonical-project.d.ts +9 -0
  118. package/dist/permissions/canonical-project.d.ts.map +1 -0
  119. package/dist/permissions/canonical-project.js +13 -0
  120. package/dist/permissions/canonical-project.js.map +1 -0
  121. package/dist/permissions/checks.d.ts +65 -0
  122. package/dist/permissions/checks.d.ts.map +1 -0
  123. package/dist/permissions/checks.js +122 -0
  124. package/dist/permissions/checks.js.map +1 -0
  125. package/dist/permissions/headless-trust.d.ts +9 -5
  126. package/dist/permissions/headless-trust.d.ts.map +1 -1
  127. package/dist/permissions/headless-trust.js +18 -4
  128. package/dist/permissions/headless-trust.js.map +1 -1
  129. package/dist/permissions/rules.d.ts +16 -7
  130. package/dist/permissions/rules.d.ts.map +1 -1
  131. package/dist/permissions/rules.js +78 -13
  132. package/dist/permissions/rules.js.map +1 -1
  133. package/dist/tui/App.d.ts +5 -2
  134. package/dist/tui/App.d.ts.map +1 -1
  135. package/dist/tui/App.js +1555 -143
  136. package/dist/tui/App.js.map +1 -1
  137. package/dist/tui/Composer.d.ts +14 -3
  138. package/dist/tui/Composer.d.ts.map +1 -1
  139. package/dist/tui/Composer.js +53 -15
  140. package/dist/tui/Composer.js.map +1 -1
  141. package/dist/tui/EditPromptPicker.d.ts +8 -0
  142. package/dist/tui/EditPromptPicker.d.ts.map +1 -0
  143. package/dist/tui/EditPromptPicker.js +18 -0
  144. package/dist/tui/EditPromptPicker.js.map +1 -0
  145. package/dist/tui/LiveActivity.d.ts.map +1 -1
  146. package/dist/tui/LiveActivity.js +2 -1
  147. package/dist/tui/LiveActivity.js.map +1 -1
  148. package/dist/tui/Markdown.d.ts.map +1 -1
  149. package/dist/tui/Markdown.js +2 -1
  150. package/dist/tui/Markdown.js.map +1 -1
  151. package/dist/tui/PermissionOverlay.d.ts.map +1 -1
  152. package/dist/tui/PermissionOverlay.js +7 -1
  153. package/dist/tui/PermissionOverlay.js.map +1 -1
  154. package/dist/tui/Picker.d.ts +4 -4
  155. package/dist/tui/Picker.d.ts.map +1 -1
  156. package/dist/tui/Picker.js +86 -7
  157. package/dist/tui/Picker.js.map +1 -1
  158. package/dist/tui/ResumePicker.d.ts.map +1 -1
  159. package/dist/tui/ResumePicker.js +1 -1
  160. package/dist/tui/ResumePicker.js.map +1 -1
  161. package/dist/tui/Transcript.d.ts +4 -2
  162. package/dist/tui/Transcript.d.ts.map +1 -1
  163. package/dist/tui/Transcript.js +31 -5
  164. package/dist/tui/Transcript.js.map +1 -1
  165. package/dist/tui/agent.d.ts +123 -19
  166. package/dist/tui/agent.d.ts.map +1 -1
  167. package/dist/tui/agent.js +665 -143
  168. package/dist/tui/agent.js.map +1 -1
  169. package/dist/tui/compact-transcript.d.ts +24 -0
  170. package/dist/tui/compact-transcript.d.ts.map +1 -0
  171. package/dist/tui/compact-transcript.js +46 -0
  172. package/dist/tui/compact-transcript.js.map +1 -0
  173. package/dist/tui/conversation-history.d.ts +33 -0
  174. package/dist/tui/conversation-history.d.ts.map +1 -0
  175. package/dist/tui/conversation-history.js +42 -0
  176. package/dist/tui/conversation-history.js.map +1 -0
  177. package/dist/tui/edit-prompts.d.ts +23 -0
  178. package/dist/tui/edit-prompts.d.ts.map +1 -0
  179. package/dist/tui/edit-prompts.js +35 -0
  180. package/dist/tui/edit-prompts.js.map +1 -0
  181. package/dist/tui/live-window.d.ts +3 -1
  182. package/dist/tui/live-window.d.ts.map +1 -1
  183. package/dist/tui/live-window.js +20 -8
  184. package/dist/tui/live-window.js.map +1 -1
  185. package/dist/tui/slashCommands.d.ts +178 -9
  186. package/dist/tui/slashCommands.d.ts.map +1 -1
  187. package/dist/tui/slashCommands.js +339 -15
  188. package/dist/tui/slashCommands.js.map +1 -1
  189. package/dist/tui/terminal-display.d.ts +12 -0
  190. package/dist/tui/terminal-display.d.ts.map +1 -0
  191. package/dist/tui/terminal-display.js +65 -0
  192. package/dist/tui/terminal-display.js.map +1 -0
  193. package/dist/tui/types.d.ts +14 -2
  194. package/dist/tui/types.d.ts.map +1 -1
  195. package/dist/tui/workspace-diff.d.ts +40 -0
  196. package/dist/tui/workspace-diff.d.ts.map +1 -0
  197. package/dist/tui/workspace-diff.js +101 -0
  198. package/dist/tui/workspace-diff.js.map +1 -0
  199. package/package.json +7 -7
@@ -2,6 +2,10 @@ import { ACPServer, HostCommandRegistry, ServerStdioTransport, ToolRegistry, cre
2
2
  import { readFileSync } from 'node:fs';
3
3
  import { dirname, join } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
+ import { resolveTrustedProjectContext } from '../config/trusted-project-context.js';
6
+ import { cliLogger } from '../logging.js';
7
+ import { decideHeadlessTrust } from '../permissions/headless-trust.js';
8
+ import { compilePermissions } from '../permissions/rules.js';
5
9
  import { createAgentSession, probeAgentSession } from '../tui/agent.js';
6
10
  /** Same read as `cli.ts`'s `--version`: the manifest, never a second copy. */
7
11
  function readPackageVersion() {
@@ -20,76 +24,174 @@ function defaultPrefs(detected) {
20
24
  ? { version: 3, providers: [{ id: first.entry.id }], subagents: { active: [] } }
21
25
  : null;
22
26
  }
27
+ function waitForOperation(operation, signal) {
28
+ if (signal.aborted)
29
+ return Promise.reject(signal.reason);
30
+ return new Promise((resolve, reject) => {
31
+ let active = true;
32
+ const finish = () => {
33
+ if (!active)
34
+ return false;
35
+ active = false;
36
+ signal.removeEventListener('abort', onAbort);
37
+ return true;
38
+ };
39
+ const onAbort = () => {
40
+ if (finish())
41
+ reject(signal.reason);
42
+ };
43
+ signal.addEventListener('abort', onAbort, { once: true });
44
+ operation.then((value) => {
45
+ if (finish())
46
+ resolve(value);
47
+ }, (error) => {
48
+ if (finish())
49
+ reject(error);
50
+ });
51
+ });
52
+ }
53
+ const DEFAULT_RUNTIME_DEPS = {
54
+ probe: probeAgentSession,
55
+ createSession: createAgentSession,
56
+ decideTrust: decideHeadlessTrust,
57
+ resolveProjectContext: resolveTrustedProjectContext,
58
+ };
23
59
  /**
24
- * `namzu acp` — the agent-client protocol over this process's stdio.
25
- *
26
- * This command exists in the same change as the bridge it drives, and that
27
- * is the point rather than a convenience. `MCPServer` and
28
- * `ServerStdioTransport` are both exported from this SDK and nothing in the
29
- * tree ever constructed an `MCPServer`: a complete protocol server with no
30
- * driver, which reads as a supported feature and is not one. A subprocess
31
- * test spawns this binary, so removing the registration below fails a test
32
- * rather than quietly shipping the same shape twice.
33
- *
34
- * **stdout belongs to the protocol.** Everything this command prints for a
35
- * human goes to stderr. The SDK's logger already writes there; what this
36
- * file must not do is `console.log`, and a test asserts zero non-JSON bytes
37
- * on the child's stdout under info-level logging.
38
- */
39
- /**
40
- * Bridges the SDK session to the one verb the protocol server needs.
60
+ * Owns the CLI runtime behind one ACP connection.
41
61
  *
42
- * `onRunEvent` is a session-level hook and the gateway is per-prompt, so the
43
- * dispatcher is swapped for the duration of each turn rather than the
44
- * session being rebuilt. A run event arriving between turns — a late tool
45
- * result, a background job settling — reaches no client, which is correct:
46
- * there is no prompt for it to belong to.
62
+ * The wire server owns IDs, cwd, cancellation and history. This owner mirrors
63
+ * that boundary into the model runtime: one AgentSession and event route per
64
+ * wire session, never one mutable connection-global slot.
47
65
  */
48
- export async function runAcpCommand(cwd) {
49
- // The session is built LAZILY, at the first prompt.
50
- //
51
- // `initialize` and `session/new` are how a client discovers what this
52
- // agent is and what it requires, and neither needs a model. Building the
53
- // session up front made a namzu with no configured credential answer a
54
- // connection attempt by exiting — an editor extension saw a pipe that
55
- // closed, with the reason on a stderr nobody was reading. Now it gets a
56
- // working handshake and a refusal naming the missing credential at the
57
- // moment it actually matters, which is the first prompt.
58
- let session;
59
- let route;
60
- const ensureSession = async () => {
61
- if (session)
62
- return session;
63
- const probe = await probeAgentSession();
64
- const prefs = probe.preferences ?? defaultPrefs(probe.detected);
65
- if (!prefs) {
66
- throw new Error('No LLM provider is available on this machine: set a credential in the environment, or run `namzu` interactively to pick one. The protocol handshake succeeded; there is nothing to run a prompt with.');
66
+ export function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
67
+ const records = new Map();
68
+ const constructing = new Map();
69
+ let probePromise;
70
+ let closed = false;
71
+ const sharedProbe = () => {
72
+ if (!probePromise) {
73
+ probePromise = deps.probe().catch((error) => {
74
+ probePromise = undefined;
75
+ throw error;
76
+ });
67
77
  }
68
- session = await createAgentSession(prefs, probe.detected, {
69
- cwd,
70
- onRunEvent: (event) => route?.(event),
71
- });
72
- if (!session.hasProvider) {
73
- const hint = session.errorHint ?? 'agent is not ready';
74
- await session.close();
75
- session = undefined;
76
- throw new Error(hint);
78
+ return probePromise;
79
+ };
80
+ const ensureSession = async (sessionId, requestedCwd, signal) => {
81
+ signal.throwIfAborted();
82
+ if (closed)
83
+ throw new Error('The ACP connection has closed.');
84
+ // This is the first project-aware operation. Session creation and the
85
+ // protocol handshake remain credential-free and do not read the target.
86
+ const trust = deps.decideTrust({ cwd: requestedCwd, trustFlag: false });
87
+ if (!trust.allowed)
88
+ throw new Error(trust.message ?? 'folder not trusted');
89
+ const cwd = trust.cwd;
90
+ const existing = records.get(sessionId);
91
+ if (existing) {
92
+ if (existing.cwd !== cwd) {
93
+ throw new Error(`ACP session "${sessionId}" already owns ${existing.cwd}; refusing to reuse it for ${cwd}.`);
94
+ }
95
+ return existing;
96
+ }
97
+ if (constructing.has(sessionId)) {
98
+ throw new Error(`ACP session "${sessionId}" is already being constructed.`);
77
99
  }
78
- return session;
100
+ constructing.set(sessionId, cwd);
101
+ const construction = (async () => {
102
+ let candidate;
103
+ const closeCandidate = async () => {
104
+ const owned = candidate;
105
+ candidate = undefined;
106
+ if (owned)
107
+ await owned.close();
108
+ };
109
+ try {
110
+ const projectCtx = deps.resolveProjectContext(bootstrapCtx, cwd);
111
+ const permissions = compilePermissions(projectCtx.config.permissions, projectCtx.config.permissionChecks);
112
+ if (permissions.diagnostics.length > 0) {
113
+ throw new Error(permissions.diagnostics
114
+ .map((diagnostic) => {
115
+ const where = diagnostic.pattern
116
+ ? `permissions.${diagnostic.tool}."${diagnostic.pattern}"`
117
+ : `permissions.${diagnostic.tool}`;
118
+ return `${where}: ${diagnostic.message}`;
119
+ })
120
+ .join('\n'));
121
+ }
122
+ const probe = await sharedProbe();
123
+ signal.throwIfAborted();
124
+ if (closed)
125
+ throw new Error('The ACP connection closed while its session was starting.');
126
+ const prefs = probe.preferences ?? defaultPrefs(probe.detected);
127
+ if (!prefs) {
128
+ throw new Error('No LLM provider is available on this machine: set a credential in the environment, or run `namzu` interactively to pick one. The protocol handshake succeeded; there is nothing to run a prompt with.');
129
+ }
130
+ const routeOwner = {};
131
+ candidate = await deps.createSession(prefs, probe.detected, {
132
+ cwd,
133
+ rules: permissions.rules,
134
+ ...(projectCtx.config.mcpServers ? { mcpServers: projectCtx.config.mcpServers } : {}),
135
+ ...(projectCtx.config.plugins ? { plugins: projectCtx.config.plugins } : {}),
136
+ ...(projectCtx.config.sandbox ? { sandbox: projectCtx.config.sandbox } : {}),
137
+ onRunEvent: (event) => routeOwner.current?.route?.(event),
138
+ });
139
+ if (signal.aborted || closed) {
140
+ await closeCandidate();
141
+ signal.throwIfAborted();
142
+ throw new Error('The ACP connection closed while its session was starting.');
143
+ }
144
+ if (!candidate.hasProvider) {
145
+ const hint = candidate.errorHint ?? 'agent is not ready';
146
+ await closeCandidate();
147
+ throw new Error(hint);
148
+ }
149
+ if (candidate.mcpFailed.length > 0) {
150
+ const failure = candidate.mcpFailed
151
+ .map((entry) => `tool server "${entry.name}" is not available: ${entry.reason}`)
152
+ .join('\n');
153
+ await closeCandidate();
154
+ throw new Error(failure);
155
+ }
156
+ const record = { cwd, session: candidate, route: undefined };
157
+ routeOwner.current = record;
158
+ if (records.has(sessionId)) {
159
+ await closeCandidate();
160
+ throw new Error(`ACP session "${sessionId}" was published by another operation.`);
161
+ }
162
+ records.set(sessionId, record);
163
+ candidate = undefined;
164
+ return record;
165
+ }
166
+ finally {
167
+ constructing.delete(sessionId);
168
+ await closeCandidate();
169
+ }
170
+ })();
171
+ // Session startup can include provider, MCP and sandbox work that does
172
+ // not itself settle when the wire prompt is cancelled. Release the ACP
173
+ // turn immediately, but keep this construction observed and reserved;
174
+ // its own fences close any candidate that eventually arrives.
175
+ return waitForOperation(construction, signal);
79
176
  };
80
177
  const gateway = {
81
- prompt: async ({ prompt, onEvent, signal, ask, history }) => {
82
- const live = await ensureSession();
83
- route = onEvent;
178
+ prompt: async ({ sessionId, prompt, cwd, onEvent, signal, ask, history }) => {
179
+ let record;
180
+ try {
181
+ record = await ensureSession(sessionId, cwd, signal);
182
+ }
183
+ catch (error) {
184
+ if (signal.aborted)
185
+ return { stopReason: 'cancelled' };
186
+ throw error;
187
+ }
188
+ record.route = onEvent;
84
189
  try {
85
190
  let stopReason;
86
- // The client's human, adapted to this session's own permission
87
- // shape. The mapping is a rename, and it is written out rather
88
- // than cast so a third outcome added on either side stops
89
- // compiling here instead of silently becoming an approval.
191
+ let settledHistory;
90
192
  const onPermission = async (request) => {
91
193
  const outcome = await ask({
92
- sessionId: 'acp',
194
+ sessionId,
93
195
  toolCalls: request.toolCalls.map((call) => ({
94
196
  id: call.id,
95
197
  name: call.name,
@@ -109,48 +211,87 @@ export async function runAcpCommand(cwd) {
109
211
  };
110
212
  }
111
213
  };
112
- // Prior turns first, so a resumed session answers with the
113
- // conversation it actually had rather than as if it were new.
114
214
  const messages = [...history, createUserMessage(prompt)];
115
- for await (const event of live.send(messages, { signal, onPermission })) {
215
+ for await (const event of record.session.send(messages, {
216
+ signal,
217
+ onPermission,
218
+ onConversationMessages: (messages) => {
219
+ settledHistory = [...messages];
220
+ },
221
+ })) {
116
222
  if (event.kind === 'done')
117
223
  stopReason = event.stopReason;
118
- // An `error` event is a run that FAILED, and the protocol's word
119
- // for that is a stop reason rather than a JSON-RPC error: the
120
- // call itself succeeded, and the turn is what went wrong.
121
224
  else if (event.kind === 'error')
122
- stopReason = 'error';
225
+ stopReason = signal.aborted ? 'cancelled' : 'error';
123
226
  }
124
- return stopReason === undefined ? {} : { stopReason };
227
+ if (signal.aborted)
228
+ stopReason = 'cancelled';
229
+ return {
230
+ ...(stopReason === undefined ? {} : { stopReason }),
231
+ ...(settledHistory === undefined ? {} : { history: settledHistory }),
232
+ };
125
233
  }
126
234
  finally {
127
- route = undefined;
235
+ if (record.route === onEvent)
236
+ record.route = undefined;
128
237
  }
129
238
  },
130
239
  };
240
+ return {
241
+ gateway,
242
+ close: async () => {
243
+ closed = true;
244
+ const owned = [...records.values()];
245
+ records.clear();
246
+ const results = await Promise.allSettled(owned.map((record) => record.session.close()));
247
+ const failures = results
248
+ .filter((result) => result.status === 'rejected')
249
+ .map((result) => result.reason);
250
+ if (failures.length > 0)
251
+ throw new AggregateError(failures, 'Failed to close ACP sessions.');
252
+ },
253
+ };
254
+ }
255
+ export async function runAcpCommand(ctx) {
256
+ const runtime = createCliAcpRuntime(ctx);
131
257
  const server = new ACPServer({
132
258
  transport: new ServerStdioTransport(),
133
- gateway,
134
- // The registry, not a list. A host that registers a command later still
135
- // has it appear, and this file has no place to hard-code one.
259
+ gateway: runtime.gateway,
136
260
  commands: new HostCommandRegistry(),
137
261
  presenter: createToolPresenter(new ToolRegistry()),
138
262
  agentInfo: { name: 'namzu', version: readPackageVersion() },
139
263
  });
140
264
  await server.start();
141
- // Held open until stdin ends. The client owns the lifetime — it spawned
142
- // this process — so there is no idle timeout to get wrong.
143
- await new Promise((resolve) => {
144
- process.stdin.on('end', resolve);
145
- process.stdin.on('close', resolve);
146
- });
147
- await server.stop();
148
- await session?.close();
265
+ // Bootstrap context deliberately does not activate the project yet, so it
266
+ // cannot emit the project-aware boot narrative. Still make the live protocol
267
+ // owner observable on stderr; stdout remains exclusively JSON-RPC frames.
268
+ cliLogger().info('ACP protocol server started');
269
+ try {
270
+ // Held open until stdin ends. The client owns the lifetime — it spawned
271
+ // this process — so there is no idle timeout to get wrong.
272
+ await new Promise((resolve) => {
273
+ const finish = () => {
274
+ process.stdin.off('end', finish);
275
+ process.stdin.off('close', finish);
276
+ resolve();
277
+ };
278
+ process.stdin.once('end', finish);
279
+ process.stdin.once('close', finish);
280
+ });
281
+ }
282
+ finally {
283
+ try {
284
+ await server.stop();
285
+ }
286
+ finally {
287
+ await runtime.close();
288
+ }
289
+ }
149
290
  return 0;
150
291
  }
151
292
  export const acpCommand = {
152
293
  name: 'acp',
153
294
  description: "Speak the agent-client protocol over this process's stdio",
154
- handler: async () => runAcpCommand(process.cwd()),
295
+ handler: async ({ ctx }) => runAcpCommand(ctx),
155
296
  };
156
297
  //# sourceMappingURL=acp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/commands/acp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/commands/acp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"drain.d.ts","sourceRoot":"","sources":["../../src/commands/drain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAUH,OAAO,KAAK,EAAmB,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAOjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAK5C,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,MAAM,EAAE,CAAA;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAgEtE;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC,GACxF;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1B;IAGA,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAC5B,CAoCH;AAED,yDAAyD;AACzD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAcD,eAAO,MAAM,YAAY,EAAE,UA8K1B,CAAA"}
1
+ {"version":3,"file":"drain.d.ts","sourceRoot":"","sources":["../../src/commands/drain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAUH,OAAO,KAAK,EAAmB,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AASjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAK5C,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,MAAM,EAAE,CAAA;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAgEtE;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC,GACxF;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1B;IAGA,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAC5B,CAoCH;AAED,yDAAyD;AACzD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAkBD,eAAO,MAAM,YAAY,EAAE,UA4M1B,CAAA"}
@@ -22,9 +22,11 @@
22
22
  * one.
23
23
  */
24
24
  import { DiskCheckpointStore, InvalidIdError, asProjectId, asSessionId, asTenantId, drainRuns, } from '@namzu/sdk';
25
+ import { resolveTrustedProjectContext } from '../config/trusted-project-context.js';
25
26
  import { EXIT_UNTRUSTED, EXIT_USAGE } from '../exit-codes.js';
26
27
  import { contextLogging, createStderrSink, installCliLogging } from '../logging.js';
27
28
  import { decideHeadlessTrust } from '../permissions/headless-trust.js';
29
+ import { compilePermissions } from '../permissions/rules.js';
28
30
  import { applyProviderFlags, resolveWorkingDirectory } from './run-flags.js';
29
31
  /** Lease length when the operator names none. Long enough for a real turn. */
30
32
  const DEFAULT_TTL_MS = 600_000;
@@ -150,7 +152,11 @@ function describe(entry) {
150
152
  function defaultPrefs(detected) {
151
153
  const first = detected[0];
152
154
  return first
153
- ? { version: 3, providers: [{ id: first.entry.id }], subagents: { active: [] } }
155
+ ? {
156
+ version: 3,
157
+ providers: [{ id: first.entry.id }],
158
+ subagents: { active: [] },
159
+ }
154
160
  : null;
155
161
  }
156
162
  export const drainCommand = {
@@ -184,10 +190,13 @@ export const drainCommand = {
184
190
  'Exit codes: 0 when every run it took was continued, 1 when any run failed,',
185
191
  '64 when an argument is wrong, 77 when the folder has not been trusted.',
186
192
  ].join('\n'),
187
- handler: async ({ ctx, rawArgs }) => {
193
+ handler: async ({ ctx: bootstrapCtx, rawArgs }) => {
194
+ let ctx = bootstrapCtx;
188
195
  const flags = parseDrainFlags(rawArgs);
189
196
  if (flags.unknown.length > 0) {
190
- ctx.formatter.error({ message: `unknown option(s): ${flags.unknown.join(', ')}` });
197
+ ctx.formatter.error({
198
+ message: `unknown option(s): ${flags.unknown.join(', ')}`,
199
+ });
191
200
  return EXIT_USAGE;
192
201
  }
193
202
  if (!flags.store) {
@@ -203,7 +212,9 @@ export const drainCommand = {
203
212
  }
204
213
  const ttlMs = flags.ttlMs ?? DEFAULT_TTL_MS;
205
214
  if (!Number.isFinite(ttlMs) || ttlMs <= 0) {
206
- ctx.formatter.error({ message: `--ttl must be a positive number of ms, got ${flags.ttlMs}` });
215
+ ctx.formatter.error({
216
+ message: `--ttl must be a positive number of ms, got ${flags.ttlMs}`,
217
+ });
207
218
  return EXIT_USAGE;
208
219
  }
209
220
  const resolved = resolveWorkingDirectory(flags.cwd);
@@ -211,11 +222,16 @@ export const drainCommand = {
211
222
  ctx.formatter.error({ message: resolved.error });
212
223
  return EXIT_USAGE;
213
224
  }
214
- const trust = decideHeadlessTrust({ cwd: resolved.cwd, trustFlag: flags.trust });
225
+ const trust = decideHeadlessTrust({
226
+ cwd: resolved.cwd,
227
+ trustFlag: flags.trust,
228
+ });
215
229
  if (!trust.allowed) {
216
230
  ctx.formatter.error({ message: trust.message ?? 'folder not trusted' });
217
231
  return EXIT_UNTRUSTED;
218
232
  }
233
+ const cwd = trust.cwd;
234
+ ctx = resolveTrustedProjectContext(bootstrapCtx, cwd);
219
235
  // The CLI owns stderr, not the kernel it drives (LOG-05) — a live sink
220
236
  // at the level --verbose/--quiet/NAMZU_LOG_LEVEL named, instead of
221
237
  // forcing the level to `silent` via `configureLogger`. `{ replace:
@@ -234,10 +250,26 @@ export const drainCommand = {
234
250
  return 1;
235
251
  }
236
252
  prefs = applyProviderFlags(prefs, flags);
237
- const session = await createAgentSession(prefs, probe.detected, { cwd: resolved.cwd });
253
+ const permissions = compilePermissions(ctx.config.permissions, ctx.config.permissionChecks);
254
+ for (const diagnostic of permissions.diagnostics) {
255
+ const where = diagnostic.pattern
256
+ ? `permissions.${diagnostic.tool}."${diagnostic.pattern}"`
257
+ : `permissions.${diagnostic.tool}`;
258
+ ctx.formatter.error({ message: `${where}: ${diagnostic.message}` });
259
+ }
260
+ const session = await createAgentSession(prefs, probe.detected, {
261
+ cwd,
262
+ rules: permissions.rules,
263
+ permissionMode: 'auto',
264
+ ...(ctx.config.mcpServers ? { mcpServers: ctx.config.mcpServers } : {}),
265
+ ...(ctx.config.plugins ? { plugins: ctx.config.plugins } : {}),
266
+ ...(ctx.config.sandbox ? { sandbox: ctx.config.sandbox } : {}),
267
+ });
238
268
  if (!session.hasProvider) {
239
269
  await session.close();
240
- ctx.formatter.error({ message: session.errorHint ?? 'agent is not ready' });
270
+ ctx.formatter.error({
271
+ message: session.errorHint ?? 'agent is not ready',
272
+ });
241
273
  return 1;
242
274
  }
243
275
  // `resolveDrainScope` refuses a partial prefix above, so all three are
@@ -305,7 +337,9 @@ export const drainCommand = {
305
337
  // landed, but the run is unavailable to the next reader until the
306
338
  // lease lapses, and an operator watching throughput needs to know.
307
339
  for (const u of result.unreleased) {
308
- ctx.formatter.error({ message: `${u.runId}: lease not released — ${u.error}` });
340
+ ctx.formatter.error({
341
+ message: `${u.runId}: lease not released — ${u.error}`,
342
+ });
309
343
  }
310
344
  return result.failed.length > 0 ? 1 : 0;
311
345
  }
@@ -313,7 +347,9 @@ export const drainCommand = {
313
347
  // The refusals from `drainRuns` land here: a store that cannot claim,
314
348
  // a lease that cannot mean what it says. Reported rather than
315
349
  // swallowed into an empty pass that reads as "nothing was parked".
316
- ctx.formatter.error({ message: err instanceof Error ? err.message : String(err) });
350
+ ctx.formatter.error({
351
+ message: err instanceof Error ? err.message : String(err),
352
+ });
317
353
  return 1;
318
354
  }
319
355
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"drain.js","sourceRoot":"","sources":["../../src/commands/drain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EACN,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,WAAW,EACX,UAAU,EACV,SAAS,GACT,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAG5E,8EAA8E;AAC9E,MAAM,cAAc,GAAG,OAAO,CAAA;AAiB9B;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,OAA0B;IACzD,MAAM,GAAG,GAAe;QACvB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,IAAI;QACT,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,EAAE;KACX,CAAA;IACD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,IAAY,EAAE,CAAgB,EAAsB,EAAE;QAC/E,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACxE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC/D,OAAO,SAAS,CAAA;IACjB,CAAC,CAAA;IACD,MAAM,OAAO,GAAG;QACf,CAAC,OAAO,EAAE,OAAO,CAAC;QAClB,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACpB,CAAC,SAAS,EAAE,SAAS,CAAC;QACtB,CAAC,SAAS,EAAE,SAAS,CAAC;QACtB,CAAC,KAAK,EAAE,KAAK,CAAC;QACd,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACpB,CAAC,UAAU,EAAE,UAAU,CAAC;QACxB,CAAC,OAAO,EAAE,OAAO,CAAC;KACT,CAAA;IAEV,KAAK,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;QAC5D,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAW,CAAA;QAClC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACrB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAA;YAChB,SAAQ;QACT,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;YAC7B,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACrB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAA;gBAC3B,OAAO,GAAG,IAAI,CAAA;gBACd,MAAK;YACN,CAAC;QACF,CAAC;QACD,IAAI,OAAO;YAAE,SAAQ;QACrB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAChC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvB,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;YACvB,SAAQ;QACT,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAA;QAC5C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;YAChC,SAAQ;QACT,CAAC;QACD,mEAAmE;QACnE,iEAAiE;QACjE,qEAAqE;QACrE,0BAA0B;QAC1B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAW,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,iBAAiB,CAAC,KAAyD;IAS1F,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;YACN,KAAK,EACJ,yIAAyI;SAC1I,CAAA;IACF,CAAC;IACD,yEAAyE;IACzE,wEAAwE;IACxE,6CAA6C;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACtC,OAAO;YACN,KAAK,EACJ,wKAAwK;SACzK,CAAA;IACF,CAAC;IACD,sEAAsE;IACtE,oEAAoE;IACpE,2EAA2E;IAC3E,sEAAsE;IACtE,yEAAyE;IACzE,kCAAkC;IAClC,IAAI,CAAC;QACJ,OAAO;YACN,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;YAClC,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;YACrC,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;SACrC,CAAA;IACF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;YACnC,OAAO;gBACN,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,2CAA2C;aAChE,CAAA;QACF,CAAC;QACD,MAAM,GAAG,CAAA;IACV,CAAC;AACF,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,aAAa;IAC5B,OAAO,eAAe,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;AAC/D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAsB;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAA;IACxF,OAAO,GAAG,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC,eAAe,kBAAkB,IAAI,EAAE,CAAA;AACzE,CAAC;AAED,SAAS,YAAY,CAAC,QAAqC;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACzB,OAAO,KAAK;QACX,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;QAChF,CAAC,CAAC,IAAI,CAAA;AACR,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAe;IACvC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,iEAAiE;IAC9E,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE;QACL,8EAA8E;QAC9E,EAAE;QACF,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,EAAE;QACF,UAAU;QACV,0EAA0E;QAC1E,2EAA2E;QAC3E,2EAA2E;QAC3E,+CAA+C;QAC/C,4EAA4E;QAC5E,uDAAuD;QACvD,4DAA4D;QAC5D,4DAA4D;QAC5D,mDAAmD;QACnD,gDAAgD;QAChD,0DAA0D;QAC1D,EAAE;QACF,2EAA2E;QAC3E,2EAA2E;QAC3E,8CAA8C;QAC9C,EAAE;QACF,4EAA4E;QAC5E,wEAAwE;KACxE,CAAC,IAAI,CAAC,IAAI,CAAC;IACZ,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QACtC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,sBAAsB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;YAClF,OAAO,UAAU,CAAA;QAClB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAClB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;gBACnB,OAAO,EACN,yLAAyL;aAC1L,CAAC,CAAA;YACF,OAAO,UAAU,CAAA;QAClB,CAAC;QACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YACtB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;YAC7C,OAAO,UAAU,CAAA;QAClB,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,cAAc,CAAA;QAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,8CAA8C,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAC7F,OAAO,UAAU,CAAA;QAClB,CAAC;QACD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACnD,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YACzB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;YAChD,OAAO,UAAU,CAAA;QAClB,CAAC;QACD,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QAChF,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACpB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,oBAAoB,EAAE,CAAC,CAAA;YACvE,OAAO,cAAc,CAAA;QACtB,CAAC;QAED,uEAAuE;QACvE,mEAAmE;QACnE,mEAAmE;QACnE,qEAAqE;QACrE,kEAAkE;QAClE,yBAAyB;QACzB,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;QACnC,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAClE,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;QACjF,MAAM,KAAK,GAAG,MAAM,iBAAiB,EAAE,CAAA;QACvC,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,IAAI,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;gBACnB,OAAO,EACN,kGAAkG;aACnG,CAAC,CAAA;YACF,OAAO,CAAC,CAAA;QACT,CAAC;QACD,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAExC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAA;QACtF,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;YACrB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,IAAI,oBAAoB,EAAE,CAAC,CAAA;YAC3E,OAAO,CAAC,CAAA;QACT,CAAC;QAED,uEAAuE;QACvE,uEAAuE;QACvE,oEAAoE;QACpE,SAAS;QACT,MAAM,KAAK,GAAG,IAAI,mBAAmB,CACpC,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,EACxB;YACC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC1B,CACD,CAAA;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,aAAa,EAAE,CAAA;QAC9C,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,MAAM,KAAK,GAAa,EAAE,CAAA;QAE1B,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC;gBAC9B,KAAK;gBACL,KAAK;gBACL,MAAM;gBACN,KAAK;gBACL,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/E,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;oBAC7B,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;oBACjE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;wBAC3C,KAAK;wBACL,eAAe,EAAE,KAAK;wBACtB,4DAA4D;wBAC5D,6DAA6D;wBAC7D,qDAAqD;wBACrD,UAAU,EAAE,KAAK,CAAC,KAAK;qBACvB,CAAC,CAAA;oBACF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;wBACrB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;wBAC9D,OAAM;oBACP,CAAC;oBACD,gEAAgE;oBAChE,8DAA8D;oBAC9D,+DAA+D;oBAC/D,gCAAgC;oBAChC,IAAI,OAAO,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;wBAC5C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;wBAC1B,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,gCAAgC,CAAC,CAAA;oBACrE,CAAC;yBAAM,CAAC;wBACP,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;wBACvB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,mCAAmC,CAAC,CAAA;oBACxE,CAAC;gBACF,CAAC;aACD,CAAC,CAAA;YAEF,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;qBACnF,MAAM;gBACR,gBAAgB,EAAE,QAAQ;gBAC1B,YAAY,EAAE,KAAK;gBACnB,YAAY,EAAE,MAAM,CAAC,OAAO;gBAC5B,cAAc,EAAE,MAAM,CAAC,KAAK;gBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC7B,CAAC,CAAA;YACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC/B,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAC3D,CAAC;YACD,qEAAqE;YACrE,kEAAkE;YAClE,mEAAmE;YACnE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACnC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,0BAA0B,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAChF,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,sEAAsE;YACtE,8DAA8D;YAC9D,mEAAmE;YACnE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAClF,OAAO,CAAC,CAAA;QACT,CAAC;gBAAS,CAAC;YACV,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;QACtB,CAAC;IACF,CAAC;CACD,CAAA"}
1
+ {"version":3,"file":"drain.js","sourceRoot":"","sources":["../../src/commands/drain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type Message } from '@namzu/sdk';
2
+ export type PriorMessagesResult = {
3
+ readonly ok: true;
4
+ readonly messages: readonly Message[];
5
+ } | {
6
+ readonly ok: false;
7
+ readonly error: string;
8
+ };
9
+ /** Parse the stateless stdin contract without dropping or inventing message fields. */
10
+ export declare function parsePriorMessages(raw: string): PriorMessagesResult;
11
+ //# sourceMappingURL=prior-messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prior-messages.d.ts","sourceRoot":"","sources":["../../src/commands/prior-messages.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,OAAO,EAIZ,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,mBAAmB,GAC5B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAuTjD,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAoBnE"}