@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACH;AAED,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAgEhE;;;;GAIG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,EAAE,CAAC,CAuBxB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAqB1E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,GAC5D,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA8CvG"}
|
package/dist/package-manager.js
CHANGED
|
@@ -1,27 +1,80 @@
|
|
|
1
1
|
import { execSync } from 'node:child_process';
|
|
2
|
-
import { readFile, mkdir } from 'node:fs/promises';
|
|
3
|
-
import {
|
|
2
|
+
import { readFile, mkdir, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { join, resolve } from 'node:path';
|
|
4
5
|
/**
|
|
5
|
-
*
|
|
6
|
+
* Parse a package source string into name and spec.
|
|
7
|
+
*
|
|
8
|
+
* Supported formats:
|
|
9
|
+
* - "npm:@dot-ai/ext-memory@1.0.0" → { name: "@dot-ai/ext-memory", spec: "@dot-ai/ext-memory@1.0.0" }
|
|
10
|
+
* - "npm:@dot-ai/ext-memory" → { name: "@dot-ai/ext-memory", spec: "@dot-ai/ext-memory" }
|
|
11
|
+
* - "@dot-ai/ext-memory@1.0.0" → { name: "@dot-ai/ext-memory", spec: "@dot-ai/ext-memory@1.0.0" }
|
|
12
|
+
* - "@dot-ai/ext-memory" → { name: "@dot-ai/ext-memory", spec: "@dot-ai/ext-memory" }
|
|
6
13
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
14
|
+
function parsePackageSource(source) {
|
|
15
|
+
// Strip npm: prefix
|
|
16
|
+
const raw = source.startsWith('npm:') ? source.slice(4) : source;
|
|
17
|
+
// Extract name (without version) for scoped packages
|
|
18
|
+
if (raw.startsWith('@')) {
|
|
19
|
+
// @scope/name@version → name = @scope/name
|
|
20
|
+
const slashIdx = raw.indexOf('/');
|
|
21
|
+
if (slashIdx === -1)
|
|
22
|
+
return { name: raw, spec: raw };
|
|
23
|
+
const afterSlash = raw.slice(slashIdx + 1);
|
|
24
|
+
const atIdx = afterSlash.indexOf('@');
|
|
25
|
+
if (atIdx === -1)
|
|
26
|
+
return { name: raw, spec: raw };
|
|
27
|
+
return { name: raw.slice(0, slashIdx + 1 + atIdx), spec: raw };
|
|
28
|
+
}
|
|
29
|
+
// name@version → name = name
|
|
30
|
+
const atIdx = raw.indexOf('@');
|
|
31
|
+
if (atIdx === -1)
|
|
32
|
+
return { name: raw, spec: raw };
|
|
33
|
+
return { name: raw.slice(0, atIdx), spec: raw };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get the install directory for packages.
|
|
37
|
+
*/
|
|
38
|
+
function getInstallDir(workspaceRoot) {
|
|
39
|
+
return join(workspaceRoot, '.ai', 'packages');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Check if a package is already installed in .ai/packages/.
|
|
43
|
+
*/
|
|
44
|
+
function isPackageInstalled(installDir, name) {
|
|
45
|
+
return existsSync(join(installDir, 'node_modules', name, 'package.json'));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Install a single npm package into .ai/packages/.
|
|
49
|
+
*/
|
|
50
|
+
async function installNpm(spec, installDir) {
|
|
9
51
|
await mkdir(installDir, { recursive: true });
|
|
10
|
-
|
|
52
|
+
// Ensure package.json exists (npm --prefix needs it)
|
|
53
|
+
const pkgJsonPath = join(installDir, 'package.json');
|
|
54
|
+
if (!existsSync(pkgJsonPath)) {
|
|
55
|
+
await writeFile(pkgJsonPath, JSON.stringify({ private: true, dependencies: {} }, null, 2) + '\n');
|
|
56
|
+
}
|
|
57
|
+
execSync(`npm install --prefix "${installDir}" "${spec}"`, {
|
|
11
58
|
stdio: 'pipe',
|
|
12
59
|
timeout: 60000,
|
|
13
60
|
});
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Install a dot-ai package from npm.
|
|
64
|
+
*
|
|
65
|
+
* Installs into `.ai/packages/node_modules/`.
|
|
66
|
+
*/
|
|
67
|
+
export async function install(source, workspaceRoot) {
|
|
68
|
+
const installDir = getInstallDir(workspaceRoot);
|
|
69
|
+
const { name, spec } = parsePackageSource(source);
|
|
70
|
+
await installNpm(spec, installDir);
|
|
18
71
|
return readPackageInfo(installDir, name);
|
|
19
72
|
}
|
|
20
73
|
/**
|
|
21
74
|
* Remove an installed package.
|
|
22
75
|
*/
|
|
23
|
-
export async function remove(name,
|
|
24
|
-
const installDir =
|
|
76
|
+
export async function remove(name, workspaceRoot) {
|
|
77
|
+
const installDir = getInstallDir(workspaceRoot);
|
|
25
78
|
execSync(`npm uninstall --prefix "${installDir}" "${name}"`, {
|
|
26
79
|
stdio: 'pipe',
|
|
27
80
|
timeout: 60000,
|
|
@@ -30,8 +83,8 @@ export async function remove(name, targetDir) {
|
|
|
30
83
|
/**
|
|
31
84
|
* List installed dot-ai packages.
|
|
32
85
|
*/
|
|
33
|
-
export async function listPackages(
|
|
34
|
-
const installDir =
|
|
86
|
+
export async function listPackages(workspaceRoot) {
|
|
87
|
+
const installDir = getInstallDir(workspaceRoot);
|
|
35
88
|
const pkgJsonPath = join(installDir, 'package.json');
|
|
36
89
|
try {
|
|
37
90
|
const raw = await readFile(pkgJsonPath, 'utf-8');
|
|
@@ -58,22 +111,75 @@ export async function listPackages(targetDir) {
|
|
|
58
111
|
/**
|
|
59
112
|
* Resolve dot-ai manifest from installed packages.
|
|
60
113
|
*/
|
|
61
|
-
export async function resolvePackages(
|
|
62
|
-
const packages = await listPackages(
|
|
114
|
+
export async function resolvePackages(workspaceRoot) {
|
|
115
|
+
const packages = await listPackages(workspaceRoot);
|
|
63
116
|
const result = { extensions: [], skills: [], providers: [] };
|
|
64
|
-
const installDir =
|
|
117
|
+
const installDir = getInstallDir(workspaceRoot);
|
|
65
118
|
for (const pkg of packages) {
|
|
66
119
|
if (!pkg.dotAi)
|
|
67
120
|
continue;
|
|
68
121
|
const pkgDir = join(installDir, 'node_modules', pkg.name);
|
|
69
122
|
if (pkg.dotAi.extensions) {
|
|
70
|
-
result.extensions.push(...pkg.dotAi.extensions.map(e =>
|
|
123
|
+
result.extensions.push(...pkg.dotAi.extensions.map(e => resolve(pkgDir, e)));
|
|
71
124
|
}
|
|
72
125
|
if (pkg.dotAi.skills) {
|
|
73
|
-
result.skills.push(...pkg.dotAi.skills.map(s =>
|
|
126
|
+
result.skills.push(...pkg.dotAi.skills.map(s => resolve(pkgDir, s)));
|
|
74
127
|
}
|
|
75
128
|
if (pkg.dotAi.providers) {
|
|
76
|
-
result.providers.push(...pkg.dotAi.providers.map(p =>
|
|
129
|
+
result.providers.push(...pkg.dotAi.providers.map(p => resolve(pkgDir, p)));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Ensure all packages from settings.json are installed.
|
|
136
|
+
*
|
|
137
|
+
* Like Pi's `resolvePackageSources()` with auto-install:
|
|
138
|
+
* - Reads the `packages` array from settings.json config
|
|
139
|
+
* - For each package, checks if it's already installed in `.ai/packages/`
|
|
140
|
+
* - If not installed, auto-installs it via npm
|
|
141
|
+
* - The `onMissing` callback allows callers to control behavior (install/skip/error)
|
|
142
|
+
*
|
|
143
|
+
* This should be called BEFORE `discoverExtensions()` in the boot flow,
|
|
144
|
+
* so that installed packages are available for extension discovery.
|
|
145
|
+
*/
|
|
146
|
+
export async function ensurePackagesInstalled(workspaceRoot, packages, onMissing) {
|
|
147
|
+
const installDir = getInstallDir(workspaceRoot);
|
|
148
|
+
const result = {
|
|
149
|
+
installed: [],
|
|
150
|
+
skipped: [],
|
|
151
|
+
errors: [],
|
|
152
|
+
};
|
|
153
|
+
for (const source of packages) {
|
|
154
|
+
const { name, spec } = parsePackageSource(source);
|
|
155
|
+
// Already installed? Skip.
|
|
156
|
+
if (isPackageInstalled(installDir, name)) {
|
|
157
|
+
result.skipped.push(source);
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
// Determine action for missing package
|
|
161
|
+
let action = 'install';
|
|
162
|
+
if (onMissing) {
|
|
163
|
+
action = await onMissing(source);
|
|
164
|
+
}
|
|
165
|
+
if (action === 'skip') {
|
|
166
|
+
result.skipped.push(source);
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
if (action === 'error') {
|
|
170
|
+
result.errors.push({ source, error: `Missing package: ${source}` });
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
// Auto-install
|
|
174
|
+
try {
|
|
175
|
+
await installNpm(spec, installDir);
|
|
176
|
+
result.installed.push(source);
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
result.errors.push({
|
|
180
|
+
source,
|
|
181
|
+
error: err instanceof Error ? err.message : String(err),
|
|
182
|
+
});
|
|
77
183
|
}
|
|
78
184
|
}
|
|
79
185
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,44 +1,36 @@
|
|
|
1
|
-
import type { FormatOptions } from './format.js';
|
|
2
1
|
import type { Capability } from './capabilities.js';
|
|
3
2
|
import { ExtensionRunner } from './extension-runner.js';
|
|
4
|
-
import type { ToolCallEvent, ToolCallResult, ExtensionDiagnostic, Section, RouteResult, CommandDefinition } from './extension-types.js';
|
|
5
|
-
import type {
|
|
3
|
+
import type { ToolCallEvent, ToolCallResult, ExtensionDiagnostic, Section, RouteResult, CommandDefinition, ToolDefinition } from './extension-types.js';
|
|
4
|
+
import type { Label, Skill, Identity, ExtensionsConfig } from './types.js';
|
|
6
5
|
import type { Logger } from './logger.js';
|
|
7
6
|
export interface RuntimeOptions {
|
|
8
7
|
/** Workspace root directory (contains .ai/) */
|
|
9
8
|
workspaceRoot: string;
|
|
10
9
|
/** Optional logger */
|
|
11
10
|
logger?: Logger;
|
|
12
|
-
/** Skip identity sections in formatted output (useful when adapter injects them separately) */
|
|
13
|
-
skipIdentities?: boolean;
|
|
14
|
-
/** Max skills in formatted output */
|
|
15
|
-
maxSkills?: number;
|
|
16
|
-
/** Max chars per skill */
|
|
17
|
-
maxSkillLength?: number;
|
|
18
11
|
/** Token budget for formatted output */
|
|
19
12
|
tokenBudget?: number;
|
|
20
13
|
/** Extension configuration */
|
|
21
14
|
extensions?: ExtensionsConfig;
|
|
22
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* v7 ProcessResult — structured data only.
|
|
18
|
+
* Adapters handle formatting via formatSections() utility.
|
|
19
|
+
*/
|
|
23
20
|
export interface ProcessResult {
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
-
/** The enriched context (for adapters that need raw data) */
|
|
27
|
-
enriched: EnrichedContext;
|
|
28
|
-
/** Interactive capabilities built from extensions */
|
|
29
|
-
capabilities: Capability[];
|
|
30
|
-
/** Routing result from route event */
|
|
31
|
-
routing?: RouteResult | null;
|
|
21
|
+
/** Sections collected from extensions, sorted by priority DESC */
|
|
22
|
+
sections: Section[];
|
|
32
23
|
/** Matched labels */
|
|
33
|
-
labels
|
|
34
|
-
/**
|
|
35
|
-
|
|
24
|
+
labels: Label[];
|
|
25
|
+
/** Routing result from route event */
|
|
26
|
+
routing: RouteResult | null;
|
|
36
27
|
}
|
|
37
28
|
export interface RuntimeDiagnostics {
|
|
38
29
|
extensions: ExtensionDiagnostic[];
|
|
39
|
-
usedTiers: string[];
|
|
40
30
|
capabilityCount: number;
|
|
41
31
|
vocabularySize: number;
|
|
32
|
+
skillCount: number;
|
|
33
|
+
identityCount: number;
|
|
42
34
|
}
|
|
43
35
|
/**
|
|
44
36
|
* DotAiRuntime — encapsulates the full extension-based pipeline lifecycle.
|
|
@@ -55,7 +47,7 @@ export declare class DotAiRuntime {
|
|
|
55
47
|
constructor(options: RuntimeOptions);
|
|
56
48
|
private buildCtx;
|
|
57
49
|
/**
|
|
58
|
-
* Boot the runtime — loads config, discovers extensions,
|
|
50
|
+
* Boot the runtime — loads config, discovers extensions, builds vocabulary from registrations.
|
|
59
51
|
* Call once per session. Safe to call multiple times (idempotent).
|
|
60
52
|
*/
|
|
61
53
|
boot(): Promise<void>;
|
|
@@ -67,16 +59,20 @@ export declare class DotAiRuntime {
|
|
|
67
59
|
* Process a prompt through the pipeline:
|
|
68
60
|
* 1. Extract labels (core regex + label_extract chain-transform)
|
|
69
61
|
* 2. Route (first-result)
|
|
70
|
-
* 3. Context enrich (collect-sections)
|
|
71
|
-
* 4.
|
|
72
|
-
*
|
|
62
|
+
* 3. Context enrich (collect-sections) + core system section
|
|
63
|
+
* 4. Sort sections by priority DESC
|
|
64
|
+
*
|
|
65
|
+
* Returns structured data. Adapters call formatSections() to get markdown.
|
|
73
66
|
*/
|
|
74
|
-
processPrompt(prompt: string
|
|
67
|
+
processPrompt(prompt: string): Promise<ProcessResult>;
|
|
75
68
|
/**
|
|
76
|
-
*
|
|
77
|
-
* Memory extensions handle storage in their handlers.
|
|
69
|
+
* Execute a registered tool by name.
|
|
78
70
|
*/
|
|
79
|
-
|
|
71
|
+
executeTool(name: string, input: Record<string, unknown>): Promise<{
|
|
72
|
+
content: string;
|
|
73
|
+
details?: unknown;
|
|
74
|
+
isError?: boolean;
|
|
75
|
+
}>;
|
|
80
76
|
/**
|
|
81
77
|
* Fire an event (for adapters to call on agent-native events).
|
|
82
78
|
*/
|
|
@@ -99,21 +95,13 @@ export declare class DotAiRuntime {
|
|
|
99
95
|
get runner(): ExtensionRunner | null;
|
|
100
96
|
/** Get registered commands from extensions */
|
|
101
97
|
get commands(): CommandDefinition[];
|
|
98
|
+
/** Get registered skills from extensions */
|
|
99
|
+
get skills(): Skill[];
|
|
100
|
+
/** Get registered identities from extensions */
|
|
101
|
+
get identities(): Identity[];
|
|
102
|
+
/** Get registered tools from extensions */
|
|
103
|
+
get tools(): ToolDefinition[];
|
|
102
104
|
/** Get diagnostics including extensions */
|
|
103
105
|
get diagnostics(): RuntimeDiagnostics;
|
|
104
|
-
/**
|
|
105
|
-
* Assemble sorted sections into a single markdown string.
|
|
106
|
-
*/
|
|
107
|
-
private assembleSections;
|
|
108
|
-
/**
|
|
109
|
-
* Trim sections to fit within a token budget.
|
|
110
|
-
* Respects trimStrategy: 'never' sections are never removed.
|
|
111
|
-
*/
|
|
112
|
-
private trimSections;
|
|
113
|
-
/**
|
|
114
|
-
* Build a backward-compatible EnrichedContext from pipeline output.
|
|
115
|
-
* Adapters that log enriched fields still work.
|
|
116
|
-
*/
|
|
117
|
-
private buildEnrichedFromSections;
|
|
118
106
|
}
|
|
119
107
|
//# sourceMappingURL=runtime.d.ts.map
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|