@autonav/core 1.12.0 → 2.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.
- 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 +21 -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 +58 -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 +5 -1
- package/dist/harness/chibi-harness.d.ts.map +1 -1
- package/dist/harness/chibi-harness.js +31 -16
- 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/interview/App.js
CHANGED
|
@@ -5,7 +5,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
5
5
|
* Uses the harness abstraction for LLM communication.
|
|
6
6
|
*/
|
|
7
7
|
import { useState, useEffect, useCallback, useRef } from "react";
|
|
8
|
-
import { Box, Text, useApp, useInput } from "ink";
|
|
8
|
+
import { Box, Text, Static, useApp, useInput } from "ink";
|
|
9
9
|
import TextInput from "ink-text-input";
|
|
10
10
|
import { getInterviewSystemPrompt, parseNavigatorConfig, } from "./prompts.js";
|
|
11
11
|
import { saveProgress, clearProgress } from "./progress.js";
|
|
@@ -26,7 +26,7 @@ const CONFIG_GENERATION_STEPS = [
|
|
|
26
26
|
{ key: "scope", label: "Setting scope..." },
|
|
27
27
|
{ key: "knowledgeStructure", label: "Organizing knowledge structure..." },
|
|
28
28
|
{ key: "audience", label: "Identifying audience..." },
|
|
29
|
-
{ key: "
|
|
29
|
+
{ key: "sandbox", label: "Configuring sandbox..." },
|
|
30
30
|
{ key: "directories", label: "Suggesting directories..." },
|
|
31
31
|
{ key: "claudeMd", label: "Generating CLAUDE.md..." },
|
|
32
32
|
];
|
|
@@ -62,15 +62,15 @@ async function generateConfigFields(conversationHistory, systemPrompt, name, onP
|
|
|
62
62
|
debugLog(" - Extracting audience...");
|
|
63
63
|
const audience = await extractField("Based on the conversation, describe who the navigator serves and how communication style should adapt. Output ONLY the description. If not discussed, output 'default'.");
|
|
64
64
|
onProgress(5, CONFIG_GENERATION_STEPS[4].label);
|
|
65
|
-
debugLog(" - Extracting
|
|
66
|
-
const
|
|
65
|
+
debugLog(" - Extracting sandbox...");
|
|
66
|
+
const sandbox = await extractField("Based on the conversation, describe the navigator's sandbox and permissions preferences: file access level (read-only or read+write), network access needs, required CLI tools, and per-operation settings. Output ONLY the description. If not discussed, output 'default'.");
|
|
67
67
|
onProgress(6, CONFIG_GENERATION_STEPS[5].label);
|
|
68
68
|
debugLog(" - Extracting suggestedDirectories...");
|
|
69
69
|
const suggestedDirsRaw = await extractField("Based on the conversation, list the suggested directories for this navigator as a comma-separated list (e.g., 'knowledge, projects, archive'). Output ONLY the comma-separated list. If not discussed, output 'knowledge'.");
|
|
70
70
|
// Generate claudeMd last (largest field)
|
|
71
71
|
onProgress(7, CONFIG_GENERATION_STEPS[6].label);
|
|
72
72
|
debugLog(" - Generating claudeMd...");
|
|
73
|
-
const claudeMd = await extractField(`Generate the complete CLAUDE.md file for the "${name}" navigator based on the conversation. Output ONLY the raw markdown content, starting with "# ${name}". Include sections for: Purpose, Critical Boundaries (if any), Scope, Knowledge Structure, Communication Style, Grounding Rules, and
|
|
73
|
+
const claudeMd = await extractField(`Generate the complete CLAUDE.md file for the "${name}" navigator based on the conversation. Output ONLY the raw markdown content, starting with "# ${name}". Include sections for: Purpose, Critical Boundaries (if any), Scope, Knowledge Structure, Communication Style, Grounding Rules, and Sandbox & Permissions. Make it comprehensive based on everything discussed.`);
|
|
74
74
|
// Parse suggestedDirectories from comma-separated string
|
|
75
75
|
const suggestedDirectories = suggestedDirsRaw
|
|
76
76
|
.split(",")
|
|
@@ -84,14 +84,16 @@ async function generateConfigFields(conversationHistory, systemPrompt, name, onP
|
|
|
84
84
|
// Only include optional fields if they have meaningful values
|
|
85
85
|
...(knowledgeStructure !== "default" && { knowledgeStructure }),
|
|
86
86
|
...(audience !== "default" && { audience }),
|
|
87
|
-
...(
|
|
87
|
+
...(sandbox !== "default" && { sandbox }),
|
|
88
88
|
...(suggestedDirectories.length > 0 && { suggestedDirectories }),
|
|
89
89
|
};
|
|
90
90
|
}
|
|
91
91
|
export function InterviewApp({ name, navigatorPath, packContext, analysisContext, initialMessages, onComplete, harness, }) {
|
|
92
92
|
// Get the system prompt, customized for pack or analysis if provided
|
|
93
93
|
const systemPrompt = getInterviewSystemPrompt(packContext, analysisContext);
|
|
94
|
-
const
|
|
94
|
+
const msgIdRef = useRef(initialMessages?.length || 0);
|
|
95
|
+
const [finalizedMessages, setFinalizedMessages] = useState(initialMessages?.map((m, i) => ({ ...m, id: i + 1 })) || []);
|
|
96
|
+
const [streamingMessage, setStreamingMessage] = useState(null);
|
|
95
97
|
const [input, setInput] = useState("");
|
|
96
98
|
// Don't start loading when resuming - we already have messages to display
|
|
97
99
|
const [isLoading, setIsLoading] = useState(!initialMessages?.length);
|
|
@@ -116,28 +118,9 @@ export function InterviewApp({ name, navigatorPath, packContext, analysisContext
|
|
|
116
118
|
const text = event.text;
|
|
117
119
|
if (text) {
|
|
118
120
|
fullText = text;
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
{ role: "assistant", content: text },
|
|
123
|
-
];
|
|
124
|
-
// Save progress after assistant message
|
|
125
|
-
try {
|
|
126
|
-
const progress = {
|
|
127
|
-
navigatorName: name,
|
|
128
|
-
messages: newMessages,
|
|
129
|
-
packContext,
|
|
130
|
-
analysisContext,
|
|
131
|
-
lastSaved: new Date().toISOString(),
|
|
132
|
-
};
|
|
133
|
-
saveProgress(navigatorPath, progress);
|
|
134
|
-
debugLog("Progress saved after assistant message:", newMessages.length, "messages");
|
|
135
|
-
}
|
|
136
|
-
catch (err) {
|
|
137
|
-
debugLog("Failed to save progress:", err);
|
|
138
|
-
}
|
|
139
|
-
return newMessages;
|
|
140
|
-
});
|
|
121
|
+
// Update streaming message (live region only)
|
|
122
|
+
const id = msgIdRef.current; // reuse same id while streaming
|
|
123
|
+
setStreamingMessage({ role: "assistant", content: text, id });
|
|
141
124
|
}
|
|
142
125
|
}
|
|
143
126
|
else if (event.type === "result") {
|
|
@@ -145,8 +128,31 @@ export function InterviewApp({ name, navigatorPath, packContext, analysisContext
|
|
|
145
128
|
break;
|
|
146
129
|
}
|
|
147
130
|
}
|
|
148
|
-
//
|
|
131
|
+
// Finalize: move streaming message to finalized list
|
|
149
132
|
if (fullText) {
|
|
133
|
+
const finalId = ++msgIdRef.current;
|
|
134
|
+
const finalMsg = { role: "assistant", content: fullText, id: finalId };
|
|
135
|
+
setStreamingMessage(null);
|
|
136
|
+
setFinalizedMessages((prev) => {
|
|
137
|
+
const newMessages = [...prev, finalMsg];
|
|
138
|
+
// Save progress after assistant message
|
|
139
|
+
try {
|
|
140
|
+
const progress = {
|
|
141
|
+
navigatorName: name,
|
|
142
|
+
messages: newMessages,
|
|
143
|
+
packContext,
|
|
144
|
+
analysisContext,
|
|
145
|
+
lastSaved: new Date().toISOString(),
|
|
146
|
+
};
|
|
147
|
+
saveProgress(navigatorPath, progress);
|
|
148
|
+
debugLog("Progress saved after assistant message:", newMessages.length, "messages");
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
debugLog("Failed to save progress:", err);
|
|
152
|
+
}
|
|
153
|
+
return newMessages;
|
|
154
|
+
});
|
|
155
|
+
// Check if the response contains a navigator config
|
|
150
156
|
debugLog("Checking for navigator config in response...");
|
|
151
157
|
const config = parseNavigatorConfig(fullText);
|
|
152
158
|
if (config) {
|
|
@@ -163,7 +169,6 @@ export function InterviewApp({ name, navigatorPath, packContext, analysisContext
|
|
|
163
169
|
debugLog("Failed to clear progress:", err);
|
|
164
170
|
}
|
|
165
171
|
// Defer onComplete to next tick to avoid render race conditions
|
|
166
|
-
// This ensures the component finishes its current render before unmounting
|
|
167
172
|
setTimeout(() => onComplete(config), 0);
|
|
168
173
|
debugLog("onComplete scheduled, should be exiting soon");
|
|
169
174
|
return;
|
|
@@ -227,11 +232,11 @@ export function InterviewApp({ name, navigatorPath, packContext, analysisContext
|
|
|
227
232
|
}, [name, processResponse, initialMessages, harness, systemPrompt, analysisContext]);
|
|
228
233
|
// Show hint after 5+ user messages
|
|
229
234
|
useEffect(() => {
|
|
230
|
-
const userMessageCount =
|
|
235
|
+
const userMessageCount = finalizedMessages.filter(m => m.role === 'user').length;
|
|
231
236
|
if (userMessageCount >= 5 && !showHint) {
|
|
232
237
|
setShowHint(true);
|
|
233
238
|
}
|
|
234
|
-
}, [
|
|
239
|
+
}, [finalizedMessages, showHint]);
|
|
235
240
|
// Handle user input submission
|
|
236
241
|
const handleSubmit = useCallback(async (value) => {
|
|
237
242
|
if (!value.trim() || isLoading || completedRef.current)
|
|
@@ -242,7 +247,7 @@ export function InterviewApp({ name, navigatorPath, packContext, analysisContext
|
|
|
242
247
|
// Fast path: when user says "done", check if any recent assistant message already has valid config
|
|
243
248
|
// This handles the race condition where Claude generated valid JSON but the interview didn't exit
|
|
244
249
|
if (isDoneCommand) {
|
|
245
|
-
const assistantMessages =
|
|
250
|
+
const assistantMessages = finalizedMessages.filter(m => m.role === 'assistant');
|
|
246
251
|
// Check the last 3 assistant messages for a valid config
|
|
247
252
|
for (let i = assistantMessages.length - 1; i >= Math.max(0, assistantMessages.length - 3); i--) {
|
|
248
253
|
const msg = assistantMessages[i];
|
|
@@ -264,7 +269,7 @@ export function InterviewApp({ name, navigatorPath, packContext, analysisContext
|
|
|
264
269
|
setIsLoading(true);
|
|
265
270
|
setCompletionStep(CONFIG_GENERATION_STEPS[0].label);
|
|
266
271
|
try {
|
|
267
|
-
const conversationHistory =
|
|
272
|
+
const conversationHistory = finalizedMessages
|
|
268
273
|
.map((m) => `<${m.role}>\n${m.content}\n</${m.role}>`)
|
|
269
274
|
.join("\n\n");
|
|
270
275
|
const config = await generateConfigFields(conversationHistory, systemPrompt, name, (_step, label) => setCompletionStep(label), harness);
|
|
@@ -283,29 +288,32 @@ export function InterviewApp({ name, navigatorPath, packContext, analysisContext
|
|
|
283
288
|
return; // Don't fall through to normal conversation flow
|
|
284
289
|
}
|
|
285
290
|
setInput("");
|
|
286
|
-
const
|
|
287
|
-
|
|
291
|
+
const userId = ++msgIdRef.current;
|
|
292
|
+
const userMsg = { role: "user", content: value, id: userId };
|
|
293
|
+
setFinalizedMessages((prev) => {
|
|
294
|
+
const newMessages = [...prev, userMsg];
|
|
295
|
+
// Save progress after user input
|
|
296
|
+
try {
|
|
297
|
+
const progress = {
|
|
298
|
+
navigatorName: name,
|
|
299
|
+
messages: newMessages,
|
|
300
|
+
packContext,
|
|
301
|
+
analysisContext,
|
|
302
|
+
lastSaved: new Date().toISOString(),
|
|
303
|
+
};
|
|
304
|
+
saveProgress(navigatorPath, progress);
|
|
305
|
+
debugLog("Progress saved after user input:", newMessages.length, "messages");
|
|
306
|
+
}
|
|
307
|
+
catch (err) {
|
|
308
|
+
debugLog("Failed to save progress:", err);
|
|
309
|
+
}
|
|
310
|
+
return newMessages;
|
|
311
|
+
});
|
|
288
312
|
setIsLoading(true);
|
|
289
|
-
// Save progress after user input
|
|
290
|
-
try {
|
|
291
|
-
const progress = {
|
|
292
|
-
navigatorName: name,
|
|
293
|
-
messages: newMessages,
|
|
294
|
-
packContext,
|
|
295
|
-
analysisContext,
|
|
296
|
-
lastSaved: new Date().toISOString(),
|
|
297
|
-
};
|
|
298
|
-
saveProgress(navigatorPath, progress);
|
|
299
|
-
debugLog("Progress saved after user input:", newMessages.length, "messages");
|
|
300
|
-
}
|
|
301
|
-
catch (err) {
|
|
302
|
-
debugLog("Failed to save progress:", err);
|
|
303
|
-
// Don't block on save failures
|
|
304
|
-
}
|
|
305
313
|
try {
|
|
306
314
|
debugLog("Sending user message:", value);
|
|
307
|
-
// Build conversation history
|
|
308
|
-
const conversationHistory =
|
|
315
|
+
// Build conversation history (use current finalizedMessages + new user message)
|
|
316
|
+
const conversationHistory = [...finalizedMessages, userMsg]
|
|
309
317
|
.map((m) => `<${m.role}>\n${m.content}\n</${m.role}>`)
|
|
310
318
|
.join("\n\n");
|
|
311
319
|
// Normal conversation flow
|
|
@@ -332,13 +340,13 @@ Continue the interview by responding to their message. Remember: after gathering
|
|
|
332
340
|
setError(err instanceof Error ? err.message : "Failed to send message");
|
|
333
341
|
setIsLoading(false);
|
|
334
342
|
}
|
|
335
|
-
}, [isLoading,
|
|
343
|
+
}, [isLoading, finalizedMessages, systemPrompt, processResponse, name, navigatorPath, packContext, analysisContext, onComplete, harness]);
|
|
336
344
|
// Handle Ctrl+C to exit
|
|
337
345
|
useInput((input, key) => {
|
|
338
346
|
if (key.ctrl && input === "c") {
|
|
339
347
|
exit();
|
|
340
348
|
}
|
|
341
349
|
});
|
|
342
|
-
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [
|
|
350
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [finalizedMessages.length === 0 && !streamingMessage && _jsx(Banner, { name: name, version: "1.2.0" }), _jsx(Static, { items: finalizedMessages, children: (msg) => (_jsx(Box, { flexDirection: "column", children: msg.role === "user" ? (_jsx(UserResponse, { content: msg.content })) : (_jsxs(_Fragment, { children: [_jsx(SystemMessage, { content: msg.content }), _jsx(Divider, {})] })) }, msg.id)) }), streamingMessage && (_jsx(Box, { flexDirection: "column", children: _jsx(SystemMessage, { content: streamingMessage.content }) })), error && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "red", children: ["\u2717 Error: ", error] }) })), isLoading && (_jsx(Box, { marginBottom: 1, children: _jsx(ActivityIndicator, { lines: 1, width: 30, message: isCompleting && completionStep ? completionStep : isCompleting ? "completing interview..." : "thinking..." }) })), showHint && !isLoading && !error && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "yellow", children: "\u25B8 Tip: Type 'done' when ready to create your navigator" }) })), !isLoading && !error && (_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: "green", bold: true, children: "▸ " }), _jsx(TextInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "Type your response..." })] }))] }));
|
|
343
351
|
}
|
|
344
352
|
//# sourceMappingURL=App.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/interview/App.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/interview/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/interview/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/interview/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyFD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,CAAC,EAAE,WAAW,EACzB,eAAe,CAAC,EAAE,cAAc,GAC/B,MAAM,CA+DR;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAwB,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAiCzE"}
|
|
@@ -17,8 +17,11 @@ Guide the user through understanding their needs so you can create a well-config
|
|
|
17
17
|
3. **Knowledge Structure**: How should knowledge be organized? (by topic, project, chronologically, as a journal, etc.)
|
|
18
18
|
4. **Knowledge Sources**: What documentation will be added? How should new knowledge be captured over time?
|
|
19
19
|
5. **Audience**: Who will use this? How should it communicate? (formal, casual, technical depth)
|
|
20
|
-
6. **
|
|
21
|
-
|
|
20
|
+
6. **Sandboxing & Permissions**: What should this navigator be allowed to do?
|
|
21
|
+
- File access: read-only, or read+write to its knowledge directory?
|
|
22
|
+
- Network: should it be able to make network requests?
|
|
23
|
+
- CLI tools: any specific tools it needs? (gh, kubectl, npm, etc.)
|
|
24
|
+
- Operations: which modes need sandboxing? (query is read-only by default, chat has full access)
|
|
22
25
|
|
|
23
26
|
## Philosophy
|
|
24
27
|
Navs are "self-organizing notebooks that talk back" - they edit their own knowledge files, learn from conversations, and maintain their own context. Help the user think through how they want this self-organization to work.
|
|
@@ -54,7 +57,7 @@ The JSON must include:
|
|
|
54
57
|
"scope": "Topics in scope and explicitly out of scope",
|
|
55
58
|
"knowledgeStructure": "How knowledge should be organized (by topic, chronologically, by project, etc.)",
|
|
56
59
|
"audience": "Who uses this navigator and how it should communicate",
|
|
57
|
-
"
|
|
60
|
+
"sandbox": "Sandbox preferences - file access level, network access, required CLI tools, and per-operation sandbox settings",
|
|
58
61
|
"claudeMd": "The complete CLAUDE.md content as a string with proper newlines (\\n)",
|
|
59
62
|
"suggestedDirectories": ["optional", "array", "of", "subdirectories"]
|
|
60
63
|
}
|
|
@@ -76,7 +79,7 @@ The claudeMd field should be a complete, personalized CLAUDE.md file based on wh
|
|
|
76
79
|
- Domain-specific scope definition
|
|
77
80
|
- Knowledge organization guidance
|
|
78
81
|
- Response format expectations (MUST use submit_answer tool, NOT plain text/JSON)
|
|
79
|
-
-
|
|
82
|
+
- Sandbox and permissions rules based on their access preferences
|
|
80
83
|
|
|
81
84
|
**CRITICAL**: The CLAUDE.md MUST include a "Response Format" section instructing the navigator to use the submit_answer tool for all responses. Never instruct navigators to output raw JSON - they must always use the submit_answer tool with answer, sources, and confidence parameters.
|
|
82
85
|
|
|
@@ -117,7 +120,7 @@ Since this pack provides domain knowledge, you can focus more on:
|
|
|
117
120
|
- How the user will use this specific domain knowledge
|
|
118
121
|
- Their experience level with the domain
|
|
119
122
|
- Specific customizations or preferences
|
|
120
|
-
-
|
|
123
|
+
- What access and permissions the navigator needs for the pack's knowledge
|
|
121
124
|
`;
|
|
122
125
|
}
|
|
123
126
|
prompt += packSection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/interview/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAWpE;;GAEG;AACH,MAAM,qBAAqB,GAAG
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/interview/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAWpE;;GAEG;AACH,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgE5B,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;0EAkBkD,CAAC;AAE3E;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAAyB,EACzB,eAAgC;IAEhC,IAAI,MAAM,GAAG,qBAAqB,CAAC;IAEnC,uCAAuC;IACvC,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,WAAW,GAAG;;;6CAGuB,WAAW,CAAC,QAAQ,uBAAuB,WAAW,CAAC,WAAW;;CAE9G,CAAC;QAEE,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;YAC1B,WAAW,IAAI;;;;;;EAMnB,WAAW,CAAC,SAAS;;;;CAItB,CAAC;QACE,CAAC;aAAM,CAAC;YACN,WAAW,IAAI;;;;;;CAMpB,CAAC;QACE,CAAC;QAED,MAAM,IAAI,WAAW,CAAC;IACxB,CAAC;IAED,2CAA2C;IAC3C,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,eAAe,GAAG;;;;;;iBAMX,eAAe,CAAC,OAAO;eACzB,eAAe,CAAC,KAAK;kBAClB,eAAe,CAAC,QAAQ;oBACtB,CAAC,eAAe,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;;;;;;;;;CAShE,CAAC;QAEE,MAAM,IAAI,eAAe,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAe7D;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,0EAA0E;IAC1E,8DAA8D;IAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACxD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAoB,CAAC;QAEvD,2BAA2B;QAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzD,uCAAuC;YACvC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;gBACnE,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE;oBACjD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;oBAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;oBACxB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;iBAC/B,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gCAAgC;QAChC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;YACnE,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sandbox Query Tool
|
|
3
|
+
*
|
|
4
|
+
* MCP tool that lets navigators check "would this operation be allowed?"
|
|
5
|
+
* against the current sandbox policy. Uses nono-ts QueryContext for
|
|
6
|
+
* dry-run policy checks without actually applying any sandbox.
|
|
7
|
+
*
|
|
8
|
+
* This is read-only — it tells the navigator what's blocked and what
|
|
9
|
+
* config change would fix it, but cannot modify config.json itself.
|
|
10
|
+
* The navigator must ask the user to approve the change.
|
|
11
|
+
* Config changes take effect on next launch.
|
|
12
|
+
*/
|
|
13
|
+
import { type Harness, type SandboxConfig } from "../harness/index.js";
|
|
14
|
+
/**
|
|
15
|
+
* Create an MCP server with the sandbox_query tool.
|
|
16
|
+
*
|
|
17
|
+
* The tool requires the current session's SandboxConfig so it can
|
|
18
|
+
* query the active policy. If no sandbox is active, all queries
|
|
19
|
+
* return "allowed".
|
|
20
|
+
*/
|
|
21
|
+
export declare function createSandboxQueryMcpServer(harness: Harness, sandboxConfig: SandboxConfig | undefined): {
|
|
22
|
+
server: unknown;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=sandbox-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-query.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,aAAa,EAOnB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,GAAG,SAAS;;EAsKzC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sandbox Query Tool
|
|
3
|
+
*
|
|
4
|
+
* MCP tool that lets navigators check "would this operation be allowed?"
|
|
5
|
+
* against the current sandbox policy. Uses nono-ts QueryContext for
|
|
6
|
+
* dry-run policy checks without actually applying any sandbox.
|
|
7
|
+
*
|
|
8
|
+
* This is read-only — it tells the navigator what's blocked and what
|
|
9
|
+
* config change would fix it, but cannot modify config.json itself.
|
|
10
|
+
* The navigator must ask the user to approve the change.
|
|
11
|
+
* Config changes take effect on next launch.
|
|
12
|
+
*/
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
import { querySandbox, querySandboxNetwork, getSandboxSummary, isSandboxEnabled, AccessMode, defineTool, } from "../harness/index.js";
|
|
15
|
+
/**
|
|
16
|
+
* Create an MCP server with the sandbox_query tool.
|
|
17
|
+
*
|
|
18
|
+
* The tool requires the current session's SandboxConfig so it can
|
|
19
|
+
* query the active policy. If no sandbox is active, all queries
|
|
20
|
+
* return "allowed".
|
|
21
|
+
*/
|
|
22
|
+
export function createSandboxQueryMcpServer(harness, sandboxConfig) {
|
|
23
|
+
const sandboxQueryTool = defineTool("sandbox_query", `Check if a path or network operation would be allowed by the current sandbox policy.
|
|
24
|
+
|
|
25
|
+
Use this tool to diagnose permission issues — for example, when a CLI command fails
|
|
26
|
+
or a file operation is blocked. The tool returns the policy decision and a suggestion
|
|
27
|
+
for what config change would fix it (if denied).
|
|
28
|
+
|
|
29
|
+
Note: You cannot modify the sandbox config directly. Suggest changes to the user,
|
|
30
|
+
who must approve them in config.json. Changes take effect on next launch.`, {
|
|
31
|
+
path: z
|
|
32
|
+
.string()
|
|
33
|
+
.optional()
|
|
34
|
+
.describe("Absolute path to check access for"),
|
|
35
|
+
operation: z
|
|
36
|
+
.enum(["read", "write", "readwrite"])
|
|
37
|
+
.optional()
|
|
38
|
+
.default("read")
|
|
39
|
+
.describe("Type of access to check"),
|
|
40
|
+
checkNetwork: z
|
|
41
|
+
.boolean()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("Check if network access is allowed"),
|
|
44
|
+
checkCommand: z
|
|
45
|
+
.string()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("Check if a CLI command (e.g. 'linear') is allowed"),
|
|
48
|
+
}, async (args) => {
|
|
49
|
+
// If sandbox is not active, everything is allowed
|
|
50
|
+
if (!sandboxConfig || !isSandboxEnabled(sandboxConfig)) {
|
|
51
|
+
return {
|
|
52
|
+
content: [
|
|
53
|
+
{
|
|
54
|
+
type: "text",
|
|
55
|
+
text: JSON.stringify({
|
|
56
|
+
status: "allowed",
|
|
57
|
+
reason: "sandbox_disabled",
|
|
58
|
+
message: "Sandbox is not active — all operations are allowed.",
|
|
59
|
+
}),
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
isError: false,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
// Check network access
|
|
67
|
+
if (args.checkNetwork) {
|
|
68
|
+
const result = querySandboxNetwork(sandboxConfig);
|
|
69
|
+
return {
|
|
70
|
+
content: [
|
|
71
|
+
{
|
|
72
|
+
type: "text",
|
|
73
|
+
text: JSON.stringify({
|
|
74
|
+
...result,
|
|
75
|
+
...(result.status === "denied"
|
|
76
|
+
? {
|
|
77
|
+
suggestion: "Remove 'blockNetwork: true' from sandbox config in config.json, or set sandbox.chat.blockNetwork to false.",
|
|
78
|
+
}
|
|
79
|
+
: {}),
|
|
80
|
+
}),
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
isError: false,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// Check command access
|
|
87
|
+
if (args.checkCommand) {
|
|
88
|
+
const isAllowed = sandboxConfig.allowedCommands?.includes(args.checkCommand) ?? false;
|
|
89
|
+
return {
|
|
90
|
+
content: [
|
|
91
|
+
{
|
|
92
|
+
type: "text",
|
|
93
|
+
text: JSON.stringify({
|
|
94
|
+
status: isAllowed ? "allowed" : "denied",
|
|
95
|
+
reason: isAllowed ? "command_allowed" : "command_not_in_allowlist",
|
|
96
|
+
command: args.checkCommand,
|
|
97
|
+
...(isAllowed
|
|
98
|
+
? {}
|
|
99
|
+
: {
|
|
100
|
+
suggestion: `Add '${args.checkCommand}' to permissions.allowedCommands in config.json. Example:\n"permissions": { "allowedCommands": ["${args.checkCommand}"] }`,
|
|
101
|
+
}),
|
|
102
|
+
}),
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
isError: false,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
// Check path access
|
|
109
|
+
if (args.path) {
|
|
110
|
+
const mode = args.operation === "write"
|
|
111
|
+
? AccessMode.Write
|
|
112
|
+
: args.operation === "readwrite"
|
|
113
|
+
? AccessMode.ReadWrite
|
|
114
|
+
: AccessMode.Read;
|
|
115
|
+
const result = querySandbox(sandboxConfig, args.path, mode);
|
|
116
|
+
return {
|
|
117
|
+
content: [
|
|
118
|
+
{
|
|
119
|
+
type: "text",
|
|
120
|
+
text: JSON.stringify({
|
|
121
|
+
...result,
|
|
122
|
+
path: args.path,
|
|
123
|
+
operation: args.operation,
|
|
124
|
+
...(result.status === "denied"
|
|
125
|
+
? {
|
|
126
|
+
suggestion: args.operation === "read"
|
|
127
|
+
? `Add '${args.path}' to permissions.allowedPaths or sandbox.chat.extraReadPaths in config.json.`
|
|
128
|
+
: `Add '${args.path}' to sandbox.chat.extraWritePaths in config.json, and set sandbox.chat.accessLevel to "readwrite".`,
|
|
129
|
+
}
|
|
130
|
+
: {}),
|
|
131
|
+
}),
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
isError: false,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
// No specific check requested — return policy summary
|
|
138
|
+
const summary = getSandboxSummary(sandboxConfig);
|
|
139
|
+
return {
|
|
140
|
+
content: [
|
|
141
|
+
{
|
|
142
|
+
type: "text",
|
|
143
|
+
text: JSON.stringify({
|
|
144
|
+
status: "info",
|
|
145
|
+
summary,
|
|
146
|
+
allowedCommands: sandboxConfig.allowedCommands ?? [],
|
|
147
|
+
message: "Use 'path', 'checkNetwork', or 'checkCommand' parameters to check specific operations.",
|
|
148
|
+
}),
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
isError: false,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
156
|
+
return {
|
|
157
|
+
content: [
|
|
158
|
+
{
|
|
159
|
+
type: "text",
|
|
160
|
+
text: JSON.stringify({
|
|
161
|
+
status: "error",
|
|
162
|
+
message: `Failed to query sandbox: ${errorMsg}`,
|
|
163
|
+
}),
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
isError: true,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
return harness.createToolServer("autonav-sandbox", [sandboxQueryTool]);
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=sandbox-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-query.js","sourceRoot":"","sources":["../../src/tools/sandbox-query.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autonav/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "CLI tools and Claude SDK Adapter for Autonav navigators",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -75,6 +75,9 @@
|
|
|
75
75
|
"typescript": "^5.3.0",
|
|
76
76
|
"vitest": "^1.2.0"
|
|
77
77
|
},
|
|
78
|
+
"optionalDependencies": {
|
|
79
|
+
"nono-ts": "^0.3.0"
|
|
80
|
+
},
|
|
78
81
|
"peerDependencies": {
|
|
79
82
|
"langsmith": "^0.3.0"
|
|
80
83
|
},
|