@namzu/cli 14.3.0 → 15.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 +107 -17
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +26 -26
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/acp.js +1 -1
  6. package/dist/commands/acp.js.map +1 -1
  7. package/dist/commands/doctor.d.ts.map +1 -1
  8. package/dist/commands/doctor.js +2 -0
  9. package/dist/commands/doctor.js.map +1 -1
  10. package/dist/commands/login.d.ts +2 -0
  11. package/dist/commands/login.d.ts.map +1 -1
  12. package/dist/commands/login.js +45 -7
  13. package/dist/commands/login.js.map +1 -1
  14. package/dist/commands/run.d.ts.map +1 -1
  15. package/dist/commands/run.js +22 -9
  16. package/dist/commands/run.js.map +1 -1
  17. package/dist/commands/{stubs.d.ts → serve.d.ts} +1 -10
  18. package/dist/commands/serve.d.ts.map +1 -0
  19. package/dist/commands/{stubs.js → serve.js} +1 -24
  20. package/dist/commands/serve.js.map +1 -0
  21. package/dist/commands/skills.d.ts +19 -0
  22. package/dist/commands/skills.d.ts.map +1 -0
  23. package/dist/commands/skills.js +107 -0
  24. package/dist/commands/skills.js.map +1 -0
  25. package/dist/integrations/mcp/servers.d.ts +7 -0
  26. package/dist/integrations/mcp/servers.d.ts.map +1 -1
  27. package/dist/integrations/mcp/servers.js +33 -8
  28. package/dist/integrations/mcp/servers.js.map +1 -1
  29. package/dist/integrations/sessions/store.d.ts +8 -0
  30. package/dist/integrations/sessions/store.d.ts.map +1 -1
  31. package/dist/integrations/sessions/store.js +15 -0
  32. package/dist/integrations/sessions/store.js.map +1 -1
  33. package/dist/integrations/subagents/runtime.d.ts +2 -0
  34. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  35. package/dist/integrations/subagents/runtime.js +86 -13
  36. package/dist/integrations/subagents/runtime.js.map +1 -1
  37. package/dist/integrations/updates.d.ts.map +1 -1
  38. package/dist/integrations/updates.js +29 -4
  39. package/dist/integrations/updates.js.map +1 -1
  40. package/dist/tui/App.d.ts +10 -1
  41. package/dist/tui/App.d.ts.map +1 -1
  42. package/dist/tui/App.js +1003 -186
  43. package/dist/tui/App.js.map +1 -1
  44. package/dist/tui/ChoicePicker.d.ts +2 -1
  45. package/dist/tui/ChoicePicker.d.ts.map +1 -1
  46. package/dist/tui/ChoicePicker.js +10 -6
  47. package/dist/tui/ChoicePicker.js.map +1 -1
  48. package/dist/tui/Composer.d.ts +19 -2
  49. package/dist/tui/Composer.d.ts.map +1 -1
  50. package/dist/tui/Composer.js +526 -70
  51. package/dist/tui/Composer.js.map +1 -1
  52. package/dist/tui/CopyPicker.d.ts.map +1 -1
  53. package/dist/tui/CopyPicker.js +3 -4
  54. package/dist/tui/CopyPicker.js.map +1 -1
  55. package/dist/tui/EditPromptPicker.d.ts.map +1 -1
  56. package/dist/tui/EditPromptPicker.js +3 -4
  57. package/dist/tui/EditPromptPicker.js.map +1 -1
  58. package/dist/tui/Markdown.d.ts +3 -1
  59. package/dist/tui/Markdown.d.ts.map +1 -1
  60. package/dist/tui/Markdown.js +11 -9
  61. package/dist/tui/Markdown.js.map +1 -1
  62. package/dist/tui/PermissionOverlay.d.ts +11 -6
  63. package/dist/tui/PermissionOverlay.d.ts.map +1 -1
  64. package/dist/tui/PermissionOverlay.js +13 -20
  65. package/dist/tui/PermissionOverlay.js.map +1 -1
  66. package/dist/tui/Picker.d.ts.map +1 -1
  67. package/dist/tui/Picker.js +47 -11
  68. package/dist/tui/Picker.js.map +1 -1
  69. package/dist/tui/ResumePicker.d.ts.map +1 -1
  70. package/dist/tui/ResumePicker.js +6 -1
  71. package/dist/tui/ResumePicker.js.map +1 -1
  72. package/dist/tui/TextPrompt.d.ts +21 -0
  73. package/dist/tui/TextPrompt.d.ts.map +1 -0
  74. package/dist/tui/TextPrompt.js +139 -0
  75. package/dist/tui/TextPrompt.js.map +1 -0
  76. package/dist/tui/Transcript.d.ts +3 -3
  77. package/dist/tui/Transcript.d.ts.map +1 -1
  78. package/dist/tui/Transcript.js +4 -4
  79. package/dist/tui/Transcript.js.map +1 -1
  80. package/dist/tui/agent.d.ts +24 -20
  81. package/dist/tui/agent.d.ts.map +1 -1
  82. package/dist/tui/agent.js +98 -74
  83. package/dist/tui/agent.js.map +1 -1
  84. package/dist/tui/exit-summary.d.ts.map +1 -1
  85. package/dist/tui/exit-summary.js +2 -1
  86. package/dist/tui/exit-summary.js.map +1 -1
  87. package/dist/tui/external-editor.d.ts +25 -0
  88. package/dist/tui/external-editor.d.ts.map +1 -0
  89. package/dist/tui/external-editor.js +169 -0
  90. package/dist/tui/external-editor.js.map +1 -0
  91. package/dist/tui/index.d.ts.map +1 -1
  92. package/dist/tui/index.js +4 -0
  93. package/dist/tui/index.js.map +1 -1
  94. package/dist/tui/login-prompt.d.ts +2 -0
  95. package/dist/tui/login-prompt.d.ts.map +1 -1
  96. package/dist/tui/login-prompt.js +8 -1
  97. package/dist/tui/login-prompt.js.map +1 -1
  98. package/dist/tui/mentions.d.ts +19 -0
  99. package/dist/tui/mentions.d.ts.map +1 -1
  100. package/dist/tui/mentions.js +96 -5
  101. package/dist/tui/mentions.js.map +1 -1
  102. package/dist/tui/permission-review.d.ts +59 -0
  103. package/dist/tui/permission-review.d.ts.map +1 -0
  104. package/dist/tui/permission-review.js +219 -0
  105. package/dist/tui/permission-review.js.map +1 -0
  106. package/dist/tui/selection-window.d.ts +18 -0
  107. package/dist/tui/selection-window.d.ts.map +1 -0
  108. package/dist/tui/selection-window.js +37 -0
  109. package/dist/tui/selection-window.js.map +1 -0
  110. package/dist/tui/slashCommands.d.ts +48 -8
  111. package/dist/tui/slashCommands.d.ts.map +1 -1
  112. package/dist/tui/slashCommands.js +129 -47
  113. package/dist/tui/slashCommands.js.map +1 -1
  114. package/dist/tui/terminal-hyperlinks.d.ts +20 -0
  115. package/dist/tui/terminal-hyperlinks.d.ts.map +1 -0
  116. package/dist/tui/terminal-hyperlinks.js +70 -0
  117. package/dist/tui/terminal-hyperlinks.js.map +1 -0
  118. package/dist/tui/types.d.ts +2 -0
  119. package/dist/tui/types.d.ts.map +1 -1
  120. package/dist/tui/use-selection-index.d.ts +8 -0
  121. package/dist/tui/use-selection-index.d.ts.map +1 -0
  122. package/dist/tui/use-selection-index.js +13 -0
  123. package/dist/tui/use-selection-index.js.map +1 -0
  124. package/dist/tui/workspace-review.d.ts +15 -0
  125. package/dist/tui/workspace-review.d.ts.map +1 -0
  126. package/dist/tui/workspace-review.js +67 -0
  127. package/dist/tui/workspace-review.js.map +1 -0
  128. package/dist/version.d.ts +10 -0
  129. package/dist/version.d.ts.map +1 -0
  130. package/dist/version.js +23 -0
  131. package/dist/version.js.map +1 -0
  132. package/package.json +6 -5
  133. package/dist/commands/stubs.d.ts.map +0 -1
  134. package/dist/commands/stubs.js.map +0 -1
