@agntk/core 0.3.3 → 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/dist/advanced/index.d.ts +13 -22
- package/dist/advanced/index.d.ts.map +1 -1
- package/dist/advanced/index.js +10 -55
- package/dist/advanced/index.js.map +1 -1
- package/dist/agent.d.ts +2 -35
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +113 -111
- package/dist/agent.js.map +1 -1
- package/dist/config/defaults.d.ts +1 -5
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -11
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +5 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +7 -7
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.d.ts +0 -40
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +3 -80
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +117 -788
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +52 -63
- package/dist/config/schema.js.map +1 -1
- package/dist/constants.d.ts +0 -11
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +0 -17
- package/dist/constants.js.map +1 -1
- package/dist/evals/assertions.d.ts +0 -35
- package/dist/evals/assertions.d.ts.map +1 -1
- package/dist/evals/assertions.js +0 -51
- package/dist/evals/assertions.js.map +1 -1
- package/dist/evals/index.d.ts +0 -5
- package/dist/evals/index.d.ts.map +1 -1
- package/dist/evals/index.js +0 -5
- package/dist/evals/index.js.map +1 -1
- package/dist/evals/runner.d.ts +0 -27
- package/dist/evals/runner.d.ts.map +1 -1
- package/dist/evals/runner.js +3 -45
- package/dist/evals/runner.js.map +1 -1
- package/dist/evals/types.d.ts +0 -14
- package/dist/evals/types.d.ts.map +1 -1
- package/dist/evals/types.js +0 -3
- package/dist/evals/types.js.map +1 -1
- package/dist/guardrails/built-ins.d.ts +0 -28
- package/dist/guardrails/built-ins.d.ts.map +1 -1
- package/dist/guardrails/built-ins.js +21 -47
- package/dist/guardrails/built-ins.js.map +1 -1
- package/dist/guardrails/index.d.ts +1 -4
- package/dist/guardrails/index.d.ts.map +1 -1
- package/dist/guardrails/index.js +1 -4
- package/dist/guardrails/index.js.map +1 -1
- package/dist/guardrails/runner.d.ts +0 -30
- package/dist/guardrails/runner.d.ts.map +1 -1
- package/dist/guardrails/runner.js +1 -46
- package/dist/guardrails/runner.js.map +1 -1
- package/dist/guardrails/types.d.ts +0 -35
- package/dist/guardrails/types.d.ts.map +1 -1
- package/dist/guardrails/types.js +4 -7
- package/dist/guardrails/types.js.map +1 -1
- package/dist/index.d.ts +4 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -31
- package/dist/index.js.map +1 -1
- package/dist/memory/loader.d.ts +0 -17
- package/dist/memory/loader.d.ts.map +1 -1
- package/dist/memory/loader.js +5 -27
- package/dist/memory/loader.js.map +1 -1
- package/dist/memory/store.d.ts +8 -16
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +101 -32
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/types.d.ts +10 -30
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +0 -6
- package/dist/memory/types.js.map +1 -1
- package/dist/models.d.ts +9 -32
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +25 -68
- package/dist/models.js.map +1 -1
- package/dist/observability/index.d.ts +0 -3
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +0 -3
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/langfuse.d.ts +0 -38
- package/dist/observability/langfuse.d.ts.map +1 -1
- package/dist/observability/langfuse.js +6 -55
- package/dist/observability/langfuse.js.map +1 -1
- package/dist/observability/types.d.ts +0 -21
- package/dist/observability/types.d.ts.map +1 -1
- package/dist/observability/types.js +0 -3
- package/dist/observability/types.js.map +1 -1
- package/dist/presets/tool-preset-registry.d.ts +0 -21
- package/dist/presets/tool-preset-registry.d.ts.map +1 -1
- package/dist/presets/tool-preset-registry.js +15 -34
- package/dist/presets/tool-preset-registry.js.map +1 -1
- package/dist/presets/tools.d.ts +41 -39
- package/dist/presets/tools.d.ts.map +1 -1
- package/dist/presets/tools.js +46 -40
- package/dist/presets/tools.js.map +1 -1
- package/dist/prompts/context.d.ts +0 -4
- package/dist/prompts/context.d.ts.map +1 -1
- package/dist/prompts/context.js +21 -33
- package/dist/prompts/context.js.map +1 -1
- package/dist/prompts/template.d.ts +0 -11
- package/dist/prompts/template.d.ts.map +1 -1
- package/dist/prompts/template.js +4 -14
- package/dist/prompts/template.js.map +1 -1
- package/dist/provider-resolver.d.ts +0 -29
- package/dist/provider-resolver.d.ts.map +1 -1
- package/dist/provider-resolver.js +17 -61
- package/dist/provider-resolver.js.map +1 -1
- package/dist/reflection.d.ts +0 -34
- package/dist/reflection.d.ts.map +1 -1
- package/dist/reflection.js +0 -40
- package/dist/reflection.js.map +1 -1
- package/dist/skills/index.d.ts +0 -3
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +0 -3
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/loader.d.ts +0 -69
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +38 -130
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/types.d.ts +0 -36
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/skills/types.js +0 -4
- package/dist/skills/types.js.map +1 -1
- package/dist/system-detect.d.ts +0 -57
- package/dist/system-detect.d.ts.map +1 -1
- package/dist/system-detect.js +9 -114
- package/dist/system-detect.js.map +1 -1
- package/dist/tools/approval.d.ts +0 -47
- package/dist/tools/approval.d.ts.map +1 -1
- package/dist/tools/approval.js +0 -46
- package/dist/tools/approval.js.map +1 -1
- package/dist/tools/ast-grep/cli.d.ts.map +1 -1
- package/dist/tools/ast-grep/cli.js +10 -4
- package/dist/tools/ast-grep/cli.js.map +1 -1
- package/dist/tools/ast-grep/constants.d.ts.map +1 -1
- package/dist/tools/ast-grep/constants.js +7 -14
- package/dist/tools/ast-grep/constants.js.map +1 -1
- package/dist/tools/ast-grep/downloader.d.ts.map +1 -1
- package/dist/tools/ast-grep/downloader.js +1 -4
- package/dist/tools/ast-grep/downloader.js.map +1 -1
- package/dist/tools/ast-grep/index.d.ts +2 -2
- package/dist/tools/ast-grep/index.d.ts.map +1 -1
- package/dist/tools/ast-grep/index.js +1 -1
- package/dist/tools/ast-grep/index.js.map +1 -1
- package/dist/tools/ast-grep/tools.d.ts +4 -4
- package/dist/tools/ast-grep/tools.d.ts.map +1 -1
- package/dist/tools/ast-grep/tools.js +2 -8
- package/dist/tools/ast-grep/tools.js.map +1 -1
- package/dist/tools/browser/index.d.ts +4 -4
- package/dist/tools/browser/index.d.ts.map +1 -1
- package/dist/tools/browser/index.js +2 -3
- package/dist/tools/browser/index.js.map +1 -1
- package/dist/tools/browser/stream.d.ts +0 -32
- package/dist/tools/browser/stream.d.ts.map +1 -1
- package/dist/tools/browser/stream.js +0 -53
- package/dist/tools/browser/stream.js.map +1 -1
- package/dist/tools/browser/tool.d.ts +10 -15
- package/dist/tools/browser/tool.d.ts.map +1 -1
- package/dist/tools/browser/tool.js +2 -26
- package/dist/tools/browser/tool.js.map +1 -1
- package/dist/tools/browser/types.d.ts +31 -156
- package/dist/tools/browser/types.d.ts.map +1 -1
- package/dist/tools/browser/types.js +22 -17
- package/dist/tools/browser/types.js.map +1 -1
- package/dist/tools/deep-reasoning/constants.d.ts +0 -6
- package/dist/tools/deep-reasoning/constants.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/constants.js +0 -6
- package/dist/tools/deep-reasoning/constants.js.map +1 -1
- package/dist/tools/deep-reasoning/engine.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/engine.js +0 -1
- package/dist/tools/deep-reasoning/engine.js.map +1 -1
- package/dist/tools/deep-reasoning/index.d.ts +4 -0
- package/dist/tools/deep-reasoning/index.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/index.js +4 -3
- package/dist/tools/deep-reasoning/index.js.map +1 -1
- package/dist/tools/deep-reasoning/tools.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/tools.js +8 -1
- package/dist/tools/deep-reasoning/tools.js.map +1 -1
- package/dist/tools/deep-reasoning/types.d.ts +5 -30
- package/dist/tools/deep-reasoning/types.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/types.js +10 -1
- package/dist/tools/deep-reasoning/types.js.map +1 -1
- package/dist/tools/file/index.d.ts +3 -5
- package/dist/tools/file/index.d.ts.map +1 -1
- package/dist/tools/file/index.js +2 -4
- package/dist/tools/file/index.js.map +1 -1
- package/dist/tools/file/tools.d.ts +8 -11
- package/dist/tools/file/tools.d.ts.map +1 -1
- package/dist/tools/file/tools.js +45 -59
- package/dist/tools/file/tools.js.map +1 -1
- package/dist/tools/glob/cli.d.ts.map +1 -1
- package/dist/tools/glob/cli.js +8 -6
- package/dist/tools/glob/cli.js.map +1 -1
- package/dist/tools/glob/tools.d.ts.map +1 -1
- package/dist/tools/glob/tools.js +7 -10
- package/dist/tools/glob/tools.js.map +1 -1
- package/dist/tools/grep/cli.d.ts.map +1 -1
- package/dist/tools/grep/cli.js +0 -2
- package/dist/tools/grep/cli.js.map +1 -1
- package/dist/tools/grep/constants.d.ts.map +1 -1
- package/dist/tools/grep/constants.js +3 -5
- package/dist/tools/grep/constants.js.map +1 -1
- package/dist/tools/grep/downloader.d.ts.map +1 -1
- package/dist/tools/grep/downloader.js +3 -3
- package/dist/tools/grep/downloader.js.map +1 -1
- package/dist/tools/grep/tools.d.ts +2 -2
- package/dist/tools/grep/tools.d.ts.map +1 -1
- package/dist/tools/grep/tools.js +8 -14
- package/dist/tools/grep/tools.js.map +1 -1
- package/dist/tools/index.d.ts +10 -11
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +9 -22
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/model-retry.d.ts +0 -40
- package/dist/tools/model-retry.d.ts.map +1 -1
- package/dist/tools/model-retry.js +1 -49
- package/dist/tools/model-retry.js.map +1 -1
- package/dist/tools/plan/constants.d.ts +0 -6
- package/dist/tools/plan/constants.d.ts.map +1 -1
- package/dist/tools/plan/constants.js +9 -6
- package/dist/tools/plan/constants.js.map +1 -1
- package/dist/tools/plan/index.d.ts +1 -1
- package/dist/tools/plan/index.d.ts.map +1 -1
- package/dist/tools/plan/index.js +1 -4
- package/dist/tools/plan/index.js.map +1 -1
- package/dist/tools/plan/tools.d.ts +2 -2
- package/dist/tools/plan/tools.d.ts.map +1 -1
- package/dist/tools/plan/tools.js +10 -11
- package/dist/tools/plan/tools.js.map +1 -1
- package/dist/tools/plan/types.d.ts +22 -32
- package/dist/tools/plan/types.d.ts.map +1 -1
- package/dist/tools/plan/types.js +11 -3
- package/dist/tools/plan/types.js.map +1 -1
- package/dist/tools/progress/index.d.ts +3 -22
- package/dist/tools/progress/index.d.ts.map +1 -1
- package/dist/tools/progress/index.js +19 -34
- package/dist/tools/progress/index.js.map +1 -1
- package/dist/tools/search-skills.d.ts +0 -23
- package/dist/tools/search-skills.d.ts.map +1 -1
- package/dist/tools/search-skills.js +3 -32
- package/dist/tools/search-skills.js.map +1 -1
- package/dist/tools/shell/background.d.ts +2 -18
- package/dist/tools/shell/background.d.ts.map +1 -1
- package/dist/tools/shell/background.js +45 -48
- package/dist/tools/shell/background.js.map +1 -1
- package/dist/tools/shell/constants.d.ts +0 -3
- package/dist/tools/shell/constants.d.ts.map +1 -1
- package/dist/tools/shell/constants.js +16 -6
- package/dist/tools/shell/constants.js.map +1 -1
- package/dist/tools/shell/index.d.ts +1 -1
- package/dist/tools/shell/index.d.ts.map +1 -1
- package/dist/tools/shell/index.js +1 -1
- package/dist/tools/shell/index.js.map +1 -1
- package/dist/tools/shell/tools.d.ts +3 -3
- package/dist/tools/shell/tools.d.ts.map +1 -1
- package/dist/tools/shell/tools.js +0 -2
- package/dist/tools/shell/tools.js.map +1 -1
- package/dist/tools/shell/types.d.ts +5 -13
- package/dist/tools/shell/types.d.ts.map +1 -1
- package/dist/tools/shell/types.js +10 -1
- package/dist/tools/shell/types.js.map +1 -1
- package/dist/tools/spawn-agent/check-agent.d.ts +45 -0
- package/dist/tools/spawn-agent/check-agent.d.ts.map +1 -0
- package/dist/tools/spawn-agent/check-agent.js +84 -0
- package/dist/tools/spawn-agent/check-agent.js.map +1 -0
- package/dist/tools/spawn-agent/index.d.ts +44 -51
- package/dist/tools/spawn-agent/index.d.ts.map +1 -1
- package/dist/tools/spawn-agent/index.js +196 -84
- package/dist/tools/spawn-agent/index.js.map +1 -1
- package/dist/tools/spawn-agent/registry.d.ts +36 -0
- package/dist/tools/spawn-agent/registry.d.ts.map +1 -0
- package/dist/tools/spawn-agent/registry.js +88 -0
- package/dist/tools/spawn-agent/registry.js.map +1 -0
- package/dist/tools/utils/errors.d.ts +2 -1
- package/dist/tools/utils/errors.d.ts.map +1 -1
- package/dist/tools/utils/errors.js +2 -1
- package/dist/tools/utils/errors.js.map +1 -1
- package/dist/tools/utils/shell.d.ts +0 -11
- package/dist/tools/utils/shell.d.ts.map +1 -1
- package/dist/tools/utils/shell.js +10 -78
- package/dist/tools/utils/shell.js.map +1 -1
- package/dist/tools/utils/tool-result.d.ts +0 -3
- package/dist/tools/utils/tool-result.d.ts.map +1 -1
- package/dist/tools/utils/tool-result.js +4 -4
- package/dist/tools/utils/tool-result.js.map +1 -1
- package/dist/tools/web-search/index.d.ts +4 -0
- package/dist/tools/web-search/index.d.ts.map +1 -0
- package/dist/tools/web-search/index.js +3 -0
- package/dist/tools/web-search/index.js.map +1 -0
- package/dist/tools/web-search/tools.d.ts +17 -0
- package/dist/tools/web-search/tools.d.ts.map +1 -0
- package/dist/tools/web-search/tools.js +81 -0
- package/dist/tools/web-search/tools.js.map +1 -0
- package/dist/tools/web-search/types.d.ts +16 -0
- package/dist/tools/web-search/types.d.ts.map +1 -0
- package/dist/tools/web-search/types.js +29 -0
- package/dist/tools/web-search/types.js.map +1 -0
- package/dist/tools/workspace-middleware.d.ts +14 -0
- package/dist/tools/workspace-middleware.d.ts.map +1 -0
- package/dist/tools/workspace-middleware.js +97 -0
- package/dist/tools/workspace-middleware.js.map +1 -0
- package/dist/types/agent.d.ts +1 -66
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js +0 -6
- package/dist/types/agent.js.map +1 -1
- package/dist/types/index.d.ts +4 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -3
- package/dist/types/index.js.map +1 -1
- package/dist/types/lifecycle.d.ts +0 -141
- package/dist/types/lifecycle.d.ts.map +1 -1
- package/dist/types/lifecycle.js +4 -54
- package/dist/types/lifecycle.js.map +1 -1
- package/dist/types/streaming.d.ts +0 -4
- package/dist/types/streaming.d.ts.map +1 -1
- package/dist/types/streaming.js +0 -4
- package/dist/types/streaming.js.map +1 -1
- package/dist/usage-limits.d.ts +0 -37
- package/dist/usage-limits.d.ts.map +1 -1
- package/dist/usage-limits.js +1 -40
- package/dist/usage-limits.js.map +1 -1
- package/dist/workflow/durable-tool.d.ts +0 -84
- package/dist/workflow/durable-tool.d.ts.map +1 -1
- package/dist/workflow/durable-tool.js +2 -104
- package/dist/workflow/durable-tool.js.map +1 -1
- package/dist/workflow/hooks.d.ts +0 -215
- package/dist/workflow/hooks.d.ts.map +1 -1
- package/dist/workflow/hooks.js +15 -221
- package/dist/workflow/hooks.js.map +1 -1
- package/dist/workflow/index.d.ts +0 -9
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +0 -12
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/utils.d.ts +0 -24
- package/dist/workflow/utils.d.ts.map +1 -1
- package/dist/workflow/utils.js +1 -32
- package/dist/workflow/utils.js.map +1 -1
- package/dist/wrappers/best-of-n.d.ts +0 -35
- package/dist/wrappers/best-of-n.d.ts.map +1 -1
- package/dist/wrappers/best-of-n.js +4 -53
- package/dist/wrappers/best-of-n.js.map +1 -1
- package/dist/wrappers/refine-loop.d.ts +36 -0
- package/dist/wrappers/refine-loop.d.ts.map +1 -0
- package/dist/wrappers/refine-loop.js +135 -0
- package/dist/wrappers/refine-loop.js.map +1 -0
- package/package.json +14 -8
|
@@ -1,44 +1,31 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @agntk/core - Background Process Management Tool
|
|
3
|
-
*
|
|
4
|
-
* Manages long-running background processes with session tracking.
|
|
5
|
-
* Ported from @agntk/brain shell to consolidate shell tools.
|
|
6
|
-
*/
|
|
7
1
|
import { tool } from 'ai';
|
|
8
2
|
import { z } from 'zod';
|
|
9
3
|
import { spawn } from 'node:child_process';
|
|
10
4
|
import { isDangerousCommand, buildSanitizedEnv } from '../utils/shell.js';
|
|
11
5
|
import { MAX_COMMAND_LENGTH, MAX_CWD_LENGTH } from './constants.js';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
// ============================================================================
|
|
15
|
-
const MAX_BUFFER = 1024 * 1024; // 1MB
|
|
16
|
-
const ROLLING_BUFFER = 512 * 1024; // 512KB
|
|
6
|
+
const MAX_BUFFER = 1024 * 1024;
|
|
7
|
+
const ROLLING_BUFFER = 512 * 1024;
|
|
17
8
|
const MAX_SESSIONS = 20;
|
|
18
|
-
const SESSION_TTL_MS = 2 * 60 * 60 * 1000;
|
|
9
|
+
const SESSION_TTL_MS = 2 * 60 * 60 * 1000;
|
|
19
10
|
const backgroundSessions = new Map();
|
|
20
11
|
function generateSessionId() {
|
|
21
12
|
return `bg-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
22
13
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Evict completed/stopped sessions when at capacity, or the oldest expired session.
|
|
25
|
-
* M-1: prevents the Map from growing indefinitely.
|
|
26
|
-
*/
|
|
27
14
|
function evictSessions() {
|
|
28
15
|
const now = Date.now();
|
|
29
|
-
// First, remove TTL-expired entries regardless of capacity
|
|
30
16
|
for (const [id, session] of backgroundSessions.entries()) {
|
|
31
17
|
if (now - session.startedAt > SESSION_TTL_MS) {
|
|
32
18
|
if (session.status === 'running') {
|
|
33
19
|
try {
|
|
34
20
|
session.process.kill('SIGTERM');
|
|
35
21
|
}
|
|
36
|
-
catch {
|
|
22
|
+
catch {
|
|
23
|
+
void 0;
|
|
24
|
+
}
|
|
37
25
|
}
|
|
38
26
|
backgroundSessions.delete(id);
|
|
39
27
|
}
|
|
40
28
|
}
|
|
41
|
-
// Then, if still over cap, evict oldest completed/stopped session
|
|
42
29
|
if (backgroundSessions.size >= MAX_SESSIONS) {
|
|
43
30
|
for (const [id, session] of backgroundSessions.entries()) {
|
|
44
31
|
if (session.status !== 'running') {
|
|
@@ -49,36 +36,31 @@ function evictSessions() {
|
|
|
49
36
|
}
|
|
50
37
|
}
|
|
51
38
|
}
|
|
52
|
-
/** Get all sessions (for testing). */
|
|
53
39
|
export function getBackgroundSessions() {
|
|
54
40
|
return backgroundSessions;
|
|
55
41
|
}
|
|
56
|
-
/** Clear all sessions (for testing). */
|
|
57
42
|
export function clearBackgroundSessions() {
|
|
58
43
|
for (const session of backgroundSessions.values()) {
|
|
59
44
|
if (session.status === 'running') {
|
|
60
45
|
try {
|
|
61
46
|
session.process.kill('SIGTERM');
|
|
62
47
|
}
|
|
63
|
-
catch
|
|
48
|
+
catch {
|
|
49
|
+
void 0;
|
|
50
|
+
}
|
|
64
51
|
}
|
|
65
52
|
}
|
|
66
53
|
backgroundSessions.clear();
|
|
67
54
|
}
|
|
68
|
-
// ============================================================================
|
|
69
|
-
// Background Process Lifecycle
|
|
70
|
-
// ============================================================================
|
|
71
55
|
function startBackgroundProcess(command, options = {}) {
|
|
72
|
-
// Evict old sessions before adding a new one (M-1)
|
|
73
56
|
evictSessions();
|
|
74
57
|
const sessionId = generateSessionId();
|
|
75
58
|
const { cwd = process.cwd() } = options;
|
|
76
|
-
// S-12: filter user-supplied env — strip secrets and disallow PATH/LD_PRELOAD overrides
|
|
77
59
|
const filteredExtra = {};
|
|
78
60
|
if (options.env) {
|
|
79
61
|
for (const [k, v] of Object.entries(options.env)) {
|
|
80
62
|
if (k === 'LD_PRELOAD' || k === 'LD_LIBRARY_PATH')
|
|
81
|
-
continue;
|
|
63
|
+
continue;
|
|
82
64
|
filteredExtra[k] = v;
|
|
83
65
|
}
|
|
84
66
|
}
|
|
@@ -121,24 +103,17 @@ function startBackgroundProcess(command, options = {}) {
|
|
|
121
103
|
backgroundSessions.set(sessionId, session);
|
|
122
104
|
return session;
|
|
123
105
|
}
|
|
124
|
-
// ============================================================================
|
|
125
|
-
// Tool Factory
|
|
126
|
-
// ============================================================================
|
|
127
106
|
const backgroundInputSchema = z.object({
|
|
128
107
|
operation: z.enum(['start', 'status', 'output', 'stop', 'list']).describe('Operation to perform'),
|
|
129
|
-
command: z
|
|
108
|
+
command: z
|
|
109
|
+
.string()
|
|
110
|
+
.max(MAX_COMMAND_LENGTH)
|
|
111
|
+
.optional()
|
|
112
|
+
.describe('Command to run (required for start)'),
|
|
130
113
|
sessionId: z.string().optional().describe('Session ID (required for status/output/stop)'),
|
|
131
114
|
cwd: z.string().max(MAX_CWD_LENGTH).optional().describe('Working directory (for start)'),
|
|
132
|
-
env: z.record(z.string()).optional().describe('Environment variables (for start)'),
|
|
115
|
+
env: z.record(z.string(), z.string()).optional().describe('Environment variables (for start)'),
|
|
133
116
|
});
|
|
134
|
-
/**
|
|
135
|
-
* Create a background process management tool.
|
|
136
|
-
*
|
|
137
|
-
* @example
|
|
138
|
-
* ```typescript
|
|
139
|
-
* const tools = { shell: createShellTool('/my/project'), background: createBackgroundTool() };
|
|
140
|
-
* ```
|
|
141
|
-
*/
|
|
142
117
|
export function createBackgroundTool() {
|
|
143
118
|
return tool({
|
|
144
119
|
description: `Run long-running processes in the background without blocking.
|
|
@@ -167,10 +142,17 @@ Examples:
|
|
|
167
142
|
switch (operation) {
|
|
168
143
|
case 'start': {
|
|
169
144
|
if (!command) {
|
|
170
|
-
return JSON.stringify({
|
|
145
|
+
return JSON.stringify({
|
|
146
|
+
success: false,
|
|
147
|
+
error: 'Command is required for start operation',
|
|
148
|
+
});
|
|
171
149
|
}
|
|
172
150
|
if (isDangerousCommand(command)) {
|
|
173
|
-
return JSON.stringify({
|
|
151
|
+
return JSON.stringify({
|
|
152
|
+
success: false,
|
|
153
|
+
error: 'Command blocked for safety',
|
|
154
|
+
blocked: true,
|
|
155
|
+
});
|
|
174
156
|
}
|
|
175
157
|
const session = startBackgroundProcess(command, { cwd, env });
|
|
176
158
|
return JSON.stringify({
|
|
@@ -183,7 +165,10 @@ Examples:
|
|
|
183
165
|
}
|
|
184
166
|
case 'status': {
|
|
185
167
|
if (!sessionId) {
|
|
186
|
-
return JSON.stringify({
|
|
168
|
+
return JSON.stringify({
|
|
169
|
+
success: false,
|
|
170
|
+
error: 'Session ID is required for status operation',
|
|
171
|
+
});
|
|
187
172
|
}
|
|
188
173
|
const session = backgroundSessions.get(sessionId);
|
|
189
174
|
if (!session) {
|
|
@@ -202,7 +187,10 @@ Examples:
|
|
|
202
187
|
}
|
|
203
188
|
case 'output': {
|
|
204
189
|
if (!sessionId) {
|
|
205
|
-
return JSON.stringify({
|
|
190
|
+
return JSON.stringify({
|
|
191
|
+
success: false,
|
|
192
|
+
error: 'Session ID is required for output operation',
|
|
193
|
+
});
|
|
206
194
|
}
|
|
207
195
|
const session = backgroundSessions.get(sessionId);
|
|
208
196
|
if (!session) {
|
|
@@ -219,7 +207,10 @@ Examples:
|
|
|
219
207
|
}
|
|
220
208
|
case 'stop': {
|
|
221
209
|
if (!sessionId) {
|
|
222
|
-
return JSON.stringify({
|
|
210
|
+
return JSON.stringify({
|
|
211
|
+
success: false,
|
|
212
|
+
error: 'Session ID is required for stop operation',
|
|
213
|
+
});
|
|
223
214
|
}
|
|
224
215
|
const session = backgroundSessions.get(sessionId);
|
|
225
216
|
if (!session) {
|
|
@@ -241,9 +232,15 @@ Examples:
|
|
|
241
232
|
session.process.kill('SIGKILL');
|
|
242
233
|
}
|
|
243
234
|
}
|
|
244
|
-
catch
|
|
235
|
+
catch {
|
|
236
|
+
void 0;
|
|
237
|
+
}
|
|
245
238
|
}, 5000);
|
|
246
|
-
return JSON.stringify({
|
|
239
|
+
return JSON.stringify({
|
|
240
|
+
success: true,
|
|
241
|
+
message: 'Process terminated',
|
|
242
|
+
sessionId: session.id,
|
|
243
|
+
});
|
|
247
244
|
}
|
|
248
245
|
catch (error) {
|
|
249
246
|
return JSON.stringify({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background.js","sourceRoot":"","sources":["../../../src/tools/shell/background.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"background.js","sourceRoot":"","sources":["../../../src/tools/shell/background.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAcjE,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/B,MAAM,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC;AAClC,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE1C,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA6B,CAAC;AAEhE,SAAS,iBAAiB;IACxB,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC;QACzD,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,cAAc,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,CAAC;gBAAC,MAAM,CAAC;oBACP,KAAK,CAAC,CAAC;gBACT,CAAC;YACH,CAAC;YACD,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,IAAI,kBAAkB,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC;YACzD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,kBAAkB,CAAC,IAAI,GAAG,YAAY;oBAAE,MAAM;YACpD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,KAAK,MAAM,OAAO,IAAI,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,CAAC;YACT,CAAC;QACH,CAAC;IACH,CAAC;IACD,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAe,EACf,UAA0D,EAAE;IAE5D,aAAa,EAAE,CAAC;IAEhB,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAExC,MAAM,aAAa,GAA2B,EAAE,CAAC;IACjD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,iBAAiB;gBAAE,SAAS;YAC5D,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;QAC1C,GAAG;QACH,GAAG,EAAE,EAAE,GAAG,iBAAiB,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;QAC1D,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAsB;QACjC,EAAE,EAAE,SAAS;QACb,OAAO;QACP,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,MAAM,EAAE,SAAS;QACjB,GAAG;KACJ,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACvC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YACvC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACvC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YACvC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACxB,OAAO,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;QACrD,OAAO,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACpB,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;QAC1B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACjG,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,kBAAkB,CAAC;SACvB,QAAQ,EAAE;SACV,QAAQ,CAAC,qCAAqC,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IACzF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACxF,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC/F,CAAC,CAAC;AAEH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,CAAC;QACV,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;0BAoBS;QACtB,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;YAC7D,QAAQ,SAAS,EAAE,CAAC;gBAClB,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,IAAI,CAAC,SAAS,CAAC;4BACpB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,yCAAyC;yBACjD,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;wBAChC,OAAO,IAAI,CAAC,SAAS,CAAC;4BACpB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,4BAA4B;4BACnC,OAAO,EAAE,IAAI;yBACd,CAAC,CAAC;oBACL,CAAC;oBAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC9D,OAAO,IAAI,CAAC,SAAS,CAAC;wBACpB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,OAAO,CAAC,EAAE;wBACrB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;wBAC9B,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,8DAA8D;qBACxE,CAAC,CAAC;gBACL,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,OAAO,IAAI,CAAC,SAAS,CAAC;4BACpB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,6CAA6C;yBACrD,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAClD,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,SAAS,EAAE,EAAE,CAAC,CAAC;oBACtF,CAAC;oBACD,OAAO,IAAI,CAAC,SAAS,CAAC;wBACpB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,OAAO,CAAC,EAAE;wBACrB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,UAAU,EACR,OAAO,CAAC,MAAM,KAAK,SAAS;4BAC1B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG;4BAC3D,CAAC,CAAC,SAAS;wBACf,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;qBACvC,CAAC,CAAC;gBACL,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,OAAO,IAAI,CAAC,SAAS,CAAC;4BACpB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,6CAA6C;yBACrD,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAClD,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,SAAS,EAAE,EAAE,CAAC,CAAC;oBACtF,CAAC;oBACD,OAAO,IAAI,CAAC,SAAS,CAAC;wBACpB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,OAAO,CAAC,EAAE;wBACrB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;wBACpC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;wBACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;qBAC3B,CAAC,CAAC;gBACL,CAAC;gBAED,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,OAAO,IAAI,CAAC,SAAS,CAAC;4BACpB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,2CAA2C;yBACnD,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAClD,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,SAAS,EAAE,EAAE,CAAC,CAAC;oBACtF,CAAC;oBACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBACjC,OAAO,IAAI,CAAC,SAAS,CAAC;4BACpB,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE,mBAAmB,OAAO,CAAC,MAAM,EAAE;4BAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ;yBAC3B,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC;wBACH,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAChC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;wBAC3B,UAAU,CAAC,GAAG,EAAE;4BACd,IAAI,CAAC;gCACH,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oCACjC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gCAClC,CAAC;4BACH,CAAC;4BAAC,MAAM,CAAC;gCACP,KAAK,CAAC,CAAC;4BACT,CAAC;wBACH,CAAC,EAAE,IAAI,CAAC,CAAC;wBACT,OAAO,IAAI,CAAC,SAAS,CAAC;4BACpB,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE,oBAAoB;4BAC7B,SAAS,EAAE,OAAO,CAAC,EAAE;yBACtB,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,IAAI,CAAC,SAAS,CAAC;4BACpB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;yBAC3F,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACnE,SAAS,EAAE,CAAC,CAAC,EAAE;wBACf,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;wBAC/B,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;wBAC9C,QAAQ,EAAE,CAAC,CAAC,QAAQ;qBACrB,CAAC,CAAC,CAAC;oBACJ,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC7E,CAAC;gBAED;oBACE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,SAAS,EAAE,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shell tool constants
|
|
3
|
-
*/
|
|
4
1
|
export declare const SHELL_DESCRIPTION = "Execute shell commands for tasks that specialized tools cannot accomplish.\nThis tool runs bash commands with safety checks and optional allowlisting.\n\nWhen to use this tool:\n- Running build commands (npm run build, make, cargo build)\n- Installing packages (npm install, pip install)\n- Running scripts (./scripts/deploy.sh)\n- Git operations not covered by specialized tools (git stash, git cherry-pick)\n- System inspection (ls, find, df, du)\n- Development servers (npm run dev, python -m http.server)\n\nWhen NOT to use this tool:\n- Reading/writing files \u2192 use fs tool\n- Searching code \u2192 use fs tool with grep action\n- Background processes that need monitoring \u2192 use delegate tool with background action\n- Any task where a specialized tool exists\n\nSafety features:\n- Dangerous command patterns are blocked (rm -rf /, sudo, etc.)\n- Interactive commands are rejected (vim, nano, htop)\n- Commands can be allowlisted for repeated use without re-confirmation\n- Timeout protection (default 30s, max 5min)\n\nCommand allowlisting:\nUse allow: true on first execution to add a command pattern to the allowlist.\nSubsequent calls with the same command won't require the \"allow\" flag.\nThis is useful for commands you'll run repeatedly (npm test, make build, etc.)\n\nParameters explained:\n- command: Required. The bash command to execute.\n- cwd: Working directory (default: project root).\n- timeout: Timeout in milliseconds (default: 30000, max: 300000).\n- allow: If true, add this command pattern to the allowlist.\n- stream: If true, stream output in chunks (for long-running commands).\n\nYou should:\n1. Prefer specialized tools when available\n2. Use allow: true for commands you'll run repeatedly\n3. Set appropriate timeout for long-running commands\n4. Use stream: true for commands with continuous output\n5. Check exitCode to determine success (0 = success)\n6. Review stderr even on success for warnings";
|
|
5
2
|
export declare const DEFAULT_TIMEOUT = 30000;
|
|
6
3
|
export declare const MAX_TIMEOUT = 300000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/tools/shell/constants.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/tools/shell/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,65DAyCgB,CAAC;AAE/C,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,WAAW,SAAS,CAAC;AAClC,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC,eAAO,MAAM,oBAAoB,yIAiBvB,CAAC"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shell tool constants
|
|
3
|
-
*/
|
|
4
1
|
export const SHELL_DESCRIPTION = `Execute shell commands for tasks that specialized tools cannot accomplish.
|
|
5
2
|
This tool runs bash commands with safety checks and optional allowlisting.
|
|
6
3
|
|
|
@@ -48,8 +45,21 @@ export const MAX_TIMEOUT = 300000;
|
|
|
48
45
|
export const MAX_COMMAND_LENGTH = 10000;
|
|
49
46
|
export const MAX_CWD_LENGTH = 1000;
|
|
50
47
|
export const INTERACTIVE_COMMANDS = [
|
|
51
|
-
'vi',
|
|
52
|
-
'
|
|
53
|
-
'
|
|
48
|
+
'vi',
|
|
49
|
+
'vim',
|
|
50
|
+
'nvim',
|
|
51
|
+
'nano',
|
|
52
|
+
'emacs',
|
|
53
|
+
'pico',
|
|
54
|
+
'htop',
|
|
55
|
+
'top',
|
|
56
|
+
'less',
|
|
57
|
+
'more',
|
|
58
|
+
'man',
|
|
59
|
+
'screen',
|
|
60
|
+
'tmux',
|
|
61
|
+
'ssh',
|
|
62
|
+
'telnet',
|
|
63
|
+
'ftp',
|
|
54
64
|
];
|
|
55
65
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/tools/shell/constants.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/tools/shell/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAyCa,CAAC;AAE/C,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI;IACJ,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,QAAQ;IACR,MAAM;IACN,KAAK;IACL,QAAQ;IACR,KAAK;CACG,CAAC"}
|
|
@@ -3,5 +3,5 @@ export { createBackgroundTool, clearBackgroundSessions, getBackgroundSessions }
|
|
|
3
3
|
export type { BackgroundSession } from './background.js';
|
|
4
4
|
export { addToAllowlist, clearAllowlist, getAllowlist } from './utils.js';
|
|
5
5
|
export type { ShellInput, ShellResult } from './types.js';
|
|
6
|
-
export { SHELL_DESCRIPTION, DEFAULT_TIMEOUT, MAX_TIMEOUT, INTERACTIVE_COMMANDS
|
|
6
|
+
export { SHELL_DESCRIPTION, DEFAULT_TIMEOUT, MAX_TIMEOUT, INTERACTIVE_COMMANDS } from './constants.js';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/shell/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACpG,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/shell/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACpG,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createShellTool, shellTool, executeShellCommand } from './tools.js';
|
|
2
2
|
export { createBackgroundTool, clearBackgroundSessions, getBackgroundSessions } from './background.js';
|
|
3
3
|
export { addToAllowlist, clearAllowlist, getAllowlist } from './utils.js';
|
|
4
|
-
export { SHELL_DESCRIPTION, DEFAULT_TIMEOUT, MAX_TIMEOUT, INTERACTIVE_COMMANDS
|
|
4
|
+
export { SHELL_DESCRIPTION, DEFAULT_TIMEOUT, MAX_TIMEOUT, INTERACTIVE_COMMANDS } from './constants.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/shell/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEpG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/shell/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEpG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
export declare function createShellTool(workspaceRoot: string): import("ai").Tool<{
|
|
2
2
|
command: string;
|
|
3
|
-
timeout?: number | undefined;
|
|
4
3
|
cwd?: string | undefined;
|
|
4
|
+
timeout?: number | undefined;
|
|
5
5
|
allow?: boolean | undefined;
|
|
6
6
|
stream?: boolean | undefined;
|
|
7
7
|
}, string>;
|
|
8
8
|
export declare const shellTool: import("ai").Tool<{
|
|
9
9
|
command: string;
|
|
10
|
-
timeout?: number | undefined;
|
|
11
10
|
cwd?: string | undefined;
|
|
11
|
+
timeout?: number | undefined;
|
|
12
12
|
allow?: boolean | undefined;
|
|
13
13
|
stream?: boolean | undefined;
|
|
14
14
|
}, string>;
|
|
15
15
|
export declare const executeShellCommand: import("ai").ToolExecuteFunction<{
|
|
16
16
|
command: string;
|
|
17
|
-
timeout?: number | undefined;
|
|
18
17
|
cwd?: string | undefined;
|
|
18
|
+
timeout?: number | undefined;
|
|
19
19
|
allow?: boolean | undefined;
|
|
20
20
|
stream?: boolean | undefined;
|
|
21
21
|
}, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/tools/shell/tools.ts"],"names":[],"mappings":"AAUA,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM;;;;;;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/tools/shell/tools.ts"],"names":[],"mappings":"AAUA,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM;;;;;;WA6EpD;AAED,eAAO,MAAM,SAAS;;;;;;UAAiC,CAAC;AAExD,eAAO,MAAM,mBAAmB;;;;;;UAAqB,CAAC"}
|
|
@@ -23,7 +23,6 @@ export function createShellTool(workspaceRoot) {
|
|
|
23
23
|
if (allow && !isCommandAllowed(command)) {
|
|
24
24
|
addToAllowlist(command);
|
|
25
25
|
}
|
|
26
|
-
// S-13: Validate cwd is within workspace root
|
|
27
26
|
let effectiveCwd;
|
|
28
27
|
try {
|
|
29
28
|
effectiveCwd = cwd ? validateCwd(cwd, workspaceRoot) : workspaceRoot;
|
|
@@ -72,6 +71,5 @@ export function createShellTool(workspaceRoot) {
|
|
|
72
71
|
});
|
|
73
72
|
}
|
|
74
73
|
export const shellTool = createShellTool(process.cwd());
|
|
75
|
-
// Direct export for testing (bypasses optional `execute` type from AI SDK)
|
|
76
74
|
export const executeShellCommand = shellTool.execute;
|
|
77
75
|
//# sourceMappingURL=tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/shell/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEjF,MAAM,UAAU,eAAe,CAAC,aAAqB;IACnD,OAAO,IAAI,CAAC;QACV,WAAW,EAAE,iBAAiB;QAC9B,WAAW,EAAE,gBAAgB;QAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,eAAe,EAAE,KAAK,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;YAEzF,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,SAAS,CACjB,8EAA8E,EAC9E,aAAa,CAAC,eAAe,EAC7B,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,8BAA8B,EAAE,CAC7E,CAAC;YACJ,CAAC;YAED,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,OAAO,KAAK,CAAC,wBAAwB,SAAS,iBAAiB,EAAE;oBAC/D,UAAU,EAAE,2EAA2E;iBACxF,CAAC,CAAC;YACL,CAAC;YAED,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/shell/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Shell tool types and schemas.
|
|
3
|
+
* Defines the input validation (Zod) and output interfaces for shell command execution.
|
|
4
|
+
*/
|
|
1
5
|
import { z } from 'zod';
|
|
2
6
|
export declare const shellInputSchema: z.ZodObject<{
|
|
3
7
|
command: z.ZodString;
|
|
@@ -5,19 +9,7 @@ export declare const shellInputSchema: z.ZodObject<{
|
|
|
5
9
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
6
10
|
allow: z.ZodOptional<z.ZodBoolean>;
|
|
7
11
|
stream: z.ZodOptional<z.ZodBoolean>;
|
|
8
|
-
},
|
|
9
|
-
command: string;
|
|
10
|
-
timeout?: number | undefined;
|
|
11
|
-
cwd?: string | undefined;
|
|
12
|
-
allow?: boolean | undefined;
|
|
13
|
-
stream?: boolean | undefined;
|
|
14
|
-
}, {
|
|
15
|
-
command: string;
|
|
16
|
-
timeout?: number | undefined;
|
|
17
|
-
cwd?: string | undefined;
|
|
18
|
-
allow?: boolean | undefined;
|
|
19
|
-
stream?: boolean | undefined;
|
|
20
|
-
}>;
|
|
12
|
+
}, z.core.$strip>;
|
|
21
13
|
export type ShellInput = z.infer<typeof shellInputSchema>;
|
|
22
14
|
export interface ShellResult {
|
|
23
15
|
stdout: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/shell/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/shell/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gBAAgB;;;;;;iBAW3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Shell tool types and schemas.
|
|
3
|
+
* Defines the input validation (Zod) and output interfaces for shell command execution.
|
|
4
|
+
*/
|
|
1
5
|
import { z } from 'zod';
|
|
2
6
|
import { MAX_COMMAND_LENGTH, MAX_CWD_LENGTH, MAX_TIMEOUT } from './constants.js';
|
|
3
7
|
export const shellInputSchema = z.object({
|
|
4
8
|
command: z.string().max(MAX_COMMAND_LENGTH).describe('Bash command to execute'),
|
|
5
9
|
cwd: z.string().max(MAX_CWD_LENGTH).optional().describe('Working directory'),
|
|
6
|
-
timeout: z
|
|
10
|
+
timeout: z
|
|
11
|
+
.number()
|
|
12
|
+
.min(100)
|
|
13
|
+
.max(MAX_TIMEOUT)
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Timeout in ms (default: 30000)'),
|
|
7
16
|
allow: z.boolean().optional().describe('Add to allowlist for future calls'),
|
|
8
17
|
stream: z.boolean().optional().describe('Stream output (for long commands)'),
|
|
9
18
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/shell/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC/E,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC5E,OAAO,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/shell/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC/E,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC5E,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,GAAG,CAAC;SACR,GAAG,CAAC,WAAW,CAAC;SAChB,QAAQ,EAAE;SACV,QAAQ,CAAC,gCAAgC,CAAC;IAC7C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC3E,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC7E,CAAC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Sub-agent status tracking tool.
|
|
3
|
+
* Provides functionality to poll, filter, and summarize the status of spawned agents.
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import type { AgentRegistry, AgentStatus } from './registry.js';
|
|
7
|
+
export interface CheckAgentOptions {
|
|
8
|
+
registry: AgentRegistry;
|
|
9
|
+
}
|
|
10
|
+
export interface CheckAgentResult {
|
|
11
|
+
agents: CheckAgentEntry[];
|
|
12
|
+
summary: string;
|
|
13
|
+
}
|
|
14
|
+
export interface CheckAgentEntry {
|
|
15
|
+
agentId: string;
|
|
16
|
+
task: string;
|
|
17
|
+
status: AgentStatus;
|
|
18
|
+
workspacePath: string;
|
|
19
|
+
summary?: string;
|
|
20
|
+
error?: string;
|
|
21
|
+
errorType?: string;
|
|
22
|
+
duration?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare const checkAgentParametersSchema: z.ZodObject<{
|
|
25
|
+
agentId: z.ZodOptional<z.ZodString>;
|
|
26
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
27
|
+
failed: "failed";
|
|
28
|
+
running: "running";
|
|
29
|
+
completed: "completed";
|
|
30
|
+
}>>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export type CheckAgentInput = z.infer<typeof checkAgentParametersSchema>;
|
|
33
|
+
export declare function createCheckAgentTool(options: CheckAgentOptions): {
|
|
34
|
+
description: string;
|
|
35
|
+
inputSchema: z.ZodObject<{
|
|
36
|
+
agentId: z.ZodOptional<z.ZodString>;
|
|
37
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
38
|
+
failed: "failed";
|
|
39
|
+
running: "running";
|
|
40
|
+
completed: "completed";
|
|
41
|
+
}>>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
execute: (input: CheckAgentInput) => CheckAgentResult;
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=check-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-agent.d.ts","sourceRoot":"","sources":["../../../src/tools/spawn-agent/check-agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAYD,eAAO,MAAM,0BAA0B;;;;;;;iBAGrC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAmEzE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB;;;;;;;;;;qBAI1C,eAAe;EAEnC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Sub-agent status tracking tool.
|
|
3
|
+
* Provides functionality to poll, filter, and summarize the status of spawned agents.
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
const DESCRIPTION = `Check the status of spawned sub-agents.
|
|
7
|
+
|
|
8
|
+
Use this tool to:
|
|
9
|
+
- Poll async sub-agents for completion
|
|
10
|
+
- See what all sub-agents produced
|
|
11
|
+
- Check for errors or failures
|
|
12
|
+
|
|
13
|
+
Without parameters, returns all agents. Use agentId to check a specific one,
|
|
14
|
+
or status to filter (e.g., only 'running' agents).`;
|
|
15
|
+
export const checkAgentParametersSchema = z.object({
|
|
16
|
+
agentId: z.string().optional().describe('Check a specific agent by ID'),
|
|
17
|
+
status: z.enum(['running', 'completed', 'failed']).optional().describe('Filter agents by status'),
|
|
18
|
+
});
|
|
19
|
+
function calcDuration(startedAt, completedAt) {
|
|
20
|
+
const start = new Date(startedAt).getTime();
|
|
21
|
+
const end = completedAt ? new Date(completedAt).getTime() : Date.now();
|
|
22
|
+
const seconds = Math.round((end - start) / 1000);
|
|
23
|
+
if (seconds < 60)
|
|
24
|
+
return `${seconds}s`;
|
|
25
|
+
const minutes = Math.floor(seconds / 60);
|
|
26
|
+
const remainingSeconds = seconds % 60;
|
|
27
|
+
return `${minutes}m ${remainingSeconds}s`;
|
|
28
|
+
}
|
|
29
|
+
function executeCheckAgent(input, options) {
|
|
30
|
+
const { registry } = options;
|
|
31
|
+
const { agentId, status } = input;
|
|
32
|
+
if (agentId) {
|
|
33
|
+
const entry = registry.get(agentId);
|
|
34
|
+
if (!entry) {
|
|
35
|
+
return {
|
|
36
|
+
agents: [],
|
|
37
|
+
summary: `No agent found with ID "${agentId}".`,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const agent = {
|
|
41
|
+
agentId: entry.agentId,
|
|
42
|
+
task: entry.task,
|
|
43
|
+
status: entry.status,
|
|
44
|
+
workspacePath: entry.workspacePath,
|
|
45
|
+
summary: entry.summary,
|
|
46
|
+
error: entry.error,
|
|
47
|
+
errorType: entry.errorType,
|
|
48
|
+
duration: calcDuration(entry.startedAt, entry.completedAt),
|
|
49
|
+
};
|
|
50
|
+
return {
|
|
51
|
+
agents: [agent],
|
|
52
|
+
summary: `Agent "${agentId}": ${entry.status}`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const entries = registry.getAll(status);
|
|
56
|
+
const agents = entries.map((entry) => ({
|
|
57
|
+
agentId: entry.agentId,
|
|
58
|
+
task: entry.task,
|
|
59
|
+
status: entry.status,
|
|
60
|
+
workspacePath: entry.workspacePath,
|
|
61
|
+
summary: entry.summary,
|
|
62
|
+
error: entry.error,
|
|
63
|
+
errorType: entry.errorType,
|
|
64
|
+
duration: calcDuration(entry.startedAt, entry.completedAt),
|
|
65
|
+
}));
|
|
66
|
+
const counts = registry.getCounts();
|
|
67
|
+
const parts = [];
|
|
68
|
+
if (counts.running > 0)
|
|
69
|
+
parts.push(`${counts.running} running`);
|
|
70
|
+
if (counts.completed > 0)
|
|
71
|
+
parts.push(`${counts.completed} completed`);
|
|
72
|
+
if (counts.failed > 0)
|
|
73
|
+
parts.push(`${counts.failed} failed`);
|
|
74
|
+
const summary = parts.length > 0 ? `${agents.length} agent(s): ${parts.join(', ')}` : 'No agents spawned yet.';
|
|
75
|
+
return { agents, summary };
|
|
76
|
+
}
|
|
77
|
+
export function createCheckAgentTool(options) {
|
|
78
|
+
return {
|
|
79
|
+
description: DESCRIPTION,
|
|
80
|
+
inputSchema: checkAgentParametersSchema,
|
|
81
|
+
execute: (input) => executeCheckAgent(input, options),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=check-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-agent.js","sourceRoot":"","sources":["../../../src/tools/spawn-agent/check-agent.ts"],"names":[],"mappings":"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"}
|