@aexol/spectral 0.8.6 → 0.8.9
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/auth-helper.d.ts +49 -0
- package/dist/auth-helper.d.ts.map +1 -0
- package/dist/auth-helper.js +191 -0
- package/dist/commands/login-oauth.d.ts +2 -9
- package/dist/commands/login-oauth.d.ts.map +1 -1
- package/dist/commands/login-oauth.js +10 -105
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +68 -1
- package/dist/designer/systems.d.ts.map +1 -1
- package/dist/designer/systems.js +5 -0
- package/dist/extensions/aexol-mcp.d.ts.map +1 -1
- package/dist/extensions/aexol-mcp.js +33 -2
- package/dist/extensions/browser/browser-service.d.ts +104 -0
- package/dist/extensions/browser/browser-service.d.ts.map +1 -0
- package/dist/extensions/browser/browser-service.js +333 -0
- package/dist/extensions/browser/config.d.ts +24 -0
- package/dist/extensions/browser/config.d.ts.map +1 -0
- package/dist/extensions/browser/config.js +17 -0
- package/dist/extensions/browser/index.d.ts +35 -0
- package/dist/extensions/browser/index.d.ts.map +1 -0
- package/dist/extensions/browser/index.js +126 -0
- package/dist/extensions/browser/stream/signaling-client.d.ts +28 -0
- package/dist/extensions/browser/stream/signaling-client.d.ts.map +1 -0
- package/dist/extensions/browser/stream/signaling-client.js +69 -0
- package/dist/extensions/browser/stream/stream-injector.d.ts +30 -0
- package/dist/extensions/browser/stream/stream-injector.d.ts.map +1 -0
- package/dist/extensions/browser/stream/stream-injector.js +161 -0
- package/dist/extensions/browser/stream/stream-tool.d.ts +10 -0
- package/dist/extensions/browser/stream/stream-tool.d.ts.map +1 -0
- package/dist/extensions/browser/stream/stream-tool.js +182 -0
- package/dist/extensions/browser/tools/console.d.ts +7 -0
- package/dist/extensions/browser/tools/console.d.ts.map +1 -0
- package/dist/extensions/browser/tools/console.js +54 -0
- package/dist/extensions/browser/tools/core.d.ts +7 -0
- package/dist/extensions/browser/tools/core.d.ts.map +1 -0
- package/dist/extensions/browser/tools/core.js +115 -0
- package/dist/extensions/browser/tools/dialog.d.ts +11 -0
- package/dist/extensions/browser/tools/dialog.d.ts.map +1 -0
- package/dist/extensions/browser/tools/dialog.js +54 -0
- package/dist/extensions/browser/tools/drop.d.ts +7 -0
- package/dist/extensions/browser/tools/drop.d.ts.map +1 -0
- package/dist/extensions/browser/tools/drop.js +93 -0
- package/dist/extensions/browser/tools/evaluate.d.ts +7 -0
- package/dist/extensions/browser/tools/evaluate.d.ts.map +1 -0
- package/dist/extensions/browser/tools/evaluate.js +105 -0
- package/dist/extensions/browser/tools/input.d.ts +7 -0
- package/dist/extensions/browser/tools/input.d.ts.map +1 -0
- package/dist/extensions/browser/tools/input.js +290 -0
- package/dist/extensions/browser/tools/network.d.ts +7 -0
- package/dist/extensions/browser/tools/network.d.ts.map +1 -0
- package/dist/extensions/browser/tools/network.js +116 -0
- package/dist/extensions/browser/tools/screenshot.d.ts +7 -0
- package/dist/extensions/browser/tools/screenshot.d.ts.map +1 -0
- package/dist/extensions/browser/tools/screenshot.js +153 -0
- package/dist/extensions/browser/tools/tabs.d.ts +7 -0
- package/dist/extensions/browser/tools/tabs.d.ts.map +1 -0
- package/dist/extensions/browser/tools/tabs.js +72 -0
- package/dist/extensions/browser/tools/wait.d.ts +7 -0
- package/dist/extensions/browser/tools/wait.d.ts.map +1 -0
- package/dist/extensions/browser/tools/wait.js +64 -0
- package/dist/extensions/kanban-bridge.d.ts.map +1 -1
- package/dist/extensions/kanban-bridge.js +70 -3
- package/dist/mcp/ui-server.d.ts.map +1 -1
- package/dist/mcp/ui-server.js +23 -10
- package/dist/relay/models-fetch.d.ts +1 -1
- package/dist/relay/models-fetch.js +4 -4
- package/dist/sdk/coding-agent/core/extensions/native-extensions.d.ts +60 -0
- package/dist/sdk/coding-agent/core/extensions/native-extensions.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/extensions/native-extensions.js +108 -0
- package/dist/sdk/coding-agent/core/resource-loader.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/resource-loader.js +23 -1
- package/dist/sdk/coding-agent/core/settings-manager.d.ts +5 -0
- package/dist/sdk/coding-agent/core/settings-manager.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/settings-manager.js +12 -0
- package/dist/server/agent-bridge.d.ts +2 -2
- package/dist/server/agent-bridge.d.ts.map +1 -1
- package/dist/server/agent-bridge.js +1 -1
- package/dist/server/session-stream.d.ts.map +1 -1
- package/dist/server/session-stream.js +24 -5
- package/dist/server/sqlite-adapter.d.ts +41 -0
- package/dist/server/sqlite-adapter.d.ts.map +1 -0
- package/dist/server/sqlite-adapter.js +128 -0
- package/dist/server/storage.d.ts.map +1 -1
- package/dist/server/storage.js +2 -2
- package/package.json +5 -2
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native extension manifests — single source of truth for built-in extensions.
|
|
3
|
+
*
|
|
4
|
+
* Native extensions are loaded by default on all machines unless explicitly
|
|
5
|
+
* disabled via `Settings.disabledNativeExtensions`. Each extension has a
|
|
6
|
+
* stable `id` used in settings, a human-readable label for the landing UI,
|
|
7
|
+
* and an optional file path for extensions that live as separate files.
|
|
8
|
+
*
|
|
9
|
+
* Extensions with empty `entryPath` are "core" features implemented directly
|
|
10
|
+
* in the agent runtime (e.g., memory). They don't need a file to load, but
|
|
11
|
+
* they still appear in the settings panel so users can see and toggle them.
|
|
12
|
+
*/
|
|
13
|
+
export interface NativeExtensionManifest {
|
|
14
|
+
/** Stable identifier used in settings (e.g. "memory", "browser"). */
|
|
15
|
+
id: string;
|
|
16
|
+
/** Human-readable name shown in the landing settings UI. */
|
|
17
|
+
label: string;
|
|
18
|
+
/** One-line description for tooltips. */
|
|
19
|
+
description: string;
|
|
20
|
+
/** Category for grouping in the settings panel. */
|
|
21
|
+
category: "core" | "automation" | "integration";
|
|
22
|
+
/**
|
|
23
|
+
* Path to the extension entry file, relative to the CLI's extensions directory.
|
|
24
|
+
* Empty string means the extension is built into the runtime (no file to load).
|
|
25
|
+
*/
|
|
26
|
+
entryPath: string;
|
|
27
|
+
/** Whether this extension is enabled by default on all machines. */
|
|
28
|
+
defaultEnabled: boolean;
|
|
29
|
+
/** Optional tags for filtering. */
|
|
30
|
+
tags?: string[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Canonical list of native extensions.
|
|
34
|
+
*
|
|
35
|
+
* To add a new native extension, add its manifest here. The extension will
|
|
36
|
+
* automatically appear in the landing settings panel and be loaded by default
|
|
37
|
+
* unless `defaultEnabled: false`.
|
|
38
|
+
*/
|
|
39
|
+
export declare const NATIVE_EXTENSIONS: NativeExtensionManifest[];
|
|
40
|
+
/**
|
|
41
|
+
* Look up a native extension by id. Returns undefined for unknown ids.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getNativeExtension(id: string): NativeExtensionManifest | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Get the list of native extension entry paths that should be loaded,
|
|
46
|
+
* respecting a set of disabled extension ids.
|
|
47
|
+
*/
|
|
48
|
+
export declare function getEnabledNativeExtensionPaths(disabledIds: Set<string>): string[];
|
|
49
|
+
/**
|
|
50
|
+
* Build the payload for the `native_extensions_info` relay frame.
|
|
51
|
+
*/
|
|
52
|
+
export declare function buildNativeExtensionsInfo(disabledIds: Set<string>): Array<{
|
|
53
|
+
id: string;
|
|
54
|
+
label: string;
|
|
55
|
+
description: string;
|
|
56
|
+
category: string;
|
|
57
|
+
enabled: boolean;
|
|
58
|
+
tags?: string[];
|
|
59
|
+
}>;
|
|
60
|
+
//# sourceMappingURL=native-extensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-extensions.d.ts","sourceRoot":"","sources":["../../../../../src/sdk/coding-agent/core/extensions/native-extensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,uBAAuB;IACtC,qEAAqE;IACrE,EAAE,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,CAAC;IAChD;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,cAAc,EAAE,OAAO,CAAC;IACxB,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,uBAAuB,EAkEtD,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAElF;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAIjF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IACzE,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC,CASD"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native extension manifests — single source of truth for built-in extensions.
|
|
3
|
+
*
|
|
4
|
+
* Native extensions are loaded by default on all machines unless explicitly
|
|
5
|
+
* disabled via `Settings.disabledNativeExtensions`. Each extension has a
|
|
6
|
+
* stable `id` used in settings, a human-readable label for the landing UI,
|
|
7
|
+
* and an optional file path for extensions that live as separate files.
|
|
8
|
+
*
|
|
9
|
+
* Extensions with empty `entryPath` are "core" features implemented directly
|
|
10
|
+
* in the agent runtime (e.g., memory). They don't need a file to load, but
|
|
11
|
+
* they still appear in the settings panel so users can see and toggle them.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Canonical list of native extensions.
|
|
15
|
+
*
|
|
16
|
+
* To add a new native extension, add its manifest here. The extension will
|
|
17
|
+
* automatically appear in the landing settings panel and be loaded by default
|
|
18
|
+
* unless `defaultEnabled: false`.
|
|
19
|
+
*/
|
|
20
|
+
export const NATIVE_EXTENSIONS = [
|
|
21
|
+
{
|
|
22
|
+
id: "memory",
|
|
23
|
+
label: "Observational Memory",
|
|
24
|
+
description: "Persists observations and reflections across sessions for long-term context. " +
|
|
25
|
+
"Enables the agent to remember project conventions, decisions, and patterns.",
|
|
26
|
+
category: "core",
|
|
27
|
+
entryPath: "",
|
|
28
|
+
defaultEnabled: true,
|
|
29
|
+
tags: ["core", "context"],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: "browser",
|
|
33
|
+
label: "Browser Automation",
|
|
34
|
+
description: "Controls a real Chromium browser: navigate to URLs, click elements, type text, " +
|
|
35
|
+
"take screenshots, inspect network traffic, and more. 23 automation tools powered by Playwright.",
|
|
36
|
+
category: "automation",
|
|
37
|
+
entryPath: "src/extensions/browser/index.ts",
|
|
38
|
+
defaultEnabled: true,
|
|
39
|
+
tags: ["automation", "playwright", "chrome"],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: "kanban",
|
|
43
|
+
label: "Kanban Bridge",
|
|
44
|
+
description: "Manages Kanban tasks on the Aexol Studio board. Enables task-driven execution " +
|
|
45
|
+
"with BACKLOG → TODO → IN_PROGRESS → DONE workflow tracking.",
|
|
46
|
+
category: "integration",
|
|
47
|
+
entryPath: "src/extensions/kanban-bridge.ts",
|
|
48
|
+
defaultEnabled: true,
|
|
49
|
+
tags: ["studio", "tasks", "project-management"],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: "studio-mcp",
|
|
53
|
+
label: "Aexol Studio MCP",
|
|
54
|
+
description: "Proxies remote Studio tools to the agent: inference, cloud file operations, " +
|
|
55
|
+
"project binding, and team management.",
|
|
56
|
+
category: "integration",
|
|
57
|
+
entryPath: "src/extensions/aexol-mcp.ts",
|
|
58
|
+
defaultEnabled: true,
|
|
59
|
+
tags: ["studio", "mcp", "cloud"],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: "openrouter-attribution",
|
|
63
|
+
label: "OpenRouter Attribution",
|
|
64
|
+
description: "Adds attribution headers for OpenRouter API usage tracking and compliance.",
|
|
65
|
+
category: "integration",
|
|
66
|
+
entryPath: "src/extensions/openrouter-attribution.ts",
|
|
67
|
+
defaultEnabled: true,
|
|
68
|
+
tags: ["api", "attribution"],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "spectral-vision-fallback",
|
|
72
|
+
label: "Spectral Vision Fallback",
|
|
73
|
+
description: "Provides image description capabilities via configured vision models " +
|
|
74
|
+
"when direct image analysis is not available.",
|
|
75
|
+
category: "core",
|
|
76
|
+
entryPath: "src/extensions/spectral-vision-fallback.ts",
|
|
77
|
+
defaultEnabled: true,
|
|
78
|
+
tags: ["vision", "images"],
|
|
79
|
+
},
|
|
80
|
+
];
|
|
81
|
+
/**
|
|
82
|
+
* Look up a native extension by id. Returns undefined for unknown ids.
|
|
83
|
+
*/
|
|
84
|
+
export function getNativeExtension(id) {
|
|
85
|
+
return NATIVE_EXTENSIONS.find((e) => e.id === id);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get the list of native extension entry paths that should be loaded,
|
|
89
|
+
* respecting a set of disabled extension ids.
|
|
90
|
+
*/
|
|
91
|
+
export function getEnabledNativeExtensionPaths(disabledIds) {
|
|
92
|
+
return NATIVE_EXTENSIONS
|
|
93
|
+
.filter((e) => e.defaultEnabled && !disabledIds.has(e.id) && e.entryPath !== "")
|
|
94
|
+
.map((e) => e.entryPath);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Build the payload for the `native_extensions_info` relay frame.
|
|
98
|
+
*/
|
|
99
|
+
export function buildNativeExtensionsInfo(disabledIds) {
|
|
100
|
+
return NATIVE_EXTENSIONS.map((e) => ({
|
|
101
|
+
id: e.id,
|
|
102
|
+
label: e.label,
|
|
103
|
+
description: e.description,
|
|
104
|
+
category: e.category,
|
|
105
|
+
enabled: e.defaultEnabled && !disabledIds.has(e.id),
|
|
106
|
+
tags: e.tags,
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-loader.d.ts","sourceRoot":"","sources":["../../../../src/sdk/coding-agent/core/resource-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resource-loader.d.ts","sourceRoot":"","sources":["../../../../src/sdk/coding-agent/core/resource-loader.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG9E,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,KAAK,EAAa,gBAAgB,EAAoB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACjH,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,WAAW,sBAAsB;IACtC,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IAC7D,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IAC9D,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,cAAc;IAC9B,aAAa,IAAI,oBAAoB,CAAC;IACtC,SAAS,IAAI;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;KAAE,CAAC;IACpE,UAAU,IAAI;QAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;KAAE,CAAC;IAC/E,SAAS,IAAI;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;KAAE,CAAC;IACpE,cAAc,IAAI;QAAE,WAAW,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAC5E,eAAe,IAAI,MAAM,GAAG,SAAS,CAAC;IACtC,qBAAqB,IAAI,MAAM,EAAE,CAAC;IAClC,eAAe,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACrD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAqCD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CACjB,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAmC3C;AAED,MAAM,WAAW,4BAA4B;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,6BAA6B,CAAC,EAAE,MAAM,EAAE,CAAC;IACzC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,oBAAoB,CAAC;IAC1E,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;KAAE,KAAK;QAClF,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,WAAW,EAAE,kBAAkB,EAAE,CAAC;KAClC,CAAC;IACF,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;KAAE,KAAK;QAC7F,OAAO,EAAE,cAAc,EAAE,CAAC;QAC1B,WAAW,EAAE,kBAAkB,EAAE,CAAC;KAClC,CAAC;IACF,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;KAAE,KAAK;QAClF,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,WAAW,EAAE,kBAAkB,EAAE,CAAC;KAClC,CAAC;IACF,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,KAAK;QAC1F,WAAW,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtD,CAAC;IACF,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACxE,0BAA0B,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;CAC1D;AAED,qBAAa,qBAAsB,YAAW,cAAc;IAC3D,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,wBAAwB,CAAW;IAC3C,OAAO,CAAC,oBAAoB,CAAW;IACvC,OAAO,CAAC,6BAA6B,CAAW;IAChD,OAAO,CAAC,oBAAoB,CAAW;IACvC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,wBAAwB,CAAC,CAAW;IAC5C,OAAO,CAAC,kBAAkB,CAAC,CAAuD;IAClF,OAAO,CAAC,cAAc,CAAC,CAGrB;IACF,OAAO,CAAC,eAAe,CAAC,CAGtB;IACF,OAAO,CAAC,cAAc,CAAC,CAGrB;IACF,OAAO,CAAC,mBAAmB,CAAC,CAE1B;IACF,OAAO,CAAC,oBAAoB,CAAC,CAAmD;IAChF,OAAO,CAAC,0BAA0B,CAAC,CAA+B;IAElE,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,WAAW,CAA2C;IAC9D,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,kBAAkB,CAAW;IACrC,OAAO,CAAC,cAAc,CAAW;IACjC,OAAO,CAAC,yBAAyB,CAA0B;IAC3D,OAAO,CAAC,0BAA0B,CAA0B;IAC5D,OAAO,CAAC,yBAAyB,CAA0B;IAC3D,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,cAAc,CAAW;gBAErB,OAAO,EAAE,4BAA4B;IA+CjD,aAAa,IAAI,oBAAoB;IAIrC,SAAS,IAAI;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;KAAE;IAInE,UAAU,IAAI;QAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;KAAE;IAI9E,SAAS,IAAI;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;KAAE;IAInE,cAAc,IAAI;QAAE,WAAW,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;IAI3E,eAAe,IAAI,MAAM,GAAG,SAAS;IAIrC,qBAAqB,IAAI,MAAM,EAAE;IAIjC,eAAe,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;IAwC9C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAiM7B,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,qBAAqB;IA8C7B,OAAO,CAAC,2BAA2B;IA6CnC,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,UAAU;IA0ClB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,iBAAiB;YASX,sBAAsB;IAqBpC,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,8BAA8B;IActC,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,wBAAwB;CAqChC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
2
|
+
import { dirname } from "node:path";
|
|
2
3
|
import { join, resolve, sep } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
3
5
|
import chalk from "chalk";
|
|
4
6
|
import { CONFIG_DIR_NAME } from "../config.js";
|
|
5
7
|
import { loadThemeFromPath } from "./theme.js";
|
|
@@ -7,6 +9,7 @@ import { canonicalizePath, isLocalPath, resolvePath } from "../utils/paths.js";
|
|
|
7
9
|
import { createEventBus } from "./event-bus.js";
|
|
8
10
|
import { createExtensionRuntime, loadExtensionFromFactory, loadExtensions } from "./extensions/loader.js";
|
|
9
11
|
import { DefaultPackageManager } from "./package-manager.js";
|
|
12
|
+
import { getEnabledNativeExtensionPaths, } from "./extensions/native-extensions.js";
|
|
10
13
|
import { loadPromptTemplates } from "./prompt-templates.js";
|
|
11
14
|
import { SettingsManager } from "./settings-manager.js";
|
|
12
15
|
import { loadSkills } from "./skills.js";
|
|
@@ -226,7 +229,26 @@ export class DefaultResourceLoader {
|
|
|
226
229
|
return resources.filter((r) => r.enabled);
|
|
227
230
|
};
|
|
228
231
|
const getEnabledPaths = (resources) => getEnabledResources(resources).map((r) => r.path);
|
|
229
|
-
|
|
232
|
+
let enabledExtensions = getEnabledPaths(resolvedPaths.extensions);
|
|
233
|
+
// --- Native extensions (enabled by default, togglable from landing) ---
|
|
234
|
+
const settings = this.settingsManager.getSettings();
|
|
235
|
+
const disabledNative = new Set(settings.disabledNativeExtensions ?? []);
|
|
236
|
+
const nativePaths = getEnabledNativeExtensionPaths(disabledNative);
|
|
237
|
+
// Resolve native paths relative to the CLI package root.
|
|
238
|
+
// resource-loader.ts lives at cli-node/src/sdk/coding-agent/core/.
|
|
239
|
+
// Going up 4 levels (core → coding-agent → sdk → src → cli-node) reaches the package root.
|
|
240
|
+
const loaderDir = dirname(fileURLToPath(import.meta.url));
|
|
241
|
+
const packageRoot = resolvePath(resolve(loaderDir, "../../../.."));
|
|
242
|
+
const resolvedNativePaths = nativePaths.map((p) => resolve(packageRoot, p)).filter((p) => existsSync(p));
|
|
243
|
+
if (resolvedNativePaths.length > 0) {
|
|
244
|
+
enabledExtensions = [...enabledExtensions, ...resolvedNativePaths];
|
|
245
|
+
for (const p of resolvedNativePaths) {
|
|
246
|
+
if (!metadataByPath.has(p)) {
|
|
247
|
+
metadataByPath.set(p, { source: "native", scope: "user", origin: "top-level" });
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// --- end native extensions ---
|
|
230
252
|
const enabledSkillResources = getEnabledResources(resolvedPaths.skills);
|
|
231
253
|
const enabledPrompts = getEnabledPaths(resolvedPaths.prompts);
|
|
232
254
|
const enabledThemes = getEnabledPaths(resolvedPaths.themes);
|
|
@@ -68,6 +68,7 @@ export interface Settings {
|
|
|
68
68
|
thinkingBudgets?: ThinkingBudgetsSettings;
|
|
69
69
|
sessionDir?: string;
|
|
70
70
|
httpIdleTimeoutMs?: number;
|
|
71
|
+
disabledNativeExtensions?: string[];
|
|
71
72
|
}
|
|
72
73
|
export type SettingsScope = "global" | "project";
|
|
73
74
|
export interface SettingsStorage {
|
|
@@ -113,6 +114,8 @@ export declare class SettingsManager {
|
|
|
113
114
|
private static tryLoadFromStorage;
|
|
114
115
|
/** Migrate old settings format to new format */
|
|
115
116
|
private static migrateSettings;
|
|
117
|
+
/** Returns the currently active merged settings (global overridden by project). */
|
|
118
|
+
getSettings(): Settings;
|
|
116
119
|
getGlobalSettings(): Settings;
|
|
117
120
|
getProjectSettings(): Settings;
|
|
118
121
|
reload(): Promise<void>;
|
|
@@ -198,6 +201,8 @@ export declare class SettingsManager {
|
|
|
198
201
|
getPromptTemplatePaths(): string[];
|
|
199
202
|
setPromptTemplatePaths(paths: string[]): void;
|
|
200
203
|
setProjectPromptTemplatePaths(paths: string[]): void;
|
|
204
|
+
getDisabledNativeExtensions(): string[];
|
|
205
|
+
setDisabledNativeExtensions(paths: string[]): void;
|
|
201
206
|
getThinkingBudgets(): ThinkingBudgetsSettings | undefined;
|
|
202
207
|
getImageAutoResize(): boolean;
|
|
203
208
|
setImageAutoResize(enabled: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-manager.d.ts","sourceRoot":"","sources":["../../../../src/sdk/coding-agent/core/settings-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAQnD,MAAM,WAAW,kBAAkB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACtB,MAAM,GACN;IACA,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEL,MAAM,WAAW,QAAQ;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/E,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,YAAY,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC;IACvC,YAAY,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC;IACvC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"settings-manager.d.ts","sourceRoot":"","sources":["../../../../src/sdk/coding-agent/core/settings-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -221,6 +221,10 @@ export class SettingsManager {
|
|
|
221
221
|
}
|
|
222
222
|
return settings;
|
|
223
223
|
}
|
|
224
|
+
/** Returns the currently active merged settings (global overridden by project). */
|
|
225
|
+
getSettings() {
|
|
226
|
+
return this.settings;
|
|
227
|
+
}
|
|
224
228
|
getGlobalSettings() {
|
|
225
229
|
return structuredClone(this.globalSettings);
|
|
226
230
|
}
|
|
@@ -609,6 +613,14 @@ export class SettingsManager {
|
|
|
609
613
|
this.markProjectModified("prompts");
|
|
610
614
|
this.saveProjectSettings(projectSettings);
|
|
611
615
|
}
|
|
616
|
+
getDisabledNativeExtensions() {
|
|
617
|
+
return [...(this.settings.disabledNativeExtensions ?? [])];
|
|
618
|
+
}
|
|
619
|
+
setDisabledNativeExtensions(paths) {
|
|
620
|
+
this.globalSettings.disabledNativeExtensions = paths.length > 0 ? paths : undefined;
|
|
621
|
+
this.markModified("disabledNativeExtensions");
|
|
622
|
+
this.save();
|
|
623
|
+
}
|
|
612
624
|
getThinkingBudgets() {
|
|
613
625
|
return this.settings.thinkingBudgets;
|
|
614
626
|
}
|
|
@@ -68,7 +68,7 @@ export interface AgentBridgeOptions {
|
|
|
68
68
|
backendUrl: string;
|
|
69
69
|
/**
|
|
70
70
|
* Bearer token used to authenticate with the backend's `/v1/*` endpoints
|
|
71
|
-
* AND with the GraphQL `
|
|
71
|
+
* AND with the GraphQL `availableAgentModels` query. Issued by
|
|
72
72
|
* `ensureMachineRegistered` and persisted in `machine.json`.
|
|
73
73
|
*/
|
|
74
74
|
machineJwt: string;
|
|
@@ -144,7 +144,7 @@ export declare class AgentBridge {
|
|
|
144
144
|
* envelopes carrying the same modelId don't churn spectral's internal state.
|
|
145
145
|
*/
|
|
146
146
|
private lastAppliedModelId?;
|
|
147
|
-
/** Current model's credit rates (from
|
|
147
|
+
/** Current model's credit rates (from availableAgentModels), used for token_usage. */
|
|
148
148
|
private activeCreditRates;
|
|
149
149
|
private readonly memoryRuntime;
|
|
150
150
|
private memoryPhase;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-bridge.d.ts","sourceRoot":"","sources":["../../src/server/agent-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAcH,OAAO,EAQL,KAAK,iBAAiB,EAEvB,MAAM,8BAA8B,CAAC;AAmBtC,OAAO,EACL,kBAAkB,IAAI,yBAAyB,EAEhD,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAiB3E,sEAAsE;AACtE,MAAM,MAAM,oBAAoB,GAAG,OAAO,yBAAyB,CAAC;AAmCpE,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACnC;;;;;OAKG;IACH,0BAA0B,EAAE,CAAC,GAAG,EAAE;QAChC,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,KAAK,IAAI,CAAC;IACX;;;OAGG;IACH,yBAAyB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC9C;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;CAC3C;AAmXD,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAC,CAAe;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,OAAO,CAAC,CAA0B;IAC1C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C;;;;;OAKG;IACH,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAC,CAAiB;IACvC;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,
|
|
1
|
+
{"version":3,"file":"agent-bridge.d.ts","sourceRoot":"","sources":["../../src/server/agent-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -405,7 +405,7 @@ export class AgentBridge {
|
|
|
405
405
|
* envelopes carrying the same modelId don't churn spectral's internal state.
|
|
406
406
|
*/
|
|
407
407
|
lastAppliedModelId;
|
|
408
|
-
/** Current model's credit rates (from
|
|
408
|
+
/** Current model's credit rates (from availableAgentModels), used for token_usage. */
|
|
409
409
|
activeCreditRates = null;
|
|
410
410
|
memoryRuntime = new Runtime();
|
|
411
411
|
memoryPhase = "idle";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-stream.d.ts","sourceRoot":"","sources":["../../src/server/session-stream.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-stream.d.ts","sourceRoot":"","sources":["../../src/server/session-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -646,10 +646,19 @@ export class SessionStreamManager {
|
|
|
646
646
|
events: [],
|
|
647
647
|
assistantText: "",
|
|
648
648
|
};
|
|
649
|
-
// 4. Fire spectral. `prompt` resolves on agent_end; errors
|
|
650
|
-
// AgentBridge
|
|
651
|
-
//
|
|
652
|
-
|
|
649
|
+
// 4. Fire spectral. `prompt` resolves on agent_end; errors inside
|
|
650
|
+
// AgentBridge are caught and emitted as wire errors. Synchronous throws
|
|
651
|
+
// (e.g. disposed bridge, missing session) arrive as a rejected promise
|
|
652
|
+
// we handle here so the frontend sees the error rather than a silent
|
|
653
|
+
// dead turn.
|
|
654
|
+
stream.bridge.prompt(content, images).catch((err) => {
|
|
655
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
656
|
+
console.error(`[spectral] error: bridge.prompt failed: ${msg}`);
|
|
657
|
+
this.broadcast(stream, {
|
|
658
|
+
type: "error",
|
|
659
|
+
message: `Agent prompt failed: ${msg}`,
|
|
660
|
+
});
|
|
661
|
+
});
|
|
653
662
|
}
|
|
654
663
|
/**
|
|
655
664
|
* Tear down everything. Best-effort: disposes every bridge, drops all
|
|
@@ -1405,7 +1414,17 @@ export class SessionStreamManager {
|
|
|
1405
1414
|
// Fire the next prompt. Reuses the sticky model from the just-completed
|
|
1406
1415
|
// turn (persisted by `prompt()` into the sessions.model_id column).
|
|
1407
1416
|
const lastModelId = this.store.getSessionModel(stream.sessionId);
|
|
1408
|
-
|
|
1417
|
+
this.prompt(stream.sessionId, next.content, lastModelId ?? undefined).catch((err) => {
|
|
1418
|
+
// Surface any errors from the auto-dequeue prompt (synchronous throws
|
|
1419
|
+
// before the first await, e.g. disposed manager, missing stream) so
|
|
1420
|
+
// subscribers see what went wrong instead of a silent dead turn.
|
|
1421
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
1422
|
+
console.error(`[spectral] error: auto-dequeue failed: ${msg}`);
|
|
1423
|
+
this.broadcast(stream, {
|
|
1424
|
+
type: "error",
|
|
1425
|
+
message: `Failed to start auto-dequeued prompt: ${msg}`,
|
|
1426
|
+
});
|
|
1427
|
+
});
|
|
1409
1428
|
return true;
|
|
1410
1429
|
}
|
|
1411
1430
|
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract SQLite interface to decouple SessionStore from a specific SQLite
|
|
3
|
+
* binding. Enables Bun standalone binary builds (bun:sqlite) while preserving
|
|
4
|
+
* the existing better-sqlite3 path for Node.js.
|
|
5
|
+
*
|
|
6
|
+
* Two implementations:
|
|
7
|
+
* - NodeSqliteAdapter — wraps better-sqlite3 (existing path, zero changes)
|
|
8
|
+
* - BunSqliteAdapter — wraps bun:sqlite (Bun built-in, zero dependencies)
|
|
9
|
+
*
|
|
10
|
+
* The factory `createSqliteAdapter()` detects the runtime and returns the
|
|
11
|
+
* correct adapter. Callers (SessionStore) only interact with the `SqliteAdapter`
|
|
12
|
+
* interface — they never import better-sqlite3 or bun:sqlite directly.
|
|
13
|
+
*/
|
|
14
|
+
/** Result shape from statement.run(). Matches both better-sqlite3 and bun:sqlite. */
|
|
15
|
+
export interface SqliteRunResult {
|
|
16
|
+
changes: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Typed prepared statement. Params is a tuple of bound parameter types;
|
|
20
|
+
* Row is the returned row shape for .all() and .get().
|
|
21
|
+
*/
|
|
22
|
+
export interface SqliteStatement<Params extends unknown[] = unknown[], Row = unknown> {
|
|
23
|
+
all(...params: Params): Row[];
|
|
24
|
+
get(...params: Params): Row | undefined;
|
|
25
|
+
run(...params: Params): SqliteRunResult;
|
|
26
|
+
}
|
|
27
|
+
/** Full SQLite adapter. Mirrors the better-sqlite3 API surface used by SessionStore. */
|
|
28
|
+
export interface SqliteAdapter {
|
|
29
|
+
prepare<Params extends unknown[], Row = unknown>(sql: string): SqliteStatement<Params, Row>;
|
|
30
|
+
exec(sql: string): void;
|
|
31
|
+
pragma(sql: string): void;
|
|
32
|
+
transaction<T>(fn: () => T): () => T;
|
|
33
|
+
close(): void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create a SQLite adapter for the given filesystem path. Auto-detects the
|
|
37
|
+
* runtime (Node.js → better-sqlite3, Bun → bun:sqlite) and returns the
|
|
38
|
+
* matching implementation.
|
|
39
|
+
*/
|
|
40
|
+
export declare function createSqliteAdapter(path: string): SqliteAdapter;
|
|
41
|
+
//# sourceMappingURL=sqlite-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/server/sqlite-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAcH,qFAAqF;AACrF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe,CAC9B,MAAM,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EACpC,GAAG,GAAG,OAAO;IAEb,GAAG,CAAC,GAAG,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;IAC9B,GAAG,CAAC,GAAG,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;IACxC,GAAG,CAAC,GAAG,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC;CACzC;AAED,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,MAAM,SAAS,OAAO,EAAE,EAAE,GAAG,GAAG,OAAO,EAC7C,GAAG,EAAE,MAAM,GACV,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IACrC,KAAK,IAAI,IAAI,CAAC;CACf;AAkID;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAK/D"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract SQLite interface to decouple SessionStore from a specific SQLite
|
|
3
|
+
* binding. Enables Bun standalone binary builds (bun:sqlite) while preserving
|
|
4
|
+
* the existing better-sqlite3 path for Node.js.
|
|
5
|
+
*
|
|
6
|
+
* Two implementations:
|
|
7
|
+
* - NodeSqliteAdapter — wraps better-sqlite3 (existing path, zero changes)
|
|
8
|
+
* - BunSqliteAdapter — wraps bun:sqlite (Bun built-in, zero dependencies)
|
|
9
|
+
*
|
|
10
|
+
* The factory `createSqliteAdapter()` detects the runtime and returns the
|
|
11
|
+
* correct adapter. Callers (SessionStore) only interact with the `SqliteAdapter`
|
|
12
|
+
* interface — they never import better-sqlite3 or bun:sqlite directly.
|
|
13
|
+
*/
|
|
14
|
+
import { createRequire } from "node:module";
|
|
15
|
+
const _require = createRequire(import.meta.url);
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// Node.js adapter (better-sqlite3)
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
class NodeStatement {
|
|
20
|
+
stmt;
|
|
21
|
+
constructor(stmt) {
|
|
22
|
+
this.stmt = stmt;
|
|
23
|
+
}
|
|
24
|
+
all(...params) {
|
|
25
|
+
return this.stmt.all(...params);
|
|
26
|
+
}
|
|
27
|
+
get(...params) {
|
|
28
|
+
return this.stmt.get(...params);
|
|
29
|
+
}
|
|
30
|
+
run(...params) {
|
|
31
|
+
return this.stmt.run(...params);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
class NodeSqliteAdapter {
|
|
35
|
+
db;
|
|
36
|
+
constructor(path) {
|
|
37
|
+
const Db = _require("better-sqlite3");
|
|
38
|
+
this.db = new Db(path);
|
|
39
|
+
}
|
|
40
|
+
prepare(sql) {
|
|
41
|
+
return new NodeStatement(this.db.prepare(sql));
|
|
42
|
+
}
|
|
43
|
+
exec(sql) {
|
|
44
|
+
this.db.exec(sql);
|
|
45
|
+
}
|
|
46
|
+
pragma(sql) {
|
|
47
|
+
this.db.pragma(sql);
|
|
48
|
+
}
|
|
49
|
+
transaction(fn) {
|
|
50
|
+
return this.db.transaction(fn);
|
|
51
|
+
}
|
|
52
|
+
close() {
|
|
53
|
+
this.db.close();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
// Bun adapter (bun:sqlite)
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
/**
|
|
60
|
+
* Statement wrapper for bun:sqlite. Bun's query() returns a Statement-like
|
|
61
|
+
* object with identical method signatures (.all, .get, .run), so the wrapper
|
|
62
|
+
* is a thin pass-through.
|
|
63
|
+
*/
|
|
64
|
+
class BunStatement {
|
|
65
|
+
stmt;
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
67
|
+
constructor(stmt) {
|
|
68
|
+
this.stmt = stmt;
|
|
69
|
+
}
|
|
70
|
+
all(...params) {
|
|
71
|
+
return this.stmt.all(...params);
|
|
72
|
+
}
|
|
73
|
+
get(...params) {
|
|
74
|
+
return this.stmt.get(...params);
|
|
75
|
+
}
|
|
76
|
+
run(...params) {
|
|
77
|
+
return this.stmt.run(...params);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* SQLite adapter backed by bun:sqlite — Bun's built-in, zero-dependency
|
|
82
|
+
* SQLite module. Used when `globalThis.Bun` is defined.
|
|
83
|
+
*
|
|
84
|
+
* PRAGMAs are executed via `exec("PRAGMA ...")` because bun:sqlite does not
|
|
85
|
+
* expose a `.pragma()` convenience method.
|
|
86
|
+
*/
|
|
87
|
+
class BunSqliteAdapter {
|
|
88
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
89
|
+
db;
|
|
90
|
+
constructor(path) {
|
|
91
|
+
const { Database } = _require("bun:sqlite");
|
|
92
|
+
this.db = new Database(path, { create: true });
|
|
93
|
+
this.db.exec("PRAGMA journal_mode = WAL");
|
|
94
|
+
this.db.exec("PRAGMA foreign_keys = ON");
|
|
95
|
+
}
|
|
96
|
+
prepare(sql) {
|
|
97
|
+
return new BunStatement(this.db.query(sql));
|
|
98
|
+
}
|
|
99
|
+
exec(sql) {
|
|
100
|
+
this.db.exec(sql);
|
|
101
|
+
}
|
|
102
|
+
pragma(sql) {
|
|
103
|
+
this.db.exec(`PRAGMA ${sql}`);
|
|
104
|
+
}
|
|
105
|
+
transaction(fn) {
|
|
106
|
+
return this.db.transaction(fn);
|
|
107
|
+
}
|
|
108
|
+
close() {
|
|
109
|
+
this.db.close();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
// Runtime detection + factory
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
function isBun() {
|
|
116
|
+
return typeof globalThis.Bun !== "undefined";
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Create a SQLite adapter for the given filesystem path. Auto-detects the
|
|
120
|
+
* runtime (Node.js → better-sqlite3, Bun → bun:sqlite) and returns the
|
|
121
|
+
* matching implementation.
|
|
122
|
+
*/
|
|
123
|
+
export function createSqliteAdapter(path) {
|
|
124
|
+
if (isBun()) {
|
|
125
|
+
return new BunSqliteAdapter(path);
|
|
126
|
+
}
|
|
127
|
+
return new NodeSqliteAdapter(path);
|
|
128
|
+
}
|