@dot-ai/core 0.9.0 → 0.11.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 +1 -1
- package/dist/boot-cache.d.ts.map +1 -1
- package/dist/extension-api.d.ts +10 -9
- package/dist/extension-api.d.ts.map +1 -1
- package/dist/extension-loader.d.ts +9 -2
- package/dist/extension-loader.d.ts.map +1 -1
- package/dist/extension-loader.js +179 -55
- package/dist/extension-loader.js.map +1 -1
- package/dist/extension-runner.d.ts +9 -4
- package/dist/extension-runner.d.ts.map +1 -1
- package/dist/extension-runner.js +34 -13
- package/dist/extension-runner.js.map +1 -1
- package/dist/extension-types.d.ts +15 -115
- package/dist/extension-types.d.ts.map +1 -1
- package/dist/extension-types.js +1 -88
- package/dist/extension-types.js.map +1 -1
- package/dist/format.d.ts +21 -0
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +74 -0
- package/dist/format.js.map +1 -1
- package/dist/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/package-manager.d.ts +28 -5
- package/dist/package-manager.d.ts.map +1 -1
- package/dist/package-manager.js +126 -20
- package/dist/package-manager.js.map +1 -1
- package/dist/runtime.d.ts +31 -43
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +79 -177
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/extension-loader.test.ts +154 -11
- package/src/__tests__/extension-runner.test.ts +245 -32
- package/src/__tests__/fixtures/extensions/ctx-aware.js +12 -3
- package/src/__tests__/fixtures/extensions/smart-context.js +12 -3
- package/src/__tests__/format.test.ts +178 -1
- package/src/__tests__/package-manager.test.ts +237 -0
- package/src/__tests__/runtime.test.ts +38 -10
- package/src/boot-cache.ts +1 -1
- package/src/extension-api.ts +10 -15
- package/src/extension-loader.ts +187 -57
- package/src/extension-runner.ts +44 -15
- package/src/extension-types.ts +26 -195
- package/src/format.ts +100 -0
- package/src/index.ts +5 -13
- package/src/package-manager.ts +146 -23
- package/src/runtime.ts +96 -222
- package/tsconfig.tsbuildinfo +1 -1
package/dist/runtime.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { loadConfig } from './config.js';
|
|
2
|
-
import { computeChecksum, loadBootCache, writeBootCache } from './boot-cache.js';
|
|
3
2
|
import { toolDefinitionToCapability } from './capabilities.js';
|
|
4
3
|
import { discoverExtensions, createV6CollectorAPI } from './extension-loader.js';
|
|
4
|
+
import { ensurePackagesInstalled } from './package-manager.js';
|
|
5
5
|
import { ExtensionRunner, EventBus } from './extension-runner.js';
|
|
6
6
|
import { NoopLogger } from './logger.js';
|
|
7
7
|
import { extractLabels } from './labels.js';
|
|
@@ -33,7 +33,7 @@ export class DotAiRuntime {
|
|
|
33
33
|
// Boot
|
|
34
34
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
35
35
|
/**
|
|
36
|
-
* Boot the runtime — loads config, discovers extensions,
|
|
36
|
+
* Boot the runtime — loads config, discovers extensions, builds vocabulary from registrations.
|
|
37
37
|
* Call once per session. Safe to call multiple times (idempotent).
|
|
38
38
|
*/
|
|
39
39
|
async boot() {
|
|
@@ -43,51 +43,33 @@ export class DotAiRuntime {
|
|
|
43
43
|
const rawConfig = await loadConfig(this.options.workspaceRoot);
|
|
44
44
|
// Create event bus
|
|
45
45
|
this._eventBus = new EventBus();
|
|
46
|
-
//
|
|
46
|
+
// Auto-install packages from settings.json before discovery
|
|
47
47
|
const extConfig = this.options.extensions ?? rawConfig.extensions;
|
|
48
|
+
if (extConfig?.packages?.length) {
|
|
49
|
+
const installResult = await ensurePackagesInstalled(this.options.workspaceRoot, extConfig.packages);
|
|
50
|
+
if (installResult.installed.length > 0 || installResult.errors.length > 0) {
|
|
51
|
+
this.logger.log({
|
|
52
|
+
timestamp: new Date().toISOString(),
|
|
53
|
+
level: installResult.errors.length > 0 ? 'warn' : 'info',
|
|
54
|
+
phase: 'boot',
|
|
55
|
+
event: 'packages_installed',
|
|
56
|
+
data: {
|
|
57
|
+
installed: installResult.installed,
|
|
58
|
+
skipped: installResult.skipped,
|
|
59
|
+
errors: installResult.errors,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Discover extensions
|
|
48
65
|
const extPaths = await discoverExtensions(this.options.workspaceRoot, extConfig);
|
|
49
|
-
//
|
|
50
|
-
|
|
51
|
-
//
|
|
52
|
-
const cached = await loadBootCache(this.options.workspaceRoot, checksum);
|
|
53
|
-
// Load extensions via v6 collector API (always needed for handlers)
|
|
66
|
+
// Load extensions via collector API
|
|
67
|
+
// Extension factories run here — they call registerSkill(), registerIdentity(),
|
|
68
|
+
// contributeLabels(), registerTool(), registerCommand(), and subscribe to events.
|
|
54
69
|
const loaded = await this.loadExtensions(extPaths);
|
|
55
70
|
this._runner = new ExtensionRunner(loaded, this.logger);
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
}
|
|
71
|
+
// Build vocabulary from registered resources (replaces resources_discover)
|
|
72
|
+
this.vocabulary = this._runner.vocabularyLabels;
|
|
91
73
|
// Build capabilities from extension-registered tools
|
|
92
74
|
this.caps = this._runner.tools.map(toolDefinitionToCapability);
|
|
93
75
|
this.logger.log({
|
|
@@ -100,11 +82,12 @@ export class DotAiRuntime {
|
|
|
100
82
|
vocabularySize: this.vocabulary.length,
|
|
101
83
|
toolCount: this._runner.tools.length,
|
|
102
84
|
commandCount: this._runner.commands.length,
|
|
103
|
-
|
|
85
|
+
skillCount: this._runner.skills.length,
|
|
86
|
+
identityCount: this._runner.identities.length,
|
|
104
87
|
},
|
|
105
88
|
durationMs: Math.round(performance.now() - start),
|
|
106
89
|
});
|
|
107
|
-
// Fire session_start (always
|
|
90
|
+
// Fire session_start (always)
|
|
108
91
|
const ctx = this.buildCtx();
|
|
109
92
|
await this._runner.fire('session_start', undefined, ctx);
|
|
110
93
|
this.booted = true;
|
|
@@ -165,6 +148,8 @@ export class DotAiRuntime {
|
|
|
165
148
|
handlers: Object.fromEntries(Array.from(extension.handlers.entries()).map(([k, v]) => [k, v.length])),
|
|
166
149
|
tools: Array.from(extension.tools.keys()),
|
|
167
150
|
commands: Array.from(extension.commands.keys()),
|
|
151
|
+
skills: Array.from(extension.skills.keys()),
|
|
152
|
+
identities: Array.from(extension.identities.keys()),
|
|
168
153
|
},
|
|
169
154
|
});
|
|
170
155
|
}
|
|
@@ -190,11 +175,12 @@ export class DotAiRuntime {
|
|
|
190
175
|
* Process a prompt through the pipeline:
|
|
191
176
|
* 1. Extract labels (core regex + label_extract chain-transform)
|
|
192
177
|
* 2. Route (first-result)
|
|
193
|
-
* 3. Context enrich (collect-sections)
|
|
194
|
-
* 4.
|
|
195
|
-
*
|
|
178
|
+
* 3. Context enrich (collect-sections) + core system section
|
|
179
|
+
* 4. Sort sections by priority DESC
|
|
180
|
+
*
|
|
181
|
+
* Returns structured data. Adapters call formatSections() to get markdown.
|
|
196
182
|
*/
|
|
197
|
-
async processPrompt(prompt
|
|
183
|
+
async processPrompt(prompt) {
|
|
198
184
|
if (!this.booted) {
|
|
199
185
|
await this.boot();
|
|
200
186
|
}
|
|
@@ -231,66 +217,54 @@ export class DotAiRuntime {
|
|
|
231
217
|
const ctx = this.buildCtx(labels);
|
|
232
218
|
const collected = await this._runner.fireCollectSections('context_enrich', enrichEvent, ctx);
|
|
233
219
|
sections = collected.sections;
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
220
|
+
}
|
|
221
|
+
// Add core system section
|
|
222
|
+
if (this._runner) {
|
|
223
|
+
const skillNames = this._runner.skills.map(s => s.name);
|
|
224
|
+
const toolNames = this._runner.tools.map(t => t.name);
|
|
225
|
+
const parts = ['dot-ai workspace active.'];
|
|
226
|
+
if (skillNames.length > 0)
|
|
227
|
+
parts.push(`Skills: ${skillNames.join(', ')}.`);
|
|
228
|
+
if (toolNames.length > 0)
|
|
229
|
+
parts.push(`Tools: ${toolNames.join(', ')}.`);
|
|
230
|
+
sections.push({
|
|
231
|
+
id: 'dot-ai:system',
|
|
232
|
+
title: 'dot-ai',
|
|
233
|
+
content: parts.join(' '),
|
|
234
|
+
priority: 95,
|
|
235
|
+
source: 'core',
|
|
236
|
+
trimStrategy: 'never',
|
|
237
|
+
});
|
|
248
238
|
}
|
|
249
239
|
// 4. Sort sections by priority DESC
|
|
250
240
|
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
241
|
this.logger.log({
|
|
259
242
|
timestamp: new Date().toISOString(),
|
|
260
243
|
level: 'info',
|
|
261
|
-
phase: '
|
|
262
|
-
event: '
|
|
244
|
+
phase: 'enrich',
|
|
245
|
+
event: 'prompt_processed',
|
|
263
246
|
data: {
|
|
264
247
|
sectionCount: sections.length,
|
|
265
|
-
outputChars: formatted.length,
|
|
266
|
-
estimatedTokens: Math.round(formatted.length / 4),
|
|
267
248
|
routing: routing?.model ?? 'default',
|
|
268
249
|
labels: labels.map(l => l.name),
|
|
269
250
|
},
|
|
270
251
|
durationMs: Math.round(performance.now() - start),
|
|
271
252
|
});
|
|
272
|
-
|
|
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
|
-
};
|
|
253
|
+
return { sections, labels, routing };
|
|
282
254
|
}
|
|
283
255
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
284
|
-
//
|
|
256
|
+
// Tool Execution
|
|
285
257
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
286
258
|
/**
|
|
287
|
-
*
|
|
288
|
-
* Memory extensions handle storage in their handlers.
|
|
259
|
+
* Execute a registered tool by name.
|
|
289
260
|
*/
|
|
290
|
-
async
|
|
291
|
-
if (this._runner)
|
|
292
|
-
|
|
293
|
-
|
|
261
|
+
async executeTool(name, input) {
|
|
262
|
+
if (!this._runner)
|
|
263
|
+
throw new Error('Runtime not booted');
|
|
264
|
+
const tool = this._runner.tools.find(t => t.name === name);
|
|
265
|
+
if (!tool)
|
|
266
|
+
throw new Error(`Tool not found: ${name}`);
|
|
267
|
+
return tool.execute(input, this.buildCtx());
|
|
294
268
|
}
|
|
295
269
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
296
270
|
// Event Firing
|
|
@@ -343,98 +317,26 @@ export class DotAiRuntime {
|
|
|
343
317
|
get commands() {
|
|
344
318
|
return this._runner?.commands ?? [];
|
|
345
319
|
}
|
|
320
|
+
/** Get registered skills from extensions */
|
|
321
|
+
get skills() {
|
|
322
|
+
return this._runner?.skills ?? [];
|
|
323
|
+
}
|
|
324
|
+
/** Get registered identities from extensions */
|
|
325
|
+
get identities() {
|
|
326
|
+
return this._runner?.identities ?? [];
|
|
327
|
+
}
|
|
328
|
+
/** Get registered tools from extensions */
|
|
329
|
+
get tools() {
|
|
330
|
+
return this._runner?.tools ?? [];
|
|
331
|
+
}
|
|
346
332
|
/** Get diagnostics including extensions */
|
|
347
333
|
get diagnostics() {
|
|
348
334
|
return {
|
|
349
335
|
extensions: this._runner?.diagnostics ?? [],
|
|
350
|
-
usedTiers: this._runner ? Array.from(this._runner.usedTiers) : [],
|
|
351
336
|
capabilityCount: this.caps.length,
|
|
352
337
|
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' },
|
|
338
|
+
skillCount: this._runner?.skills.length ?? 0,
|
|
339
|
+
identityCount: this._runner?.identities.length ?? 0,
|
|
438
340
|
};
|
|
439
341
|
}
|
|
440
342
|
}
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -16,6 +16,8 @@ afterEach(async () => {
|
|
|
16
16
|
});
|
|
17
17
|
|
|
18
18
|
describe('discoverExtensions', () => {
|
|
19
|
+
// ── Auto-discovery: .ai/extensions/ ──────────────────────────────────
|
|
20
|
+
|
|
19
21
|
it('discovers .ts files in .ai/extensions/', async () => {
|
|
20
22
|
await writeFile(join(testDir, '.ai', 'extensions', 'my-ext.ts'), 'export default function() {}');
|
|
21
23
|
const paths = await discoverExtensions(testDir);
|
|
@@ -42,24 +44,23 @@ describe('discoverExtensions', () => {
|
|
|
42
44
|
expect(paths).toContainEqual(expect.stringContaining('jsext/index.js'));
|
|
43
45
|
});
|
|
44
46
|
|
|
45
|
-
it('reads dot-ai field from package.json', async () => {
|
|
47
|
+
it('reads dot-ai field from package.json in subdirectory', async () => {
|
|
46
48
|
const extDir = join(testDir, '.ai', 'extensions', 'pkg-ext');
|
|
47
|
-
await mkdir(extDir, { recursive: true });
|
|
49
|
+
await mkdir(join(extDir, 'src'), { recursive: true });
|
|
48
50
|
await writeFile(join(extDir, 'package.json'), JSON.stringify({
|
|
49
51
|
name: 'pkg-ext',
|
|
50
52
|
'dot-ai': { extensions: ['src/index.ts'] },
|
|
51
53
|
}));
|
|
52
|
-
await mkdir(join(extDir, 'src'), { recursive: true });
|
|
53
54
|
await writeFile(join(extDir, 'src', 'index.ts'), 'export default function() {}');
|
|
54
55
|
const paths = await discoverExtensions(testDir);
|
|
55
56
|
expect(paths).toContainEqual(expect.stringContaining('src/index.ts'));
|
|
56
57
|
});
|
|
57
58
|
|
|
58
|
-
it('
|
|
59
|
-
await writeFile(join(testDir, '.ai', 'extensions', '
|
|
59
|
+
it('ignores non .ts/.js files', async () => {
|
|
60
|
+
await writeFile(join(testDir, '.ai', 'extensions', 'readme.md'), '# Readme');
|
|
61
|
+
await writeFile(join(testDir, '.ai', 'extensions', 'data.json'), '{}');
|
|
60
62
|
const paths = await discoverExtensions(testDir);
|
|
61
|
-
|
|
62
|
-
expect(matching).toHaveLength(1);
|
|
63
|
+
expect(paths).toHaveLength(0);
|
|
63
64
|
});
|
|
64
65
|
|
|
65
66
|
it('returns empty array when directory does not exist', async () => {
|
|
@@ -67,7 +68,18 @@ describe('discoverExtensions', () => {
|
|
|
67
68
|
expect(paths).toEqual([]);
|
|
68
69
|
});
|
|
69
70
|
|
|
70
|
-
|
|
71
|
+
// ── Deduplication ────────────────────────────────────────────────────
|
|
72
|
+
|
|
73
|
+
it('deduplicates paths', async () => {
|
|
74
|
+
await writeFile(join(testDir, '.ai', 'extensions', 'dedup.ts'), 'export default function() {}');
|
|
75
|
+
const paths = await discoverExtensions(testDir);
|
|
76
|
+
const matching = paths.filter(p => p.includes('dedup.ts'));
|
|
77
|
+
expect(matching).toHaveLength(1);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
// ── Configured paths (settings.json "extensions") ────────────────────
|
|
81
|
+
|
|
82
|
+
it('discovers from config.paths (directory)', async () => {
|
|
71
83
|
const customDir = join(testDir, 'custom-extensions');
|
|
72
84
|
await mkdir(customDir, { recursive: true });
|
|
73
85
|
await writeFile(join(customDir, 'custom.ts'), 'export default function() {}');
|
|
@@ -75,10 +87,141 @@ describe('discoverExtensions', () => {
|
|
|
75
87
|
expect(paths).toContainEqual(expect.stringContaining('custom.ts'));
|
|
76
88
|
});
|
|
77
89
|
|
|
78
|
-
it('
|
|
79
|
-
|
|
80
|
-
await
|
|
90
|
+
it('discovers from config.paths (directory with package.json)', async () => {
|
|
91
|
+
const customDir = join(testDir, 'my-package');
|
|
92
|
+
await mkdir(join(customDir, 'dist'), { recursive: true });
|
|
93
|
+
await writeFile(join(customDir, 'package.json'), JSON.stringify({
|
|
94
|
+
name: 'my-package',
|
|
95
|
+
'dot-ai': { extensions: ['dist/index.js'] },
|
|
96
|
+
}));
|
|
97
|
+
await writeFile(join(customDir, 'dist', 'index.js'), 'export default function() {}');
|
|
98
|
+
const paths = await discoverExtensions(testDir, { paths: ['my-package'] });
|
|
99
|
+
expect(paths).toContainEqual(expect.stringContaining('dist/index.js'));
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('discovers from config.paths (direct file)', async () => {
|
|
103
|
+
const customFile = join(testDir, 'standalone.ts');
|
|
104
|
+
await writeFile(customFile, 'export default function() {}');
|
|
105
|
+
const paths = await discoverExtensions(testDir, { paths: ['standalone.ts'] });
|
|
106
|
+
expect(paths).toContainEqual(expect.stringContaining('standalone.ts'));
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
// ── Installed packages (.ai/packages/) ───────────────────────────────
|
|
110
|
+
|
|
111
|
+
it('discovers extensions from .ai/packages/node_modules/', async () => {
|
|
112
|
+
const pkgDir = join(testDir, '.ai', 'packages');
|
|
113
|
+
const extPkgDir = join(pkgDir, 'node_modules', '@dot-ai', 'ext-file-memory');
|
|
114
|
+
await mkdir(join(extPkgDir, 'dist'), { recursive: true });
|
|
115
|
+
|
|
116
|
+
// Create the packages/package.json (npm --prefix creates this)
|
|
117
|
+
await writeFile(join(pkgDir, 'package.json'), JSON.stringify({
|
|
118
|
+
dependencies: { '@dot-ai/ext-file-memory': '0.10.0' },
|
|
119
|
+
}));
|
|
120
|
+
|
|
121
|
+
// Create the installed package with dot-ai field
|
|
122
|
+
await writeFile(join(extPkgDir, 'package.json'), JSON.stringify({
|
|
123
|
+
name: '@dot-ai/ext-file-memory',
|
|
124
|
+
version: '0.10.0',
|
|
125
|
+
'dot-ai': { extensions: ['./dist/extension.js'] },
|
|
126
|
+
}));
|
|
127
|
+
await writeFile(join(extPkgDir, 'dist', 'extension.js'), 'export default function() {}');
|
|
128
|
+
|
|
129
|
+
const paths = await discoverExtensions(testDir);
|
|
130
|
+
expect(paths).toContainEqual(expect.stringContaining('ext-file-memory/dist/extension.js'));
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
it('discovers multiple packages from .ai/packages/', async () => {
|
|
134
|
+
const pkgDir = join(testDir, '.ai', 'packages');
|
|
135
|
+
await mkdir(pkgDir, { recursive: true });
|
|
136
|
+
|
|
137
|
+
// Create packages/package.json with two deps
|
|
138
|
+
await writeFile(join(pkgDir, 'package.json'), JSON.stringify({
|
|
139
|
+
dependencies: {
|
|
140
|
+
'@dot-ai/ext-file-memory': '0.10.0',
|
|
141
|
+
'@dot-ai/ext-file-identity': '0.10.0',
|
|
142
|
+
},
|
|
143
|
+
}));
|
|
144
|
+
|
|
145
|
+
// ext-file-memory
|
|
146
|
+
const memDir = join(pkgDir, 'node_modules', '@dot-ai', 'ext-file-memory');
|
|
147
|
+
await mkdir(join(memDir, 'dist'), { recursive: true });
|
|
148
|
+
await writeFile(join(memDir, 'package.json'), JSON.stringify({
|
|
149
|
+
name: '@dot-ai/ext-file-memory',
|
|
150
|
+
'dot-ai': { extensions: ['./dist/extension.js'] },
|
|
151
|
+
}));
|
|
152
|
+
await writeFile(join(memDir, 'dist', 'extension.js'), 'export default function() {}');
|
|
153
|
+
|
|
154
|
+
// ext-file-identity
|
|
155
|
+
const idDir = join(pkgDir, 'node_modules', '@dot-ai', 'ext-file-identity');
|
|
156
|
+
await mkdir(join(idDir, 'dist'), { recursive: true });
|
|
157
|
+
await writeFile(join(idDir, 'package.json'), JSON.stringify({
|
|
158
|
+
name: '@dot-ai/ext-file-identity',
|
|
159
|
+
'dot-ai': { extensions: ['./dist/index.js'] },
|
|
160
|
+
}));
|
|
161
|
+
await writeFile(join(idDir, 'dist', 'index.js'), 'export default function() {}');
|
|
162
|
+
|
|
163
|
+
const paths = await discoverExtensions(testDir);
|
|
164
|
+
expect(paths).toContainEqual(expect.stringContaining('ext-file-memory/dist/extension.js'));
|
|
165
|
+
expect(paths).toContainEqual(expect.stringContaining('ext-file-identity/dist/index.js'));
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
it('ignores .ai/packages/ when no package.json exists', async () => {
|
|
169
|
+
// No .ai/packages/package.json at all
|
|
81
170
|
const paths = await discoverExtensions(testDir);
|
|
82
171
|
expect(paths).toHaveLength(0);
|
|
83
172
|
});
|
|
173
|
+
|
|
174
|
+
it('ignores packages without dot-ai field', async () => {
|
|
175
|
+
const pkgDir = join(testDir, '.ai', 'packages');
|
|
176
|
+
const noDotAiDir = join(pkgDir, 'node_modules', 'some-lib');
|
|
177
|
+
await mkdir(noDotAiDir, { recursive: true });
|
|
178
|
+
|
|
179
|
+
await writeFile(join(pkgDir, 'package.json'), JSON.stringify({
|
|
180
|
+
dependencies: { 'some-lib': '1.0.0' },
|
|
181
|
+
}));
|
|
182
|
+
await writeFile(join(noDotAiDir, 'package.json'), JSON.stringify({
|
|
183
|
+
name: 'some-lib',
|
|
184
|
+
version: '1.0.0',
|
|
185
|
+
}));
|
|
186
|
+
|
|
187
|
+
const paths = await discoverExtensions(testDir);
|
|
188
|
+
expect(paths).toHaveLength(0);
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
// ── Combined sources ─────────────────────────────────────────────────
|
|
192
|
+
|
|
193
|
+
it('merges auto-discovered and installed package extensions', async () => {
|
|
194
|
+
// Auto-discovered in .ai/extensions/
|
|
195
|
+
await writeFile(join(testDir, '.ai', 'extensions', 'local.ts'), 'export default function() {}');
|
|
196
|
+
|
|
197
|
+
// Installed package in .ai/packages/
|
|
198
|
+
const pkgDir = join(testDir, '.ai', 'packages');
|
|
199
|
+
const extPkgDir = join(pkgDir, 'node_modules', 'my-ext');
|
|
200
|
+
await mkdir(join(extPkgDir, 'dist'), { recursive: true });
|
|
201
|
+
await writeFile(join(pkgDir, 'package.json'), JSON.stringify({
|
|
202
|
+
dependencies: { 'my-ext': '1.0.0' },
|
|
203
|
+
}));
|
|
204
|
+
await writeFile(join(extPkgDir, 'package.json'), JSON.stringify({
|
|
205
|
+
name: 'my-ext',
|
|
206
|
+
'dot-ai': { extensions: ['./dist/index.js'] },
|
|
207
|
+
}));
|
|
208
|
+
await writeFile(join(extPkgDir, 'dist', 'index.js'), 'export default function() {}');
|
|
209
|
+
|
|
210
|
+
const paths = await discoverExtensions(testDir);
|
|
211
|
+
expect(paths).toContainEqual(expect.stringContaining('local.ts'));
|
|
212
|
+
expect(paths).toContainEqual(expect.stringContaining('my-ext/dist/index.js'));
|
|
213
|
+
expect(paths).toHaveLength(2);
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
it('deduplicates across sources', async () => {
|
|
217
|
+
// Same extension in both .ai/extensions/ and config.paths
|
|
218
|
+
const extDir = join(testDir, '.ai', 'extensions');
|
|
219
|
+
await writeFile(join(extDir, 'shared.ts'), 'export default function() {}');
|
|
220
|
+
|
|
221
|
+
const paths = await discoverExtensions(testDir, {
|
|
222
|
+
paths: [join(testDir, '.ai', 'extensions', 'shared.ts')],
|
|
223
|
+
});
|
|
224
|
+
const matching = paths.filter(p => p.includes('shared.ts'));
|
|
225
|
+
expect(matching).toHaveLength(1);
|
|
226
|
+
});
|
|
84
227
|
});
|