@namzu/cli 10.0.0 → 12.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 (134) hide show
  1. package/README.md +390 -46
  2. package/dist/cli.d.ts +15 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +133 -4
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/acp.d.ts +29 -0
  7. package/dist/commands/acp.d.ts.map +1 -0
  8. package/dist/commands/acp.js +156 -0
  9. package/dist/commands/acp.js.map +1 -0
  10. package/dist/commands/doctor.d.ts +12 -1
  11. package/dist/commands/doctor.d.ts.map +1 -1
  12. package/dist/commands/doctor.js +18 -2
  13. package/dist/commands/doctor.js.map +1 -1
  14. package/dist/commands/drain.d.ts +2 -2
  15. package/dist/commands/drain.d.ts.map +1 -1
  16. package/dist/commands/drain.js +31 -8
  17. package/dist/commands/drain.js.map +1 -1
  18. package/dist/commands/run-flags.d.ts.map +1 -1
  19. package/dist/commands/run-flags.js +33 -0
  20. package/dist/commands/run-flags.js.map +1 -1
  21. package/dist/commands/run-stream.d.ts +3 -3
  22. package/dist/commands/run-stream.d.ts.map +1 -1
  23. package/dist/commands/run-stream.js +27 -10
  24. package/dist/commands/run-stream.js.map +1 -1
  25. package/dist/commands/run.d.ts.map +1 -1
  26. package/dist/commands/run.js +50 -4
  27. package/dist/commands/run.js.map +1 -1
  28. package/dist/commands/types.d.ts +10 -0
  29. package/dist/commands/types.d.ts.map +1 -1
  30. package/dist/config/load.d.ts +64 -0
  31. package/dist/config/load.d.ts.map +1 -1
  32. package/dist/config/load.js +156 -20
  33. package/dist/config/load.js.map +1 -1
  34. package/dist/config/schema.d.ts +88 -0
  35. package/dist/config/schema.d.ts.map +1 -1
  36. package/dist/config/schema.js.map +1 -1
  37. package/dist/context/capabilities.d.ts +88 -0
  38. package/dist/context/capabilities.d.ts.map +1 -0
  39. package/dist/context/capabilities.js +160 -0
  40. package/dist/context/capabilities.js.map +1 -0
  41. package/dist/context/sandbox.d.ts +54 -0
  42. package/dist/context/sandbox.d.ts.map +1 -0
  43. package/dist/context/sandbox.js +61 -0
  44. package/dist/context/sandbox.js.map +1 -0
  45. package/dist/doctor/checks/index.d.ts +6 -1
  46. package/dist/doctor/checks/index.d.ts.map +1 -1
  47. package/dist/doctor/checks/index.js +45 -2
  48. package/dist/doctor/checks/index.js.map +1 -1
  49. package/dist/doctor/checks/invariants.d.ts +23 -0
  50. package/dist/doctor/checks/invariants.d.ts.map +1 -0
  51. package/dist/doctor/checks/invariants.js +79 -0
  52. package/dist/doctor/checks/invariants.js.map +1 -0
  53. package/dist/doctor/checks/logging.d.ts +10 -0
  54. package/dist/doctor/checks/logging.d.ts.map +1 -0
  55. package/dist/doctor/checks/logging.js +69 -0
  56. package/dist/doctor/checks/logging.js.map +1 -0
  57. package/dist/doctor/checks/session-export.d.ts +21 -0
  58. package/dist/doctor/checks/session-export.d.ts.map +1 -0
  59. package/dist/doctor/checks/session-export.js +62 -0
  60. package/dist/doctor/checks/session-export.js.map +1 -0
  61. package/dist/doctor/checks/telemetry.d.ts +15 -28
  62. package/dist/doctor/checks/telemetry.d.ts.map +1 -1
  63. package/dist/doctor/checks/telemetry.js +34 -54
  64. package/dist/doctor/checks/telemetry.js.map +1 -1
  65. package/dist/doctor/checks/vault.d.ts +4 -20
  66. package/dist/doctor/checks/vault.d.ts.map +1 -1
  67. package/dist/doctor/checks/vault.js +58 -19
  68. package/dist/doctor/checks/vault.js.map +1 -1
  69. package/dist/doctor/registry.d.ts.map +1 -1
  70. package/dist/doctor/registry.js +13 -6
  71. package/dist/doctor/registry.js.map +1 -1
  72. package/dist/index.d.ts +3 -2
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +3 -2
  75. package/dist/index.js.map +1 -1
  76. package/dist/integrations/files/attachment-store.d.ts +44 -0
  77. package/dist/integrations/files/attachment-store.d.ts.map +1 -0
  78. package/dist/integrations/files/attachment-store.js +86 -0
  79. package/dist/integrations/files/attachment-store.js.map +1 -0
  80. package/dist/integrations/providers/credential-provider.d.ts +39 -0
  81. package/dist/integrations/providers/credential-provider.d.ts.map +1 -0
  82. package/dist/integrations/providers/credential-provider.js +74 -0
  83. package/dist/integrations/providers/credential-provider.js.map +1 -0
  84. package/dist/integrations/providers/discover.d.ts.map +1 -1
  85. package/dist/integrations/providers/discover.js +15 -3
  86. package/dist/integrations/providers/discover.js.map +1 -1
  87. package/dist/integrations/providers/oauth.d.ts.map +1 -1
  88. package/dist/integrations/providers/oauth.js +24 -1
  89. package/dist/integrations/providers/oauth.js.map +1 -1
  90. package/dist/integrations/sessions/store.d.ts +2 -2
  91. package/dist/integrations/sessions/store.d.ts.map +1 -1
  92. package/dist/integrations/sessions/store.js +21 -9
  93. package/dist/integrations/sessions/store.js.map +1 -1
  94. package/dist/integrations/subagents/runtime.d.ts +3 -3
  95. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  96. package/dist/integrations/subagents/runtime.js +11 -11
  97. package/dist/integrations/subagents/runtime.js.map +1 -1
  98. package/dist/integrations/telemetry/session-export.d.ts +99 -0
  99. package/dist/integrations/telemetry/session-export.d.ts.map +1 -0
  100. package/dist/integrations/telemetry/session-export.js +119 -0
  101. package/dist/integrations/telemetry/session-export.js.map +1 -0
  102. package/dist/logging.d.ts +79 -0
  103. package/dist/logging.d.ts.map +1 -0
  104. package/dist/logging.js +67 -0
  105. package/dist/logging.js.map +1 -0
  106. package/dist/permissions/rules.d.ts +3 -3
  107. package/dist/permissions/rules.d.ts.map +1 -1
  108. package/dist/permissions/rules.js +1 -1
  109. package/dist/permissions/rules.js.map +1 -1
  110. package/dist/skills/store.d.ts +1 -1
  111. package/dist/skills/store.js +1 -1
  112. package/dist/tui/App.d.ts.map +1 -1
  113. package/dist/tui/App.js +93 -6
  114. package/dist/tui/App.js.map +1 -1
  115. package/dist/tui/StatusBar.d.ts +1 -1
  116. package/dist/tui/StatusBar.d.ts.map +1 -1
  117. package/dist/tui/agent.d.ts +65 -24
  118. package/dist/tui/agent.d.ts.map +1 -1
  119. package/dist/tui/agent.js +337 -122
  120. package/dist/tui/agent.js.map +1 -1
  121. package/dist/tui/index.d.ts.map +1 -1
  122. package/dist/tui/index.js +17 -6
  123. package/dist/tui/index.js.map +1 -1
  124. package/dist/tui/log-pane.d.ts +48 -0
  125. package/dist/tui/log-pane.d.ts.map +1 -0
  126. package/dist/tui/log-pane.js +106 -0
  127. package/dist/tui/log-pane.js.map +1 -0
  128. package/dist/tui/slashCommands.d.ts +134 -11
  129. package/dist/tui/slashCommands.d.ts.map +1 -1
  130. package/dist/tui/slashCommands.js +169 -15
  131. package/dist/tui/slashCommands.js.map +1 -1
  132. package/dist/tui/types.d.ts +18 -2
  133. package/dist/tui/types.d.ts.map +1 -1
  134. package/package.json +8 -6
