@namzu/cli 0.5.1 → 0.7.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 (218) hide show
  1. package/dist/__tests__/permission-rules-reach-the-turn.test.d.ts +31 -0
  2. package/dist/__tests__/permission-rules-reach-the-turn.test.d.ts.map +1 -0
  3. package/dist/__tests__/permission-rules-reach-the-turn.test.js +132 -0
  4. package/dist/__tests__/permission-rules-reach-the-turn.test.js.map +1 -0
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +16 -3
  7. package/dist/cli.js.map +1 -1
  8. package/dist/cli.test.js +7 -1
  9. package/dist/cli.test.js.map +1 -1
  10. package/dist/commands/__tests__/resume.test.d.ts +15 -0
  11. package/dist/commands/__tests__/resume.test.d.ts.map +1 -0
  12. package/dist/commands/__tests__/resume.test.js +116 -0
  13. package/dist/commands/__tests__/resume.test.js.map +1 -0
  14. package/dist/commands/__tests__/run-flags.test.d.ts +11 -0
  15. package/dist/commands/__tests__/run-flags.test.d.ts.map +1 -0
  16. package/dist/commands/__tests__/run-flags.test.js +189 -0
  17. package/dist/commands/__tests__/run-flags.test.js.map +1 -0
  18. package/dist/commands/__tests__/run-stream-flags.test.js +160 -11
  19. package/dist/commands/__tests__/run-stream-flags.test.js.map +1 -1
  20. package/dist/commands/doctor.js.map +1 -1
  21. package/dist/commands/resume.d.ts +60 -0
  22. package/dist/commands/resume.d.ts.map +1 -0
  23. package/dist/commands/resume.js +107 -0
  24. package/dist/commands/resume.js.map +1 -0
  25. package/dist/commands/run-flags.d.ts +76 -0
  26. package/dist/commands/run-flags.d.ts.map +1 -0
  27. package/dist/commands/run-flags.js +163 -0
  28. package/dist/commands/run-flags.js.map +1 -0
  29. package/dist/commands/run-stream.d.ts +3 -39
  30. package/dist/commands/run-stream.d.ts.map +1 -1
  31. package/dist/commands/run-stream.js +74 -101
  32. package/dist/commands/run-stream.js.map +1 -1
  33. package/dist/commands/run.d.ts +25 -0
  34. package/dist/commands/run.d.ts.map +1 -1
  35. package/dist/commands/run.js +189 -16
  36. package/dist/commands/run.js.map +1 -1
  37. package/dist/commands/stubs.d.ts +10 -0
  38. package/dist/commands/stubs.d.ts.map +1 -1
  39. package/dist/commands/stubs.js +12 -2
  40. package/dist/commands/stubs.js.map +1 -1
  41. package/dist/config/load.d.ts.map +1 -1
  42. package/dist/config/load.js +20 -4
  43. package/dist/config/load.js.map +1 -1
  44. package/dist/config/schema.d.ts +9 -12
  45. package/dist/config/schema.d.ts.map +1 -1
  46. package/dist/config/schema.js.map +1 -1
  47. package/dist/doctor/checks/credentials.d.ts +20 -0
  48. package/dist/doctor/checks/credentials.d.ts.map +1 -0
  49. package/dist/doctor/checks/credentials.js +58 -0
  50. package/dist/doctor/checks/credentials.js.map +1 -0
  51. package/dist/doctor/checks/credentials.test.d.ts +10 -0
  52. package/dist/doctor/checks/credentials.test.d.ts.map +1 -0
  53. package/dist/doctor/checks/credentials.test.js +47 -0
  54. package/dist/doctor/checks/credentials.test.js.map +1 -0
  55. package/dist/doctor/checks/index.d.ts +2 -1
  56. package/dist/doctor/checks/index.d.ts.map +1 -1
  57. package/dist/doctor/checks/index.js +3 -1
  58. package/dist/doctor/checks/index.js.map +1 -1
  59. package/dist/index.d.ts +1 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/integrations/providers/discover.d.ts +3 -8
  64. package/dist/integrations/providers/discover.d.ts.map +1 -1
  65. package/dist/integrations/providers/discover.js +2 -12
  66. package/dist/integrations/providers/discover.js.map +1 -1
  67. package/dist/integrations/providers/discover.test.js +1 -28
  68. package/dist/integrations/providers/discover.test.js.map +1 -1
  69. package/dist/integrations/providers/index.d.ts +0 -1
  70. package/dist/integrations/providers/index.d.ts.map +1 -1
  71. package/dist/integrations/providers/index.js +0 -1
  72. package/dist/integrations/providers/index.js.map +1 -1
  73. package/dist/integrations/providers/oauth.d.ts +1 -1
  74. package/dist/integrations/providers/oauth.js +1 -1
  75. package/dist/integrations/providers/preferences.d.ts +2 -2
  76. package/dist/integrations/providers/preferences.js +2 -2
  77. package/dist/integrations/sessions/store.js +1 -1
  78. package/dist/integrations/sessions/store.js.map +1 -1
  79. package/dist/integrations/updates.d.ts +4 -12
  80. package/dist/integrations/updates.d.ts.map +1 -1
  81. package/dist/integrations/updates.js +6 -53
  82. package/dist/integrations/updates.js.map +1 -1
  83. package/dist/permissions/__tests__/mode.test.d.ts +10 -0
  84. package/dist/permissions/__tests__/mode.test.d.ts.map +1 -0
  85. package/dist/permissions/__tests__/mode.test.js +115 -0
  86. package/dist/permissions/__tests__/mode.test.js.map +1 -0
  87. package/dist/permissions/__tests__/rules.test.d.ts +10 -0
  88. package/dist/permissions/__tests__/rules.test.d.ts.map +1 -0
  89. package/dist/permissions/__tests__/rules.test.js +196 -0
  90. package/dist/permissions/__tests__/rules.test.js.map +1 -0
  91. package/dist/permissions/mode.d.ts +64 -0
  92. package/dist/permissions/mode.d.ts.map +1 -0
  93. package/dist/permissions/mode.js +32 -0
  94. package/dist/permissions/mode.js.map +1 -0
  95. package/dist/permissions/rules.d.ts +105 -0
  96. package/dist/permissions/rules.d.ts.map +1 -0
  97. package/dist/permissions/rules.js +163 -0
  98. package/dist/permissions/rules.js.map +1 -0
  99. package/dist/tui/App.d.ts.map +1 -1
  100. package/dist/tui/App.js +29 -133
  101. package/dist/tui/App.js.map +1 -1
  102. package/dist/tui/Picker.d.ts +4 -4
  103. package/dist/tui/Picker.d.ts.map +1 -1
  104. package/dist/tui/Picker.js +6 -8
  105. package/dist/tui/Picker.js.map +1 -1
  106. package/dist/tui/__tests__/deferred-tool-discovery.test.d.ts +24 -0
  107. package/dist/tui/__tests__/deferred-tool-discovery.test.d.ts.map +1 -0
  108. package/dist/tui/__tests__/deferred-tool-discovery.test.js +111 -0
  109. package/dist/tui/__tests__/deferred-tool-discovery.test.js.map +1 -0
  110. package/dist/tui/__tests__/to-agent-event.test.js +88 -0
  111. package/dist/tui/__tests__/to-agent-event.test.js.map +1 -1
  112. package/dist/tui/__tests__/working-directory.test.d.ts +13 -0
  113. package/dist/tui/__tests__/working-directory.test.d.ts.map +1 -0
  114. package/dist/tui/__tests__/working-directory.test.js +109 -0
  115. package/dist/tui/__tests__/working-directory.test.js.map +1 -0
  116. package/dist/tui/agent.d.ts +46 -5
  117. package/dist/tui/agent.d.ts.map +1 -1
  118. package/dist/tui/agent.js +140 -43
  119. package/dist/tui/agent.js.map +1 -1
  120. package/dist/tui/slashCommands.d.ts +0 -6
  121. package/dist/tui/slashCommands.d.ts.map +1 -1
  122. package/dist/tui/slashCommands.js +1 -21
  123. package/dist/tui/slashCommands.js.map +1 -1
  124. package/dist/tui/types.d.ts +12 -0
  125. package/dist/tui/types.d.ts.map +1 -1
  126. package/package.json +4 -5
  127. package/dist/commands/tools.d.ts +0 -16
  128. package/dist/commands/tools.d.ts.map +0 -1
  129. package/dist/commands/tools.js +0 -161
  130. package/dist/commands/tools.js.map +0 -1
  131. package/dist/integrations/clawtool/agents.d.ts +0 -31
  132. package/dist/integrations/clawtool/agents.d.ts.map +0 -1
  133. package/dist/integrations/clawtool/agents.js +0 -30
  134. package/dist/integrations/clawtool/agents.js.map +0 -1
  135. package/dist/integrations/clawtool/agents.test.d.ts +0 -2
  136. package/dist/integrations/clawtool/agents.test.d.ts.map +0 -1
  137. package/dist/integrations/clawtool/agents.test.js +0 -79
  138. package/dist/integrations/clawtool/agents.test.js.map +0 -1
  139. package/dist/integrations/clawtool/auth.d.ts +0 -26
  140. package/dist/integrations/clawtool/auth.d.ts.map +0 -1
  141. package/dist/integrations/clawtool/auth.js +0 -56
  142. package/dist/integrations/clawtool/auth.js.map +0 -1
  143. package/dist/integrations/clawtool/auth.test.d.ts +0 -2
  144. package/dist/integrations/clawtool/auth.test.d.ts.map +0 -1
  145. package/dist/integrations/clawtool/auth.test.js +0 -40
  146. package/dist/integrations/clawtool/auth.test.js.map +0 -1
  147. package/dist/integrations/clawtool/binary.d.ts +0 -25
  148. package/dist/integrations/clawtool/binary.d.ts.map +0 -1
  149. package/dist/integrations/clawtool/binary.js +0 -50
  150. package/dist/integrations/clawtool/binary.js.map +0 -1
  151. package/dist/integrations/clawtool/binary.test.d.ts +0 -2
  152. package/dist/integrations/clawtool/binary.test.d.ts.map +0 -1
  153. package/dist/integrations/clawtool/binary.test.js +0 -50
  154. package/dist/integrations/clawtool/binary.test.js.map +0 -1
  155. package/dist/integrations/clawtool/daemon.d.ts +0 -37
  156. package/dist/integrations/clawtool/daemon.d.ts.map +0 -1
  157. package/dist/integrations/clawtool/daemon.js +0 -109
  158. package/dist/integrations/clawtool/daemon.js.map +0 -1
  159. package/dist/integrations/clawtool/daemon.test.d.ts +0 -11
  160. package/dist/integrations/clawtool/daemon.test.d.ts.map +0 -1
  161. package/dist/integrations/clawtool/daemon.test.js +0 -118
  162. package/dist/integrations/clawtool/daemon.test.js.map +0 -1
  163. package/dist/integrations/clawtool/dispatch.d.ts +0 -33
  164. package/dist/integrations/clawtool/dispatch.d.ts.map +0 -1
  165. package/dist/integrations/clawtool/dispatch.js +0 -155
  166. package/dist/integrations/clawtool/dispatch.js.map +0 -1
  167. package/dist/integrations/clawtool/dispatch.test.d.ts +0 -2
  168. package/dist/integrations/clawtool/dispatch.test.d.ts.map +0 -1
  169. package/dist/integrations/clawtool/dispatch.test.js +0 -138
  170. package/dist/integrations/clawtool/dispatch.test.js.map +0 -1
  171. package/dist/integrations/clawtool/index.d.ts +0 -11
  172. package/dist/integrations/clawtool/index.d.ts.map +0 -1
  173. package/dist/integrations/clawtool/index.js +0 -10
  174. package/dist/integrations/clawtool/index.js.map +0 -1
  175. package/dist/integrations/clawtool/mcp.d.ts +0 -51
  176. package/dist/integrations/clawtool/mcp.d.ts.map +0 -1
  177. package/dist/integrations/clawtool/mcp.js +0 -174
  178. package/dist/integrations/clawtool/mcp.js.map +0 -1
  179. package/dist/integrations/clawtool/mcp.test.d.ts +0 -2
  180. package/dist/integrations/clawtool/mcp.test.d.ts.map +0 -1
  181. package/dist/integrations/clawtool/mcp.test.js +0 -126
  182. package/dist/integrations/clawtool/mcp.test.js.map +0 -1
  183. package/dist/integrations/clawtool/paths.d.ts +0 -8
  184. package/dist/integrations/clawtool/paths.d.ts.map +0 -1
  185. package/dist/integrations/clawtool/paths.js +0 -19
  186. package/dist/integrations/clawtool/paths.js.map +0 -1
  187. package/dist/integrations/clawtool/peers.d.ts +0 -67
  188. package/dist/integrations/clawtool/peers.d.ts.map +0 -1
  189. package/dist/integrations/clawtool/peers.js +0 -150
  190. package/dist/integrations/clawtool/peers.js.map +0 -1
  191. package/dist/integrations/clawtool/plugin.d.ts +0 -42
  192. package/dist/integrations/clawtool/plugin.d.ts.map +0 -1
  193. package/dist/integrations/clawtool/plugin.js +0 -38
  194. package/dist/integrations/clawtool/plugin.js.map +0 -1
  195. package/dist/integrations/clawtool/state.d.ts +0 -11
  196. package/dist/integrations/clawtool/state.d.ts.map +0 -1
  197. package/dist/integrations/clawtool/state.js +0 -41
  198. package/dist/integrations/clawtool/state.js.map +0 -1
  199. package/dist/integrations/clawtool/state.test.d.ts +0 -2
  200. package/dist/integrations/clawtool/state.test.d.ts.map +0 -1
  201. package/dist/integrations/clawtool/state.test.js +0 -38
  202. package/dist/integrations/clawtool/state.test.js.map +0 -1
  203. package/dist/integrations/clawtool/tooling.d.ts +0 -52
  204. package/dist/integrations/clawtool/tooling.d.ts.map +0 -1
  205. package/dist/integrations/clawtool/tooling.js +0 -91
  206. package/dist/integrations/clawtool/tooling.js.map +0 -1
  207. package/dist/integrations/clawtool/tooling.test.d.ts +0 -2
  208. package/dist/integrations/clawtool/tooling.test.d.ts.map +0 -1
  209. package/dist/integrations/clawtool/tooling.test.js +0 -58
  210. package/dist/integrations/clawtool/tooling.test.js.map +0 -1
  211. package/dist/integrations/clawtool/types.d.ts +0 -41
  212. package/dist/integrations/clawtool/types.d.ts.map +0 -1
  213. package/dist/integrations/clawtool/types.js +0 -9
  214. package/dist/integrations/clawtool/types.js.map +0 -1
  215. package/dist/integrations/providers/secrets.d.ts +0 -37
  216. package/dist/integrations/providers/secrets.d.ts.map +0 -1
  217. package/dist/integrations/providers/secrets.js +0 -69
  218. package/dist/integrations/providers/secrets.js.map +0 -1
