@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.
- package/README.md +1 -1
- package/dist/adapter/navigator-adapter.d.ts +2 -1
- package/dist/adapter/navigator-adapter.d.ts.map +1 -1
- package/dist/adapter/navigator-adapter.js +31 -2
- package/dist/adapter/navigator-adapter.js.map +1 -1
- package/dist/cli/nav-chat.d.ts.map +1 -1
- package/dist/cli/nav-chat.js +57 -35
- package/dist/cli/nav-chat.js.map +1 -1
- package/dist/cli/nav-init.d.ts.map +1 -1
- package/dist/cli/nav-init.js +20 -0
- package/dist/cli/nav-init.js.map +1 -1
- package/dist/cli/nav-mend.js +5 -5
- package/dist/cli/nav-mend.js.map +1 -1
- package/dist/cli/nav-query.d.ts.map +1 -1
- package/dist/cli/nav-query.js +37 -4
- package/dist/cli/nav-query.js.map +1 -1
- package/dist/cli/nav-update.d.ts.map +1 -1
- package/dist/cli/nav-update.js +37 -4
- package/dist/cli/nav-update.js.map +1 -1
- package/dist/cli/resolve-nav.d.ts +11 -0
- package/dist/cli/resolve-nav.d.ts.map +1 -0
- package/dist/cli/resolve-nav.js +71 -0
- package/dist/cli/resolve-nav.js.map +1 -0
- package/dist/conversation/App.d.ts +6 -4
- package/dist/conversation/App.d.ts.map +1 -1
- package/dist/conversation/App.js +70 -65
- package/dist/conversation/App.js.map +1 -1
- package/dist/conversation/index.d.ts +7 -3
- package/dist/conversation/index.d.ts.map +1 -1
- package/dist/conversation/index.js.map +1 -1
- package/dist/harness/chibi-harness.d.ts.map +1 -1
- package/dist/harness/chibi-harness.js +13 -6
- package/dist/harness/chibi-harness.js.map +1 -1
- package/dist/harness/claude-code-harness.d.ts.map +1 -1
- package/dist/harness/claude-code-harness.js +65 -7
- package/dist/harness/claude-code-harness.js.map +1 -1
- package/dist/harness/index.d.ts +1 -1
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +1 -1
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/sandbox.d.ts +104 -20
- package/dist/harness/sandbox.d.ts.map +1 -1
- package/dist/harness/sandbox.js +261 -42
- package/dist/harness/sandbox.js.map +1 -1
- package/dist/harness/types.d.ts +4 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/interview/App.d.ts +2 -1
- package/dist/interview/App.d.ts.map +1 -1
- package/dist/interview/App.js +65 -57
- package/dist/interview/App.js.map +1 -1
- package/dist/interview/prompts.d.ts +1 -1
- package/dist/interview/prompts.d.ts.map +1 -1
- package/dist/interview/prompts.js +8 -5
- package/dist/interview/prompts.js.map +1 -1
- package/dist/tools/sandbox-query.d.ts +24 -0
- package/dist/tools/sandbox-query.d.ts.map +1 -0
- package/dist/tools/sandbox-query.js +172 -0
- package/dist/tools/sandbox-query.js.map +1 -0
- package/package.json +4 -1
package/dist/cli/nav-query.js
CHANGED
|
@@ -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("
|
|
53
|
-
.argument("
|
|
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 (
|
|
64
|
-
|
|
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":";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,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;
|
|
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":";
|
|
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"}
|
package/dist/cli/nav-update.js
CHANGED
|
@@ -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("
|
|
52
|
-
.argument("
|
|
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 (
|
|
58
|
-
|
|
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;
|
|
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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,gCAAgC;IAChC,IAAI,GAAG,EAAE,CAAC;QACR,yEAAyE;QACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;gBAC3D,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC1C,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,+DAA+D;QAC/D,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,OAAO,YAAY,CAAC;YACtB,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACtD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC3E,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,+CAA+C;IAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC5C,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC7E,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC/C,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -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
|
-
/**
|
|
17
|
-
|
|
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,
|
|
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,
|
|
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"}
|
package/dist/conversation/App.js
CHANGED
|
@@ -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,
|
|
161
|
-
|
|
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
|
-
//
|
|
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
|
-
|
|
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
|
|
210
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
226
|
-
|
|
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
|
-
//
|
|
255
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
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
|
-
|
|
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
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
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
|
-
//
|
|
411
|
-
const showBanner =
|
|
412
|
-
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
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
|