package/dist/cli.js CHANGED
@@ -9,7 +9,9 @@
9
9
  import { readFileSync } from 'node:fs';
10
10
  import { dirname, join } from 'node:path';
11
11
  import { fileURLToPath } from 'node:url';
12
- import { Command, CommanderError } from 'commander';
12
+ import { Command, CommanderError, Option } from 'commander';
13
+ import { BOOT_EVENT_NAMES, EVENT_NAME_ATTRIBUTE, VERSION as SDK_VERSION, getRootLogger, installProcessSink, } from '@namzu/sdk';
14
+ import { acpCommand } from './commands/acp.js';
13
15
  import { doctorCommand } from './commands/doctor.js';
14
16
  import { drainCommand } from './commands/drain.js';
15
17
  import { evalCommand } from './commands/eval.js';
@@ -18,8 +20,9 @@ import { registerAll } from './commands/registry.js';
18
20
  import { historyCommand, providersJSONCommand, runStreamCommand, skillsJSONCommand, } from './commands/run-stream.js';
19
21
  import { runCommand } from './commands/run.js';
20
22
  import { stubCommands } from './commands/stubs.js';
21
- import { ConfigLoadError, loadConfig } from './config/load.js';
23
+ import { ConfigLoadError, loadConfigWithProvenance, } from './config/load.js';
22
24
  import { EXIT_BAD_CONFIG, EXIT_INTERNAL_ERROR } from './exit-codes.js';
