@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,46 @@
|
|
|
1
|
+
import { AgentMessageService } from "../stream/agentMessages.js";
|
|
2
|
+
import { RunCompletionPolicy } from "./policies/runCompletionPolicy.js";
|
|
3
|
+
import { RunSummaryFormatter } from "./policies/runSummaryFormatter.js";
|
|
4
|
+
export class AgentRunProgress {
|
|
5
|
+
static shouldStopForSummary(context, summary, chunk, areTrackedArtifactsReady) {
|
|
6
|
+
return Promise.resolve(areTrackedArtifactsReady(context.trackedArtifactFiles)).then((artifactsReady) => {
|
|
7
|
+
if (context.trackedArtifactFiles.length > 0) {
|
|
8
|
+
return artifactsReady && !RunCompletionPolicy.isToolCallSummary(summary);
|
|
9
|
+
}
|
|
10
|
+
return artifactsReady &&
|
|
11
|
+
!RunCompletionPolicy.isToolCallSummary(summary) &&
|
|
12
|
+
RunCompletionPolicy.hasAssistantFinalMessage(chunk);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
static shouldStopForChunk(context, params, chunk, areTrackedArtifactsReady) {
|
|
16
|
+
const summary = (params.summarizeChunk ?? AgentMessageService.summarizeAgentChunk)(chunk);
|
|
17
|
+
if (typeof summary !== "string")
|
|
18
|
+
return Promise.resolve(false);
|
|
19
|
+
return Promise.resolve(areTrackedArtifactsReady(context.trackedArtifactFiles)).then((artifactsReady) => {
|
|
20
|
+
if (context.trackedArtifactFiles.length > 0) {
|
|
21
|
+
return artifactsReady && !RunCompletionPolicy.isToolCallSummary(summary);
|
|
22
|
+
}
|
|
23
|
+
return artifactsReady &&
|
|
24
|
+
!RunCompletionPolicy.isToolCallSummary(summary) &&
|
|
25
|
+
RunCompletionPolicy.hasAssistantFinalMessage(chunk);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
static logRunSummary(context, summary, elapsedMs, runLogger) {
|
|
29
|
+
if (summary.startsWith("Tool call:")) {
|
|
30
|
+
if (context.pendingToolCall) {
|
|
31
|
+
runLogger(RunSummaryFormatter.formatRunStep(context.pendingToolCall.summary, context.pendingToolCall.elapsedMs));
|
|
32
|
+
}
|
|
33
|
+
context.pendingToolCall = { summary, elapsedMs };
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (summary === context.lastLoggedSummary)
|
|
37
|
+
return;
|
|
38
|
+
const formatted = context.pendingToolCall
|
|
39
|
+
? RunSummaryFormatter.formatMergedRunStep(context.pendingToolCall.summary, summary, elapsedMs)
|
|
40
|
+
: RunSummaryFormatter.formatRunStep(summary, elapsedMs);
|
|
41
|
+
runLogger(formatted);
|
|
42
|
+
context.pendingToolCall = undefined;
|
|
43
|
+
context.lastLoggedSummary = summary;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=agentRunProgress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentRunProgress.js","sourceRoot":"","sources":["../../../src/runtime/execution/agentRunProgress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAIxE,MAAM,OAAO,gBAAgB;IACpB,MAAM,CAAC,oBAAoB,CAChC,OAAiC,EACjC,OAAe,EACf,KAAa,EACb,wBAAwF;QAExF,OAAO,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;YACvG,IAAI,OAAO,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,cAAc,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,cAAc;gBACnB,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAC/C,mBAAmB,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAC9B,OAAiC,EACjC,MAAsC,EACtC,KAAa,EACb,wBAAwF;QAExF,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1F,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/D,OAAO,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;YACrG,IAAI,OAAO,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,cAAc,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,cAAc;gBACnB,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAC/C,mBAAmB,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,aAAa,CACzB,OAAiC,EACjC,OAAe,EACf,SAAiB,EACjB,SAAoC;QAEpC,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,SAAS,CAAC,mBAAmB,CAAC,aAAa,CACzC,OAAO,CAAC,eAAe,CAAC,OAAO,EAC/B,OAAO,CAAC,eAAe,CAAC,SAAS,CAClC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,eAAe,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QACD,IAAI,OAAO,KAAK,OAAO,CAAC,iBAAiB;YAAE,OAAO;QAElD,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe;YACvC,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;YAC9F,CAAC,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1D,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;QACpC,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { AgentWorkspaceState } from "../../state/workspaceState.js";
|
|
2
|
+
export interface PendingToolCall {
|
|
3
|
+
summary: string;
|
|
4
|
+
elapsedMs: number;
|
|
5
|
+
}
|
|
6
|
+
export interface RetryState {
|
|
7
|
+
malformedRetryCount: number;
|
|
8
|
+
incompleteRetryCount: number;
|
|
9
|
+
emptyRetryCount: number;
|
|
10
|
+
idleTimeoutRetryCount: number;
|
|
11
|
+
transientModelRetryCount: number;
|
|
12
|
+
malformedToolCallMaxRetries: number;
|
|
13
|
+
incompleteRunMaxRetries: number;
|
|
14
|
+
emptyRunMaxRetries: number;
|
|
15
|
+
idleTimeoutMaxRetries: number;
|
|
16
|
+
transientModelMaxRetries: number;
|
|
17
|
+
}
|
|
18
|
+
export interface ExecutionContext<TChunk> {
|
|
19
|
+
run: Awaited<ReturnType<AgentWorkspaceState["prepareRun"]>>;
|
|
20
|
+
effectivePrompt: string;
|
|
21
|
+
trackedArtifactFiles: string[];
|
|
22
|
+
trackedPaths: string[];
|
|
23
|
+
requiredArtifactPaths: string[];
|
|
24
|
+
runInput: Awaited<ReturnType<AgentWorkspaceState["prepareRun"]>>["input"];
|
|
25
|
+
runConfig: Awaited<ReturnType<AgentWorkspaceState["prepareRun"]>>["config"];
|
|
26
|
+
pendingToolCall: PendingToolCall | undefined;
|
|
27
|
+
lastLoggedSummary: string;
|
|
28
|
+
lastStepCount: number;
|
|
29
|
+
lastSummary: string;
|
|
30
|
+
}
|
|
31
|
+
export declare class AgentRunStateFactory {
|
|
32
|
+
static createRetryState(hasTrackedArtifacts: boolean, params: {
|
|
33
|
+
malformedToolCallMaxRetries?: number;
|
|
34
|
+
incompleteRunMaxRetries?: number;
|
|
35
|
+
emptyRunMaxRetries?: number;
|
|
36
|
+
idleTimeoutMaxRetries?: number;
|
|
37
|
+
}, defaults: {
|
|
38
|
+
incompleteRunMaxRetries?: number;
|
|
39
|
+
emptyRunMaxRetries?: number;
|
|
40
|
+
malformedToolCallMaxRetries?: number;
|
|
41
|
+
idleTimeoutMaxRetries?: number;
|
|
42
|
+
}): RetryState;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=agentRunState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentRunState.d.ts","sourceRoot":"","sources":["../../../src/runtime/execution/agentRunState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;IACpC,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB,CAAC,MAAM;IACtC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5D,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1E,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC5E,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,oBAAoB;WACjB,gBAAgB,CAC5B,mBAAmB,EAAE,OAAO,EAC5B,MAAM,EAAE;QACN,2BAA2B,CAAC,EAAE,MAAM,CAAC;QACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,EACD,QAAQ,EAAE;QACR,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,2BAA2B,CAAC,EAAE,MAAM,CAAC;QACrC,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,GACA,UAAU;CAiBd"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class AgentRunStateFactory {
|
|
2
|
+
static createRetryState(hasTrackedArtifacts, params, defaults) {
|
|
3
|
+
return {
|
|
4
|
+
malformedRetryCount: 0,
|
|
5
|
+
incompleteRetryCount: 0,
|
|
6
|
+
emptyRetryCount: 0,
|
|
7
|
+
idleTimeoutRetryCount: 0,
|
|
8
|
+
transientModelRetryCount: 0,
|
|
9
|
+
malformedToolCallMaxRetries: params.malformedToolCallMaxRetries ?? defaults.malformedToolCallMaxRetries ?? 2,
|
|
10
|
+
incompleteRunMaxRetries: params.incompleteRunMaxRetries ?? defaults.incompleteRunMaxRetries ?? (hasTrackedArtifacts ? 2 : 0),
|
|
11
|
+
emptyRunMaxRetries: params.emptyRunMaxRetries ?? defaults.emptyRunMaxRetries ?? 2,
|
|
12
|
+
idleTimeoutMaxRetries: params.idleTimeoutMaxRetries ?? defaults.idleTimeoutMaxRetries ?? 1,
|
|
13
|
+
transientModelMaxRetries: Number(process.env.LLM_TRANSIENT_RETRIES) >= 0 ? Number(process.env.LLM_TRANSIENT_RETRIES) : 0,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=agentRunState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentRunState.js","sourceRoot":"","sources":["../../../src/runtime/execution/agentRunState.ts"],"names":[],"mappings":"AAiCA,MAAM,OAAO,oBAAoB;IACxB,MAAM,CAAC,gBAAgB,CAC5B,mBAA4B,EAC5B,MAKC,EACD,QAKC;QAED,OAAO;YACL,mBAAmB,EAAE,CAAC;YACtB,oBAAoB,EAAE,CAAC;YACvB,eAAe,EAAE,CAAC;YAClB,qBAAqB,EAAE,CAAC;YACxB,wBAAwB,EAAE,CAAC;YAC3B,2BAA2B,EACzB,MAAM,CAAC,2BAA2B,IAAI,QAAQ,CAAC,2BAA2B,IAAI,CAAC;YACjF,uBAAuB,EACrB,MAAM,CAAC,uBAAuB,IAAI,QAAQ,CAAC,uBAAuB,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrG,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,QAAQ,CAAC,kBAAkB,IAAI,CAAC;YACjF,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,IAAI,QAAQ,CAAC,qBAAqB,IAAI,CAAC;YAC1F,wBAAwB,EACtB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;SACjG,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runCompletionPolicy.d.ts","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runCompletionPolicy.ts"],"names":[],"mappings":"AAEA,qBAAa,mBAAmB;WAChB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;WAI3C,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAsBhE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AgentMessageService } from "../../stream/agentMessages.js";
|
|
2
|
+
export class RunCompletionPolicy {
|
|
3
|
+
static isToolCallSummary(summary) {
|
|
4
|
+
return summary.startsWith("Tool call:");
|
|
5
|
+
}
|
|
6
|
+
static hasAssistantFinalMessage(chunk) {
|
|
7
|
+
if (!chunk)
|
|
8
|
+
return false;
|
|
9
|
+
const messages = AgentMessageService.getAgentMessages(chunk);
|
|
10
|
+
const last = messages.length > 0 ? messages[messages.length - 1] : undefined;
|
|
11
|
+
if (!last)
|
|
12
|
+
return false;
|
|
13
|
+
const role = String(last.role ?? "").toLowerCase();
|
|
14
|
+
const type = String(last.type ?? "").toLowerCase();
|
|
15
|
+
const kwargs = (last.kwargs ?? {});
|
|
16
|
+
const hasToolCalls = Array.isArray(last.tool_calls) && last.tool_calls.length > 0 ||
|
|
17
|
+
Array.isArray(kwargs.tool_calls) && kwargs.tool_calls.length > 0;
|
|
18
|
+
if (hasToolCalls)
|
|
19
|
+
return false;
|
|
20
|
+
const content = typeof last.content === "string"
|
|
21
|
+
? last.content
|
|
22
|
+
: typeof kwargs.content === "string"
|
|
23
|
+
? kwargs.content
|
|
24
|
+
: "";
|
|
25
|
+
if (!content.trim())
|
|
26
|
+
return false;
|
|
27
|
+
return role === "assistant" || role === "ai" || type.includes("ai");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=runCompletionPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runCompletionPolicy.js","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runCompletionPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,OAAO,mBAAmB;IACvB,MAAM,CAAC,iBAAiB,CAAC,OAAe;QAC7C,OAAO,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,KAAc;QACnD,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAgD,CAAC;QAClF,MAAM,YAAY,GAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAC5D,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACnE,IAAI,YAAY;YAAE,OAAO,KAAK,CAAC;QAE/B,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAC9C,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;gBAClC,CAAC,CAAC,MAAM,CAAC,OAAO;gBAChB,CAAC,CAAC,EAAE,CAAC;QACT,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;QAClC,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare class RunErrorPolicy {
|
|
2
|
+
static isIdleTimeoutError(error: unknown): boolean;
|
|
3
|
+
static isTransientModelError(error: unknown): boolean;
|
|
4
|
+
static isRecoverableToolCallError(error: unknown): boolean;
|
|
5
|
+
static createTransientModelError(error: unknown): Error;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=runErrorPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runErrorPolicy.d.ts","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runErrorPolicy.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;WACX,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;WAK3C,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;WAa9C,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;WAuBnD,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK;CAO/D"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export class RunErrorPolicy {
|
|
2
|
+
static isIdleTimeoutError(error) {
|
|
3
|
+
const message = error instanceof Error ? error.message : String(error ?? "");
|
|
4
|
+
return message.includes("Agent stream idle timeout");
|
|
5
|
+
}
|
|
6
|
+
static isTransientModelError(error) {
|
|
7
|
+
const message = error instanceof Error ? error.message : String(error ?? "");
|
|
8
|
+
const normalized = message.toLowerCase();
|
|
9
|
+
return (normalized.includes("middlewareerror: 502") ||
|
|
10
|
+
normalized.includes("middlewareerror: 503") ||
|
|
11
|
+
normalized.includes("middlewareerror: 504") ||
|
|
12
|
+
normalized.includes("bad gateway") ||
|
|
13
|
+
normalized.includes("gateway timeout") ||
|
|
14
|
+
normalized.includes("<!doctype html>"));
|
|
15
|
+
}
|
|
16
|
+
static isRecoverableToolCallError(error) {
|
|
17
|
+
const seen = new Set();
|
|
18
|
+
let current = error;
|
|
19
|
+
while (current && typeof current === "object" && !seen.has(current)) {
|
|
20
|
+
seen.add(current);
|
|
21
|
+
const message = String(current.message ?? "").toLowerCase();
|
|
22
|
+
if (message.includes("error parsing tool call") ||
|
|
23
|
+
message.includes("invalid character") ||
|
|
24
|
+
message.includes("did not match expected schema") ||
|
|
25
|
+
message.includes("invalid input") ||
|
|
26
|
+
message.includes("error invoking tool") ||
|
|
27
|
+
message.includes("tool input")) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
current = current.cause;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
static createTransientModelError(error) {
|
|
35
|
+
return new Error(`Model request failed with a transient upstream error. ` +
|
|
36
|
+
`Try reducing runtime config pressure (llmMaxTokens=1024, model timeout in config/model.yaml options.timeoutMs=60000) ` +
|
|
37
|
+
`and verify endpoint with scripts/verify-llm.sh. Original error: ${String(error)}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=runErrorPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runErrorPolicy.js","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runErrorPolicy.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IAClB,MAAM,CAAC,kBAAkB,CAAC,KAAc;QAC7C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC7E,OAAO,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IACvD,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,KAAc;QAChD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,CACL,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC3C,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC3C,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC3C,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;YAClC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACtC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CACvC,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,0BAA0B,CAAC,KAAc;QACrD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;QAChC,IAAI,OAAO,GAAY,KAAK,CAAC;QAE7B,OAAO,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClB,MAAM,OAAO,GAAG,MAAM,CAAE,OAAiC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACvF,IACE,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;gBAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBACrC,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC;gBACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;gBACjC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;gBACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC9B,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,GAAI,OAA+B,CAAC,KAAK,CAAC;QACnD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,yBAAyB,CAAC,KAAc;QACpD,OAAO,IAAI,KAAK,CACd,wDAAwD;YACtD,uHAAuH;YACvH,mEAAmE,MAAM,CAAC,KAAK,CAAC,EAAE,CACrF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class RunPromptBuilder {
|
|
2
|
+
static buildExecutionPrompt(prompt: string): string;
|
|
3
|
+
static buildIncompleteRetryPrompt(params: {
|
|
4
|
+
prompt: string;
|
|
5
|
+
trackedPaths: string[];
|
|
6
|
+
requiredArtifactPaths: string[];
|
|
7
|
+
lastSummary: string;
|
|
8
|
+
}): string;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=runPromptBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runPromptBuilder.d.ts","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runPromptBuilder.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;WACb,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;WAe5C,0BAA0B,CAAC,MAAM,EAAE;QAC/C,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,qBAAqB,EAAE,MAAM,EAAE,CAAC;QAChC,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,MAAM;CAiBX"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export class RunPromptBuilder {
|
|
2
|
+
static buildExecutionPrompt(prompt) {
|
|
3
|
+
const guardrails = [
|
|
4
|
+
"Tool-call rules:",
|
|
5
|
+
'- Return strict JSON for tool args (example: {"offset":0}, never "offset=0").',
|
|
6
|
+
"- Use workspace-relative paths only; never construct absolute filesystem paths.",
|
|
7
|
+
"- Framework supports both tool calls and script commands; follow the SKILL whitelist per step.",
|
|
8
|
+
"- If a skill allows both tool and script for one step, prefer the tool path unless user asks for script.",
|
|
9
|
+
"- Do not inspect script source files unless the user explicitly asks for script code.",
|
|
10
|
+
"- Avoid redundant exploratory calls; use the shortest valid workflow.",
|
|
11
|
+
"- Complete the task in one uninterrupted run whenever possible; do not stop after intermediate reads or planning.",
|
|
12
|
+
"- If required output artifacts are missing, continue executing tool steps until they are written and validated.",
|
|
13
|
+
].join("\n");
|
|
14
|
+
return `${prompt}\n\n${guardrails}`;
|
|
15
|
+
}
|
|
16
|
+
static buildIncompleteRetryPrompt(params) {
|
|
17
|
+
const missingOutputs = params.requiredArtifactPaths.length > 0
|
|
18
|
+
? params.requiredArtifactPaths.join(", ")
|
|
19
|
+
: "(none)";
|
|
20
|
+
const previousSummary = params.lastSummary?.trim() || "n/a";
|
|
21
|
+
return [
|
|
22
|
+
"The previous run ended before completion.",
|
|
23
|
+
`Last summary: ${previousSummary}.`,
|
|
24
|
+
"Continue in the current thread and do not restart from scratch.",
|
|
25
|
+
`Missing required outputs (write these first): ${missingOutputs}.`,
|
|
26
|
+
`Tracked state paths: ${params.trackedPaths.join(", ")}.`,
|
|
27
|
+
"After generating missing outputs, perform required validation and provide the final response.",
|
|
28
|
+
"",
|
|
29
|
+
"Original task:",
|
|
30
|
+
params.prompt,
|
|
31
|
+
].join("\n");
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=runPromptBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runPromptBuilder.js","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runPromptBuilder.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAgB;IACpB,MAAM,CAAC,oBAAoB,CAAC,MAAc;QAC/C,MAAM,UAAU,GAAG;YACjB,kBAAkB;YAClB,+EAA+E;YAC/E,iFAAiF;YACjF,gGAAgG;YAChG,0GAA0G;YAC1G,uFAAuF;YACvF,uEAAuE;YACvE,mHAAmH;YACnH,iHAAiH;SAClH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,OAAO,GAAG,MAAM,OAAO,UAAU,EAAE,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,0BAA0B,CAAC,MAKxC;QACC,MAAM,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;YAC5D,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YACzC,CAAC,CAAC,QAAQ,CAAC;QACb,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC;QAC5D,OAAO;YACL,2CAA2C;YAC3C,iBAAiB,eAAe,GAAG;YACnC,iEAAiE;YACjE,iDAAiD,cAAc,GAAG;YAClE,wBAAwB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACzD,+FAA+F;YAC/F,EAAE;YACF,gBAAgB;YAChB,MAAM,CAAC,MAAM;SACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare class RunSummaryFormatter {
|
|
2
|
+
static formatRunStep(summary: string, elapsedMs: number): string;
|
|
3
|
+
static formatMergedRunStep(toolSummary: string, resultSummary: string, resultElapsedMs: number): string;
|
|
4
|
+
private static classifyRunSummary;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=runSummaryFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runSummaryFormatter.d.ts","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runSummaryFormatter.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAmB;WAChB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;WAKzD,mBAAmB,CAC/B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,GACtB,MAAM;IAMT,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAwClC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export class RunSummaryFormatter {
|
|
2
|
+
static formatRunStep(summary, elapsedMs) {
|
|
3
|
+
const { indent, marker, text } = this.classifyRunSummary(summary);
|
|
4
|
+
return `${" ".repeat(indent)}${marker} ${text} (${(elapsedMs / 1000).toFixed(1)}s)`;
|
|
5
|
+
}
|
|
6
|
+
static formatMergedRunStep(toolSummary, resultSummary, resultElapsedMs) {
|
|
7
|
+
const toolText = toolSummary.replace(/^Tool call:\s*/, "");
|
|
8
|
+
const { text } = this.classifyRunSummary(resultSummary);
|
|
9
|
+
return `- ${toolText} -> ${text} (${(resultElapsedMs / 1000).toFixed(1)}s)`;
|
|
10
|
+
}
|
|
11
|
+
static classifyRunSummary(summary) {
|
|
12
|
+
if (summary.startsWith("Tool call:")) {
|
|
13
|
+
return {
|
|
14
|
+
indent: 2,
|
|
15
|
+
marker: "-",
|
|
16
|
+
text: summary.replace(/^Tool call:\s*/, ""),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
if (summary.startsWith("Saved file") ||
|
|
20
|
+
summary.startsWith("Command ") ||
|
|
21
|
+
summary.startsWith("Checked workspace files") ||
|
|
22
|
+
summary.startsWith("Rate limited") ||
|
|
23
|
+
summary === "Command returned a usage error" ||
|
|
24
|
+
summary === "Loaded instructions" ||
|
|
25
|
+
summary === "Reviewed generated content" ||
|
|
26
|
+
summary === "Command completed") {
|
|
27
|
+
return {
|
|
28
|
+
indent: 6,
|
|
29
|
+
marker: ">",
|
|
30
|
+
text: summary,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (summary === "Run completed") {
|
|
34
|
+
return {
|
|
35
|
+
indent: 0,
|
|
36
|
+
marker: "done",
|
|
37
|
+
text: summary,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
indent: 0,
|
|
42
|
+
marker: "*",
|
|
43
|
+
text: summary.replace(/^Message:\s*/, ""),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=runSummaryFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runSummaryFormatter.js","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runSummaryFormatter.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mBAAmB;IACvB,MAAM,CAAC,aAAa,CAAC,OAAe,EAAE,SAAiB;QAC5D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAClE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACvF,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAC/B,WAAmB,EACnB,aAAqB,EACrB,eAAuB;QAEvB,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACxD,OAAO,KAAK,QAAQ,OAAO,IAAI,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,OAAe;QAC/C,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;aAC5C,CAAC;QACJ,CAAC;QAED,IACE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;YAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;YAC9B,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC;YAC7C,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;YAClC,OAAO,KAAK,gCAAgC;YAC5C,OAAO,KAAK,qBAAqB;YACjC,OAAO,KAAK,4BAA4B;YACxC,OAAO,KAAK,mBAAmB,EAC/B,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,OAAO;aACd,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;YAChC,OAAO;gBACL,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,OAAO;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC1C,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeDelay.d.ts","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runtimeDelay.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;WACT,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeDelay.js","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runtimeDelay.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IAChB,MAAM,CAAC,IAAI,CAAC,EAAU;QAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class ToolConfigReader {
|
|
2
|
+
static readAllowedToolNames(toolConfigPath: string): string[] | undefined;
|
|
3
|
+
private static collectDeepagentsNames;
|
|
4
|
+
private static collectCustomizedNames;
|
|
5
|
+
private static addStringItems;
|
|
6
|
+
private static addObjectKeys;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=toolConfigReader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolConfigReader.d.ts","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/toolConfigReader.ts"],"names":[],"mappings":"AAGA,qBAAa,gBAAgB;WACb,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IA6BhF,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA4BrC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA0BrC,OAAO,CAAC,MAAM,CAAC,cAAc;IAQ7B,OAAO,CAAC,MAAM,CAAC,aAAa;CAW7B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { parseYamlContent } from "@botbotgo/common/config";
|
|
3
|
+
export class ToolConfigReader {
|
|
4
|
+
static readAllowedToolNames(toolConfigPath) {
|
|
5
|
+
if (!existsSync(toolConfigPath)) {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
const raw = readFileSync(toolConfigPath, "utf8");
|
|
9
|
+
const parsed = parseYamlContent(raw, {
|
|
10
|
+
substituteEnv: false,
|
|
11
|
+
});
|
|
12
|
+
if (!parsed || typeof parsed !== "object") {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const source = parsed.spec && typeof parsed.spec === "object" && !Array.isArray(parsed.spec)
|
|
16
|
+
? parsed.spec
|
|
17
|
+
: parsed;
|
|
18
|
+
const toolsNode = source.tools && typeof source.tools === "object" && !Array.isArray(source.tools)
|
|
19
|
+
? source.tools
|
|
20
|
+
: undefined;
|
|
21
|
+
const deepagents = toolsNode?.deepagents;
|
|
22
|
+
const legacyDeepagents = source.deepagents && typeof source.deepagents === "object" && !Array.isArray(source.deepagents)
|
|
23
|
+
? source.deepagents
|
|
24
|
+
: undefined;
|
|
25
|
+
const names = new Set();
|
|
26
|
+
this.collectDeepagentsNames(names, deepagents, legacyDeepagents, source);
|
|
27
|
+
this.collectCustomizedNames(names, toolsNode);
|
|
28
|
+
return names.size > 0 ? [...names] : undefined;
|
|
29
|
+
}
|
|
30
|
+
static collectDeepagentsNames(names, deepagents, legacyDeepagents, source) {
|
|
31
|
+
if (Array.isArray(deepagents)) {
|
|
32
|
+
this.addStringItems(names, deepagents);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (deepagents &&
|
|
36
|
+
typeof deepagents === "object" &&
|
|
37
|
+
!Array.isArray(deepagents) &&
|
|
38
|
+
Array.isArray(deepagents.tools)) {
|
|
39
|
+
this.addStringItems(names, deepagents.tools);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (Array.isArray(legacyDeepagents?.tools)) {
|
|
43
|
+
this.addStringItems(names, legacyDeepagents.tools);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (Array.isArray(source.allowedToolNames)) {
|
|
47
|
+
this.addStringItems(names, source.allowedToolNames);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
static collectCustomizedNames(names, toolsNode) {
|
|
51
|
+
const customized = toolsNode?.customized;
|
|
52
|
+
if (customized && typeof customized === "object" && !Array.isArray(customized)) {
|
|
53
|
+
const source = customized;
|
|
54
|
+
const descriptorGrouped = Object.keys(source).some((key) => /^(npm|file):/.test(key));
|
|
55
|
+
if (descriptorGrouped) {
|
|
56
|
+
for (const sourceValue of Object.values(source)) {
|
|
57
|
+
this.addObjectKeys(names, sourceValue);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.addObjectKeys(names, source);
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (!toolsNode) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
for (const sourceValue of Object.values(toolsNode)) {
|
|
69
|
+
this.addObjectKeys(names, sourceValue);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
static addStringItems(names, items) {
|
|
73
|
+
for (const item of items) {
|
|
74
|
+
if (typeof item === "string" && item.trim().length > 0) {
|
|
75
|
+
names.add(item.trim());
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
static addObjectKeys(names, sourceValue) {
|
|
80
|
+
if (!sourceValue || typeof sourceValue !== "object" || Array.isArray(sourceValue)) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
for (const toolName of Object.keys(sourceValue)) {
|
|
84
|
+
const trimmed = toolName.trim();
|
|
85
|
+
if (trimmed.length > 0) {
|
|
86
|
+
names.add(trimmed);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=toolConfigReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolConfigReader.js","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/toolConfigReader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { HumanLoopDecision, HumanLoopRequest, HumanLoopService } from "./humanLoop.js";
|
|
2
|
+
export interface ConsoleHumanLoopServiceOptions {
|
|
3
|
+
input?: NodeJS.ReadableStream;
|
|
4
|
+
output?: NodeJS.WritableStream;
|
|
5
|
+
prompt?: (question: string) => Promise<string>;
|
|
6
|
+
writer?: (line: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare class ConsoleHumanLoopService implements HumanLoopService {
|
|
9
|
+
private readonly input;
|
|
10
|
+
private readonly output;
|
|
11
|
+
private readonly promptOverride?;
|
|
12
|
+
private readonly writer;
|
|
13
|
+
constructor(options?: ConsoleHumanLoopServiceOptions);
|
|
14
|
+
request(request: HumanLoopRequest): Promise<HumanLoopDecision>;
|
|
15
|
+
private printRequest;
|
|
16
|
+
private askAction;
|
|
17
|
+
private askRevisedArgs;
|
|
18
|
+
private askOptional;
|
|
19
|
+
private ask;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=consoleHumanLoop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consoleHumanLoop.d.ts","sourceRoot":"","sources":["../../../src/runtime/human-loop/consoleHumanLoop.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE5F,MAAM,WAAW,8BAA8B;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,qBAAa,uBAAwB,YAAW,gBAAgB;IAC9D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAA2C;IAC3E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAE7B,OAAO,GAAE,8BAAmC;IASlD,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0B3E,OAAO,CAAC,YAAY;YAaN,SAAS;YAUT,cAAc;YAkBd,WAAW;YAIX,GAAG;CAelB"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import * as readline from "node:readline/promises";
|
|
2
|
+
import { stdin as defaultInput, stdout as defaultOutput } from "node:process";
|
|
3
|
+
export class ConsoleHumanLoopService {
|
|
4
|
+
input;
|
|
5
|
+
output;
|
|
6
|
+
promptOverride;
|
|
7
|
+
writer;
|
|
8
|
+
constructor(options = {}) {
|
|
9
|
+
this.input = options.input ?? defaultInput;
|
|
10
|
+
this.output = options.output ?? defaultOutput;
|
|
11
|
+
this.promptOverride = options.prompt;
|
|
12
|
+
this.writer = options.writer ?? ((line) => {
|
|
13
|
+
this.output.write(`${line}\n`);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
async request(request) {
|
|
17
|
+
this.printRequest(request);
|
|
18
|
+
const action = await this.askAction();
|
|
19
|
+
if (action === "approve") {
|
|
20
|
+
return { action, decidedAt: new Date().toISOString() };
|
|
21
|
+
}
|
|
22
|
+
if (action === "reject") {
|
|
23
|
+
const message = await this.askOptional("Rejection message (optional): ");
|
|
24
|
+
return {
|
|
25
|
+
action,
|
|
26
|
+
message: message || `Rejected in console for tool ${request.toolName}.`,
|
|
27
|
+
decidedAt: new Date().toISOString(),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const revisedArgs = await this.askRevisedArgs(request);
|
|
31
|
+
const message = await this.askOptional("Revision note (optional): ");
|
|
32
|
+
return {
|
|
33
|
+
action: "revise",
|
|
34
|
+
revisedArgs,
|
|
35
|
+
message: message || "Args revised in console.",
|
|
36
|
+
decidedAt: new Date().toISOString(),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
printRequest(request) {
|
|
40
|
+
this.writer("");
|
|
41
|
+
this.writer(`[human-loop] ${request.title}`);
|
|
42
|
+
this.writer(`kind: ${request.kind}`);
|
|
43
|
+
this.writer(`tool: ${request.toolName}`);
|
|
44
|
+
if (request.threadId)
|
|
45
|
+
this.writer(`thread: ${request.threadId}`);
|
|
46
|
+
if (request.riskLevel)
|
|
47
|
+
this.writer(`risk: ${request.riskLevel}`);
|
|
48
|
+
this.writer(request.description);
|
|
49
|
+
this.writer("args:");
|
|
50
|
+
this.writer(JSON.stringify(request.args, null, 2));
|
|
51
|
+
this.writer("");
|
|
52
|
+
}
|
|
53
|
+
async askAction() {
|
|
54
|
+
while (true) {
|
|
55
|
+
const answer = (await this.ask("Approve, reject, or revise? [a/r/e]: ")).trim().toLowerCase();
|
|
56
|
+
if (answer === "a" || answer === "approve")
|
|
57
|
+
return "approve";
|
|
58
|
+
if (answer === "r" || answer === "reject")
|
|
59
|
+
return "reject";
|
|
60
|
+
if (answer === "e" || answer === "edit" || answer === "revise")
|
|
61
|
+
return "revise";
|
|
62
|
+
this.writer("Please enter a, r, or e.");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async askRevisedArgs(request) {
|
|
66
|
+
this.writer("Enter revised args as one-line JSON.");
|
|
67
|
+
this.writer(`Current args: ${JSON.stringify(request.args)}`);
|
|
68
|
+
while (true) {
|
|
69
|
+
const answer = (await this.ask("revised args JSON: ")).trim();
|
|
70
|
+
try {
|
|
71
|
+
const parsed = JSON.parse(answer);
|
|
72
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
73
|
+
this.writer("Expected a JSON object.");
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
return parsed;
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
this.writer("Invalid JSON. Try again.");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async askOptional(question) {
|
|
84
|
+
return (await this.ask(question)).trim();
|
|
85
|
+
}
|
|
86
|
+
async ask(question) {
|
|
87
|
+
if (this.promptOverride) {
|
|
88
|
+
return this.promptOverride(question);
|
|
89
|
+
}
|
|
90
|
+
const rl = readline.createInterface({
|
|
91
|
+
input: this.input,
|
|
92
|
+
output: this.output,
|
|
93
|
+
});
|
|
94
|
+
try {
|
|
95
|
+
return await rl.question(question);
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
rl.close();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=consoleHumanLoop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consoleHumanLoop.js","sourceRoot":"","sources":["../../../src/runtime/human-loop/consoleHumanLoop.ts"],"names":[],"mappings":"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"}
|