@vybestack/llxprt-code-agents 0.10.0-nightly.260613.1adad3b34
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/dist/.last_build +0 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/src/agents/executor-prompt-builder.d.ts +19 -0
- package/dist/src/agents/executor-prompt-builder.js +44 -0
- package/dist/src/agents/executor-prompt-builder.js.map +1 -0
- package/dist/src/agents/executor-termination.d.ts +22 -0
- package/dist/src/agents/executor-termination.js +44 -0
- package/dist/src/agents/executor-termination.js.map +1 -0
- package/dist/src/agents/executor-validation.d.ts +17 -0
- package/dist/src/agents/executor-validation.js +35 -0
- package/dist/src/agents/executor-validation.js.map +1 -0
- package/dist/src/agents/executor.d.ts +136 -0
- package/dist/src/agents/executor.js +874 -0
- package/dist/src/agents/executor.js.map +1 -0
- package/dist/src/agents/invocation.d.ts +45 -0
- package/dist/src/agents/invocation.js +118 -0
- package/dist/src/agents/invocation.js.map +1 -0
- package/dist/src/agents/recovery.d.ts +75 -0
- package/dist/src/agents/recovery.js +107 -0
- package/dist/src/agents/recovery.js.map +1 -0
- package/dist/src/agents/types.d.ts +149 -0
- package/dist/src/agents/types.js +18 -0
- package/dist/src/agents/types.js.map +1 -0
- package/dist/src/agents/utils.d.ts +15 -0
- package/dist/src/agents/utils.js +28 -0
- package/dist/src/agents/utils.js.map +1 -0
- package/dist/src/compression/CompressionHandler.d.ts +178 -0
- package/dist/src/compression/CompressionHandler.js +630 -0
- package/dist/src/compression/CompressionHandler.js.map +1 -0
- package/dist/src/compression/HighDensityStrategy.d.ts +113 -0
- package/dist/src/compression/HighDensityStrategy.js +769 -0
- package/dist/src/compression/HighDensityStrategy.js.map +1 -0
- package/dist/src/compression/MiddleOutStrategy.d.ts +27 -0
- package/dist/src/compression/MiddleOutStrategy.js +347 -0
- package/dist/src/compression/MiddleOutStrategy.js.map +1 -0
- package/dist/src/compression/OneShotStrategy.d.ts +22 -0
- package/dist/src/compression/OneShotStrategy.js +235 -0
- package/dist/src/compression/OneShotStrategy.js.map +1 -0
- package/dist/src/compression/TopDownTruncationStrategy.d.ts +13 -0
- package/dist/src/compression/TopDownTruncationStrategy.js +74 -0
- package/dist/src/compression/TopDownTruncationStrategy.js.map +1 -0
- package/dist/src/compression/compressionBudgeting.d.ts +34 -0
- package/dist/src/compression/compressionBudgeting.js +139 -0
- package/dist/src/compression/compressionBudgeting.js.map +1 -0
- package/dist/src/compression/compressionStrategyFactory.d.ts +23 -0
- package/dist/src/compression/compressionStrategyFactory.js +40 -0
- package/dist/src/compression/compressionStrategyFactory.js.map +1 -0
- package/dist/src/compression/index.d.ts +16 -0
- package/dist/src/compression/index.js +17 -0
- package/dist/src/compression/index.js.map +1 -0
- package/dist/src/compression/reasoningUtils.d.ts +18 -0
- package/dist/src/compression/reasoningUtils.js +22 -0
- package/dist/src/compression/reasoningUtils.js.map +1 -0
- package/dist/src/compression/utils.d.ts +114 -0
- package/dist/src/compression/utils.js +316 -0
- package/dist/src/compression/utils.js.map +1 -0
- package/dist/src/core/AgentHookManager.d.ts +41 -0
- package/dist/src/core/AgentHookManager.js +65 -0
- package/dist/src/core/AgentHookManager.js.map +1 -0
- package/dist/src/core/ChatSessionFactory.d.ts +50 -0
- package/dist/src/core/ChatSessionFactory.js +216 -0
- package/dist/src/core/ChatSessionFactory.js.map +1 -0
- package/dist/src/core/ConversationManager.d.ts +113 -0
- package/dist/src/core/ConversationManager.js +311 -0
- package/dist/src/core/ConversationManager.js.map +1 -0
- package/dist/src/core/DirectMessageProcessor.d.ts +79 -0
- package/dist/src/core/DirectMessageProcessor.js +478 -0
- package/dist/src/core/DirectMessageProcessor.js.map +1 -0
- package/dist/src/core/IdeContextTracker.d.ts +56 -0
- package/dist/src/core/IdeContextTracker.js +207 -0
- package/dist/src/core/IdeContextTracker.js.map +1 -0
- package/dist/src/core/MessageConverter.d.ts +78 -0
- package/dist/src/core/MessageConverter.js +492 -0
- package/dist/src/core/MessageConverter.js.map +1 -0
- package/dist/src/core/MessageStreamOrchestrator.d.ts +85 -0
- package/dist/src/core/MessageStreamOrchestrator.js +448 -0
- package/dist/src/core/MessageStreamOrchestrator.js.map +1 -0
- package/dist/src/core/MessageStreamTerminalHandler.d.ts +16 -0
- package/dist/src/core/MessageStreamTerminalHandler.js +170 -0
- package/dist/src/core/MessageStreamTerminalHandler.js.map +1 -0
- package/dist/src/core/StreamProcessor.d.ts +105 -0
- package/dist/src/core/StreamProcessor.js +660 -0
- package/dist/src/core/StreamProcessor.js.map +1 -0
- package/dist/src/core/TodoContinuationService.d.ts +74 -0
- package/dist/src/core/TodoContinuationService.js +312 -0
- package/dist/src/core/TodoContinuationService.js.map +1 -0
- package/dist/src/core/TurnProcessor.d.ts +91 -0
- package/dist/src/core/TurnProcessor.js +540 -0
- package/dist/src/core/TurnProcessor.js.map +1 -0
- package/dist/src/core/baseLlmClient.d.ts +115 -0
- package/dist/src/core/baseLlmClient.js +231 -0
- package/dist/src/core/baseLlmClient.js.map +1 -0
- package/dist/src/core/bucketFailoverIntegration.d.ts +62 -0
- package/dist/src/core/bucketFailoverIntegration.js +186 -0
- package/dist/src/core/bucketFailoverIntegration.js.map +1 -0
- package/dist/src/core/chatSession.d.ts +121 -0
- package/dist/src/core/chatSession.js +720 -0
- package/dist/src/core/chatSession.js.map +1 -0
- package/dist/src/core/client.d.ts +132 -0
- package/dist/src/core/client.js +524 -0
- package/dist/src/core/client.js.map +1 -0
- package/dist/src/core/clientHelpers.d.ts +15 -0
- package/dist/src/core/clientHelpers.js +122 -0
- package/dist/src/core/clientHelpers.js.map +1 -0
- package/dist/src/core/clientLlmUtilities.d.ts +30 -0
- package/dist/src/core/clientLlmUtilities.js +125 -0
- package/dist/src/core/clientLlmUtilities.js.map +1 -0
- package/dist/src/core/clientToolGovernance.d.ts +37 -0
- package/dist/src/core/clientToolGovernance.js +104 -0
- package/dist/src/core/clientToolGovernance.js.map +1 -0
- package/dist/src/core/compression-config.d.ts +12 -0
- package/dist/src/core/compression-config.js +21 -0
- package/dist/src/core/compression-config.js.map +1 -0
- package/dist/src/core/coreToolScheduler.d.ts +105 -0
- package/dist/src/core/coreToolScheduler.js +453 -0
- package/dist/src/core/coreToolScheduler.js.map +1 -0
- package/dist/src/core/hookToolRestrictions.d.ts +18 -0
- package/dist/src/core/hookToolRestrictions.js +187 -0
- package/dist/src/core/hookToolRestrictions.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.d.ts +17 -0
- package/dist/src/core/nonInteractiveToolExecutor.js +102 -0
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -0
- package/dist/src/core/subagent.d.ts +105 -0
- package/dist/src/core/subagent.js +650 -0
- package/dist/src/core/subagent.js.map +1 -0
- package/dist/src/core/subagentExecution.d.ts +104 -0
- package/dist/src/core/subagentExecution.js +275 -0
- package/dist/src/core/subagentExecution.js.map +1 -0
- package/dist/src/core/subagentOrchestrator.d.ts +84 -0
- package/dist/src/core/subagentOrchestrator.js +503 -0
- package/dist/src/core/subagentOrchestrator.js.map +1 -0
- package/dist/src/core/subagentRuntimeSetup.d.ts +75 -0
- package/dist/src/core/subagentRuntimeSetup.js +387 -0
- package/dist/src/core/subagentRuntimeSetup.js.map +1 -0
- package/dist/src/core/subagentScheduler.d.ts +17 -0
- package/dist/src/core/subagentScheduler.js +7 -0
- package/dist/src/core/subagentScheduler.js.map +1 -0
- package/dist/src/core/subagentToolProcessing.d.ts +51 -0
- package/dist/src/core/subagentToolProcessing.js +359 -0
- package/dist/src/core/subagentToolProcessing.js.map +1 -0
- package/dist/src/core/toolGovernance.d.ts +18 -0
- package/dist/src/core/toolGovernance.js +50 -0
- package/dist/src/core/toolGovernance.js.map +1 -0
- package/dist/src/core/turn.d.ts +47 -0
- package/dist/src/core/turn.js +455 -0
- package/dist/src/core/turn.js.map +1 -0
- package/dist/src/core/turnLogging.d.ts +35 -0
- package/dist/src/core/turnLogging.js +80 -0
- package/dist/src/core/turnLogging.js.map +1 -0
- package/dist/src/index.d.ts +32 -0
- package/dist/src/index.js +44 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/scheduler/confirmation-coordinator.d.ts +139 -0
- package/dist/src/scheduler/confirmation-coordinator.js +443 -0
- package/dist/src/scheduler/confirmation-coordinator.js.map +1 -0
- package/dist/src/scheduler/result-aggregator.d.ts +127 -0
- package/dist/src/scheduler/result-aggregator.js +302 -0
- package/dist/src/scheduler/result-aggregator.js.map +1 -0
- package/dist/src/scheduler/status-transitions.d.ts +39 -0
- package/dist/src/scheduler/status-transitions.js +184 -0
- package/dist/src/scheduler/status-transitions.js.map +1 -0
- package/dist/src/scheduler/tool-dispatcher.d.ts +40 -0
- package/dist/src/scheduler/tool-dispatcher.js +120 -0
- package/dist/src/scheduler/tool-dispatcher.js.map +1 -0
- package/dist/src/scheduler/tool-executor.d.ts +44 -0
- package/dist/src/scheduler/tool-executor.js +117 -0
- package/dist/src/scheduler/tool-executor.js.map +1 -0
- package/dist/src/scheduler/utils.d.ts +11 -0
- package/dist/src/scheduler/utils.js +19 -0
- package/dist/src/scheduler/utils.js.map +1 -0
- package/dist/src/tools/task.d.ts +128 -0
- package/dist/src/tools/task.js +932 -0
- package/dist/src/tools/task.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-transitions.js","sourceRoot":"","sources":["../../../src/scheduler/status-transitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
* Handles tool resolution, governance checks, invocation building, and typo
|
|
9
|
+
* suggestions. Extracted from CoreToolScheduler as part of the Phase 1
|
|
10
|
+
* decomposition (issue 1580).
|
|
11
|
+
*/
|
|
12
|
+
import type { ToolCallRequestInfo } from '../core/turn.js';
|
|
13
|
+
import type { AnyDeclarativeTool, AnyToolInvocation } from '@vybestack/llxprt-code-tools';
|
|
14
|
+
import type { ToolCall } from '@vybestack/llxprt-code-core/scheduler/types.js';
|
|
15
|
+
import type { ToolGovernance } from '../core/toolGovernance.js';
|
|
16
|
+
import type { ToolRegistry } from '@vybestack/llxprt-code-tools';
|
|
17
|
+
import type { Config } from '@vybestack/llxprt-code-core/config/config.js';
|
|
18
|
+
export declare class ToolDispatcher {
|
|
19
|
+
private readonly toolRegistry;
|
|
20
|
+
private readonly config;
|
|
21
|
+
constructor(toolRegistry: ToolRegistry, config: Config);
|
|
22
|
+
/**
|
|
23
|
+
* Resolves and validates a batch of tool call requests, returning the
|
|
24
|
+
* corresponding ToolCall state objects (either ValidatingToolCall or
|
|
25
|
+
* ErroredToolCall). This is a pure synchronous operation — no async
|
|
26
|
+
* confirmation logic is performed here.
|
|
27
|
+
*/
|
|
28
|
+
resolveAndValidate(requests: ToolCallRequestInfo[], governance: ToolGovernance, interactiveMode: boolean): ToolCall[];
|
|
29
|
+
/**
|
|
30
|
+
* Attempts to build a tool invocation from the given args. Returns the
|
|
31
|
+
* invocation on success, or an Error (never throws) on failure.
|
|
32
|
+
*/
|
|
33
|
+
buildInvocation(tool: AnyDeclarativeTool, args: object): AnyToolInvocation | Error;
|
|
34
|
+
private isRequestBlockedByHookRestriction;
|
|
35
|
+
/**
|
|
36
|
+
* Builds a friendly suggestion message when a tool name is not found,
|
|
37
|
+
* using Levenshtein distance to find close matches.
|
|
38
|
+
*/
|
|
39
|
+
getToolSuggestion(unknownToolName: string, topN?: number): string;
|
|
40
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { createErrorResponse } from '@vybestack/llxprt-code-core/utils/generateContentResponseUtilities.js';
|
|
7
|
+
import { setToolContext } from './utils.js';
|
|
8
|
+
import { ToolErrorType } from '@vybestack/llxprt-code-tools';
|
|
9
|
+
import { canonicalizeToolName, isToolBlocked } from '../core/toolGovernance.js';
|
|
10
|
+
import { DEFAULT_AGENT_ID } from '@vybestack/llxprt-code-core/core/turn.js';
|
|
11
|
+
import levenshtein from 'fast-levenshtein';
|
|
12
|
+
export class ToolDispatcher {
|
|
13
|
+
toolRegistry;
|
|
14
|
+
config;
|
|
15
|
+
constructor(toolRegistry, config) {
|
|
16
|
+
this.toolRegistry = toolRegistry;
|
|
17
|
+
this.config = config;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Resolves and validates a batch of tool call requests, returning the
|
|
21
|
+
* corresponding ToolCall state objects (either ValidatingToolCall or
|
|
22
|
+
* ErroredToolCall). This is a pure synchronous operation — no async
|
|
23
|
+
* confirmation logic is performed here.
|
|
24
|
+
*/
|
|
25
|
+
resolveAndValidate(requests, governance, interactiveMode) {
|
|
26
|
+
return requests
|
|
27
|
+
.filter((reqInfo) => !this.isRequestBlockedByHookRestriction(reqInfo))
|
|
28
|
+
.map((reqInfo) => {
|
|
29
|
+
if (isToolBlocked(reqInfo.name, governance)) {
|
|
30
|
+
const errorMessage = `Tool "${reqInfo.name}" is disabled in the current profile.`;
|
|
31
|
+
return {
|
|
32
|
+
status: 'error',
|
|
33
|
+
request: reqInfo,
|
|
34
|
+
response: createErrorResponse(reqInfo, new Error(errorMessage), ToolErrorType.TOOL_DISABLED),
|
|
35
|
+
durationMs: 0,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const toolInstance = this.toolRegistry.getTool(reqInfo.name);
|
|
39
|
+
if (!toolInstance) {
|
|
40
|
+
const suggestion = this.getToolSuggestion(reqInfo.name);
|
|
41
|
+
const errorMessage = `Tool "${reqInfo.name}" could not be loaded.${suggestion}`;
|
|
42
|
+
return {
|
|
43
|
+
status: 'error',
|
|
44
|
+
request: reqInfo,
|
|
45
|
+
response: createErrorResponse(reqInfo, new Error(errorMessage), ToolErrorType.TOOL_NOT_REGISTERED),
|
|
46
|
+
durationMs: 0,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
setToolContext(toolInstance, this.config.getSessionId(), reqInfo.agentId ?? DEFAULT_AGENT_ID, interactiveMode);
|
|
50
|
+
const invocationOrError = this.buildInvocation(toolInstance, reqInfo.args);
|
|
51
|
+
if (invocationOrError instanceof Error) {
|
|
52
|
+
return {
|
|
53
|
+
status: 'error',
|
|
54
|
+
request: reqInfo,
|
|
55
|
+
tool: toolInstance,
|
|
56
|
+
response: createErrorResponse(reqInfo, invocationOrError, ToolErrorType.INVALID_TOOL_PARAMS),
|
|
57
|
+
durationMs: 0,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
status: 'validating',
|
|
62
|
+
request: reqInfo,
|
|
63
|
+
tool: toolInstance,
|
|
64
|
+
invocation: invocationOrError,
|
|
65
|
+
startTime: Date.now(),
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Attempts to build a tool invocation from the given args. Returns the
|
|
71
|
+
* invocation on success, or an Error (never throws) on failure.
|
|
72
|
+
*/
|
|
73
|
+
buildInvocation(tool, args) {
|
|
74
|
+
try {
|
|
75
|
+
return tool.build(args);
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
if (e instanceof Error) {
|
|
79
|
+
return e;
|
|
80
|
+
}
|
|
81
|
+
return new Error(String(e));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
isRequestBlockedByHookRestriction(reqInfo) {
|
|
85
|
+
const allowedTools = reqInfo.hookRestrictedAllowedTools;
|
|
86
|
+
if (allowedTools === undefined) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
if (typeof reqInfo.name !== 'string' || reqInfo.name.trim() === '') {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
const allowed = new Set(allowedTools.map(canonicalizeToolName));
|
|
93
|
+
return !allowed.has(canonicalizeToolName(reqInfo.name));
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Builds a friendly suggestion message when a tool name is not found,
|
|
97
|
+
* using Levenshtein distance to find close matches.
|
|
98
|
+
*/
|
|
99
|
+
getToolSuggestion(unknownToolName, topN = 3) {
|
|
100
|
+
const allToolNames = this.toolRegistry.getAllToolNames();
|
|
101
|
+
if (allToolNames.length === 0) {
|
|
102
|
+
return '';
|
|
103
|
+
}
|
|
104
|
+
const matches = allToolNames
|
|
105
|
+
.map((toolName) => ({
|
|
106
|
+
name: toolName,
|
|
107
|
+
distance: levenshtein.get(unknownToolName, toolName),
|
|
108
|
+
}))
|
|
109
|
+
.sort((a, b) => a.distance - b.distance)
|
|
110
|
+
.slice(0, topN);
|
|
111
|
+
if (matches.length === 0 || matches[0].distance === Infinity) {
|
|
112
|
+
return '';
|
|
113
|
+
}
|
|
114
|
+
const suggestedNames = matches.map((match) => `"${match.name}"`).join(', ');
|
|
115
|
+
return matches.length > 1
|
|
116
|
+
? ` Did you mean one of: ${suggestedNames}?`
|
|
117
|
+
: ` Did you mean ${suggestedNames}?`;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=tool-dispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-dispatcher.js","sourceRoot":"","sources":["../../../src/scheduler/tool-dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @plan PLAN-20260302-TOOLSCHEDULER.P04
|
|
8
|
+
* @requirement TS-EXEC-001 through TS-EXEC-007
|
|
9
|
+
*
|
|
10
|
+
* Tool executor module — extracted from coreToolScheduler.ts launchToolExecution.
|
|
11
|
+
* Executes a single tool with hooks, PID tracking, output streaming, and error handling.
|
|
12
|
+
*
|
|
13
|
+
* This is an EXTRACTION from coreToolScheduler.ts lines 1691-1858.
|
|
14
|
+
* The code is CUT and PASTED with minimal adaptation for module boundaries.
|
|
15
|
+
*/
|
|
16
|
+
import type { ScheduledToolCall } from '@vybestack/llxprt-code-core/scheduler/types.js';
|
|
17
|
+
import type { ToolResult } from '@vybestack/llxprt-code-tools';
|
|
18
|
+
import type { Config } from '@vybestack/llxprt-code-core/config/config.js';
|
|
19
|
+
import type { AnsiOutput } from '@vybestack/llxprt-code-core/utils/terminalSerializer.js';
|
|
20
|
+
/**
|
|
21
|
+
* Execution context for a single tool call.
|
|
22
|
+
*/
|
|
23
|
+
export interface ToolExecutionContext {
|
|
24
|
+
call: ScheduledToolCall;
|
|
25
|
+
signal: AbortSignal;
|
|
26
|
+
onLiveOutput?: (callId: string, chunk: string | AnsiOutput) => void;
|
|
27
|
+
onPid?: (callId: string, pid: number) => void;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Result of tool execution with before/after hook application.
|
|
31
|
+
*/
|
|
32
|
+
export interface ToolExecutionResult {
|
|
33
|
+
result: ToolResult;
|
|
34
|
+
invocation: ScheduledToolCall['invocation'];
|
|
35
|
+
effectiveArgs: Record<string, unknown>;
|
|
36
|
+
}
|
|
37
|
+
export declare class ToolExecutor {
|
|
38
|
+
private readonly config;
|
|
39
|
+
constructor(config: Config);
|
|
40
|
+
/**
|
|
41
|
+
* Execute a single tool call from scheduled to completed state.
|
|
42
|
+
*/
|
|
43
|
+
execute(context: ToolExecutionContext): Promise<ToolExecutionResult>;
|
|
44
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { triggerBeforeToolHook, triggerAfterToolHook, } from '@vybestack/llxprt-code-core/core/coreToolHookTriggers.js';
|
|
7
|
+
import { debugLogger } from '@vybestack/llxprt-code-core/utils/debugLogger.js';
|
|
8
|
+
/**
|
|
9
|
+
* Executes a single tool call with hooks, PID tracking, output streaming,
|
|
10
|
+
* and error handling.
|
|
11
|
+
*
|
|
12
|
+
* EXTRACTED FROM: coreToolScheduler.ts launchToolExecution (lines 1691-1858)
|
|
13
|
+
*
|
|
14
|
+
* This class encapsulates the single-tool execution logic that was previously
|
|
15
|
+
* embedded in CoreToolScheduler. The code is MOVED, not rewritten.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Check a hook result for stop/block decisions and throw if needed.
|
|
19
|
+
*/
|
|
20
|
+
function checkHookDecision(hookResult, hookPhase) {
|
|
21
|
+
if (hookResult?.shouldStopExecution() === true) {
|
|
22
|
+
const stopError = new Error(
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- intentional falsy coalescing: empty string reason should fall through to default message
|
|
24
|
+
hookResult.getEffectiveReason() || `Stopped by ${hookPhase} hook`);
|
|
25
|
+
stopError.isStopExecution = true;
|
|
26
|
+
throw stopError;
|
|
27
|
+
}
|
|
28
|
+
if (hookResult?.isBlockingDecision() === true) {
|
|
29
|
+
throw new Error(
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- intentional falsy coalescing: empty string reason should fall through to default message
|
|
31
|
+
hookResult.getEffectiveReason() || `Blocked by ${hookPhase} hook`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Apply hook output decorations (systemMessage/additionalContext/suppressOutput)
|
|
36
|
+
* to a tool result so they are visible to downstream model turns.
|
|
37
|
+
*/
|
|
38
|
+
function applyHookOutputModifications(hookResult, toolResult) {
|
|
39
|
+
if (!hookResult)
|
|
40
|
+
return toolResult;
|
|
41
|
+
let finalResult = toolResult;
|
|
42
|
+
const systemMessage = hookResult.systemMessage;
|
|
43
|
+
const additionalContext = hookResult.getAdditionalContext();
|
|
44
|
+
const appendedTexts = [systemMessage, additionalContext].filter((text) => !!text);
|
|
45
|
+
if (appendedTexts.length > 0) {
|
|
46
|
+
const existingContent = typeof finalResult.llmContent === 'string'
|
|
47
|
+
? finalResult.llmContent
|
|
48
|
+
: JSON.stringify(finalResult.llmContent);
|
|
49
|
+
const appendText = appendedTexts.join('\n\n');
|
|
50
|
+
finalResult = {
|
|
51
|
+
...finalResult,
|
|
52
|
+
llmContent: `${existingContent}\n\n${appendText}`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (hookResult.suppressOutput === true) {
|
|
56
|
+
finalResult = { ...finalResult, suppressDisplay: true };
|
|
57
|
+
}
|
|
58
|
+
return finalResult;
|
|
59
|
+
}
|
|
60
|
+
export class ToolExecutor {
|
|
61
|
+
config;
|
|
62
|
+
constructor(config) {
|
|
63
|
+
this.config = config;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Execute a single tool call from scheduled to completed state.
|
|
67
|
+
*/
|
|
68
|
+
async execute(context) {
|
|
69
|
+
const { call: scheduledCall, signal, onLiveOutput, onPid } = context;
|
|
70
|
+
const { callId, name: toolName, args } = scheduledCall.request;
|
|
71
|
+
let invocation = scheduledCall.invocation;
|
|
72
|
+
let effectiveArgs = args;
|
|
73
|
+
const serverName = invocation._serverName;
|
|
74
|
+
const mcpContext = serverName ? { server_name: serverName } : undefined;
|
|
75
|
+
const beforeResult = await triggerBeforeToolHook(this.config, toolName, args, mcpContext);
|
|
76
|
+
checkHookDecision(beforeResult, 'BeforeTool');
|
|
77
|
+
const modifiedInput = beforeResult?.getModifiedToolInput();
|
|
78
|
+
if (modifiedInput) {
|
|
79
|
+
effectiveArgs = modifiedInput;
|
|
80
|
+
try {
|
|
81
|
+
invocation = scheduledCall.tool.build(modifiedInput);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
85
|
+
debugLogger.warn(`Failed to rebuild tool invocation after input modification: ${errorMessage}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const liveOutputCallback = scheduledCall.tool.canUpdateOutput
|
|
89
|
+
? (outputChunk) => {
|
|
90
|
+
onLiveOutput?.(callId, outputChunk);
|
|
91
|
+
}
|
|
92
|
+
: undefined;
|
|
93
|
+
const setPidCallback = (pid) => {
|
|
94
|
+
onPid?.(callId, pid);
|
|
95
|
+
};
|
|
96
|
+
return invocation
|
|
97
|
+
.execute(signal, liveOutputCallback, undefined, undefined, setPidCallback)
|
|
98
|
+
.then(async (toolResult) => {
|
|
99
|
+
if (signal.aborted)
|
|
100
|
+
throw new Error('User cancelled tool execution.');
|
|
101
|
+
const beforeDecoratedResult = applyHookOutputModifications(beforeResult, toolResult);
|
|
102
|
+
const afterResult = await triggerAfterToolHook(this.config, toolName, effectiveArgs, beforeDecoratedResult, mcpContext);
|
|
103
|
+
checkHookDecision(afterResult, 'AfterTool');
|
|
104
|
+
return {
|
|
105
|
+
result: applyHookOutputModifications(afterResult, beforeDecoratedResult),
|
|
106
|
+
invocation,
|
|
107
|
+
effectiveArgs,
|
|
108
|
+
};
|
|
109
|
+
})
|
|
110
|
+
.catch(async (executionError) => {
|
|
111
|
+
if (signal.aborted)
|
|
112
|
+
throw new Error('User cancelled tool execution.');
|
|
113
|
+
throw executionError;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=tool-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../../src/scheduler/tool-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { AnyDeclarativeTool } from '@vybestack/llxprt-code-tools';
|
|
7
|
+
/**
|
|
8
|
+
* Sets the execution context on a ContextAwareTool instance if the tool
|
|
9
|
+
* supports it. No-op for tools that do not implement the context interface.
|
|
10
|
+
*/
|
|
11
|
+
export declare function setToolContext(tool: AnyDeclarativeTool, sessionId: string, agentId: string, interactiveMode: boolean): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Sets the execution context on a ContextAwareTool instance if the tool
|
|
8
|
+
* supports it. No-op for tools that do not implement the context interface.
|
|
9
|
+
*/
|
|
10
|
+
export function setToolContext(tool, sessionId, agentId, interactiveMode) {
|
|
11
|
+
if ('context' in tool) {
|
|
12
|
+
tool.context = {
|
|
13
|
+
sessionId,
|
|
14
|
+
agentId,
|
|
15
|
+
interactiveMode,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/scheduler/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAwB,EACxB,SAAiB,EACjB,OAAe,EACf,eAAwB;IAExB,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACrB,IAAyB,CAAC,OAAO,GAAG;YACnC,SAAS;YACT,OAAO;YACP,eAAe;SAChB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { BaseDeclarativeTool, BaseToolInvocation, type ToolResult } from '@vybestack/llxprt-code-tools';
|
|
7
|
+
import type { Config } from '@vybestack/llxprt-code-core/config/config.js';
|
|
8
|
+
import { SubagentOrchestrator } from '../core/subagentOrchestrator.js';
|
|
9
|
+
import type { SubagentSchedulerFactory } from '../core/subagentScheduler.js';
|
|
10
|
+
import type { SubagentManager } from '@vybestack/llxprt-code-core/config/subagentManager.js';
|
|
11
|
+
import type { ProfileManager } from '@vybestack/llxprt-code-settings';
|
|
12
|
+
import type { ToolRegistry } from '@vybestack/llxprt-code-tools';
|
|
13
|
+
import type { AsyncTaskManager } from '@vybestack/llxprt-code-core/services/asyncTaskManager.js';
|
|
14
|
+
import type { MessageBus } from '@vybestack/llxprt-code-core/confirmation-bus/message-bus.js';
|
|
15
|
+
export interface TaskToolParams {
|
|
16
|
+
subagent_name?: string;
|
|
17
|
+
subagentName?: string;
|
|
18
|
+
goal_prompt?: string;
|
|
19
|
+
goalPrompt?: string;
|
|
20
|
+
behaviour_prompts?: string[];
|
|
21
|
+
behavior_prompts?: string[];
|
|
22
|
+
behaviourPrompts?: string[];
|
|
23
|
+
behaviorPrompts?: string[];
|
|
24
|
+
tool_whitelist?: string[];
|
|
25
|
+
toolWhitelist?: string[];
|
|
26
|
+
output_spec?: Record<string, string>;
|
|
27
|
+
outputSpec?: Record<string, string>;
|
|
28
|
+
context?: Record<string, unknown>;
|
|
29
|
+
context_vars?: Record<string, unknown>;
|
|
30
|
+
contextVars?: Record<string, unknown>;
|
|
31
|
+
timeout_seconds?: number;
|
|
32
|
+
grace_period_seconds?: number;
|
|
33
|
+
async?: boolean;
|
|
34
|
+
}
|
|
35
|
+
interface TaskToolInvocationParams {
|
|
36
|
+
subagentName: string;
|
|
37
|
+
goalPrompt: string;
|
|
38
|
+
behaviourPrompts: string[];
|
|
39
|
+
toolWhitelist?: string[];
|
|
40
|
+
outputSpec?: Record<string, string>;
|
|
41
|
+
context: Record<string, unknown>;
|
|
42
|
+
async: boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface TaskToolDependencies {
|
|
45
|
+
orchestratorFactory?: () => SubagentOrchestrator;
|
|
46
|
+
profileManager?: ProfileManager;
|
|
47
|
+
subagentManager?: SubagentManager;
|
|
48
|
+
schedulerFactoryProvider?: () => SubagentSchedulerFactory | undefined;
|
|
49
|
+
isInteractiveEnvironment?: () => boolean;
|
|
50
|
+
getAsyncTaskManager?: () => AsyncTaskManager | undefined;
|
|
51
|
+
}
|
|
52
|
+
interface TaskToolInvocationDeps {
|
|
53
|
+
createOrchestrator: () => SubagentOrchestrator;
|
|
54
|
+
getToolRegistry?: () => ToolRegistry | undefined;
|
|
55
|
+
getSchedulerFactory?: () => SubagentSchedulerFactory | undefined;
|
|
56
|
+
isInteractiveEnvironment?: () => boolean;
|
|
57
|
+
getAsyncTaskManager?: () => AsyncTaskManager | undefined;
|
|
58
|
+
}
|
|
59
|
+
declare class TaskToolInvocation extends BaseToolInvocation<TaskToolParams, ToolResult> {
|
|
60
|
+
private readonly config;
|
|
61
|
+
private readonly normalized;
|
|
62
|
+
private readonly deps;
|
|
63
|
+
constructor(config: Config, params: TaskToolParams, normalized: TaskToolInvocationParams, deps: TaskToolInvocationDeps, messageBus: MessageBus);
|
|
64
|
+
getDescription(): string;
|
|
65
|
+
private buildExcludedToolNames;
|
|
66
|
+
private isExcludedToolName;
|
|
67
|
+
private buildGovernedToolWhitelist;
|
|
68
|
+
private createLaunchRequest;
|
|
69
|
+
execute(signal: AbortSignal, updateOutput?: (output: string) => void): Promise<ToolResult>;
|
|
70
|
+
private launchSubagent;
|
|
71
|
+
private createAbortState;
|
|
72
|
+
private attemptLaunch;
|
|
73
|
+
private lastLaunchError;
|
|
74
|
+
private runSubagentExecution;
|
|
75
|
+
private buildTeardown;
|
|
76
|
+
private setupStreaming;
|
|
77
|
+
private runSubagent;
|
|
78
|
+
private handleExecutionError;
|
|
79
|
+
private handleExecutionResult;
|
|
80
|
+
private isAbortError;
|
|
81
|
+
private buildContextState;
|
|
82
|
+
private createErrorResult;
|
|
83
|
+
private createCancelledResult;
|
|
84
|
+
private createTimeoutControllers;
|
|
85
|
+
private resolveTimeoutSeconds;
|
|
86
|
+
private isTimeoutError;
|
|
87
|
+
private createTimeoutResult;
|
|
88
|
+
/**
|
|
89
|
+
* @plan PLAN-20260130-ASYNCTASK.P11
|
|
90
|
+
*
|
|
91
|
+
* Note: Async tasks are designed to run independently in the background.
|
|
92
|
+
* Unlike foreground task execution, they do NOT wire cancellation or timeout
|
|
93
|
+
* to the parent agent's signal. This is an intentional design choice to allow
|
|
94
|
+
* async tasks to continue running even if the foreground agent is interrupted.
|
|
95
|
+
*/
|
|
96
|
+
private executeAsync;
|
|
97
|
+
private checkAsyncSettings;
|
|
98
|
+
private createAsyncSlotResult;
|
|
99
|
+
private setupAsyncInfrastructure;
|
|
100
|
+
private setupAsyncTimeout;
|
|
101
|
+
private setupAsyncStreaming;
|
|
102
|
+
/**
|
|
103
|
+
* @plan PLAN-20260130-ASYNCTASK.P11
|
|
104
|
+
*
|
|
105
|
+
* Execute async task in background using the SAME execution path as sync tasks.
|
|
106
|
+
* The only difference is the foreground agent doesn't wait for completion.
|
|
107
|
+
* - Interactive environment → runInteractive() with shared scheduler (tool calls show in UI)
|
|
108
|
+
* - Non-interactive environment → runNonInteractive()
|
|
109
|
+
*/
|
|
110
|
+
private executeInBackground;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Task tool that launches subagents via SubagentOrchestrator.
|
|
114
|
+
*
|
|
115
|
+
* @plan PLAN-20251029-SUBAGENTIC
|
|
116
|
+
* @requirement REQ-SUBAGENTIC-001, REQ-SUBAGENTIC-002
|
|
117
|
+
*/
|
|
118
|
+
export declare class TaskTool extends BaseDeclarativeTool<TaskToolParams, ToolResult> {
|
|
119
|
+
private readonly config;
|
|
120
|
+
private readonly dependencies;
|
|
121
|
+
static readonly Name = "task";
|
|
122
|
+
constructor(config: Config, dependencies?: TaskToolDependencies);
|
|
123
|
+
protected validateToolParamValues(params: TaskToolParams): string | null;
|
|
124
|
+
protected createInvocation(params: TaskToolParams, messageBus: MessageBus): TaskToolInvocation;
|
|
125
|
+
private normalizeParams;
|
|
126
|
+
private ensureOrchestrator;
|
|
127
|
+
}
|
|
128
|
+
export {};
|