@autonav/core 1.12.1 → 2.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.
Files changed (59) hide show
  1. package/README.md +1 -1
  2. package/dist/adapter/navigator-adapter.d.ts +2 -1
  3. package/dist/adapter/navigator-adapter.d.ts.map +1 -1
  4. package/dist/adapter/navigator-adapter.js +31 -2
  5. package/dist/adapter/navigator-adapter.js.map +1 -1
  6. package/dist/cli/nav-chat.d.ts.map +1 -1
  7. package/dist/cli/nav-chat.js +57 -35
  8. package/dist/cli/nav-chat.js.map +1 -1
  9. package/dist/cli/nav-init.d.ts.map +1 -1
  10. package/dist/cli/nav-init.js +20 -0
  11. package/dist/cli/nav-init.js.map +1 -1
  12. package/dist/cli/nav-mend.js +5 -5
  13. package/dist/cli/nav-mend.js.map +1 -1
  14. package/dist/cli/nav-query.d.ts.map +1 -1
  15. package/dist/cli/nav-query.js +37 -4
  16. package/dist/cli/nav-query.js.map +1 -1
  17. package/dist/cli/nav-update.d.ts.map +1 -1
  18. package/dist/cli/nav-update.js +37 -4
  19. package/dist/cli/nav-update.js.map +1 -1
  20. package/dist/cli/resolve-nav.d.ts +11 -0
  21. package/dist/cli/resolve-nav.d.ts.map +1 -0
  22. package/dist/cli/resolve-nav.js +71 -0
  23. package/dist/cli/resolve-nav.js.map +1 -0
  24. package/dist/conversation/App.d.ts +6 -4
  25. package/dist/conversation/App.d.ts.map +1 -1
  26. package/dist/conversation/App.js +70 -65
  27. package/dist/conversation/App.js.map +1 -1
  28. package/dist/conversation/index.d.ts +7 -3
  29. package/dist/conversation/index.d.ts.map +1 -1
  30. package/dist/conversation/index.js.map +1 -1
  31. package/dist/harness/chibi-harness.d.ts.map +1 -1
  32. package/dist/harness/chibi-harness.js +13 -6
  33. package/dist/harness/chibi-harness.js.map +1 -1
  34. package/dist/harness/claude-code-harness.d.ts.map +1 -1
  35. package/dist/harness/claude-code-harness.js +65 -7
  36. package/dist/harness/claude-code-harness.js.map +1 -1
  37. package/dist/harness/index.d.ts +1 -1
  38. package/dist/harness/index.d.ts.map +1 -1
  39. package/dist/harness/index.js +1 -1
  40. package/dist/harness/index.js.map +1 -1
  41. package/dist/harness/sandbox.d.ts +104 -20
  42. package/dist/harness/sandbox.d.ts.map +1 -1
  43. package/dist/harness/sandbox.js +261 -42
  44. package/dist/harness/sandbox.js.map +1 -1
  45. package/dist/harness/types.d.ts +4 -0
  46. package/dist/harness/types.d.ts.map +1 -1
  47. package/dist/interview/App.d.ts +2 -1
  48. package/dist/interview/App.d.ts.map +1 -1
  49. package/dist/interview/App.js +65 -57
  50. package/dist/interview/App.js.map +1 -1
  51. package/dist/interview/prompts.d.ts +1 -1
  52. package/dist/interview/prompts.d.ts.map +1 -1
  53. package/dist/interview/prompts.js +8 -5
  54. package/dist/interview/prompts.js.map +1 -1
  55. package/dist/tools/sandbox-query.d.ts +24 -0
  56. package/dist/tools/sandbox-query.d.ts.map +1 -0
  57. package/dist/tools/sandbox-query.js +172 -0
  58. package/dist/tools/sandbox-query.js.map +1 -0
  59. package/package.json +4 -1
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env node
2
+ import * as fs from "node:fs";
3
+ import * as path from "node:path";
2
4
  import { Command } from "commander";
3
5
  import chalk from "chalk";
4
6
  import ora from "ora";
@@ -6,6 +8,7 @@ import { NavigatorAdapter } from "../adapter/index.js";
6
8
  import { loadNavigator, validateResponse, formatResponse, formatErrorMessage, formatWarningMessage, formatSuggestion, NavigatorLoadError, } from "../query-engine/index.js";
