@namzu/cli 27.0.0 → 28.1.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 (149) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/README.md +24 -18
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +122 -12
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/drain.js +2 -2
  8. package/dist/commands/drain.js.map +1 -1
  9. package/dist/commands/{run-flags.d.ts → exec-flags.d.ts} +29 -21
  10. package/dist/commands/exec-flags.d.ts.map +1 -0
  11. package/dist/commands/{run-flags.js → exec-flags.js} +31 -23
  12. package/dist/commands/exec-flags.js.map +1 -0
  13. package/dist/commands/{run-stream.d.ts → exec-json.d.ts} +20 -14
  14. package/dist/commands/exec-json.d.ts.map +1 -0
  15. package/dist/commands/exec-json.js +473 -0
  16. package/dist/commands/exec-json.js.map +1 -0
  17. package/dist/commands/{run.d.ts → exec.d.ts} +14 -13
  18. package/dist/commands/exec.d.ts.map +1 -0
  19. package/dist/commands/exec.js +683 -0
  20. package/dist/commands/exec.js.map +1 -0
  21. package/dist/commands/host-queries.d.ts +12 -0
  22. package/dist/commands/host-queries.d.ts.map +1 -0
  23. package/dist/commands/host-queries.js +149 -0
  24. package/dist/commands/host-queries.js.map +1 -0
  25. package/dist/commands/prior-messages.js +1 -1
  26. package/dist/commands/prior-messages.js.map +1 -1
  27. package/dist/commands/registry.d.ts.map +1 -1
  28. package/dist/commands/registry.js +2 -0
  29. package/dist/commands/registry.js.map +1 -1
  30. package/dist/commands/resident-flags.d.ts +2 -2
  31. package/dist/commands/resident-flags.d.ts.map +1 -1
  32. package/dist/commands/resident-flags.js +4 -2
  33. package/dist/commands/resident-flags.js.map +1 -1
  34. package/dist/commands/resident-learning.js +1 -1
  35. package/dist/commands/resident-learning.js.map +1 -1
  36. package/dist/commands/resident.js +1 -1
  37. package/dist/commands/resident.js.map +1 -1
  38. package/dist/commands/skills.js +1 -1
  39. package/dist/commands/skills.js.map +1 -1
  40. package/dist/commands/stdin.d.ts +5 -5
  41. package/dist/commands/stdin.js +5 -5
  42. package/dist/commands/types.d.ts +2 -0
  43. package/dist/commands/types.d.ts.map +1 -1
  44. package/dist/config/load.d.ts.map +1 -1
  45. package/dist/config/load.js +19 -0
  46. package/dist/config/load.js.map +1 -1
  47. package/dist/config/schema.d.ts +18 -4
  48. package/dist/config/schema.d.ts.map +1 -1
  49. package/dist/config/schema.js.map +1 -1
  50. package/dist/config/{run-limits.d.ts → turn-guards.d.ts} +1 -1
  51. package/dist/config/turn-guards.d.ts.map +1 -0
  52. package/dist/config/{run-limits.js → turn-guards.js} +1 -1
  53. package/dist/config/turn-guards.js.map +1 -0
  54. package/dist/context/project.d.ts +1 -1
  55. package/dist/context/project.js +1 -1
  56. package/dist/doctor/checks/chain.js +2 -2
  57. package/dist/doctor/checks/chain.js.map +1 -1
  58. package/dist/integrations/providers/access.d.ts +4 -1
  59. package/dist/integrations/providers/access.d.ts.map +1 -1
  60. package/dist/integrations/providers/access.js +6 -3
  61. package/dist/integrations/providers/access.js.map +1 -1
  62. package/dist/integrations/providers/zen-catalogue.d.ts +100 -0
  63. package/dist/integrations/providers/zen-catalogue.d.ts.map +1 -0
  64. package/dist/integrations/providers/zen-catalogue.js +196 -0
  65. package/dist/integrations/providers/zen-catalogue.js.map +1 -0
  66. package/dist/integrations/resident/runner-launch.d.ts +3 -3
  67. package/dist/integrations/resident/runner-launch.d.ts.map +1 -1
  68. package/dist/integrations/resident/runner-worker.js +22 -0
  69. package/dist/integrations/resident/runner-worker.js.map +1 -1
  70. package/dist/integrations/resident/session-step.d.ts +2 -2
  71. package/dist/integrations/resident/session-step.d.ts.map +1 -1
  72. package/dist/integrations/resident/session-step.js +1 -1
  73. package/dist/integrations/resident/session-step.js.map +1 -1
  74. package/dist/integrations/sessions/transcript-export.js +3 -1
  75. package/dist/integrations/sessions/transcript-export.js.map +1 -1
  76. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  77. package/dist/integrations/subagents/runtime.js +1 -1
  78. package/dist/integrations/subagents/runtime.js.map +1 -1
  79. package/dist/integrations/web/search.d.ts +1 -1
  80. package/dist/logging.d.ts +5 -5
  81. package/dist/logging.js +6 -6
  82. package/dist/permissions/headless-trust.d.ts +2 -2
  83. package/dist/permissions/headless-trust.js +3 -3
  84. package/dist/permissions/headless-trust.js.map +1 -1
  85. package/dist/permissions/live-mode.d.ts +73 -0
  86. package/dist/permissions/live-mode.d.ts.map +1 -0
  87. package/dist/permissions/live-mode.js +62 -0
  88. package/dist/permissions/live-mode.js.map +1 -0
  89. package/dist/termination.d.ts +1 -1
  90. package/dist/termination.js +1 -1
  91. package/dist/tui/App.d.ts.map +1 -1
  92. package/dist/tui/App.js +181 -79
  93. package/dist/tui/App.js.map +1 -1
  94. package/dist/tui/Checklist.d.ts +56 -0
  95. package/dist/tui/Checklist.d.ts.map +1 -0
  96. package/dist/tui/Checklist.js +90 -0
  97. package/dist/tui/Checklist.js.map +1 -0
  98. package/dist/tui/StatusBar.d.ts +10 -0
  99. package/dist/tui/StatusBar.d.ts.map +1 -1
  100. package/dist/tui/StatusBar.js +8 -1
  101. package/dist/tui/StatusBar.js.map +1 -1
  102. package/dist/tui/TaskList.d.ts +18 -25
  103. package/dist/tui/TaskList.d.ts.map +1 -1
  104. package/dist/tui/TaskList.js +34 -58
  105. package/dist/tui/TaskList.js.map +1 -1
  106. package/dist/tui/Transcript.d.ts.map +1 -1
  107. package/dist/tui/Transcript.js +8 -1
  108. package/dist/tui/Transcript.js.map +1 -1
  109. package/dist/tui/agent.d.ts +33 -7
  110. package/dist/tui/agent.d.ts.map +1 -1
  111. package/dist/tui/agent.js +51 -9
  112. package/dist/tui/agent.js.map +1 -1
  113. package/dist/tui/live-window.d.ts +22 -0
  114. package/dist/tui/live-window.d.ts.map +1 -1
  115. package/dist/tui/live-window.js +34 -0
  116. package/dist/tui/live-window.js.map +1 -1
  117. package/dist/tui/notices.d.ts +27 -0
  118. package/dist/tui/notices.d.ts.map +1 -0
  119. package/dist/tui/notices.js +27 -0
  120. package/dist/tui/notices.js.map +1 -0
  121. package/dist/tui/slashCommands.d.ts +1 -1
  122. package/dist/tui/slashCommands.js +5 -5
  123. package/dist/tui/slashCommands.js.map +1 -1
  124. package/dist/tui/status-panel-layout.js +1 -1
  125. package/dist/tui/status-panel-layout.js.map +1 -1
  126. package/dist/tui/task-activity.d.ts +71 -0
  127. package/dist/tui/task-activity.d.ts.map +1 -0
  128. package/dist/tui/task-activity.js +157 -0
  129. package/dist/tui/task-activity.js.map +1 -0
  130. package/dist/tui/turn-limits-settings.d.ts +1 -1
  131. package/dist/tui/turn-limits-settings.d.ts.map +1 -1
  132. package/dist/tui/turn-limits-settings.js +1 -1
  133. package/dist/tui/turn-limits-settings.js.map +1 -1
  134. package/dist/tui/types.d.ts +13 -0
  135. package/dist/tui/types.d.ts.map +1 -1
  136. package/dist/user-commands/store.d.ts +3 -3
  137. package/dist/user-commands/store.js +4 -4
  138. package/dist/user-commands/store.js.map +1 -1
  139. package/package.json +6 -6
  140. package/dist/commands/run-flags.d.ts.map +0 -1
  141. package/dist/commands/run-flags.js.map +0 -1
  142. package/dist/commands/run-stream.d.ts.map +0 -1
  143. package/dist/commands/run-stream.js +0 -647
  144. package/dist/commands/run-stream.js.map +0 -1
  145. package/dist/commands/run.d.ts.map +0 -1
  146. package/dist/commands/run.js +0 -617
  147. package/dist/commands/run.js.map +0 -1
  148. package/dist/config/run-limits.d.ts.map +0 -1
  149. package/dist/config/run-limits.js.map +0 -1
