bonecode 1.1.0 → 1.2.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/bin/bonecode +47 -42
- package/compat/opencode_adapter.ts +188 -17
- package/dist/bone/output/agent/src/algorithms.d.ts +1 -0
- package/dist/bone/output/agent/src/algorithms.js +3 -0
- package/dist/bone/output/agent/src/algorithms.js.map +1 -0
- package/dist/bone/output/agent/src/audit.d.ts +3 -0
- package/dist/bone/output/agent/src/audit.js +40 -0
- package/dist/bone/output/agent/src/audit.js.map +1 -0
- package/dist/bone/output/agent/src/auth.d.ts +8 -0
- package/dist/bone/output/agent/src/auth.js +56 -0
- package/dist/bone/output/agent/src/auth.js.map +1 -0
- package/dist/bone/output/agent/src/db.d.ts +6 -0
- package/dist/bone/output/agent/src/db.js +63 -0
- package/dist/bone/output/agent/src/db.js.map +1 -0
- package/dist/bone/output/agent/src/events.d.ts +25 -0
- package/dist/bone/output/agent/src/events.js +184 -0
- package/dist/bone/output/agent/src/events.js.map +1 -0
- package/dist/bone/output/agent/src/logger.d.ts +28 -0
- package/dist/bone/output/agent/src/logger.js +45 -0
- package/dist/bone/output/agent/src/logger.js.map +1 -0
- package/dist/bone/output/agent/src/metrics.d.ts +5 -0
- package/dist/bone/output/agent/src/metrics.js +60 -0
- package/dist/bone/output/agent/src/metrics.js.map +1 -0
- package/dist/bone/output/agent/src/routes/agent_instance.d.ts +1 -0
- package/dist/bone/output/agent/src/routes/agent_instance.js +253 -0
- package/dist/bone/output/agent/src/routes/agent_instance.js.map +1 -0
- package/dist/bone/output/agent/src/routes/build_step.d.ts +1 -0
- package/dist/bone/output/agent/src/routes/build_step.js +133 -0
- package/dist/bone/output/agent/src/routes/build_step.js.map +1 -0
- package/dist/bone/output/agent/src/routes/plan.d.ts +1 -0
- package/dist/bone/output/agent/src/routes/plan.js +119 -0
- package/dist/bone/output/agent/src/routes/plan.js.map +1 -0
- package/dist/bone/output/agent/src/routes/task.d.ts +1 -0
- package/dist/bone/output/agent/src/routes/task.js +133 -0
- package/dist/bone/output/agent/src/routes/task.js.map +1 -0
- package/dist/bone/output/agent/src/routes/tool_call.d.ts +1 -0
- package/dist/bone/output/agent/src/routes/tool_call.js +190 -0
- package/dist/bone/output/agent/src/routes/tool_call.js.map +1 -0
- package/dist/bone/output/agent/src/state_machines/agent_instance.d.ts +9 -0
- package/dist/bone/output/agent/src/state_machines/agent_instance.js +22 -0
- package/dist/bone/output/agent/src/state_machines/agent_instance.js.map +1 -0
- package/dist/bone/output/agent/src/state_machines/build_step.d.ts +9 -0
- package/dist/bone/output/agent/src/state_machines/build_step.js +20 -0
- package/dist/bone/output/agent/src/state_machines/build_step.js.map +1 -0
- package/dist/bone/output/agent/src/state_machines/plan.d.ts +9 -0
- package/dist/bone/output/agent/src/state_machines/plan.js +20 -0
- package/dist/bone/output/agent/src/state_machines/plan.js.map +1 -0
- package/dist/bone/output/agent/src/state_machines/task.d.ts +9 -0
- package/dist/bone/output/agent/src/state_machines/task.js +20 -0
- package/dist/bone/output/agent/src/state_machines/task.js.map +1 -0
- package/dist/bone/output/agent/src/state_machines/tool_call.d.ts +9 -0
- package/dist/bone/output/agent/src/state_machines/tool_call.js +20 -0
- package/dist/bone/output/agent/src/state_machines/tool_call.js.map +1 -0
- package/dist/bone/output/rag/src/algorithms.d.ts +1 -0
- package/dist/bone/output/rag/src/algorithms.js +3 -0
- package/dist/bone/output/rag/src/algorithms.js.map +1 -0
- package/dist/bone/output/rag/src/auth.d.ts +8 -0
- package/dist/bone/output/rag/src/auth.js +56 -0
- package/dist/bone/output/rag/src/auth.js.map +1 -0
- package/dist/bone/output/rag/src/db.d.ts +6 -0
- package/dist/bone/output/rag/src/db.js +63 -0
- package/dist/bone/output/rag/src/db.js.map +1 -0
- package/dist/bone/output/rag/src/events.d.ts +25 -0
- package/dist/bone/output/rag/src/events.js +184 -0
- package/dist/bone/output/rag/src/events.js.map +1 -0
- package/dist/bone/output/rag/src/extensions.d.ts +83 -0
- package/dist/bone/output/rag/src/extensions.js +329 -0
- package/dist/bone/output/rag/src/extensions.js.map +1 -0
- package/dist/bone/output/rag/src/flows.d.ts +24 -0
- package/dist/bone/output/rag/src/flows.js +236 -0
- package/dist/bone/output/rag/src/flows.js.map +1 -0
- package/dist/bone/output/rag/src/logger.d.ts +28 -0
- package/dist/bone/output/rag/src/logger.js +45 -0
- package/dist/bone/output/rag/src/logger.js.map +1 -0
- package/dist/bone/output/rag/src/metrics.d.ts +5 -0
- package/dist/bone/output/rag/src/metrics.js +60 -0
- package/dist/bone/output/rag/src/metrics.js.map +1 -0
- package/dist/bone/output/rag/src/routes/code_chunk.d.ts +1 -0
- package/dist/bone/output/rag/src/routes/code_chunk.js +100 -0
- package/dist/bone/output/rag/src/routes/code_chunk.js.map +1 -0
- package/dist/bone/output/rag/src/routes/code_file.d.ts +1 -0
- package/dist/bone/output/rag/src/routes/code_file.js +127 -0
- package/dist/bone/output/rag/src/routes/code_file.js.map +1 -0
- package/dist/bone/output/rag/src/routes/indexing_job.d.ts +1 -0
- package/dist/bone/output/rag/src/routes/indexing_job.js +113 -0
- package/dist/bone/output/rag/src/routes/indexing_job.js.map +1 -0
- package/dist/bone/output/rag/src/routes/knowledge_base.d.ts +1 -0
- package/dist/bone/output/rag/src/routes/knowledge_base.js +242 -0
- package/dist/bone/output/rag/src/routes/knowledge_base.js.map +1 -0
- package/dist/bone/output/rag/src/routes/memory_entry.d.ts +1 -0
- package/dist/bone/output/rag/src/routes/memory_entry.js +113 -0
- package/dist/bone/output/rag/src/routes/memory_entry.js.map +1 -0
- package/dist/bone/output/rag/src/state_machines/code_file.d.ts +9 -0
- package/dist/bone/output/rag/src/state_machines/code_file.js +21 -0
- package/dist/bone/output/rag/src/state_machines/code_file.js.map +1 -0
- package/dist/bone/output/rag/src/state_machines/indexing_job.d.ts +9 -0
- package/dist/bone/output/rag/src/state_machines/indexing_job.js +20 -0
- package/dist/bone/output/rag/src/state_machines/indexing_job.js.map +1 -0
- package/dist/bone/output/rag/src/state_machines/knowledge_base.d.ts +9 -0
- package/dist/bone/output/rag/src/state_machines/knowledge_base.js +21 -0
- package/dist/bone/output/rag/src/state_machines/knowledge_base.js.map +1 -0
- package/dist/bone/output/rag/src/state_machines/memory_entry.d.ts +9 -0
- package/dist/bone/output/rag/src/state_machines/memory_entry.js +18 -0
- package/dist/bone/output/rag/src/state_machines/memory_entry.js.map +1 -0
- package/dist/bone/output/session/src/algorithms.d.ts +1 -0
- package/dist/bone/output/session/src/algorithms.js +3 -0
- package/dist/bone/output/session/src/algorithms.js.map +1 -0
- package/dist/bone/output/session/src/audit.d.ts +3 -0
- package/dist/bone/output/session/src/audit.js +40 -0
- package/dist/bone/output/session/src/audit.js.map +1 -0
- package/dist/bone/output/session/src/auth.d.ts +8 -0
- package/dist/bone/output/session/src/auth.js +56 -0
- package/dist/bone/output/session/src/auth.js.map +1 -0
- package/dist/bone/output/session/src/db.d.ts +6 -0
- package/dist/bone/output/session/src/db.js +63 -0
- package/dist/bone/output/session/src/db.js.map +1 -0
- package/dist/bone/output/session/src/events.d.ts +26 -0
- package/dist/bone/output/session/src/events.js +212 -0
- package/dist/bone/output/session/src/events.js.map +1 -0
- package/dist/bone/output/session/src/extensions.d.ts +41 -0
- package/dist/bone/output/session/src/extensions.js +217 -0
- package/dist/bone/output/session/src/extensions.js.map +1 -0
- package/dist/bone/output/session/src/logger.d.ts +28 -0
- package/dist/bone/output/session/src/logger.js +44 -0
- package/dist/bone/output/session/src/logger.js.map +1 -0
- package/dist/bone/output/session/src/metrics.d.ts +5 -0
- package/dist/bone/output/session/src/metrics.js +60 -0
- package/dist/bone/output/session/src/metrics.js.map +1 -0
- package/dist/bone/output/session/src/routes/message.d.ts +1 -0
- package/dist/bone/output/session/src/routes/message.js +120 -0
- package/dist/bone/output/session/src/routes/message.js.map +1 -0
- package/dist/bone/output/session/src/routes/part.d.ts +1 -0
- package/dist/bone/output/session/src/routes/part.js +106 -0
- package/dist/bone/output/session/src/routes/part.js.map +1 -0
- package/dist/bone/output/session/src/routes/permission.d.ts +1 -0
- package/dist/bone/output/session/src/routes/permission.js +106 -0
- package/dist/bone/output/session/src/routes/permission.js.map +1 -0
- package/dist/bone/output/session/src/routes/project.d.ts +1 -0
- package/dist/bone/output/session/src/routes/project.js +106 -0
- package/dist/bone/output/session/src/routes/project.js.map +1 -0
- package/dist/bone/output/session/src/routes/session.d.ts +1 -0
- package/dist/bone/output/session/src/routes/session.js +308 -0
- package/dist/bone/output/session/src/routes/session.js.map +1 -0
- package/dist/bone/output/session/src/state_machines/session.d.ts +9 -0
- package/dist/bone/output/session/src/state_machines/session.js +21 -0
- package/dist/bone/output/session/src/state_machines/session.js.map +1 -0
- package/dist/bone/output/session/src/websocket.d.ts +15 -0
- package/dist/bone/output/session/src/websocket.js +215 -0
- package/dist/bone/output/session/src/websocket.js.map +1 -0
- package/dist/bone/output/workspace/src/algorithms.d.ts +1 -0
- package/dist/bone/output/workspace/src/algorithms.js +3 -0
- package/dist/bone/output/workspace/src/algorithms.js.map +1 -0
- package/dist/bone/output/workspace/src/auth.d.ts +8 -0
- package/dist/bone/output/workspace/src/auth.js +56 -0
- package/dist/bone/output/workspace/src/auth.js.map +1 -0
- package/dist/bone/output/workspace/src/db.d.ts +6 -0
- package/dist/bone/output/workspace/src/db.js +63 -0
- package/dist/bone/output/workspace/src/db.js.map +1 -0
- package/dist/bone/output/workspace/src/events.d.ts +25 -0
- package/dist/bone/output/workspace/src/events.js +184 -0
- package/dist/bone/output/workspace/src/events.js.map +1 -0
- package/dist/bone/output/workspace/src/logger.d.ts +28 -0
- package/dist/bone/output/workspace/src/logger.js +45 -0
- package/dist/bone/output/workspace/src/logger.js.map +1 -0
- package/dist/bone/output/workspace/src/metrics.d.ts +5 -0
- package/dist/bone/output/workspace/src/metrics.js +60 -0
- package/dist/bone/output/workspace/src/metrics.js.map +1 -0
- package/dist/bone/output/workspace/src/routes/codebase.d.ts +1 -0
- package/dist/bone/output/workspace/src/routes/codebase.js +113 -0
- package/dist/bone/output/workspace/src/routes/codebase.js.map +1 -0
- package/dist/bone/output/workspace/src/routes/snapshot.d.ts +1 -0
- package/dist/bone/output/workspace/src/routes/snapshot.js +151 -0
- package/dist/bone/output/workspace/src/routes/snapshot.js.map +1 -0
- package/dist/bone/output/workspace/src/routes/workspace.d.ts +1 -0
- package/dist/bone/output/workspace/src/routes/workspace.js +209 -0
- package/dist/bone/output/workspace/src/routes/workspace.js.map +1 -0
- package/dist/bone/output/workspace/src/state_machines/codebase.d.ts +9 -0
- package/dist/bone/output/workspace/src/state_machines/codebase.js +19 -0
- package/dist/bone/output/workspace/src/state_machines/codebase.js.map +1 -0
- package/dist/bone/output/workspace/src/state_machines/snapshot.d.ts +9 -0
- package/dist/bone/output/workspace/src/state_machines/snapshot.js +18 -0
- package/dist/bone/output/workspace/src/state_machines/snapshot.js.map +1 -0
- package/dist/bone/output/workspace/src/state_machines/workspace.d.ts +9 -0
- package/dist/bone/output/workspace/src/state_machines/workspace.js +19 -0
- package/dist/bone/output/workspace/src/state_machines/workspace.js.map +1 -0
- package/dist/compat/opencode_adapter.d.ts +25 -0
- package/dist/compat/opencode_adapter.js +599 -0
- package/dist/compat/opencode_adapter.js.map +1 -0
- package/dist/extensions/chunker.d.ts +24 -0
- package/dist/extensions/chunker.js +360 -0
- package/dist/extensions/chunker.js.map +1 -0
- package/dist/extensions/embedding_provider.d.ts +18 -0
- package/dist/extensions/embedding_provider.js +150 -0
- package/dist/extensions/embedding_provider.js.map +1 -0
- package/dist/extensions/llm_provider.d.ts +33 -0
- package/dist/extensions/llm_provider.js +338 -0
- package/dist/extensions/llm_provider.js.map +1 -0
- package/dist/extensions/mcp_bridge.d.ts +44 -0
- package/dist/extensions/mcp_bridge.js +151 -0
- package/dist/extensions/mcp_bridge.js.map +1 -0
- package/dist/extensions/rag_search.d.ts +38 -0
- package/dist/extensions/rag_search.js +242 -0
- package/dist/extensions/rag_search.js.map +1 -0
- package/dist/extensions/snapshot.d.ts +14 -0
- package/dist/extensions/snapshot.js +158 -0
- package/dist/extensions/snapshot.js.map +1 -0
- package/dist/extensions/tool_executor.d.ts +28 -0
- package/dist/extensions/tool_executor.js +268 -0
- package/dist/extensions/tool_executor.js.map +1 -0
- package/dist/src/cli.d.ts +15 -0
- package/dist/src/cli.js +687 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config.d.ts +44 -0
- package/dist/src/config.js +165 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/context_builder.d.ts +51 -0
- package/dist/src/context_builder.js +558 -0
- package/dist/src/context_builder.js.map +1 -0
- package/dist/src/db_adapter.d.ts +24 -0
- package/dist/src/db_adapter.js +341 -0
- package/dist/src/db_adapter.js.map +1 -0
- package/dist/src/engine/session/compaction_logic.d.ts +11 -0
- package/dist/src/engine/session/compaction_logic.js +113 -0
- package/dist/src/engine/session/compaction_logic.js.map +1 -0
- package/dist/src/engine/session/instruction_loader.d.ts +5 -0
- package/dist/src/engine/session/instruction_loader.js +78 -0
- package/dist/src/engine/session/instruction_loader.js.map +1 -0
- package/dist/src/engine/session/overflow_check.d.ts +14 -0
- package/dist/src/engine/session/overflow_check.js +45 -0
- package/dist/src/engine/session/overflow_check.js.map +1 -0
- package/dist/src/engine/session/prompt.d.ts +45 -0
- package/dist/src/engine/session/prompt.js +584 -0
- package/dist/src/engine/session/prompt.js.map +1 -0
- package/dist/src/engine/session/provider_transform.d.ts +59 -0
- package/dist/src/engine/session/provider_transform.js +193 -0
- package/dist/src/engine/session/provider_transform.js.map +1 -0
- package/dist/src/engine/session/retry_logic.d.ts +12 -0
- package/dist/src/engine/session/retry_logic.js +72 -0
- package/dist/src/engine/session/retry_logic.js.map +1 -0
- package/dist/src/engine/session/system_prompt.d.ts +9 -0
- package/dist/src/engine/session/system_prompt.js +96 -0
- package/dist/src/engine/session/system_prompt.js.map +1 -0
- package/dist/src/engine/session/tool_registry.d.ts +5 -0
- package/dist/src/engine/session/tool_registry.js +117 -0
- package/dist/src/engine/session/tool_registry.js.map +1 -0
- package/dist/src/export.d.ts +13 -0
- package/dist/src/export.js +103 -0
- package/dist/src/export.js.map +1 -0
- package/dist/src/mdns.d.ts +7 -0
- package/dist/src/mdns.js +60 -0
- package/dist/src/mdns.js.map +1 -0
- package/dist/src/rag_worker.d.ts +38 -0
- package/dist/src/rag_worker.js +435 -0
- package/dist/src/rag_worker.js.map +1 -0
- package/dist/src/server.d.ts +11 -0
- package/dist/src/server.js +214 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/stats.d.ts +45 -0
- package/dist/src/stats.js +233 -0
- package/dist/src/stats.js.map +1 -0
- package/dist/src/tui.d.ts +29 -0
- package/dist/src/tui.js +1053 -0
- package/dist/src/tui.js.map +1 -0
- package/package.json +7 -4
- package/src/cli.ts +247 -5
- package/src/export.ts +122 -0
- package/src/mdns.ts +53 -0
- package/src/server.ts +32 -0
- package/src/stats.ts +290 -0
- package/src/tui.ts +749 -248
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tool registry — builds the tool set for a session using Zod schemas.
|
|
4
|
+
* All tools route execution through the BoneCode extension point (tool_executor.ts).
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.buildToolRegistry = void 0;
|
|
8
|
+
const ai_1 = require("ai");
|
|
9
|
+
const zod_1 = require("zod");
|
|
10
|
+
const extensions_1 = require("../../../bone/output/session/src/extensions");
|
|
11
|
+
const db_1 = require("../../../bone/output/session/src/db");
|
|
12
|
+
async function buildToolRegistry(session_id, agent_id, workspace_root) {
|
|
13
|
+
const tools = {};
|
|
14
|
+
// Helper: wrap a tool so execution goes through our BoneCode extension point
|
|
15
|
+
const makeTool = (name, description, schema) => {
|
|
16
|
+
return (0, ai_1.tool)({
|
|
17
|
+
description,
|
|
18
|
+
parameters: schema,
|
|
19
|
+
execute: async (args, opts) => {
|
|
20
|
+
const results = await (0, extensions_1.execute_tool_calls)(session_id, [{
|
|
21
|
+
id: opts?.toolCallId || name + "-" + Date.now(),
|
|
22
|
+
tool_name: name,
|
|
23
|
+
tool_input: args,
|
|
24
|
+
}]);
|
|
25
|
+
const result = results[0]?.result;
|
|
26
|
+
if (!result)
|
|
27
|
+
return { output: "", title: name };
|
|
28
|
+
return { output: result.output || result.error || "", title: name };
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
// ── File tools ──────────────────────────────────────────────────────────────
|
|
33
|
+
tools["read"] = makeTool("read_file", "Read the contents of a file. Supports optional line range with start_line and end_line.", zod_1.z.object({
|
|
34
|
+
path: zod_1.z.string().describe("File path relative to workspace root"),
|
|
35
|
+
start_line: zod_1.z.number().optional().describe("First line to read (1-indexed)"),
|
|
36
|
+
end_line: zod_1.z.number().optional().describe("Last line to read inclusive"),
|
|
37
|
+
}));
|
|
38
|
+
tools["write"] = makeTool("write_file", "Write content to a file, creating it if it doesn't exist.", zod_1.z.object({
|
|
39
|
+
path: zod_1.z.string().describe("File path relative to workspace root"),
|
|
40
|
+
content: zod_1.z.string().describe("Content to write"),
|
|
41
|
+
}));
|
|
42
|
+
tools["edit"] = makeTool("edit_file", "Replace a specific string in a file with new content. The old_str must match exactly.", zod_1.z.object({
|
|
43
|
+
path: zod_1.z.string().describe("File path relative to workspace root"),
|
|
44
|
+
old_str: zod_1.z.string().describe("Exact string to find and replace"),
|
|
45
|
+
new_str: zod_1.z.string().describe("Replacement string"),
|
|
46
|
+
}));
|
|
47
|
+
tools["apply_patch"] = makeTool("apply_patch", "Apply a unified diff patch to files. Use for complex multi-file edits.", zod_1.z.object({
|
|
48
|
+
patch: zod_1.z.string().describe("Unified diff patch content"),
|
|
49
|
+
}));
|
|
50
|
+
// ── Shell ───────────────────────────────────────────────────────────────────
|
|
51
|
+
tools["bash"] = makeTool("run_command", "Execute a shell command in the workspace directory. Use for running tests, builds, git operations.", zod_1.z.object({
|
|
52
|
+
command: zod_1.z.string().describe("Shell command to execute"),
|
|
53
|
+
cwd: zod_1.z.string().optional().describe("Working directory (optional)"),
|
|
54
|
+
timeout_ms: zod_1.z.number().optional().describe("Timeout in milliseconds (default 30000)"),
|
|
55
|
+
}));
|
|
56
|
+
// ── Search ──────────────────────────────────────────────────────────────────
|
|
57
|
+
tools["glob"] = makeTool("glob", "Find files matching a glob pattern in the workspace.", zod_1.z.object({
|
|
58
|
+
pattern: zod_1.z.string().describe("Glob pattern (e.g. **/*.ts)"),
|
|
59
|
+
}));
|
|
60
|
+
tools["grep"] = makeTool("search_files", "Search for a regex pattern across files using ripgrep.", zod_1.z.object({
|
|
61
|
+
pattern: zod_1.z.string().describe("Regex pattern to search for"),
|
|
62
|
+
glob: zod_1.z.string().optional().describe("File glob to restrict search (e.g. **/*.ts)"),
|
|
63
|
+
}));
|
|
64
|
+
tools["list_directory"] = makeTool("list_directory", "List the contents of a directory.", zod_1.z.object({
|
|
65
|
+
path: zod_1.z.string().optional().describe("Directory path (default: workspace root)"),
|
|
66
|
+
}));
|
|
67
|
+
// ── Web ─────────────────────────────────────────────────────────────────────
|
|
68
|
+
tools["webfetch"] = (0, ai_1.tool)({
|
|
69
|
+
description: "Fetch the content of a URL.",
|
|
70
|
+
parameters: zod_1.z.object({
|
|
71
|
+
url: zod_1.z.string().describe("URL to fetch"),
|
|
72
|
+
max_length: zod_1.z.number().optional().describe("Maximum characters to return (default 10000)"),
|
|
73
|
+
}),
|
|
74
|
+
execute: async (args) => {
|
|
75
|
+
try {
|
|
76
|
+
const r = await fetch(args.url, { signal: AbortSignal.timeout(15000) });
|
|
77
|
+
const text = await r.text();
|
|
78
|
+
return { output: text.slice(0, args.max_length || 10000), title: "webfetch" };
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
return { output: `Error fetching ${args.url}: ${e.message}`, title: "webfetch" };
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
// ── Todo ────────────────────────────────────────────────────────────────────
|
|
86
|
+
tools["todo_write"] = (0, ai_1.tool)({
|
|
87
|
+
description: "Manage a structured task list for the current session.",
|
|
88
|
+
parameters: zod_1.z.object({
|
|
89
|
+
todos: zod_1.z.array(zod_1.z.object({
|
|
90
|
+
id: zod_1.z.string(),
|
|
91
|
+
content: zod_1.z.string(),
|
|
92
|
+
status: zod_1.z.enum(["pending", "in_progress", "completed"]),
|
|
93
|
+
priority: zod_1.z.enum(["high", "medium", "low"]),
|
|
94
|
+
})),
|
|
95
|
+
}),
|
|
96
|
+
execute: async (args) => {
|
|
97
|
+
await db_1.pool.query(`UPDATE sessions SET permission_ruleset = jsonb_set(COALESCE(permission_ruleset, '{}'), '{todos}', $2::jsonb), updated_at = NOW() WHERE id = $1`, [session_id, JSON.stringify(args.todos)]);
|
|
98
|
+
const done = args.todos.filter(t => t.status === "completed").length;
|
|
99
|
+
return { output: `Updated ${args.todos.length} todos (${done} done)`, title: "todo_write" };
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
// ── Invalid (graceful handling of malformed tool calls) ─────────────────────
|
|
103
|
+
tools["invalid"] = (0, ai_1.tool)({
|
|
104
|
+
description: "Called when the model uses an unknown tool name.",
|
|
105
|
+
parameters: zod_1.z.object({
|
|
106
|
+
tool: zod_1.z.string().optional(),
|
|
107
|
+
error: zod_1.z.string().optional(),
|
|
108
|
+
}),
|
|
109
|
+
execute: async (args) => ({
|
|
110
|
+
output: `Unknown tool: ${args.tool || "unknown"}. Available: ${Object.keys(tools).filter(t => t !== "invalid").join(", ")}`,
|
|
111
|
+
title: "invalid",
|
|
112
|
+
}),
|
|
113
|
+
});
|
|
114
|
+
return tools;
|
|
115
|
+
}
|
|
116
|
+
exports.buildToolRegistry = buildToolRegistry;
|
|
117
|
+
//# sourceMappingURL=tool_registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool_registry.js","sourceRoot":"","sources":["../../../../src/engine/session/tool_registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session export with optional PII redaction
|
|
3
|
+
* Ported from opencode's cli/cmd/export.ts — adapted for BoneCode's Postgres schema.
|
|
4
|
+
*/
|
|
5
|
+
import { Pool } from "pg";
|
|
6
|
+
export declare function exportSession(pool: Pool, sessionId: string, opts?: {
|
|
7
|
+
sanitize?: boolean;
|
|
8
|
+
}): Promise<string>;
|
|
9
|
+
export declare function listSessionsForExport(pool: Pool): Promise<Array<{
|
|
10
|
+
id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
updated_at: string;
|
|
13
|
+
}>>;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Session export with optional PII redaction
|
|
4
|
+
* Ported from opencode's cli/cmd/export.ts — adapted for BoneCode's Postgres schema.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.listSessionsForExport = exports.exportSession = void 0;
|
|
8
|
+
// ─── Redaction helpers (verbatim from opencode) ───────────────────────────────
|
|
9
|
+
function redact(kind, id, value) {
|
|
10
|
+
return value.trim() ? `[redacted:${kind}:${id}]` : value;
|
|
11
|
+
}
|
|
12
|
+
function redactData(kind, id, value) {
|
|
13
|
+
if (!value)
|
|
14
|
+
return value;
|
|
15
|
+
return Object.keys(value).length ? { redacted: `${kind}:${id}` } : value;
|
|
16
|
+
}
|
|
17
|
+
function redactSpan(id, value) {
|
|
18
|
+
return { ...value, value: redact("file-text", id, value.value) };
|
|
19
|
+
}
|
|
20
|
+
function redactDiff(kind, diffs) {
|
|
21
|
+
return diffs?.map((item, i) => ({
|
|
22
|
+
...item,
|
|
23
|
+
file: item.file === undefined ? undefined : redact(`${kind}-file`, String(i), item.file),
|
|
24
|
+
patch: item.patch === undefined ? undefined : redact(`${kind}-patch`, String(i), item.patch),
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
function sanitizePart(part) {
|
|
28
|
+
const id = part.id || "unknown";
|
|
29
|
+
switch (part.part_type || part.type) {
|
|
30
|
+
case "text":
|
|
31
|
+
return {
|
|
32
|
+
...part,
|
|
33
|
+
data: part.data ? { ...part.data, text: redact("text", id, part.data.text || "") } : part.data,
|
|
34
|
+
};
|
|
35
|
+
case "tool_invocation":
|
|
36
|
+
return {
|
|
37
|
+
...part,
|
|
38
|
+
data: part.data ? { ...part.data, args: redactData("tool-input", id, part.data.args) } : part.data,
|
|
39
|
+
};
|
|
40
|
+
case "tool_result":
|
|
41
|
+
return {
|
|
42
|
+
...part,
|
|
43
|
+
data: part.data ? { ...part.data, result: redact("tool-output", id, String(part.data.result || "")) } : part.data,
|
|
44
|
+
};
|
|
45
|
+
case "file":
|
|
46
|
+
return {
|
|
47
|
+
...part,
|
|
48
|
+
data: part.data ? {
|
|
49
|
+
...part.data,
|
|
50
|
+
url: redact("file-url", id, part.data.url || ""),
|
|
51
|
+
filename: part.data.filename ? redact("file-name", id, part.data.filename) : undefined,
|
|
52
|
+
} : part.data,
|
|
53
|
+
};
|
|
54
|
+
default:
|
|
55
|
+
return part;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function sanitizeSession(session, messages) {
|
|
59
|
+
return {
|
|
60
|
+
info: {
|
|
61
|
+
...session,
|
|
62
|
+
title: redact("session-title", session.id, session.title || ""),
|
|
63
|
+
directory: redact("session-directory", session.id, session.directory || ""),
|
|
64
|
+
},
|
|
65
|
+
messages: messages.map((msg) => ({
|
|
66
|
+
...msg,
|
|
67
|
+
parts: (msg.parts || []).map(sanitizePart),
|
|
68
|
+
})),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// ─── Export function ──────────────────────────────────────────────────────────
|
|
72
|
+
async function exportSession(pool, sessionId, opts = {}) {
|
|
73
|
+
const sessionResult = await pool.query(`SELECT * FROM sessions WHERE id = $1`, [sessionId]);
|
|
74
|
+
if (!sessionResult.rows[0]) {
|
|
75
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
76
|
+
}
|
|
77
|
+
const session = sessionResult.rows[0];
|
|
78
|
+
const messagesResult = await pool.query(`SELECT m.*,
|
|
79
|
+
json_agg(
|
|
80
|
+
json_build_object(
|
|
81
|
+
'id', p.id,
|
|
82
|
+
'part_type', p.part_type,
|
|
83
|
+
'data', p.data,
|
|
84
|
+
'order_index', p.order_index
|
|
85
|
+
) ORDER BY p.order_index
|
|
86
|
+
) FILTER (WHERE p.id IS NOT NULL) as parts
|
|
87
|
+
FROM messages m
|
|
88
|
+
LEFT JOIN parts p ON p.message_id = m.id
|
|
89
|
+
WHERE m.session_id = $1
|
|
90
|
+
GROUP BY m.id
|
|
91
|
+
ORDER BY m.created_at ASC`, [sessionId]);
|
|
92
|
+
const messages = messagesResult.rows;
|
|
93
|
+
const exportData = { info: session, messages };
|
|
94
|
+
const output = opts.sanitize ? sanitizeSession(session, messages) : exportData;
|
|
95
|
+
return JSON.stringify(output, null, 2);
|
|
96
|
+
}
|
|
97
|
+
exports.exportSession = exportSession;
|
|
98
|
+
async function listSessionsForExport(pool) {
|
|
99
|
+
const result = await pool.query(`SELECT id, title, updated_at FROM sessions WHERE state != 'deleted' ORDER BY updated_at DESC LIMIT 100`);
|
|
100
|
+
return result.rows;
|
|
101
|
+
}
|
|
102
|
+
exports.listSessionsForExport = listSessionsForExport;
|
|
103
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mDNS / Bonjour local network discovery
|
|
3
|
+
* Ported from opencode's server/mdns.ts — no Effect.js dependency.
|
|
4
|
+
* All output is suppressed — mDNS is a background convenience feature.
|
|
5
|
+
*/
|
|
6
|
+
export declare function publish(port: number, domain?: string): void;
|
|
7
|
+
export declare function unpublish(): void;
|
package/dist/src/mdns.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* mDNS / Bonjour local network discovery
|
|
4
|
+
* Ported from opencode's server/mdns.ts — no Effect.js dependency.
|
|
5
|
+
* All output is suppressed — mDNS is a background convenience feature.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.unpublish = exports.publish = void 0;
|
|
9
|
+
const bonjour_service_1 = require("bonjour-service");
|
|
10
|
+
let bonjour;
|
|
11
|
+
let currentPort;
|
|
12
|
+
function publish(port, domain) {
|
|
13
|
+
if (currentPort === port)
|
|
14
|
+
return;
|
|
15
|
+
if (bonjour)
|
|
16
|
+
unpublish();
|
|
17
|
+
try {
|
|
18
|
+
const host = domain ?? "bonecode.local";
|
|
19
|
+
const name = `bonecode-${port}`;
|
|
20
|
+
bonjour = new bonjour_service_1.Bonjour();
|
|
21
|
+
const service = bonjour.publish({
|
|
22
|
+
name,
|
|
23
|
+
type: "http",
|
|
24
|
+
host,
|
|
25
|
+
port,
|
|
26
|
+
txt: { path: "/" },
|
|
27
|
+
});
|
|
28
|
+
// Silently swallow events — mDNS is best-effort
|
|
29
|
+
service.on("up", () => { });
|
|
30
|
+
service.on("error", () => { });
|
|
31
|
+
currentPort = port;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// mDNS unavailable (e.g. no Bonjour/Avahi installed) — ignore silently
|
|
35
|
+
if (bonjour) {
|
|
36
|
+
try {
|
|
37
|
+
bonjour.destroy();
|
|
38
|
+
}
|
|
39
|
+
catch { }
|
|
40
|
+
}
|
|
41
|
+
bonjour = undefined;
|
|
42
|
+
currentPort = undefined;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.publish = publish;
|
|
46
|
+
function unpublish() {
|
|
47
|
+
if (!bonjour)
|
|
48
|
+
return;
|
|
49
|
+
try {
|
|
50
|
+
bonjour.unpublishAll();
|
|
51
|
+
bonjour.destroy();
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// ignore
|
|
55
|
+
}
|
|
56
|
+
bonjour = undefined;
|
|
57
|
+
currentPort = undefined;
|
|
58
|
+
}
|
|
59
|
+
exports.unpublish = unpublish;
|
|
60
|
+
//# sourceMappingURL=mdns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdns.js","sourceRoot":"","sources":["../../src/mdns.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qDAAyC;AAEzC,IAAI,OAA4B,CAAA;AAChC,IAAI,WAA+B,CAAA;AAEnC,SAAgB,OAAO,CAAC,IAAY,EAAE,MAAe;IACnD,IAAI,WAAW,KAAK,IAAI;QAAE,OAAM;IAChC,IAAI,OAAO;QAAE,SAAS,EAAE,CAAA;IAExB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,gBAAgB,CAAA;QACvC,MAAM,IAAI,GAAG,YAAY,IAAI,EAAE,CAAA;QAC/B,OAAO,GAAG,IAAI,yBAAO,EAAE,CAAA;QACvB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC9B,IAAI;YACJ,IAAI,EAAE,MAAM;YACZ,IAAI;YACJ,IAAI;YACJ,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;SACnB,CAAC,CAAA;QAEF,gDAAgD;QAChD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC1B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAE7B,WAAW,GAAG,IAAI,CAAA;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBAAC,OAAO,CAAC,OAAO,EAAE,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACpC,CAAC;QACD,OAAO,GAAG,SAAS,CAAA;QACnB,WAAW,GAAG,SAAS,CAAA;IACzB,CAAC;AACH,CAAC;AA7BD,0BA6BC;AAED,SAAgB,SAAS;IACvB,IAAI,CAAC,OAAO;QAAE,OAAM;IACpB,IAAI,CAAC;QACH,OAAO,CAAC,YAAY,EAAE,CAAA;QACtB,OAAO,CAAC,OAAO,EAAE,CAAA;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,GAAG,SAAS,CAAA;IACnB,WAAW,GAAG,SAAS,CAAA;AACzB,CAAC;AAVD,8BAUC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BoneCode RAG Ingestion Worker
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities (and only these):
|
|
5
|
+
* 1. Poll the indexing_jobs queue with FOR UPDATE SKIP LOCKED
|
|
6
|
+
* 2. Transition job state through the generated state machine via ServiceClient
|
|
7
|
+
* 3. Drive the BoneScript-generated executeFlow() saga
|
|
8
|
+
* 4. Each saga step calls exactly one capability endpoint or one extension point
|
|
9
|
+
*
|
|
10
|
+
* What this file does NOT do:
|
|
11
|
+
* - Raw SQL for domain objects (sessions, knowledge_bases, code_files, etc.)
|
|
12
|
+
* - File I/O (delegated to read_file_async extension point)
|
|
13
|
+
* - Chunking logic (delegated to chunk_file extension point)
|
|
14
|
+
* - Embedding logic (delegated to embed_batch extension point)
|
|
15
|
+
* - Bulk DB writes (delegated to bulk_insert_chunks extension point)
|
|
16
|
+
*
|
|
17
|
+
* When you change a .bone file and recompile, this worker stays correct
|
|
18
|
+
* because it only calls generated endpoints and extension points.
|
|
19
|
+
*/
|
|
20
|
+
declare class RAGWorker {
|
|
21
|
+
private timer;
|
|
22
|
+
private running;
|
|
23
|
+
private readonly client;
|
|
24
|
+
start(): void;
|
|
25
|
+
stop(): void;
|
|
26
|
+
private tick;
|
|
27
|
+
private claimNextJob;
|
|
28
|
+
private processNextJob;
|
|
29
|
+
private runFullIndexSaga;
|
|
30
|
+
private runReindexFileSaga;
|
|
31
|
+
private runDeleteFileSaga;
|
|
32
|
+
private stepScanDirectory;
|
|
33
|
+
private stepProcessFiles;
|
|
34
|
+
private stepFinalize;
|
|
35
|
+
private processOneFile;
|
|
36
|
+
}
|
|
37
|
+
export declare const ragWorker: RAGWorker;
|
|
38
|
+
export {};
|