25
+ import { createStderrSink, resolveLogFormat, resolveLogLevel } from './logging.js';
23
26
  import { createFormatter, isFormatName } from './output/index.js';
24
27
  import { compilePermissions } from './permissions/rules.js';
25
28
  /** sysexits EX_USAGE — command-line argument error. */
@@ -50,7 +53,9 @@ export async function runCli(opts) {
50
53
  .description('Operator CLI for the Namzu agent platform')
51
54
  .version(CLI_VERSION, '-V, --version', 'Print version and exit')
52
55
  .option('-f, --format <type>', 'Output format: text, json, yaml')
53
- .option('-q, --quiet', 'Suppress non-essential output')
56
+ .option('-q, --quiet', 'Suppress non-essential output; also raises the log floor to warn')
57
+ .addOption(new Option('-v, --verbose', 'Emit debug-level log records to stderr').conflicts('quiet'))
58
+ .addOption(new Option('--log-format <format>', 'Log record format for run/drain/TUI-flush output: pretty (default) or json. namzu run-stream always writes json, regardless of this flag.').choices(['pretty', 'json']))
54
59
  .option('--dangerously-skip-permissions', 'Run tools without asking for approval (no permission prompts). Only use in a sandbox or a folder you fully trust.')
55
60
  .option('--yolo', 'Alias of --dangerously-skip-permissions.')
56
61
  // Required by Commander 14 so subcommands (doctor) can opt into
@@ -63,18 +68,43 @@ export async function runCli(opts) {
63
68
  if (ctx)
64
69
  return ctx;
65
70
  const globalOpts = program.opts();
66
- const fileConfig = loadConfig();
71
+ const { config: fileConfig, provenance } = loadConfigWithProvenance();
67
72
  const format = globalOpts.format && isFormatName(globalOpts.format)
68
73
  ? globalOpts.format
69
74
  : (fileConfig.format ?? 'text');
70
75
  const quiet = globalOpts.quiet ?? fileConfig.quiet ?? false;
76
+ // Resolved from the ACTUAL parsed flags, not `quiet` above — that value
77
+ // already folds in NAMZU_QUIET and a config file's `quiet: true`.
78
+ // "Flag beats env" (LOG-05) means the literal --verbose/--quiet on THIS
79
+ // command line beats NAMZU_LOG_LEVEL; widening it to every source that
80
+ // can produce `quiet: true` would let NAMZU_QUIET silently override an
81
+ // operator's own NAMZU_LOG_LEVEL, which neither variable promises.
82
+ const logging = {
83
+ level: resolveLogLevel({ verbose: globalOpts.verbose, quiet: globalOpts.quiet }),
84
+ format: resolveLogFormat({ logFormat: globalOpts.logFormat }),
85
+ };
86
+ // The process's log destination, claimed HERE — the first point ANY
87
+ // invocation has resolved a level/format — rather than left for
88
+ // whichever subcommand happens to reach `createAgentSession`. `doctor`
89
+ // and `login` never call that function at all; without this line, a
90
+ // debug-level `namzu.config.resolved` row would be unreachable under
91
+ // `--verbose` for either of them. `{ replace: true }` for the same
92
+ // reason every other call site takes it (`commands/run.ts`): a
93
+ // subcommand installs its OWN sink moments later, computed from the
94
+ // SAME `logging` this line just resolved, or a deliberately different
95
+ // one (the TUI's ring buffer) — never a second party fighting this one
96
+ // for the destination.
97
+ installProcessSink(createStderrSink(logging.format), logging.level, { replace: true });
98
+ emitBootNarrative(provenance, fileConfig);
71
99
  ctx = {
72
100
  formatter: createFormatter(format, { quiet }),
73
101
  config: { ...fileConfig, format, quiet },
102
+ logging,
74
103
  };
75
104
  return ctx;
76
105
  };
77
106
  registerAll(program, [
107
+ acpCommand,
78
108
  doctorCommand,
79
109
  runCommand,
80
110
  loginCommand,
@@ -113,7 +143,9 @@ export async function runCli(opts) {
113
143
  version: CLI_VERSION,
114
144
  skipPermissions,
115
145
  rules: permissions.rules,
146
+ logging: tuiCtx.logging,
116
147
  ...(tuiCtx.config.mcpServers ? { mcpServers: tuiCtx.config.mcpServers } : {}),
148
+ ...(tuiCtx.config.sandbox ? { sandbox: tuiCtx.config.sandbox } : {}),
117
149
  });
118
150
  const code = await Promise.resolve(0);
119
151
  setExitCode(code);
@@ -140,6 +172,102 @@ export async function runCli(opts) {
140
172
  return EXIT_INTERNAL_ERROR;
141
173
  }
142
174
  }
175
+ /**
176
+ * The CLI-process third of the boot narrative — the two other thirds
177
+ * (`namzu.sandbox.resolved`/`.provider.resolved`/`.capability.*`/
178
+ * `.discovery.completed`/`.boot.ready`, and the SDK's own
179
+ * `namzu.migration.completed`) belong to `createAgentSession`
180
+ * (`tui/agent.ts`) and `query()` respectively, because they describe facts
181
+ * an agent session resolves — `doctor` and `login` never reach either.
182
+ *
183
+ * Exported (not re-exported from `./index.ts`) so `__tests__/` can drive it
184
+ * directly with a hand-built `ConfigProvenance` and a capturing sink,
185
+ * without needing a live Commander parse or a real config cascade on disk.
186
+ */
187
+ export function emitBootNarrative(provenance, config) {
188
+ const log = getRootLogger();
189
+ log.info('namzu starting', {
190
+ [EVENT_NAME_ATTRIBUTE]: BOOT_EVENT_NAMES.BOOT_START,
191
+ 'namzu.boot.cli_version': CLI_VERSION,
192
+ 'namzu.boot.sdk_version': SDK_VERSION,
193
+ 'namzu.boot.node_version': process.version,
194
+ 'namzu.boot.platform': `${process.platform}-${process.arch}`,
195
+ });
196
+ const counts = {
197
+ default: 0,
198
+ 'user-file': 0,
199
+ 'project-file': 0,
200
+ env: 0,
201
+ };
202
+ for (const source of Object.values(provenance)) {
203
+ if (source)
204
+ counts[source.kind]++;
205
+ }
206
+ const keyCount = Object.keys(provenance).length;
207
+ log.info('Configuration resolved', {
208
+ [EVENT_NAME_ATTRIBUTE]: BOOT_EVENT_NAMES.CONFIG_RESOLVED,
209
+ 'namzu.config.key_count': keyCount,
210
+ 'namzu.config.default_count': counts.default,
211
+ 'namzu.config.user_file_count': counts['user-file'],
212
+ 'namzu.config.project_file_count': counts['project-file'],
213
+ 'namzu.config.env_count': counts.env,
214
+ });
215
+ // Per-key debug rows. The value is handed to the logger as JSON text, not
216
+ // hand-masked by key name and not omitted — the record-boundary
217
+ // redaction scan every sink sits behind
218
+ // (`packages/sdk/src/utils/log/redact.ts`) already screens every
219
+ // attribute value for a secret shape, the SAME defence `namzu run`'s
220
+ // stderr gets. A second, bespoke "these key names are secret" table
221
+ // here would duplicate that control and go stale the day a
222
+ // secret-shaped value arrives under a key nobody added to it — exactly
223
+ // the empty, undriven masking table this session already struck once.
224
+ for (const key of Object.keys(provenance)) {
225
+ const source = provenance[key];
226
+ if (!source)
227
+ continue;
228
+ log.debug('config key resolved', {
229
+ [EVENT_NAME_ATTRIBUTE]: BOOT_EVENT_NAMES.CONFIG_RESOLVED,
230
+ 'namzu.config.key': key,
231
+ 'namzu.config.value': JSON.stringify(config[key]),
232
+ 'namzu.config.source': describeConfigSource(source),
233
+ });
234
+ }
235
+ // The CLI never calls `registerTelemetry()` on any path today — this is
236
+ // therefore not a probe, it is the honest constant truth of the process
237
+ // that is running. §3.3's falsifiable claim ("every record inside an
238
+ // active span carries traceId/spanId") is what this line resolves the
239
+ // ambiguity for: absence of a trace id reads as "off", stated here,
240
+ // never silently as "dropped".
241
+ log.info('no LoggerProvider/TracerProvider registered; trace_id will be absent from every record this process emits', {
242
+ [EVENT_NAME_ATTRIBUTE]: BOOT_EVENT_NAMES.TELEMETRY_STATUS,
243
+ 'namzu.telemetry.registered': false,
244
+ // Session CONTENT export, which is a different question from whether
245
+ // a tracer is registered and is the one an end user cares about: this
246
+ // is the flag that says whether their conversation leaves the machine.
247
+ // Always present, so "off" is a stated fact rather than the absence
248
+ // of a claim.
249
+ //
250
+ // The BOOLEAN only. The disclosure sentence is emitted by `run` at the
251
+ // moment export is actually attached, under this same event name,
252
+ // because that sentence describes what was BUILT — the destination
253
+ // that resolved, the redactors that loaded — and this function is
254
+ // synchronous by design: `doctor` and `login` call it before anything
255
+ // async has happened, and neither of them attaches an export at all.
256
+ 'namzu.telemetry.session_export': config.telemetry?.sessionExport !== undefined,
257
+ });
258
+ }
259
+ function describeConfigSource(source) {
260
+ switch (source.kind) {
261
+ case 'default':
262
+ return 'default';
263
+ case 'user-file':
264
+ return `user-file ${source.path}`;
265
+ case 'project-file':
266
+ return `project-file ${source.path}`;
267
+ case 'env':
268
+ return `env ${source.variable}`;
269
+ }
270
+ }
143
271
  function mapCommanderError(err) {
144
272
  switch (err.code) {
145
273
  case 'commander.helpDisplayed':
@@ -153,6 +281,7 @@ function mapCommanderError(err) {
153
281
  case 'commander.invalidArgument':
154
282
  case 'commander.invalidOptionArgument':
155
283
  case 'commander.excessArguments':
284
+ case 'commander.conflictingOption':
156
285
  return EX_USAGE;
157
286
  default:
158
287
  return EXIT_INTERNAL_ERROR;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EACN,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,GACjB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAAmB,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D,uDAAuD;AACvD,MAAM,QAAQ,GAAG,EAAE,CAAA;AAEnB,yEAAyE;AACzE,yEAAyE;AACzE,0EAA0E;AAC1E,qBAAqB;AACrB,MAAM,WAAW,GAAW,kBAAkB,EAAE,CAAA;AAEhD,SAAS,kBAAkB;IAC1B,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAEnD,CAAA;QACD,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAA;IAC/D,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,OAAO,CAAA;IACf,CAAC;AACF,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAmB;IAC/C,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,MAAM,WAAW,GAAG,CAAC,IAAY,EAAQ,EAAE;QAC1C,QAAQ,GAAG,IAAI,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC3B,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,2CAA2C,CAAC;SACxD,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,wBAAwB,CAAC;SAC/D,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;SAChE,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;SACtD,MAAM,CACN,gCAAgC,EAChC,mHAAmH,CACnH;SACA,MAAM,CAAC,QAAQ,EAAE,0CAA0C,CAAC;QAC7D,gEAAgE;QAChE,uDAAuD;SACtD,uBAAuB,CAAC,IAAI,CAAC;SAC7B,YAAY,EAAE;SACd,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAE3B,IAAI,GAAG,GAA0B,IAAI,CAAA;IACrC,MAAM,UAAU,GAAG,GAAmB,EAAE;QACvC,IAAI,GAAG;YAAE,OAAO,GAAG,CAAA;QACnB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAwC,CAAA;QACvE,MAAM,UAAU,GAAG,UAAU,EAAE,CAAA;QAC/B,MAAM,MAAM,GACX,UAAU,CAAC,MAAM,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC;YACnD,CAAC,CAAC,UAAU,CAAC,MAAM;YACnB,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,CAAA;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,IAAI,KAAK,CAAA;QAC3D,GAAG,GAAG;YACL,SAAS,EAAE,eAAe,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;YAC7C,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;SACxC,CAAA;QACD,OAAO,GAAG,CAAA;IACX,CAAC,CAAA;IAED,WAAW,CACV,OAAO,EACP;QACC,aAAa;QACb,UAAU;QACV,YAAY;QACZ,aAAa;QACb,YAAY;QACZ,WAAW;QACX,gBAAgB;QAChB,cAAc;QACd,iBAAiB;QACjB,oBAAoB;QACpB,GAAG,YAAY;KACf,EACD;QACC,UAAU;QACV,WAAW;KACX,CACD,CAAA;IAED,sEAAsE;IACtE,qEAAqE;IACrE,sEAAsE;IACtE,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACzB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAA4D,CAAA;YAC3F,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,0BAA0B,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;YACzF,oEAAoE;YACpE,wEAAwE;YACxE,wCAAwC;YACxC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;YAC3B,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YACjE,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAA;gBAC1F,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YAC9D,CAAC;YACD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACpD,MAAM,SAAS,CAAC;gBACf,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,OAAO,EAAE,WAAW;gBACpB,eAAe;gBACf,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7E,CAAC,CAAA;YACF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACrC,WAAW,CAAC,IAAI,CAAC,CAAA;YACjB,OAAM;QACP,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,4FAA4F,CAC5F,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC;QACJ,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACjE,OAAO,QAAQ,CAAA;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;YACnC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;QACD,qEAAqE;QACrE,sEAAsE;QACtE,mDAAmD;QACnD,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,GAAG,GAAG,CAAC,OAAO,mFAAmF,CACjG,CAAA;YACD,OAAO,eAAe,CAAA;QACvB,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC7E,CAAA;QACD,OAAO,mBAAmB,CAAA;IAC3B,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAmB;IAC7C,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,yBAAyB,CAAC;QAC/B,KAAK,gBAAgB,CAAC;QACtB,KAAK,mBAAmB;YACvB,OAAO,CAAC,CAAA;QACT,KAAK,0BAA0B,CAAC;QAChC,KAAK,yBAAyB,CAAC;QAC/B,KAAK,2BAA2B,CAAC;QACjC,KAAK,uCAAuC,CAAC;QAC7C,KAAK,2BAA2B,CAAC;QACjC,KAAK,iCAAiC,CAAC;QACvC,KAAK,2BAA2B;YAC/B,OAAO,QAAQ,CAAA;QAChB;YACC,OAAO,mBAAmB,CAAA;IAC5B,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { CommandDef } from './types.js';
2
+ /**
3
+ * `namzu acp` — the agent-client protocol over this process's stdio.
4
+ *
5
+ * This command exists in the same change as the bridge it drives, and that
6
+ * is the point rather than a convenience. `MCPServer` and
7
+ * `ServerStdioTransport` are both exported from this SDK and nothing in the
8
+ * tree ever constructed an `MCPServer`: a complete protocol server with no
9
+ * driver, which reads as a supported feature and is not one. A subprocess
10
+ * test spawns this binary, so removing the registration below fails a test
11
+ * rather than quietly shipping the same shape twice.
12
+ *
13
+ * **stdout belongs to the protocol.** Everything this command prints for a
14
+ * human goes to stderr. The SDK's logger already writes there; what this
15
+ * file must not do is `console.log`, and a test asserts zero non-JSON bytes
16
+ * on the child's stdout under info-level logging.
17
+ */
18
+ /**
19
+ * Bridges the SDK session to the one verb the protocol server needs.
20
+ *
21
+ * `onRunEvent` is a session-level hook and the gateway is per-prompt, so the
22
+ * dispatcher is swapped for the duration of each turn rather than the
23
+ * session being rebuilt. A run event arriving between turns — a late tool
24
+ * result, a background job settling — reaches no client, which is correct:
25
+ * there is no prompt for it to belong to.
26
+ */
27
+ export declare function runAcpCommand(cwd: string): Promise<number>;
28
+ export declare const acpCommand: CommandDef;
29
+ //# sourceMappingURL=acp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/commands/acp.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAsB5C;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiHhE;AAED,eAAO,MAAM,UAAU,EAAE,UAIxB,CAAA"}
@@ -0,0 +1,156 @@
1
+ import { ACPServer, HostCommandRegistry, ServerStdioTransport, ToolRegistry, createToolPresenter, createUserMessage, } from '@namzu/sdk';
2
+ import { readFileSync } from 'node:fs';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { createAgentSession, probeAgentSession } from '../tui/agent.js';
6
+ /** Same read as `cli.ts`'s `--version`: the manifest, never a second copy. */
7
+ function readPackageVersion() {
8
+ try {
9
+ const here = dirname(fileURLToPath(import.meta.url));
10
+ const pkg = JSON.parse(readFileSync(join(here, '..', '..', 'package.json'), 'utf8'));
11
+ return typeof pkg.version === 'string' ? pkg.version : '0.0.0';
12
+ }
13
+ catch {
14
+ return '0.0.0';
15
+ }
16
+ }
17
+ function defaultPrefs(detected) {
18
+ const first = detected[0];
19
+ return first
20
+ ? { version: 3, providers: [{ id: first.entry.id }], subagents: { active: [] } }
21
+ : null;
22
+ }
23
+ /**
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.
41
+ *
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.
47
+ */
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.');
67
+ }
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);
77
+ }
78
+ return session;
79
+ };
80
+ const gateway = {
81
+ prompt: async ({ prompt, onEvent, signal, ask, history }) => {
82
+ const live = await ensureSession();
83
+ route = onEvent;
84
+ try {
85
+ 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.
90
+ const onPermission = async (request) => {
91
+ const outcome = await ask({
92
+ sessionId: 'acp',
93
+ toolCalls: request.toolCalls.map((call) => ({
94
+ id: call.id,
95
+ name: call.name,
96
+ input: call.summary,
97
+ isDestructive: call.isDestructive,
98
+ })),
99
+ });
100
+ switch (outcome.kind) {
101
+ case 'approve':
102
+ return { kind: 'approve' };
103
+ case 'approve_all':
104
+ return { kind: 'approve-all' };
105
+ case 'reject':
106
+ return {
107
+ kind: 'reject',
108
+ ...(outcome.feedback ? { feedback: outcome.feedback } : {}),
109
+ };
110
+ }
111
+ };
112
+ // Prior turns first, so a resumed session answers with the
113
+ // conversation it actually had rather than as if it were new.
114
+ const messages = [...history, createUserMessage(prompt)];
115
+ for await (const event of live.send(messages, { signal, onPermission })) {
116
+ if (event.kind === 'done')
117
+ 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
+ else if (event.kind === 'error')
122
+ stopReason = 'error';
123
+ }
124
+ return stopReason === undefined ? {} : { stopReason };
125
+ }
126
+ finally {
127
+ route = undefined;
128
+ }
129
+ },
130
+ };
131
+ const server = new ACPServer({
132
+ 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.
136
+ commands: new HostCommandRegistry(),
137
+ presenter: createToolPresenter(new ToolRegistry()),
138
+ agentInfo: { name: 'namzu', version: readPackageVersion() },
139
+ });
140
+ 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();
149
+ return 0;
150
+ }
151
+ export const acpCommand = {
152
+ name: 'acp',
153
+ description: "Speak the agent-client protocol over this process's stdio",
154
+ handler: async () => runAcpCommand(process.cwd()),
155
+ };
156
+ //# sourceMappingURL=acp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/commands/acp.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,16 @@
1
+ import type { NamzuCliConfig } from '../config/schema.js';
1
2
  import type { CommandDef } from './types.js';