@@ -1,26 +1,24 @@
1
1
  /**
2
- * The input surface shared by the two headless one-shots, `run` and
3
- * `run-stream`.
2
+ * The input surface of `namzu exec`, the headless one-shot.
4
3
  *
5
- * They are the same command with different OUTPUT — `run` prints the reply for
6
- * a shell, `run-stream` emits one JSON event per line for a host UI — so they
7
- * have no business accepting different INPUT. They did: `run-stream` learned to
8
- * parse `--cwd`, `--model`, `--provider`, `--session` and `--skills`, while
9
- * `run` parsed nothing at all and joined every argument into the prompt. So
10
- * `namzu run --cwd /elsewhere "fix the test"` sent the model a prompt beginning
11
- * `--cwd /elsewhere` and ran in this directory, which is the defect that was
12
- * already fixed once, in the sibling command.
4
+ * `exec` prints its reply for a shell by default and, with `--json`, emits one
5
+ * JSON event per line for a host UI. Those used to be two commands with two
6
+ * inputs that drifted: one learned to parse `--cwd`, `--model`, `--provider`,
7
+ * `--session` and `--skills` while the other joined every argument into the
8
+ * prompt, so `--cwd /elsewhere "fix the test"` sent the model a prompt
9
+ * beginning `--cwd /elsewhere` and worked in this directory anyway.
13
10
  *
14
- * One parser, so the two cannot drift again.
11
+ * One parser, so the two output modes cannot drift again. `namzu resident`
12
+ * reads the same flags for the turns it starts.
15
13
  *
16
- * What they still differ on is how a bad argument is REPORTED, and that is
17
- * deliberate: `run` answers a shell, so it exits non-zero; `run-stream` answers
18
- * a line-scanning host, so it emits an error event and exits 0. Each is the
19
- * only signal its caller is listening for.
14
+ * What the modes still differ on is how a bad argument is REPORTED, and that is
15
+ * deliberate: the default mode answers a shell, so it exits non-zero; `--json`
16
+ * answers a line-scanning host, so it emits an error event and exits 0. Each is
17
+ * the only signal its caller is listening for.
20
18
  */
