@agntk/core 0.2.0 → 0.3.1
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/agent-v2.d.ts +48 -0
- package/dist/agent-v2.d.ts.map +1 -0
- package/dist/agent-v2.js +365 -0
- package/dist/agent-v2.js.map +1 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +61 -43
- package/dist/agent.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +16 -4
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/loader.d.ts +14 -6
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +38 -16
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +14 -14
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/guardrails/runner.d.ts.map +1 -1
- package/dist/guardrails/runner.js +4 -0
- package/dist/guardrails/runner.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/memory/engine.d.ts +130 -0
- package/dist/memory/engine.d.ts.map +1 -0
- package/dist/memory/engine.js +227 -0
- package/dist/memory/engine.js.map +1 -0
- package/dist/memory/vectra-store.d.ts +31 -0
- package/dist/memory/vectra-store.d.ts.map +1 -0
- package/dist/memory/vectra-store.js +122 -0
- package/dist/memory/vectra-store.js.map +1 -0
- package/dist/models.d.ts +24 -1
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +50 -4
- package/dist/models.js.map +1 -1
- package/dist/pool/index.d.ts +7 -0
- package/dist/pool/index.d.ts.map +1 -0
- package/dist/pool/index.js +6 -0
- package/dist/pool/index.js.map +1 -0
- package/dist/pool/specialist-pool.d.ts +59 -0
- package/dist/pool/specialist-pool.d.ts.map +1 -0
- package/dist/pool/specialist-pool.js +224 -0
- package/dist/pool/specialist-pool.js.map +1 -0
- package/dist/pool/tools.d.ts +63 -0
- package/dist/pool/tools.d.ts.map +1 -0
- package/dist/pool/tools.js +83 -0
- package/dist/pool/tools.js.map +1 -0
- package/dist/pool/types.d.ts +79 -0
- package/dist/pool/types.d.ts.map +1 -0
- package/dist/pool/types.js +5 -0
- package/dist/pool/types.js.map +1 -0
- package/dist/presets/index.d.ts +5 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +5 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/role-registry.d.ts +41 -0
- package/dist/presets/role-registry.d.ts.map +1 -0
- package/dist/presets/role-registry.js +213 -0
- package/dist/presets/role-registry.js.map +1 -0
- package/dist/presets/roles.d.ts +105 -0
- package/dist/presets/roles.d.ts.map +1 -0
- package/dist/presets/roles.js +207 -0
- package/dist/presets/roles.js.map +1 -0
- package/dist/presets/tools.d.ts +2 -2
- package/dist/prompts/templates.d.ts +11 -0
- package/dist/prompts/templates.d.ts.map +1 -0
- package/dist/prompts/templates.js +115 -0
- package/dist/prompts/templates.js.map +1 -0
- package/dist/provider-resolver.d.ts +38 -0
- package/dist/provider-resolver.d.ts.map +1 -0
- package/dist/provider-resolver.js +142 -0
- package/dist/provider-resolver.js.map +1 -0
- package/dist/reflection.d.ts +5 -2
- package/dist/reflection.d.ts.map +1 -1
- package/dist/reflection.js +8 -3
- package/dist/reflection.js.map +1 -1
- package/dist/skills/loader.d.ts +18 -0
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +58 -2
- package/dist/skills/loader.js.map +1 -1
- package/dist/streaming/data-parts.d.ts +163 -0
- package/dist/streaming/data-parts.d.ts.map +1 -0
- package/dist/streaming/data-parts.js +14 -0
- package/dist/streaming/data-parts.js.map +1 -0
- package/dist/streaming/index.d.ts +8 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +10 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/streaming/transient.d.ts +136 -0
- package/dist/streaming/transient.d.ts.map +1 -0
- package/dist/streaming/transient.js +201 -0
- package/dist/streaming/transient.js.map +1 -0
- package/dist/system-detect.d.ts +59 -0
- package/dist/system-detect.d.ts.map +1 -0
- package/dist/system-detect.js +193 -0
- package/dist/system-detect.js.map +1 -0
- package/dist/tools/browser/tool.d.ts +2 -2
- package/dist/tools/browser/types.d.ts +2 -2
- package/dist/tools/file/tools.d.ts.map +1 -1
- package/dist/tools/file/tools.js +30 -1
- package/dist/tools/file/tools.js.map +1 -1
- package/dist/tools/index.d.ts +0 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/progress/index.d.ts +1 -1
- package/dist/tools/provider.d.ts +97 -0
- package/dist/tools/provider.d.ts.map +1 -0
- package/dist/tools/provider.js +178 -0
- package/dist/tools/provider.js.map +1 -0
- package/dist/tools/shell/background.d.ts.map +1 -1
- package/dist/tools/shell/background.js +45 -3
- package/dist/tools/shell/background.js.map +1 -1
- package/dist/tools/shell/tools.d.ts.map +1 -1
- package/dist/tools/shell/tools.js +9 -2
- package/dist/tools/shell/tools.js.map +1 -1
- package/dist/tools/utils/shell.d.ts +14 -0
- package/dist/tools/utils/shell.d.ts.map +1 -1
- package/dist/tools/utils/shell.js +171 -12
- package/dist/tools/utils/shell.js.map +1 -1
- package/dist/types/agent-v2.d.ts +83 -0
- package/dist/types/agent-v2.d.ts.map +1 -0
- package/dist/types/agent-v2.js +8 -0
- package/dist/types/agent-v2.js.map +1 -0
- package/dist/types/agent.d.ts +10 -0
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +35 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +149 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/workflow/builders/adapt.d.ts +20 -0
- package/dist/workflow/builders/adapt.d.ts.map +1 -0
- package/dist/workflow/builders/adapt.js +33 -0
- package/dist/workflow/builders/adapt.js.map +1 -0
- package/dist/workflow/builders/index.d.ts +8 -0
- package/dist/workflow/builders/index.d.ts.map +1 -0
- package/dist/workflow/builders/index.js +7 -0
- package/dist/workflow/builders/index.js.map +1 -0
- package/dist/workflow/builders/parallel.d.ts +25 -0
- package/dist/workflow/builders/parallel.d.ts.map +1 -0
- package/dist/workflow/builders/parallel.js +60 -0
- package/dist/workflow/builders/parallel.js.map +1 -0
- package/dist/workflow/builders/pipeline.d.ts +22 -0
- package/dist/workflow/builders/pipeline.d.ts.map +1 -0
- package/dist/workflow/builders/pipeline.js +48 -0
- package/dist/workflow/builders/pipeline.js.map +1 -0
- package/dist/workflow/builders/types.d.ts +54 -0
- package/dist/workflow/builders/types.d.ts.map +1 -0
- package/dist/workflow/builders/types.js +5 -0
- package/dist/workflow/builders/types.js.map +1 -0
- package/dist/workflow/durable-agent.d.ts +128 -0
- package/dist/workflow/durable-agent.d.ts.map +1 -0
- package/dist/workflow/durable-agent.js +323 -0
- package/dist/workflow/durable-agent.js.map +1 -0
- package/dist/workflow/schedulers.d.ts +231 -0
- package/dist/workflow/schedulers.d.ts.map +1 -0
- package/dist/workflow/schedulers.js +250 -0
- package/dist/workflow/schedulers.js.map +1 -0
- package/dist/workflow/team/create-team.d.ts +34 -0
- package/dist/workflow/team/create-team.d.ts.map +1 -0
- package/dist/workflow/team/create-team.js +242 -0
- package/dist/workflow/team/create-team.js.map +1 -0
- package/dist/workflow/team/index.d.ts +9 -0
- package/dist/workflow/team/index.d.ts.map +1 -0
- package/dist/workflow/team/index.js +8 -0
- package/dist/workflow/team/index.js.map +1 -0
- package/dist/workflow/team/machines.d.ts +152 -0
- package/dist/workflow/team/machines.d.ts.map +1 -0
- package/dist/workflow/team/machines.js +197 -0
- package/dist/workflow/team/machines.js.map +1 -0
- package/dist/workflow/team/task-board.d.ts +47 -0
- package/dist/workflow/team/task-board.d.ts.map +1 -0
- package/dist/workflow/team/task-board.js +111 -0
- package/dist/workflow/team/task-board.js.map +1 -0
- package/dist/workflow/team/tools.d.ts +66 -0
- package/dist/workflow/team/tools.d.ts.map +1 -0
- package/dist/workflow/team/tools.js +100 -0
- package/dist/workflow/team/tools.js.map +1 -0
- package/dist/workflow/team/types.d.ts +109 -0
- package/dist/workflow/team/types.d.ts.map +1 -0
- package/dist/workflow/team/types.js +5 -0
- package/dist/workflow/team/types.js.map +1 -0
- package/dist/workflow/templates.d.ts +71 -0
- package/dist/workflow/templates.d.ts.map +1 -0
- package/dist/workflow/templates.js +132 -0
- package/dist/workflow/templates.js.map +1 -0
- package/package.json +13 -13
- package/LICENSE +0 -22
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/tools/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../../src/tools/shell/background.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQ9D,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../../src/tools/shell/background.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQ9D,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA6CD,sCAAsC;AACtC,wBAAgB,qBAAqB,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAEtE;AAED,wCAAwC;AACxC,wBAAgB,uBAAuB,IAAI,IAAI,CAO9C;AAmFD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB;;;;;;WAoInC"}
|
|
@@ -7,17 +7,48 @@
|
|
|
7
7
|
import { tool } from 'ai';
|
|
8
8
|
import { z } from 'zod';
|
|
9
9
|
import { spawn } from 'node:child_process';
|
|
10
|
-
import { isDangerousCommand } from '../utils/shell.js';
|
|
10
|
+
import { isDangerousCommand, buildSanitizedEnv } from '../utils/shell.js';
|
|
11
11
|
import { MAX_COMMAND_LENGTH, MAX_CWD_LENGTH } from './constants.js';
|
|
12
12
|
// ============================================================================
|
|
13
13
|
// Session Store
|
|
14
14
|
// ============================================================================
|
|
15
15
|
const MAX_BUFFER = 1024 * 1024; // 1MB
|
|
16
16
|
const ROLLING_BUFFER = 512 * 1024; // 512KB
|
|
17
|
+
const MAX_SESSIONS = 20;
|
|
18
|
+
const SESSION_TTL_MS = 2 * 60 * 60 * 1000; // 2 hours
|
|
17
19
|
const backgroundSessions = new Map();
|
|
18
20
|
function generateSessionId() {
|
|
19
21
|
return `bg-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
20
22
|
}
|
|
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
|
+
function evictSessions() {
|
|
28
|
+
const now = Date.now();
|
|
29
|
+
// First, remove TTL-expired entries regardless of capacity
|
|
30
|
+
for (const [id, session] of backgroundSessions.entries()) {
|
|
31
|
+
if (now - session.startedAt > SESSION_TTL_MS) {
|
|
32
|
+
if (session.status === 'running') {
|
|
33
|
+
try {
|
|
34
|
+
session.process.kill('SIGTERM');
|
|
35
|
+
}
|
|
36
|
+
catch { /* ignore */ }
|
|
37
|
+
}
|
|
38
|
+
backgroundSessions.delete(id);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Then, if still over cap, evict oldest completed/stopped session
|
|
42
|
+
if (backgroundSessions.size >= MAX_SESSIONS) {
|
|
43
|
+
for (const [id, session] of backgroundSessions.entries()) {
|
|
44
|
+
if (session.status !== 'running') {
|
|
45
|
+
backgroundSessions.delete(id);
|
|
46
|
+
if (backgroundSessions.size < MAX_SESSIONS)
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
21
52
|
/** Get all sessions (for testing). */
|
|
22
53
|
export function getBackgroundSessions() {
|
|
23
54
|
return backgroundSessions;
|
|
@@ -38,11 +69,22 @@ export function clearBackgroundSessions() {
|
|
|
38
69
|
// Background Process Lifecycle
|
|
39
70
|
// ============================================================================
|
|
40
71
|
function startBackgroundProcess(command, options = {}) {
|
|
72
|
+
// Evict old sessions before adding a new one (M-1)
|
|
73
|
+
evictSessions();
|
|
41
74
|
const sessionId = generateSessionId();
|
|
42
|
-
const { cwd = process.cwd()
|
|
75
|
+
const { cwd = process.cwd() } = options;
|
|
76
|
+
// S-12: filter user-supplied env — strip secrets and disallow PATH/LD_PRELOAD overrides
|
|
77
|
+
const filteredExtra = {};
|
|
78
|
+
if (options.env) {
|
|
79
|
+
for (const [k, v] of Object.entries(options.env)) {
|
|
80
|
+
if (k === 'LD_PRELOAD' || k === 'LD_LIBRARY_PATH')
|
|
81
|
+
continue; // block dangerous overrides
|
|
82
|
+
filteredExtra[k] = v;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
43
85
|
const proc = spawn('bash', ['-c', command], {
|
|
44
86
|
cwd,
|
|
45
|
-
env: { ...
|
|
87
|
+
env: { ...buildSanitizedEnv(filteredExtra), TERM: 'dumb' },
|
|
46
88
|
detached: true,
|
|
47
89
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
48
90
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background.js","sourceRoot":"","sources":["../../../src/tools/shell/background.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,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,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"background.js","sourceRoot":"","sources":["../../../src/tools/shell/background.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;;;;;;WA8EpD;AAED,eAAO,MAAM,SAAS;;;;;;UAAiC,CAAC;AAGxD,eAAO,MAAM,mBAAmB;;;;;;UAAqB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { tool } from 'ai';
|
|
2
|
-
import { executeCommand, isDangerousCommand } from '../utils/shell.js';
|
|
2
|
+
import { executeCommand, isDangerousCommand, validateCwd } from '../utils/shell.js';
|
|
3
3
|
import { success, error } from '../utils/tool-result.js';
|
|
4
4
|
import { ToolError, ToolErrorType } from '../utils/errors.js';
|
|
5
5
|
import { SHELL_DESCRIPTION, DEFAULT_TIMEOUT } from './constants.js';
|
|
@@ -23,7 +23,14 @@ export function createShellTool(workspaceRoot) {
|
|
|
23
23
|
if (allow && !isCommandAllowed(command)) {
|
|
24
24
|
addToAllowlist(command);
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
// S-13: Validate cwd is within workspace root
|
|
27
|
+
let effectiveCwd;
|
|
28
|
+
try {
|
|
29
|
+
effectiveCwd = cwd ? validateCwd(cwd, workspaceRoot) : workspaceRoot;
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
return error(err instanceof Error ? err.message : 'Invalid working directory');
|
|
33
|
+
}
|
|
27
34
|
const result = await executeCommand(command, {
|
|
28
35
|
cwd: effectiveCwd,
|
|
29
36
|
timeout,
|
|
@@ -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,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/shell/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
export declare function isDangerousCommand(command: string): boolean;
|
|
2
|
+
/**
|
|
3
|
+
* Ensure the requested cwd is within workspaceRoot (or is workspaceRoot itself).
|
|
4
|
+
* Returns the resolved cwd, or throws if the path escapes the workspace.
|
|
5
|
+
*/
|
|
6
|
+
export declare function validateCwd(cwd: string, workspaceRoot: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Build a sanitized copy of process.env suitable for child processes.
|
|
9
|
+
* Strips all credential-like keys; always preserves PATH, HOME, USER, TERM, LANG, etc.
|
|
10
|
+
*/
|
|
11
|
+
export declare function buildSanitizedEnv(extra?: Record<string, string>): Record<string, string>;
|
|
12
|
+
/**
|
|
13
|
+
* Redact API keys and secrets from command output before returning to the LLM.
|
|
14
|
+
*/
|
|
15
|
+
export declare function sanitizeOutput(output: string): string;
|
|
2
16
|
export interface ShellOptions {
|
|
3
17
|
cwd?: string;
|
|
4
18
|
timeout?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/tools/utils/shell.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/tools/utils/shell.ts"],"names":[],"mappings":"AA4FA,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3D;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAYtE;AA6BD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACjC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBxB;AAgBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CA2EtB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC,CAuBD"}
|
|
@@ -1,19 +1,178 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import * as fs from 'node:fs';
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// Dangerous Command Detection (S-1, S-2, S-3, S-4, S-5, S-6)
|
|
6
|
+
// ============================================================================
|
|
7
|
+
/**
|
|
8
|
+
* Patterns that are unconditionally blocked.
|
|
9
|
+
*
|
|
10
|
+
* Covers:
|
|
11
|
+
* S-1: rm with any target (not just absolute paths)
|
|
12
|
+
* S-2: Nested interpreter invocation (bash -c, python -c, node -e, etc.)
|
|
13
|
+
* S-3: Destructive git operations
|
|
14
|
+
* S-4: Fork bomb (multiple forms)
|
|
15
|
+
* S-5: chmod with dangerous modes (666, setuid, world-writable)
|
|
16
|
+
* S-6: Pipe-to-shell / download-and-execute bypass
|
|
17
|
+
*/
|
|
2
18
|
const DANGEROUS_PATTERNS = [
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
19
|
+
// S-1: rm -r/-rf targeting dangerous targets.
|
|
20
|
+
//
|
|
21
|
+
// Dangerous targets: bare `.` (current dir), `..` (parent), `*` (glob all),
|
|
22
|
+
// `/` (root), `~` (home), `$(...)` or `${...}` or `` ` `` (command sub)
|
|
23
|
+
// Safe targets: `./dist`, `./node_modules`, `./build`, etc. (explicit relative path)
|
|
24
|
+
//
|
|
25
|
+
// Strategy: after flags, match a target that is NOT `.` followed by `/`.
|
|
26
|
+
// `(?!\.[/\w])` means: NOT `.` followed by slash or word char — i.e. not `./dist`.
|
|
27
|
+
// We then explicitly enumerate dangerous patterns.
|
|
28
|
+
/\brm\s+(-[^\s]*r[^\s]*\s+|--recursive\s+)((?<!\.)\.\.(?![^\s])|(?<=\s)\.(?=[\s$])|(?<=\s)\.(?=\s|$)|\*|\/|~|\$[({`])/i,
|
|
29
|
+
// Simpler, more readable alternative that splits into two patterns:
|
|
30
|
+
// Pattern A: rm -r targeting .. or * or / or ~ or command sub
|
|
31
|
+
/\brm\s+-[^\s]*r[^\s]*\s+(\*|\/|~|\$[({]|`|\.\.(\s|$|\/))/i,
|
|
32
|
+
// Pattern B: rm -r targeting bare . (not followed by / or word char meaning ./dist)
|
|
33
|
+
/\brm\s+-[^\s]*r[^\s]*\s+\.(?![\w\/])/i,
|
|
34
|
+
// Pattern C: rm without -r but with -f targeting absolute or dangerous paths
|
|
35
|
+
/\brm\s+-[^\s]*f[^\s]*\s+(\*|~|\$[({]|`|\.\.(\s|$|\/)|\/(?!tmp|var\/tmp))/i,
|
|
36
|
+
// S-2: Nested interpreter invocation
|
|
37
|
+
/\b(bash|sh|zsh|dash|ksh|fish|tcsh)\s+(-[ce]|--[a-z]+\s)/i,
|
|
38
|
+
/\b(python3?|python3\.[0-9]+|pypy3?)\s+-[cC]/i,
|
|
39
|
+
/\b(node|nodejs|deno|bun)\s+-[eE]/i,
|
|
40
|
+
/\b(perl|ruby|php|lua|Rscript|groovy)\s+-[e]/i,
|
|
41
|
+
// S-3: Destructive git operations
|
|
42
|
+
/\bgit\s+(push\s+[^\n]*--?force|push\s+-f\b)/i,
|
|
43
|
+
/\bgit\s+reset\s+--hard/i,
|
|
44
|
+
/\bgit\s+clean\s+-[fdxXqn]*[fF][fdxXqn]*/i,
|
|
45
|
+
/\bgit\s+rebase\s+(-i|--interactive)/i,
|
|
46
|
+
// S-4: Fork bomb — colon function form and nohup infinite loop, but NOT normal while loops
|
|
47
|
+
/:\(\s*\)\s*\{/,
|
|
48
|
+
/:\s*\(\s*\)\s*\{.*:\s*\|\s*:/,
|
|
49
|
+
// S-5: chmod dangerous modes (setuid, setgid, world-write, 666, 777)
|
|
50
|
+
// Allows: 644, 755, 600, 700, u+x, go-w etc.
|
|
51
|
+
// Blocks: 666, 777, 4xxx (setuid), 2xxx (setgid), +s, o+w, a+w, u+s, g+s
|
|
52
|
+
/\bchmod\s+(-R\s+)?(666|777|4[0-9]{3}|2[0-9]{3}|\+s|o\+w|a\+w|u\+s|g\+s)/i,
|
|
53
|
+
// S-6: Pipe-to-shell and download-execute bypasses
|
|
54
|
+
/\b(curl|wget)\b.*\|\s*(bash|sh|zsh|dash|python3?|node)/i,
|
|
55
|
+
/\b(curl|wget)\b.*>\s*\S+.*&&\s*(bash|sh|chmod)/i,
|
|
56
|
+
// Disk/device destruction
|
|
57
|
+
/>\s*\/dev\/(sd[a-z]|nvme[0-9]|hd[a-z]|vd[a-z])/i,
|
|
58
|
+
/\bmkfs\./i,
|
|
59
|
+
/\bdd\s+if=/i,
|
|
60
|
+
// Privilege escalation
|
|
61
|
+
/\b(sudo|su)\s/i,
|
|
9
62
|
/\b(shutdown|reboot|halt|poweroff)\b/i,
|
|
10
|
-
|
|
11
|
-
/\beval\
|
|
12
|
-
|
|
63
|
+
// Shell eval builtin — `eval <string>` or `eval "..."`, not English words like 'evaluate'
|
|
64
|
+
/\beval\s*["'`(]/i,
|
|
65
|
+
/^eval\s/,
|
|
66
|
+
/;\s*eval\s/,
|
|
67
|
+
/&&\s*eval\s/,
|
|
68
|
+
/\|\s*eval\s/,
|
|
69
|
+
// MITRE T1027.010: Decode-then-execute bypass patterns
|
|
70
|
+
// base64 -d / --decode / openssl base64 decode → piped to shell
|
|
71
|
+
/\b(base64\s+-d|base64\s+--decode|openssl\s+enc\s+-d)\b.*\|\s*(bash|sh|zsh|dash|node|python3?)/i,
|
|
72
|
+
// xxd hex-decode → piped to shell
|
|
73
|
+
/\b(xxd\s+-r|xxd\s+--reverse)\b.*\|\s*(bash|sh|zsh|dash|node|python3?)/i,
|
|
74
|
+
// gzip decompress → piped to shell
|
|
75
|
+
/\bgzip\s+(-d|--decompress)\b.*\|\s*(bash|sh|zsh|dash)/i,
|
|
76
|
+
// printf with hex escapes → piped to shell
|
|
77
|
+
/\bprintf\b.*\\x[0-9a-fA-F]{2}.*\|\s*(bash|sh|zsh|dash)/i,
|
|
78
|
+
// ANSI-C quoting with octal escapes: $'\173\40...' | sh
|
|
79
|
+
/\$'\\[0-7]{3,}'.*\|\s*(bash|sh|zsh|dash)/i,
|
|
13
80
|
];
|
|
14
81
|
export function isDangerousCommand(command) {
|
|
15
82
|
return DANGEROUS_PATTERNS.some((pattern) => pattern.test(command));
|
|
16
83
|
}
|
|
84
|
+
// ============================================================================
|
|
85
|
+
// CWD Validation (S-13)
|
|
86
|
+
// ============================================================================
|
|
87
|
+
/**
|
|
88
|
+
* Ensure the requested cwd is within workspaceRoot (or is workspaceRoot itself).
|
|
89
|
+
* Returns the resolved cwd, or throws if the path escapes the workspace.
|
|
90
|
+
*/
|
|
91
|
+
export function validateCwd(cwd, workspaceRoot) {
|
|
92
|
+
const resolvedCwd = path.resolve(cwd);
|
|
93
|
+
let realWorkspace;
|
|
94
|
+
try {
|
|
95
|
+
realWorkspace = fs.realpathSync(path.resolve(workspaceRoot));
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
realWorkspace = path.resolve(workspaceRoot);
|
|
99
|
+
}
|
|
100
|
+
if (!resolvedCwd.startsWith(realWorkspace + path.sep) && resolvedCwd !== realWorkspace) {
|
|
101
|
+
throw new Error(`cwd "${cwd}" is outside workspace root`);
|
|
102
|
+
}
|
|
103
|
+
return resolvedCwd;
|
|
104
|
+
}
|
|
105
|
+
// ============================================================================
|
|
106
|
+
// Env Var Filtering (A-3)
|
|
107
|
+
// ============================================================================
|
|
108
|
+
/** Key patterns that indicate credentials — stripped from child process env. */
|
|
109
|
+
const SENSITIVE_ENV_PATTERNS = [
|
|
110
|
+
/API[_-]?KEY/i,
|
|
111
|
+
/SECRET/i,
|
|
112
|
+
/TOKEN(?!_DIR|_PATH)/i,
|
|
113
|
+
/PASSWORD/i,
|
|
114
|
+
/PASSWD/i,
|
|
115
|
+
/CREDENTIAL/i,
|
|
116
|
+
/OPENAI_/i,
|
|
117
|
+
/ANTHROPIC_/i,
|
|
118
|
+
/LANGFUSE_/i,
|
|
119
|
+
/AWS_(?!REGION|DEFAULT_REGION|EXECUTION_ENV)/i,
|
|
120
|
+
/GOOGLE_(API|CLOUD|APPLICATION)/i,
|
|
121
|
+
/GITHUB_TOKEN/i,
|
|
122
|
+
/SLACK_(BOT|APP|SIGNING)/i,
|
|
123
|
+
/STRIPE_/i,
|
|
124
|
+
/TWILIO_/i,
|
|
125
|
+
/SENDGRID_/i,
|
|
126
|
+
/DATABASE_URL/i,
|
|
127
|
+
/MONGO(DB)?_URI/i,
|
|
128
|
+
/REDIS_URL/i,
|
|
129
|
+
];
|
|
130
|
+
/**
|
|
131
|
+
* Build a sanitized copy of process.env suitable for child processes.
|
|
132
|
+
* Strips all credential-like keys; always preserves PATH, HOME, USER, TERM, LANG, etc.
|
|
133
|
+
*/
|
|
134
|
+
export function buildSanitizedEnv(extra = {}) {
|
|
135
|
+
const safe = {};
|
|
136
|
+
for (const [key, value] of Object.entries(process.env)) {
|
|
137
|
+
if (value === undefined)
|
|
138
|
+
continue;
|
|
139
|
+
if (SENSITIVE_ENV_PATTERNS.some((p) => p.test(key)))
|
|
140
|
+
continue;
|
|
141
|
+
safe[key] = value;
|
|
142
|
+
}
|
|
143
|
+
// Merge caller-supplied extras, but also filter those
|
|
144
|
+
for (const [key, value] of Object.entries(extra)) {
|
|
145
|
+
if (SENSITIVE_ENV_PATTERNS.some((p) => p.test(key)))
|
|
146
|
+
continue;
|
|
147
|
+
safe[key] = value;
|
|
148
|
+
}
|
|
149
|
+
// Always ensure PATH is present
|
|
150
|
+
if (process.env.PATH)
|
|
151
|
+
safe.PATH = process.env.PATH;
|
|
152
|
+
return safe;
|
|
153
|
+
}
|
|
154
|
+
// ============================================================================
|
|
155
|
+
// Output Sanitization (A-1)
|
|
156
|
+
// ============================================================================
|
|
157
|
+
const SENSITIVE_OUTPUT_PATTERNS = [
|
|
158
|
+
[/\bsk-[a-zA-Z0-9]{16,}\b/g, '[OPENAI_KEY REDACTED]'],
|
|
159
|
+
[/\bsk-ant-[a-zA-Z0-9\-]{20,}\b/g, '[ANTHROPIC_KEY REDACTED]'],
|
|
160
|
+
[/\bghp_[a-zA-Z0-9]{36}\b/g, '[GITHUB_TOKEN REDACTED]'],
|
|
161
|
+
[/\bxoxb-[a-zA-Z0-9\-]+\b/g, '[SLACK_TOKEN REDACTED]'],
|
|
162
|
+
[/Bearer\s+[a-zA-Z0-9._\-]{20,}/g, '[BEARER_TOKEN REDACTED]'],
|
|
163
|
+
// Generic: KEY=value and SECRET=value patterns on a line
|
|
164
|
+
[/(?:api[_\-]?key|secret|token|password|api_secret)\s*[=:]\s*[^\s'"]{8,}/gi, '[SECRET REDACTED]'],
|
|
165
|
+
];
|
|
166
|
+
/**
|
|
167
|
+
* Redact API keys and secrets from command output before returning to the LLM.
|
|
168
|
+
*/
|
|
169
|
+
export function sanitizeOutput(output) {
|
|
170
|
+
let sanitized = output;
|
|
171
|
+
for (const [pattern, replacement] of SENSITIVE_OUTPUT_PATTERNS) {
|
|
172
|
+
sanitized = sanitized.replace(pattern, replacement);
|
|
173
|
+
}
|
|
174
|
+
return sanitized;
|
|
175
|
+
}
|
|
17
176
|
export async function executeCommand(command, options = {}) {
|
|
18
177
|
const { cwd = process.cwd(), timeout = 30000, maxBuffer = 1024 * 1024, env, } = options;
|
|
19
178
|
const startTime = performance.now();
|
|
@@ -23,7 +182,7 @@ export async function executeCommand(command, options = {}) {
|
|
|
23
182
|
let killed = false;
|
|
24
183
|
const proc = spawn('bash', ['-c', command], {
|
|
25
184
|
cwd,
|
|
26
|
-
env: { ...
|
|
185
|
+
env: { ...buildSanitizedEnv(env), TERM: 'dumb' },
|
|
27
186
|
});
|
|
28
187
|
const timer = setTimeout(() => {
|
|
29
188
|
killed = true;
|
|
@@ -55,8 +214,8 @@ export async function executeCommand(command, options = {}) {
|
|
|
55
214
|
proc.on('close', (code) => {
|
|
56
215
|
clearTimeout(timer);
|
|
57
216
|
resolve({
|
|
58
|
-
stdout: stdout.trim(),
|
|
59
|
-
stderr: stderr.trim(),
|
|
217
|
+
stdout: sanitizeOutput(stdout.trim()),
|
|
218
|
+
stderr: sanitizeOutput(stderr.trim()),
|
|
60
219
|
exitCode: code ?? 1,
|
|
61
220
|
killed,
|
|
62
221
|
durationMs: performance.now() - startTime,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/tools/utils/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/tools/utils/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,+EAA+E;AAC/E,6DAA6D;AAC7D,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,kBAAkB,GAAG;IACzB,8CAA8C;IAC9C,EAAE;IACF,4EAA4E;IAC5E,0EAA0E;IAC1E,sFAAsF;IACtF,EAAE;IACF,yEAAyE;IACzE,mFAAmF;IACnF,mDAAmD;IACnD,uHAAuH;IACvH,oEAAoE;IACpE,8DAA8D;IAC9D,2DAA2D;IAC3D,oFAAoF;IACpF,uCAAuC;IACvC,6EAA6E;IAC7E,2EAA2E;IAE3E,qCAAqC;IACrC,0DAA0D;IAC1D,8CAA8C;IAC9C,mCAAmC;IACnC,8CAA8C;IAE9C,kCAAkC;IAClC,8CAA8C;IAC9C,yBAAyB;IACzB,0CAA0C;IAC1C,sCAAsC;IAEtC,2FAA2F;IAC3F,eAAe;IACf,8BAA8B;IAE9B,qEAAqE;IACrE,6CAA6C;IAC7C,yEAAyE;IACzE,0EAA0E;IAE1E,mDAAmD;IACnD,yDAAyD;IACzD,iDAAiD;IAEjD,0BAA0B;IAC1B,iDAAiD;IACjD,WAAW;IACX,aAAa;IAEb,uBAAuB;IACvB,gBAAgB;IAChB,sCAAsC;IAEtC,0FAA0F;IAC1F,kBAAkB;IAClB,SAAS;IACT,YAAY;IACZ,aAAa;IACb,aAAa;IAEb,uDAAuD;IACvD,gEAAgE;IAChE,gGAAgG;IAChG,kCAAkC;IAClC,wEAAwE;IACxE,mCAAmC;IACnC,wDAAwD;IACxD,2CAA2C;IAC3C,yDAAyD;IACzD,wDAAwD;IACxD,2CAA2C;CAC5C,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,aAAqB;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,KAAK,aAAa,EAAE,CAAC;QACvF,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,6BAA6B,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,gFAAgF;AAChF,MAAM,sBAAsB,GAAG;IAC7B,cAAc;IACd,SAAS;IACT,sBAAsB;IACtB,WAAW;IACX,SAAS;IACT,aAAa;IACb,UAAU;IACV,aAAa;IACb,YAAY;IACZ,8CAA8C;IAC9C,iCAAiC;IACjC,eAAe;IACf,0BAA0B;IAC1B,UAAU;IACV,UAAU;IACV,YAAY;IACZ,eAAe;IACf,iBAAiB;IACjB,YAAY;CACb,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgC,EAAE;IAElC,MAAM,IAAI,GAA2B,EAAE,CAAC;IAExC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAE,SAAS;QAC9D,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,sDAAsD;IACtD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAE,SAAS;QAC9D,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,gCAAgC;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAEnD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,MAAM,yBAAyB,GAA4B;IACzD,CAAC,0BAA0B,EAAE,uBAAuB,CAAC;IACrD,CAAC,gCAAgC,EAAE,0BAA0B,CAAC;IAC9D,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;IACvD,CAAC,0BAA0B,EAAE,wBAAwB,CAAC;IACtD,CAAC,gCAAgC,EAAE,yBAAyB,CAAC;IAC7D,yDAAyD;IACzD,CAAC,0EAA0E,EAAE,mBAAmB,CAAC;CAClG,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,IAAI,SAAS,GAAG,MAAM,CAAC;IACvB,KAAK,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,yBAAyB,EAAE,CAAC;QAC/D,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAkBD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,UAAwB,EAAE;IAE1B,MAAM,EACJ,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EACnB,OAAO,GAAG,KAAK,EACf,SAAS,GAAG,IAAI,GAAG,IAAI,EACvB,GAAG,GACJ,GAAG,OAAO,CAAC;IAEZ,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;YAC1C,GAAG;YACH,GAAG,EAAE,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;SACjD,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAErB,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvB,CAAC;gBAAC,OAAO,EAAW,EAAE,CAAC;gBACvB,CAAC;YACH,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC;gBACN,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACrC,QAAQ,EAAE,IAAI,IAAI,CAAC;gBACnB,MAAM;gBACN,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;aAC1C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC;gBACN,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,KAAK;gBACb,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;gBACzC,KAAK,EAAE,GAAG,CAAC,OAAO;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,UAAwB,EAAE;IAO1B,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,4BAA4B;YACnC,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEtD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM;SACP,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,CAAC;QAC9B,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview V2 Agent types — minimal, zero-config interface.
|
|
3
|
+
*
|
|
4
|
+
* An agent is a fully-equipped worker. You give it a name, instructions,
|
|
5
|
+
* and a prompt. Everything else is auto-detected.
|
|
6
|
+
*/
|
|
7
|
+
import type { LanguageModel, LanguageModelUsage } from 'ai';
|
|
8
|
+
import type { UsageLimits } from '../usage-limits.js';
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for creating a v2 agent.
|
|
11
|
+
*
|
|
12
|
+
* Only `name` is required. Everything else has sensible defaults or
|
|
13
|
+
* is auto-detected from the environment.
|
|
14
|
+
*/
|
|
15
|
+
export interface AgentOptionsV2 {
|
|
16
|
+
/**
|
|
17
|
+
* Display name for this agent.
|
|
18
|
+
* Used in logs, traces, multi-agent coordination, and persistent state.
|
|
19
|
+
* Persistent agent state is stored at `~/.agntk/agents/{name}/`.
|
|
20
|
+
*/
|
|
21
|
+
name: string;
|
|
22
|
+
/**
|
|
23
|
+
* What this agent does. Natural language context injected as the system prompt.
|
|
24
|
+
* This is NOT a role — it's the agent's understanding of its job.
|
|
25
|
+
*/
|
|
26
|
+
instructions?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Where the agent operates. Root for file tools, skill discovery, memory.
|
|
29
|
+
* Default: process.cwd()
|
|
30
|
+
*/
|
|
31
|
+
workspaceRoot?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Override the auto-selected model.
|
|
34
|
+
* Most users should never touch this — the agent picks the best
|
|
35
|
+
* available model from your API keys.
|
|
36
|
+
*/
|
|
37
|
+
model?: LanguageModel;
|
|
38
|
+
/**
|
|
39
|
+
* Safety limit on tool-loop iterations. Default: 25
|
|
40
|
+
*/
|
|
41
|
+
maxSteps?: number;
|
|
42
|
+
/**
|
|
43
|
+
* Token/request caps. Throws UsageLimitExceeded when hit.
|
|
44
|
+
*/
|
|
45
|
+
usageLimits?: UsageLimits;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A v2 agent instance. Stream-only — no generate().
|
|
49
|
+
*/
|
|
50
|
+
export interface AgentV2 {
|
|
51
|
+
/** The agent's name. */
|
|
52
|
+
readonly name: string;
|
|
53
|
+
/** Initialize async resources (memory, telemetry). Called automatically by stream(). */
|
|
54
|
+
init(): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Stream a response. This is the only way to run a v2 agent.
|
|
57
|
+
* Returns the AI SDK stream result.
|
|
58
|
+
*/
|
|
59
|
+
stream(input: {
|
|
60
|
+
prompt: string;
|
|
61
|
+
}): Promise<AgentV2StreamResult>;
|
|
62
|
+
/** Get the current system prompt (includes auto-injected context + memory). */
|
|
63
|
+
getSystemPrompt(): string;
|
|
64
|
+
/** Get the list of all tool names available to this agent. */
|
|
65
|
+
getToolNames(): string[];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Stream result from a v2 agent.
|
|
69
|
+
* Wraps the AI SDK ToolLoopAgent stream result with additional metadata.
|
|
70
|
+
*/
|
|
71
|
+
export interface AgentV2StreamResult {
|
|
72
|
+
/** Async iterable of stream chunks (text deltas, tool calls, tool results, etc.) */
|
|
73
|
+
fullStream: AsyncIterable<{
|
|
74
|
+
type: string;
|
|
75
|
+
text?: string;
|
|
76
|
+
[key: string]: unknown;
|
|
77
|
+
}>;
|
|
78
|
+
/** Promise-like that resolves to the final text output. */
|
|
79
|
+
text: PromiseLike<string>;
|
|
80
|
+
/** Promise-like that resolves to token usage. */
|
|
81
|
+
usage: PromiseLike<LanguageModelUsage>;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=agent-v2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-v2.d.ts","sourceRoot":"","sources":["../../src/types/agent-v2.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAMnD;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAIvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAMD;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,wBAAwB;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,wFAAwF;IACxF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhE,+EAA+E;IAC/E,eAAe,IAAI,MAAM,CAAC;IAE1B,8DAA8D;IAC9D,YAAY,IAAI,MAAM,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,oFAAoF;IACpF,UAAU,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IACnF,2DAA2D;IAC3D,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,iDAAiD;IACjD,KAAK,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-v2.js","sourceRoot":"","sources":["../../src/types/agent-v2.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/dist/types/agent.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { LanguageModel, LanguageModelUsage, Tool } from 'ai';
|
|
8
8
|
import type { UsageLimits } from '../usage-limits.js';
|
|
9
|
+
import type { ApprovalConfig } from '../tools/approval.js';
|
|
9
10
|
/**
|
|
10
11
|
* Configuration for creating an agent.
|
|
11
12
|
*
|
|
@@ -48,6 +49,15 @@ export interface AgentOptions {
|
|
|
48
49
|
* Useful for testing with mock tools or adding custom capabilities.
|
|
49
50
|
*/
|
|
50
51
|
tools?: Record<string, Tool>;
|
|
52
|
+
/**
|
|
53
|
+
* Enable human-in-the-loop approval for dangerous tools.
|
|
54
|
+
*
|
|
55
|
+
* - `true` — use defaults (shell, browser, file_write, file_edit, file_create require approval)
|
|
56
|
+
* - `ApprovalConfig` — full control over which tools require approval, timeout behaviour, etc.
|
|
57
|
+
*
|
|
58
|
+
* @default false (no approval required)
|
|
59
|
+
*/
|
|
60
|
+
approval?: boolean | ApprovalConfig;
|
|
51
61
|
}
|
|
52
62
|
/**
|
|
53
63
|
* An agent instance. Stream-only — no generate().
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMxD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAIvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE7B;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;CACrC;AAMD;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,wBAAwB;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,wFAAwF;IACxF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE9D,+EAA+E;IAC/E,eAAe,IAAI,MAAM,CAAC;IAE1B,8DAA8D;IAC9D,YAAY,IAAI,MAAM,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oFAAoF;IACpF,UAAU,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IACnF,2DAA2D;IAC3D,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,iDAAiD;IACjD,KAAK,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;CACxC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Minimal Logger
|
|
3
|
+
* Zero-dependency logger that works in Node, Bun, and browser environments
|
|
4
|
+
*/
|
|
5
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
6
|
+
export interface LoggerOptions {
|
|
7
|
+
level?: LogLevel;
|
|
8
|
+
enableColors?: boolean;
|
|
9
|
+
enableTimestamps?: boolean;
|
|
10
|
+
prefix?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface AgentContext {
|
|
13
|
+
type: 'main' | 'spawned';
|
|
14
|
+
taskId?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface LogEntry {
|
|
17
|
+
timestamp: number;
|
|
18
|
+
level: LogLevel;
|
|
19
|
+
message: string;
|
|
20
|
+
meta: Record<string, unknown> | undefined;
|
|
21
|
+
formattedMessage: string;
|
|
22
|
+
}
|
|
23
|
+
export type LogSubscriber = (entry: LogEntry) => void;
|
|
24
|
+
export interface Logger {
|
|
25
|
+
debug(message: string, meta?: Record<string, unknown>): void;
|
|
26
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
27
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
28
|
+
error(message: string, meta?: Record<string, unknown>): void;
|
|
29
|
+
setLevel(level: LogLevel): void;
|
|
30
|
+
setAgentContext(context: AgentContext): void;
|
|
31
|
+
subscribe(callback: LogSubscriber): () => void;
|
|
32
|
+
}
|
|
33
|
+
export declare function createLogger(options?: LoggerOptions): Logger;
|
|
34
|
+
export declare const logger: Logger;
|
|
35
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC1C,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AAEtD,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAChC,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7C,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAAC;CAChD;AAgCD,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CA2IhE;AAED,eAAO,MAAM,MAAM,QAAiB,CAAC"}
|