2
- export declare function runDoctorCommand(args: readonly string[]): Promise<number>;
3
+ export declare function runDoctorCommand(args: readonly string[],
4
+ /**
5
+ * The invocation's resolved config, for the checks that report on it.
6
+ *
7
+ * Optional so every existing caller and test keeps its one-argument
8
+ * shape; absent means "no config was resolved", which
9
+ * `sessionExportCheck` reads as export being off — the same answer an
10
+ * empty config gives, and the true one for a `doctor` run that never
11
+ * loaded a file.
12
+ */
13
+ config?: NamzuCliConfig): Promise<number>;
3
14
  /**
4
15
  * CommandDef adapter for the global registry. Preserves the legacy
5
16
  * `runDoctorCommand(args)` signature by forwarding raw arguments unparsed.
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAiO5C,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAiC/E;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,UAK3B,CAAA"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAKzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAiO5C,wBAAsB,gBAAgB,CACrC,IAAI,EAAE,SAAS,MAAM,EAAE;AACvB;;;;;;;;GAQG;AACH,MAAM,GAAE,cAAmB,GACzB,OAAO,CAAC,MAAM,CAAC,CAsCjB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,UAK3B,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { builtInDoctorChecks } from '../doctor/checks/index.js';
2
+ import { sessionExportCheck } from '../doctor/checks/session-export.js';
2
3
  import { createDoctorRegistry, runDoctor } from '../doctor/registry.js';
3
4
  import { EXIT_USAGE } from '../exit-codes.js';
4
5
  const VALID_CATEGORIES = [
@@ -205,7 +206,17 @@ function formatHumanReport(report, verbose) {
205
206
  }
206
207
  return lines.join('\n');
207
208
  }
208
- export async function runDoctorCommand(args) {
209
+ export async function runDoctorCommand(args,
210
+ /**
211
+ * The invocation's resolved config, for the checks that report on it.
212
+ *
213
+ * Optional so every existing caller and test keeps its one-argument
214
+ * shape; absent means "no config was resolved", which
215
+ * `sessionExportCheck` reads as export being off — the same answer an
216
+ * empty config gives, and the true one for a `doctor` run that never
217
+ * loaded a file.
218
+ */
219
+ config = {}) {
209
220
  const parsed = parseArgs(args);
210
221
  if (parsed.error) {
211
222
  process.stderr.write(`Error: ${parsed.error}\n\n${HELP}\n`);
@@ -221,6 +232,11 @@ export async function runDoctorCommand(args) {
221
232
  const registry = createDoctorRegistry();
222
233
  for (const check of builtInDoctorChecks)
223
234
  registry.register(check);
235
+ // Config-dependent, so it is constructed here rather than sitting in
236
+ // `builtInDoctorChecks`: what it reports is a property of THIS
237
+ // invocation's resolved config, and a check registered without one could
238
+ // only report "unknown", which is the answer nobody runs `doctor` for.
239
+ registry.register(sessionExportCheck(config));
224
240
  const opts = {
225
241
  registry,
226
242
  categories: parsed.categories,
@@ -244,6 +260,6 @@ export const doctorCommand = {
244
260
  name: 'doctor',
245
261
  description: 'Run health checks against the local Namzu environment',
246
262
  passThrough: true,
247
- handler: async ({ rawArgs }) => runDoctorCommand(rawArgs),
263
+ handler: async ({ rawArgs, ctx }) => runDoctorCommand(rawArgs, ctx.config),
248
264
  };
249
265
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -50,8 +50,8 @@ export declare function resolveDrainScope(flags: Pick<DrainFlags, 'tenant' | 'pr
50
50
  readonly error: string;
51
51
  } | {
52
52
  readonly tenantId: TenantId;
53
- readonly projectId?: ProjectId;
54
- readonly sessionId?: SessionId;
53
+ readonly projectId: ProjectId;
54
+ readonly sessionId: SessionId;
55
55
  };
56
56
  /** A per-process holder when the operator names none. */
57
57
  export declare function defaultHolder(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"drain.d.ts","sourceRoot":"","sources":["../../src/commands/drain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,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;IACA,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAC7B,CAqBH;AAED,yDAAyD;AACzD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAcD,eAAO,MAAM,YAAY,EAAE,UAuK1B,CAAA"}
1
+ {"version":3,"file":"drain.d.ts","sourceRoot":"","sources":["../../src/commands/drain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAWH,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"}
@@ -21,9 +21,9 @@
21
21
  * the reading that makes an empty queue indistinguishable from a missing
22
22
  * one.
23
23
  */
24
- import { DiskCheckpointStore, drainRuns } from '@namzu/sdk';
25
- import { configureLogger } from '@namzu/sdk';
24
+ import { DiskCheckpointStore, InvalidIdError, asProjectId, asSessionId, asTenantId, drainRuns, installProcessSink, } from '@namzu/sdk';
26
25
  import { EXIT_UNTRUSTED, EXIT_USAGE } from '../exit-codes.js';
26
+ import { contextLogging, createStderrSink } from '../logging.js';
27
27
  import { decideHeadlessTrust } from '../permissions/headless-trust.js';
28
28
  import { applyProviderFlags, resolveWorkingDirectory } from './run-flags.js';
29
29
  /** Lease length when the operator names none. Long enough for a real turn. */
@@ -117,11 +117,27 @@ export function resolveDrainScope(flags) {
117
117
  error: '--project and --session are both required for a disk store: its layout carries no attribution, so it cannot say which project and session the runs it finds belong to.',
118
118
  };
119
119
  }
120
- return {
121
- tenantId: flags.tenant,
122
- projectId: flags.project,
123
- sessionId: flags.session,
124
- };
120
+ // Prefix-checked, and refused in THIS function's shape rather than by
121
+ // throwing. Every other bad flag here produces an operator-readable
122
+ // sentence; an `InvalidIdError` escaping to the top level would be the one
123
+ // that arrives as a stack trace. A typo'd `--tenant prj_x` previously
124
+ // reached the store as a TenantId and listed nothing, which reads as "no
125
+ // runs" rather than "wrong flag".
126
+ try {
127
+ return {
128
+ tenantId: asTenantId(flags.tenant),
129
+ projectId: asProjectId(flags.project),
130
+ sessionId: asSessionId(flags.session),
131
+ };
132
+ }
133
+ catch (err) {
134
+ if (err instanceof InvalidIdError) {
135
+ return {
136
+ error: `${err.message} Check --tenant, --project and --session.`,
137
+ };
138
+ }
139
+ throw err;
140
+ }
125
141
  }
126
142
  /** A per-process holder when the operator names none. */
127
143
  export function defaultHolder() {
@@ -200,7 +216,14 @@ export const drainCommand = {
200
216
  ctx.formatter.error({ message: trust.message ?? 'folder not trusted' });
201
217
  return EXIT_UNTRUSTED;
202
218
  }
203
- configureLogger({ level: 'silent' });
219
+ // The CLI owns stderr, not the kernel it drives (LOG-05) — a live sink
220
+ // at the level --verbose/--quiet/NAMZU_LOG_LEVEL named, instead of
221
+ // forcing the level to `silent` via `configureLogger`. `{ replace:
222
+ // true }`: see the identical comment in `run.ts` — a real invocation
223
+ // calls this once, this package's own tests call a handler's more
224
+ // than once per process.
225
+ const logging = contextLogging(ctx);
226
+ installProcessSink(createStderrSink(logging.format), logging.level, { replace: true });
204
227
  const { probeAgentSession, createAgentSession } = await import('../tui/agent.js');
205
228
  const probe = await probeAgentSession();
206
229
  let prefs = probe.preferences ?? defaultPrefs(probe.detected);