xibecode 1.0.2 → 1.0.6
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/commands/chat.d.ts +0 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +10 -7
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +5 -3
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/diagnostics.js +1 -1
- package/dist/commands/diagnostics.js.map +1 -1
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/resume.js +1 -1
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/run-pr.d.ts.map +1 -1
- package/dist/commands/run-pr.js +13 -10
- package/dist/commands/run-pr.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +17 -14
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +3 -2
- package/dist/commands/skills.js.map +1 -1
- package/dist/components/AssistantMarkdown.js +1 -1
- package/dist/components/AssistantMarkdown.js.map +1 -1
- package/dist/index.js +2 -39
- package/dist/index.js.map +1 -1
- package/dist/ui/claude-style-chat.d.ts.map +1 -1
- package/dist/ui/claude-style-chat.js +15 -11
- package/dist/ui/claude-style-chat.js.map +1 -1
- package/dist/utils/built-in-skills-dir.d.ts +7 -0
- package/dist/utils/built-in-skills-dir.d.ts.map +1 -0
- package/dist/utils/built-in-skills-dir.js +11 -0
- package/dist/utils/built-in-skills-dir.js.map +1 -0
- package/dist/utils/config.d.ts +2 -119
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +3 -88
- package/dist/utils/config.js.map +1 -1
- package/package.json +11 -26
- package/dist/commands/punycode.d.ts +0 -5
- package/dist/commands/punycode.d.ts.map +0 -1
- package/dist/commands/punycode.js +0 -48
- package/dist/commands/punycode.js.map +0 -1
- package/dist/commands/tui.d.ts +0 -9
- package/dist/commands/tui.d.ts.map +0 -1
- package/dist/commands/tui.js +0 -83
- package/dist/commands/tui.js.map +0 -1
- package/dist/core/agent-tool-policies.d.ts +0 -5
- package/dist/core/agent-tool-policies.d.ts.map +0 -1
- package/dist/core/agent-tool-policies.js +0 -18
- package/dist/core/agent-tool-policies.js.map +0 -1
- package/dist/core/agent.d.ts +0 -181
- package/dist/core/agent.d.ts.map +0 -1
- package/dist/core/agent.js +0 -1777
- package/dist/core/agent.js.map +0 -1
- package/dist/core/background-agent.d.ts +0 -23
- package/dist/core/background-agent.d.ts.map +0 -1
- package/dist/core/background-agent.js +0 -175
- package/dist/core/background-agent.js.map +0 -1
- package/dist/core/code-graph.d.ts +0 -18
- package/dist/core/code-graph.d.ts.map +0 -1
- package/dist/core/code-graph.js +0 -105
- package/dist/core/code-graph.js.map +0 -1
- package/dist/core/conflict-solver.d.ts +0 -26
- package/dist/core/conflict-solver.d.ts.map +0 -1
- package/dist/core/conflict-solver.js +0 -108
- package/dist/core/conflict-solver.js.map +0 -1
- package/dist/core/context-compactor.d.ts +0 -10
- package/dist/core/context-compactor.d.ts.map +0 -1
- package/dist/core/context-compactor.js +0 -158
- package/dist/core/context-compactor.js.map +0 -1
- package/dist/core/context-pruner.d.ts +0 -19
- package/dist/core/context-pruner.d.ts.map +0 -1
- package/dist/core/context-pruner.js +0 -103
- package/dist/core/context-pruner.js.map +0 -1
- package/dist/core/context.d.ts +0 -82
- package/dist/core/context.d.ts.map +0 -1
- package/dist/core/context.js +0 -273
- package/dist/core/context.js.map +0 -1
- package/dist/core/conversation-recovery.d.ts +0 -9
- package/dist/core/conversation-recovery.d.ts.map +0 -1
- package/dist/core/conversation-recovery.js +0 -15
- package/dist/core/conversation-recovery.js.map +0 -1
- package/dist/core/debug-workflow.d.ts +0 -9
- package/dist/core/debug-workflow.d.ts.map +0 -1
- package/dist/core/debug-workflow.js +0 -19
- package/dist/core/debug-workflow.js.map +0 -1
- package/dist/core/docs-scraper.d.ts +0 -40
- package/dist/core/docs-scraper.d.ts.map +0 -1
- package/dist/core/docs-scraper.js +0 -386
- package/dist/core/docs-scraper.js.map +0 -1
- package/dist/core/editor.d.ts +0 -87
- package/dist/core/editor.d.ts.map +0 -1
- package/dist/core/editor.js +0 -377
- package/dist/core/editor.js.map +0 -1
- package/dist/core/export.d.ts +0 -11
- package/dist/core/export.d.ts.map +0 -1
- package/dist/core/export.js +0 -54
- package/dist/core/export.js.map +0 -1
- package/dist/core/history-manager.d.ts +0 -75
- package/dist/core/history-manager.d.ts.map +0 -1
- package/dist/core/history-manager.js +0 -146
- package/dist/core/history-manager.js.map +0 -1
- package/dist/core/marketplace-client.d.ts +0 -52
- package/dist/core/marketplace-client.d.ts.map +0 -1
- package/dist/core/marketplace-client.js +0 -71
- package/dist/core/marketplace-client.js.map +0 -1
- package/dist/core/mcp/mcp-config.d.ts +0 -10
- package/dist/core/mcp/mcp-config.d.ts.map +0 -1
- package/dist/core/mcp/mcp-config.js +0 -70
- package/dist/core/mcp/mcp-config.js.map +0 -1
- package/dist/core/mcp/mcp-policy.d.ts +0 -17
- package/dist/core/mcp/mcp-policy.d.ts.map +0 -1
- package/dist/core/mcp/mcp-policy.js +0 -56
- package/dist/core/mcp/mcp-policy.js.map +0 -1
- package/dist/core/mcp/oauth-flow.d.ts +0 -30
- package/dist/core/mcp/oauth-flow.d.ts.map +0 -1
- package/dist/core/mcp/oauth-flow.js +0 -230
- package/dist/core/mcp/oauth-flow.js.map +0 -1
- package/dist/core/mcp/oauth-store.d.ts +0 -13
- package/dist/core/mcp/oauth-store.d.ts.map +0 -1
- package/dist/core/mcp/oauth-store.js +0 -68
- package/dist/core/mcp/oauth-store.js.map +0 -1
- package/dist/core/mcp/resolve-mcp-servers.d.ts +0 -16
- package/dist/core/mcp/resolve-mcp-servers.d.ts.map +0 -1
- package/dist/core/mcp/resolve-mcp-servers.js +0 -83
- package/dist/core/mcp/resolve-mcp-servers.js.map +0 -1
- package/dist/core/mcp-client.d.ts +0 -99
- package/dist/core/mcp-client.d.ts.map +0 -1
- package/dist/core/mcp-client.js +0 -315
- package/dist/core/mcp-client.js.map +0 -1
- package/dist/core/memory-promotions.d.ts +0 -15
- package/dist/core/memory-promotions.d.ts.map +0 -1
- package/dist/core/memory-promotions.js +0 -38
- package/dist/core/memory-promotions.js.map +0 -1
- package/dist/core/memory.d.ts +0 -32
- package/dist/core/memory.d.ts.map +0 -1
- package/dist/core/memory.js +0 -121
- package/dist/core/memory.js.map +0 -1
- package/dist/core/modes.d.ts +0 -432
- package/dist/core/modes.d.ts.map +0 -1
- package/dist/core/modes.js +0 -1088
- package/dist/core/modes.js.map +0 -1
- package/dist/core/pattern-miner.d.ts +0 -43
- package/dist/core/pattern-miner.d.ts.map +0 -1
- package/dist/core/pattern-miner.js +0 -123
- package/dist/core/pattern-miner.js.map +0 -1
- package/dist/core/permission-store.d.ts +0 -15
- package/dist/core/permission-store.d.ts.map +0 -1
- package/dist/core/permission-store.js +0 -30
- package/dist/core/permission-store.js.map +0 -1
- package/dist/core/permissions.d.ts +0 -33
- package/dist/core/permissions.d.ts.map +0 -1
- package/dist/core/permissions.js +0 -141
- package/dist/core/permissions.js.map +0 -1
- package/dist/core/plan-artifacts.d.ts +0 -10
- package/dist/core/plan-artifacts.d.ts.map +0 -1
- package/dist/core/plan-artifacts.js +0 -60
- package/dist/core/plan-artifacts.js.map +0 -1
- package/dist/core/plan-session.d.ts +0 -25
- package/dist/core/plan-session.d.ts.map +0 -1
- package/dist/core/plan-session.js +0 -99
- package/dist/core/plan-session.js.map +0 -1
- package/dist/core/planMode.d.ts +0 -51
- package/dist/core/planMode.d.ts.map +0 -1
- package/dist/core/planMode.js +0 -245
- package/dist/core/planMode.js.map +0 -1
- package/dist/core/plugins.d.ts +0 -96
- package/dist/core/plugins.d.ts.map +0 -1
- package/dist/core/plugins.js +0 -202
- package/dist/core/plugins.js.map +0 -1
- package/dist/core/session-bridge.d.ts +0 -128
- package/dist/core/session-bridge.d.ts.map +0 -1
- package/dist/core/session-bridge.js +0 -328
- package/dist/core/session-bridge.js.map +0 -1
- package/dist/core/session-manager.d.ts +0 -80
- package/dist/core/session-manager.d.ts.map +0 -1
- package/dist/core/session-manager.js +0 -166
- package/dist/core/session-manager.js.map +0 -1
- package/dist/core/session-memory.d.ts +0 -45
- package/dist/core/session-memory.d.ts.map +0 -1
- package/dist/core/session-memory.js +0 -103
- package/dist/core/session-memory.js.map +0 -1
- package/dist/core/skill-selection.d.ts +0 -36
- package/dist/core/skill-selection.d.ts.map +0 -1
- package/dist/core/skill-selection.js +0 -172
- package/dist/core/skill-selection.js.map +0 -1
- package/dist/core/skills-sh-client.d.ts +0 -19
- package/dist/core/skills-sh-client.d.ts.map +0 -1
- package/dist/core/skills-sh-client.js +0 -75
- package/dist/core/skills-sh-client.js.map +0 -1
- package/dist/core/skills.d.ts +0 -97
- package/dist/core/skills.d.ts.map +0 -1
- package/dist/core/skills.js +0 -339
- package/dist/core/skills.js.map +0 -1
- package/dist/core/swarm.d.ts +0 -34
- package/dist/core/swarm.d.ts.map +0 -1
- package/dist/core/swarm.js +0 -111
- package/dist/core/swarm.js.map +0 -1
- package/dist/core/task-status.d.ts +0 -13
- package/dist/core/task-status.d.ts.map +0 -1
- package/dist/core/task-status.js +0 -17
- package/dist/core/task-status.js.map +0 -1
- package/dist/core/tool-orchestrator.d.ts +0 -30
- package/dist/core/tool-orchestrator.d.ts.map +0 -1
- package/dist/core/tool-orchestrator.js +0 -89
- package/dist/core/tool-orchestrator.js.map +0 -1
- package/dist/core/tools.d.ts +0 -462
- package/dist/core/tools.d.ts.map +0 -1
- package/dist/core/tools.js +0 -2916
- package/dist/core/tools.js.map +0 -1
- package/dist/core/transcript-cleanup.d.ts +0 -8
- package/dist/core/transcript-cleanup.d.ts.map +0 -1
- package/dist/core/transcript-cleanup.js +0 -52
- package/dist/core/transcript-cleanup.js.map +0 -1
- package/dist/core/visual-feedback.d.ts +0 -20
- package/dist/core/visual-feedback.d.ts.map +0 -1
- package/dist/core/visual-feedback.js +0 -117
- package/dist/core/visual-feedback.js.map +0 -1
- package/dist/tools/browser.d.ts +0 -120
- package/dist/tools/browser.d.ts.map +0 -1
- package/dist/tools/browser.js +0 -439
- package/dist/tools/browser.js.map +0 -1
- package/dist/tools/test-generator.d.ts +0 -157
- package/dist/tools/test-generator.d.ts.map +0 -1
- package/dist/tools/test-generator.js +0 -893
- package/dist/tools/test-generator.js.map +0 -1
- package/dist/tui/InkApp.d.ts +0 -21
- package/dist/tui/InkApp.d.ts.map +0 -1
- package/dist/tui/InkApp.js +0 -146
- package/dist/tui/InkApp.js.map +0 -1
- package/dist/tui/MarkdownMessage.d.ts +0 -16
- package/dist/tui/MarkdownMessage.d.ts.map +0 -1
- package/dist/tui/MarkdownMessage.js +0 -63
- package/dist/tui/MarkdownMessage.js.map +0 -1
- package/dist/tui/blessed-chat.d.ts +0 -9
- package/dist/tui/blessed-chat.d.ts.map +0 -1
- package/dist/tui/blessed-chat.js +0 -887
- package/dist/tui/blessed-chat.js.map +0 -1
- package/dist/tui/markdown-to-blessed.d.ts +0 -6
- package/dist/tui/markdown-to-blessed.d.ts.map +0 -1
- package/dist/tui/markdown-to-blessed.js +0 -26
- package/dist/tui/markdown-to-blessed.js.map +0 -1
- package/dist/ui/ink/App.d.ts +0 -25
- package/dist/ui/ink/App.d.ts.map +0 -1
- package/dist/ui/ink/App.js +0 -372
- package/dist/ui/ink/App.js.map +0 -1
- package/dist/utils/at-references.d.ts +0 -14
- package/dist/utils/at-references.d.ts.map +0 -1
- package/dist/utils/at-references.js +0 -47
- package/dist/utils/at-references.js.map +0 -1
- package/dist/utils/auto-memory.d.ts +0 -24
- package/dist/utils/auto-memory.d.ts.map +0 -1
- package/dist/utils/auto-memory.js +0 -153
- package/dist/utils/auto-memory.js.map +0 -1
- package/dist/utils/git.d.ts +0 -89
- package/dist/utils/git.d.ts.map +0 -1
- package/dist/utils/git.js +0 -444
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/mcp-servers-file.d.ts +0 -46
- package/dist/utils/mcp-servers-file.d.ts.map +0 -1
- package/dist/utils/mcp-servers-file.js +0 -212
- package/dist/utils/mcp-servers-file.js.map +0 -1
- package/dist/utils/safety.d.ts +0 -60
- package/dist/utils/safety.d.ts.map +0 -1
- package/dist/utils/safety.js +0 -254
- package/dist/utils/safety.js.map +0 -1
- package/dist/utils/smithery.d.ts +0 -25
- package/dist/utils/smithery.d.ts.map +0 -1
- package/dist/utils/smithery.js +0 -50
- package/dist/utils/smithery.js.map +0 -1
- package/dist/utils/testRunner.d.ts +0 -44
- package/dist/utils/testRunner.d.ts.map +0 -1
- package/dist/utils/testRunner.js +0 -270
- package/dist/utils/testRunner.js.map +0 -1
- package/dist/webui/server.d.ts +0 -99
- package/dist/webui/server.d.ts.map +0 -1
- package/dist/webui/server.js +0 -2619
- package/dist/webui/server.js.map +0 -1
- package/webui-dist/assets/index-CSla6Lzy.css +0 -32
- package/webui-dist/assets/index-G_Z4gzPy.js +0 -457
- package/webui-dist/assets/index-G_Z4gzPy.js.map +0 -1
- package/webui-dist/assets/xterm-Da5jL1MD.js +0 -10
- package/webui-dist/assets/xterm-Da5jL1MD.js.map +0 -1
- package/webui-dist/assets/xterm-addon-fit-CMeqLIvm.js +0 -2
- package/webui-dist/assets/xterm-addon-fit-CMeqLIvm.js.map +0 -1
- package/webui-dist/assets/xterm-addon-web-links-D6m8jNVE.js +0 -2
- package/webui-dist/assets/xterm-addon-web-links-D6m8jNVE.js.map +0 -1
- package/webui-dist/index.html +0 -15
package/dist/core/swarm.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { getWorkerBlockedTools } from './agent-tool-policies.js';
|
|
2
|
-
/** Default cap on concurrent background agent processes (overridable via `run_swarm` max_parallel). */
|
|
3
|
-
export const DEFAULT_SWARM_MAX_PARALLEL = 6;
|
|
4
|
-
async function runWithConcurrency(items, maxConcurrent, fn) {
|
|
5
|
-
if (items.length === 0)
|
|
6
|
-
return [];
|
|
7
|
-
const limit = Math.max(1, Math.floor(maxConcurrent));
|
|
8
|
-
const results = new Array(items.length);
|
|
9
|
-
let nextIndex = 0;
|
|
10
|
-
async function worker() {
|
|
11
|
-
while (true) {
|
|
12
|
-
const i = nextIndex++;
|
|
13
|
-
if (i >= items.length)
|
|
14
|
-
return;
|
|
15
|
-
results[i] = await fn(items[i], i);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
const poolSize = Math.min(limit, items.length);
|
|
19
|
-
await Promise.all(Array.from({ length: poolSize }, () => worker()));
|
|
20
|
-
return results;
|
|
21
|
-
}
|
|
22
|
-
export class SwarmOrchestrator {
|
|
23
|
-
backgroundAgent;
|
|
24
|
-
constructor(backgroundAgent) {
|
|
25
|
-
this.backgroundAgent = backgroundAgent;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Delegates a task to a specialized agent mode.
|
|
29
|
-
* Starts a background agent with specific mode instructions and waits for completion.
|
|
30
|
-
*/
|
|
31
|
-
async delegateSubtask(mode, task, timeoutMs = 60000 * 5 // 5 minutes default timeout
|
|
32
|
-
) {
|
|
33
|
-
// Construct the prompt to force mode switch and structured completion
|
|
34
|
-
const prompt = `[[REQUEST_MODE: ${mode} | reason=Delegated Swarm Task]]
|
|
35
|
-
|
|
36
|
-
TASK DESCRIPTION:
|
|
37
|
-
${task}
|
|
38
|
-
|
|
39
|
-
IMPORTANT INSTRUCTIONS:
|
|
40
|
-
1. You are a specialized worker in '${mode}' mode.
|
|
41
|
-
2. Focus ONLY on this task.
|
|
42
|
-
3. When finished, you MUST output the following tag:
|
|
43
|
-
[[TASK_COMPLETE | summary=Task finished successfully]]
|
|
44
|
-
4. Never call restricted coordinator tools: ${getWorkerBlockedTools().join(', ')}.
|
|
45
|
-
`;
|
|
46
|
-
try {
|
|
47
|
-
const taskId = await this.backgroundAgent.startTask(prompt);
|
|
48
|
-
return this.pollTask(taskId, timeoutMs);
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
return {
|
|
52
|
-
success: false,
|
|
53
|
-
result: `Failed to start subtask: ${error.message}`,
|
|
54
|
-
taskId: '',
|
|
55
|
-
status: 'failed'
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
async pollTask(taskId, timeoutMs) {
|
|
60
|
-
const startTime = Date.now();
|
|
61
|
-
const pollInterval = 2000; // 2 seconds
|
|
62
|
-
while (Date.now() - startTime < timeoutMs) {
|
|
63
|
-
const task = await this.backgroundAgent.getTask(taskId);
|
|
64
|
-
if (!task) {
|
|
65
|
-
// Task might be initializing or file lock issue?
|
|
66
|
-
await new Promise(resolve => setTimeout(resolve, pollInterval));
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
// Check provided status
|
|
70
|
-
if (task.status === 'completed' || task.status === 'failed' || task.status === 'killed') {
|
|
71
|
-
const logs = await this.backgroundAgent.getTaskLogs(taskId);
|
|
72
|
-
return {
|
|
73
|
-
success: task.status === 'completed',
|
|
74
|
-
result: logs,
|
|
75
|
-
taskId,
|
|
76
|
-
status: task.status
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
// Also check logs for [[TASK_COMPLETE]] even if process is still running
|
|
80
|
-
// BackgroundAgent implementation relies on process exit for 'completed' status usually.
|
|
81
|
-
// But if the agent keeps running (e.g. infinite loop), we might want to catch the completion tag.
|
|
82
|
-
// However, BackgroundAgent logic only updates status when process exits or is killed.
|
|
83
|
-
// Let's rely on status for now, assuming the sub-agent exits after notify_user?
|
|
84
|
-
// Wait, notify_user exits task mode, but not the process if run with `xibecode run`.
|
|
85
|
-
// `xibecode run` keeps running until input exhausted or explicit exit?
|
|
86
|
-
// Actually `xibecode run` is interactive REPL usually.
|
|
87
|
-
// If run non-interactively with prompt, it runs once and exits?
|
|
88
|
-
// Let's assume it exits.
|
|
89
|
-
await new Promise(resolve => setTimeout(resolve, pollInterval));
|
|
90
|
-
}
|
|
91
|
-
return {
|
|
92
|
-
success: false,
|
|
93
|
-
result: 'Task timed out waiting for completion.',
|
|
94
|
-
taskId,
|
|
95
|
-
status: 'timeout'
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Run multiple delegated subtasks with bounded concurrency (parallel when there are multiple workers).
|
|
100
|
-
* Each subtask is an isolated background `xibecode run` process; overlapping writes to the same files can conflict.
|
|
101
|
-
*/
|
|
102
|
-
async delegateSubtasksParallel(subtasks, options) {
|
|
103
|
-
const timeoutMs = options?.timeoutMs ?? 60000 * 5;
|
|
104
|
-
const maxConcurrent = options?.maxConcurrent ?? DEFAULT_SWARM_MAX_PARALLEL;
|
|
105
|
-
return runWithConcurrency(subtasks, maxConcurrent, async (s) => {
|
|
106
|
-
const r = await this.delegateSubtask(s.mode, s.task, timeoutMs);
|
|
107
|
-
return { ...r, worker_type: s.mode };
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=swarm.js.map
|
package/dist/core/swarm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"swarm.js","sourceRoot":"","sources":["../../src/core/swarm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export type TaskLifecycleStatus = 'queued' | 'running' | 'completed' | 'failed' | 'killed';
|
|
2
|
-
export interface TaskStatusSnapshot {
|
|
3
|
-
id: string;
|
|
4
|
-
label: string;
|
|
5
|
-
status: TaskLifecycleStatus;
|
|
6
|
-
updatedAt: string;
|
|
7
|
-
}
|
|
8
|
-
export declare class TaskStatusStore {
|
|
9
|
-
private readonly statuses;
|
|
10
|
-
upsert(id: string, label: string, status: TaskLifecycleStatus): TaskStatusSnapshot;
|
|
11
|
-
list(): TaskStatusSnapshot[];
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=task-status.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-status.d.ts","sourceRoot":"","sources":["../../src/core/task-status.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3F,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,mBAAmB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;IAElE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,kBAAkB;IAWlF,IAAI,IAAI,kBAAkB,EAAE;CAK7B"}
|
package/dist/core/task-status.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export class TaskStatusStore {
|
|
2
|
-
statuses = new Map();
|
|
3
|
-
upsert(id, label, status) {
|
|
4
|
-
const snapshot = {
|
|
5
|
-
id,
|
|
6
|
-
label,
|
|
7
|
-
status,
|
|
8
|
-
updatedAt: new Date().toISOString(),
|
|
9
|
-
};
|
|
10
|
-
this.statuses.set(id, snapshot);
|
|
11
|
-
return snapshot;
|
|
12
|
-
}
|
|
13
|
-
list() {
|
|
14
|
-
return Array.from(this.statuses.values()).sort((a, b) => Date.parse(b.updatedAt) - Date.parse(a.updatedAt));
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=task-status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-status.js","sourceRoot":"","sources":["../../src/core/task-status.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,eAAe;IACT,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IAElE,MAAM,CAAC,EAAU,EAAE,KAAa,EAAE,MAA2B;QAC3D,MAAM,QAAQ,GAAuB;YACnC,EAAE;YACF,KAAK;YACL,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAC5D,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { ToolUseBlock } from '@anthropic-ai/sdk/resources/messages';
|
|
2
|
-
export interface ToolExecutionUpdate {
|
|
3
|
-
toolUse: ToolUseBlock;
|
|
4
|
-
index: number;
|
|
5
|
-
result: any;
|
|
6
|
-
success: boolean;
|
|
7
|
-
}
|
|
8
|
-
export type ToolExecutorCallback = (toolUse: ToolUseBlock, index: number) => Promise<ToolExecutionUpdate>;
|
|
9
|
-
type ToolBatch = {
|
|
10
|
-
isConcurrent: boolean;
|
|
11
|
-
blocks: Array<{
|
|
12
|
-
toolUse: ToolUseBlock;
|
|
13
|
-
index: number;
|
|
14
|
-
}>;
|
|
15
|
-
};
|
|
16
|
-
export declare class ToolOrchestrator {
|
|
17
|
-
private readonly localConcurrency;
|
|
18
|
-
private readonly networkConcurrency;
|
|
19
|
-
constructor(options?: {
|
|
20
|
-
localConcurrency?: number;
|
|
21
|
-
networkConcurrency?: number;
|
|
22
|
-
});
|
|
23
|
-
partition(toolUseBlocks: ToolUseBlock[]): ToolBatch[];
|
|
24
|
-
executeBatches(toolUseBlocks: ToolUseBlock[], executeTool: ToolExecutorCallback): Promise<ToolExecutionUpdate[]>;
|
|
25
|
-
private isConcurrencySafe;
|
|
26
|
-
private isNetworkTool;
|
|
27
|
-
private executeLimited;
|
|
28
|
-
}
|
|
29
|
-
export {};
|
|
30
|
-
//# sourceMappingURL=tool-orchestrator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/tool-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEzE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAuB1G,KAAK,SAAS,GAAG;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD,CAAC;AAEF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;gBAEhC,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE;IAKhF,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE;IAkB/C,cAAc,CAClB,aAAa,EAAE,YAAY,EAAE,EAC7B,WAAW,EAAE,oBAAoB,GAChC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAwBjC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,aAAa;YAIP,cAAc;CAmB7B"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
const CONCURRENCY_SAFE_TOOLS = new Set([
|
|
2
|
-
'read_file',
|
|
3
|
-
'read_multiple_files',
|
|
4
|
-
'list_directory',
|
|
5
|
-
'search_files',
|
|
6
|
-
'get_context',
|
|
7
|
-
'get_git_status',
|
|
8
|
-
'get_git_changed_files',
|
|
9
|
-
'get_git_diff_summary',
|
|
10
|
-
'fetch_url',
|
|
11
|
-
'web_search',
|
|
12
|
-
'get_test_status',
|
|
13
|
-
'find_files',
|
|
14
|
-
'grep_code',
|
|
15
|
-
]);
|
|
16
|
-
const NETWORK_TOOLS = new Set([
|
|
17
|
-
'fetch_url',
|
|
18
|
-
'web_search',
|
|
19
|
-
]);
|
|
20
|
-
export class ToolOrchestrator {
|
|
21
|
-
localConcurrency;
|
|
22
|
-
networkConcurrency;
|
|
23
|
-
constructor(options) {
|
|
24
|
-
this.localConcurrency = Math.max(1, options?.localConcurrency ?? 8);
|
|
25
|
-
this.networkConcurrency = Math.max(1, options?.networkConcurrency ?? 4);
|
|
26
|
-
}
|
|
27
|
-
partition(toolUseBlocks) {
|
|
28
|
-
const batches = [];
|
|
29
|
-
for (let index = 0; index < toolUseBlocks.length; index += 1) {
|
|
30
|
-
const toolUse = toolUseBlocks[index];
|
|
31
|
-
const isConcurrent = this.isConcurrencySafe(toolUse.name);
|
|
32
|
-
const lastBatch = batches[batches.length - 1];
|
|
33
|
-
if (isConcurrent && lastBatch?.isConcurrent) {
|
|
34
|
-
lastBatch.blocks.push({ toolUse, index });
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
batches.push({
|
|
38
|
-
isConcurrent,
|
|
39
|
-
blocks: [{ toolUse, index }],
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return batches;
|
|
44
|
-
}
|
|
45
|
-
async executeBatches(toolUseBlocks, executeTool) {
|
|
46
|
-
const updates = [];
|
|
47
|
-
const batches = this.partition(toolUseBlocks);
|
|
48
|
-
for (const batch of batches) {
|
|
49
|
-
if (batch.isConcurrent) {
|
|
50
|
-
const networkBlocks = batch.blocks.filter(({ toolUse }) => this.isNetworkTool(toolUse.name));
|
|
51
|
-
const localBlocks = batch.blocks.filter(({ toolUse }) => !this.isNetworkTool(toolUse.name));
|
|
52
|
-
const [localUpdates, networkUpdates] = await Promise.all([
|
|
53
|
-
this.executeLimited(localBlocks, this.localConcurrency, executeTool),
|
|
54
|
-
this.executeLimited(networkBlocks, this.networkConcurrency, executeTool),
|
|
55
|
-
]);
|
|
56
|
-
const batchUpdates = [...localUpdates, ...networkUpdates];
|
|
57
|
-
updates.push(...batchUpdates);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
for (const { toolUse, index } of batch.blocks) {
|
|
61
|
-
updates.push(await executeTool(toolUse, index));
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
updates.sort((a, b) => a.index - b.index);
|
|
66
|
-
return updates;
|
|
67
|
-
}
|
|
68
|
-
isConcurrencySafe(toolName) {
|
|
69
|
-
return CONCURRENCY_SAFE_TOOLS.has(toolName);
|
|
70
|
-
}
|
|
71
|
-
isNetworkTool(toolName) {
|
|
72
|
-
return NETWORK_TOOLS.has(toolName) || toolName.includes('fetch_url') || toolName.includes('web_search');
|
|
73
|
-
}
|
|
74
|
-
async executeLimited(blocks, limit, executeTool) {
|
|
75
|
-
const updates = [];
|
|
76
|
-
let nextIndex = 0;
|
|
77
|
-
const workers = Array.from({ length: Math.min(limit, blocks.length) }, async () => {
|
|
78
|
-
while (nextIndex < blocks.length) {
|
|
79
|
-
const block = blocks[nextIndex++];
|
|
80
|
-
if (!block)
|
|
81
|
-
continue;
|
|
82
|
-
updates.push(await executeTool(block.toolUse, block.index));
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
await Promise.all(workers);
|
|
86
|
-
return updates;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=tool-orchestrator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-orchestrator.js","sourceRoot":"","sources":["../../src/core/tool-orchestrator.ts"],"names":[],"mappings":"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"}
|