@@ -0,0 +1,189 @@
1
+ /**
2
+ * `namzu run` accepts what `namzu run-stream` accepts.
3
+ *
4
+ * The two are the same headless one-shot and differ only in how they print, so
5
+ * an option one takes and the other reads aloud to the model is a defect, not a
6
+ * design. `run` joined every argument into the prompt, which is the exact shape
7
+ * already fixed once in the streaming sibling — `--cwd` was documented there,
8
+ * unparsed, and silently ran in the process's own directory.
9
+ */
10
+ import { mkdtempSync, rmSync } from 'node:fs';
11
+ import { tmpdir } from 'node:os';
12
+ import { join } from 'node:path';
13
+ import { Readable } from 'node:stream';
14
+ import { describe, expect, it, vi } from 'vitest';
15
+ import { EXIT_USAGE } from '../../exit-codes.js';
16
+ import { composePrompt, runCommand } from '../run.js';
17
+ const seen = { prompt: null, cwd: undefined, provider: undefined, model: undefined };
18
+ vi.mock('../../tui/agent.js', () => ({
19
+ probeAgentSession: vi.fn(async () => ({
20
+ preferences: { version: 2, provider: 'mock', subagents: { active: [] } },
21
+ needsRepickReason: null,
22
+ detected: [],
23
+ })),
24
+ createAgentSession: vi.fn(async (prefs, _detected, opts) => {
25
+ seen.cwd = opts?.cwd;
26
+ seen.provider = prefs.provider;
27
+ seen.model = prefs.model;
28
+ return {
29
+ hasProvider: true,
30
+ providerSummary: 'mock',
31
+ modelSummary: 'mock-model',
32
+ toolNames: [],
33
+ errorHint: null,
34
+ send: (messages) => {
35
+ seen.prompt = messages[0]?.content ?? null;
36
+ return (async function* () {
37
+ yield { kind: 'done', stopReason: 'end_turn' };
38
+ })();
39
+ },
40
+ };
41
+ }),
42
+ }));
43
+ function context() {
44
+ const printed = [];
45
+ const errors = [];
46
+ const ctx = {
47
+ formatter: {
48
+ name: 'text',
49
+ print: (d) => printed.push(String(d?.text ?? d)),
50
+ info: () => { },
51
+ error: (e) => errors.push(String(e?.message ?? e)),
52
+ },
53
+ config: {},
54
+ };
55
+ return { ctx, printed, errors };
56
+ }
57
+ async function run(rawArgs) {
58
+ seen.prompt = null;
59
+ seen.cwd = undefined;
60
+ seen.provider = undefined;
61
+ seen.model = undefined;
62
+ const { ctx, errors } = context();
63
+ const code = (await runCommand.handler({ rawArgs, ctx }));
64
+ return { code, errors };
65
+ }
66
+ describe('namzu run reads its options instead of reciting them', () => {
67
+ it('works in --cwd and keeps it out of the prompt', async () => {
68
+ const elsewhere = mkdtempSync(join(tmpdir(), 'namzu-run-cwd-'));
69
+ try {
70
+ const { code } = await run(['--cwd', elsewhere, 'fix', 'the', 'test']);
71
+ expect(code).toBe(0);
72
+ expect(seen.cwd).toBe(elsewhere);
73
+ // The whole point: the flag was previously the first two words the
74
+ // model was asked to act on.
75
+ expect(seen.prompt).toBe('fix the test');
76
+ }
77
+ finally {
78
+ rmSync(elsewhere, { recursive: true, force: true });
79
+ }
80
+ });
81
+ it('takes --provider and --model over the stored preference', async () => {
82
+ const { code } = await run(['--provider', 'openai', '--model', 'some-model', 'hello']);
83
+ expect(code).toBe(0);
84
+ expect(seen.provider).toBe('openai');
85
+ expect(seen.model).toBe('some-model');
86
+ expect(seen.prompt).toBe('hello');
87
+ });
88
+ it('refuses an option it does not know, with a usage exit code', async () => {
89
+ // A shell caller reads `$?`; saying "--temperature 0.5" to the model and
90
+ // exiting 0 is the failure this replaces.
91
+ const { code, errors } = await run(['--temperature', '0.5', 'hello']);
92
+ expect(code).toBe(EXIT_USAGE);
93
+ expect(errors.join('')).toContain('--temperature');
94
+ expect(seen.prompt).toBeNull();
95
+ });
96
+ it('refuses a --cwd that is not there rather than running in this one', async () => {
97
+ const { code, errors } = await run(['--cwd', join(tmpdir(), 'namzu-run-no-such'), 'hello']);
98
+ expect(code).toBe(EXIT_USAGE);
99
+ expect(errors.join('')).toContain('--cwd does not exist');
100
+ expect(seen.prompt).toBeNull();
101
+ });
102
+ it('lets `--` carry a prompt that begins with a dash', async () => {
103
+ const { code } = await run(['--', '--force', 'is', 'part', 'of', 'the', 'question']);
104
+ expect(code).toBe(0);
105
+ expect(seen.prompt).toBe('--force is part of the question');
106
+ });
107
+ it('accepts --yolo and does not put it in the prompt', async () => {
108
+ // Headless turns never prompt for approval, so there is nothing to skip.
109
+ // Accepting it silently is what keeps `namzu --yolo run …` working.
110
+ const { code } = await run(['--yolo', 'hello']);
111
+ expect(code).toBe(0);
112
+ expect(seen.prompt).toBe('hello');
113
+ });
114
+ });
115
+ describe('a pipe and a question are both the prompt', () => {
116
+ // `cat notes.txt | namzu run "summarise this"` read the three words and
117
+ // silently dropped the file: piped input was consulted only when there was
118
+ // no argument prompt. The run succeeded and answered about nothing.
119
+ it('keeps piped material alongside the question', () => {
120
+ const prompt = composePrompt('summarise this', 'line one\nline two\n');
121
+ expect(prompt).toContain('summarise this');
122
+ expect(prompt).toContain('line one');
123
+ expect(prompt).toContain('line two');
124
+ });
125
+ it('fences the piped material so it cannot read as part of the question', () => {
126
+ // Without a boundary the last line of a long paste runs into the
127
+ // instruction, and the model cannot tell the request from the material.
128
+ const prompt = composePrompt('what is wrong here?', 'const x = 1');
129
+ expect(prompt).toBe('what is wrong here?\n\n<stdin>\nconst x = 1\n</stdin>');
130
+ });
131
+ it('is just the pipe when no question was given', () => {
132
+ expect(composePrompt('', 'do the thing')).toBe('do the thing');
133
+ });
134
+ it('is just the question when nothing was piped', () => {
135
+ expect(composePrompt('do the thing', '')).toBe('do the thing');
136
+ // No empty tag block either — a model shown `<stdin></stdin>` is being
137
+ // told something was attached when nothing was.
138
+ expect(composePrompt('do the thing', ' \n ')).toBe('do the thing');
139
+ });
140
+ it('is empty when neither was given, so the caller can report it', () => {
141
+ expect(composePrompt('', '')).toBe('');
142
+ });
143
+ });
144
+ describe('the pipe reaches the model, not just the composer', () => {
145
+ // composePrompt is pure and proves the shape. This proves the plumbing:
146
+ // that piped bytes are actually READ when a prompt argument is present.
147
+ // They were not — stdin was consulted only when the argument was absent —
148
+ // and a unit test of the composer alone would pass with that defect intact.
149
+ function withStdin(text, fn) {
150
+ const real = Object.getOwnPropertyDescriptor(process, 'stdin');
151
+ const fake = text === null ? Readable.from([]) : Readable.from([Buffer.from(text)]);
152
+ Object.defineProperty(process, 'stdin', {
153
+ configurable: true,
154
+ get: () => Object.assign(fake, { isTTY: text === null }),
155
+ });
156
+ return fn().finally(() => {
157
+ if (real)
158
+ Object.defineProperty(process, 'stdin', real);
159
+ });
160
+ }
161
+ it('sends the piped file alongside the question', async () => {
162
+ await withStdin('the contents of notes.txt', async () => {
163
+ const { code } = await run(['summarise this']);
164
+ expect(code).toBe(0);
165
+ expect(seen.prompt).toContain('summarise this');
166
+ expect(seen.prompt).toContain('the contents of notes.txt');
167
+ });
168
+ });
169
+ it('reads the pipe as the whole prompt for the `-` sentinel', async () => {
170
+ await withStdin('the question is in here', async () => {
171
+ const { code } = await run(['-']);
172
+ expect(code).toBe(0);
173
+ expect(seen.prompt).toBe('the question is in here');
174
+ });
175
+ });
176
+ });
177
+ describe('a flag that was never read is refused, not swallowed', () => {
178
+ // `--instance` was parsed into a field nothing anywhere in the repo read.
179
+ // A host passing it got the persona selection it asked for exactly never,
180
+ // and was told exactly nothing — which is worse than an absent flag,
181
+ // because an absent flag says so immediately.
182
+ it('refuses --instance now that it means nothing', async () => {
183
+ const { code, errors } = await run(['--instance', 'namzu-2', 'hello']);
184
+ expect(code).toBe(EXIT_USAGE);
185
+ expect(errors.join('')).toContain('--instance');
186
+ expect(seen.prompt).toBeNull();
187
+ });
188
+ });
189
+ //# sourceMappingURL=run-flags.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-flags.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/run-flags.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAGrD,MAAM,IAAI,GAKN,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;AAE3E,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACrC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;QACxE,iBAAiB,EAAE,IAAI;QACvB,QAAQ,EAAE,EAAE;KACZ,CAAC,CAAC;IACH,kBAAkB,EAAE,EAAE,CAAC,EAAE,CACxB,KAAK,EACJ,KAA4C,EAC5C,SAAkB,EAClB,IAAuB,EACtB,EAAE;QACH,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACxB,OAAO;YACN,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE,MAAM;YACvB,YAAY,EAAE,YAAY;YAC1B,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,CAAC,QAAoC,EAAE,EAAE;gBAC9C,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,IAAI,CAAA;gBAC1C,OAAO,CAAC,KAAK,SAAS,CAAC;oBACtB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAA;gBAC/C,CAAC,CAAC,EAAE,CAAA;YACL,CAAC;SACD,CAAA;IACF,CAAC,CACD;CACD,CAAC,CAAC,CAAA;AAEH,SAAS,OAAO;IACf,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,GAAG,GAAG;QACX,SAAS,EAAE;YACV,IAAI,EAAE,MAAe;YACrB,KAAK,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAE,CAAuB,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;YAChF,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,KAAK,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAE,CAA0B,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;SACrF;QACD,MAAM,EAAE,EAAE;KACmB,CAAA;IAC9B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;AAChC,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,OAAiB;IACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IAClB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAA;IACpB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;IACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;IACtB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAA;IACjC,MAAM,IAAI,GAAG,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,EAAW,CAAC,CAAW,CAAA;IAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;AACxB,CAAC;AAED,QAAQ,CAAC,sDAAsD,EAAE,GAAG,EAAE;IACrE,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAA;QAC/D,IAAI,CAAC;YACJ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;YAEtE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAChC,mEAAmE;YACnE,6BAA6B;YAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACzC,CAAC;gBAAS,CAAC;YACV,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,CAAC;IACF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAA;QAEtF,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACrC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC3E,yEAAyE;QACzE,0CAA0C;QAC1C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;QAErE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;QAClD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;QAE3F,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAA;QACzD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;QAEpF,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QACjE,yEAAyE;QACzE,oEAAoE;QACpE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;QAE/C,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IAC1D,wEAAwE;IACxE,2EAA2E;IAC3E,oEAAoE;IACpE,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,aAAa,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAA;QAEtE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC9E,iEAAiE;QACjE,wEAAwE;QACxE,MAAM,MAAM,GAAG,aAAa,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAA;QAElE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC9D,uEAAuE;QACvE,gDAAgD;QAChD,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAClE,wEAAwE;IACxE,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,SAAS,SAAS,CAAC,IAAmB,EAAE,EAAuB;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC9D,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;YACvC,YAAY,EAAE,IAAI;YAClB,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;SACxD,CAAC,CAAA;QACF,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACxB,IAAI,IAAI;gBAAE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;IACH,CAAC;IAED,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,SAAS,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAA;YAE9C,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;YAC/C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAA;QAC3D,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,SAAS,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YAEjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,sDAAsD,EAAE,GAAG,EAAE;IACrE,0EAA0E;IAC1E,0EAA0E;IAC1E,qEAAqE;IACrE,8CAA8C;IAC9C,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;QAEtE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QAC/C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC/B,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -1,6 +1,10 @@
1
+ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { join, resolve } from 'node:path';
1
4
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
5
  import { openSessions } from '../../integrations/sessions/store.js';