21
19
  import type { ReasoningEffort, ReviewAnswer } from '@namzu/sdk';
22
20
  import type { Preferences } from '../integrations/providers/index.js';
23
- export interface RunFlags {
21
+ export interface ExecFlags {
24
22
  session: string | null;
25
23
  model: string | null;
26
24
  provider: string | null;
@@ -60,7 +58,7 @@ export interface RunFlags {
60
58
  waitForProviderMs: number | null;
61
59
  /**
62
60
  * `--gate '<command>'`, repeatable — commands that must pass before the
63
- * run is allowed to settle.
61
+ * turn is allowed to settle.
64
62
  *
65
63
  * An ARRAY rather than a single value, and repeat-to-append rather than
66
64
  * last-wins, because "typecheck AND test" is the ordinary case and a
@@ -73,6 +71,16 @@ export interface RunFlags {
73
71
  * back before the turn stops with `answer_rejected`.
74
72
  */
75
73
  gateRetries: number | null;
74
+ /**
75
+ * `--json`: print the turn as one JSON event per line instead of the reply.
76
+ */
77
+ json: boolean;
78
+ /**
79
+ * `--output-schema <file>`: a JSON Schema file the final answer is bound
80
+ * to, through the provider's native structured output. The path as given;
81
+ * the command resolves it against the process's directory.
82
+ */
83
+ outputSchema: string | null;
76
84
  /**
77
85
  * `--flags` this parser does not know.
78
86
  *
@@ -84,7 +92,7 @@ export interface RunFlags {
84
92
  unknown: string[];
85
93
  rest: string[];
86
94
  }
87
- export declare function parseRunFlags(rawArgs: readonly string[]): RunFlags;
95
+ export declare function parseExecFlags(rawArgs: readonly string[]): ExecFlags;
88
96
  /**
89
97
  * Absolute path for a `--cwd`, or an error naming what is wrong with it.
90
98
  *
@@ -126,7 +134,7 @@ export declare function loadSkillsContext(cwd: string, names: readonly string[])
126
134
  * stops after `maxAnswerReviews`, and a turn whose budget outlasts its gate
127
135
  * spends its remaining turns being told the same thing.
128
136
  */
129
- export declare function buildGate(flags: Pick<RunFlags, 'gates' | 'gateRetries'>, cwd: string): {
137
+ export declare function buildGate(flags: Pick<ExecFlags, 'gates' | 'gateRetries'>, cwd: string): {
130
138
  reviewAnswer: ReviewAnswer;
131
139
  maxAnswerReviews: number;
132
140
  } | undefined;
@@ -153,5 +161,5 @@ export declare function unknownOptionMessage(unknown: readonly string[]): string
153
161
  * viable. Passed together with `--provider`, it models the single member that
154
162
  * replaced the chain.
155
163
  */
156
- export declare function applyProviderFlags(prefs: Preferences, flags: Pick<RunFlags, 'provider' | 'model'>): Preferences;
157
- //# sourceMappingURL=run-flags.d.ts.map
164
+ export declare function applyProviderFlags(prefs: Preferences, flags: Pick<ExecFlags, 'provider' | 'model'>): Preferences;
165
+ //# sourceMappingURL=exec-flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec-flags.d.ts","sourceRoot":"","sources":["../../src/commands/exec-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE/D,OAAO,KAAK,EAAE,WAAW,EAA8B,MAAM,oCAAoC,CAAA;AAWjG,MAAM,WAAW,SAAS;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,iEAAiE;IACjE,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;IAC9B,kFAAkF;IAClF,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,kFAAkF;IAClF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,yDAAyD;IACzD,eAAe,EAAE,OAAO,CAAA;IACxB;;;;;;;;;OASG;IACH,KAAK,EAAE,OAAO,CAAA;IACd,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAA;IACrB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,oEAAoE;IACpE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,oEAAoE;IACpE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,EAAE,CAAA;IACf;;;OAGG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;OAEG;IACH,IAAI,EAAE,OAAO,CAAA;IACb;;;;OAIG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE,MAAM,EAAE,CAAA;CACd;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAuPpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAS/F;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACtC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,MAAM,EAAE,GACtB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAc7B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CACxB,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,aAAa,CAAC,EAC/C,GAAG,EAAE,MAAM,GACT;IAAE,YAAY,EAAE,YAAY,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAUtE;AAmBD,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAuBvE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,GAC1C,WAAW,CAiBb"}
@@ -1,35 +1,33 @@
1
1
  /**
2
- * The input surface shared by the two headless one-shots, `run` and
3
- * `run-stream`.
2
+ * The input surface of `namzu exec`, the headless one-shot.
4
3
  *
5
- * They are the same command with different OUTPUT — `run` prints the reply for
6
- * a shell, `run-stream` emits one JSON event per line for a host UI — so they
7
- * have no business accepting different INPUT. They did: `run-stream` learned to
8
- * parse `--cwd`, `--model`, `--provider`, `--session` and `--skills`, while
9
- * `run` parsed nothing at all and joined every argument into the prompt. So
10
- * `namzu run --cwd /elsewhere "fix the test"` sent the model a prompt beginning
11
- * `--cwd /elsewhere` and ran in this directory, which is the defect that was
12
- * already fixed once, in the sibling command.
4
+ * `exec` prints its reply for a shell by default and, with `--json`, emits one
5
+ * JSON event per line for a host UI. Those used to be two commands with two
6
+ * inputs that drifted: one learned to parse `--cwd`, `--model`, `--provider`,
7
+ * `--session` and `--skills` while the other joined every argument into the
8
+ * prompt, so `--cwd /elsewhere "fix the test"` sent the model a prompt
9
+ * beginning `--cwd /elsewhere` and worked in this directory anyway.
13
10
  *
14
- * One parser, so the two cannot drift again.
11
+ * One parser, so the two output modes cannot drift again. `namzu resident`
12
+ * reads the same flags for the turns it starts.
15
13
  *
16
- * What they still differ on is how a bad argument is REPORTED, and that is
17
- * deliberate: `run` answers a shell, so it exits non-zero; `run-stream` answers
18
- * a line-scanning host, so it emits an error event and exits 0. Each is the
19
- * only signal its caller is listening for.
14
+ * What the modes still differ on is how a bad argument is REPORTED, and that is
15
+ * deliberate: the default mode answers a shell, so it exits non-zero; `--json`
16
+ * answers a line-scanning host, so it emits an error event and exits 0. Each is
17
+ * the only signal its caller is listening for.
20
18
  */
21
19
  import { statSync } from 'node:fs';
22
20
  import { resolve } from 'node:path';
23
21
  import { DEFAULT_GATE_MAX_RETRIES, createCommandGate } from '@namzu/sdk';
24
22
  import { durationMs } from './provider-wait.js';
25
- /** A nonnegative safe integer; zero disables the corresponding run guard. */
26
- function runLimit(value, flag) {
23
+ /** A nonnegative safe integer; zero disables the corresponding turn limit. */
24
+ function turnLimit(value, flag) {
27
25
  const n = Number(value.trim());
28
26
  if (!value.trim() || !Number.isSafeInteger(n) || n < 0)
29
27
  throw new Error(`${flag} takes a safe whole number at least 0 (unlimited), got ${value}`);
30
28
  return n;
31
29
  }
32
- export function parseRunFlags(rawArgs) {
30
+ export function parseExecFlags(rawArgs) {
33
31
  const out = {
34
32
  session: null,
35
33
  model: null,
@@ -47,6 +45,8 @@ export function parseRunFlags(rawArgs) {
47
45
  waitForProviderMs: null,
48
46
  gates: [],
49
47
  gateRetries: null,
48
+ json: false,
49
+ outputSchema: null,
50
50
  unknown: [],
51
51
  rest: [],
52
52
  };
@@ -97,11 +97,11 @@ export function parseRunFlags(rawArgs) {
97
97
  }), idx))
98
98
  continue;
99
99
  if (take(a, 'max-iterations', (v) => {
100
- out.maxIterations = runLimit(v, '--max-iterations');
100
+ out.maxIterations = turnLimit(v, '--max-iterations');
101
101
  }, idx))
102
102
  continue;
103
103
  if (take(a, 'token-budget', (v) => {
104
- out.tokenBudget = runLimit(v, '--token-budget');
104
+ out.tokenBudget = turnLimit(v, '--token-budget');
105
105
  }, idx))
106
106
  continue;
107
107
  if (take(a, 'wait-for-provider', (v) => {
@@ -116,6 +116,14 @@ export function parseRunFlags(rawArgs) {
116
116
  out.trust = true;
117
117
  continue;
118
118
  }
119
+ if (a === '--json') {
120
+ out.json = true;
121
+ continue;
122
+ }
123
+ if (take(a, 'output-schema', trimmed((v) => {
124
+ out.outputSchema = v;
125
+ }), idx))
126
+ continue;
119
127
  if (take(a, 'resume', trimmed((v) => {
120
128
  out.resume = v;
121
129
  }), idx))
@@ -152,7 +160,7 @@ export function parseRunFlags(rawArgs) {
152
160
  out.gateRetries = Number(v);
153
161
  }, idx))
154
162
  continue;
155
- // Was accepted and ignored, because a headless run never prompted and so
163
+ // Was accepted and ignored, because a headless turn never prompted and so
156
164
  // had nothing to bypass. Now that an operator can write rules, it means
157
165
  // something: `auto` for the calls no rule decided. It still cannot reopen
158
166
  // a `deny` or the dangerous-pattern floor, so it promises more than it
@@ -265,7 +273,7 @@ export function unknownOptionMessage(unknown) {
265
273
  // Two different mistakes reached the same sentence, and only one of them
266
274
  // was ever about a dash.
267
275
  //
268
- // `namzu run "..." --verbose` is the order a person types, and the generic
276
+ // `namzu exec "..." --verbose` is the order a person types, and the generic
269
277
  // message answered it with "pass `--` before a prompt that starts with a
270
278
  // dash" — advice for a prompt beginning with `-`, which this is not. The
271
279
  // reader is then looking at the wrong half of their command line. The flag
@@ -320,4 +328,4 @@ export function applyProviderFlags(prefs, flags) {
320
328
  const remodelled = { id: head.id, model: flags.model };
321
329
  return { ...prefs, providers: [remodelled, ...rest] };
322
330
  }
323
- //# sourceMappingURL=run-flags.js.map
331
+ //# sourceMappingURL=exec-flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec-flags.js","sourceRoot":"","sources":["../../src/commands/exec-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAIxE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,8EAA8E;AAC9E,SAAS,SAAS,CAAC,KAAa,EAAE,IAAY;IAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,0DAA0D,KAAK,EAAE,CAAC,CAAA;IAC1F,OAAO,CAAC,CAAA;AACT,CAAC;AA6ED,MAAM,UAAU,cAAc,CAAC,OAA0B;IACxD,MAAM,GAAG,GAAc;QACtB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,IAAI;QACT,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,KAAK;QACZ,YAAY,EAAE,KAAK;QACnB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,IAAI;QACjB,iBAAiB,EAAE,IAAI;QACvB,KAAK,EAAE,EAAE;QACT,WAAW,EAAE,IAAI;QACjB,IAAI,EAAE,KAAK;QACX,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,EAAE;KACR,CAAA;IACD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,IAAY,EAAE,GAAwB,EAAE,CAAgB,EAAW,EAAE;QAC7F,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnD,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACnB,OAAO,IAAI,CAAA;QACZ,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC;YAChC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;YAC7B,OAAO,IAAI,CAAA;QACZ,CAAC;QACD,OAAO,KAAK,CAAA;IACb,CAAC,CAAA;IACD,MAAM,OAAO,GAAG,CAAC,MAAkC,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAA;IAC/F,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,CAAC,CAAA;QACxB,IACC,IAAI,CACH,CAAC,EACD,QAAQ,EACR,CAAC,KAAK,EAAE,EAAE;YACT,MAAM,MAAM,GAAG;gBACd,MAAM;gBACN,SAAS;gBACT,KAAK;gBACL,QAAQ;gBACR,MAAM;gBACN,OAAO;gBACP,KAAK;gBACL,OAAO;aACuC,CAAA;YAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;YACrD,IAAI,KAAK,KAAK,SAAS;gBACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAA;YAC5E,GAAG,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,CAAC,EACD,GAAG,CACH;YAED,SAAQ;QACT,uEAAuE;QACvE,uEAAuE;QACvE,oDAAoD;QACpD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAC1C,MAAK;QACN,CAAC;QACD,IACC,IAAI,CACH,CAAC,EACD,KAAK,EACL,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;QACZ,CAAC,CAAC,EACF,GAAG,CACH;YAED,SAAQ;QACT,IACC,IAAI,CACH,CAAC,EACD,iBAAiB,EACjB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,GAAG,CAAC,cAAc,GAAG,CAAC,CAAA;QACvB,CAAC,CAAC,EACF,GAAG,CACH;YAED,SAAQ;QACT,IACC,IAAI,CACH,CAAC,EACD,gBAAgB,EAChB,CAAC,CAAC,EAAE,EAAE;YACL,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAA;QACrD,CAAC,EACD,GAAG,CACH;YAED,SAAQ;QACT,IACC,IAAI,CACH,CAAC,EACD,cAAc,EACd,CAAC,CAAC,EAAE,EAAE;YACL,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAA;QACjD,CAAC,EACD,GAAG,CACH;YAED,SAAQ;QACT,IACC,IAAI,CACH,CAAC,EACD,mBAAmB,EACnB,CAAC,CAAC,EAAE,EAAE;YACL,GAAG,CAAC,iBAAiB,GAAG,UAAU,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAA;QAC7D,CAAC,EACD,GAAG,CACH;YAED,SAAQ;QACT,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACtC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAA;YACvB,SAAQ;QACT,CAAC;QACD,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACrB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAA;YAChB,SAAQ;QACT,CAAC;QACD,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;YACf,SAAQ;QACT,CAAC;QACD,IACC,IAAI,CACH,CAAC,EACD,eAAe,EACf,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,GAAG,CAAC,YAAY,GAAG,CAAC,CAAA;QACrB,CAAC,CAAC,EACF,GAAG,CACH;YAED,SAAQ;QACT,IACC,IAAI,CACH,CAAC,EACD,QAAQ,EACR,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,CAAC,CAAC,EACF,GAAG,CACH;YAED,SAAQ;QACT,IACC,IAAI,CACH,CAAC,EACD,SAAS,EACT,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,GAAG,CAAC,OAAO,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,EACF,GAAG,CACH;YAED,SAAQ;QACT,IACC,IAAI,CACH,CAAC,EACD,OAAO,EACP,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,GAAG,CAAC,KAAK,GAAG,CAAC,CAAA;QACd,CAAC,CAAC,EACF,GAAG,CACH;YAED,SAAQ;QACT,IACC,IAAI,CACH,CAAC,EACD,UAAU,EACV,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAA;QACjB,CAAC,CAAC,EACF,GAAG,CACH;YAED,SAAQ;QACT,IACC,IAAI,CACH,CAAC,EACD,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE;YACL,GAAG,CAAC,MAAM,GAAG,CAAC;iBACZ,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpB,MAAM,CAAC,OAAO,CAAC,CAAA;QAClB,CAAC,EACD,GAAG,CACH;YAED,SAAQ;QACT,wEAAwE;QACxE,wEAAwE;QACxE,sCAAsC;QACtC,IACC,IAAI,CACH,CAAC,EACD,MAAM,EACN,CAAC,CAAC,EAAE,EAAE;YACL,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;YACpB,IAAI,GAAG;gBAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC7B,CAAC,EACD,GAAG,CACH;YAED,SAAQ;QACT,IACC,IAAI,CACH,CAAC,EACD,cAAc,EACd,CAAC,CAAC,EAAE,EAAE;YACL,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QAC5B,CAAC,EACD,GAAG,CACH;YAED,SAAQ;QACT,0EAA0E;QAC1E,wEAAwE;QACxE,0EAA0E;QAC1E,uEAAuE;QACvE,sEAAsE;QACtE,8CAA8C;QAC9C,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,gCAAgC,EAAE,CAAC;YAC9D,GAAG,CAAC,eAAe,GAAG,IAAI,CAAA;YAC1B,SAAQ;QACT,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACjC,SAAQ;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAkB;IACzD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAA;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;IACvC,IAAI,CAAC;QACJ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,6BAA6B,GAAG,EAAE,EAAE,CAAA;IACvF,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,KAAK,EAAE,yBAAyB,GAAG,EAAE,EAAE,CAAA;IACjD,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,CAAA;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,GAAW,EACX,KAAwB;IAExB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACxC,IAAI,CAAC;QACJ,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAC1E,oBAAoB,CACpB,CAAA;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;QAC7B,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACxD,OAAO,mBAAmB,CAAC,MAAM,CAAC,IAAI,SAAS,CAAA;IAChD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAA;IACjB,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,SAAS,CACxB,KAA+C,EAC/C,GAAW;IAEX,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC9C,MAAM,OAAO,GACZ,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC;QACzF,CAAC,CAAC,KAAK,CAAC,WAAW;QACnB,CAAC,CAAC,wBAAwB,CAAA;IAC5B,OAAO;QACN,YAAY,EAAE,iBAAiB,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QACpF,gBAAgB,EAAE,OAAO;KACzB,CAAA;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IACxD,IAAI;IACJ,WAAW;IACX,IAAI;IACJ,SAAS;IACT,cAAc;IACd,IAAI;IACJ,UAAU;CACV,CAAC,CAAA;AAEF,iFAAiF;AACjF,MAAM,UAAU,oBAAoB,CAAC,OAA0B;IAC9D,yEAAyE;IACzE,yBAAyB;IACzB,EAAE;IACF,4EAA4E;IAC5E,yEAAyE;IACzE,yEAAyE;IACzE,2EAA2E;IAC3E,kDAAkD;IAClD,EAAE;IACF,wEAAwE;IACxE,sEAAsE;IACtE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAC3C,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CACvD,CAAA;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QAC5B,OAAO,CACN,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,IAAI;YACnG,kEAAkE,OAAO,gBAAgB,CACzF,CAAA;IACF,CAAC;IACD,OAAO,sBAAsB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAA;AACxG,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,kBAAkB,CACjC,KAAkB,EAClB,KAA4C;IAE5C,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IAEjD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,MAAM,GAAmB;YAC9B,EAAE,EAAE,KAAK,CAAC,QAAsB;YAChC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C,CAAA;QACD,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAA;IACvC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IACvB,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,UAAU,GAAmB,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAe,EAAE,CAAA;IAChF,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;AACtD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * `namzu run-stream [--session <key>] "<prompt>"` — headless STREAMING
3
- * one-shot. Same engine as `run`, but instead of buffering the final text it
4
- * emits one compact NDJSON line per `AgentEvent` to stdout
2
+ * `namzu exec --json [--session <key>] "<prompt>"` — the headless one-shot as
3
+ * a STREAM. Same engine as the default mode, but instead of buffering the
4
+ * final text it emits one compact NDJSON line per `AgentEvent` to stdout
5
5
  * (`{"kind":"delta","text":…}`, `{"kind":"tool-start",…}`,
6
6
  * `{"kind":"error","message":…}`, `{"kind":"done"}`). A host process — a
7
7
  * desktop app embedding namzu, say — line-scans stdout and renders the turn
@@ -15,8 +15,8 @@
15
15
  * reasoning and complete tool turns included. That's what lets a reopened
16
16
  * session show and replay its past messages (`namzu history --session
17
17
  * <key>`). Without `--session`, prior history may be supplied on stdin as a
18
- * JSON `Message[]` and the turn runs in an in-memory log: nothing is persisted
19
- * (stateless one-shot).
18
+ * JSON `Message[]` and the turn works in an in-memory log: nothing is
19
+ * persisted (a stateless one-shot).
20
20
  *
21
21
  * Status lines go to stderr as NDJSON (LOG-05), never stdout, so every
22
22
  * stdout line is a valid JSON event, and EVERY failure is reported in band,
@@ -53,17 +53,23 @@
53
53
  * credential or driver the session needs, a declared tool server that is not
54
54
  * there, a command file that will not parse.
55
55
  *
56
- * `1` rather than a new code because `namzu run` — the same one-shot, differing
57
- * only in how it prints — already exits `1` for these conditions and `77` for
58
- * trust. A host that shells to one for a script and the other for a UI must not
56
+ * `1` rather than a new code because the default mode of `namzu exec` — the
57
+ * same one-shot, differing only in how it prints — already exits `1` for these
58
+ * conditions and `77` for trust. A host that shells to one for a script and the other for a UI must not
59
59
  * be handed two tables for one fact.
60
60
  *
61
61
  * Dropping `--session` is NOT "the caller fixing it": it abandons what was
62
62
  * asked for rather than achieving it.
63
63
  */
64
- import type { CommandDef } from './types.js';
65
- export declare const runStreamCommand: CommandDef;
66
- export declare const historyCommand: CommandDef;
67
- export declare const skillsJSONCommand: CommandDef;
68
- export declare const providersJSONCommand: CommandDef;
69
- //# sourceMappingURL=run-stream.d.ts.map
64
+ import { type StructuredOutputConfig } from '@namzu/sdk';
65
+ import type { TerminationHandling } from '../termination.js';
66
+ import { type ExecFlags } from './exec-flags.js';
67
+ import type { CommandHandlerArgs } from './types.js';
68
+ /**
69
+ * `exec --json`. `flags` are already parsed; `structuredOutput` is the loaded
70
+ * `--output-schema`, or an error loading it that is reported in band.
71
+ */
72
+ export declare function execJson({ ctx: bootstrapCtx }: CommandHandlerArgs, termination: TerminationHandling, flags: ExecFlags, structuredOutput: StructuredOutputConfig | {
73
+ readonly error: string;
74
+ } | undefined): Promise<number>;
75
+ //# sourceMappingURL=exec-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec-json.d.ts","sourceRoot":"","sources":["../../src/commands/exec-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAEH,OAAO,EAGN,KAAK,sBAAsB,EAI3B,MAAM,YAAY,CAAA;AAkBnB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAI5D,OAAO,EACN,KAAK,SAAS,EAMd,MAAM,iBAAiB,CAAA;AAGxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAapD;;;GAGG;AACH,wBAAsB,QAAQ,CAC7B,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,kBAAkB,EACzC,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAAE,sBAAsB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAC/E,OAAO,CAAC,MAAM,CAAC,CA+XjB"}