@botbotgo/runtime 1.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/.github/workflows/ci.yml +46 -0
- package/.github/workflows/release.yml +79 -0
- package/README.md +71 -0
- package/config/examples/memory.yaml +39 -0
- package/config/examples/model.yaml +21 -0
- package/config/examples/runtime.yaml +44 -0
- package/config/examples/skills.yaml +8 -0
- package/config/examples/tool.yaml +16 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +41 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +140 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/resolveRuntimeConfig.d.ts +83 -0
- package/dist/config/resolveRuntimeConfig.d.ts.map +1 -0
- package/dist/config/resolveRuntimeConfig.js +85 -0
- package/dist/config/resolveRuntimeConfig.js.map +1 -0
- package/dist/config/resources.d.ts +112 -0
- package/dist/config/resources.d.ts.map +1 -0
- package/dist/config/resources.js +20 -0
- package/dist/config/resources.js.map +1 -0
- package/dist/config/runtimeConfigLoader.d.ts +28 -0
- package/dist/config/runtimeConfigLoader.d.ts.map +1 -0
- package/dist/config/runtimeConfigLoader.js +38 -0
- package/dist/config/runtimeConfigLoader.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/agentMiddleware.d.ts +3 -0
- package/dist/runtime/agentMiddleware.d.ts.map +1 -0
- package/dist/runtime/agentMiddleware.js +2 -0
- package/dist/runtime/agentMiddleware.js.map +1 -0
- package/dist/runtime/bootstrap/runtimeFactory.d.ts +7 -0
- package/dist/runtime/bootstrap/runtimeFactory.d.ts.map +1 -0
- package/dist/runtime/bootstrap/runtimeFactory.js +139 -0
- package/dist/runtime/bootstrap/runtimeFactory.js.map +1 -0
- package/dist/runtime/bootstrap/runtimeModuleInitializer.d.ts +5 -0
- package/dist/runtime/bootstrap/runtimeModuleInitializer.d.ts.map +1 -0
- package/dist/runtime/bootstrap/runtimeModuleInitializer.js +32 -0
- package/dist/runtime/bootstrap/runtimeModuleInitializer.js.map +1 -0
- package/dist/runtime/context/agentContext.d.ts +5 -0
- package/dist/runtime/context/agentContext.d.ts.map +1 -0
- package/dist/runtime/context/agentContext.js +19 -0
- package/dist/runtime/context/agentContext.js.map +1 -0
- package/dist/runtime/context/globalContext.d.ts +19 -0
- package/dist/runtime/context/globalContext.d.ts.map +1 -0
- package/dist/runtime/context/globalContext.js +47 -0
- package/dist/runtime/context/globalContext.js.map +1 -0
- package/dist/runtime/events/eventPublisher.d.ts +15 -0
- package/dist/runtime/events/eventPublisher.d.ts.map +1 -0
- package/dist/runtime/events/eventPublisher.js +23 -0
- package/dist/runtime/events/eventPublisher.js.map +1 -0
- package/dist/runtime/execution/agentRunExecutor.d.ts +38 -0
- package/dist/runtime/execution/agentRunExecutor.d.ts.map +1 -0
- package/dist/runtime/execution/agentRunExecutor.js +378 -0
- package/dist/runtime/execution/agentRunExecutor.js.map +1 -0
- package/dist/runtime/execution/agentRunExecutor.types.d.ts +37 -0
- package/dist/runtime/execution/agentRunExecutor.types.d.ts.map +1 -0
- package/dist/runtime/execution/agentRunExecutor.types.js +2 -0
- package/dist/runtime/execution/agentRunExecutor.types.js.map +1 -0
- package/dist/runtime/execution/agentRunProgress.d.ts +8 -0
- package/dist/runtime/execution/agentRunProgress.d.ts.map +1 -0
- package/dist/runtime/execution/agentRunProgress.js +46 -0
- package/dist/runtime/execution/agentRunProgress.js.map +1 -0
- package/dist/runtime/execution/agentRunState.d.ts +44 -0
- package/dist/runtime/execution/agentRunState.d.ts.map +1 -0
- package/dist/runtime/execution/agentRunState.js +17 -0
- package/dist/runtime/execution/agentRunState.js.map +1 -0
- package/dist/runtime/execution/policies/runCompletionPolicy.d.ts +5 -0
- package/dist/runtime/execution/policies/runCompletionPolicy.d.ts.map +1 -0
- package/dist/runtime/execution/policies/runCompletionPolicy.js +30 -0
- package/dist/runtime/execution/policies/runCompletionPolicy.js.map +1 -0
- package/dist/runtime/execution/policies/runErrorPolicy.d.ts +7 -0
- package/dist/runtime/execution/policies/runErrorPolicy.d.ts.map +1 -0
- package/dist/runtime/execution/policies/runErrorPolicy.js +40 -0
- package/dist/runtime/execution/policies/runErrorPolicy.js.map +1 -0
- package/dist/runtime/execution/policies/runPromptBuilder.d.ts +10 -0
- package/dist/runtime/execution/policies/runPromptBuilder.d.ts.map +1 -0
- package/dist/runtime/execution/policies/runPromptBuilder.js +34 -0
- package/dist/runtime/execution/policies/runPromptBuilder.js.map +1 -0
- package/dist/runtime/execution/policies/runSummaryFormatter.d.ts +6 -0
- package/dist/runtime/execution/policies/runSummaryFormatter.d.ts.map +1 -0
- package/dist/runtime/execution/policies/runSummaryFormatter.js +47 -0
- package/dist/runtime/execution/policies/runSummaryFormatter.js.map +1 -0
- package/dist/runtime/execution/policies/runtimeDelay.d.ts +4 -0
- package/dist/runtime/execution/policies/runtimeDelay.d.ts.map +1 -0
- package/dist/runtime/execution/policies/runtimeDelay.js +6 -0
- package/dist/runtime/execution/policies/runtimeDelay.js.map +1 -0
- package/dist/runtime/execution/policies/toolConfigReader.d.ts +8 -0
- package/dist/runtime/execution/policies/toolConfigReader.d.ts.map +1 -0
- package/dist/runtime/execution/policies/toolConfigReader.js +91 -0
- package/dist/runtime/execution/policies/toolConfigReader.js.map +1 -0
- package/dist/runtime/human-loop/consoleHumanLoop.d.ts +21 -0
- package/dist/runtime/human-loop/consoleHumanLoop.d.ts.map +1 -0
- package/dist/runtime/human-loop/consoleHumanLoop.js +102 -0
- package/dist/runtime/human-loop/consoleHumanLoop.js.map +1 -0
- package/dist/runtime/human-loop/humanLoop.d.ts +44 -0
- package/dist/runtime/human-loop/humanLoop.d.ts.map +1 -0
- package/dist/runtime/human-loop/humanLoop.js +36 -0
- package/dist/runtime/human-loop/humanLoop.js.map +1 -0
- package/dist/runtime/index.d.ts +10 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +6 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/middleware/agentToolMiddleware.d.ts +30 -0
- package/dist/runtime/middleware/agentToolMiddleware.d.ts.map +1 -0
- package/dist/runtime/middleware/agentToolMiddleware.js +259 -0
- package/dist/runtime/middleware/agentToolMiddleware.js.map +1 -0
- package/dist/runtime/middleware/commandPolicy.d.ts +8 -0
- package/dist/runtime/middleware/commandPolicy.d.ts.map +1 -0
- package/dist/runtime/middleware/commandPolicy.js +55 -0
- package/dist/runtime/middleware/commandPolicy.js.map +1 -0
- package/dist/runtime/middleware/frameworkPrompt.d.ts +4 -0
- package/dist/runtime/middleware/frameworkPrompt.d.ts.map +1 -0
- package/dist/runtime/middleware/frameworkPrompt.js +44 -0
- package/dist/runtime/middleware/frameworkPrompt.js.map +1 -0
- package/dist/runtime/middleware/index.d.ts +4 -0
- package/dist/runtime/middleware/index.d.ts.map +1 -0
- package/dist/runtime/middleware/index.js +3 -0
- package/dist/runtime/middleware/index.js.map +1 -0
- package/dist/runtime/middleware/skillPathMap.d.ts +3 -0
- package/dist/runtime/middleware/skillPathMap.d.ts.map +1 -0
- package/dist/runtime/middleware/skillPathMap.js +44 -0
- package/dist/runtime/middleware/skillPathMap.js.map +1 -0
- package/dist/runtime/middleware/toolArgsNormalizer.d.ts +21 -0
- package/dist/runtime/middleware/toolArgsNormalizer.d.ts.map +1 -0
- package/dist/runtime/middleware/toolArgsNormalizer.js +227 -0
- package/dist/runtime/middleware/toolArgsNormalizer.js.map +1 -0
- package/dist/runtime/middleware/toolCallGuard.d.ts +8 -0
- package/dist/runtime/middleware/toolCallGuard.d.ts.map +1 -0
- package/dist/runtime/middleware/toolCallGuard.js +60 -0
- package/dist/runtime/middleware/toolCallGuard.js.map +1 -0
- package/dist/runtime/middleware/toolFsHandlers.d.ts +12 -0
- package/dist/runtime/middleware/toolFsHandlers.d.ts.map +1 -0
- package/dist/runtime/middleware/toolFsHandlers.js +79 -0
- package/dist/runtime/middleware/toolFsHandlers.js.map +1 -0
- package/dist/runtime/middleware/toolRequestParser.d.ts +14 -0
- package/dist/runtime/middleware/toolRequestParser.d.ts.map +1 -0
- package/dist/runtime/middleware/toolRequestParser.js +72 -0
- package/dist/runtime/middleware/toolRequestParser.js.map +1 -0
- package/dist/runtime/middleware/types.d.ts +87 -0
- package/dist/runtime/middleware/types.d.ts.map +1 -0
- package/dist/runtime/middleware/types.js +3 -0
- package/dist/runtime/middleware/types.js.map +1 -0
- package/dist/runtime/providers/backendResolver.d.ts +26 -0
- package/dist/runtime/providers/backendResolver.d.ts.map +1 -0
- package/dist/runtime/providers/backendResolver.js +73 -0
- package/dist/runtime/providers/backendResolver.js.map +1 -0
- package/dist/runtime/providers/index.d.ts +14 -0
- package/dist/runtime/providers/index.d.ts.map +1 -0
- package/dist/runtime/providers/index.js +10 -0
- package/dist/runtime/providers/index.js.map +1 -0
- package/dist/runtime/providers/langchainRuntime.d.ts +11 -0
- package/dist/runtime/providers/langchainRuntime.d.ts.map +1 -0
- package/dist/runtime/providers/langchainRuntime.js +45 -0
- package/dist/runtime/providers/langchainRuntime.js.map +1 -0
- package/dist/runtime/providers/localShellBackend.d.ts +10 -0
- package/dist/runtime/providers/localShellBackend.d.ts.map +1 -0
- package/dist/runtime/providers/localShellBackend.js +23 -0
- package/dist/runtime/providers/localShellBackend.js.map +1 -0
- package/dist/runtime/providers/openaiDeepAgent.d.ts +9 -0
- package/dist/runtime/providers/openaiDeepAgent.d.ts.map +1 -0
- package/dist/runtime/providers/openaiDeepAgent.js +7 -0
- package/dist/runtime/providers/openaiDeepAgent.js.map +1 -0
- package/dist/runtime/providers/openaiLocalAgent.d.ts +17 -0
- package/dist/runtime/providers/openaiLocalAgent.d.ts.map +1 -0
- package/dist/runtime/providers/openaiLocalAgent.js +26 -0
- package/dist/runtime/providers/openaiLocalAgent.js.map +1 -0
- package/dist/runtime/providers/openaiLocalAgentFactory.d.ts +36 -0
- package/dist/runtime/providers/openaiLocalAgentFactory.d.ts.map +1 -0
- package/dist/runtime/providers/openaiLocalAgentFactory.js +139 -0
- package/dist/runtime/providers/openaiLocalAgentFactory.js.map +1 -0
- package/dist/runtime/providers/shared/agentProbe.d.ts +4 -0
- package/dist/runtime/providers/shared/agentProbe.d.ts.map +1 -0
- package/dist/runtime/providers/shared/agentProbe.js +17 -0
- package/dist/runtime/providers/shared/agentProbe.js.map +1 -0
- package/dist/runtime/providers/shared/moduleFallback.d.ts +2 -0
- package/dist/runtime/providers/shared/moduleFallback.d.ts.map +1 -0
- package/dist/runtime/providers/shared/moduleFallback.js +34 -0
- package/dist/runtime/providers/shared/moduleFallback.js.map +1 -0
- package/dist/runtime/providers/shared/resourceCloser.d.ts +6 -0
- package/dist/runtime/providers/shared/resourceCloser.d.ts.map +1 -0
- package/dist/runtime/providers/shared/resourceCloser.js +30 -0
- package/dist/runtime/providers/shared/resourceCloser.js.map +1 -0
- package/dist/runtime/runtimeService.d.ts +109 -0
- package/dist/runtime/runtimeService.d.ts.map +1 -0
- package/dist/runtime/runtimeService.js +90 -0
- package/dist/runtime/runtimeService.js.map +1 -0
- package/dist/runtime/stream/agentMessages.d.ts +40 -0
- package/dist/runtime/stream/agentMessages.d.ts.map +1 -0
- package/dist/runtime/stream/agentMessages.js +44 -0
- package/dist/runtime/stream/agentMessages.js.map +1 -0
- package/dist/runtime/stream/agentStream.d.ts +31 -0
- package/dist/runtime/stream/agentStream.d.ts.map +1 -0
- package/dist/runtime/stream/agentStream.js +106 -0
- package/dist/runtime/stream/agentStream.js.map +1 -0
- package/dist/runtime/stream/messageSummary.d.ts +20 -0
- package/dist/runtime/stream/messageSummary.d.ts.map +1 -0
- package/dist/runtime/stream/messageSummary.js +150 -0
- package/dist/runtime/stream/messageSummary.js.map +1 -0
- package/dist/runtime/stream/runArtifacts.d.ts +9 -0
- package/dist/runtime/stream/runArtifacts.d.ts.map +1 -0
- package/dist/runtime/stream/runArtifacts.js +48 -0
- package/dist/runtime/stream/runArtifacts.js.map +1 -0
- package/dist/state/index.d.ts +7 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +4 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/runState.d.ts +36 -0
- package/dist/state/runState.d.ts.map +1 -0
- package/dist/state/runState.js +51 -0
- package/dist/state/runState.js.map +1 -0
- package/dist/state/todos.d.ts +19 -0
- package/dist/state/todos.d.ts.map +1 -0
- package/dist/state/todos.js +45 -0
- package/dist/state/todos.js.map +1 -0
- package/dist/state/workspaceRunSession.d.ts +32 -0
- package/dist/state/workspaceRunSession.d.ts.map +1 -0
- package/dist/state/workspaceRunSession.js +67 -0
- package/dist/state/workspaceRunSession.js.map +1 -0
- package/dist/state/workspaceState.d.ts +94 -0
- package/dist/state/workspaceState.d.ts.map +1 -0
- package/dist/state/workspaceState.js +119 -0
- package/dist/state/workspaceState.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/example/.tsbuildinfo +1 -0
- package/example/build/.tsbuildinfo +1 -0
- package/example/config/memory.yaml +35 -0
- package/example/config/model.yaml +14 -0
- package/example/config/runtime.yaml +46 -0
- package/example/config/tool.yaml +24 -0
- package/example/index.ts +159 -0
- package/example/package-lock.json +1396 -0
- package/example/package.json +26 -0
- package/example/serve-output.mjs +52 -0
- package/example/tsconfig.json +19 -0
- package/package.json +73 -0
- package/scripts/resolve-deps.js +40 -0
- package/src/config/index.ts +29 -0
- package/src/config/loader.ts +174 -0
- package/src/config/resolveRuntimeConfig.ts +160 -0
- package/src/config/resources.ts +152 -0
- package/src/config/runtimeConfigLoader.ts +68 -0
- package/src/external-modules.d.ts +20 -0
- package/src/index.ts +36 -0
- package/src/runtime/agentMiddleware.ts +6 -0
- package/src/runtime/bootstrap/runtimeFactory.ts +212 -0
- package/src/runtime/bootstrap/runtimeModuleInitializer.ts +34 -0
- package/src/runtime/context/agentContext.ts +24 -0
- package/src/runtime/context/globalContext.ts +70 -0
- package/src/runtime/events/eventPublisher.ts +45 -0
- package/src/runtime/execution/agentRunExecutor.ts +499 -0
- package/src/runtime/execution/agentRunExecutor.types.ts +39 -0
- package/src/runtime/execution/agentRunProgress.ts +67 -0
- package/src/runtime/execution/agentRunState.ts +66 -0
- package/src/runtime/execution/policies/runCompletionPolicy.ts +30 -0
- package/src/runtime/execution/policies/runErrorPolicy.ts +50 -0
- package/src/runtime/execution/policies/runPromptBuilder.ts +39 -0
- package/src/runtime/execution/policies/runSummaryFormatter.ts +57 -0
- package/src/runtime/execution/policies/runtimeDelay.ts +5 -0
- package/src/runtime/execution/policies/toolConfigReader.ts +107 -0
- package/src/runtime/human-loop/consoleHumanLoop.ts +113 -0
- package/src/runtime/human-loop/humanLoop.ts +90 -0
- package/src/runtime/index.ts +36 -0
- package/src/runtime/middleware/agentToolMiddleware.ts +329 -0
- package/src/runtime/middleware/commandPolicy.ts +65 -0
- package/src/runtime/middleware/frameworkPrompt.ts +51 -0
- package/src/runtime/middleware/index.ts +7 -0
- package/src/runtime/middleware/skillPathMap.ts +49 -0
- package/src/runtime/middleware/toolArgsNormalizer.ts +277 -0
- package/src/runtime/middleware/toolCallGuard.ts +73 -0
- package/src/runtime/middleware/toolFsHandlers.ts +94 -0
- package/src/runtime/middleware/toolRequestParser.ts +84 -0
- package/src/runtime/middleware/types.ts +91 -0
- package/src/runtime/providers/backendResolver.ts +127 -0
- package/src/runtime/providers/index.ts +19 -0
- package/src/runtime/providers/langchainRuntime.ts +67 -0
- package/src/runtime/providers/localShellBackend.ts +54 -0
- package/src/runtime/providers/openaiDeepAgent.ts +17 -0
- package/src/runtime/providers/openaiLocalAgent.ts +35 -0
- package/src/runtime/providers/openaiLocalAgentFactory.ts +185 -0
- package/src/runtime/providers/shared/agentProbe.ts +24 -0
- package/src/runtime/providers/shared/moduleFallback.ts +41 -0
- package/src/runtime/providers/shared/resourceCloser.ts +30 -0
- package/src/runtime/runtimeService.ts +205 -0
- package/src/runtime/stream/agentMessages.ts +72 -0
- package/src/runtime/stream/agentStream.ts +168 -0
- package/src/runtime/stream/messageSummary.ts +164 -0
- package/src/runtime/stream/runArtifacts.ts +72 -0
- package/src/state/index.ts +19 -0
- package/src/state/runState.ts +84 -0
- package/src/state/todos.ts +59 -0
- package/src/state/workspaceRunSession.ts +96 -0
- package/src/state/workspaceState.ts +199 -0
- package/src/types/easynet-agent-common.d.ts +62 -0
- package/src/types.ts +1 -0
- package/test/integration/runtime-live.integration.test.ts +30 -0
- package/test/unit/config/loader.test.ts +429 -0
- package/test/unit/runtime/agentContext.test.ts +23 -0
- package/test/unit/runtime/agentRuntime.test.ts +99 -0
- package/test/unit/runtime/consoleHumanLoop.test.ts +52 -0
- package/test/unit/runtime/events.test.ts +11 -0
- package/test/unit/runtime/globalContext.test.ts +34 -0
- package/test/unit/runtime/humanLoop.test.ts +104 -0
- package/test/unit/runtime/toolArgsNormalizer.test.ts +136 -0
- package/tsconfig.json +18 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
export class MessageSummary {
|
|
2
|
+
static looksLikeStartPrompt(message) {
|
|
3
|
+
const content = typeof message?.content === "string" ? message.content : "";
|
|
4
|
+
if (String(message?.role) !== "user" && String(message?.role) !== "human") {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
return content.includes("Tool-call rules:") || content.includes("Continue in the current thread");
|
|
8
|
+
}
|
|
9
|
+
static summarizeToolCall(toolCalls, config) {
|
|
10
|
+
const labels = toolCalls.map((tool) => this.describeToolCall(tool));
|
|
11
|
+
if (labels.every((label) => label === "update todo list")) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
return labels.length === 1
|
|
15
|
+
? `${config.toolCallLabel}: ${labels[0]}`
|
|
16
|
+
: `${config.toolCallLabel}: ${labels.join(", ")}`;
|
|
17
|
+
}
|
|
18
|
+
static summarizeToolResult(content, config) {
|
|
19
|
+
if (typeof content !== "string" || !content.trim()) {
|
|
20
|
+
return `${config.toolResultLabel} (empty)`;
|
|
21
|
+
}
|
|
22
|
+
const text = this.sanitizePreview(content);
|
|
23
|
+
if (text.startsWith("Successfully wrote to")) {
|
|
24
|
+
return `Saved file${this.extractQuotedPath(text) ? ` to ${this.extractQuotedPath(text)}` : ""}`;
|
|
25
|
+
}
|
|
26
|
+
if (text.includes("Too Many Requests"))
|
|
27
|
+
return "Rate limited, continuing";
|
|
28
|
+
if (text.includes("Updated todo list to"))
|
|
29
|
+
return null;
|
|
30
|
+
if (this.looksLikeFileListing(text))
|
|
31
|
+
return "Checked workspace files";
|
|
32
|
+
if (text.startsWith("Usage:"))
|
|
33
|
+
return "Command returned a usage error";
|
|
34
|
+
if (text.startsWith("OK:"))
|
|
35
|
+
return "Command reported success";
|
|
36
|
+
if (text.includes("[Command succeeded"))
|
|
37
|
+
return "Command completed";
|
|
38
|
+
const preview = text.slice(0, config.textPreviewLength);
|
|
39
|
+
return `${config.toolResultLabel}: ${preview}${text.length > config.textPreviewLength ? "…" : ""}`;
|
|
40
|
+
}
|
|
41
|
+
static summarizeContextualMessage(content, previous) {
|
|
42
|
+
const text = this.sanitizePreview(content);
|
|
43
|
+
if (!text || text.includes("Updated todo list to") || this.looksLikeInternalPlanning(text)) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
if (text.startsWith("✅"))
|
|
47
|
+
return "Run completed";
|
|
48
|
+
if (text.startsWith("Successfully wrote to")) {
|
|
49
|
+
return `Saved file${this.extractQuotedPath(text) ? ` to ${this.extractQuotedPath(text)}` : ""}`;
|
|
50
|
+
}
|
|
51
|
+
if (text.includes("Too Many Requests"))
|
|
52
|
+
return "Rate limited, continuing";
|
|
53
|
+
if (this.looksLikeFileListing(text))
|
|
54
|
+
return "Checked workspace files";
|
|
55
|
+
if (text.startsWith("<!-- <!DOCTYPE HTML") || text.startsWith("<!DOCTYPE HTML") || text.startsWith("<html")) {
|
|
56
|
+
return "Reviewed generated content";
|
|
57
|
+
}
|
|
58
|
+
if (this.looksLikeSkillFrontMatter(content))
|
|
59
|
+
return "Loaded instructions";
|
|
60
|
+
if (text.startsWith("OK:"))
|
|
61
|
+
return "Command reported success";
|
|
62
|
+
if (this.isToolMessage(previous) && this.looksLikeFileDump(content))
|
|
63
|
+
return "Reviewed file contents";
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
static describeToolCall(tool) {
|
|
67
|
+
const name = tool?.name ?? tool?.function?.name ?? "?";
|
|
68
|
+
const normalizedName = this.humanizeToolName(name);
|
|
69
|
+
const args = this.normalizeToolCallArgs(tool);
|
|
70
|
+
if ((name === "read_file" || name === "write_file" || name === "edit_file") && typeof args.file_path === "string") {
|
|
71
|
+
return `${normalizedName} ${this.formatPath(args.file_path)}`;
|
|
72
|
+
}
|
|
73
|
+
if ((name === "read_file" || name === "write_file" || name === "edit_file") && typeof args.path === "string") {
|
|
74
|
+
return `${normalizedName} ${this.formatPath(args.path)}`;
|
|
75
|
+
}
|
|
76
|
+
if (name === "execute" && typeof args.command === "string") {
|
|
77
|
+
return `${normalizedName} ${this.truncateText(args.command, 72)}`;
|
|
78
|
+
}
|
|
79
|
+
return name === "write_todos" ? "update todo list" : normalizedName;
|
|
80
|
+
}
|
|
81
|
+
static normalizeToolCallArgs(tool) {
|
|
82
|
+
const directArgs = tool?.args;
|
|
83
|
+
if (directArgs && typeof directArgs === "object") {
|
|
84
|
+
return directArgs;
|
|
85
|
+
}
|
|
86
|
+
const rawArguments = tool?.function?.arguments;
|
|
87
|
+
if (typeof rawArguments === "string") {
|
|
88
|
+
try {
|
|
89
|
+
const parsed = JSON.parse(rawArguments);
|
|
90
|
+
if (parsed && typeof parsed === "object") {
|
|
91
|
+
return parsed;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch { }
|
|
95
|
+
}
|
|
96
|
+
else if (rawArguments && typeof rawArguments === "object") {
|
|
97
|
+
return rawArguments;
|
|
98
|
+
}
|
|
99
|
+
return {};
|
|
100
|
+
}
|
|
101
|
+
static sanitizePreview(content) {
|
|
102
|
+
return content.replace(/\s+/g, " ").trim();
|
|
103
|
+
}
|
|
104
|
+
static humanizeToolName(name) {
|
|
105
|
+
switch (name) {
|
|
106
|
+
case "read_file": return "read file";
|
|
107
|
+
case "write_file": return "write file";
|
|
108
|
+
case "edit_file": return "edit file";
|
|
109
|
+
case "write_todos": return "update todo list";
|
|
110
|
+
case "ls": return "inspect files";
|
|
111
|
+
default: return name.replace(/_/g, " ");
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
static extractQuotedPath(text) {
|
|
115
|
+
const match = text.match(/'([^']+)'/);
|
|
116
|
+
return match?.[1] ? this.formatPath(match[1]) : null;
|
|
117
|
+
}
|
|
118
|
+
static truncateText(text, maxLength) {
|
|
119
|
+
return text.length > maxLength ? `${text.slice(0, maxLength - 1)}...` : text;
|
|
120
|
+
}
|
|
121
|
+
static formatPath(path) {
|
|
122
|
+
const normalized = path.replace(/\\/g, "/");
|
|
123
|
+
for (const marker of ["/skills/", "/output/", "/config/", "/.agent/"]) {
|
|
124
|
+
const index = normalized.indexOf(marker);
|
|
125
|
+
if (index >= 0)
|
|
126
|
+
return normalized.slice(index + 1);
|
|
127
|
+
}
|
|
128
|
+
const segments = normalized.split("/").filter(Boolean);
|
|
129
|
+
return segments.length <= 3 ? normalized : segments.slice(-3).join("/");
|
|
130
|
+
}
|
|
131
|
+
static looksLikeFileListing(text) {
|
|
132
|
+
return text.includes("\n[file]") || text.includes("\n... truncated ") || /^[./\w-]+\n[\w./@-]+/m.test(text);
|
|
133
|
+
}
|
|
134
|
+
static looksLikeInternalPlanning(text) {
|
|
135
|
+
return text.startsWith("<think") || text.includes("I should") || text.includes("I'll ");
|
|
136
|
+
}
|
|
137
|
+
static looksLikeSkillFrontMatter(content) {
|
|
138
|
+
return content.includes("## Skills") || content.includes("### Available skills");
|
|
139
|
+
}
|
|
140
|
+
static isToolMessage(message) {
|
|
141
|
+
if (!message)
|
|
142
|
+
return false;
|
|
143
|
+
const idStr = Array.isArray(message.id) ? message.id.join(" ") : String(message.id ?? "");
|
|
144
|
+
return String(message.role) === "tool" || String(message.type).includes("Tool") || idStr.includes("ToolMessage");
|
|
145
|
+
}
|
|
146
|
+
static looksLikeFileDump(content) {
|
|
147
|
+
return content.includes("\n") && !content.includes("Tool-call rules:") && !content.startsWith("{\"messages\"");
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=messageSummary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageSummary.js","sourceRoot":"","sources":["../../../src/runtime/stream/messageSummary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class RunArtifactService {
|
|
2
|
+
static inferPromptArtifactPaths(prompt: string): string[];
|
|
3
|
+
static resolveTrackedArtifactFiles(rootDir: string, artifactFiles: Record<string, string>, prompt: string): string[];
|
|
4
|
+
static buildTrackedPaths(rootDir: string, runStateFile: string, todosFile: string, trackedArtifactFiles: string[]): string[];
|
|
5
|
+
static resetTrackedArtifactsForFreshRun(previousStatus: string | undefined, trackedArtifactFiles: string[]): Promise<void>;
|
|
6
|
+
static areArtifactsUsable(trackedArtifactFiles: string[]): boolean;
|
|
7
|
+
private static isArtifactUsable;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=runArtifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runArtifacts.d.ts","sourceRoot":"","sources":["../../../src/runtime/stream/runArtifacts.ts"],"names":[],"mappings":"AAIA,qBAAa,kBAAkB;WACf,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;WAKlD,2BAA2B,CACvC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,MAAM,EAAE,MAAM,GACb,MAAM,EAAE;WASG,iBAAiB,CAC7B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,MAAM,EAAE,GAC7B,MAAM,EAAE;WAMS,gCAAgC,CAClD,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC;WAYF,kBAAkB,CAAC,oBAAoB,EAAE,MAAM,EAAE,GAAG,OAAO;IAKzE,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAiBhC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
2
|
+
import { unlink } from "node:fs/promises";
|
|
3
|
+
import { relative, resolve } from "node:path";
|
|
4
|
+
export class RunArtifactService {
|
|
5
|
+
static inferPromptArtifactPaths(prompt) {
|
|
6
|
+
const matches = [...prompt.matchAll(/\b(?:save(?: it)? to|write to)\s+([^\s"'`]+?\.[a-z0-9]+)/gi)];
|
|
7
|
+
return matches.map((match) => match[1]).filter(Boolean);
|
|
8
|
+
}
|
|
9
|
+
static resolveTrackedArtifactFiles(rootDir, artifactFiles, prompt) {
|
|
10
|
+
const configuredArtifacts = Object.values(artifactFiles);
|
|
11
|
+
if (configuredArtifacts.length > 0) {
|
|
12
|
+
return configuredArtifacts;
|
|
13
|
+
}
|
|
14
|
+
return RunArtifactService.inferPromptArtifactPaths(prompt).map((file) => resolve(rootDir, file));
|
|
15
|
+
}
|
|
16
|
+
static buildTrackedPaths(rootDir, runStateFile, todosFile, trackedArtifactFiles) {
|
|
17
|
+
return [runStateFile, todosFile, ...trackedArtifactFiles]
|
|
18
|
+
.map((file) => relative(rootDir, file))
|
|
19
|
+
.filter(Boolean);
|
|
20
|
+
}
|
|
21
|
+
static async resetTrackedArtifactsForFreshRun(previousStatus, trackedArtifactFiles) {
|
|
22
|
+
if (previousStatus === "running") {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
await Promise.all(trackedArtifactFiles
|
|
26
|
+
.filter((file) => existsSync(file))
|
|
27
|
+
.map((file) => unlink(file).catch(() => { })));
|
|
28
|
+
}
|
|
29
|
+
static areArtifactsUsable(trackedArtifactFiles) {
|
|
30
|
+
return trackedArtifactFiles.length === 0 ||
|
|
31
|
+
trackedArtifactFiles.every((file) => RunArtifactService.isArtifactUsable(file));
|
|
32
|
+
}
|
|
33
|
+
static isArtifactUsable(filePath) {
|
|
34
|
+
if (!existsSync(filePath)) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
const stat = statSync(filePath, { throwIfNoEntry: false });
|
|
38
|
+
if (!stat || !stat.isFile() || stat.size <= 0) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
if (!/\.html?$/i.test(filePath)) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
const text = readFileSync(filePath, "utf8").trim().toLowerCase();
|
|
45
|
+
return text.includes("<html") || text.includes("<!doctype html");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=runArtifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runArtifacts.js","sourceRoot":"","sources":["../../../src/runtime/stream/runArtifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { createTodoPersister, normalizeTodos, TodoPersister } from "./todos.js";
|
|
2
|
+
export type { CreateTodoPersisterOptions, NormalizedTodo, } from "./todos.js";
|
|
3
|
+
export { createAgentRunStateStore, AgentRunStateStore } from "./runState.js";
|
|
4
|
+
export type { AgentRunState, AgentRunStatus, CreateAgentRunStateStoreOptions, UpdateAgentRunStateOptions, } from "./runState.js";
|
|
5
|
+
export { createAgentWorkspaceState, AgentWorkspaceStateManager } from "./workspaceState.js";
|
|
6
|
+
export type { CreateAgentWorkspaceStateOptions, AgentWorkspaceState, } from "./workspaceState.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChF,YAAY,EACV,0BAA0B,EAC1B,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC7E,YAAY,EACV,aAAa,EACb,cAAc,EACd,+BAA+B,EAC/B,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAC5F,YAAY,EACV,gCAAgC,EAChC,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { createTodoPersister, normalizeTodos, TodoPersister } from "./todos.js";
|
|
2
|
+
export { createAgentRunStateStore, AgentRunStateStore } from "./runState.js";
|
|
3
|
+
export { createAgentWorkspaceState, AgentWorkspaceStateManager } from "./workspaceState.js";
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMhF,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAQ7E,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export type AgentRunStatus = "running" | "completed" | "failed";
|
|
2
|
+
export interface AgentRunState {
|
|
3
|
+
prompt: string;
|
|
4
|
+
threadId: string;
|
|
5
|
+
status: AgentRunStatus;
|
|
6
|
+
startedAt: string;
|
|
7
|
+
updatedAt: string;
|
|
8
|
+
stepCount: number;
|
|
9
|
+
lastSummary: string;
|
|
10
|
+
artifacts: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface CreateAgentRunStateStoreOptions {
|
|
13
|
+
filePath: string;
|
|
14
|
+
getArtifacts?: () => Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export interface UpdateAgentRunStateOptions {
|
|
17
|
+
prompt: string;
|
|
18
|
+
threadId: string;
|
|
19
|
+
previousState?: AgentRunState | null;
|
|
20
|
+
stepCount: number;
|
|
21
|
+
lastSummary: string;
|
|
22
|
+
status: AgentRunStatus;
|
|
23
|
+
updatedAt?: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class AgentRunStateStore {
|
|
26
|
+
readonly filePath: string;
|
|
27
|
+
private readonly getArtifacts;
|
|
28
|
+
constructor(options: CreateAgentRunStateStoreOptions);
|
|
29
|
+
read(): Promise<AgentRunState | null>;
|
|
30
|
+
write(state: AgentRunState): Promise<void>;
|
|
31
|
+
update(params: UpdateAgentRunStateOptions): Promise<AgentRunState>;
|
|
32
|
+
buildResumePrompt(basePrompt: string, previousState: AgentRunState | null, resumeHint: string): string;
|
|
33
|
+
getThreadId(previousState: AgentRunState | null, fallbackThreadId: string): string;
|
|
34
|
+
}
|
|
35
|
+
export declare function createAgentRunStateStore(options: CreateAgentRunStateStoreOptions): AgentRunStateStore;
|
|
36
|
+
//# sourceMappingURL=runState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runState.d.ts","sourceRoot":"","sources":["../../src/state/runState.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,kBAAkB;IAC7B,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;gBAE1C,OAAO,EAAE,+BAA+B;IAK9C,IAAI,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAQrC,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,MAAM,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC;IAkBxE,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAKtG,WAAW,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM;CAG1F;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,+BAA+B,sBAEhF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
export class AgentRunStateStore {
|
|
4
|
+
filePath;
|
|
5
|
+
getArtifacts;
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this.filePath = options.filePath;
|
|
8
|
+
this.getArtifacts = options.getArtifacts ?? (() => ({}));
|
|
9
|
+
}
|
|
10
|
+
async read() {
|
|
11
|
+
try {
|
|
12
|
+
return JSON.parse(await readFile(this.filePath, "utf8"));
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async write(state) {
|
|
19
|
+
await mkdir(dirname(this.filePath), { recursive: true });
|
|
20
|
+
await writeFile(this.filePath, `${JSON.stringify(state, null, 2)}\n`, "utf8");
|
|
21
|
+
}
|
|
22
|
+
async update(params) {
|
|
23
|
+
const now = params.updatedAt ?? new Date().toISOString();
|
|
24
|
+
const state = {
|
|
25
|
+
prompt: params.prompt,
|
|
26
|
+
threadId: params.threadId,
|
|
27
|
+
status: params.status,
|
|
28
|
+
startedAt: params.previousState?.status === "running"
|
|
29
|
+
? params.previousState.startedAt
|
|
30
|
+
: now,
|
|
31
|
+
updatedAt: now,
|
|
32
|
+
stepCount: params.stepCount,
|
|
33
|
+
lastSummary: params.lastSummary,
|
|
34
|
+
artifacts: this.getArtifacts(),
|
|
35
|
+
};
|
|
36
|
+
await this.write(state);
|
|
37
|
+
return state;
|
|
38
|
+
}
|
|
39
|
+
buildResumePrompt(basePrompt, previousState, resumeHint) {
|
|
40
|
+
if (previousState?.status !== "running")
|
|
41
|
+
return basePrompt;
|
|
42
|
+
return `${basePrompt}\n\n${resumeHint}`;
|
|
43
|
+
}
|
|
44
|
+
getThreadId(previousState, fallbackThreadId) {
|
|
45
|
+
return previousState?.status === "running" ? previousState.threadId : fallbackThreadId;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function createAgentRunStateStore(options) {
|
|
49
|
+
return new AgentRunStateStore(options);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=runState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runState.js","sourceRoot":"","sources":["../../src/state/runState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,MAAM,OAAO,kBAAkB;IACb,QAAQ,CAAS;IAChB,YAAY,CAAgC;IAE7D,YAAmB,OAAwC;QACzD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAkB,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,KAAoB;QACrC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,MAAkC;QACpD,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACzD,MAAM,KAAK,GAAkB;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,KAAK,SAAS;gBACnD,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS;gBAChC,CAAC,CAAC,GAAG;YACP,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;SAC/B,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,iBAAiB,CAAC,UAAkB,EAAE,aAAmC,EAAE,UAAkB;QAClG,IAAI,aAAa,EAAE,MAAM,KAAK,SAAS;YAAE,OAAO,UAAU,CAAC;QAC3D,OAAO,GAAG,UAAU,OAAO,UAAU,EAAE,CAAC;IAC1C,CAAC;IAEM,WAAW,CAAC,aAAmC,EAAE,gBAAwB;QAC9E,OAAO,aAAa,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACzF,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAwC;IAC/E,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface NormalizedTodo {
|
|
2
|
+
content: unknown;
|
|
3
|
+
status: string;
|
|
4
|
+
}
|
|
5
|
+
export interface CreateTodoPersisterOptions {
|
|
6
|
+
filePath: string;
|
|
7
|
+
logger?: (message: string) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function normalizeTodos(todos: unknown): NormalizedTodo[];
|
|
10
|
+
export declare class TodoPersister {
|
|
11
|
+
private readonly filePath;
|
|
12
|
+
private readonly logger;
|
|
13
|
+
private lastPersistedJson;
|
|
14
|
+
constructor(options: CreateTodoPersisterOptions);
|
|
15
|
+
static normalize(todos: unknown): NormalizedTodo[];
|
|
16
|
+
persist(todos: unknown): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export declare function createTodoPersister(options: CreateTodoPersisterOptions): (todos: unknown) => Promise<void>;
|
|
19
|
+
//# sourceMappingURL=todos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todos.d.ts","sourceRoot":"","sources":["../../src/state/todos.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,EAAE,CAE/D;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,iBAAiB,CAAM;gBAEZ,OAAO,EAAE,0BAA0B;WAKxC,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,EAAE;IAc5C,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAYpD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,WAdzC,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC,CAiBpD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
export function normalizeTodos(todos) {
|
|
4
|
+
return TodoPersister.normalize(todos);
|
|
5
|
+
}
|
|
6
|
+
export class TodoPersister {
|
|
7
|
+
filePath;
|
|
8
|
+
logger;
|
|
9
|
+
lastPersistedJson = "";
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.filePath = options.filePath;
|
|
12
|
+
this.logger = options.logger ?? (() => { });
|
|
13
|
+
}
|
|
14
|
+
static normalize(todos) {
|
|
15
|
+
if (!Array.isArray(todos) || todos.length === 0)
|
|
16
|
+
return [];
|
|
17
|
+
return todos
|
|
18
|
+
.map((todo) => {
|
|
19
|
+
if (!todo || typeof todo !== "object" || !("content" in todo))
|
|
20
|
+
return null;
|
|
21
|
+
return {
|
|
22
|
+
content: todo.content,
|
|
23
|
+
status: todo.status ?? "pending",
|
|
24
|
+
};
|
|
25
|
+
})
|
|
26
|
+
.filter((todo) => todo !== null);
|
|
27
|
+
}
|
|
28
|
+
async persist(todos) {
|
|
29
|
+
const normalized = TodoPersister.normalize(todos);
|
|
30
|
+
if (normalized.length === 0)
|
|
31
|
+
return;
|
|
32
|
+
const nextJson = JSON.stringify(normalized, null, 2);
|
|
33
|
+
if (nextJson === this.lastPersistedJson)
|
|
34
|
+
return;
|
|
35
|
+
this.lastPersistedJson = nextJson;
|
|
36
|
+
await mkdir(dirname(this.filePath), { recursive: true });
|
|
37
|
+
await writeFile(this.filePath, nextJson, "utf8");
|
|
38
|
+
this.logger(`[todos] persisted ${normalized.length} item(s) -> ${this.filePath}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function createTodoPersister(options) {
|
|
42
|
+
const persister = new TodoPersister(options);
|
|
43
|
+
return persister.persist.bind(persister);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=todos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todos.js","sourceRoot":"","sources":["../../src/state/todos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,OAAO,aAAa;IACP,QAAQ,CAAS;IACjB,MAAM,CAA4B;IAC3C,iBAAiB,GAAG,EAAE,CAAC;IAE/B,YAAmB,OAAmC;QACpD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,KAAc;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE3D,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3E,OAAO;gBACL,OAAO,EAAG,IAA6B,CAAC,OAAO;gBAC/C,MAAM,EAAG,IAA4B,CAAC,MAAM,IAAI,SAAS;aAC1D,CAAC;QACJ,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,IAAI,EAA0B,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,KAAc;QACjC,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAChD,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QAElC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,qBAAqB,UAAU,CAAC,MAAM,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpF,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAmC;IACrE,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AgentRunState, AgentRunStateStore } from "./runState.js";
|
|
2
|
+
import type { AgentRuntimeEventPublisher } from "../runtime/events/eventPublisher.js";
|
|
3
|
+
export interface PreparedWorkspaceRun {
|
|
4
|
+
previousState: AgentRunState | null;
|
|
5
|
+
threadId: string;
|
|
6
|
+
config: {
|
|
7
|
+
configurable: {
|
|
8
|
+
thread_id: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
input: {
|
|
12
|
+
messages: Array<{
|
|
13
|
+
role: "user";
|
|
14
|
+
content: string;
|
|
15
|
+
}>;
|
|
16
|
+
};
|
|
17
|
+
start(): Promise<void>;
|
|
18
|
+
update(stepCount: number, lastSummary: string): Promise<void>;
|
|
19
|
+
finish(stepCount: number, lastSummary: string): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export declare class WorkspaceRunSessionFactory {
|
|
22
|
+
static create(params: {
|
|
23
|
+
prompt: string;
|
|
24
|
+
threadId: string;
|
|
25
|
+
previousState: AgentRunState | null;
|
|
26
|
+
resumeHint: string;
|
|
27
|
+
runState: AgentRunStateStore;
|
|
28
|
+
events?: AgentRuntimeEventPublisher;
|
|
29
|
+
isCompleted: () => boolean;
|
|
30
|
+
}): PreparedWorkspaceRun;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=workspaceRunSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceRunSession.d.ts","sourceRoot":"","sources":["../../src/state/workspaceRunSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEtF,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QACN,YAAY,EAAE;YACZ,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;IACF,KAAK,EAAE;QACL,QAAQ,EAAE,KAAK,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC,CAAC;KACJ,CAAC;IACF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,qBAAa,0BAA0B;WACvB,MAAM,CAAC,MAAM,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,kBAAkB,CAAC;QAC7B,MAAM,CAAC,EAAE,0BAA0B,CAAC;QACpC,WAAW,EAAE,MAAM,OAAO,CAAC;KAC5B,GAAG,oBAAoB;CAgEzB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export class WorkspaceRunSessionFactory {
|
|
2
|
+
static create(params) {
|
|
3
|
+
return {
|
|
4
|
+
previousState: params.previousState,
|
|
5
|
+
threadId: params.threadId,
|
|
6
|
+
config: { configurable: { thread_id: params.threadId } },
|
|
7
|
+
input: {
|
|
8
|
+
messages: [{
|
|
9
|
+
role: "user",
|
|
10
|
+
content: params.runState.buildResumePrompt(params.prompt, params.previousState, params.resumeHint),
|
|
11
|
+
}],
|
|
12
|
+
},
|
|
13
|
+
start: async () => {
|
|
14
|
+
await params.runState.update({
|
|
15
|
+
prompt: params.prompt,
|
|
16
|
+
threadId: params.threadId,
|
|
17
|
+
stepCount: 0,
|
|
18
|
+
lastSummary: "",
|
|
19
|
+
status: "running",
|
|
20
|
+
previousState: params.previousState,
|
|
21
|
+
});
|
|
22
|
+
params.events?.emit({
|
|
23
|
+
name: "agent.runtime2.workspace.run.start",
|
|
24
|
+
from: "agent-runtime2.workspace",
|
|
25
|
+
to: "agent-runtime2.state",
|
|
26
|
+
payload: { threadId: params.threadId, prompt: params.prompt },
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
update: async (stepCount, lastSummary) => {
|
|
30
|
+
await params.runState.update({
|
|
31
|
+
prompt: params.prompt,
|
|
32
|
+
threadId: params.threadId,
|
|
33
|
+
stepCount,
|
|
34
|
+
lastSummary,
|
|
35
|
+
status: "running",
|
|
36
|
+
previousState: params.previousState,
|
|
37
|
+
updatedAt: new Date().toISOString(),
|
|
38
|
+
});
|
|
39
|
+
params.events?.emit({
|
|
40
|
+
name: "agent.runtime2.workspace.run.update",
|
|
41
|
+
from: "agent-runtime2.workspace",
|
|
42
|
+
to: "agent-runtime2.state",
|
|
43
|
+
payload: { threadId: params.threadId, stepCount, lastSummary },
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
finish: async (stepCount, lastSummary) => {
|
|
47
|
+
const status = params.isCompleted() ? "completed" : "failed";
|
|
48
|
+
await params.runState.update({
|
|
49
|
+
prompt: params.prompt,
|
|
50
|
+
threadId: params.threadId,
|
|
51
|
+
stepCount,
|
|
52
|
+
lastSummary,
|
|
53
|
+
status,
|
|
54
|
+
previousState: params.previousState,
|
|
55
|
+
updatedAt: new Date().toISOString(),
|
|
56
|
+
});
|
|
57
|
+
params.events?.emit({
|
|
58
|
+
name: "agent.runtime2.workspace.run.finish",
|
|
59
|
+
from: "agent-runtime2.workspace",
|
|
60
|
+
to: "agent-runtime2.state",
|
|
61
|
+
payload: { threadId: params.threadId, stepCount, lastSummary, status },
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=workspaceRunSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceRunSession.js","sourceRoot":"","sources":["../../src/state/workspaceRunSession.ts"],"names":[],"mappings":"AAsBA,MAAM,OAAO,0BAA0B;IAC9B,MAAM,CAAC,MAAM,CAAC,MAQpB;QACC,OAAO;YACL,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE;YACxD,KAAK,EAAE;gBACL,QAAQ,EAAE,CAAC;wBACT,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC;qBACnG,CAAC;aACH;YACD,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,SAAS,EAAE,CAAC;oBACZ,WAAW,EAAE,EAAE;oBACf,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,MAAM,CAAC,aAAa;iBACpC,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;oBAClB,IAAI,EAAE,oCAAoC;oBAC1C,IAAI,EAAE,0BAA0B;oBAChC,EAAE,EAAE,sBAAsB;oBAC1B,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;iBAC9D,CAAC,CAAC;YACL,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;gBACvC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,SAAS;oBACT,WAAW;oBACX,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;oBAClB,IAAI,EAAE,qCAAqC;oBAC3C,IAAI,EAAE,0BAA0B;oBAChC,EAAE,EAAE,sBAAsB;oBAC1B,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE;iBAC/D,CAAC,CAAC;YACL,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;gBACvC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC7D,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,SAAS;oBACT,WAAW;oBACX,MAAM;oBACN,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;oBAClB,IAAI,EAAE,qCAAqC;oBAC3C,IAAI,EAAE,0BAA0B;oBAChC,EAAE,EAAE,sBAAsB;oBAC1B,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE;iBACvE,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { type AgentRunState } from "./runState.js";
|
|
2
|
+
import { type AgentRuntimeEventPublisher } from "../runtime/events/eventPublisher.js";
|
|
3
|
+
import { type PreparedWorkspaceRun } from "./workspaceRunSession.js";
|
|
4
|
+
export interface CreateAgentWorkspaceStateOptions {
|
|
5
|
+
rootDir: string;
|
|
6
|
+
artifacts?: Array<{
|
|
7
|
+
key: string;
|
|
8
|
+
path: string;
|
|
9
|
+
}>;
|
|
10
|
+
stateDirName?: string;
|
|
11
|
+
legacyOutputState?: boolean;
|
|
12
|
+
todosLogger?: (message: string) => void;
|
|
13
|
+
events?: AgentRuntimeEventPublisher;
|
|
14
|
+
}
|
|
15
|
+
export interface AgentWorkspaceState {
|
|
16
|
+
stateDir: string;
|
|
17
|
+
todosFile: string;
|
|
18
|
+
runStateFile: string;
|
|
19
|
+
artifactFiles: Record<string, string>;
|
|
20
|
+
prepareRun(params: {
|
|
21
|
+
prompt: string;
|
|
22
|
+
fallbackThreadId?: string;
|
|
23
|
+
resumeHint: string;
|
|
24
|
+
}): Promise<PreparedWorkspaceRun>;
|
|
25
|
+
readRunState(): Promise<AgentRunState | null>;
|
|
26
|
+
getThreadId(previousState: AgentRunState | null, fallbackThreadId: string): string;
|
|
27
|
+
buildResumePrompt(basePrompt: string, previousState: AgentRunState | null, resumeHint: string): string;
|
|
28
|
+
startRun(params: {
|
|
29
|
+
prompt: string;
|
|
30
|
+
threadId: string;
|
|
31
|
+
previousState: AgentRunState | null;
|
|
32
|
+
}): Promise<void>;
|
|
33
|
+
updateRun(params: {
|
|
34
|
+
prompt: string;
|
|
35
|
+
threadId: string;
|
|
36
|
+
previousState: AgentRunState | null;
|
|
37
|
+
stepCount: number;
|
|
38
|
+
lastSummary: string;
|
|
39
|
+
}): Promise<void>;
|
|
40
|
+
finishRun(params: {
|
|
41
|
+
prompt: string;
|
|
42
|
+
threadId: string;
|
|
43
|
+
previousState: AgentRunState | null;
|
|
44
|
+
stepCount: number;
|
|
45
|
+
lastSummary: string;
|
|
46
|
+
}): Promise<void>;
|
|
47
|
+
resetForFreshRun(previousState: AgentRunState | null): Promise<void>;
|
|
48
|
+
persistTodos(todos: unknown): Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
export declare class AgentWorkspaceStateManager implements AgentWorkspaceState {
|
|
51
|
+
readonly stateDir: string;
|
|
52
|
+
readonly todosFile: string;
|
|
53
|
+
readonly runStateFile: string;
|
|
54
|
+
readonly artifactFiles: Record<string, string>;
|
|
55
|
+
private readonly legacyOutputState;
|
|
56
|
+
private readonly legacyTodosFile;
|
|
57
|
+
private readonly legacyRunStateFile;
|
|
58
|
+
private readonly persistTodosHandler;
|
|
59
|
+
private readonly runState;
|
|
60
|
+
private readonly events?;
|
|
61
|
+
constructor(options: CreateAgentWorkspaceStateOptions);
|
|
62
|
+
prepareRun(params: {
|
|
63
|
+
prompt: string;
|
|
64
|
+
fallbackThreadId?: string;
|
|
65
|
+
resumeHint: string;
|
|
66
|
+
}): Promise<PreparedWorkspaceRun>;
|
|
67
|
+
readRunState(): Promise<AgentRunState | null>;
|
|
68
|
+
getThreadId(previousState: AgentRunState | null, fallbackThreadId: string): string;
|
|
69
|
+
buildResumePrompt(basePrompt: string, previousState: AgentRunState | null, resumeHint: string): string;
|
|
70
|
+
startRun(params: {
|
|
71
|
+
prompt: string;
|
|
72
|
+
threadId: string;
|
|
73
|
+
previousState: AgentRunState | null;
|
|
74
|
+
}): Promise<void>;
|
|
75
|
+
updateRun(params: {
|
|
76
|
+
prompt: string;
|
|
77
|
+
threadId: string;
|
|
78
|
+
previousState: AgentRunState | null;
|
|
79
|
+
stepCount: number;
|
|
80
|
+
lastSummary: string;
|
|
81
|
+
}): Promise<void>;
|
|
82
|
+
finishRun(params: {
|
|
83
|
+
prompt: string;
|
|
84
|
+
threadId: string;
|
|
85
|
+
previousState: AgentRunState | null;
|
|
86
|
+
stepCount: number;
|
|
87
|
+
lastSummary: string;
|
|
88
|
+
}): Promise<void>;
|
|
89
|
+
resetForFreshRun(previousState: AgentRunState | null): Promise<void>;
|
|
90
|
+
persistTodos(todos: unknown): Promise<void>;
|
|
91
|
+
private isCompleted;
|
|
92
|
+
}
|
|
93
|
+
export declare function createAgentWorkspaceState(options: CreateAgentWorkspaceStateOptions): AgentWorkspaceState;
|
|
94
|
+
//# sourceMappingURL=workspaceState.d.ts.map
|