@@ -0,0 +1,67 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { promisify } from 'node:util';
3
+ const run = promisify(execFile);
4
+ const REVIEW_GIT_TIMEOUT_MS = 10_000;
5
+ const REVIEW_COMMIT_LIMIT = 100;
6
+ async function git(cwd, args) {
7
+ try {
8
+ const { stdout } = await run('git', [...args], {
9
+ cwd,
10
+ timeout: REVIEW_GIT_TIMEOUT_MS,
11
+ maxBuffer: 1024 * 1024 * 8,
12
+ });
13
+ return stdout;
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ }
19
+ function isCommitSha(value) {
20
+ return /^[0-9a-f]{40,64}$/u.test(value);
21
+ }
22
+ /** Local branch targets plus the name shown on the left of the comparison. */
23
+ export async function listReviewBranches(cwd) {
24
+ const raw = await git(cwd, [
25
+ 'for-each-ref',
26
+ '--format=%(refname:short)',
27
+ '--sort=refname',
28
+ 'refs/heads',
29
+ ]);
30
+ if (raw === null)
31
+ return null;
32
+ const branches = raw
33
+ .split('\n')
34
+ .map((branch) => branch.trim())
35
+ .filter(Boolean);
36
+ const current = (await git(cwd, ['branch', '--show-current']))?.trim() || '(detached HEAD)';
37
+ return { current, branches };
38
+ }
39
+ /** Recent reachable commits, with the display title separated from the executable id. */
40
+ export async function listReviewCommits(cwd) {
41
+ const raw = await git(cwd, [
42
+ 'log',
43
+ '-n',
44
+ String(REVIEW_COMMIT_LIMIT),
45
+ '--pretty=format:%H%x1f%s%x1e',
46
+ ]);
47
+ if (raw === null)
48
+ return null;
49
+ const commits = [];
50
+ for (const record of raw.split('\u001e')) {
51
+ const separator = record.indexOf('\u001f');
52
+ if (separator < 0)
53
+ continue;
54
+ const sha = record.slice(0, separator).trim();
55
+ if (!isCommitSha(sha))
56
+ continue;
57
+ const title = record.slice(separator + 1).trim();
58
+ commits.push({ sha, title: title || '(untitled commit)' });
59
+ }
60
+ return commits;
61
+ }
62
+ /** Resolve the selected ref before composing a model prompt; never make the model interpolate it. */
63
+ export async function reviewMergeBase(cwd, branch) {
64
+ const sha = (await git(cwd, ['merge-base', 'HEAD', branch]))?.trim() ?? '';
65
+ return isCommitSha(sha) ? sha : null;
66
+ }
67
+ //# sourceMappingURL=workspace-review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-review.js","sourceRoot":"","sources":["../../src/tui/workspace-review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Version of the CLI package that owns this process.
3
+ *
4
+ * Read from the published manifest rather than repeated in source. Both this
5
+ * file in `src/` and its compiled twin in `dist/` sit one directory below the
6
+ * package root, so the same lookup serves tests, development and an installed
7
+ * tarball.
8
+ */
9
+ export declare const CLI_VERSION: string;
10
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,EAAE,MAAgC,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ /**
5
+ * Version of the CLI package that owns this process.
6
+ *
7
+ * Read from the published manifest rather than repeated in source. Both this
8
+ * file in `src/` and its compiled twin in `dist/` sit one directory below the
9
+ * package root, so the same lookup serves tests, development and an installed
10
+ * tarball.
11
+ */
12
+ export const CLI_VERSION = readCliPackageVersion();
13
+ function readCliPackageVersion() {
14
+ try {
15
+ const here = dirname(fileURLToPath(import.meta.url));
16
+ const pkg = JSON.parse(readFileSync(join(here, '..', 'package.json'), 'utf8'));
17
+ return typeof pkg.version === 'string' ? pkg.version : '0.0.0';
18
+ }
19
+ catch {
20
+ return '0.0.0';
21
+ }
22
+ }
23
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,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;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAW,qBAAqB,EAAE,CAAA;AAE1D,SAAS,qBAAqB;IAC7B,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAE5E,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namzu/cli",
3
- "version": "14.3.0",
3
+ "version": "15.0.0",
4
4
  "description": "Interactive and headless terminal agent for Namzu, with provider discovery, durable sessions, tools and diagnostics.",
5
5
  "keywords": [
6
6
  "namzu",
@@ -44,13 +44,14 @@
44
44
  "ink": "7.0.3",
45
45
  "react": "19.2.6",
46
46
  "yaml": "^2.9.0",
47
+ "@namzu/anthropic": "4.0.1",
48
+ "@namzu/computer-use": "1.4.0",
47
49
  "@namzu/deepseek": "^1.1.0",
48
- "@namzu/ollama": "2.2.1",
49
50
  "@namzu/files": "1.1.0",
50
- "@namzu/openai": "1.5.0",
51
- "@namzu/anthropic": "4.0.1",
51
+ "@namzu/ollama": "2.2.1",
52
+ "@namzu/openai": "2.0.0",
52
53
  "@namzu/openrouter": "2.3.1",
53
- "@namzu/sdk": "^32.0.0"
54
+ "@namzu/sdk": "^33.0.0"
54
55
  },
55
56
  "devDependencies": {
56
57
  "@biomejs/biome": "^1.9.4",
@@ -1 +0,0 @@
1
- {"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../../src/commands/stubs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,YAAY,CAAA;AAa5D,eAAO,MAAM,aAAa,EAAE,UAI3B,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,EAAE,UAS1B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAAkC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stubs.js","sourceRoot":"","sources":["../../src/commands/stubs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,SAAS,WAAW,CAAC,SAAiB,EAAE,IAAY;IACnD,OAAO,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACxB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;YACnB,IAAI,EAAE,IAAI;YACV,SAAS;YACT,OAAO,EAAE,GAAG,SAAS,mBAAmB,IAAI,GAAG;SAC/C,CAAC,CAAA;QACF,OAAO,CAAC,CAAA;IACT,CAAC,CAAA;AACF,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAe;IACxC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,8CAA8C;IAC3D,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,sBAAsB,CAAC;CAClD,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAe;IACvC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,yCAAyC;IACtD,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QAC1B,GAAG,CAAC,SAAS,CAAC,IAAI,CACjB,wMAAwM,CACxM,CAAA;QACD,OAAO,CAAC,CAAA;IACT,CAAC;CACD,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAA0B,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA"}