@geotechcli/core 0.2.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/agents/brain.d.ts +39 -0
- package/dist/agents/brain.d.ts.map +1 -0
- package/dist/agents/brain.js +339 -0
- package/dist/agents/brain.js.map +1 -0
- package/dist/agents/bridge-tools.d.ts +2 -0
- package/dist/agents/bridge-tools.d.ts.map +1 -0
- package/dist/agents/bridge-tools.js +170 -0
- package/dist/agents/bridge-tools.js.map +1 -0
- package/dist/agents/data-tools.d.ts +2 -0
- package/dist/agents/data-tools.d.ts.map +1 -0
- package/dist/agents/data-tools.js +309 -0
- package/dist/agents/data-tools.js.map +1 -0
- package/dist/agents/filesystem-tools.d.ts +2 -0
- package/dist/agents/filesystem-tools.d.ts.map +1 -0
- package/dist/agents/filesystem-tools.js +267 -0
- package/dist/agents/filesystem-tools.js.map +1 -0
- package/dist/agents/guardrails.d.ts +17 -0
- package/dist/agents/guardrails.d.ts.map +1 -0
- package/dist/agents/guardrails.js +260 -0
- package/dist/agents/guardrails.js.map +1 -0
- package/dist/agents/orchestrator.d.ts +9 -0
- package/dist/agents/orchestrator.d.ts.map +1 -0
- package/dist/agents/orchestrator.js +136 -0
- package/dist/agents/orchestrator.js.map +1 -0
- package/dist/agents/safety.d.ts +9 -0
- package/dist/agents/safety.d.ts.map +1 -0
- package/dist/agents/safety.js +40 -0
- package/dist/agents/safety.js.map +1 -0
- package/dist/agents/sandbox.d.ts +34 -0
- package/dist/agents/sandbox.d.ts.map +1 -0
- package/dist/agents/sandbox.js +235 -0
- package/dist/agents/sandbox.js.map +1 -0
- package/dist/agents/swarm.d.ts +25 -0
- package/dist/agents/swarm.d.ts.map +1 -0
- package/dist/agents/swarm.js +434 -0
- package/dist/agents/swarm.js.map +1 -0
- package/dist/agents/tools.d.ts +37 -0
- package/dist/agents/tools.d.ts.map +1 -0
- package/dist/agents/tools.js +451 -0
- package/dist/agents/tools.js.map +1 -0
- package/dist/bridge/index.d.ts +52 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +195 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/config/index.d.ts +106 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +217 -0
- package/dist/config/index.js.map +1 -0
- package/dist/db/index.d.ts +4 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +4 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/redis.d.ts +14 -0
- package/dist/db/redis.d.ts.map +1 -0
- package/dist/db/redis.js +204 -0
- package/dist/db/redis.js.map +1 -0
- package/dist/db/supabase.d.ts +57 -0
- package/dist/db/supabase.d.ts.map +1 -0
- package/dist/db/supabase.js +156 -0
- package/dist/db/supabase.js.map +1 -0
- package/dist/db/users.d.ts +50 -0
- package/dist/db/users.d.ts.map +1 -0
- package/dist/db/users.js +132 -0
- package/dist/db/users.js.map +1 -0
- package/dist/export/index.d.ts +51 -0
- package/dist/export/index.d.ts.map +1 -0
- package/dist/export/index.js +126 -0
- package/dist/export/index.js.map +1 -0
- package/dist/geo/bearing-capacity.d.ts +60 -0
- package/dist/geo/bearing-capacity.d.ts.map +1 -0
- package/dist/geo/bearing-capacity.js +195 -0
- package/dist/geo/bearing-capacity.js.map +1 -0
- package/dist/geo/classification.d.ts +107 -0
- package/dist/geo/classification.d.ts.map +1 -0
- package/dist/geo/classification.js +261 -0
- package/dist/geo/classification.js.map +1 -0
- package/dist/geo/index.d.ts +9 -0
- package/dist/geo/index.d.ts.map +1 -0
- package/dist/geo/index.js +9 -0
- package/dist/geo/index.js.map +1 -0
- package/dist/geo/lateral-earth-pressure.d.ts +75 -0
- package/dist/geo/lateral-earth-pressure.d.ts.map +1 -0
- package/dist/geo/lateral-earth-pressure.js +219 -0
- package/dist/geo/lateral-earth-pressure.js.map +1 -0
- package/dist/geo/liquefaction.d.ts +65 -0
- package/dist/geo/liquefaction.d.ts.map +1 -0
- package/dist/geo/liquefaction.js +163 -0
- package/dist/geo/liquefaction.js.map +1 -0
- package/dist/geo/pile-capacity.d.ts +91 -0
- package/dist/geo/pile-capacity.d.ts.map +1 -0
- package/dist/geo/pile-capacity.js +233 -0
- package/dist/geo/pile-capacity.js.map +1 -0
- package/dist/geo/settlement.d.ts +119 -0
- package/dist/geo/settlement.d.ts.map +1 -0
- package/dist/geo/settlement.js +184 -0
- package/dist/geo/settlement.js.map +1 -0
- package/dist/geo/slope-stability.d.ts +82 -0
- package/dist/geo/slope-stability.d.ts.map +1 -0
- package/dist/geo/slope-stability.js +214 -0
- package/dist/geo/slope-stability.js.map +1 -0
- package/dist/geo/tunnel/index.d.ts +2 -0
- package/dist/geo/tunnel/index.d.ts.map +1 -0
- package/dist/geo/tunnel/index.js +2 -0
- package/dist/geo/tunnel/index.js.map +1 -0
- package/dist/geo/tunnel/tbm.d.ts +135 -0
- package/dist/geo/tunnel/tbm.d.ts.map +1 -0
- package/dist/geo/tunnel/tbm.js +268 -0
- package/dist/geo/tunnel/tbm.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/ingest/ags.d.ts +42 -0
- package/dist/ingest/ags.d.ts.map +1 -0
- package/dist/ingest/ags.js +133 -0
- package/dist/ingest/ags.js.map +1 -0
- package/dist/ingest/cpt.d.ts +47 -0
- package/dist/ingest/cpt.d.ts.map +1 -0
- package/dist/ingest/cpt.js +112 -0
- package/dist/ingest/cpt.js.map +1 -0
- package/dist/ingest/index.d.ts +3 -0
- package/dist/ingest/index.d.ts.map +1 -0
- package/dist/ingest/index.js +3 -0
- package/dist/ingest/index.js.map +1 -0
- package/dist/llm/index.d.ts +5 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +4 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/middleware/metering.d.ts +55 -0
- package/dist/llm/middleware/metering.d.ts.map +1 -0
- package/dist/llm/middleware/metering.js +191 -0
- package/dist/llm/middleware/metering.js.map +1 -0
- package/dist/llm/middleware/persistent-usage.d.ts +7 -0
- package/dist/llm/middleware/persistent-usage.d.ts.map +1 -0
- package/dist/llm/middleware/persistent-usage.js +108 -0
- package/dist/llm/middleware/persistent-usage.js.map +1 -0
- package/dist/llm/middleware/retry.d.ts +7 -0
- package/dist/llm/middleware/retry.d.ts.map +1 -0
- package/dist/llm/middleware/retry.js +29 -0
- package/dist/llm/middleware/retry.js.map +1 -0
- package/dist/llm/providers/anthropic.d.ts +10 -0
- package/dist/llm/providers/anthropic.d.ts.map +1 -0
- package/dist/llm/providers/anthropic.js +107 -0
- package/dist/llm/providers/anthropic.js.map +1 -0
- package/dist/llm/providers/hosted-beta.d.ts +10 -0
- package/dist/llm/providers/hosted-beta.d.ts.map +1 -0
- package/dist/llm/providers/hosted-beta.js +106 -0
- package/dist/llm/providers/hosted-beta.js.map +1 -0
- package/dist/llm/providers/huggingface.d.ts +37 -0
- package/dist/llm/providers/huggingface.d.ts.map +1 -0
- package/dist/llm/providers/huggingface.js +133 -0
- package/dist/llm/providers/huggingface.js.map +1 -0
- package/dist/llm/providers/openai-compatible.d.ts +27 -0
- package/dist/llm/providers/openai-compatible.d.ts.map +1 -0
- package/dist/llm/providers/openai-compatible.js +99 -0
- package/dist/llm/providers/openai-compatible.js.map +1 -0
- package/dist/llm/providers/zhipu.d.ts +10 -0
- package/dist/llm/providers/zhipu.d.ts.map +1 -0
- package/dist/llm/providers/zhipu.js +81 -0
- package/dist/llm/providers/zhipu.js.map +1 -0
- package/dist/llm/router.d.ts +35 -0
- package/dist/llm/router.d.ts.map +1 -0
- package/dist/llm/router.js +109 -0
- package/dist/llm/router.js.map +1 -0
- package/dist/llm/types.d.ts +63 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +38 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/meta/index.d.ts +12 -0
- package/dist/meta/index.d.ts.map +1 -0
- package/dist/meta/index.js +8 -0
- package/dist/meta/index.js.map +1 -0
- package/dist/meta/metadata.json +46 -0
- package/dist/report/index.d.ts +20 -0
- package/dist/report/index.d.ts.map +1 -0
- package/dist/report/index.js +58 -0
- package/dist/report/index.js.map +1 -0
- package/dist/standards/index.d.ts +23 -0
- package/dist/standards/index.d.ts.map +1 -0
- package/dist/standards/index.js +89 -0
- package/dist/standards/index.js.map +1 -0
- package/dist/storage/index.d.ts +114 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +465 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/vision/index.d.ts +80 -0
- package/dist/vision/index.d.ts.map +1 -0
- package/dist/vision/index.js +298 -0
- package/dist/vision/index.js.map +1 -0
- package/dist/vision/parse.d.ts +20 -0
- package/dist/vision/parse.d.ts.map +1 -0
- package/dist/vision/parse.js +75 -0
- package/dist/vision/parse.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Filesystem Sandbox — path traversal prevention
|
|
3
|
+
//
|
|
4
|
+
// All agent filesystem tools MUST validate paths through this module.
|
|
5
|
+
// Allowed zones:
|
|
6
|
+
// 1. Current working directory (and children)
|
|
7
|
+
// 2. ~/.geotechcli/workspace/ (persistent project data)
|
|
8
|
+
//
|
|
9
|
+
// Blocked patterns:
|
|
10
|
+
// - Paths containing .ssh, .aws, .gnupg, .env files, credentials
|
|
11
|
+
// - Paths outside allowed zones (even via symlink resolution)
|
|
12
|
+
// - /etc, /var, /usr, /proc, /sys, /dev system directories
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
import { resolve, sep } from 'node:path';
|
|
15
|
+
import { homedir } from 'node:os';
|
|
16
|
+
import { existsSync, mkdirSync, realpathSync } from 'node:fs';
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Constants
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
const GEOTECHCLI_DIR = process.env.GEOTECHCLI_CONFIG_DIR ?? `${homedir()}${sep}.geotechcli`;
|
|
21
|
+
const WORKSPACE_DIR = `${GEOTECHCLI_DIR}${sep}workspace`;
|
|
22
|
+
const SENSITIVE_PATTERNS = [
|
|
23
|
+
'.ssh',
|
|
24
|
+
'.aws',
|
|
25
|
+
'.gnupg',
|
|
26
|
+
'.gpg',
|
|
27
|
+
'.env',
|
|
28
|
+
'.npmrc',
|
|
29
|
+
'.pypirc',
|
|
30
|
+
'.netrc',
|
|
31
|
+
'.docker',
|
|
32
|
+
'.kube',
|
|
33
|
+
'credentials',
|
|
34
|
+
'id_rsa',
|
|
35
|
+
'id_ed25519',
|
|
36
|
+
'known_hosts',
|
|
37
|
+
'authorized_keys',
|
|
38
|
+
'.git/config',
|
|
39
|
+
'.gitconfig',
|
|
40
|
+
'token',
|
|
41
|
+
'secret',
|
|
42
|
+
'password',
|
|
43
|
+
'private_key',
|
|
44
|
+
'service_account',
|
|
45
|
+
];
|
|
46
|
+
const BLOCKED_SYSTEM_PREFIXES = [
|
|
47
|
+
'/etc',
|
|
48
|
+
'/var',
|
|
49
|
+
'/usr',
|
|
50
|
+
'/proc',
|
|
51
|
+
'/sys',
|
|
52
|
+
'/dev',
|
|
53
|
+
'/boot',
|
|
54
|
+
'/sbin',
|
|
55
|
+
'/bin',
|
|
56
|
+
'/root',
|
|
57
|
+
'/tmp/.X11',
|
|
58
|
+
'C:\\Windows',
|
|
59
|
+
'C:\\Program Files',
|
|
60
|
+
];
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
// Ensure workspace exists
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
export function ensureWorkspace() {
|
|
65
|
+
if (!existsSync(WORKSPACE_DIR)) {
|
|
66
|
+
mkdirSync(WORKSPACE_DIR, { recursive: true });
|
|
67
|
+
}
|
|
68
|
+
return WORKSPACE_DIR;
|
|
69
|
+
}
|
|
70
|
+
export function getWorkspaceDir() {
|
|
71
|
+
return WORKSPACE_DIR;
|
|
72
|
+
}
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
// Core validation
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
/**
|
|
77
|
+
* Validate that a path is inside an allowed zone and does not target
|
|
78
|
+
* sensitive files. Call this BEFORE any read/write/list operation.
|
|
79
|
+
*
|
|
80
|
+
* Allowed zones:
|
|
81
|
+
* - process.cwd() and its children
|
|
82
|
+
* - WORKSPACE_DIR and its children
|
|
83
|
+
* - Any additional directories passed in `extraAllowed`
|
|
84
|
+
*
|
|
85
|
+
* For WRITE operations, pass mode='write' to additionally block
|
|
86
|
+
* the config directory itself (only workspace subdir is writable).
|
|
87
|
+
*/
|
|
88
|
+
export function validatePath(targetPath, mode = 'read', extraAllowed) {
|
|
89
|
+
const resolved = resolve(targetPath);
|
|
90
|
+
const normalizeForPrefixCheck = (value) => value.replace(/\\/g, '/').toLowerCase();
|
|
91
|
+
const normalizedInput = normalizeForPrefixCheck(targetPath);
|
|
92
|
+
const normalizedResolved = normalizeForPrefixCheck(resolved);
|
|
93
|
+
// --- 1. Block system directories ---
|
|
94
|
+
for (const prefix of BLOCKED_SYSTEM_PREFIXES) {
|
|
95
|
+
const normalizedPrefix = normalizeForPrefixCheck(prefix);
|
|
96
|
+
const matchesSystemPrefix = normalizedInput === normalizedPrefix ||
|
|
97
|
+
normalizedInput.startsWith(`${normalizedPrefix}/`) ||
|
|
98
|
+
normalizedResolved === normalizedPrefix ||
|
|
99
|
+
normalizedResolved.startsWith(`${normalizedPrefix}/`);
|
|
100
|
+
if (matchesSystemPrefix) {
|
|
101
|
+
return {
|
|
102
|
+
safe: false,
|
|
103
|
+
resolved,
|
|
104
|
+
error: `Access denied: system directory "${prefix}" is blocked.`,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// --- 2. Block sensitive file patterns ---
|
|
109
|
+
const pathParts = resolved.split(sep);
|
|
110
|
+
for (const part of pathParts) {
|
|
111
|
+
const partLower = part.toLowerCase();
|
|
112
|
+
for (const pattern of SENSITIVE_PATTERNS) {
|
|
113
|
+
if (partLower === pattern.toLowerCase() || partLower.includes(pattern.toLowerCase())) {
|
|
114
|
+
// Exception: allow reading .geotechcli config (but not writing to it directly)
|
|
115
|
+
if (resolved.startsWith(GEOTECHCLI_DIR) && mode === 'read') {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
safe: false,
|
|
120
|
+
resolved,
|
|
121
|
+
error: `Access denied: path contains sensitive pattern "${pattern}". This file may contain credentials or private keys.`,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// --- 3. Check allowed zones ---
|
|
127
|
+
const cwd = process.cwd();
|
|
128
|
+
const allowedZones = [
|
|
129
|
+
cwd,
|
|
130
|
+
WORKSPACE_DIR,
|
|
131
|
+
...(extraAllowed ?? []),
|
|
132
|
+
].map((z) => resolve(z));
|
|
133
|
+
// For read: allow CWD, workspace, and extra
|
|
134
|
+
// For write: allow CWD and workspace only
|
|
135
|
+
const isInAllowedZone = allowedZones.some((zone) => {
|
|
136
|
+
return resolved.startsWith(zone + sep) || resolved === zone;
|
|
137
|
+
});
|
|
138
|
+
if (!isInAllowedZone) {
|
|
139
|
+
return {
|
|
140
|
+
safe: false,
|
|
141
|
+
resolved,
|
|
142
|
+
error: `Access denied: "${resolved}" is outside allowed directories. Allowed: ${allowedZones.join(', ')}`,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
// --- 4. Resolve symlinks and re-check (prevent symlink escape) ---
|
|
146
|
+
if (existsSync(resolved)) {
|
|
147
|
+
try {
|
|
148
|
+
const realPath = realpathSync(resolved);
|
|
149
|
+
const realInAllowed = allowedZones.some((zone) => realPath.startsWith(zone + sep) || realPath === zone);
|
|
150
|
+
if (!realInAllowed) {
|
|
151
|
+
return {
|
|
152
|
+
safe: false,
|
|
153
|
+
resolved,
|
|
154
|
+
error: `Access denied: symlink resolves to "${realPath}" which is outside allowed directories.`,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// Can't resolve symlink — proceed with caution (file may not exist yet for writes)
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return { safe: true, resolved };
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Convenience: validate for reading.
|
|
166
|
+
*/
|
|
167
|
+
export function validateReadPath(targetPath, extraAllowed) {
|
|
168
|
+
return validatePath(targetPath, 'read', extraAllowed);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Convenience: validate for writing.
|
|
172
|
+
*/
|
|
173
|
+
export function validateWritePath(targetPath, extraAllowed) {
|
|
174
|
+
return validatePath(targetPath, 'write', extraAllowed);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Validate a shell command for safety.
|
|
178
|
+
* Returns the sanitized command or an error.
|
|
179
|
+
*/
|
|
180
|
+
export function validateShellCommand(command) {
|
|
181
|
+
const trimmed = command.trim();
|
|
182
|
+
const firstWord = trimmed.split(/\s+/)[0];
|
|
183
|
+
// Allowed read-only commands
|
|
184
|
+
const allowedCommands = ['ls', 'cat', 'head', 'tail', 'wc', 'find', 'grep', 'file', 'stat', 'du', 'pwd', 'echo'];
|
|
185
|
+
// Python: only with .py file, no -c/-m flags
|
|
186
|
+
if (firstWord === 'python' || firstWord === 'python3') {
|
|
187
|
+
const parts = trimmed.split(/\s+/);
|
|
188
|
+
const dangerousFlags = ['-c', '-m', '--command', '-W', '-X'];
|
|
189
|
+
const hasDangerousFlag = parts.some((p) => dangerousFlags.includes(p));
|
|
190
|
+
const hasScriptFile = parts.some((p) => p.endsWith('.py'));
|
|
191
|
+
if (hasDangerousFlag) {
|
|
192
|
+
return {
|
|
193
|
+
safe: false,
|
|
194
|
+
resolved: trimmed,
|
|
195
|
+
error: `Python flag "${parts.find((p) => dangerousFlags.includes(p))}" is blocked. Only "python script.py" is allowed.`,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
if (!hasScriptFile) {
|
|
199
|
+
return {
|
|
200
|
+
safe: false,
|
|
201
|
+
resolved: trimmed,
|
|
202
|
+
error: 'Python must be invoked with a .py script file. Interactive/inline execution is blocked.',
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else if (!allowedCommands.includes(firstWord)) {
|
|
207
|
+
return {
|
|
208
|
+
safe: false,
|
|
209
|
+
resolved: trimmed,
|
|
210
|
+
error: `Command "${firstWord}" not allowed. Permitted: ${allowedCommands.join(', ')}, python <script.py>`,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
// Block dangerous operators in any command
|
|
214
|
+
const blockedOperators = [
|
|
215
|
+
'>', '>>', '|', '&&', '||', ';', '$(', '`',
|
|
216
|
+
'sudo', 'chmod', 'chown', 'chgrp',
|
|
217
|
+
'rm ', 'rm\t', 'rmdir',
|
|
218
|
+
'mv ', 'mv\t',
|
|
219
|
+
'cp ', 'cp\t',
|
|
220
|
+
'mkfs', 'dd ',
|
|
221
|
+
'wget ', 'curl ',
|
|
222
|
+
'nc ', 'ncat ',
|
|
223
|
+
];
|
|
224
|
+
for (const op of blockedOperators) {
|
|
225
|
+
if (trimmed.includes(op)) {
|
|
226
|
+
return {
|
|
227
|
+
safe: false,
|
|
228
|
+
resolved: trimmed,
|
|
229
|
+
error: `Command contains blocked operator "${op.trim()}". Pipes, redirects, chaining, and destructive commands are not allowed.`,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return { safe: true, resolved: trimmed };
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/agents/sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { LLMConfig } from '../llm/types.js';
|
|
2
|
+
import { type ToolResult } from './tools.js';
|
|
3
|
+
import './filesystem-tools.js';
|
|
4
|
+
import './bridge-tools.js';
|
|
5
|
+
import './data-tools.js';
|
|
6
|
+
export interface SwarmStep {
|
|
7
|
+
agent: 'orchestrator' | 'interpretation' | 'simulation' | 'reviewer';
|
|
8
|
+
type: 'thought' | 'tool_call' | 'tool_result' | 'handoff' | 'review' | 'correction' | 'answer' | 'error';
|
|
9
|
+
content: string;
|
|
10
|
+
toolName?: string;
|
|
11
|
+
toolArgs?: Record<string, unknown>;
|
|
12
|
+
toolResult?: ToolResult;
|
|
13
|
+
timestamp: number;
|
|
14
|
+
}
|
|
15
|
+
export interface SwarmSession {
|
|
16
|
+
steps: SwarmStep[];
|
|
17
|
+
context: Record<string, unknown>;
|
|
18
|
+
totalTokens: number;
|
|
19
|
+
totalLatencyMs: number;
|
|
20
|
+
reviewPassed: boolean;
|
|
21
|
+
corrections: string[];
|
|
22
|
+
}
|
|
23
|
+
export type SwarmCallback = (step: SwarmStep) => void;
|
|
24
|
+
export declare function runSwarm(task: string, config: LLMConfig, onStep: SwarmCallback, sessionContext?: Record<string, unknown>): Promise<SwarmSession>;
|
|
25
|
+
//# sourceMappingURL=swarm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../src/agents/swarm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAsB,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAK3D,OAAO,uBAAuB,CAAC;AAC/B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,iBAAiB,CAAC;AAEzB,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,cAAc,GAAG,gBAAgB,GAAG,YAAY,GAAG,UAAU,CAAC;IACrE,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzG,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;AAiUtD,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,aAAa,EACrB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,OAAO,CAAC,YAAY,CAAC,CA+KvB"}
|