@dot-ai/core 0.5.2 → 0.7.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/boot-cache.d.ts +40 -0
- package/dist/boot-cache.d.ts.map +1 -0
- package/dist/boot-cache.js +72 -0
- package/dist/boot-cache.js.map +1 -0
- package/dist/capabilities.d.ts +35 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +17 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/config.d.ts +7 -23
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +131 -108
- package/dist/config.js.map +1 -1
- package/dist/extension-api.d.ts +65 -0
- package/dist/extension-api.d.ts.map +1 -0
- package/dist/extension-api.js +2 -0
- package/dist/extension-api.js.map +1 -0
- package/dist/extension-loader.d.ts +19 -0
- package/dist/extension-loader.d.ts.map +1 -0
- package/dist/extension-loader.js +113 -0
- package/dist/extension-loader.js.map +1 -0
- package/dist/extension-runner.d.ts +62 -0
- package/dist/extension-runner.d.ts.map +1 -0
- package/dist/extension-runner.js +260 -0
- package/dist/extension-runner.js.map +1 -0
- package/dist/extension-types.d.ts +312 -0
- package/dist/extension-types.d.ts.map +1 -0
- package/dist/extension-types.js +89 -0
- package/dist/extension-types.js.map +1 -0
- package/dist/format.d.ts +13 -1
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +131 -15
- package/dist/format.js.map +1 -1
- package/dist/format.spec.d.ts +2 -0
- package/dist/format.spec.d.ts.map +1 -0
- package/dist/format.spec.js +140 -0
- package/dist/format.spec.js.map +1 -0
- package/dist/index.d.ts +21 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -14
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/package-manager.d.ts +30 -0
- package/dist/package-manager.d.ts.map +1 -0
- package/dist/package-manager.js +91 -0
- package/dist/package-manager.js.map +1 -0
- package/dist/runtime.d.ts +119 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +441 -0
- package/dist/runtime.js.map +1 -0
- package/dist/types.d.ts +29 -10
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -1
- package/src/__tests__/capabilities.test.ts +72 -0
- package/src/__tests__/config.test.ts +22 -120
- package/src/__tests__/extension-loader.test.ts +84 -0
- package/src/__tests__/extension-runner.test.ts +228 -0
- package/src/__tests__/fixtures/extensions/ctx-aware.js +26 -0
- package/src/__tests__/fixtures/extensions/security-gate.js +20 -0
- package/src/__tests__/fixtures/extensions/session-analytics.js +28 -0
- package/src/__tests__/fixtures/extensions/smart-context.js +10 -0
- package/src/__tests__/format.test.ts +207 -2
- package/src/__tests__/runtime.test.ts +141 -0
- package/src/boot-cache.ts +104 -0
- package/src/capabilities.ts +49 -0
- package/src/config.ts +131 -133
- package/src/extension-api.ts +99 -0
- package/src/extension-loader.ts +127 -0
- package/src/extension-runner.ts +297 -0
- package/src/extension-types.ts +416 -0
- package/src/format.spec.ts +175 -0
- package/src/format.test.ts +218 -0
- package/src/format.ts +140 -16
- package/src/index.ts +68 -30
- package/src/logger.ts +1 -1
- package/src/package-manager.ts +119 -0
- package/src/runtime.ts +562 -0
- package/src/types.ts +36 -14
- package/tsconfig.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/.ai/memory/2026-03-04.md +0 -2
- package/.ai/tasks.json +0 -7
- package/dist/__tests__/config.test.d.ts +0 -2
- package/dist/__tests__/config.test.d.ts.map +0 -1
- package/dist/__tests__/config.test.js +0 -128
- package/dist/__tests__/config.test.js.map +0 -1
- package/dist/__tests__/e2e.test.d.ts +0 -2
- package/dist/__tests__/e2e.test.d.ts.map +0 -1
- package/dist/__tests__/e2e.test.js +0 -211
- package/dist/__tests__/e2e.test.js.map +0 -1
- package/dist/__tests__/engine.test.d.ts +0 -2
- package/dist/__tests__/engine.test.d.ts.map +0 -1
- package/dist/__tests__/engine.test.js +0 -271
- package/dist/__tests__/engine.test.js.map +0 -1
- package/dist/__tests__/format.test.d.ts +0 -2
- package/dist/__tests__/format.test.d.ts.map +0 -1
- package/dist/__tests__/format.test.js +0 -200
- package/dist/__tests__/format.test.js.map +0 -1
- package/dist/__tests__/labels.test.d.ts +0 -2
- package/dist/__tests__/labels.test.d.ts.map +0 -1
- package/dist/__tests__/labels.test.js +0 -82
- package/dist/__tests__/labels.test.js.map +0 -1
- package/dist/__tests__/loader.test.d.ts +0 -2
- package/dist/__tests__/loader.test.d.ts.map +0 -1
- package/dist/__tests__/loader.test.js +0 -161
- package/dist/__tests__/loader.test.js.map +0 -1
- package/dist/__tests__/logger.test.d.ts +0 -2
- package/dist/__tests__/logger.test.d.ts.map +0 -1
- package/dist/__tests__/logger.test.js +0 -95
- package/dist/__tests__/logger.test.js.map +0 -1
- package/dist/__tests__/nodes.test.d.ts +0 -2
- package/dist/__tests__/nodes.test.d.ts.map +0 -1
- package/dist/__tests__/nodes.test.js +0 -83
- package/dist/__tests__/nodes.test.js.map +0 -1
- package/dist/contracts.d.ts +0 -56
- package/dist/contracts.d.ts.map +0 -1
- package/dist/contracts.js +0 -2
- package/dist/contracts.js.map +0 -1
- package/dist/engine.d.ts +0 -38
- package/dist/engine.d.ts.map +0 -1
- package/dist/engine.js +0 -88
- package/dist/engine.js.map +0 -1
- package/dist/loader.d.ts +0 -26
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -120
- package/dist/loader.js.map +0 -1
- package/src/__tests__/e2e.test.ts +0 -257
- package/src/__tests__/engine.test.ts +0 -305
- package/src/__tests__/loader.test.ts +0 -191
- package/src/contracts.ts +0 -71
- package/src/engine.ts +0 -145
- package/src/loader.ts +0 -152
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
import { loadConfig } from './config.js';
|
|
2
|
+
import { computeChecksum, loadBootCache, writeBootCache } from './boot-cache.js';
|
|
3
|
+
import { toolDefinitionToCapability } from './capabilities.js';
|
|
4
|
+
import { discoverExtensions, createV6CollectorAPI } from './extension-loader.js';
|
|
5
|
+
import { ExtensionRunner, EventBus } from './extension-runner.js';
|
|
6
|
+
import { NoopLogger } from './logger.js';
|
|
7
|
+
import { extractLabels } from './labels.js';
|
|
8
|
+
/**
|
|
9
|
+
* DotAiRuntime — encapsulates the full extension-based pipeline lifecycle.
|
|
10
|
+
* Boot once, process many prompts.
|
|
11
|
+
*/
|
|
12
|
+
export class DotAiRuntime {
|
|
13
|
+
caps = [];
|
|
14
|
+
booted = false;
|
|
15
|
+
options;
|
|
16
|
+
logger;
|
|
17
|
+
_runner = null;
|
|
18
|
+
_eventBus = null;
|
|
19
|
+
vocabulary = [];
|
|
20
|
+
constructor(options) {
|
|
21
|
+
this.options = options;
|
|
22
|
+
this.logger = options.logger ?? new NoopLogger();
|
|
23
|
+
}
|
|
24
|
+
// ── Context Builder ──
|
|
25
|
+
buildCtx(labels = []) {
|
|
26
|
+
return {
|
|
27
|
+
workspaceRoot: this.options.workspaceRoot,
|
|
28
|
+
events: this._eventBus ?? { on: () => { }, off: () => { }, emit: () => { } },
|
|
29
|
+
labels,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
33
|
+
// Boot
|
|
34
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
35
|
+
/**
|
|
36
|
+
* Boot the runtime — loads config, discovers extensions, fires lifecycle events.
|
|
37
|
+
* Call once per session. Safe to call multiple times (idempotent).
|
|
38
|
+
*/
|
|
39
|
+
async boot() {
|
|
40
|
+
if (this.booted)
|
|
41
|
+
return;
|
|
42
|
+
const start = performance.now();
|
|
43
|
+
const rawConfig = await loadConfig(this.options.workspaceRoot);
|
|
44
|
+
// Create event bus
|
|
45
|
+
this._eventBus = new EventBus();
|
|
46
|
+
// Discover extensions
|
|
47
|
+
const extConfig = this.options.extensions ?? rawConfig.extensions;
|
|
48
|
+
const extPaths = await discoverExtensions(this.options.workspaceRoot, extConfig);
|
|
49
|
+
// Compute checksum for cache invalidation
|
|
50
|
+
const checksum = await computeChecksum(this.options.workspaceRoot, extPaths);
|
|
51
|
+
// Try loading from cache
|
|
52
|
+
const cached = await loadBootCache(this.options.workspaceRoot, checksum);
|
|
53
|
+
// Load extensions via v6 collector API (always needed for handlers)
|
|
54
|
+
const loaded = await this.loadExtensions(extPaths);
|
|
55
|
+
this._runner = new ExtensionRunner(loaded, this.logger);
|
|
56
|
+
if (cached) {
|
|
57
|
+
// Cache hit — use cached vocabulary, skip resources_discover
|
|
58
|
+
this.vocabulary = cached.vocabulary;
|
|
59
|
+
this.logger.log({
|
|
60
|
+
timestamp: new Date().toISOString(),
|
|
61
|
+
level: 'info',
|
|
62
|
+
phase: 'boot',
|
|
63
|
+
event: 'boot_cache_hit',
|
|
64
|
+
data: { checksum, vocabularySize: cached.vocabulary.length },
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// Cache miss — fire resources_discover → build vocabulary
|
|
69
|
+
const ctx = this.buildCtx();
|
|
70
|
+
const discoverResults = await this._runner.fire('resources_discover', undefined, ctx);
|
|
71
|
+
// Build vocabulary from all extension-contributed labels
|
|
72
|
+
const allLabels = new Set();
|
|
73
|
+
for (const result of discoverResults) {
|
|
74
|
+
if (result.labels && Array.isArray(result.labels)) {
|
|
75
|
+
for (const label of result.labels) {
|
|
76
|
+
allLabels.add(label);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
this.vocabulary = Array.from(allLabels);
|
|
81
|
+
// Write cache
|
|
82
|
+
await writeBootCache(this.options.workspaceRoot, {
|
|
83
|
+
version: 1,
|
|
84
|
+
checksum,
|
|
85
|
+
vocabulary: this.vocabulary,
|
|
86
|
+
extensionPaths: extPaths,
|
|
87
|
+
tools: this._runner.tools.map(t => ({ name: t.name, description: t.description ?? '' })),
|
|
88
|
+
createdAt: new Date().toISOString(),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// Build capabilities from extension-registered tools
|
|
92
|
+
this.caps = this._runner.tools.map(toolDefinitionToCapability);
|
|
93
|
+
this.logger.log({
|
|
94
|
+
timestamp: new Date().toISOString(),
|
|
95
|
+
level: 'info',
|
|
96
|
+
phase: 'boot',
|
|
97
|
+
event: 'boot_complete',
|
|
98
|
+
data: {
|
|
99
|
+
extensionCount: loaded.length,
|
|
100
|
+
vocabularySize: this.vocabulary.length,
|
|
101
|
+
toolCount: this._runner.tools.length,
|
|
102
|
+
commandCount: this._runner.commands.length,
|
|
103
|
+
cacheHit: !!cached,
|
|
104
|
+
},
|
|
105
|
+
durationMs: Math.round(performance.now() - start),
|
|
106
|
+
});
|
|
107
|
+
// Fire session_start (always, regardless of cache)
|
|
108
|
+
const ctx = this.buildCtx();
|
|
109
|
+
await this._runner.fire('session_start', undefined, ctx);
|
|
110
|
+
this.booted = true;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Load extensions using jiti for TypeScript support, falls back to dynamic import.
|
|
114
|
+
*/
|
|
115
|
+
async loadExtensions(extensionPaths) {
|
|
116
|
+
if (extensionPaths.length === 0)
|
|
117
|
+
return [];
|
|
118
|
+
let jitiImport;
|
|
119
|
+
try {
|
|
120
|
+
const { createJiti } = await import('jiti');
|
|
121
|
+
jitiImport = createJiti(import.meta.url, { interopDefault: true });
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
this.logger.log({
|
|
125
|
+
timestamp: new Date().toISOString(),
|
|
126
|
+
level: 'warn',
|
|
127
|
+
phase: 'boot',
|
|
128
|
+
event: 'jiti_not_available',
|
|
129
|
+
data: { message: 'jiti not installed, falling back to dynamic import' },
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
const loaded = [];
|
|
133
|
+
for (const extPath of extensionPaths) {
|
|
134
|
+
try {
|
|
135
|
+
let mod;
|
|
136
|
+
if (jitiImport) {
|
|
137
|
+
mod = jitiImport(extPath);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
mod = await import(extPath);
|
|
141
|
+
}
|
|
142
|
+
const factory = (typeof mod.default === 'function' ? mod.default : mod);
|
|
143
|
+
if (typeof factory !== 'function') {
|
|
144
|
+
this.logger.log({
|
|
145
|
+
timestamp: new Date().toISOString(),
|
|
146
|
+
level: 'warn',
|
|
147
|
+
phase: 'boot',
|
|
148
|
+
event: 'extension_no_factory',
|
|
149
|
+
data: { path: extPath },
|
|
150
|
+
});
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
// TODO: resolve per-extension config from settings.json `with:` block
|
|
154
|
+
const extConfig = {};
|
|
155
|
+
const { api, extension } = createV6CollectorAPI(extPath, extConfig, this._eventBus, this.options.workspaceRoot);
|
|
156
|
+
await factory(api);
|
|
157
|
+
loaded.push(extension);
|
|
158
|
+
this.logger.log({
|
|
159
|
+
timestamp: new Date().toISOString(),
|
|
160
|
+
level: 'info',
|
|
161
|
+
phase: 'boot',
|
|
162
|
+
event: 'extension_loaded',
|
|
163
|
+
data: {
|
|
164
|
+
path: extPath,
|
|
165
|
+
handlers: Object.fromEntries(Array.from(extension.handlers.entries()).map(([k, v]) => [k, v.length])),
|
|
166
|
+
tools: Array.from(extension.tools.keys()),
|
|
167
|
+
commands: Array.from(extension.commands.keys()),
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
this.logger.log({
|
|
173
|
+
timestamp: new Date().toISOString(),
|
|
174
|
+
level: 'warn',
|
|
175
|
+
phase: 'boot',
|
|
176
|
+
event: 'extension_load_error',
|
|
177
|
+
data: {
|
|
178
|
+
path: extPath,
|
|
179
|
+
error: err instanceof Error ? err.message : String(err),
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return loaded;
|
|
185
|
+
}
|
|
186
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
187
|
+
// Process Prompt
|
|
188
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
189
|
+
/**
|
|
190
|
+
* Process a prompt through the pipeline:
|
|
191
|
+
* 1. Extract labels (core regex + label_extract chain-transform)
|
|
192
|
+
* 2. Route (first-result)
|
|
193
|
+
* 3. Context enrich (collect-sections)
|
|
194
|
+
* 4. Assemble sections by priority
|
|
195
|
+
* 5. Apply token budget trimming
|
|
196
|
+
*/
|
|
197
|
+
async processPrompt(prompt, formatOverrides) {
|
|
198
|
+
if (!this.booted) {
|
|
199
|
+
await this.boot();
|
|
200
|
+
}
|
|
201
|
+
const start = performance.now();
|
|
202
|
+
// 1. Extract labels from prompt using vocabulary
|
|
203
|
+
let labels = extractLabels(prompt, this.vocabulary);
|
|
204
|
+
// Chain-transform via label_extract event
|
|
205
|
+
if (this._runner) {
|
|
206
|
+
const ctx = this.buildCtx(labels);
|
|
207
|
+
const enrichedLabels = await this._runner.fireChainTransform('label_extract', labels, ctx);
|
|
208
|
+
if (enrichedLabels && Array.isArray(enrichedLabels)) {
|
|
209
|
+
labels = enrichedLabels;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
this.logger.log({
|
|
213
|
+
timestamp: new Date().toISOString(),
|
|
214
|
+
level: 'info',
|
|
215
|
+
phase: 'enrich',
|
|
216
|
+
event: 'labels_extracted',
|
|
217
|
+
data: { labels: labels.map(l => l.name), vocabularySize: this.vocabulary.length },
|
|
218
|
+
durationMs: Math.round(performance.now() - start),
|
|
219
|
+
});
|
|
220
|
+
// 2. Route (first-result)
|
|
221
|
+
let routing = null;
|
|
222
|
+
if (this._runner) {
|
|
223
|
+
const routeEvent = { labels };
|
|
224
|
+
const ctx = this.buildCtx(labels);
|
|
225
|
+
routing = await this._runner.fireFirstResult('route', routeEvent, ctx);
|
|
226
|
+
}
|
|
227
|
+
// 3. Context enrich (collect-sections)
|
|
228
|
+
let sections = [];
|
|
229
|
+
if (this._runner) {
|
|
230
|
+
const enrichEvent = { prompt, labels };
|
|
231
|
+
const ctx = this.buildCtx(labels);
|
|
232
|
+
const collected = await this._runner.fireCollectSections('context_enrich', enrichEvent, ctx);
|
|
233
|
+
sections = collected.sections;
|
|
234
|
+
// Also fire legacy context_inject for backward compat
|
|
235
|
+
const injectEvent = { prompt, labels };
|
|
236
|
+
const injectResults = await this._runner.fire('context_inject', injectEvent, ctx);
|
|
237
|
+
for (const result of injectResults) {
|
|
238
|
+
if (result.inject) {
|
|
239
|
+
sections.push({
|
|
240
|
+
id: `legacy-inject-${sections.length}`,
|
|
241
|
+
title: 'Extension Context',
|
|
242
|
+
content: result.inject,
|
|
243
|
+
priority: 20,
|
|
244
|
+
source: 'legacy',
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// 4. Sort sections by priority DESC
|
|
250
|
+
sections.sort((a, b) => b.priority - a.priority);
|
|
251
|
+
// 5. Apply token budget trimming
|
|
252
|
+
const tokenBudget = formatOverrides?.tokenBudget ?? this.options.tokenBudget;
|
|
253
|
+
if (tokenBudget) {
|
|
254
|
+
sections = this.trimSections(sections, tokenBudget);
|
|
255
|
+
}
|
|
256
|
+
// 6. Assemble sections into formatted markdown
|
|
257
|
+
const formatted = this.assembleSections(sections);
|
|
258
|
+
this.logger.log({
|
|
259
|
+
timestamp: new Date().toISOString(),
|
|
260
|
+
level: 'info',
|
|
261
|
+
phase: 'format',
|
|
262
|
+
event: 'format_complete',
|
|
263
|
+
data: {
|
|
264
|
+
sectionCount: sections.length,
|
|
265
|
+
outputChars: formatted.length,
|
|
266
|
+
estimatedTokens: Math.round(formatted.length / 4),
|
|
267
|
+
routing: routing?.model ?? 'default',
|
|
268
|
+
labels: labels.map(l => l.name),
|
|
269
|
+
},
|
|
270
|
+
durationMs: Math.round(performance.now() - start),
|
|
271
|
+
});
|
|
272
|
+
// Build enriched context for adapters that need it
|
|
273
|
+
const enriched = this.buildEnrichedFromSections(prompt, labels, sections, routing);
|
|
274
|
+
return {
|
|
275
|
+
formatted,
|
|
276
|
+
enriched,
|
|
277
|
+
capabilities: this.caps,
|
|
278
|
+
routing,
|
|
279
|
+
labels,
|
|
280
|
+
sections,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
284
|
+
// Learn
|
|
285
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
286
|
+
/**
|
|
287
|
+
* Learn from agent response — fires agent_end event.
|
|
288
|
+
* Memory extensions handle storage in their handlers.
|
|
289
|
+
*/
|
|
290
|
+
async learn(response) {
|
|
291
|
+
if (this._runner) {
|
|
292
|
+
await this._runner.fire('agent_end', { response }, this.buildCtx());
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
296
|
+
// Event Firing
|
|
297
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
298
|
+
/**
|
|
299
|
+
* Fire an event (for adapters to call on agent-native events).
|
|
300
|
+
*/
|
|
301
|
+
async fire(event, data) {
|
|
302
|
+
if (!this._runner)
|
|
303
|
+
return [];
|
|
304
|
+
return this._runner.fire(event, data, this.buildCtx());
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Fire a tool_call event and return block result if any.
|
|
308
|
+
*/
|
|
309
|
+
async fireToolCall(event) {
|
|
310
|
+
if (!this._runner)
|
|
311
|
+
return null;
|
|
312
|
+
return this._runner.fireUntilBlocked('tool_call', event, this.buildCtx());
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Shutdown: fire session_end, flush logger.
|
|
316
|
+
*/
|
|
317
|
+
async shutdown() {
|
|
318
|
+
if (this._runner) {
|
|
319
|
+
await this._runner.fire('session_end', undefined, this.buildCtx());
|
|
320
|
+
}
|
|
321
|
+
await this.logger.flush();
|
|
322
|
+
}
|
|
323
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
324
|
+
// Accessors
|
|
325
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
326
|
+
/** Get the interactive capabilities (for registering as tools) */
|
|
327
|
+
get capabilities() {
|
|
328
|
+
return this.caps;
|
|
329
|
+
}
|
|
330
|
+
/** Check if runtime has been booted */
|
|
331
|
+
get isBooted() {
|
|
332
|
+
return this.booted;
|
|
333
|
+
}
|
|
334
|
+
/** Flush logger buffers — call before process exit in CLI hooks */
|
|
335
|
+
async flush() {
|
|
336
|
+
await this.logger.flush();
|
|
337
|
+
}
|
|
338
|
+
/** Get the extension runner */
|
|
339
|
+
get runner() {
|
|
340
|
+
return this._runner;
|
|
341
|
+
}
|
|
342
|
+
/** Get registered commands from extensions */
|
|
343
|
+
get commands() {
|
|
344
|
+
return this._runner?.commands ?? [];
|
|
345
|
+
}
|
|
346
|
+
/** Get diagnostics including extensions */
|
|
347
|
+
get diagnostics() {
|
|
348
|
+
return {
|
|
349
|
+
extensions: this._runner?.diagnostics ?? [],
|
|
350
|
+
usedTiers: this._runner ? Array.from(this._runner.usedTiers) : [],
|
|
351
|
+
capabilityCount: this.caps.length,
|
|
352
|
+
vocabularySize: this.vocabulary.length,
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
356
|
+
// Helpers
|
|
357
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
358
|
+
/**
|
|
359
|
+
* Assemble sorted sections into a single markdown string.
|
|
360
|
+
*/
|
|
361
|
+
assembleSections(sections) {
|
|
362
|
+
if (sections.length === 0)
|
|
363
|
+
return '';
|
|
364
|
+
return sections
|
|
365
|
+
.map(s => {
|
|
366
|
+
if (s.title) {
|
|
367
|
+
return `## ${s.title}\n\n${s.content}`;
|
|
368
|
+
}
|
|
369
|
+
return s.content;
|
|
370
|
+
})
|
|
371
|
+
.join('\n\n---\n\n');
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Trim sections to fit within a token budget.
|
|
375
|
+
* Respects trimStrategy: 'never' sections are never removed.
|
|
376
|
+
*/
|
|
377
|
+
trimSections(sections, budget) {
|
|
378
|
+
const estimateTokens = (secs) => Math.round(secs.map(s => `## ${s.title}\n\n${s.content}`).join('\n\n---\n\n').length / 4);
|
|
379
|
+
let current = estimateTokens(sections);
|
|
380
|
+
if (current <= budget)
|
|
381
|
+
return sections;
|
|
382
|
+
const result = [...sections];
|
|
383
|
+
const actions = [];
|
|
384
|
+
// Strategy 1: Truncate 'truncate' sections
|
|
385
|
+
for (let i = result.length - 1; i >= 0; i--) {
|
|
386
|
+
if (current <= budget)
|
|
387
|
+
break;
|
|
388
|
+
const s = result[i];
|
|
389
|
+
if (s.trimStrategy === 'truncate' && s.content.length > 2000) {
|
|
390
|
+
result[i] = { ...s, content: s.content.slice(0, 2000) + '\n\n[...truncated]' };
|
|
391
|
+
actions.push(`truncated section: ${s.id}`);
|
|
392
|
+
current = estimateTokens(result);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
// Strategy 2: Drop non-'never' sections (lowest priority first)
|
|
396
|
+
for (let i = result.length - 1; i >= 0; i--) {
|
|
397
|
+
if (current <= budget)
|
|
398
|
+
break;
|
|
399
|
+
const s = result[i];
|
|
400
|
+
if (s.trimStrategy !== 'never') {
|
|
401
|
+
actions.push(`dropped section: ${s.id} (priority ${s.priority})`);
|
|
402
|
+
result.splice(i, 1);
|
|
403
|
+
current = estimateTokens(result);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
if (actions.length > 0) {
|
|
407
|
+
const warning = { budget, actual: current, actions };
|
|
408
|
+
this.logger.log({
|
|
409
|
+
timestamp: new Date().toISOString(),
|
|
410
|
+
level: current > budget ? 'warn' : 'info',
|
|
411
|
+
phase: 'format',
|
|
412
|
+
event: 'budget_trimmed',
|
|
413
|
+
data: warning,
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
return result;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Build a backward-compatible EnrichedContext from pipeline output.
|
|
420
|
+
* Adapters that log enriched fields still work.
|
|
421
|
+
*/
|
|
422
|
+
buildEnrichedFromSections(prompt, labels, sections, routing) {
|
|
423
|
+
return {
|
|
424
|
+
prompt,
|
|
425
|
+
labels,
|
|
426
|
+
identities: sections
|
|
427
|
+
.filter(s => s.source === 'identity' || s.priority >= 80)
|
|
428
|
+
.map(s => ({
|
|
429
|
+
type: s.id ?? s.source,
|
|
430
|
+
content: s.content,
|
|
431
|
+
source: s.source,
|
|
432
|
+
priority: s.priority,
|
|
433
|
+
})),
|
|
434
|
+
memories: [],
|
|
435
|
+
skills: [],
|
|
436
|
+
tools: [],
|
|
437
|
+
routing: routing ?? { model: 'default', reason: 'no routing extensions' },
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -65,7 +65,7 @@ export interface RoutingResult {
|
|
|
65
65
|
fallback?: string;
|
|
66
66
|
}
|
|
67
67
|
/**
|
|
68
|
-
* The output of the enrich
|
|
68
|
+
* The output of the enrich pipeline.
|
|
69
69
|
* This is what adapters consume to inject into the agent.
|
|
70
70
|
*/
|
|
71
71
|
export interface EnrichedContext {
|
|
@@ -73,6 +73,8 @@ export interface EnrichedContext {
|
|
|
73
73
|
labels: Label[];
|
|
74
74
|
identities: Identity[];
|
|
75
75
|
memories: MemoryEntry[];
|
|
76
|
+
memoryDescription?: string;
|
|
77
|
+
recentTasks?: Task[];
|
|
76
78
|
skills: Skill[];
|
|
77
79
|
tools: Tool[];
|
|
78
80
|
routing: RoutingResult;
|
|
@@ -86,7 +88,7 @@ export interface TaskFilter {
|
|
|
86
88
|
tags?: string[];
|
|
87
89
|
}
|
|
88
90
|
/**
|
|
89
|
-
* Configuration
|
|
91
|
+
* Configuration types
|
|
90
92
|
*/
|
|
91
93
|
export interface DebugConfig {
|
|
92
94
|
logPath?: string;
|
|
@@ -95,17 +97,34 @@ export interface WorkspaceConfig {
|
|
|
95
97
|
scanDirs?: string;
|
|
96
98
|
}
|
|
97
99
|
export interface DotAiConfig {
|
|
98
|
-
memory?: ProviderConfig;
|
|
99
|
-
skills?: ProviderConfig;
|
|
100
|
-
identity?: ProviderConfig;
|
|
101
|
-
routing?: ProviderConfig;
|
|
102
|
-
tasks?: ProviderConfig;
|
|
103
|
-
tools?: ProviderConfig;
|
|
104
100
|
debug?: DebugConfig;
|
|
105
101
|
workspace?: WorkspaceConfig;
|
|
102
|
+
extensions?: ExtensionsConfig;
|
|
103
|
+
prompts?: PromptsConfig;
|
|
106
104
|
}
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
/** Prompt template type */
|
|
106
|
+
export interface PromptTemplate {
|
|
107
|
+
name: string;
|
|
108
|
+
content: string;
|
|
109
|
+
args?: string[];
|
|
110
|
+
description?: string;
|
|
111
|
+
}
|
|
112
|
+
/** Extensions config section */
|
|
113
|
+
export interface ExtensionsConfig {
|
|
114
|
+
paths?: string[];
|
|
115
|
+
packages?: string[];
|
|
116
|
+
}
|
|
117
|
+
/** Prompts config section */
|
|
118
|
+
export interface PromptsConfig {
|
|
119
|
+
use?: string;
|
|
109
120
|
with?: Record<string, unknown>;
|
|
110
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Warning emitted when context exceeds the token budget.
|
|
124
|
+
*/
|
|
125
|
+
export interface BudgetWarning {
|
|
126
|
+
budget: number;
|
|
127
|
+
actual: number;
|
|
128
|
+
actions: string[];
|
|
129
|
+
}
|
|
111
130
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dot-ai/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/jogelin/dot-ai",
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
"@types/node": "^22.0.0",
|
|
14
14
|
"typescript": "^5.9.3"
|
|
15
15
|
},
|
|
16
|
+
"optionalDependencies": {
|
|
17
|
+
"jiti": "^2.0.0"
|
|
18
|
+
},
|
|
16
19
|
"publishConfig": {
|
|
17
20
|
"access": "public"
|
|
18
21
|
},
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { toolDefinitionToCapability } from '../capabilities.js';
|
|
3
|
+
import type { ToolDefinition } from '../extension-types.js';
|
|
4
|
+
|
|
5
|
+
describe('toolDefinitionToCapability()', () => {
|
|
6
|
+
function makeToolDef(overrides?: Partial<ToolDefinition>): ToolDefinition {
|
|
7
|
+
return {
|
|
8
|
+
name: 'my_tool',
|
|
9
|
+
description: 'Does something useful',
|
|
10
|
+
parameters: { type: 'object', properties: { input: { type: 'string' } } },
|
|
11
|
+
execute: vi.fn().mockResolvedValue({ content: 'result text', details: { extra: 42 } }),
|
|
12
|
+
promptSnippet: 'Use my_tool for useful things.',
|
|
13
|
+
promptGuidelines: 'Always provide input.',
|
|
14
|
+
...overrides,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
it('maps ToolDefinition fields to Capability correctly', () => {
|
|
19
|
+
const tool = makeToolDef();
|
|
20
|
+
const cap = toolDefinitionToCapability(tool);
|
|
21
|
+
|
|
22
|
+
expect(cap.name).toBe('my_tool');
|
|
23
|
+
expect(cap.description).toBe('Does something useful');
|
|
24
|
+
expect(cap.parameters).toEqual(tool.parameters);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('maps content → text in execute result', async () => {
|
|
28
|
+
const tool = makeToolDef();
|
|
29
|
+
const cap = toolDefinitionToCapability(tool);
|
|
30
|
+
|
|
31
|
+
const result = await cap.execute({ input: 'hello' });
|
|
32
|
+
|
|
33
|
+
expect(result.text).toBe('result text');
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('preserves details from the tool execute result', async () => {
|
|
37
|
+
const tool = makeToolDef();
|
|
38
|
+
const cap = toolDefinitionToCapability(tool);
|
|
39
|
+
|
|
40
|
+
const result = await cap.execute({});
|
|
41
|
+
|
|
42
|
+
expect(result.details).toEqual({ extra: 42 });
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('preserves promptSnippet', () => {
|
|
46
|
+
const cap = toolDefinitionToCapability(makeToolDef());
|
|
47
|
+
expect(cap.promptSnippet).toBe('Use my_tool for useful things.');
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it('preserves promptGuidelines', () => {
|
|
51
|
+
const cap = toolDefinitionToCapability(makeToolDef());
|
|
52
|
+
expect(cap.promptGuidelines).toBe('Always provide input.');
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('handles missing promptSnippet / promptGuidelines gracefully', () => {
|
|
56
|
+
const tool = makeToolDef({ promptSnippet: undefined, promptGuidelines: undefined });
|
|
57
|
+
const cap = toolDefinitionToCapability(tool);
|
|
58
|
+
|
|
59
|
+
expect(cap.promptSnippet).toBeUndefined();
|
|
60
|
+
expect(cap.promptGuidelines).toBeUndefined();
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it('forwards params to the underlying tool execute', async () => {
|
|
64
|
+
const executeFn = vi.fn().mockResolvedValue({ content: 'ok' });
|
|
65
|
+
const tool = makeToolDef({ execute: executeFn });
|
|
66
|
+
const cap = toolDefinitionToCapability(tool);
|
|
67
|
+
|
|
68
|
+
await cap.execute({ input: 'test-value' });
|
|
69
|
+
|
|
70
|
+
expect(executeFn).toHaveBeenCalledWith({ input: 'test-value' });
|
|
71
|
+
});
|
|
72
|
+
});
|