3
- import { historyCommand, parseRunStreamFlags, runStreamCommand } from '../run-stream.js';
6
+ import { parseRunFlags } from '../run-flags.js';
7
+ import { historyCommand, runStreamCommand, skillsJSONCommand } from '../run-stream.js';
4
8
  // Mocked so the directory the store is opened at is observable. Nothing here
5
9
  // touches a real `.namzu` store; `resolveConversation` returning null is the
6
10
  // "no such session" path, which is what makes the handler terminate.
@@ -10,6 +14,28 @@ vi.mock('../../integrations/sessions/store.js', () => ({
10
14
  loadConversation: vi.fn(async () => []),
11
15
  appendMessages: vi.fn(async () => undefined),
12
16
  }));
17
+ // Stubbed so a turn can be driven to completion without a credential, and so
18
+ // the directory the SESSION is created in is observable. What the session then
19
+ // does with that directory is asserted in `src/tui/__tests__/`.
20
+ const sessionOptions = [];
21
+ vi.mock('../../tui/agent.js', () => ({
22
+ probeAgentSession: vi.fn(async () => ({
23
+ preferences: { version: 2, provider: 'anthropic', subagents: { active: [] } },
24
+ needsRepickReason: null,
25
+ detected: [],
26
+ })),
27
+ createAgentSession: vi.fn(async (_prefs, _detected, opts) => {
28
+ sessionOptions.push(opts);
29
+ return {
30
+ hasProvider: true,
31
+ providerSummary: 'stub',
32
+ modelSummary: 'stub',
33
+ toolNames: [],
34
+ errorHint: null,
35
+ send: async function* () { },
36
+ };
37
+ }),
38
+ }));
13
39
  /**
14
40
  * `run-stream` folded every argument it did not recognise into `rest`, and
15
41
  * `rest.join(' ')` is the PROMPT. `--cwd <path>` was in this command's own help
@@ -22,7 +48,7 @@ vi.mock('../../integrations/sessions/store.js', () => ({
22
48
  * to stop treating an option as content; the fix here is the same, plus
23
49
  * actually honouring the flag that was advertised.
24
50
  */
