@namzu/cli 22.0.0 → 22.0.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @namzu/cli
2
2
 
3
+ ## 22.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 8c6190e: Show `namzu resume <id>` on exit when the executable on PATH matches the running CLI. Preserve explicit executable paths for alternate installations and source launches, and include a directory change only when the conversation uses a different working directory.
8
+
3
9
  ## 22.0.0
4
10
 
5
11
  ### Major Changes
package/dist/bin.js CHANGED
@@ -2,16 +2,12 @@
2
2
  import { fileURLToPath } from 'node:url';
3
3
  import { runCli } from './cli.js';
4
4
  import { EXIT_INTERNAL_ERROR } from './exit-codes.js';
5
- // The invoked module, rather than a PATH lookup, owns the resume address. A
6
- // source launch must retain its Node loader; the distributed JS needs none.
5
+ import { resumeInvocation } from './resume-invocation.js';
6
+ // Preserve source loaders and alternate installations when the public command differs.
7
7
  const entrypoint = fileURLToPath(import.meta.url);
8
8
  runCli({
9
9
  argv: process.argv,
10
- resumeCommand: [
11
- process.execPath,
12
- ...(entrypoint.endsWith('.ts') ? process.execArgv : []),
13
- entrypoint,
14
- ],
10
+ resumeCommand: resumeInvocation(entrypoint),
15
11
  }).then((code) => {
16
12
  process.exit(code);
17
13
  }, (err) => {
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,4EAA4E;AAC5E,4EAA4E;AAC5E,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,CAAC;IACN,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,aAAa,EAAE;QACd,OAAO,CAAC,QAAQ;QAChB,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,UAAU;KACV;CACD,CAAC,CAAC,IAAI,CACN,CAAC,IAAI,EAAE,EAAE;IACR,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACnB,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;IACP,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC7E,CAAA;IACD,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;AAClC,CAAC,CACD,CAAA"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,uFAAuF;AACvF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,CAAC;IACN,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,aAAa,EAAE,gBAAgB,CAAC,UAAU,CAAC;CAC3C,CAAC,CAAC,IAAI,CACN,CAAC,IAAI,EAAE,EAAE;IACR,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACnB,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;IACP,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC7E,CAAA;IACD,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;AAClC,CAAC,CACD,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Prefer the public command only when PATH resolves to this exact executable. */
2
+ export declare function resumeInvocation(entrypoint: string, path?: string): readonly [string, ...string[]];
3
+ //# sourceMappingURL=resume-invocation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume-invocation.d.ts","sourceRoot":"","sources":["../src/resume-invocation.ts"],"names":[],"mappings":"AAGA,kFAAkF;AAClF,wBAAgB,gBAAgB,CAC/B,UAAU,EAAE,MAAM,EAClB,IAAI,SAAyB,GAC3B,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAgBhC"}
@@ -0,0 +1,24 @@
1
+ import { constants, accessSync, realpathSync } from 'node:fs';
2
+ import { delimiter, isAbsolute, join } from 'node:path';
3
+ /** Prefer the public command only when PATH resolves to this exact executable. */
4
+ export function resumeInvocation(entrypoint, path = process.env.PATH ?? '') {
5
+ if (!entrypoint.endsWith('.ts') && process.platform !== 'win32') {
6
+ for (const directory of path.split(delimiter)) {
7
+ // Relative PATH entries would change meaning after a directory change.
8
+ if (!isAbsolute(directory))
9
+ break;
10
+ const candidate = join(directory, 'namzu');
11
+ try {
12
+ accessSync(candidate, constants.X_OK);
13
+ if (realpathSync(candidate) === realpathSync(entrypoint))
14
+ return ['namzu'];
15
+ break;
16
+ }
17
+ catch {
18
+ // Continue past directories without an executable namzu.
19
+ }
20
+ }
21
+ }
22
+ return [process.execPath, ...(entrypoint.endsWith('.ts') ? process.execArgv : []), entrypoint];
23
+ }
24
+ //# sourceMappingURL=resume-invocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume-invocation.js","sourceRoot":"","sources":["../src/resume-invocation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEvD,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAC/B,UAAkB,EAClB,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IAE7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjE,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,uEAAuE;YACvE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,MAAK;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAC1C,IAAI,CAAC;gBACJ,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;gBACrC,IAAI,YAAY,CAAC,SAAS,CAAC,KAAK,YAAY,CAAC,UAAU,CAAC;oBAAE,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC1E,MAAK;YACN,CAAC;YAAC,MAAM,CAAC;gBACR,yDAAyD;YAC1D,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAA;AAC/F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"exit-summary.d.ts","sourceRoot":"","sources":["../../src/tui/exit-summary.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,mBAAmB;IACnC,gGAAgG;IAChG,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,sFAAsF;IACtF,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;CACjD;AAQD,6EAA6E;AAC7E,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,UAAU,GAAE,mBAAwB,GAClC,MAAM,CAOR"}
1
+ {"version":3,"file":"exit-summary.d.ts","sourceRoot":"","sources":["../../src/tui/exit-summary.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,mBAAmB;IACnC,gGAAgG;IAChG,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,sFAAsF;IACtF,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;CACjD;AAQD,6EAA6E;AAC7E,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,UAAU,GAAE,mBAAwB,GAClC,MAAM,CAQR"}
@@ -12,7 +12,7 @@ export function formatTuiExitSummary(summary, invocation = {}) {
12
12
  const command = [...(invocation.command ?? ['namzu']), 'resume', summary.conversationId]
13
13
  .map(shellWord)
14
14
  .join(' ');
15
- const directory = invocation.cwd ? `cd ${shellWord(invocation.cwd)} && ` : '';
15
+ const directory = invocation.cwd && invocation.cwd !== process.cwd() ? `cd ${shellWord(invocation.cwd)} && ` : '';
16
16
  return `To resume this conversation, run: ${directory}${command}\n`;
17
17
  }
18
18
  //# sourceMappingURL=exit-summary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exit-summary.js","sourceRoot":"","sources":["../../src/tui/exit-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAa3D,SAAS,SAAS,CAAC,MAAc;IAChC,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACzC,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACxD,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAA;AAC3C,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CACnC,OAA8B,EAC9B,aAAkC,EAAE;IAEpC,IAAI,CAAC,OAAO,EAAE,cAAc;QAAE,OAAO,EAAE,CAAA;IACvC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC;SACtF,GAAG,CAAC,SAAS,CAAC;SACd,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7E,OAAO,qCAAqC,SAAS,GAAG,OAAO,IAAI,CAAA;AACpE,CAAC"}
1
+ {"version":3,"file":"exit-summary.js","sourceRoot":"","sources":["../../src/tui/exit-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAa3D,SAAS,SAAS,CAAC,MAAc;IAChC,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACzC,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACxD,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAA;AAC3C,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CACnC,OAA8B,EAC9B,aAAkC,EAAE;IAEpC,IAAI,CAAC,OAAO,EAAE,cAAc;QAAE,OAAO,EAAE,CAAA;IACvC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC;SACtF,GAAG,CAAC,SAAS,CAAC;SACd,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,SAAS,GACd,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IAChG,OAAO,qCAAqC,SAAS,GAAG,OAAO,IAAI,CAAA;AACpE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namzu/cli",
3
- "version": "22.0.0",
3
+ "version": "22.0.1",
4
4
  "description": "Interactive and headless terminal agent for Namzu, with provider discovery, durable sessions, tools and diagnostics.",
5
5
  "keywords": [
6
6
  "namzu",
@@ -46,8 +46,8 @@
46
46
  "react": "19.2.6",
47
47
  "string-width": "8.2.1",
48
48
  "yaml": "^2.9.0",
49
- "@namzu/anthropic": "5.0.0",
50
49
  "@namzu/computer-use": "1.4.2",
50
+ "@namzu/anthropic": "5.0.0",
51
51
  "@namzu/deepseek": "^1.2.0",
52
52
  "@namzu/files": "1.1.0",
53
53
  "@namzu/ollama": "2.2.2",