@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.
Files changed (83) hide show
  1. package/dist/agents/brain.d.ts +1 -0
  2. package/dist/agents/brain.d.ts.map +1 -1
  3. package/dist/agents/brain.js +39 -38
  4. package/dist/agents/brain.js.map +1 -1
  5. package/dist/agents/bridge-tools.js +15 -3
  6. package/dist/agents/bridge-tools.js.map +1 -1
  7. package/dist/agents/case-file.d.ts +52 -0
  8. package/dist/agents/case-file.d.ts.map +1 -0
  9. package/dist/agents/case-file.js +657 -0
  10. package/dist/agents/case-file.js.map +1 -0
  11. package/dist/agents/contracts.d.ts +232 -0
  12. package/dist/agents/contracts.d.ts.map +1 -0
  13. package/dist/agents/contracts.js +14 -0
  14. package/dist/agents/contracts.js.map +1 -0
  15. package/dist/agents/data-tools.js +11 -3
  16. package/dist/agents/data-tools.js.map +1 -1
  17. package/dist/agents/deliverable-tools.d.ts +2 -0
  18. package/dist/agents/deliverable-tools.d.ts.map +1 -0
  19. package/dist/agents/deliverable-tools.js +497 -0
  20. package/dist/agents/deliverable-tools.js.map +1 -0
  21. package/dist/agents/evidence.d.ts +21 -0
  22. package/dist/agents/evidence.d.ts.map +1 -0
  23. package/dist/agents/evidence.js +302 -0
  24. package/dist/agents/evidence.js.map +1 -0
  25. package/dist/agents/orchestrator.js +13 -13
  26. package/dist/agents/sandbox.d.ts.map +1 -1
  27. package/dist/agents/sandbox.js +84 -31
  28. package/dist/agents/sandbox.js.map +1 -1
  29. package/dist/agents/swarm.d.ts +2 -0
  30. package/dist/agents/swarm.d.ts.map +1 -1
  31. package/dist/agents/swarm.js +170 -149
  32. package/dist/agents/swarm.js.map +1 -1
  33. package/dist/bridge/index.js +87 -87
  34. package/dist/geo/index.d.ts +2 -1
  35. package/dist/geo/index.d.ts.map +1 -1
  36. package/dist/geo/index.js +1 -0
  37. package/dist/geo/index.js.map +1 -1
  38. package/dist/geo/pile-capacity.d.ts.map +1 -1
  39. package/dist/geo/pile-capacity.js +47 -8
  40. package/dist/geo/pile-capacity.js.map +1 -1
  41. package/dist/geo/seepage.d.ts +62 -0
  42. package/dist/geo/seepage.d.ts.map +1 -0
  43. package/dist/geo/seepage.js +130 -0
  44. package/dist/geo/seepage.js.map +1 -0
  45. package/dist/geo/slope-stability.d.ts.map +1 -1
  46. package/dist/geo/slope-stability.js +9 -6
  47. package/dist/geo/slope-stability.js.map +1 -1
  48. package/dist/index.d.ts +5 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +6 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/llm/middleware/metering.js +14 -14
  53. package/dist/llm/providers/hosted-beta.d.ts.map +1 -1
  54. package/dist/llm/providers/hosted-beta.js +5 -2
  55. package/dist/llm/providers/hosted-beta.js.map +1 -1
  56. package/dist/llm/providers/zhipu.d.ts.map +1 -1
  57. package/dist/llm/providers/zhipu.js +3 -1
  58. package/dist/llm/providers/zhipu.js.map +1 -1
  59. package/dist/llm/util.d.ts +10 -0
  60. package/dist/llm/util.d.ts.map +1 -0
  61. package/dist/llm/util.js +54 -0
  62. package/dist/llm/util.js.map +1 -0
  63. package/dist/meta/metadata.json +4 -4
  64. package/dist/report/casefile.d.ts +207 -0
  65. package/dist/report/casefile.d.ts.map +1 -0
  66. package/dist/report/casefile.js +438 -0
  67. package/dist/report/casefile.js.map +1 -0
  68. package/dist/report/docx.d.ts +3 -0
  69. package/dist/report/docx.d.ts.map +1 -0
  70. package/dist/report/docx.js +178 -0
  71. package/dist/report/docx.js.map +1 -0
  72. package/dist/report/index.d.ts +3 -0
  73. package/dist/report/index.d.ts.map +1 -1
  74. package/dist/report/index.js +23 -20
  75. package/dist/report/index.js.map +1 -1
  76. package/dist/report/pdf.d.ts +3 -0
  77. package/dist/report/pdf.d.ts.map +1 -0
  78. package/dist/report/pdf.js +195 -0
  79. package/dist/report/pdf.js.map +1 -0
  80. package/dist/vision/index.d.ts.map +1 -1
  81. package/dist/vision/index.js +163 -84
  82. package/dist/vision/index.js.map +1 -1
  83. 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;AAMD,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,CAqFd;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,CA4DlE"}
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"}
@@ -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.some((zone) => {
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 = allowedZones.some((zone) => realPath.startsWith(zone + sep) || realPath === zone);
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 firstWord = trimmed.split(/\s+/)[0];
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
- // 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)) {
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(', ')}, python <script.py>`,
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":"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"}
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/agents/sandbox.ts"],"names":[],"mappings":"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"}
@@ -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;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"}
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"}