25
- const ctx = {};
51
+ const ctx = { config: {} };
26
52
  function capture() {
27
53
  const lines = [];
28
54
  const spy = vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
@@ -33,6 +59,7 @@ function capture() {
33
59
  }
34
60
  beforeEach(() => {
35
61
  vi.mocked(openSessions).mockClear();
62
+ sessionOptions.length = 0;
36
63
  });
37
64
  afterEach(() => {
38
65
  vi.restoreAllMocks();
@@ -71,51 +98,122 @@ describe('run-stream does not turn options into prompt text', () => {
71
98
  expect(lines.join('')).toContain('"kind":"done"');
72
99
  });
73
100
  });
101
+ describe('run-stream works in the directory it was pointed at', () => {
102
+ it('hands --cwd to the agent session, not only to the session store', async () => {
103
+ // `--session` keeps the turn off stdin: without a session key the command
104
+ // reads prior history from a pipe, and in a test runner that pipe never
105
+ // closes.
106
+ const elsewhere = mkdtempSync(join(tmpdir(), 'namzu-run-stream-'));
107
+ try {
108
+ await run(['--cwd', elsewhere, '--session', 'k', 'read', 'notes.txt']);
109
+ }
110
+ finally {
111
+ rmSync(elsewhere, { recursive: true, force: true });
112
+ }
113
+ expect(sessionOptions[0]?.cwd).toBe(elsewhere);
114
+ });
115
+ it('refuses a --cwd that is not there instead of quietly using this one', async () => {
116
+ // The silent fallback is the whole defect: the run proceeds, searches the
117
+ // wrong tree, finds nothing, and reports that the file does not exist.
118
+ const lines = await run(['--cwd', join(tmpdir(), 'namzu-no-such-dir'), 'hello']);
119
+ const joined = lines.join('');
120
+ expect(joined).toContain('--cwd does not exist');
121
+ expect(joined).toContain('"kind":"done"');
122
+ expect(sessionOptions).toEqual([]);
123
+ });
124
+ });
74
125
  describe('the flag parser itself', () => {
75
126
  // Asserted here rather than through the handler: a valid prompt sends the
76
127
  // handler on to stdin and a provider probe, so the first version of this
77
128
  // case hung for five seconds and failed on a timeout rather than on the
78
129
  // behaviour. A pure function deserves to be called.
79
130
  it('lets `--` carry a prompt that begins with a dash', () => {
80
- const flags = parseRunStreamFlags(['--', '--this-is-the-prompt']);
131
+ const flags = parseRunFlags(['--', '--this-is-the-prompt']);
81
132
  expect(flags.rest).toEqual(['--this-is-the-prompt']);
82
133
  expect(flags.unknown).toEqual([]);
83
134
  });
84
135
  it('stops interpreting options after `--`', () => {
85
- const flags = parseRunStreamFlags(['--session', 'abc', '--', '--model', 'not-a-flag']);
136
+ const flags = parseRunFlags(['--session', 'abc', '--', '--model', 'not-a-flag']);
86
137
  expect(flags.session).toBe('abc');
87
138
  expect(flags.model).toBeNull();
88
139
  expect(flags.rest).toEqual(['--model', 'not-a-flag']);
89
140
  });
90
141
  it('reads --cwd in both spellings', () => {
91
- expect(parseRunStreamFlags(['--cwd', '/a', 'hi']).cwd).toBe('/a');
92
- expect(parseRunStreamFlags(['--cwd=/b', 'hi']).cwd).toBe('/b');
93
- expect(parseRunStreamFlags(['--cwd', '/a', 'hi']).rest).toEqual(['hi']);
142
+ expect(parseRunFlags(['--cwd', '/a', 'hi']).cwd).toBe('/a');
143
+ expect(parseRunFlags(['--cwd=/b', 'hi']).cwd).toBe('/b');
144
+ expect(parseRunFlags(['--cwd', '/a', 'hi']).rest).toEqual(['hi']);
94
145
  });
95
146
  it('leaves a lone dash alone, since that is not an option', () => {
96
- expect(parseRunStreamFlags(['-', 'hi']).unknown).toEqual([]);
97
- expect(parseRunStreamFlags(['-', 'hi']).rest).toEqual(['-', 'hi']);
147
+ expect(parseRunFlags(['-', 'hi']).unknown).toEqual([]);
148
+ expect(parseRunFlags(['-', 'hi']).rest).toEqual(['-', 'hi']);
98
149
  });
99
150
  });
151
+ describe('skills-json lists the directory it was pointed at', () => {
152
+ // A host that lists skills for one checkout and then runs a turn in that
153
+ // same checkout has to be told about the same skills both times. It was
154
+ // not: this command read the process directory whatever `--cwd` said, so
155
+ // it could offer a skill that `run-stream --cwd <there>` then could not
156
+ // find, and hide one that was actually available.
157
+ function skillIn(root, name) {
158
+ mkdirSync(join(root, 'skills', name), { recursive: true });
159
+ writeFileSync(join(root, 'skills', name, 'SKILL.md'), `---\nname: ${name}\ndescription: only in this checkout\n---\n\nbody\n`);
160
+ }
161
+ it('discovers the project skills under --cwd', async () => {
162
+ const elsewhere = mkdtempSync(join(tmpdir(), 'namzu-skills-'));
163
+ skillIn(elsewhere, 'only-over-there');
164
+ const { lines, restore } = capture();
165
+ try {
166
+ await skillsJSONCommand.handler({ rawArgs: ['--cwd', elsewhere], ctx });
167
+ }
168
+ finally {
169
+ restore();
170
+ rmSync(elsewhere, { recursive: true, force: true });
171
+ }
172
+ const names = JSON.parse(lines.join('').trim()).map((s) => s.name);
173
+ expect(names).toContain('only-over-there');
174
+ });
175
+ // There is deliberately no paired "and not from anywhere else" case: with
176
+ // the flag ignored the command read `packages/cli`, which has no skills
177
+ // directory, so a negative assertion passes with the defect still in place
178
+ // and would only look like coverage.
179
+ });
100
180
  describe('history reads the directory it was pointed at', () => {
101
181
  it('opens the store at --cwd, not at the process directory', async () => {
102
182
  // Parsing the flag is not the fix; USING it is. An assertion that the
103
183
  // command merely survives `--cwd` would pass with the wiring reverted —
104
184
  // `[]` is printed either way — which would leave the flag parsed and
105
185
  // still undriven, the exact shape being repaired here.
186
+ //
187
+ // A real directory, because `--cwd` is now resolved and checked before
188
+ // the store is opened: a path that is not there cannot be told apart
189
+ // from a session with no messages, so it never reaches the store.
190
+ const elsewhere = mkdtempSync(join(tmpdir(), 'namzu-history-'));
106
191
  const { lines, restore } = capture();
107
192
  try {
108
193
  await historyCommand.handler({
109
- rawArgs: ['--cwd', '/tmp/elsewhere', '--session', 'some-key'],
194
+ rawArgs: ['--cwd', elsewhere, '--session', 'some-key'],
110
195
  ctx,
111
196
  });
112
197
  }
113
198
  finally {
114
199
  restore();
200
+ rmSync(elsewhere, { recursive: true, force: true });
115
201
  }
116
- expect(openSessions).toHaveBeenCalledWith('/tmp/elsewhere');
202
+ expect(openSessions).toHaveBeenCalledWith(elsewhere);
117
203
  expect(lines.join('').trim()).toBe('[]');
118
204
  });
205
+ it('resolves a relative --cwd against the process directory', async () => {
206
+ // A host that passes `.` or `../sibling` gets the directory it meant,
207
+ // and the agent downstream gets an absolute path it cannot misread.
208
+ const { restore } = capture();
209
+ try {
210
+ await historyCommand.handler({ rawArgs: ['--cwd', '.', '--session', 'k'], ctx });
211
+ }
212
+ finally {
213
+ restore();
214
+ }
215
+ expect(openSessions).toHaveBeenCalledWith(resolve(process.cwd(), '.'));
216
+ });
119
217
  it('falls back to the process directory when --cwd is absent', async () => {
120
218
  const { restore } = capture();
121
219
  try {
@@ -127,4 +225,55 @@ describe('history reads the directory it was pointed at', () => {
127
225
  expect(openSessions).toHaveBeenCalledWith(process.cwd());
128
226
  });
129
227
  });
228
+ describe('run-stream honours the permission surface, not just parses it', () => {
229
+ // It accepted `--permission-mode` and never used it, and it never compiled
230
+ // the `[permissions]` table at all — so an operator who wrote rules, or who
231
+ // typed `--permission-mode strict` precisely because they did not trust the
232
+ // run, got an unrestricted one that looked like it had obeyed. A safety
233
+ // control that parses and does nothing is worse than one that is missing,
234
+ // because the absence is visible and the silence is not.
235
+ const withConfig = {
236
+ config: { permissions: { bash: 'deny' } },
237
+ };
238
+ async function runWith(rawArgs, context = withConfig) {
239
+ const { lines, restore } = capture();
240
+ try {
241
+ await runStreamCommand.handler({ rawArgs, ctx: context });
242
+ }
243
+ finally {
244
+ restore();
245
+ }
246
+ return lines;
247
+ }
248
+ it('compiles the operator table into the session', async () => {
249
+ await runWith(['--session', 'k', 'hello']);
250
+ expect(sessionOptions[0]?.rules).toEqual([{ type: 'deny_by_name', toolNames: ['bash'] }]);
251
+ });
252
+ it('passes --permission-mode through instead of ignoring it', async () => {
253
+ await runWith(['--session', 'k', '--permission-mode', 'strict', 'hello']);
254
+ expect(sessionOptions[0]?.permissionMode).toBe('strict');
255
+ });
256
+ it('refuses a mode it does not know rather than running unrestricted', async () => {
257
+ const lines = await runWith(['--session', 'k', '--permission-mode', 'yolo', 'hello']);
258
+ expect(lines.join('')).toContain('--permission-mode must be one of');
259
+ expect(sessionOptions).toEqual([]);
260
+ });
261
+ it('defaults to auto when nothing was asked for, and says so by acting on it', async () => {
262
+ await runWith(['--session', 'k', 'hello']);
263
+ expect(sessionOptions[0]?.permissionMode).toBe('auto');
264
+ });
265
+ it('reports an unreadable rule in band, where a host can see it', async () => {
266
+ const bad = {
267
+ config: { permissions: { bash: { 'git push*': 'maybe' } } },
268
+ };
269
+ const lines = await runWith(['--session', 'k', 'hello'], bad);
270
+ // Parsed, not substring-matched: the line is JSON, so the quotes around
271
+ // the pattern are escaped in the raw text and a naive contains() would
272
+ // pass or fail for reasons unrelated to what the host actually reads.
273
+ const messages = lines
274
+ .map((l) => JSON.parse(l))
275
+ .map((e) => e.message ?? '');
276
+ expect(messages.some((m) => m.includes('permissions.bash."git push*"'))).toBe(true);
277
+ });
278
+ });
130
279
  //# sourceMappingURL=run-stream-flags.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-stream-flags.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/run-stream-flags.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-stream-flags.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/run-stream-flags.test.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Picking up a previous conversation from the command line.
3
+ *
4
+ * The store, the reader and the picker all existed; only the entry point was
5
+ * missing, so a conversation you could resume inside the TUI could not be
6
+ * resumed from a script.
7
+ *
8
+ * ## What happens when it cannot be done
9
+ *
10
+ * **It refuses, and names the cause. It never falls back to a new session.**
11
+ *
12
+ * Someone who types `--resume <id>` is asking for THAT conversation. The three
13
+ * available answers are not equally good:
14
+ *
15
+ * - *Start fresh* is the worst. They asked for a specific thing, got a
16
+ * different thing that is indistinguishable from outside, and nothing
17
+ * failed — they find out several turns later, having already acted on an
18
+ * agent that has no idea what they are referring to.
19
+ * - *Resume with whatever survived* is worse still. The agent gets a partial
20
+ * history and neither it nor the user knows which part is missing, so it acts
21
+ * confidently on a hole. A half-context is not a degraded context; it is a
22
+ * different context that lies about being complete.
23
+ * - *Refuse* costs one command and loses nothing.
24
+ *
25
+ * The message names the CAUSE rather than the outcome, because the causes have
26
+ * different next moves — a conversation belonging to another directory is
27
+ * fixed with `--cwd`, and an empty store is not fixed at all. "Cannot resume"
28
+ * alone sends someone hunting through a store that is fine.
29
+ *
30
+ * There is deliberately no way to spell "resume if you can, otherwise start".
31
+ * If that is what you want, run the command with no flag. The absence of a
32
+ * thing must not be spellable as a silent widening of it.
33
+ */
34
+ import type { Message } from '@namzu/sdk';
35
+ import { type CliSessions } from '../integrations/sessions/store.js';
36
+ export interface ResumeRequest {
37
+ /** `--continue`: the most recent conversation in this directory. */
38
+ readonly continueLast: boolean;
39
+ /** `--resume <id>`: this conversation, and no other. */
40
+ readonly sessionId: string | null;
41
+ }
42
+ export type ResumeOutcome = {
43
+ readonly kind: 'fresh';
44
+ } | {
45
+ readonly kind: 'resumed';
46
+ readonly sessionId: string;
47
+ readonly messages: readonly Message[];
48
+ } | {
49
+ readonly kind: 'error';
50
+ readonly message: string;
51
+ };
52
+ /**
53
+ * Resolve what a `--continue` / `--resume` asked for.
54
+ *
55
+ * `cwd` is carried only so a refusal can name the directory it looked in — the
56
+ * most common cause of "no previous session" is standing in the wrong one, and
57
+ * a message that does not say where it looked cannot tell you that.
58
+ */
59
+ export declare function resolveResume(sessions: CliSessions | null, request: ResumeRequest, cwd: string): Promise<ResumeOutcome>;
60
+ //# sourceMappingURL=resume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EACN,KAAK,WAAW,EAIhB,MAAM,mCAAmC,CAAA;AAE1C,MAAM,WAAW,aAAa;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,MAAM,aAAa,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GAC/F;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAClC,QAAQ,EAAE,WAAW,GAAG,IAAI,EAC5B,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,aAAa,CAAC,CA6CxB"}