@geotechcli/core 0.2.0 → 0.4.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 +1 -0
- package/dist/agents/brain.d.ts.map +1 -1
- package/dist/agents/brain.js +39 -38
- package/dist/agents/brain.js.map +1 -1
- package/dist/agents/bridge-tools.js +15 -3
- package/dist/agents/bridge-tools.js.map +1 -1
- package/dist/agents/case-file.d.ts +52 -0
- package/dist/agents/case-file.d.ts.map +1 -0
- package/dist/agents/case-file.js +657 -0
- package/dist/agents/case-file.js.map +1 -0
- package/dist/agents/contracts.d.ts +232 -0
- package/dist/agents/contracts.d.ts.map +1 -0
- package/dist/agents/contracts.js +14 -0
- package/dist/agents/contracts.js.map +1 -0
- package/dist/agents/data-tools.js +11 -3
- package/dist/agents/data-tools.js.map +1 -1
- package/dist/agents/deliverable-tools.d.ts +2 -0
- package/dist/agents/deliverable-tools.d.ts.map +1 -0
- package/dist/agents/deliverable-tools.js +497 -0
- package/dist/agents/deliverable-tools.js.map +1 -0
- package/dist/agents/evidence.d.ts +21 -0
- package/dist/agents/evidence.d.ts.map +1 -0
- package/dist/agents/evidence.js +302 -0
- package/dist/agents/evidence.js.map +1 -0
- package/dist/agents/orchestrator.js +13 -13
- package/dist/agents/sandbox.d.ts.map +1 -1
- package/dist/agents/sandbox.js +84 -31
- package/dist/agents/sandbox.js.map +1 -1
- package/dist/agents/swarm.d.ts +2 -0
- package/dist/agents/swarm.d.ts.map +1 -1
- package/dist/agents/swarm.js +170 -149
- package/dist/agents/swarm.js.map +1 -1
- package/dist/bridge/index.js +87 -87
- package/dist/geo/index.d.ts +2 -1
- package/dist/geo/index.d.ts.map +1 -1
- package/dist/geo/index.js +1 -0
- package/dist/geo/index.js.map +1 -1
- package/dist/geo/pile-capacity.d.ts.map +1 -1
- package/dist/geo/pile-capacity.js +47 -8
- package/dist/geo/pile-capacity.js.map +1 -1
- package/dist/geo/seepage.d.ts +62 -0
- package/dist/geo/seepage.d.ts.map +1 -0
- package/dist/geo/seepage.js +130 -0
- package/dist/geo/seepage.js.map +1 -0
- package/dist/geo/slope-stability.d.ts.map +1 -1
- package/dist/geo/slope-stability.js +9 -6
- package/dist/geo/slope-stability.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/llm/middleware/metering.js +14 -14
- package/dist/llm/providers/hosted-beta.d.ts.map +1 -1
- package/dist/llm/providers/hosted-beta.js +5 -2
- package/dist/llm/providers/hosted-beta.js.map +1 -1
- package/dist/llm/providers/zhipu.d.ts.map +1 -1
- package/dist/llm/providers/zhipu.js +3 -1
- package/dist/llm/providers/zhipu.js.map +1 -1
- package/dist/llm/util.d.ts +10 -0
- package/dist/llm/util.d.ts.map +1 -0
- package/dist/llm/util.js +54 -0
- package/dist/llm/util.js.map +1 -0
- package/dist/meta/metadata.json +4 -4
- package/dist/report/casefile.d.ts +207 -0
- package/dist/report/casefile.d.ts.map +1 -0
- package/dist/report/casefile.js +438 -0
- package/dist/report/casefile.js.map +1 -0
- package/dist/report/docx.d.ts +3 -0
- package/dist/report/docx.d.ts.map +1 -0
- package/dist/report/docx.js +178 -0
- package/dist/report/docx.js.map +1 -0
- package/dist/report/index.d.ts +3 -0
- package/dist/report/index.d.ts.map +1 -1
- package/dist/report/index.js +23 -20
- package/dist/report/index.js.map +1 -1
- package/dist/report/pdf.d.ts +3 -0
- package/dist/report/pdf.d.ts.map +1 -0
- package/dist/report/pdf.js +195 -0
- package/dist/report/pdf.js.map +1 -0
- package/dist/vision/index.d.ts.map +1 -1
- package/dist/vision/index.js +163 -84
- package/dist/vision/index.js.map +1 -1
- package/package.json +58 -55
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { saveNamedDataset, loadProject } from '../storage/index.js';
|
|
3
|
+
import { ensureScenarioCaseFile, loadLatestScenarioArtifacts, saveScenarioCaseFile, } from './case-file.js';
|
|
4
|
+
const EVIDENCE_KIND = 'scenario-evidence';
|
|
5
|
+
function nowIso() {
|
|
6
|
+
return new Date().toISOString();
|
|
7
|
+
}
|
|
8
|
+
function evidenceDatasetName(scenarioId, evidenceId) {
|
|
9
|
+
return `scenario-evidence:${scenarioId}:${evidenceId}`;
|
|
10
|
+
}
|
|
11
|
+
function normalizeKeyPart(value) {
|
|
12
|
+
return value.trim().toLowerCase();
|
|
13
|
+
}
|
|
14
|
+
function evidenceKey(classValue, label, source) {
|
|
15
|
+
return `${normalizeKeyPart(classValue)}|${normalizeKeyPart(label)}|${normalizeKeyPart(source)}`;
|
|
16
|
+
}
|
|
17
|
+
function uniqueStrings(values) {
|
|
18
|
+
return [...new Set(values.filter(Boolean))];
|
|
19
|
+
}
|
|
20
|
+
function isEvidenceReference(value) {
|
|
21
|
+
return Boolean(value)
|
|
22
|
+
&& typeof value === 'object'
|
|
23
|
+
&& 'evidenceId' in value
|
|
24
|
+
&& 'class' in value
|
|
25
|
+
&& 'label' in value
|
|
26
|
+
&& 'source' in value;
|
|
27
|
+
}
|
|
28
|
+
function collectNestedEvidenceRefs(value) {
|
|
29
|
+
if (!value || typeof value !== 'object') {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
if (Array.isArray(value)) {
|
|
33
|
+
return value.flatMap((item) => collectNestedEvidenceRefs(item));
|
|
34
|
+
}
|
|
35
|
+
const record = value;
|
|
36
|
+
const ownRefs = Array.isArray(record.evidenceRefs)
|
|
37
|
+
? record.evidenceRefs.filter((item) => isEvidenceReference(item))
|
|
38
|
+
: [];
|
|
39
|
+
return [
|
|
40
|
+
...ownRefs,
|
|
41
|
+
...Object.values(record).flatMap((item) => collectNestedEvidenceRefs(item)),
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
function uniqueEvidenceRefs(refs) {
|
|
45
|
+
const seen = new Set();
|
|
46
|
+
const output = [];
|
|
47
|
+
for (const ref of refs) {
|
|
48
|
+
const key = `${ref.evidenceId}|${ref.class}|${ref.label}|${ref.source}`;
|
|
49
|
+
if (seen.has(key))
|
|
50
|
+
continue;
|
|
51
|
+
seen.add(key);
|
|
52
|
+
output.push(ref);
|
|
53
|
+
}
|
|
54
|
+
return output;
|
|
55
|
+
}
|
|
56
|
+
function toEvidenceRef(record) {
|
|
57
|
+
return {
|
|
58
|
+
evidenceId: record.evidenceId,
|
|
59
|
+
class: record.class,
|
|
60
|
+
label: record.label,
|
|
61
|
+
source: record.source,
|
|
62
|
+
...(record.summary ? { summary: record.summary } : {}),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function artifactDatasetName(scenarioId, artifactType, version) {
|
|
66
|
+
return `scenario-artifact:${scenarioId}:${artifactType}:v${version}`;
|
|
67
|
+
}
|
|
68
|
+
export function loadEvidenceRecord(projectId, scenarioId, evidenceId) {
|
|
69
|
+
const project = loadProject(projectId);
|
|
70
|
+
const direct = project.namedDatasets[evidenceDatasetName(scenarioId, evidenceId)]?.data;
|
|
71
|
+
if (direct && typeof direct === 'object') {
|
|
72
|
+
return direct;
|
|
73
|
+
}
|
|
74
|
+
const prefix = `scenario-evidence:${scenarioId}:`;
|
|
75
|
+
for (const [name, dataset] of Object.entries(project.namedDatasets)) {
|
|
76
|
+
if (!name.startsWith(prefix))
|
|
77
|
+
continue;
|
|
78
|
+
const data = dataset.data;
|
|
79
|
+
if (data && typeof data === 'object' && data.evidenceId === evidenceId) {
|
|
80
|
+
return data;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
export function listEvidenceRecords(projectId, scenarioId) {
|
|
86
|
+
const project = loadProject(projectId);
|
|
87
|
+
const prefix = `scenario-evidence:${scenarioId}:`;
|
|
88
|
+
return Object.entries(project.namedDatasets)
|
|
89
|
+
.filter(([name]) => name.startsWith(prefix))
|
|
90
|
+
.map(([, dataset]) => dataset.data)
|
|
91
|
+
.filter((value) => Boolean(value) && typeof value === 'object')
|
|
92
|
+
.sort((left, right) => (left.class.localeCompare(right.class)
|
|
93
|
+
|| left.label.localeCompare(right.label)
|
|
94
|
+
|| left.source.localeCompare(right.source)));
|
|
95
|
+
}
|
|
96
|
+
function saveEvidenceDataset(projectId, scenarioId, record, source = 'evidence') {
|
|
97
|
+
const datasetName = evidenceDatasetName(scenarioId, record.evidenceId);
|
|
98
|
+
saveNamedDataset(projectId, {
|
|
99
|
+
name: datasetName,
|
|
100
|
+
kind: EVIDENCE_KIND,
|
|
101
|
+
data: record,
|
|
102
|
+
source,
|
|
103
|
+
});
|
|
104
|
+
return datasetName;
|
|
105
|
+
}
|
|
106
|
+
export function persistEvidenceRecord(options) {
|
|
107
|
+
const caseFile = ensureScenarioCaseFile(options.projectId, options.scenarioId, options.scenarioId);
|
|
108
|
+
const key = evidenceKey(options.class, options.label, options.source);
|
|
109
|
+
const existingDatasetName = caseFile.evidenceIndex[key];
|
|
110
|
+
if (existingDatasetName) {
|
|
111
|
+
const project = loadProject(options.projectId);
|
|
112
|
+
const existing = project.namedDatasets[existingDatasetName]?.data;
|
|
113
|
+
if (existing && typeof existing === 'object') {
|
|
114
|
+
const merged = {
|
|
115
|
+
...existing,
|
|
116
|
+
summary: existing.summary ?? options.summary,
|
|
117
|
+
detail: existing.detail ?? options.detail,
|
|
118
|
+
tags: uniqueStrings([
|
|
119
|
+
...(existing.tags ?? []),
|
|
120
|
+
...(options.tags ?? []),
|
|
121
|
+
]),
|
|
122
|
+
linkedArtifactIds: uniqueStrings([
|
|
123
|
+
...(existing.linkedArtifactIds ?? []),
|
|
124
|
+
...(options.linkedArtifactIds ?? []),
|
|
125
|
+
]),
|
|
126
|
+
metadata: {
|
|
127
|
+
...(existing.metadata ?? {}),
|
|
128
|
+
...(options.metadata ?? {}),
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
saveEvidenceDataset(options.projectId, options.scenarioId, merged, options.provenanceSource.agent);
|
|
132
|
+
return merged;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const record = {
|
|
136
|
+
evidenceId: options.evidenceId ?? randomUUID(),
|
|
137
|
+
projectId: options.projectId,
|
|
138
|
+
scenarioId: options.scenarioId,
|
|
139
|
+
class: options.class,
|
|
140
|
+
label: options.label,
|
|
141
|
+
source: options.source,
|
|
142
|
+
summary: options.summary,
|
|
143
|
+
detail: options.detail,
|
|
144
|
+
tags: uniqueStrings(options.tags ?? []),
|
|
145
|
+
linkedArtifactIds: uniqueStrings(options.linkedArtifactIds ?? []),
|
|
146
|
+
provenance: {
|
|
147
|
+
createdAt: nowIso(),
|
|
148
|
+
derivedFrom: [...(options.linkedArtifactIds ?? [])],
|
|
149
|
+
source: options.provenanceSource,
|
|
150
|
+
},
|
|
151
|
+
metadata: options.metadata,
|
|
152
|
+
};
|
|
153
|
+
const datasetName = saveEvidenceDataset(options.projectId, options.scenarioId, record, options.provenanceSource.agent);
|
|
154
|
+
saveScenarioCaseFile(options.projectId, options.scenarioId, {
|
|
155
|
+
...caseFile,
|
|
156
|
+
evidenceDatasetRefs: uniqueStrings([...(caseFile.evidenceDatasetRefs ?? []), datasetName]),
|
|
157
|
+
evidenceIndex: {
|
|
158
|
+
...(caseFile.evidenceIndex ?? {}),
|
|
159
|
+
[key]: datasetName,
|
|
160
|
+
},
|
|
161
|
+
}, options.provenanceSource.agent);
|
|
162
|
+
return record;
|
|
163
|
+
}
|
|
164
|
+
function inferFromGroundModel(payload, artifact) {
|
|
165
|
+
const output = [];
|
|
166
|
+
if (payload.summary) {
|
|
167
|
+
output.push({
|
|
168
|
+
class: 'Derived',
|
|
169
|
+
label: 'Ground model summary',
|
|
170
|
+
source: 'artifact:ground-model',
|
|
171
|
+
summary: payload.summary,
|
|
172
|
+
tags: ['ground-model'],
|
|
173
|
+
linkedArtifactIds: [artifact.artifactId],
|
|
174
|
+
metadata: { artifactType: artifact.artifactType, version: artifact.version },
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
for (const stratum of payload.strata ?? []) {
|
|
178
|
+
output.push({
|
|
179
|
+
class: 'Derived',
|
|
180
|
+
label: `Stratum ${stratum.fromM}m-${stratum.toM}m: ${stratum.material}`,
|
|
181
|
+
source: 'artifact:ground-model',
|
|
182
|
+
summary: stratum.description ?? stratum.material,
|
|
183
|
+
detail: stratum.uscsSymbol ? `USCS: ${stratum.uscsSymbol}` : undefined,
|
|
184
|
+
tags: ['ground-model', 'stratum'],
|
|
185
|
+
linkedArtifactIds: [artifact.artifactId],
|
|
186
|
+
metadata: {
|
|
187
|
+
fromM: stratum.fromM,
|
|
188
|
+
toM: stratum.toM,
|
|
189
|
+
material: stratum.material,
|
|
190
|
+
uscsSymbol: stratum.uscsSymbol,
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
return output;
|
|
195
|
+
}
|
|
196
|
+
function inferFromAssumptions(payload, artifact) {
|
|
197
|
+
return (payload.assumptions ?? []).map((assumption) => ({
|
|
198
|
+
class: 'Assumed',
|
|
199
|
+
label: assumption.statement,
|
|
200
|
+
source: 'artifact:assumptions',
|
|
201
|
+
summary: assumption.basis,
|
|
202
|
+
detail: `Impact: ${assumption.impact}`,
|
|
203
|
+
tags: ['assumption', assumption.category],
|
|
204
|
+
linkedArtifactIds: [artifact.artifactId],
|
|
205
|
+
metadata: {
|
|
206
|
+
category: assumption.category,
|
|
207
|
+
impact: assumption.impact,
|
|
208
|
+
},
|
|
209
|
+
}));
|
|
210
|
+
}
|
|
211
|
+
function inferFromResults(payload, artifact) {
|
|
212
|
+
return (payload.records ?? []).map((record) => ({
|
|
213
|
+
class: 'Computed',
|
|
214
|
+
label: record.label,
|
|
215
|
+
source: `artifact:${record.toolName || 'results'}`,
|
|
216
|
+
summary: record.interpretation,
|
|
217
|
+
detail: record.metrics.length > 0
|
|
218
|
+
? record.metrics
|
|
219
|
+
.map((metric) => `${metric.name}: ${metric.value}${metric.units ? ` ${metric.units}` : ''}`)
|
|
220
|
+
.join('; ')
|
|
221
|
+
: undefined,
|
|
222
|
+
tags: ['results', record.toolName],
|
|
223
|
+
linkedArtifactIds: [artifact.artifactId],
|
|
224
|
+
metadata: {
|
|
225
|
+
toolName: record.toolName,
|
|
226
|
+
method: record.method,
|
|
227
|
+
metricCount: record.metrics.length,
|
|
228
|
+
},
|
|
229
|
+
}));
|
|
230
|
+
}
|
|
231
|
+
function inferArtifactEvidence(artifact) {
|
|
232
|
+
switch (artifact.artifactType) {
|
|
233
|
+
case 'ground-model':
|
|
234
|
+
return inferFromGroundModel(artifact.payload, artifact);
|
|
235
|
+
case 'assumptions':
|
|
236
|
+
return inferFromAssumptions(artifact.payload, artifact);
|
|
237
|
+
case 'results':
|
|
238
|
+
return inferFromResults(artifact.payload, artifact);
|
|
239
|
+
default:
|
|
240
|
+
return [];
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
function persistArtifactEvidenceRefs(projectId, scenarioId, artifact, refs) {
|
|
244
|
+
const mergedArtifact = {
|
|
245
|
+
...artifact,
|
|
246
|
+
evidenceRefs: uniqueEvidenceRefs([...(artifact.evidenceRefs ?? []), ...refs]),
|
|
247
|
+
};
|
|
248
|
+
saveNamedDataset(projectId, {
|
|
249
|
+
name: artifactDatasetName(scenarioId, artifact.artifactType, artifact.version),
|
|
250
|
+
kind: 'scenario-artifact',
|
|
251
|
+
data: mergedArtifact,
|
|
252
|
+
source: mergedArtifact.provenance.source.agent,
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
export function persistArtifactEvidence(projectId, scenarioId, artifact) {
|
|
256
|
+
const explicitRefs = uniqueEvidenceRefs([
|
|
257
|
+
...(artifact.evidenceRefs ?? []),
|
|
258
|
+
...collectNestedEvidenceRefs(artifact.payload),
|
|
259
|
+
]);
|
|
260
|
+
const persisted = explicitRefs.map((reference) => persistEvidenceRecord({
|
|
261
|
+
projectId,
|
|
262
|
+
scenarioId,
|
|
263
|
+
evidenceId: reference.evidenceId,
|
|
264
|
+
class: reference.class,
|
|
265
|
+
label: reference.label,
|
|
266
|
+
source: reference.source,
|
|
267
|
+
summary: reference.summary,
|
|
268
|
+
linkedArtifactIds: [artifact.artifactId],
|
|
269
|
+
provenanceSource: artifact.provenance.source,
|
|
270
|
+
metadata: { artifactType: artifact.artifactType, version: artifact.version, explicit: true },
|
|
271
|
+
}));
|
|
272
|
+
for (const inferred of inferArtifactEvidence(artifact)) {
|
|
273
|
+
persisted.push(persistEvidenceRecord({
|
|
274
|
+
projectId,
|
|
275
|
+
scenarioId,
|
|
276
|
+
provenanceSource: artifact.provenance.source,
|
|
277
|
+
...inferred,
|
|
278
|
+
}));
|
|
279
|
+
}
|
|
280
|
+
const refs = uniqueEvidenceRefs(persisted.map(toEvidenceRef));
|
|
281
|
+
if (refs.length > 0) {
|
|
282
|
+
persistArtifactEvidenceRefs(projectId, scenarioId, artifact, refs);
|
|
283
|
+
}
|
|
284
|
+
return persisted;
|
|
285
|
+
}
|
|
286
|
+
export function persistCaseFileEvidence(projectId, scenarioId) {
|
|
287
|
+
const artifacts = loadLatestScenarioArtifacts(projectId, scenarioId);
|
|
288
|
+
const persisted = [];
|
|
289
|
+
for (const artifact of Object.values(artifacts)) {
|
|
290
|
+
if (!artifact)
|
|
291
|
+
continue;
|
|
292
|
+
persisted.push(...persistArtifactEvidence(projectId, scenarioId, artifact));
|
|
293
|
+
}
|
|
294
|
+
const byId = new Map();
|
|
295
|
+
for (const record of persisted) {
|
|
296
|
+
byId.set(record.evidenceId, record);
|
|
297
|
+
}
|
|
298
|
+
return [...byId.values()].sort((left, right) => (left.class.localeCompare(right.class)
|
|
299
|
+
|| left.label.localeCompare(right.label)
|
|
300
|
+
|| left.source.localeCompare(right.source)));
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/agents/evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,19 +31,19 @@ const AGENTS = [
|
|
|
31
31
|
systemPrompt: `You are a specialist foundation engineer. You design shallow and deep foundations, analyze pile capacity (static and dynamic), evaluate group effects, design pile caps, and perform serviceability checks. Reference API RP 2GEO, FHWA, and relevant building codes.`,
|
|
32
32
|
},
|
|
33
33
|
];
|
|
34
|
-
const ORCHESTRATOR_SYSTEM = `You are the geotechCLI Orchestrator. You decompose complex geotechnical engineering tasks into sub-tasks for specialized agents.
|
|
35
|
-
|
|
36
|
-
Available agents:
|
|
37
|
-
${AGENTS.map((a) => `- ${a.tag}: ${a.name}`).join('\n')}
|
|
38
|
-
|
|
39
|
-
Instructions:
|
|
40
|
-
1. Analyze the user's task and determine which agent(s) to call.
|
|
41
|
-
2. To call an agent, output EXACTLY this JSON block:
|
|
42
|
-
\`\`\`json
|
|
43
|
-
{"action":"call_agent","agent":"@geo-agent","query":"your specific question"}
|
|
44
|
-
\`\`\`
|
|
45
|
-
3. Call one agent at a time. Wait for results before proceeding.
|
|
46
|
-
4. After gathering all needed information, write a final comprehensive engineering report in markdown. Do NOT include any JSON block in the final report.
|
|
34
|
+
const ORCHESTRATOR_SYSTEM = `You are the geotechCLI Orchestrator. You decompose complex geotechnical engineering tasks into sub-tasks for specialized agents.
|
|
35
|
+
|
|
36
|
+
Available agents:
|
|
37
|
+
${AGENTS.map((a) => `- ${a.tag}: ${a.name}`).join('\n')}
|
|
38
|
+
|
|
39
|
+
Instructions:
|
|
40
|
+
1. Analyze the user's task and determine which agent(s) to call.
|
|
41
|
+
2. To call an agent, output EXACTLY this JSON block:
|
|
42
|
+
\`\`\`json
|
|
43
|
+
{"action":"call_agent","agent":"@geo-agent","query":"your specific question"}
|
|
44
|
+
\`\`\`
|
|
45
|
+
3. Call one agent at a time. Wait for results before proceeding.
|
|
46
|
+
4. After gathering all needed information, write a final comprehensive engineering report in markdown. Do NOT include any JSON block in the final report.
|
|
47
47
|
5. Always include numerical results, applicable standards, and recommendations.`;
|
|
48
48
|
export async function runMultiAgentTask(task, config, onLog, maxIterations = 6) {
|
|
49
49
|
onLog({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/agents/sandbox.ts"],"names":[],"mappings":"AAsEA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/agents/sandbox.ts"],"names":[],"mappings":"AAsEA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA6BD,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,MAAM,GAAG,OAAgB,EAC/B,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,YAAY,CAkGd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,CAE1F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,CAE3F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAkFlE"}
|
package/dist/agents/sandbox.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// - Paths outside allowed zones (even via symlink resolution)
|
|
12
12
|
// - /etc, /var, /usr, /proc, /sys, /dev system directories
|
|
13
13
|
// ---------------------------------------------------------------------------
|
|
14
|
-
import { resolve, sep } from 'node:path';
|
|
14
|
+
import { dirname, resolve, sep } from 'node:path';
|
|
15
15
|
import { homedir } from 'node:os';
|
|
16
16
|
import { existsSync, mkdirSync, realpathSync } from 'node:fs';
|
|
17
17
|
// ---------------------------------------------------------------------------
|
|
@@ -58,6 +58,24 @@ const BLOCKED_SYSTEM_PREFIXES = [
|
|
|
58
58
|
'C:\\Windows',
|
|
59
59
|
'C:\\Program Files',
|
|
60
60
|
];
|
|
61
|
+
function normalizeForPrefixCheck(value) {
|
|
62
|
+
return value.replace(/\\/g, '/').toLowerCase();
|
|
63
|
+
}
|
|
64
|
+
function isWithinAllowedZones(targetPath, allowedZones) {
|
|
65
|
+
return allowedZones.some((zone) => targetPath.startsWith(zone + sep) || targetPath === zone);
|
|
66
|
+
}
|
|
67
|
+
function findNearestExistingParent(targetPath) {
|
|
68
|
+
let current = dirname(targetPath);
|
|
69
|
+
let previous = '';
|
|
70
|
+
while (current !== previous) {
|
|
71
|
+
if (existsSync(current)) {
|
|
72
|
+
return current;
|
|
73
|
+
}
|
|
74
|
+
previous = current;
|
|
75
|
+
current = dirname(current);
|
|
76
|
+
}
|
|
77
|
+
return existsSync(current) ? current : null;
|
|
78
|
+
}
|
|
61
79
|
// ---------------------------------------------------------------------------
|
|
62
80
|
// Ensure workspace exists
|
|
63
81
|
// ---------------------------------------------------------------------------
|
|
@@ -87,7 +105,6 @@ export function getWorkspaceDir() {
|
|
|
87
105
|
*/
|
|
88
106
|
export function validatePath(targetPath, mode = 'read', extraAllowed) {
|
|
89
107
|
const resolved = resolve(targetPath);
|
|
90
|
-
const normalizeForPrefixCheck = (value) => value.replace(/\\/g, '/').toLowerCase();
|
|
91
108
|
const normalizedInput = normalizeForPrefixCheck(targetPath);
|
|
92
109
|
const normalizedResolved = normalizeForPrefixCheck(resolved);
|
|
93
110
|
// --- 1. Block system directories ---
|
|
@@ -132,9 +149,7 @@ export function validatePath(targetPath, mode = 'read', extraAllowed) {
|
|
|
132
149
|
].map((z) => resolve(z));
|
|
133
150
|
// For read: allow CWD, workspace, and extra
|
|
134
151
|
// For write: allow CWD and workspace only
|
|
135
|
-
const isInAllowedZone = allowedZones
|
|
136
|
-
return resolved.startsWith(zone + sep) || resolved === zone;
|
|
137
|
-
});
|
|
152
|
+
const isInAllowedZone = isWithinAllowedZones(resolved, allowedZones);
|
|
138
153
|
if (!isInAllowedZone) {
|
|
139
154
|
return {
|
|
140
155
|
safe: false,
|
|
@@ -146,7 +161,7 @@ export function validatePath(targetPath, mode = 'read', extraAllowed) {
|
|
|
146
161
|
if (existsSync(resolved)) {
|
|
147
162
|
try {
|
|
148
163
|
const realPath = realpathSync(resolved);
|
|
149
|
-
const realInAllowed =
|
|
164
|
+
const realInAllowed = isWithinAllowedZones(realPath, allowedZones);
|
|
150
165
|
if (!realInAllowed) {
|
|
151
166
|
return {
|
|
152
167
|
safe: false,
|
|
@@ -159,6 +174,24 @@ export function validatePath(targetPath, mode = 'read', extraAllowed) {
|
|
|
159
174
|
// Can't resolve symlink — proceed with caution (file may not exist yet for writes)
|
|
160
175
|
}
|
|
161
176
|
}
|
|
177
|
+
if (mode === 'write' && !existsSync(resolved)) {
|
|
178
|
+
const nearestExistingParent = findNearestExistingParent(resolved);
|
|
179
|
+
if (nearestExistingParent) {
|
|
180
|
+
try {
|
|
181
|
+
const realParent = realpathSync(nearestExistingParent);
|
|
182
|
+
if (!isWithinAllowedZones(realParent, allowedZones)) {
|
|
183
|
+
return {
|
|
184
|
+
safe: false,
|
|
185
|
+
resolved,
|
|
186
|
+
error: `Access denied: parent symlink resolves to "${realParent}" which is outside allowed directories.`,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// Keep the earlier prefix and zone checks if parent realpath cannot be resolved.
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
162
195
|
return { safe: true, resolved };
|
|
163
196
|
}
|
|
164
197
|
/**
|
|
@@ -179,40 +212,20 @@ export function validateWritePath(targetPath, extraAllowed) {
|
|
|
179
212
|
*/
|
|
180
213
|
export function validateShellCommand(command) {
|
|
181
214
|
const trimmed = command.trim();
|
|
182
|
-
const
|
|
215
|
+
const parts = trimmed.split(/\s+/);
|
|
216
|
+
const firstWord = parts[0];
|
|
183
217
|
// Allowed read-only commands
|
|
184
218
|
const allowedCommands = ['ls', 'cat', 'head', 'tail', 'wc', 'find', 'grep', 'file', 'stat', 'du', 'pwd', 'echo'];
|
|
185
|
-
|
|
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)) {
|
|
219
|
+
if (!allowedCommands.includes(firstWord)) {
|
|
207
220
|
return {
|
|
208
221
|
safe: false,
|
|
209
222
|
resolved: trimmed,
|
|
210
|
-
error: `Command "${firstWord}" not allowed. Permitted: ${allowedCommands.join(', ')}
|
|
223
|
+
error: `Command "${firstWord}" not allowed. Permitted: ${allowedCommands.join(', ')}`,
|
|
211
224
|
};
|
|
212
225
|
}
|
|
213
226
|
// Block dangerous operators in any command
|
|
214
227
|
const blockedOperators = [
|
|
215
|
-
'>', '>>', '|', '&&', '||', ';', '$(', '`',
|
|
228
|
+
'<', '>', '>>', '|', '&&', '||', ';', '$(', '`',
|
|
216
229
|
'sudo', 'chmod', 'chown', 'chgrp',
|
|
217
230
|
'rm ', 'rm\t', 'rmdir',
|
|
218
231
|
'mv ', 'mv\t',
|
|
@@ -230,6 +243,46 @@ export function validateShellCommand(command) {
|
|
|
230
243
|
};
|
|
231
244
|
}
|
|
232
245
|
}
|
|
246
|
+
if (firstWord === 'find') {
|
|
247
|
+
const blockedFindPredicates = ['-exec', '-execdir', '-ok', '-delete'];
|
|
248
|
+
for (const token of parts.slice(1)) {
|
|
249
|
+
if (blockedFindPredicates.some((predicate) => token === predicate || token.startsWith(predicate))) {
|
|
250
|
+
return {
|
|
251
|
+
safe: false,
|
|
252
|
+
resolved: trimmed,
|
|
253
|
+
error: `Command contains blocked find predicate "${token}". Command execution and destructive find operations are not allowed.`,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
const nonOptionTokens = parts.slice(1).filter((token) => !token.startsWith('-'));
|
|
259
|
+
const validatePathToken = (token) => {
|
|
260
|
+
if (/^\d+$/.test(token)) {
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
const pathCheck = validateReadPath(token);
|
|
264
|
+
return pathCheck.safe ? null : pathCheck;
|
|
265
|
+
};
|
|
266
|
+
let pathTokens = [];
|
|
267
|
+
if (['ls', 'cat', 'head', 'tail', 'wc', 'file', 'stat', 'du'].includes(firstWord)) {
|
|
268
|
+
pathTokens = nonOptionTokens;
|
|
269
|
+
}
|
|
270
|
+
else if (firstWord === 'grep') {
|
|
271
|
+
pathTokens = nonOptionTokens.slice(1);
|
|
272
|
+
}
|
|
273
|
+
else if (firstWord === 'find' && nonOptionTokens.length > 0) {
|
|
274
|
+
pathTokens = [nonOptionTokens[0]];
|
|
275
|
+
}
|
|
276
|
+
for (const token of pathTokens) {
|
|
277
|
+
const pathCheck = validatePathToken(token);
|
|
278
|
+
if (pathCheck && !pathCheck.safe) {
|
|
279
|
+
return {
|
|
280
|
+
safe: false,
|
|
281
|
+
resolved: trimmed,
|
|
282
|
+
error: `Command path "${token}" is not allowed. ${pathCheck.error}`,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
}
|
|
233
286
|
return { safe: true, resolved: trimmed };
|
|
234
287
|
}
|
|
235
288
|
//# sourceMappingURL=sandbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/agents/sandbox.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,iBAAiB;AACjB,gDAAgD;AAChD,0DAA0D;AAC1D,EAAE;AACF,oBAAoB;AACpB,mEAAmE;AACnE,gEAAgE;AAChE,6DAA6D;AAC7D,8EAA8E;AAE9E,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/agents/sandbox.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,iBAAiB;AACjB,gDAAgD;AAChD,0DAA0D;AAC1D,EAAE;AACF,oBAAoB;AACpB,mEAAmE;AACnE,gEAAgE;AAChE,6DAA6D;AAC7D,8EAA8E;AAE9E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE9D,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,GAAG,OAAO,EAAE,GAAG,GAAG,aAAa,CAAC;AAC5F,MAAM,aAAa,GAAG,GAAG,cAAc,GAAG,GAAG,WAAW,CAAC;AAEzD,MAAM,kBAAkB,GAAG;IACzB,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,SAAS;IACT,OAAO;IACP,aAAa;IACb,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,iBAAiB;IACjB,aAAa;IACb,YAAY;IACZ,OAAO;IACP,QAAQ;IACR,UAAU;IACV,aAAa;IACb,iBAAiB;CAClB,CAAC;AAEF,MAAM,uBAAuB,GAAG;IAC9B,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,WAAW;IACX,aAAa;IACb,mBAAmB;CACpB,CAAC;AAYF,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB,EAAE,YAAsB;IACtE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,UAAU,KAAK,IAAI,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,yBAAyB,CAAC,UAAkB;IACnD,IAAI,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,QAAQ,GAAG,OAAO,CAAC;QACnB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAC1B,UAAkB,EAClB,OAAyB,MAAM,EAC/B,YAAuB;IAEvB,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,eAAe,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAE7D,sCAAsC;IACtC,KAAK,MAAM,MAAM,IAAI,uBAAuB,EAAE,CAAC;QAC7C,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,mBAAmB,GACvB,eAAe,KAAK,gBAAgB;YACpC,eAAe,CAAC,UAAU,CAAC,GAAG,gBAAgB,GAAG,CAAC;YAClD,kBAAkB,KAAK,gBAAgB;YACvC,kBAAkB,CAAC,UAAU,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC;QAExD,IAAI,mBAAmB,EAAE,CAAC;YACxB,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,QAAQ;gBACR,KAAK,EAAE,oCAAoC,MAAM,eAAe;aACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,IAAI,SAAS,KAAK,OAAO,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACrF,+EAA+E;gBAC/E,IAAI,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC3D,SAAS;gBACX,CAAC;gBACD,OAAO;oBACL,IAAI,EAAE,KAAK;oBACX,QAAQ;oBACR,KAAK,EAAE,mDAAmD,OAAO,uDAAuD;iBACzH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG;QACnB,GAAG;QACH,aAAa;QACb,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;KACxB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzB,4CAA4C;IAC5C,0CAA0C;IAC1C,MAAM,eAAe,GAAG,oBAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAErE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,KAAK;YACX,QAAQ;YACR,KAAK,EAAE,mBAAmB,QAAQ,8CAA8C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC1G,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACnE,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO;oBACL,IAAI,EAAE,KAAK;oBACX,QAAQ;oBACR,KAAK,EAAE,uCAAuC,QAAQ,yCAAyC;iBAChG,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mFAAmF;QACrF,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,MAAM,qBAAqB,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAI,qBAAqB,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;gBACvD,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC;oBACpD,OAAO;wBACL,IAAI,EAAE,KAAK;wBACX,QAAQ;wBACR,KAAK,EAAE,8CAA8C,UAAU,yCAAyC;qBACzG,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,iFAAiF;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,YAAuB;IAC1E,OAAO,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,YAAuB;IAC3E,OAAO,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,6BAA6B;IAC7B,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAEjH,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,YAAY,SAAS,6BAA6B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACtF,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,MAAM,gBAAgB,GAAG;QACvB,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;QAC/C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;QACjC,KAAK,EAAE,MAAM,EAAE,OAAO;QACtB,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,OAAO;KACf,CAAC;IAEF,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,sCAAsC,EAAE,CAAC,IAAI,EAAE,0EAA0E;aACjI,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACtE,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBAClG,OAAO;oBACL,IAAI,EAAE,KAAK;oBACX,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,4CAA4C,KAAK,uEAAuE;iBAChI,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACjF,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAuB,EAAE;QAC/D,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3C,CAAC,CAAC;IAEF,IAAI,UAAU,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAClF,UAAU,GAAG,eAAe,CAAC;IAC/B,CAAC;SAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAChC,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;SAAM,IAAI,SAAS,KAAK,MAAM,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9D,UAAU,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACjC,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,iBAAiB,KAAK,qBAAqB,SAAS,CAAC,KAAK,EAAE;aACpE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC3C,CAAC"}
|
package/dist/agents/swarm.d.ts
CHANGED
|
@@ -21,5 +21,7 @@ export interface SwarmSession {
|
|
|
21
21
|
corrections: string[];
|
|
22
22
|
}
|
|
23
23
|
export type SwarmCallback = (step: SwarmStep) => void;
|
|
24
|
+
export declare function getAllowedToolsForAgent(agent: SwarmStep['agent']): readonly string[];
|
|
25
|
+
export declare function isToolAllowedForAgent(agent: SwarmStep['agent'], toolName: string): boolean;
|
|
24
26
|
export declare function runSwarm(task: string, config: LLMConfig, onStep: SwarmCallback, sessionContext?: Record<string, unknown>): Promise<SwarmSession>;
|
|
25
27
|
//# sourceMappingURL=swarm.d.ts.map
|
|
@@ -1 +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;
|
|
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;AA+CtD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS,MAAM,EAAE,CAEpF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1F;AAoSD,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"}
|