@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,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview System hardware detection for automatic Ollama model selection.
|
|
3
|
+
*
|
|
4
|
+
* Detects available RAM/VRAM and selects the largest Qwen3 model the system
|
|
5
|
+
* can comfortably run. Falls back conservatively — better to run a smaller
|
|
6
|
+
* model fast than a larger model that swaps to disk.
|
|
7
|
+
*
|
|
8
|
+
* Memory thresholds (Q4_K_M quantization):
|
|
9
|
+
* qwen3:8b ~5-6 GB → needs ≥8 GB total RAM
|
|
10
|
+
* qwen3:14b ~8-10 GB → needs ≥16 GB total RAM
|
|
11
|
+
* qwen3:32b ~18-22 GB → needs ≥32 GB total RAM
|
|
12
|
+
*/
|
|
13
|
+
import { createLogger } from '@agntk/logger';
|
|
14
|
+
import os from 'node:os';
|
|
15
|
+
import { execSync } from 'node:child_process';
|
|
16
|
+
const log = createLogger('@agntk/core:system-detect');
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Model Tier Definitions
|
|
19
|
+
// ============================================================================
|
|
20
|
+
const MODEL_TIERS = {
|
|
21
|
+
small: {
|
|
22
|
+
tier: 'small',
|
|
23
|
+
fast: 'qwen3:8b',
|
|
24
|
+
standard: 'qwen3:8b',
|
|
25
|
+
reasoning: 'qwen3:8b',
|
|
26
|
+
powerful: 'qwen3:8b',
|
|
27
|
+
},
|
|
28
|
+
medium: {
|
|
29
|
+
tier: 'medium',
|
|
30
|
+
fast: 'qwen3:8b',
|
|
31
|
+
standard: 'qwen3:14b',
|
|
32
|
+
reasoning: 'qwen3:14b',
|
|
33
|
+
powerful: 'qwen3:14b',
|
|
34
|
+
},
|
|
35
|
+
large: {
|
|
36
|
+
tier: 'large',
|
|
37
|
+
fast: 'qwen3:8b',
|
|
38
|
+
standard: 'qwen3:14b',
|
|
39
|
+
reasoning: 'qwen3:32b',
|
|
40
|
+
powerful: 'qwen3:32b',
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// System Detection
|
|
45
|
+
// ============================================================================
|
|
46
|
+
/**
|
|
47
|
+
* Detect whether this is an Apple Silicon Mac.
|
|
48
|
+
*/
|
|
49
|
+
function detectAppleSilicon() {
|
|
50
|
+
if (os.platform() !== 'darwin')
|
|
51
|
+
return false;
|
|
52
|
+
try {
|
|
53
|
+
const brand = execSync('sysctl -n machdep.cpu.brand_string', { encoding: 'utf-8' }).trim();
|
|
54
|
+
return brand.includes('Apple');
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Fallback: check arch
|
|
58
|
+
return os.arch() === 'arm64';
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Try to detect NVIDIA GPU VRAM via nvidia-smi.
|
|
63
|
+
* Returns VRAM in GB or null if no NVIDIA GPU / nvidia-smi not found.
|
|
64
|
+
*/
|
|
65
|
+
function detectNvidiaVRAM() {
|
|
66
|
+
try {
|
|
67
|
+
const output = execSync('nvidia-smi --query-gpu=memory.total --format=csv,noheader,nounits', { encoding: 'utf-8', timeout: 3000 }).trim();
|
|
68
|
+
// nvidia-smi returns MB, could have multiple GPUs — take the first
|
|
69
|
+
const mb = parseInt(output.split('\n')[0], 10);
|
|
70
|
+
if (!isNaN(mb) && mb > 0) {
|
|
71
|
+
return Math.round(mb / 1024 * 10) / 10; // GB with 1 decimal
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Detect system hardware profile.
|
|
81
|
+
*/
|
|
82
|
+
export function detectSystem() {
|
|
83
|
+
const totalBytes = os.totalmem();
|
|
84
|
+
const totalRAMGb = Math.round(totalBytes / (1024 ** 3) * 10) / 10;
|
|
85
|
+
const platform = os.platform();
|
|
86
|
+
const isAppleSilicon = detectAppleSilicon();
|
|
87
|
+
const nvidiaVRAMGb = detectNvidiaVRAM();
|
|
88
|
+
// Calculate usable memory for models:
|
|
89
|
+
// - Reserve ~3 GB for OS + Ollama server overhead
|
|
90
|
+
// - On Apple Silicon: GPU gets ~75% of unified memory, but we're more conservative
|
|
91
|
+
// - On NVIDIA: model loads into VRAM, which is separate from system RAM
|
|
92
|
+
let usableForModelsGb;
|
|
93
|
+
if (nvidiaVRAMGb !== null) {
|
|
94
|
+
// NVIDIA GPU: model goes into VRAM. Use that as the constraint.
|
|
95
|
+
usableForModelsGb = nvidiaVRAMGb - 1; // reserve 1 GB for GPU driver/overhead
|
|
96
|
+
}
|
|
97
|
+
else if (isAppleSilicon) {
|
|
98
|
+
// Apple Silicon: unified memory shared between CPU and GPU.
|
|
99
|
+
// Ollama uses Metal — model sits in unified memory.
|
|
100
|
+
// Reserve ~25% for OS + apps + KV cache growth.
|
|
101
|
+
usableForModelsGb = totalRAMGb * 0.65;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
// CPU-only inference: slower but uses system RAM.
|
|
105
|
+
// Reserve 3 GB for OS overhead.
|
|
106
|
+
usableForModelsGb = totalRAMGb - 3;
|
|
107
|
+
}
|
|
108
|
+
usableForModelsGb = Math.max(0, usableForModelsGb);
|
|
109
|
+
const profile = {
|
|
110
|
+
totalRAMGb,
|
|
111
|
+
usableForModelsGb,
|
|
112
|
+
platform,
|
|
113
|
+
isAppleSilicon,
|
|
114
|
+
nvidiaVRAMGb,
|
|
115
|
+
};
|
|
116
|
+
log.debug('System profile', { ...profile });
|
|
117
|
+
return profile;
|
|
118
|
+
}
|
|
119
|
+
// ============================================================================
|
|
120
|
+
// Model Recommendation
|
|
121
|
+
// ============================================================================
|
|
122
|
+
/**
|
|
123
|
+
* Select the best Ollama model tier based on system capabilities.
|
|
124
|
+
*
|
|
125
|
+
* Thresholds (usable memory for the model weights):
|
|
126
|
+
* < 6 GB → too small, warn user
|
|
127
|
+
* 6-10 GB → small (qwen3:8b everywhere)
|
|
128
|
+
* 10-18 GB → medium (qwen3:14b for standard+)
|
|
129
|
+
* 18+ GB → large (qwen3:32b for reasoning/powerful)
|
|
130
|
+
*/
|
|
131
|
+
export function recommendOllamaModels(profile) {
|
|
132
|
+
const sys = profile || detectSystem();
|
|
133
|
+
const mem = sys.usableForModelsGb;
|
|
134
|
+
if (mem < 4) {
|
|
135
|
+
log.warn('Very limited memory for local models', { usableGb: mem });
|
|
136
|
+
return {
|
|
137
|
+
...MODEL_TIERS.small,
|
|
138
|
+
reason: `Only ${sys.totalRAMGb} GB RAM detected — qwen3:8b may be slow. Consider using the free tier instead.`,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
if (mem < 10) {
|
|
142
|
+
return {
|
|
143
|
+
...MODEL_TIERS.small,
|
|
144
|
+
reason: `${sys.totalRAMGb} GB RAM → qwen3:8b (best fit for your hardware)`,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
if (mem < 18) {
|
|
148
|
+
return {
|
|
149
|
+
...MODEL_TIERS.medium,
|
|
150
|
+
reason: `${sys.totalRAMGb} GB RAM → qwen3:14b for standard tasks, qwen3:8b for fast tasks`,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
...MODEL_TIERS.large,
|
|
155
|
+
reason: `${sys.totalRAMGb} GB RAM → qwen3:32b for reasoning/powerful, qwen3:14b for standard`,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
// ============================================================================
|
|
159
|
+
// Ollama Model Availability
|
|
160
|
+
// ============================================================================
|
|
161
|
+
/**
|
|
162
|
+
* Check which models Ollama already has pulled.
|
|
163
|
+
*/
|
|
164
|
+
export async function getOllamaModels(baseUrl) {
|
|
165
|
+
const url = baseUrl || process.env['OLLAMA_BASE_URL'] || 'http://localhost:11434';
|
|
166
|
+
const controller = new AbortController();
|
|
167
|
+
const timeout = setTimeout(() => controller.abort(), 2000);
|
|
168
|
+
try {
|
|
169
|
+
const res = await fetch(`${url}/api/tags`, {
|
|
170
|
+
signal: controller.signal,
|
|
171
|
+
method: 'GET',
|
|
172
|
+
});
|
|
173
|
+
clearTimeout(timeout);
|
|
174
|
+
if (!res.ok)
|
|
175
|
+
return [];
|
|
176
|
+
const data = (await res.json());
|
|
177
|
+
return (data.models || []).map((m) => m.name);
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
clearTimeout(timeout);
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Check if a specific model is available in Ollama.
|
|
186
|
+
*/
|
|
187
|
+
export async function hasOllamaModel(model, baseUrl) {
|
|
188
|
+
const models = await getOllamaModels(baseUrl);
|
|
189
|
+
// Normalize: "qwen3:8b" should match "qwen3:8b" and "qwen3:8b-q4_K_M"
|
|
190
|
+
const normalized = model.toLowerCase();
|
|
191
|
+
return models.some((m) => m.toLowerCase().startsWith(normalized));
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=system-detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-detect.js","sourceRoot":"","sources":["../src/system-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,GAAG,GAAG,YAAY,CAAC,2BAA2B,CAAC,CAAC;AAiCtD,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,MAAM,WAAW,GAAuE;IACtF,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,UAAU;QACrB,QAAQ,EAAE,UAAU;KACrB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,WAAW;QACtB,QAAQ,EAAE,WAAW;KACtB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,WAAW;QACtB,QAAQ,EAAE,WAAW;KACtB;CACF,CAAC;AAEF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,kBAAkB;IACzB,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,oCAAoC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3F,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;QACvB,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CACrB,mEAAmE,EACnE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CACrC,CAAC,IAAI,EAAE,CAAC;QACT,mEAAmE;QACnE,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,oBAAoB;QAC9D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,MAAM,cAAc,GAAG,kBAAkB,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC;IAExC,sCAAsC;IACtC,kDAAkD;IAClD,mFAAmF;IACnF,wEAAwE;IACxE,IAAI,iBAAyB,CAAC;IAE9B,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,gEAAgE;QAChE,iBAAiB,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,uCAAuC;IAC/E,CAAC;SAAM,IAAI,cAAc,EAAE,CAAC;QAC1B,4DAA4D;QAC5D,oDAAoD;QACpD,gDAAgD;QAChD,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,kDAAkD;QAClD,gCAAgC;QAChC,iBAAiB,GAAG,UAAU,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAkB;QAC7B,UAAU;QACV,iBAAiB;QACjB,QAAQ;QACR,cAAc;QACd,YAAY;KACb,CAAC;IAEF,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,MAAM,GAAG,GAAG,OAAO,IAAI,YAAY,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,GAAG,CAAC,iBAAiB,CAAC;IAElC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACpE,OAAO;YACL,GAAG,WAAW,CAAC,KAAK;YACpB,MAAM,EAAE,QAAQ,GAAG,CAAC,UAAU,gFAAgF;SAC/G,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;QACb,OAAO;YACL,GAAG,WAAW,CAAC,KAAK;YACpB,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,iDAAiD;SAC3E,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;QACb,OAAO;YACL,GAAG,WAAW,CAAC,MAAM;YACrB,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,iEAAiE;SAC3F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,WAAW,CAAC,KAAK;QACpB,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,oEAAoE;KAC9F,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAgB;IACpD,MAAM,GAAG,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,wBAAwB,CAAC;IAClF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IAE3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,WAAW,EAAE;YACzC,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,CAAC;QAEtB,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,OAAgB;IAClE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,sEAAsE;IACtE,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -14,8 +14,8 @@ export declare function executeBrowserCommand(args: string[], timeout?: number):
|
|
|
14
14
|
durationMs: number;
|
|
15
15
|
}>;
|
|
16
16
|
export declare function createBrowserTool(config?: BrowserConfig): import("ai").Tool<{
|
|
17
|
-
url: string;
|
|
18
17
|
action: "open";
|
|
18
|
+
url: string;
|
|
19
19
|
} | {
|
|
20
20
|
action: "snapshot";
|
|
21
21
|
interactive?: boolean | undefined;
|
|
@@ -78,8 +78,8 @@ export declare function createBrowserTool(config?: BrowserConfig): import("ai").
|
|
|
78
78
|
action: "close";
|
|
79
79
|
}, string>;
|
|
80
80
|
export declare const browserTool: import("ai").Tool<{
|
|
81
|
-
url: string;
|
|
82
81
|
action: "open";
|
|
82
|
+
url: string;
|
|
83
83
|
} | {
|
|
84
84
|
action: "snapshot";
|
|
85
85
|
interactive?: boolean | undefined;
|
|
@@ -7,11 +7,11 @@ export declare const browserInputSchema: z.ZodDiscriminatedUnion<"action", [z.Zo
|
|
|
7
7
|
action: z.ZodLiteral<"open">;
|
|
8
8
|
url: z.ZodString;
|
|
9
9
|
}, "strip", z.ZodTypeAny, {
|
|
10
|
-
url: string;
|
|
11
10
|
action: "open";
|
|
12
|
-
}, {
|
|
13
11
|
url: string;
|
|
12
|
+
}, {
|
|
14
13
|
action: "open";
|
|
14
|
+
url: string;
|
|
15
15
|
}>, z.ZodObject<{
|
|
16
16
|
action: z.ZodLiteral<"snapshot">;
|
|
17
17
|
interactive: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/tools/file/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/tools/file/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuFH,wBAAgB,kBAAkB,CAAC,aAAa,GAAE,MAAsB;;;;WAqCvE;AAcD,wBAAgB,mBAAmB,CAAC,aAAa,GAAE,MAAsB;;;WAsBxE;AAiBD,wBAAgB,kBAAkB,CAAC,aAAa,GAAE,MAAsB;;;;WAsCvE;AAeD,wBAAgB,oBAAoB,CAAC,aAAa,GAAE,MAAsB;;;WA0BzE;AAMD,wBAAgB,eAAe,CAAC,aAAa,GAAE,MAAsB;;;;;;;;;;;;;;;;;;;EAOpE"}
|
package/dist/tools/file/tools.js
CHANGED
|
@@ -39,7 +39,32 @@ function resolveAndValidatePath(filePath, workspaceRoot) {
|
|
|
39
39
|
if (!realResolved.startsWith(realWorkspace + path.sep) && realResolved !== realWorkspace) {
|
|
40
40
|
throw new Error(`Path "${filePath}" is outside workspace root`);
|
|
41
41
|
}
|
|
42
|
-
return
|
|
42
|
+
// F-1 fix: return the canonical (realpath) so all subsequent I/O uses the
|
|
43
|
+
// resolved target, not the original path that could race with symlink changes.
|
|
44
|
+
return realResolved;
|
|
45
|
+
}
|
|
46
|
+
// ============================================================================
|
|
47
|
+
// Sensitive Path Blocklist (A-2)
|
|
48
|
+
// ============================================================================
|
|
49
|
+
/**
|
|
50
|
+
* Patterns for paths that must never be read by the agent.
|
|
51
|
+
* Prevents accidental exposure of credentials and private keys.
|
|
52
|
+
*/
|
|
53
|
+
const SENSITIVE_PATH_PATTERNS = [
|
|
54
|
+
/\/\.env(\.|$)/, // .env, .env.local, .env.production, etc.
|
|
55
|
+
/\/\.ssh\//, // ~/.ssh/ directory
|
|
56
|
+
/authorized_keys$/,
|
|
57
|
+
/id_rsa(\.pub)?$/,
|
|
58
|
+
/id_ed25519(\.pub)?$/,
|
|
59
|
+
/id_ecdsa(\.pub)?$/,
|
|
60
|
+
/id_dsa(\.pub)?$/,
|
|
61
|
+
/\/\.netrc$/,
|
|
62
|
+
/\/\.pgpass$/,
|
|
63
|
+
/\/\.aws\/credentials$/,
|
|
64
|
+
/\/\.aws\/config$/,
|
|
65
|
+
];
|
|
66
|
+
function isSensitivePath(resolvedPath) {
|
|
67
|
+
return SENSITIVE_PATH_PATTERNS.some((p) => p.test(resolvedPath));
|
|
43
68
|
}
|
|
44
69
|
// ============================================================================
|
|
45
70
|
// file_read
|
|
@@ -59,6 +84,10 @@ export function createFileReadTool(workspaceRoot = process.cwd()) {
|
|
|
59
84
|
execute: async ({ path: filePath, startLine, endLine }) => {
|
|
60
85
|
try {
|
|
61
86
|
const resolved = resolveAndValidatePath(filePath, workspaceRoot);
|
|
87
|
+
// A-2: Block access to sensitive credential files
|
|
88
|
+
if (isSensitivePath(resolved)) {
|
|
89
|
+
return error(`Reading sensitive paths is not permitted: ${filePath}`);
|
|
90
|
+
}
|
|
62
91
|
if (!fs.existsSync(resolved)) {
|
|
63
92
|
return error(`File not found: ${filePath}`);
|
|
64
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/file/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEtD,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,SAAS,sBAAsB,CAAC,QAAgB,EAAE,aAAqB;IACrE,yDAAyD;IACzD,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACvD,8DAA8D;IAC9D,gEAAgE;IAChE,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IAEnE,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACH,sDAAsD;QACtD,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;QAC9E,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;YACrF,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,6BAA6B,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,qEAAqE;IACrE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,6BAA6B,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/file/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Central export for tool factory, provider, and utilities.
|
|
5
5
|
*/
|
|
6
|
-
export { ToolFactory, defaultToolFactory, mergeToolSets, filterTools, excludeTools, getToolNames, type ToolDependencies, type ToolSet, type ToolCreator, } from './factory.js';
|
|
7
6
|
export { globTool, createGlobTool, runRgFiles, formatGlobResult, type GlobOptions, type GlobResult, type FileMatch, } from './glob/index.js';
|
|
8
7
|
export { grepTool, createGrepTool, runRg, runRgCount, formatGrepResult, formatCountResult, downloadAndInstallRipgrep, type GrepOptions, type GrepMatch, type GrepResult, type CountResult, } from './grep/index.js';
|
|
9
8
|
export { astGrepSearchTool, astGrepReplaceTool, createAstGrepTools, runSg, ensureAstGrepBinary, formatSearchResult, formatReplaceResult, type CliLanguage, type CliMatch, type SgResult, type SearchMatch, } from './ast-grep/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,GACf,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,IAAI,EACT,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,6BAA6B,EAC7B,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,GAChB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGxG,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,WAAW,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Central export for tool factory, provider, and utilities.
|
|
5
5
|
*/
|
|
6
|
-
// Factory
|
|
7
|
-
export { ToolFactory, defaultToolFactory, mergeToolSets, filterTools, excludeTools, getToolNames, } from './factory.js';
|
|
8
6
|
// Glob Tool
|
|
9
7
|
export { globTool, createGlobTool, runRgFiles, formatGlobResult, } from './glob/index.js';
|
|
10
8
|
// Grep Tool
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY;AACZ,OAAO,EACL,QAAQ,EACR,cAAc,EACd,UAAU,EACV,gBAAgB,GAIjB,MAAM,QAAQ,CAAC;AAEhB,YAAY;AACZ,OAAO,EACL,QAAQ,EACR,cAAc,EACd,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,GAK1B,MAAM,QAAQ,CAAC;AAEhB,gBAAgB;AAChB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GAKpB,MAAM,YAAY,CAAC;AAEpB,aAAa;AACb,OAAO,EACL,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,oBAAoB,GAGrB,MAAM,SAAS,CAAC;AAEjB,YAAY;AACZ,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GASjB,MAAM,QAAQ,CAAC;AAEhB,sBAAsB;AACtB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,6BAA6B,EAC7B,mBAAmB,EACnB,uBAAuB,GAKxB,MAAM,kBAAkB,CAAC;AAE1B,aAAa;AACb,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,GAChB,MAAM,QAAQ,CAAC;AAEhB,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,cAAc;AACd,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,qBAAqB;AACrB,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAA+B,MAAM,iBAAiB,CAAC;AAExG,eAAe;AACf,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iBAAiB,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,eAAe;AACf,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,wBAAwB,GAKzB,MAAM,WAAW,CAAC"}
|
|
@@ -40,8 +40,8 @@ export interface ProgressData {
|
|
|
40
40
|
export declare function createProgressTools(workspaceRoot: string): {
|
|
41
41
|
progress_read: import("ai").Tool<{}, string>;
|
|
42
42
|
progress_update: import("ai").Tool<{
|
|
43
|
-
sessionId?: string | undefined;
|
|
44
43
|
action?: string | undefined;
|
|
44
|
+
sessionId?: string | undefined;
|
|
45
45
|
featureId?: string | undefined;
|
|
46
46
|
featureName?: string | undefined;
|
|
47
47
|
featureStatus?: "blocked" | "completed" | "pending" | "in_progress" | undefined;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Tool Provider
|
|
3
|
+
*
|
|
4
|
+
* Central provider for creating and managing tool sets.
|
|
5
|
+
* Adapted from packages/core/src/tools/provider.ts
|
|
6
|
+
*/
|
|
7
|
+
import { type ToolSet } from './factory.js';
|
|
8
|
+
/**
|
|
9
|
+
* Names of core tools that are always available.
|
|
10
|
+
*/
|
|
11
|
+
export declare const CORE_TOOL_NAMES: readonly ["fs", "shell", "web", "memory", "delegate", "task", "plan", "validate", "reasoning"];
|
|
12
|
+
export type CoreToolName = (typeof CORE_TOOL_NAMES)[number];
|
|
13
|
+
export interface ToolProviderConfig {
|
|
14
|
+
/** Workspace root directory */
|
|
15
|
+
workspaceRoot?: string;
|
|
16
|
+
/** Allowed directories for file operations */
|
|
17
|
+
allowedDirectories?: string[];
|
|
18
|
+
/** Enable tool execution instrumentation/logging */
|
|
19
|
+
enableInstrumentation?: boolean;
|
|
20
|
+
/** Enable dynamic tool activation/deactivation */
|
|
21
|
+
enableActivation?: boolean;
|
|
22
|
+
/** Custom tool dependencies */
|
|
23
|
+
customDependencies?: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
export interface ToolActivationManager {
|
|
26
|
+
/** Currently active tool names */
|
|
27
|
+
activeTools: Set<string>;
|
|
28
|
+
/** All available tool names */
|
|
29
|
+
availableTools: Set<string>;
|
|
30
|
+
/** Activate a tool */
|
|
31
|
+
activate(name: string): boolean;
|
|
32
|
+
/** Deactivate a tool */
|
|
33
|
+
deactivate(name: string): boolean;
|
|
34
|
+
/** Check if a tool is active */
|
|
35
|
+
isActive(name: string): boolean;
|
|
36
|
+
/** Get all active tools */
|
|
37
|
+
getActiveTools(): string[];
|
|
38
|
+
/** Set available tools */
|
|
39
|
+
setAvailableTools(names: string[]): void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a tool activation manager.
|
|
43
|
+
*/
|
|
44
|
+
export declare function createToolActivationManager(): ToolActivationManager;
|
|
45
|
+
export interface ToolRegistryEntry {
|
|
46
|
+
name: string;
|
|
47
|
+
description: string;
|
|
48
|
+
category: string;
|
|
49
|
+
tags: string[];
|
|
50
|
+
}
|
|
51
|
+
export interface ToolRegistry {
|
|
52
|
+
entries: Map<string, ToolRegistryEntry>;
|
|
53
|
+
register(entry: ToolRegistryEntry): void;
|
|
54
|
+
unregister(name: string): boolean;
|
|
55
|
+
get(name: string): ToolRegistryEntry | undefined;
|
|
56
|
+
search(query: string): ToolRegistryEntry[];
|
|
57
|
+
listByCategory(category: string): ToolRegistryEntry[];
|
|
58
|
+
listAll(): ToolRegistryEntry[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create a tool registry for metadata and search.
|
|
62
|
+
*/
|
|
63
|
+
export declare function createToolRegistry(): ToolRegistry;
|
|
64
|
+
export interface ToolProviderResult {
|
|
65
|
+
/** All created tools */
|
|
66
|
+
tools: ToolSet;
|
|
67
|
+
/** Core tool names */
|
|
68
|
+
coreToolNames: readonly string[];
|
|
69
|
+
/** Activation manager instance */
|
|
70
|
+
activationManager: ToolActivationManager;
|
|
71
|
+
/** Registry instance */
|
|
72
|
+
registry: ToolRegistry;
|
|
73
|
+
/** Cleanup function */
|
|
74
|
+
cleanup: () => Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Wrap tools with instrumentation for logging and metrics.
|
|
78
|
+
*/
|
|
79
|
+
export declare function instrumentTools(tools: ToolSet): ToolSet;
|
|
80
|
+
/**
|
|
81
|
+
* Create all tools with the given configuration.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* const { tools, cleanup } = await createAllTools({
|
|
86
|
+
* workspaceRoot: process.cwd(),
|
|
87
|
+
* enableInstrumentation: true,
|
|
88
|
+
* });
|
|
89
|
+
*
|
|
90
|
+
* // Use tools...
|
|
91
|
+
*
|
|
92
|
+
* await cleanup();
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export declare function createAllTools(config?: ToolProviderConfig): Promise<ToolProviderResult>;
|
|
96
|
+
export { ToolFactory, type ToolDependencies, type ToolSet } from './factory.js';
|
|
97
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/tools/provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAsC,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAM7E;;GAEG;AACH,eAAO,MAAM,eAAe,gGAUlB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAM5D,MAAM,WAAW,kBAAkB;IACjC,+BAA+B;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,oDAAoD;IACpD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,+BAA+B;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAMD,MAAM,WAAW,qBAAqB;IACpC,kCAAkC;IAClC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,+BAA+B;IAC/B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAE5B,sBAAsB;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,wBAAwB;IACxB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,2BAA2B;IAC3B,cAAc,IAAI,MAAM,EAAE,CAAC;IAC3B,0BAA0B;IAC1B,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,CAqCnE;AAMD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACzC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAC;IAC3C,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACtD,OAAO,IAAI,iBAAiB,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAsCjD;AAMD,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,sBAAsB;IACtB,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,kCAAkC;IAClC,iBAAiB,EAAE,qBAAqB,CAAC;IACzC,wBAAwB;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,uBAAuB;IACvB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA6BvD;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAClC,MAAM,GAAE,kBAAuB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CA4C7B;AAMD,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Tool Provider
|
|
3
|
+
*
|
|
4
|
+
* Central provider for creating and managing tool sets.
|
|
5
|
+
* Adapted from packages/core/src/tools/provider.ts
|
|
6
|
+
*/
|
|
7
|
+
import { ToolFactory } from './factory.js';
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Core Tool Names
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Names of core tools that are always available.
|
|
13
|
+
*/
|
|
14
|
+
export const CORE_TOOL_NAMES = [
|
|
15
|
+
'fs',
|
|
16
|
+
'shell',
|
|
17
|
+
'web',
|
|
18
|
+
'memory',
|
|
19
|
+
'delegate',
|
|
20
|
+
'task',
|
|
21
|
+
'plan',
|
|
22
|
+
'validate',
|
|
23
|
+
'reasoning',
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Create a tool activation manager.
|
|
27
|
+
*/
|
|
28
|
+
export function createToolActivationManager() {
|
|
29
|
+
const activeTools = new Set();
|
|
30
|
+
const availableTools = new Set();
|
|
31
|
+
return {
|
|
32
|
+
activeTools,
|
|
33
|
+
availableTools,
|
|
34
|
+
activate(name) {
|
|
35
|
+
if (!availableTools.has(name)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
activeTools.add(name);
|
|
39
|
+
return true;
|
|
40
|
+
},
|
|
41
|
+
deactivate(name) {
|
|
42
|
+
return activeTools.delete(name);
|
|
43
|
+
},
|
|
44
|
+
isActive(name) {
|
|
45
|
+
return activeTools.has(name);
|
|
46
|
+
},
|
|
47
|
+
getActiveTools() {
|
|
48
|
+
return Array.from(activeTools);
|
|
49
|
+
},
|
|
50
|
+
setAvailableTools(names) {
|
|
51
|
+
availableTools.clear();
|
|
52
|
+
for (const name of names) {
|
|
53
|
+
availableTools.add(name);
|
|
54
|
+
// Activate all by default
|
|
55
|
+
activeTools.add(name);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create a tool registry for metadata and search.
|
|
62
|
+
*/
|
|
63
|
+
export function createToolRegistry() {
|
|
64
|
+
const entries = new Map();
|
|
65
|
+
return {
|
|
66
|
+
entries,
|
|
67
|
+
register(entry) {
|
|
68
|
+
entries.set(entry.name, entry);
|
|
69
|
+
},
|
|
70
|
+
unregister(name) {
|
|
71
|
+
return entries.delete(name);
|
|
72
|
+
},
|
|
73
|
+
get(name) {
|
|
74
|
+
return entries.get(name);
|
|
75
|
+
},
|
|
76
|
+
search(query) {
|
|
77
|
+
const lowerQuery = query.toLowerCase();
|
|
78
|
+
return Array.from(entries.values()).filter((entry) => entry.name.toLowerCase().includes(lowerQuery) ||
|
|
79
|
+
entry.description.toLowerCase().includes(lowerQuery) ||
|
|
80
|
+
entry.tags.some((tag) => tag.toLowerCase().includes(lowerQuery)));
|
|
81
|
+
},
|
|
82
|
+
listByCategory(category) {
|
|
83
|
+
return Array.from(entries.values()).filter((entry) => entry.category === category);
|
|
84
|
+
},
|
|
85
|
+
listAll() {
|
|
86
|
+
return Array.from(entries.values());
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// ============================================================================
|
|
91
|
+
// Tool Instrumentation
|
|
92
|
+
// ============================================================================
|
|
93
|
+
/**
|
|
94
|
+
* Wrap tools with instrumentation for logging and metrics.
|
|
95
|
+
*/
|
|
96
|
+
export function instrumentTools(tools) {
|
|
97
|
+
const instrumented = {};
|
|
98
|
+
for (const [name, tool] of Object.entries(tools)) {
|
|
99
|
+
if (!tool.execute) {
|
|
100
|
+
instrumented[name] = tool;
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const originalExecute = tool.execute;
|
|
104
|
+
instrumented[name] = {
|
|
105
|
+
...tool,
|
|
106
|
+
execute: async (input, options) => {
|
|
107
|
+
const startTime = Date.now();
|
|
108
|
+
try {
|
|
109
|
+
const result = await originalExecute(input, options);
|
|
110
|
+
const duration = Date.now() - startTime;
|
|
111
|
+
console.debug(`[tool:${name}] completed in ${duration}ms`);
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
const duration = Date.now() - startTime;
|
|
116
|
+
console.error(`[tool:${name}] failed after ${duration}ms`, error);
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
return instrumented;
|
|
123
|
+
}
|
|
124
|
+
// ============================================================================
|
|
125
|
+
// Create All Tools
|
|
126
|
+
// ============================================================================
|
|
127
|
+
/**
|
|
128
|
+
* Create all tools with the given configuration.
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* const { tools, cleanup } = await createAllTools({
|
|
133
|
+
* workspaceRoot: process.cwd(),
|
|
134
|
+
* enableInstrumentation: true,
|
|
135
|
+
* });
|
|
136
|
+
*
|
|
137
|
+
* // Use tools...
|
|
138
|
+
*
|
|
139
|
+
* await cleanup();
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export async function createAllTools(config = {}) {
|
|
143
|
+
const { workspaceRoot = process.cwd(), allowedDirectories = [workspaceRoot], enableInstrumentation = true, enableActivation = false, customDependencies = {}, } = config;
|
|
144
|
+
const deps = {
|
|
145
|
+
workspaceRoot,
|
|
146
|
+
allowedDirectories,
|
|
147
|
+
context: customDependencies,
|
|
148
|
+
};
|
|
149
|
+
const activationManager = createToolActivationManager();
|
|
150
|
+
const registry = createToolRegistry();
|
|
151
|
+
const factory = new ToolFactory();
|
|
152
|
+
// Note: Individual tool creators will be registered by the tools themselves
|
|
153
|
+
// when they are imported. For now, return an empty tool set that will be
|
|
154
|
+
// populated when tools are migrated.
|
|
155
|
+
let tools = factory.createAll(deps);
|
|
156
|
+
// Set available tools in activation manager
|
|
157
|
+
activationManager.setAvailableTools(Object.keys(tools));
|
|
158
|
+
// Apply instrumentation if enabled
|
|
159
|
+
if (enableInstrumentation) {
|
|
160
|
+
tools = instrumentTools(tools);
|
|
161
|
+
}
|
|
162
|
+
const cleanup = async () => {
|
|
163
|
+
// Cleanup logic (close connections, release resources, etc.)
|
|
164
|
+
factory.clear();
|
|
165
|
+
};
|
|
166
|
+
return {
|
|
167
|
+
tools,
|
|
168
|
+
coreToolNames: CORE_TOOL_NAMES,
|
|
169
|
+
activationManager,
|
|
170
|
+
registry,
|
|
171
|
+
cleanup,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
// ============================================================================
|
|
175
|
+
// Exports
|
|
176
|
+
// ============================================================================
|
|
177
|
+
export { ToolFactory } from './factory.js';
|
|
178
|
+
//# sourceMappingURL=provider.js.map
|