7
9
  import { HallucinationError } from "@autonav/communication-layer";
8
10
  import { resolveAndCreateHarness } from "../harness/index.js";
11
+ import { resolveNavigatorArg } from "./resolve-nav.js";
9
12
  /**
10
13
  * Parse a human-readable duration string into milliseconds
11
14
  * Supports formats: "30s", "1m", "1m30s", "90", "90000" (plain ms)
@@ -49,8 +52,8 @@ program
49
52
  .name("autonav query")
50
53
  .description("Query a Platform AI navigator")
51
54
  .version("1.0.0")
52
- .argument("<navigator>", "Path to the navigator directory")
53
- .argument("<question>", "Question to ask the navigator")
55
+ .argument("[navigator]", "Path to the navigator directory (auto-detects from cwd)")
56
+ .argument("[question]", "Question to ask the navigator")
54
57
  .option("--compact", "Compact output (answer + minimal sources)")
55
58
  .option("--json", "Full JSON output with all response fields")
56
59
  .option("--raw", "Output only the answer text, nothing else (for agent-to-agent use)")
@@ -60,8 +63,38 @@ program
60
63
  .option("--timeout <duration>", "Query timeout (e.g., 30s, 1m, 1m30s, or milliseconds)", parseDuration, 300000)
61
64
  .option("--verbose", "Show additional debug information")
62
65
  .option("--harness <type>", "Agent runtime to use (claude-code|chibi|opencode)")
63
- .action(async (navigator, question, options) => {
64
- await executeQuery(navigator, question, options);
66
+ .action(async (firstArg, secondArg, options) => {
67
+ let navigatorPath;
68
+ let question;
69
+ if (firstArg && secondArg) {
70
+ // Two args: navigator + question
71
+ navigatorPath = resolveNavigatorArg(firstArg);
72
+ question = secondArg;
73
+ }
74
+ else if (firstArg) {
75
+ // One arg: could be question (if cwd is navigator) or navigator path
76
+ const cwdConfig = path.join(process.cwd(), "config.json");
77
+ if (fs.existsSync(cwdConfig)) {
78
+ // cwd is a navigator, treat the arg as the question
79
+ navigatorPath = resolveNavigatorArg();
80
+ question = firstArg;
81
+ }
82
+ else {
83
+ // Not in a navigator dir — missing question arg
84
+ console.error("Error: Question is required\n");
85
+ console.error("Usage: autonav query <navigator> <question>");
86
+ console.error(" autonav query <question> (from inside a navigator)\n");
87
+ process.exit(1);
88
+ }
89
+ }
90
+ else {
91
+ // No args at all
92
+ console.error("Error: Question is required\n");
93
+ console.error("Usage: autonav query <navigator> <question>");
94
+ console.error(" autonav query <question> (from inside a navigator)\n");
95
+ process.exit(1);
96
+ }
97
+ await executeQuery(navigatorPath, question, options);
65
98
  });
66
99
  /**
67
100
  * Execute the query command
@@ -1 +1 @@
1
- {"version":3,"file":"nav-query.js","sourceRoot":"","sources":["../../src/cli/nav-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nav-query.js","sourceRoot":"","sources":["../../src/cli/nav-query.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"nav-update.d.ts","sourceRoot":"","sources":["../../src/cli/nav-update.ts"],"names":[],"mappings":";AAqLA,kEAAkE;AAClE,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvD"}
1
+ {"version":3,"file":"nav-update.d.ts","sourceRoot":"","sources":["../../src/cli/nav-update.ts"],"names":[],"mappings":";AAqNA,kEAAkE;AAClE,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvD"}
@@ -1,10 +1,13 @@
1
1
  #!/usr/bin/env node
2
+ import * as fs from "node:fs";
3
+ import * as path from "node:path";
2
4
  import { Command } from "commander";
3
5
  import chalk from "chalk";
4
6
  import ora from "ora";
5
7
  import { NavigatorAdapter } from "../adapter/index.js";
6
8
  import { loadNavigator, formatErrorMessage, NavigatorLoadError, } from "../query-engine/index.js";
7
9
  import { resolveAndCreateHarness } from "../harness/index.js";
10
+ import { resolveNavigatorArg } from "./resolve-nav.js";
8
11
  /**
9
12
  * Parse a human-readable duration string into milliseconds
10
13
  * Supports formats: "30s", "1m", "1m30s", "90", "90000" (plain ms)
@@ -48,14 +51,44 @@ program
48
51
  .name("autonav update")
49
52
  .description("Update a Platform AI navigator's documentation")
50
53
  .version("1.0.0")
51
- .argument("<navigator>", "Path to the navigator directory")
52
- .argument("<message>", "Update message or report")
54
+ .argument("[navigator]", "Path to the navigator directory (auto-detects from cwd)")
55
+ .argument("[message]", "Update message or report")
53
56
  .option("--timeout <duration>", "Update timeout (e.g., 30s, 1m, 1m30s, or milliseconds)", parseDuration, 120000 // 2 minutes default (longer than query since it may need to write files)
54
57
  )
55
58
  .option("--verbose", "Show additional debug information")
56
59
  .option("--harness <type>", "Agent runtime to use (claude-code|chibi|opencode)")
57
- .action(async (navigator, message, options) => {
58
- await executeUpdate(navigator, message, options);
60
+ .action(async (firstArg, secondArg, options) => {
61
+ let navigatorPath;
62
+ let message;
63
+ if (firstArg && secondArg) {
64
+ // Two args: navigator + message
65
+ navigatorPath = resolveNavigatorArg(firstArg);
66
+ message = secondArg;
67
+ }
68
+ else if (firstArg) {
69
+ // One arg: could be message (if cwd is navigator) or navigator path
70
+ const cwdConfig = path.join(process.cwd(), "config.json");
71
+ if (fs.existsSync(cwdConfig)) {
72
+ // cwd is a navigator, treat the arg as the message
73
+ navigatorPath = resolveNavigatorArg();
74
+ message = firstArg;
75
+ }
76
+ else {
77
+ // Not in a navigator dir — missing message arg
78
+ console.error("Error: Update message is required\n");
79
+ console.error("Usage: autonav update <navigator> <message>");
80
+ console.error(" autonav update <message> (from inside a navigator)\n");
81
+ process.exit(1);
82
+ }
83
+ }
84
+ else {
85
+ // No args at all
86
+ console.error("Error: Update message is required\n");
87
+ console.error("Usage: autonav update <navigator> <message>");
88
+ console.error(" autonav update <message> (from inside a navigator)\n");
89
+ process.exit(1);
90
+ }
91
+ await executeUpdate(navigatorPath, message, options);
59
92
  });
60
93
  /**
61
94
  * Execute the update command
@@ -1 +1 @@
1
- {"version":3,"file":"nav-update.js","sourceRoot":"","sources":["../../src/cli/nav-update.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAW9D;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,aAAa;IAE5C,wCAAwC;IACxC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACxD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,oDAAoD;IACpD,MAAM,OAAO,GAAG,2BAA2B,CAAC;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,6BAA6B,KAAK,sDAAsD,CACzF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtD,wDAAwD;IACxD,MAAM,OAAO,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;IAEhD,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO,GAAG,cAAc,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,8CAA8C,KAAK,GAAG,CAAC,CAAC;QACtE,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,aAAa,EAAE,iCAAiC,CAAC;KAC1D,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;KACjD,MAAM,CACL,sBAAsB,EACtB,wDAAwD,EACxD,aAAa,EACb,MAAM,CAAC,yEAAyE;CACjF;KACA,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;KACxD,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;KAC/E,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAAe,EAAE,OAA6B,EAAE,EAAE;IAClF,MAAM,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEL;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,aAAqB,EACrB,OAAe,EACf,OAA6B;IAE7B,IAAI,OAA2C,CAAC;IAEhD,IAAI,CAAC;QACH,uBAAuB;QACvB,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;QAE9C,2CAA2C;QAC3C,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;QAE/C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;QAClC,CAAC;QAED,2CAA2C;QAC3C,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAElD,sBAAsB;QACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;QAChC,OAAO,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;QAE7E,8BAA8B;QAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YACtD,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;YACnE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QAEnE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;QAClC,CAAC;QAED,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,kBAAkB;QAClB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,sCAAsC,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;QAClC,CAAC;QAED,+BAA+B;QAC/B,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAElB,IAAI,KAAK,CAAC,OAAO,EAAE,WAAW,KAAK,aAAa,EAAE,CAAC;gBACjD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBACpD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAEjD,4BAA4B;YAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,uCAAuC,aAAa,MAAM,OAAO,gBAAgB,CAAC,CAC7F,CAAC;gBACF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc;IACtC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"nav-update.js","sourceRoot":"","sources":["../../src/cli/nav-update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Resolve a navigator path from an optional CLI argument.
3
+ *
4
+ * Priority:
5
+ * 1. Explicit path/name argument (if provided)
6
+ * 2. Current working directory (if config.json exists)
7
+ * 3. Registry lookup by name (via resolveNavigatorPath from src/registry.ts)
8
+ * 4. Error with helpful message
9
+ */
10
+ export declare function resolveNavigatorArg(arg?: string): string;
11
+ //# sourceMappingURL=resolve-nav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-nav.d.ts","sourceRoot":"","sources":["../../src/cli/resolve-nav.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,wBAAgB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CA6DxD"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Resolve a navigator path from an optional CLI argument.
3
+ *
4
+ * Priority:
5
+ * 1. Explicit path/name argument (if provided)
6
+ * 2. Current working directory (if config.json exists)
7
+ * 3. Registry lookup by name (via resolveNavigatorPath from src/registry.ts)
8
+ * 4. Error with helpful message
9
+ */
10
+ import * as fs from "node:fs";
11
+ import * as path from "node:path";
12
+ import { resolveNavigatorPath } from "../registry.js";
13
+ export function resolveNavigatorArg(arg) {
14
+ // 1. Explicit argument provided
15
+ if (arg) {
16
+ // If it looks like a path (contains / or . or starts with ~), resolve it
17
+ if (arg.includes("/") || arg.startsWith(".")) {
18
+ const resolved = path.resolve(process.cwd(), arg);
19
+ const configPath = path.join(resolved, "config.json");
20
+ if (!fs.existsSync(configPath)) {
21
+ console.error(`Error: No navigator found at: ${resolved}`);
22
+ console.error(` Missing config.json\n`);
23
+ console.error(`Create a new navigator with: autonav init <name>\n`);
24
+ process.exit(1);
25
+ }
26
+ return resolved;
27
+ }
28
+ // Bare name — try registry first, then resolve relative to cwd
29
+ const registryPath = resolveNavigatorPath(arg);
30
+ if (registryPath) {
31
+ const configPath = path.join(registryPath, "config.json");
32
+ if (fs.existsSync(configPath)) {
33
+ return registryPath;
34
+ }
35
+ }
36
+ // Try as relative directory name
37
+ const relative = path.resolve(process.cwd(), arg);
38
+ const configPath = path.join(relative, "config.json");
39
+ if (fs.existsSync(configPath)) {
40
+ return relative;
41
+ }
42
+ console.error(`Error: Navigator not found: ${arg}`);
43
+ console.error(`\n Not found in registry or as a local directory.\n`);
44
+ console.error(`Run from inside a navigator directory, or specify a path:`);
45
+ console.error(` autonav chat ./my-navigator`);
46
+ console.error(` autonav chat my-navigator (if registered)\n`);
47
+ process.exit(1);
48
+ }
49
+ // 2. No argument — check if cwd is a navigator
50
+ const cwd = process.cwd();
51
+ const cwdConfig = path.join(cwd, "config.json");
52
+ if (fs.existsSync(cwdConfig)) {
53
+ try {
54
+ const content = fs.readFileSync(cwdConfig, "utf-8");
55
+ const parsed = JSON.parse(content);
56
+ if (parsed.name) {
57
+ return cwd;
58
+ }
59
+ }
60
+ catch {
61
+ // Invalid config.json, fall through
62
+ }
63
+ }
64
+ // 3. Nothing found
65
+ console.error(`Error: No navigator found.`);
66
+ console.error(`\nRun from inside a navigator directory, or specify a path:`);
67
+ console.error(` autonav chat ./my-navigator`);
68
+ console.error(` autonav chat my-navigator (if registered)\n`);
69
+ process.exit(1);
70
+ }
71
+ //# sourceMappingURL=resolve-nav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-nav.js","sourceRoot":"","sources":["../../src/cli/resolve-nav.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * both Claude Code and chibi runtimes. Renders themed UI with markdown
6
6
  * support, matrix-style activity animation, and cohesive styling.
