@oni.bot/core 1.0.2 → 1.1.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/CHANGELOG.md +146 -146
- package/dist/agents/define-agent.d.ts.map +1 -1
- package/dist/agents/define-agent.js +7 -2
- package/dist/agents/define-agent.js.map +1 -1
- package/dist/checkpoint.d.ts.map +1 -1
- package/dist/checkpoint.js +7 -2
- package/dist/checkpoint.js.map +1 -1
- package/dist/checkpointers/postgres.d.ts.map +1 -1
- package/dist/checkpointers/postgres.js +45 -28
- package/dist/checkpointers/postgres.js.map +1 -1
- package/dist/circuit-breaker.d.ts +1 -0
- package/dist/circuit-breaker.d.ts.map +1 -1
- package/dist/circuit-breaker.js +13 -0
- package/dist/circuit-breaker.js.map +1 -1
- package/dist/cli/dev.d.ts.map +1 -1
- package/dist/cli/dev.js +0 -1
- package/dist/cli/dev.js.map +1 -1
- package/dist/cli/inspect.d.ts.map +1 -1
- package/dist/cli/inspect.js +4 -2
- package/dist/cli/inspect.js.map +1 -1
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +0 -1
- package/dist/cli/run.js.map +1 -1
- package/dist/config/loader.d.ts +1 -1
- package/dist/config/loader.js +12 -4
- package/dist/config/loader.js.map +1 -1
- package/dist/coordination/pubsub.d.ts +1 -0
- package/dist/coordination/pubsub.d.ts.map +1 -1
- package/dist/coordination/pubsub.js +31 -16
- package/dist/coordination/pubsub.js.map +1 -1
- package/dist/coordination/request-reply.d.ts +17 -2
- package/dist/coordination/request-reply.d.ts.map +1 -1
- package/dist/coordination/request-reply.js +56 -14
- package/dist/coordination/request-reply.js.map +1 -1
- package/dist/events/bus.d.ts +1 -0
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/events/bus.js +17 -10
- package/dist/events/bus.js.map +1 -1
- package/dist/functional.d.ts.map +1 -1
- package/dist/functional.js +3 -0
- package/dist/functional.js.map +1 -1
- package/dist/graph.d.ts +11 -1
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +9 -4
- package/dist/graph.js.map +1 -1
- package/dist/guardrails/audit.d.ts +4 -1
- package/dist/guardrails/audit.d.ts.map +1 -1
- package/dist/guardrails/audit.js +18 -1
- package/dist/guardrails/audit.js.map +1 -1
- package/dist/harness/agent-loop.d.ts +1 -7
- package/dist/harness/agent-loop.d.ts.map +1 -1
- package/dist/harness/agent-loop.js +2 -523
- package/dist/harness/agent-loop.js.map +1 -1
- package/dist/harness/context-compactor.d.ts +1 -0
- package/dist/harness/context-compactor.d.ts.map +1 -1
- package/dist/harness/context-compactor.js +43 -1
- package/dist/harness/context-compactor.js.map +1 -1
- package/dist/harness/harness.d.ts +6 -0
- package/dist/harness/harness.d.ts.map +1 -1
- package/dist/harness/harness.js +32 -5
- package/dist/harness/harness.js.map +1 -1
- package/dist/harness/hooks-engine.d.ts.map +1 -1
- package/dist/harness/hooks-engine.js +12 -10
- package/dist/harness/hooks-engine.js.map +1 -1
- package/dist/harness/index.d.ts +3 -1
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +2 -0
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/loop/hooks.d.ts +7 -0
- package/dist/harness/loop/hooks.d.ts.map +1 -0
- package/dist/harness/loop/hooks.js +46 -0
- package/dist/harness/loop/hooks.js.map +1 -0
- package/dist/harness/loop/index.d.ts +8 -0
- package/dist/harness/loop/index.d.ts.map +1 -0
- package/dist/harness/loop/index.js +257 -0
- package/dist/harness/loop/index.js.map +1 -0
- package/dist/harness/loop/inference.d.ts +19 -0
- package/dist/harness/loop/inference.d.ts.map +1 -0
- package/dist/harness/loop/inference.js +121 -0
- package/dist/harness/loop/inference.js.map +1 -0
- package/dist/harness/loop/memory.d.ts +22 -0
- package/dist/harness/loop/memory.d.ts.map +1 -0
- package/dist/harness/loop/memory.js +73 -0
- package/dist/harness/loop/memory.js.map +1 -0
- package/dist/harness/loop/safety.d.ts +8 -0
- package/dist/harness/loop/safety.d.ts.map +1 -0
- package/dist/harness/loop/safety.js +21 -0
- package/dist/harness/loop/safety.js.map +1 -0
- package/dist/harness/loop/tools.d.ts +24 -0
- package/dist/harness/loop/tools.d.ts.map +1 -0
- package/dist/harness/loop/tools.js +184 -0
- package/dist/harness/loop/tools.js.map +1 -0
- package/dist/harness/loop/types.d.ts +7 -0
- package/dist/harness/loop/types.d.ts.map +1 -0
- package/dist/harness/loop/types.js +9 -0
- package/dist/harness/loop/types.js.map +1 -0
- package/dist/harness/memory/fs-compat.d.ts +3 -0
- package/dist/harness/memory/fs-compat.d.ts.map +1 -0
- package/dist/harness/memory/fs-compat.js +26 -0
- package/dist/harness/memory/fs-compat.js.map +1 -0
- package/dist/harness/memory/index.d.ts +105 -0
- package/dist/harness/memory/index.d.ts.map +1 -0
- package/dist/harness/memory/index.js +491 -0
- package/dist/harness/memory/index.js.map +1 -0
- package/dist/harness/memory/prompter.d.ts +7 -0
- package/dist/harness/memory/prompter.d.ts.map +1 -0
- package/dist/harness/memory/prompter.js +24 -0
- package/dist/harness/memory/prompter.js.map +1 -0
- package/dist/harness/memory/ranker.d.ts +15 -0
- package/dist/harness/memory/ranker.d.ts.map +1 -0
- package/dist/harness/memory/ranker.js +72 -0
- package/dist/harness/memory/ranker.js.map +1 -0
- package/dist/harness/memory/scanner.d.ts +26 -0
- package/dist/harness/memory/scanner.d.ts.map +1 -0
- package/dist/harness/memory/scanner.js +187 -0
- package/dist/harness/memory/scanner.js.map +1 -0
- package/dist/harness/memory/types.d.ts +50 -0
- package/dist/harness/memory/types.d.ts.map +1 -0
- package/dist/harness/memory/types.js +7 -0
- package/dist/harness/memory/types.js.map +1 -0
- package/dist/harness/memory-loader.d.ts +3 -0
- package/dist/harness/memory-loader.d.ts.map +1 -0
- package/dist/harness/memory-loader.js +2 -0
- package/dist/harness/memory-loader.js.map +1 -0
- package/dist/harness/safety-gate.d.ts.map +1 -1
- package/dist/harness/safety-gate.js +47 -26
- package/dist/harness/safety-gate.js.map +1 -1
- package/dist/harness/skill-loader.d.ts +7 -0
- package/dist/harness/skill-loader.d.ts.map +1 -1
- package/dist/harness/skill-loader.js +24 -8
- package/dist/harness/skill-loader.js.map +1 -1
- package/dist/harness/todo-module.d.ts.map +1 -1
- package/dist/harness/todo-module.js +13 -6
- package/dist/harness/todo-module.js.map +1 -1
- package/dist/harness/types.d.ts +7 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js.map +1 -1
- package/dist/harness/validate-args.js +18 -3
- package/dist/harness/validate-args.js.map +1 -1
- package/dist/hitl/interrupt.d.ts +2 -2
- package/dist/hitl/interrupt.d.ts.map +1 -1
- package/dist/hitl/interrupt.js +8 -5
- package/dist/hitl/interrupt.js.map +1 -1
- package/dist/hitl/resume.d.ts +10 -0
- package/dist/hitl/resume.d.ts.map +1 -1
- package/dist/hitl/resume.js +31 -0
- package/dist/hitl/resume.js.map +1 -1
- package/dist/injected.d.ts.map +1 -1
- package/dist/injected.js.map +1 -1
- package/dist/inspect.d.ts.map +1 -1
- package/dist/inspect.js +28 -8
- package/dist/inspect.js.map +1 -1
- package/dist/lsp/client.d.ts +2 -0
- package/dist/lsp/client.d.ts.map +1 -1
- package/dist/lsp/client.js +62 -17
- package/dist/lsp/client.js.map +1 -1
- package/dist/lsp/index.d.ts.map +1 -1
- package/dist/lsp/index.js.map +1 -1
- package/dist/mcp/client.d.ts +2 -0
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +44 -13
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/convert.js +1 -1
- package/dist/mcp/convert.js.map +1 -1
- package/dist/mcp/transport.d.ts +2 -0
- package/dist/mcp/transport.d.ts.map +1 -1
- package/dist/mcp/transport.js +33 -8
- package/dist/mcp/transport.js.map +1 -1
- package/dist/messages/index.d.ts.map +1 -1
- package/dist/messages/index.js +7 -1
- package/dist/messages/index.js.map +1 -1
- package/dist/models/anthropic.d.ts.map +1 -1
- package/dist/models/anthropic.js +25 -15
- package/dist/models/anthropic.js.map +1 -1
- package/dist/models/google.d.ts.map +1 -1
- package/dist/models/google.js +23 -7
- package/dist/models/google.js.map +1 -1
- package/dist/models/ollama.d.ts.map +1 -1
- package/dist/models/ollama.js +11 -1
- package/dist/models/ollama.js.map +1 -1
- package/dist/models/openai.d.ts.map +1 -1
- package/dist/models/openai.js +15 -3
- package/dist/models/openai.js.map +1 -1
- package/dist/models/openrouter.d.ts.map +1 -1
- package/dist/models/openrouter.js +14 -3
- package/dist/models/openrouter.js.map +1 -1
- package/dist/prebuilt/react-agent.d.ts.map +1 -1
- package/dist/prebuilt/react-agent.js +7 -2
- package/dist/prebuilt/react-agent.js.map +1 -1
- package/dist/pregel/checkpointing.d.ts +12 -0
- package/dist/pregel/checkpointing.d.ts.map +1 -0
- package/dist/pregel/checkpointing.js +60 -0
- package/dist/pregel/checkpointing.js.map +1 -0
- package/dist/pregel/execution.d.ts +7 -0
- package/dist/pregel/execution.d.ts.map +1 -0
- package/dist/pregel/execution.js +178 -0
- package/dist/pregel/execution.js.map +1 -0
- package/dist/pregel/index.d.ts +61 -0
- package/dist/pregel/index.d.ts.map +1 -0
- package/dist/pregel/index.js +154 -0
- package/dist/pregel/index.js.map +1 -0
- package/dist/pregel/interrupts.d.ts +3 -0
- package/dist/pregel/interrupts.d.ts.map +1 -0
- package/dist/pregel/interrupts.js +7 -0
- package/dist/pregel/interrupts.js.map +1 -0
- package/dist/pregel/state-helpers.d.ts +12 -0
- package/dist/pregel/state-helpers.d.ts.map +1 -0
- package/dist/pregel/state-helpers.js +71 -0
- package/dist/pregel/state-helpers.js.map +1 -0
- package/dist/pregel/streaming.d.ts +5 -0
- package/dist/pregel/streaming.d.ts.map +1 -0
- package/dist/pregel/streaming.js +462 -0
- package/dist/pregel/streaming.js.map +1 -0
- package/dist/pregel/types.d.ts +48 -0
- package/dist/pregel/types.d.ts.map +1 -0
- package/dist/pregel/types.js +5 -0
- package/dist/pregel/types.js.map +1 -0
- package/dist/pregel.d.ts +1 -63
- package/dist/pregel.d.ts.map +1 -1
- package/dist/pregel.js +2 -804
- package/dist/pregel.js.map +1 -1
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +7 -6
- package/dist/retry.js.map +1 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +36 -9
- package/dist/store/index.js.map +1 -1
- package/dist/stream-events.d.ts.map +1 -1
- package/dist/stream-events.js +3 -9
- package/dist/stream-events.js.map +1 -1
- package/dist/swarm/agent-node.d.ts +11 -0
- package/dist/swarm/agent-node.d.ts.map +1 -0
- package/dist/swarm/agent-node.js +156 -0
- package/dist/swarm/agent-node.js.map +1 -0
- package/dist/swarm/compile-ext.d.ts +5 -0
- package/dist/swarm/compile-ext.d.ts.map +1 -0
- package/dist/swarm/compile-ext.js +126 -0
- package/dist/swarm/compile-ext.js.map +1 -0
- package/dist/swarm/config.d.ts +147 -0
- package/dist/swarm/config.d.ts.map +1 -0
- package/dist/swarm/config.js +17 -0
- package/dist/swarm/config.js.map +1 -0
- package/dist/swarm/factories.d.ts +37 -0
- package/dist/swarm/factories.d.ts.map +1 -0
- package/dist/swarm/factories.js +703 -0
- package/dist/swarm/factories.js.map +1 -0
- package/dist/swarm/graph.d.ts +16 -136
- package/dist/swarm/graph.d.ts.map +1 -1
- package/dist/swarm/graph.js +39 -897
- package/dist/swarm/graph.js.map +1 -1
- package/dist/swarm/index.d.ts +2 -1
- package/dist/swarm/index.d.ts.map +1 -1
- package/dist/swarm/index.js.map +1 -1
- package/dist/swarm/mailbox.d.ts.map +1 -1
- package/dist/swarm/mailbox.js +3 -1
- package/dist/swarm/mailbox.js.map +1 -1
- package/dist/swarm/mermaid.d.ts +2 -1
- package/dist/swarm/mermaid.d.ts.map +1 -1
- package/dist/swarm/mermaid.js +6 -3
- package/dist/swarm/mermaid.js.map +1 -1
- package/dist/swarm/pool.d.ts.map +1 -1
- package/dist/swarm/pool.js +18 -1
- package/dist/swarm/pool.js.map +1 -1
- package/dist/swarm/registry.d.ts.map +1 -1
- package/dist/swarm/registry.js +7 -0
- package/dist/swarm/registry.js.map +1 -1
- package/dist/swarm/scaling.d.ts +10 -1
- package/dist/swarm/scaling.d.ts.map +1 -1
- package/dist/swarm/scaling.js +85 -14
- package/dist/swarm/scaling.js.map +1 -1
- package/dist/swarm/snapshot.d.ts.map +1 -1
- package/dist/swarm/snapshot.js +10 -1
- package/dist/swarm/snapshot.js.map +1 -1
- package/dist/swarm/supervisor.js +20 -12
- package/dist/swarm/supervisor.js.map +1 -1
- package/dist/swarm/tracer.d.ts +3 -1
- package/dist/swarm/tracer.d.ts.map +1 -1
- package/dist/swarm/tracer.js +66 -15
- package/dist/swarm/tracer.js.map +1 -1
- package/dist/swarm/types.d.ts +1 -6
- package/dist/swarm/types.d.ts.map +1 -1
- package/dist/testing/index.d.ts +4 -4
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3 -2
- package/dist/testing/index.js.map +1 -1
- package/dist/tools/define.d.ts +2 -1
- package/dist/tools/define.d.ts.map +1 -1
- package/dist/tools/define.js +3 -1
- package/dist/tools/define.js.map +1 -1
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// @oni.bot/core/harness/loop — Tools
|
|
3
|
+
// Tool schema → adapter conversion + sequential execution.
|
|
4
|
+
// ============================================================
|
|
5
|
+
import { validateToolArgs } from "../validate-args.js";
|
|
6
|
+
import { makeMessage } from "./types.js";
|
|
7
|
+
import { checkSafety } from "./safety.js";
|
|
8
|
+
// ─── buildLLMTools ──────────────────────────────────────────────────────────
|
|
9
|
+
/** Convert ToolDefinition[] to LLMToolDef[] for the model adapter. */
|
|
10
|
+
export function buildLLMTools(tools) {
|
|
11
|
+
return tools.map((t) => ({
|
|
12
|
+
name: t.name,
|
|
13
|
+
description: t.description,
|
|
14
|
+
parameters: t.schema,
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
/** Build a name → ToolDefinition lookup map. */
|
|
18
|
+
export function buildToolMap(tools) {
|
|
19
|
+
const toolMap = new Map();
|
|
20
|
+
for (const t of tools) {
|
|
21
|
+
toolMap.set(t.name, t);
|
|
22
|
+
}
|
|
23
|
+
return toolMap;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Execute all tool calls for a turn.
|
|
27
|
+
* Returns tool results and any yield-able events (tool_start, tool_metadata).
|
|
28
|
+
*/
|
|
29
|
+
export async function executeTools(toolCalls, ctx) {
|
|
30
|
+
const { sessionId, threadId, turn, config, toolMap, hasMemoryLoader } = ctx;
|
|
31
|
+
const toolResults = [];
|
|
32
|
+
const events = [];
|
|
33
|
+
for (const toolCall of toolCalls) {
|
|
34
|
+
// Fire PreToolUse hook
|
|
35
|
+
if (config.hooksEngine) {
|
|
36
|
+
const preResult = await config.hooksEngine.fire("PreToolUse", {
|
|
37
|
+
sessionId,
|
|
38
|
+
toolName: toolCall.name,
|
|
39
|
+
input: toolCall.args,
|
|
40
|
+
});
|
|
41
|
+
if (preResult?.decision === "deny") {
|
|
42
|
+
toolResults.push({
|
|
43
|
+
toolCallId: toolCall.id,
|
|
44
|
+
toolName: toolCall.name,
|
|
45
|
+
content: `Tool use denied: ${preResult.reason ?? "blocked by hook"}`,
|
|
46
|
+
isError: true,
|
|
47
|
+
});
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
// Apply modifiedInput if hook returned one
|
|
51
|
+
if (preResult?.modifiedInput) {
|
|
52
|
+
Object.assign(toolCall.args, preResult.modifiedInput);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Safety gate check
|
|
56
|
+
const safetyResult = await checkSafety(config.safetyGate, toolCall.id, toolCall.name, toolCall.args);
|
|
57
|
+
if (safetyResult !== null && !safetyResult.approved) {
|
|
58
|
+
toolResults.push({
|
|
59
|
+
toolCallId: toolCall.id,
|
|
60
|
+
toolName: toolCall.name,
|
|
61
|
+
content: `Tool blocked by safety gate: ${safetyResult.reason ?? "unsafe operation"}`,
|
|
62
|
+
isError: true,
|
|
63
|
+
});
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
// Find tool
|
|
67
|
+
const toolDef = toolMap.get(toolCall.name);
|
|
68
|
+
if (!toolDef) {
|
|
69
|
+
toolResults.push({
|
|
70
|
+
toolCallId: toolCall.id,
|
|
71
|
+
toolName: toolCall.name,
|
|
72
|
+
content: `Unknown tool: ${toolCall.name}`,
|
|
73
|
+
isError: true,
|
|
74
|
+
});
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
// Validate tool arguments before execution
|
|
78
|
+
if (toolDef.schema) {
|
|
79
|
+
const validationError = validateToolArgs(toolCall.args, toolDef.schema, toolCall.name);
|
|
80
|
+
if (validationError) {
|
|
81
|
+
toolResults.push({
|
|
82
|
+
toolCallId: toolCall.id,
|
|
83
|
+
toolName: toolCall.name,
|
|
84
|
+
content: `${validationError}. Please retry with correct arguments.`,
|
|
85
|
+
isError: true,
|
|
86
|
+
});
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Yield tool_start so the conductor can emit tool.call events
|
|
91
|
+
events.push(makeMessage("tool_start", sessionId, turn, {
|
|
92
|
+
metadata: {
|
|
93
|
+
toolName: toolCall.name,
|
|
94
|
+
toolArgs: toolCall.args,
|
|
95
|
+
toolCallId: toolCall.id,
|
|
96
|
+
},
|
|
97
|
+
}));
|
|
98
|
+
const metadataUpdates = [];
|
|
99
|
+
const toolCtx = {
|
|
100
|
+
config: {},
|
|
101
|
+
store: null,
|
|
102
|
+
state: {},
|
|
103
|
+
emit: () => { },
|
|
104
|
+
sessionId,
|
|
105
|
+
threadId,
|
|
106
|
+
agentName: config.agentName,
|
|
107
|
+
turn,
|
|
108
|
+
signal: config.signal,
|
|
109
|
+
metadata: (update) => {
|
|
110
|
+
metadataUpdates.push(update);
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
try {
|
|
114
|
+
const startTime = Date.now();
|
|
115
|
+
const rawResult = await toolDef.execute(toolCall.args, toolCtx);
|
|
116
|
+
const durationMs = Date.now() - startTime;
|
|
117
|
+
const content = typeof rawResult === "string" ? rawResult : JSON.stringify(rawResult);
|
|
118
|
+
// Push the successful result first — before the hook — so a hook
|
|
119
|
+
// throw cannot retroactively mark this tool call as failed.
|
|
120
|
+
toolResults.push({
|
|
121
|
+
toolCallId: toolCall.id,
|
|
122
|
+
toolName: toolCall.name,
|
|
123
|
+
content,
|
|
124
|
+
durationMs,
|
|
125
|
+
});
|
|
126
|
+
// Yield collected metadata updates from ctx.metadata() calls
|
|
127
|
+
for (const mu of metadataUpdates) {
|
|
128
|
+
events.push(makeMessage("tool_metadata", sessionId, turn, {
|
|
129
|
+
metadata: {
|
|
130
|
+
toolCallId: toolCall.id,
|
|
131
|
+
toolName: toolCall.name,
|
|
132
|
+
title: mu.title,
|
|
133
|
+
data: mu.metadata,
|
|
134
|
+
},
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
// Fire PostToolUse — in its own try/catch so a hook error does not
|
|
138
|
+
// corrupt the conversation history by triggering PostToolUseFailure
|
|
139
|
+
// for a tool that actually succeeded.
|
|
140
|
+
if (config.hooksEngine) {
|
|
141
|
+
try {
|
|
142
|
+
await config.hooksEngine.fire("PostToolUse", {
|
|
143
|
+
sessionId,
|
|
144
|
+
toolName: toolCall.name,
|
|
145
|
+
input: toolCall.args,
|
|
146
|
+
output: rawResult,
|
|
147
|
+
durationMs,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
// Hook errors are non-fatal — the tool result is already recorded.
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
157
|
+
// Fire PostToolUseFailure — in its own try/catch so a hook error does not
|
|
158
|
+
// drop the error result from toolResults or corrupt conversation history.
|
|
159
|
+
if (config.hooksEngine) {
|
|
160
|
+
try {
|
|
161
|
+
await config.hooksEngine.fire("PostToolUseFailure", {
|
|
162
|
+
sessionId,
|
|
163
|
+
toolName: toolCall.name,
|
|
164
|
+
input: toolCall.args,
|
|
165
|
+
error: err instanceof Error ? err : errorMsg,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// Hook errors are non-fatal — the tool error result is still recorded.
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
toolResults.push({
|
|
173
|
+
toolCallId: toolCall.id,
|
|
174
|
+
toolName: toolCall.name,
|
|
175
|
+
content: hasMemoryLoader
|
|
176
|
+
? `Tool error: ${errorMsg}\n\nMemory query may help — call memory_query with a specific topic if this failure suggests a knowledge gap.`
|
|
177
|
+
: `Tool error: ${errorMsg}`,
|
|
178
|
+
isError: true,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return { toolResults, events };
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/harness/loop/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { AgentLoopConfig, LoopMessage, LoopMessageType, LoopToolResult, HarnessToolContext, SessionOutcome, } from "../types.js";
|
|
2
|
+
export type { ONIModelMessage, ChatResponse, LLMToolDef, } from "../../models/types.js";
|
|
3
|
+
export type { ToolDefinition } from "../../tools/types.js";
|
|
4
|
+
export { generateId } from "../types.js";
|
|
5
|
+
import type { LoopMessage, LoopMessageType } from "../types.js";
|
|
6
|
+
export declare function makeMessage(type: LoopMessageType, sessionId: string, turn: number, overrides?: Partial<LoopMessage>): LoopMessage;
|
|
7
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/harness/loop/types.ts"],"names":[],"mappings":"AAOA,YAAY,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,eAAe,EACf,YAAY,EACZ,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhE,wBAAgB,WAAW,CACzB,IAAI,EAAE,eAAe,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,OAAO,CAAC,WAAW,CAAM,GACnC,WAAW,CAEb"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// @oni.bot/core/harness/loop — Internal types
|
|
3
|
+
// Shared types used across the loop sub-modules.
|
|
4
|
+
// ============================================================
|
|
5
|
+
export { generateId } from "../types.js";
|
|
6
|
+
export function makeMessage(type, sessionId, turn, overrides = {}) {
|
|
7
|
+
return { type, sessionId, turn, timestamp: Date.now(), ...overrides };
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/harness/loop/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,8CAA8C;AAC9C,iDAAiD;AACjD,+DAA+D;AAqB/D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC,MAAM,UAAU,WAAW,CACzB,IAAqB,EACrB,SAAiB,EACjB,IAAY,EACZ,YAAkC,EAAE;IAEpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-compat.d.ts","sourceRoot":"","sources":["../../../src/harness/memory/fs-compat.ts"],"names":[],"mappings":"AAQA,wBAAgB,KAAK,IAAI,cAAc,IAAI,CAAC,GAAG,IAAI,CAOlD;AAED,wBAAgB,OAAO,IAAI,cAAc,MAAM,CAAC,GAAG,IAAI,CAOtD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// @oni.bot/core/harness/memory — fs-compat
|
|
3
|
+
//
|
|
4
|
+
// Lazy fs/path helpers for browser compatibility.
|
|
5
|
+
// Single source of truth — all modules that need fs must import
|
|
6
|
+
// from here, NOT use top-level import * as fs from 'node:fs'.
|
|
7
|
+
// ============================================================
|
|
8
|
+
export function getFs() {
|
|
9
|
+
try {
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
11
|
+
return require("fs");
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function getPath() {
|
|
18
|
+
try {
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
20
|
+
return require("path");
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=fs-compat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-compat.js","sourceRoot":"","sources":["../../../src/harness/memory/fs-compat.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,2CAA2C;AAC3C,EAAE;AACF,kDAAkD;AAClD,gEAAgE;AAChE,8DAA8D;AAC9D,+DAA+D;AAE/D,MAAM,UAAU,KAAK;IACnB,IAAI,CAAC;QACH,iEAAiE;QACjE,OAAO,OAAO,CAAC,IAAI,CAAwB,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,IAAI,CAAC;QACH,iEAAiE;QACjE,OAAO,OAAO,CAAC,MAAM,CAA0B,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { ToolDefinition } from "../../tools/types.js";
|
|
2
|
+
export * from "./types.js";
|
|
3
|
+
import type { MemoryTier, MemoryType, MemoryUnit, LoadResult, MemoryLoaderConfig } from "./types.js";
|
|
4
|
+
export declare class MemoryLoader {
|
|
5
|
+
private readonly config;
|
|
6
|
+
private units;
|
|
7
|
+
private loaded;
|
|
8
|
+
private static readonly DEFAULT_BUDGETS;
|
|
9
|
+
constructor(config: MemoryLoaderConfig);
|
|
10
|
+
static fromRoot(root: string, opts?: Partial<MemoryLoaderConfig>): MemoryLoader;
|
|
11
|
+
private ensureDirectoryStructure;
|
|
12
|
+
scan(): void;
|
|
13
|
+
private registerFileSelf;
|
|
14
|
+
/**
|
|
15
|
+
* wake() — Load Tier 0 (identity). Always called first.
|
|
16
|
+
* Additive: already-loaded units are skipped.
|
|
17
|
+
*/
|
|
18
|
+
wake(): LoadResult;
|
|
19
|
+
/**
|
|
20
|
+
* orient() — Load Tier 1 (working, user/PROFILE, INDEX files).
|
|
21
|
+
* Additive.
|
|
22
|
+
*/
|
|
23
|
+
orient(): LoadResult;
|
|
24
|
+
/**
|
|
25
|
+
* match(task) — Load Tier 2 units relevant to the task string.
|
|
26
|
+
* Scored by tag-overlap × recency. Additive.
|
|
27
|
+
* Returns empty LoadResult if taskTokens is empty (no error).
|
|
28
|
+
*/
|
|
29
|
+
match(task: string): LoadResult;
|
|
30
|
+
/**
|
|
31
|
+
* query(topic) — Load Tier 3 units. Called only via the memory_query tool.
|
|
32
|
+
* Additive.
|
|
33
|
+
*/
|
|
34
|
+
query(topic: string): LoadResult;
|
|
35
|
+
/**
|
|
36
|
+
* load(key) — Directly load a specific memory unit by key. Additive.
|
|
37
|
+
*/
|
|
38
|
+
load(key: string): MemoryUnit | null;
|
|
39
|
+
/**
|
|
40
|
+
* loadType(type) — Load all units of a given memory type.
|
|
41
|
+
* Budget: 16000t fixed (intentional escape hatch). Additive.
|
|
42
|
+
*/
|
|
43
|
+
loadType(type: MemoryType): LoadResult;
|
|
44
|
+
/**
|
|
45
|
+
* buildSystemPrompt(tiers) — Assemble loaded units into a system prompt string.
|
|
46
|
+
* Default tiers: [0, 1, 2]
|
|
47
|
+
*/
|
|
48
|
+
buildSystemPrompt(tiers?: MemoryTier[]): string;
|
|
49
|
+
/**
|
|
50
|
+
* getLoadedManifest() — Compact list of loaded keys + costs.
|
|
51
|
+
* Format: "- <key> (T<tier>, <cost>t)" per line.
|
|
52
|
+
*/
|
|
53
|
+
getLoadedManifest(): string;
|
|
54
|
+
/** resetSession() — Clear loaded set and release hydrated content. Does not remove files. */
|
|
55
|
+
resetSession(): void;
|
|
56
|
+
/**
|
|
57
|
+
* persist() — Write a memory unit to disk.
|
|
58
|
+
* autoIndex: rebuildIndex() called synchronously before return when autoIndex === true.
|
|
59
|
+
* Returns MemoryUnit with content populated.
|
|
60
|
+
*/
|
|
61
|
+
persist(type: MemoryType, filename: string, content: string, subfolder?: string): MemoryUnit;
|
|
62
|
+
private persistInternal;
|
|
63
|
+
/**
|
|
64
|
+
* persistEpisodic() — Write session log to episodic/recent/<date>_<sessionId>.md.
|
|
65
|
+
* Triggers compaction if recent/ has files older than episodicRecentDays.
|
|
66
|
+
*/
|
|
67
|
+
persistEpisodic(sessionId: string, content: string): MemoryUnit;
|
|
68
|
+
/**
|
|
69
|
+
* persistSemantic() — Write knowledge unit to semantic/<domain>/<topic>.md.
|
|
70
|
+
* Rebuilds both domain INDEX.md and root semantic INDEX.md.
|
|
71
|
+
*/
|
|
72
|
+
persistSemantic(domain: string, topic: string, content: string): MemoryUnit;
|
|
73
|
+
/**
|
|
74
|
+
* rebuildIndex() — Rewrite the INDEX.md for a given folder.
|
|
75
|
+
* INDEX.md files are write-only — never read back by the loader.
|
|
76
|
+
*/
|
|
77
|
+
rebuildIndex(folder: string): void;
|
|
78
|
+
/** rebuildAllIndexes() — Rebuild every INDEX.md in the tree. */
|
|
79
|
+
rebuildAllIndexes(): void;
|
|
80
|
+
stats(): {
|
|
81
|
+
totalUnits: number;
|
|
82
|
+
currentlyLoaded: number;
|
|
83
|
+
totalTokensOnDisk: number;
|
|
84
|
+
byType: Record<string, number>;
|
|
85
|
+
byTier: Record<string, number>;
|
|
86
|
+
root: string;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* getQueryTool() — Returns the memory_query ToolDefinition.
|
|
90
|
+
* The `reason` param is prompting-only — not used in execute logic.
|
|
91
|
+
* `_ctx` is typed as ToolContext (base); MemoryLoader needs no harness-specific context.
|
|
92
|
+
*/
|
|
93
|
+
getQueryTool(): ToolDefinition<{
|
|
94
|
+
topic: string;
|
|
95
|
+
reason: string;
|
|
96
|
+
}, object>;
|
|
97
|
+
private loadByTier;
|
|
98
|
+
private getUnitsByTier;
|
|
99
|
+
private getBudget;
|
|
100
|
+
private hydrate;
|
|
101
|
+
private injectFrontmatter;
|
|
102
|
+
private compactEpisodicIfNeeded;
|
|
103
|
+
private log;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/harness/memory/index.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,sBAAsB,CAAC;AAcxE,cAAc,YAAY,CAAC;AAE3B,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAIpB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,MAAM,CAA0B;IAExC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAKrC;gBAEU,MAAM,EAAE,kBAAkB;IAetC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,YAAY;IAM/E,OAAO,CAAC,wBAAwB;IAuBhC,IAAI,IAAI,IAAI;IAOZ,OAAO,CAAC,gBAAgB;IAOxB;;;OAGG;IACH,IAAI,IAAI,UAAU;IAIlB;;;OAGG;IACH,MAAM,IAAI,UAAU;IAIpB;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAW/B;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAWhC;;OAEG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAQpC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;IAUtC;;;OAGG;IACH,iBAAiB,CAAC,KAAK,GAAE,UAAU,EAAc,GAAG,MAAM;IAI1D;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAS3B,6FAA6F;IAC7F,YAAY,IAAI,IAAI;IAUpB;;;;OAIG;IACH,OAAO,CACL,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,UAAU;IAIb,OAAO,CAAC,eAAe;IAmFvB;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU;IAS/D;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU;IAc3E;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAoDlC,gEAAgE;IAChE,iBAAiB,IAAI,IAAI;IAczB,KAAK,IAAI;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,IAAI,EAAE,MAAM,CAAC;KACd;IAuBD;;;;OAIG;IACH,YAAY,IAAI,cAAc,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC;IA4CzE,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,uBAAuB;IAuD/B,OAAO,CAAC,GAAG;CAGZ"}
|