7
7
  */
8
- import { type Harness } from "../harness/index.js";
8
+ import { type Harness, type SandboxConfig } from "../harness/index.js";
9
9
  interface ConversationAppProps {
10
10
  navigatorName: string;
11
11
  navigatorPath: string;
@@ -13,11 +13,13 @@ interface ConversationAppProps {
13
13
  knowledgeBasePath: string;
14
14
  harness?: Harness;
15
15
  mcpServers?: Record<string, unknown>;
16
- /** Whether sandbox is enabled for chat (default: true) */
17
- sandboxEnabled?: boolean;
16
+ /** Full sandbox config for chat (undefined = no sandbox) */
17
+ sandboxConfig?: SandboxConfig;
18
+ /** CLI commands the navigator is allowed to run without permission prompts */
19
+ allowedCommands?: string[];
18
20
  /** Raw config.json content for config-aware prompts */
19
21
  configJson?: string;
20
22
  }
21
- export declare function ConversationApp({ navigatorName, navigatorPath, navigatorSystemPrompt, knowledgeBasePath, harness, mcpServers, sandboxEnabled, configJson, }: ConversationAppProps): import("react/jsx-runtime").JSX.Element;
23
+ export declare function ConversationApp({ navigatorName, navigatorPath, navigatorSystemPrompt, knowledgeBasePath, harness, mcpServers, sandboxConfig, allowedCommands, configJson, }: ConversationAppProps): import("react/jsx-runtime").JSX.Element;
22
24
  export {};
23
25
  //# sourceMappingURL=App.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/conversation/App.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,KAAK,OAAO,EAA0C,MAAM,qBAAqB,CAAC;AA8L3F,UAAU,oBAAoB;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,0DAA0D;IAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,OAAO,EACP,UAAU,EACV,cAAqB,EACrB,UAAU,GACX,EAAE,oBAAoB,2CAiYtB"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/conversation/App.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,KAAK,OAAO,EAAuB,KAAK,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AA8L/G,UAAU,oBAAoB;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,8EAA8E;IAC9E,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,OAAO,EACP,UAAU,EACV,aAAa,EACb,eAAe,EACf,UAAU,GACX,EAAE,oBAAoB,2CAgZtB"}
@@ -7,7 +7,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  * support, matrix-style activity animation, and cohesive styling.
8
8
  */
9
9
  import { useState, useCallback, useRef, useEffect } from "react";
10
- import { Box, Text, useApp, useInput } from "ink";
10
+ import { Box, Text, Static, useApp, useInput } from "ink";
11
11
  import { ClaudeCodeHarness } from "../harness/index.js";
12
12
  import { buildConversationSystemPrompt } from "./prompts.js";
13
13
  import { ChatBanner, ChatInput, MarkdownText, UserResponse, SystemMessage, ActivityIndicator, Divider, colors, boxChars, } from "../interview/ui/index.js";
@@ -157,8 +157,12 @@ function pickMood(toolName, input, state) {
157
157
  return randomFrom(MOOD_THOROUGH);
158
158
  return randomFrom(MOOD_EXPLORING);
159
159
  }
160
- export function ConversationApp({ navigatorName, navigatorPath, navigatorSystemPrompt, knowledgeBasePath, harness, mcpServers, sandboxEnabled = true, configJson, }) {
161
- const [messages, setMessages] = useState([]);
160
+ export function ConversationApp({ navigatorName, navigatorPath, navigatorSystemPrompt, knowledgeBasePath, harness, mcpServers, sandboxConfig, allowedCommands, configJson, }) {
161
+ // Finalized messages go into <Static> — printed once, never repainted.
162
+ // Only the in-progress streaming message lives in the dynamic region.
163
+ const [finalizedMessages, setFinalizedMessages] = useState([]);
164
+ const [streamingMessage, setStreamingMessage] = useState(null);
165
+ const msgIdRef = useRef(0);
162
166
  const [input, setInput] = useState("");
163
167
  const [isLoading, setIsLoading] = useState(false);
164
168
  const [activity, setActivity] = useState(null);
@@ -172,6 +176,15 @@ export function ConversationApp({ navigatorName, navigatorPath, navigatorSystemP
172
176
  const exitHintTimerRef = useRef(null);
173
177
  const [exitHint, setExitHint] = useState(false);
174
178
  const { exit } = useApp();
179
+ /** Finalize the current streaming message — move it to the static region. */
180
+ const finalizeStreamingMessage = useCallback(() => {
181
+ setStreamingMessage((prev) => {
182
+ if (prev) {
183
+ setFinalizedMessages((msgs) => [...msgs, prev]);
184
+ }
185
+ return null;
186
+ });
187
+ }, []);
175
188
  // Build the full system prompt
176
189
  const systemPrompt = buildConversationSystemPrompt(navigatorName, navigatorSystemPrompt, knowledgeBasePath, configJson);
177
190
  // Process events from harness session
@@ -192,11 +205,13 @@ export function ConversationApp({ navigatorName, navigatorPath, navigatorSystemP
192
205
  const mood = pickMood(event.name, event.input, moodRef.current);
193
206
  setActivity({ type: "tool", detail: mood });
194
207
  hadToolsSinceTextRef.current = true;
195
- // Format tool params for display
208
+ // Tool activity lines are ephemeral — they go directly into finalized
209
+ // (static) so they don't trigger repaints of the streaming region.
196
210
  const paramSummary = formatToolParams(event.name, event.input);
197
- setMessages((prev) => [
211
+ const id = ++msgIdRef.current;
212
+ setFinalizedMessages((prev) => [
198
213
  ...prev,
199
- { role: "activity", content: paramSummary },
214
+ { role: "activity", content: paramSummary, id },
200
215
  ]);
201
216
  }
202
217
  else if (event.type === "tool_result" && event.isError) {
@@ -206,11 +221,10 @@ export function ConversationApp({ navigatorName, navigatorPath, navigatorSystemP
206
221
  else if (event.type === "text") {
207
222
  if (event.text && event.text.trim()) {
208
223
  setActivity(null);
209
- // If tools ran since last text, finalize previous message
210
- // and start a new one so tool calls appear between text blocks
224
+ // If tools ran since last text, finalize the current streaming
225
+ // message so it lands in Static before starting a new one.
211
226
  if (hadToolsSinceTextRef.current && streamingTextRef.current) {
212
- // Finalize the previous streaming message
213
- setMessages((prev) => prev.map((m) => m.streaming ? { ...m, streaming: false } : m));
227
+ finalizeStreamingMessage();
214
228
  streamingTextRef.current = "";
215
229
  }
216
230
  hadToolsSinceTextRef.current = false;
@@ -222,37 +236,14 @@ export function ConversationApp({ navigatorName, navigatorPath, navigatorSystemP
222
236
  streamingTextRef.current = event.text;
223
237
  }
224
238
  const accumulated = streamingTextRef.current;
225
- setMessages((prev) => {
226
- // Find existing streaming message to update (search from end)
227
- let lastStreamingIdx = -1;
228
- for (let j = prev.length - 1; j >= 0; j--) {
229
- if (prev[j]?.role === "assistant" && prev[j]?.streaming) {
230
- lastStreamingIdx = j;
231
- break;
232
- }
233
- }
234
- if (lastStreamingIdx >= 0) {
235
- // Update existing streaming message
236
- const updated = [...prev];
237
- updated[lastStreamingIdx] = {
238
- role: "assistant",
239
- content: accumulated,
240
- streaming: true,
241
- };
242
- return updated;
243
- }
244
- // Create new streaming message
245
- return [
246
- ...prev,
247
- { role: "assistant", content: accumulated, streaming: true },
248
- ];
249
- });
239
+ const id = msgIdRef.current; // keep same id while streaming same block
240
+ setStreamingMessage({ role: "assistant", content: accumulated, id });
250
241
  }
251
242
  }
252
243
  else if (event.type === "result") {
253
244
  debugLog("Result received:", event.success);
254
- // Mark streaming message as complete
255
- setMessages((prev) => prev.map((m) => m.streaming ? { ...m, streaming: false } : m));
245
+ // Move the streaming message into the static region.
246
+ finalizeStreamingMessage();
256
247
  break;
257
248
  }
258
249
  }
@@ -267,14 +258,16 @@ export function ConversationApp({ navigatorName, navigatorPath, navigatorSystemP
267
258
  setActivity(null);
268
259
  setIsLoading(false);
269
260
  }
270
- }, []);
261
+ }, [finalizeStreamingMessage]);
271
262
  // Handle special commands
272
263
  const handleCommand = useCallback((command) => {
273
264
  const cmd = command.toLowerCase().trim();
274
265
  if (cmd === "/help") {
275
- setMessages((prev) => [
266
+ const id = ++msgIdRef.current;
267
+ setFinalizedMessages((prev) => [
276
268
  ...prev,
277
269
  {
270
+ id,
278
271
  role: "system",
279
272
  content: `Available commands:
280
273
  /help - Show this help message
@@ -288,9 +281,11 @@ Or just type naturally to chat with your navigator.`,
288
281
  return true;
289
282
  }
290
283
  if (cmd === "/status") {
291
- setMessages((prev) => [
284
+ const id = ++msgIdRef.current;
285
+ setFinalizedMessages((prev) => [
292
286
  ...prev,
293
287
  {
288
+ id,
294
289
  role: "system",
295
290
  content: `Navigator: ${navigatorName}
296
291
  Path: ${navigatorPath}
@@ -306,12 +301,10 @@ Model: ${CONVERSATION_MODEL}`,
306
301
  sessionRef.current.close().catch(() => { });
307
302
  sessionRef.current = null;
308
303
  }
309
- setMessages([
310
- {
311
- role: "system",
312
- content: "Conversation cleared. Start fresh!",
313
- },
314
- ]);
304
+ const id = ++msgIdRef.current;
305
+ setFinalizedMessages([{ id, role: "system", content: "Conversation cleared. Start fresh!" }]);
306
+ setStreamingMessage(null);
307
+ streamingTextRef.current = "";
315
308
  return true;
316
309
  }
317
310
  if (cmd === "/exit") {
@@ -334,8 +327,9 @@ Model: ${CONVERSATION_MODEL}`,
334
327
  return;
335
328
  }
336
329
  }
337
- // Add user message to history
338
- setMessages((prev) => [...prev, { role: "user", content: value }]);
330
+ // Add user message to history (finalized immediately — never needs repainting)
331
+ const id = ++msgIdRef.current;
332
+ setFinalizedMessages((prev) => [...prev, { id, role: "user", content: value }]);
339
333
  setIsLoading(true);
340
334
  setError(null);
341
335
  try {
@@ -347,18 +341,29 @@ Model: ${CONVERSATION_MODEL}`,
347
341
  }
348
342
  else {
349
343
  // First message: create new session
344
+ // Map allowedCommands → SDK allowedTools so the permission system
345
+ // doesn't prompt for these. Format: "Bash(command *)" allows any
346
+ // bash invocation starting with that command.
347
+ const allowedTools = allowedCommands?.length
348
+ ? allowedCommands.map((cmd) => `Bash(${cmd}:*)`)
349
+ : undefined;
350
+ debugLog("allowedCommands prop:", allowedCommands);
351
+ debugLog("allowedTools for SDK:", allowedTools);
352
+ // Tell the SDK about all paths nono allows so the SDK's own
353
+ // directory scoping doesn't block access that nono permits.
354
+ const additionalDirectories = sandboxConfig?.readPaths
355
+ ?.concat(sandboxConfig?.writePaths ?? [])
356
+ .filter((p) => p !== navigatorPath);
350
357
  const session = harnessRef.current.run({
351
358
  model: CONVERSATION_MODEL,
352
359
  systemPrompt,
353
360
  permissionMode: "acceptEdits",
354
361
  cwd: navigatorPath,
355
362
  mcpServers,
356
- // Per-nav sandbox: chat defaults to enabled (read-only access)
357
- ...(sandboxEnabled ? {
358
- sandbox: {
359
- readPaths: [navigatorPath],
360
- },
361
- } : {}),
363
+ allowedTools,
364
+ additionalDirectories,
365
+ // Per-nav sandbox: full config from nav-chat.ts
366
+ ...(sandboxConfig ? { sandbox: sandboxConfig } : {}),
362
367
  }, value);
363
368
  sessionRef.current = session;
364
369
  events = session;
@@ -407,16 +412,16 @@ Model: ${CONVERSATION_MODEL}`,
407
412
  clearTimeout(exitHintTimerRef.current);
408
413
  };
409
414
  }, []);
410
- // Determine if we should show the banner (only when no messages yet)
411
- const showBanner = messages.length === 0;
412
- return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [showBanner && (_jsx(ChatBanner, { navigatorName: navigatorName, model: CONVERSATION_MODEL })), messages.map((msg, i) => {
413
- // Check if this is the last message before a role switch (for dividers)
414
- const next = messages[i + 1];
415
- const isEndOfTurn = msg.role === "assistant" &&
416
- !msg.streaming &&
417
- next !== undefined &&
418
- next.role !== "activity";
419
- return (_jsxs(Box, { flexDirection: "column", children: [msg.role === "user" ? (_jsx(UserResponse, { content: msg.content })) : msg.role === "assistant" ? (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 0, children: _jsxs(Text, { color: colors.accent, children: [boxChars.single.vertical, " ", navigatorName] }) }), _jsx(Box, { marginLeft: 2, children: _jsx(MarkdownText, { content: msg.content }) })] })) : msg.role === "activity" ? (_jsx(Box, { marginLeft: 4, marginBottom: 0, children: _jsxs(Text, { color: colors.dimmed, children: [boxChars.single.vertical, " ", "\u2699\uFE0F", " ", msg.content] }) })) : (_jsx(SystemMessage, { content: msg.content })), isEndOfTurn && _jsx(Divider, {})] }, i));
420
- }), error && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: colors.error, children: ["Error: ", error] }) })), isLoading && activity && (_jsx(Box, { marginBottom: 1, marginLeft: 2, children: _jsx(ActivityIndicator, { lines: 1, width: 30, message: activity.type === "thinking" ? "thinking..." : (activity.detail ?? "working...") }) })), exitHint && (_jsx(Box, { marginBottom: 0, children: _jsxs(Text, { color: colors.warning, children: ["Press Ctrl+", exitHint === "d" ? "D" : "C", " again to exit"] }) })), !isLoading && (_jsx(ChatInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "Type a message..." }))] }));
415
+ // Show banner only until the first message arrives
416
+ const showBanner = finalizedMessages.length === 0 && streamingMessage === null;
417
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Static, { items: finalizedMessages, children: (msg) => {
418
+ const isEndOfTurn = msg.role === "assistant" &&
419
+ (() => {
420
+ const idx = finalizedMessages.indexOf(msg);
421
+ const next = finalizedMessages[idx + 1];
422
+ return next !== undefined && next.role !== "activity";
423
+ })();
424
+ return (_jsxs(Box, { flexDirection: "column", children: [msg.role === "user" ? (_jsx(UserResponse, { content: msg.content })) : msg.role === "assistant" ? (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 0, children: _jsxs(Text, { color: colors.accent, children: [boxChars.single.vertical, " ", navigatorName] }) }), _jsx(Box, { marginLeft: 2, children: _jsx(MarkdownText, { content: msg.content }) })] })) : msg.role === "activity" ? (_jsx(Box, { marginLeft: 4, marginBottom: 0, children: _jsxs(Text, { color: colors.dimmed, children: [boxChars.single.vertical, " ", "\u2699\uFE0F", " ", msg.content] }) })) : (_jsx(SystemMessage, { content: msg.content })), isEndOfTurn && _jsx(Divider, {})] }, msg.id));
425
+ } }), showBanner && (_jsx(ChatBanner, { navigatorName: navigatorName, model: CONVERSATION_MODEL })), streamingMessage && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 0, children: _jsxs(Text, { color: colors.accent, children: [boxChars.single.vertical, " ", navigatorName] }) }), _jsx(Box, { marginLeft: 2, children: _jsx(MarkdownText, { content: streamingMessage.content }) })] })), error && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: colors.error, children: ["Error: ", error] }) })), isLoading && activity && (_jsx(Box, { marginBottom: 1, marginLeft: 2, children: _jsx(ActivityIndicator, { lines: 1, width: 30, message: activity.type === "thinking" ? "thinking..." : (activity.detail ?? "working...") }) })), exitHint && (_jsx(Box, { marginBottom: 0, children: _jsxs(Text, { color: colors.warning, children: ["Press Ctrl+", exitHint === "d" ? "D" : "C", " again to exit"] }) })), !isLoading && (_jsx(ChatInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "Type a message..." }))] }));
421
426
  }
422
427
  //# sourceMappingURL=App.js.map