@redplanethq/corebrain 2.8.29 → 2.8.31
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/commands/gateway/register.js +1 -1
- package/dist/commands/gateway/register.js.map +1 -1
- package/dist/server/api/server.d.ts.map +1 -1
- package/dist/server/api/server.js +5 -0
- package/dist/server/api/server.js.map +1 -1
- package/dist/server/api/skills/index.d.ts +9 -0
- package/dist/server/api/skills/index.d.ts.map +1 -0
- package/dist/server/api/skills/index.js +12 -0
- package/dist/server/api/skills/index.js.map +1 -0
- package/dist/server/coding-session-watcher.d.ts +4 -3
- package/dist/server/coding-session-watcher.d.ts.map +1 -1
- package/dist/server/coding-session-watcher.js +5 -13
- package/dist/server/coding-session-watcher.js.map +1 -1
- package/dist/server/skills/install.d.ts +35 -0
- package/dist/server/skills/install.d.ts.map +1 -0
- package/dist/server/skills/install.js +182 -0
- package/dist/server/skills/install.js.map +1 -0
- package/dist/server/skills/skill-store.d.ts +12 -0
- package/dist/server/skills/skill-store.d.ts.map +1 -0
- package/dist/server/skills/skill-store.js +76 -0
- package/dist/server/skills/skill-store.js.map +1 -0
- package/dist/server/tools/skills-tools.d.ts +14 -0
- package/dist/server/tools/skills-tools.d.ts.map +1 -0
- package/dist/server/tools/skills-tools.js +100 -0
- package/dist/server/tools/skills-tools.js.map +1 -0
- package/dist/tui/chat.d.ts.map +1 -1
- package/dist/tui/chat.js +390 -57
- package/dist/tui/chat.js.map +1 -1
- package/dist/tui/components/approval-bar.d.ts +1 -1
- package/dist/tui/components/approval-bar.d.ts.map +1 -1
- package/dist/tui/components/approval-bar.js +1 -1
- package/dist/tui/components/approval-bar.js.map +1 -1
- package/dist/tui/components/approval-panel.d.ts +1 -1
- package/dist/tui/components/approval-panel.d.ts.map +1 -1
- package/dist/tui/components/approval-panel.js +1 -1
- package/dist/tui/components/approval-panel.js.map +1 -1
- package/dist/tui/components/context-bar.d.ts +26 -0
- package/dist/tui/components/context-bar.d.ts.map +1 -0
- package/dist/tui/components/context-bar.js +45 -0
- package/dist/tui/components/context-bar.js.map +1 -0
- package/dist/tui/components/conversation-selector.d.ts +24 -6
- package/dist/tui/components/conversation-selector.d.ts.map +1 -1
- package/dist/tui/components/conversation-selector.js +187 -117
- package/dist/tui/components/conversation-selector.js.map +1 -1
- package/dist/tui/components/integrations-view.d.ts +1 -1
- package/dist/tui/components/integrations-view.d.ts.map +1 -1
- package/dist/tui/components/integrations-view.js +1 -1
- package/dist/tui/components/integrations-view.js.map +1 -1
- package/dist/tui/components/scratchpad-panel.d.ts +28 -0
- package/dist/tui/components/scratchpad-panel.d.ts.map +1 -0
- package/dist/tui/components/scratchpad-panel.js +117 -0
- package/dist/tui/components/scratchpad-panel.js.map +1 -0
- package/dist/tui/components/split-pane.d.ts +23 -0
- package/dist/tui/components/split-pane.d.ts.map +1 -0
- package/dist/tui/components/split-pane.js +59 -0
- package/dist/tui/components/split-pane.js.map +1 -0
- package/dist/tui/components/status-line.d.ts +35 -6
- package/dist/tui/components/status-line.d.ts.map +1 -1
- package/dist/tui/components/status-line.js +149 -19
- package/dist/tui/components/status-line.js.map +1 -1
- package/dist/tui/components/task-detail.d.ts +1 -1
- package/dist/tui/components/task-detail.d.ts.map +1 -1
- package/dist/tui/components/task-detail.js +1 -1
- package/dist/tui/components/task-detail.js.map +1 -1
- package/dist/tui/components/task-list.d.ts +1 -1
- package/dist/tui/components/task-list.d.ts.map +1 -1
- package/dist/tui/components/task-list.js +5 -6
- package/dist/tui/components/task-list.js.map +1 -1
- package/dist/tui/components/task-runs.d.ts +32 -0
- package/dist/tui/components/task-runs.d.ts.map +1 -0
- package/dist/tui/components/task-runs.js +146 -0
- package/dist/tui/components/task-runs.js.map +1 -0
- package/dist/tui/components/tool-call-item.d.ts +1 -1
- package/dist/tui/components/tool-call-item.d.ts.map +1 -1
- package/dist/tui/components/tool-call-item.js +44 -13
- package/dist/tui/components/tool-call-item.js.map +1 -1
- package/dist/tui/components/widgets-view.d.ts +1 -1
- package/dist/tui/components/widgets-view.d.ts.map +1 -1
- package/dist/tui/components/widgets-view.js +1 -1
- package/dist/tui/components/widgets-view.js.map +1 -1
- package/dist/tui/utils/avatar.d.ts +1 -1
- package/dist/tui/utils/avatar.d.ts.map +1 -1
- package/dist/tui/utils/avatar.js +1 -1
- package/dist/tui/utils/avatar.js.map +1 -1
- package/dist/tui/utils/bundle-loader.d.ts.map +1 -1
- package/dist/tui/utils/bundle-loader.js +8 -1
- package/dist/tui/utils/bundle-loader.js.map +1 -1
- package/dist/tui/utils/integration-loader.d.ts +1 -1
- package/dist/tui/utils/integration-loader.d.ts.map +1 -1
- package/dist/tui/utils/stream.d.ts +75 -13
- package/dist/tui/utils/stream.d.ts.map +1 -1
- package/dist/tui/utils/stream.js +148 -13
- package/dist/tui/utils/stream.js.map +1 -1
- package/dist/utils/env-bootstrap.js +1 -1
- package/dist/utils/env-bootstrap.js.map +1 -1
- package/dist/utils/setup/docker.js +1 -1
- package/dist/utils/setup/docker.js.map +1 -1
- package/dist/utils/setup/railway.js +1 -1
- package/dist/utils/setup/railway.js.map +1 -1
- package/package.json +3 -2
- package/dist/tui/components/dashboard-view.d.ts +0 -20
- package/dist/tui/components/dashboard-view.d.ts.map +0 -1
- package/dist/tui/components/dashboard-view.js +0 -147
- package/dist/tui/components/dashboard-view.js.map +0 -1
- package/dist/tui/components/reminder-list.d.ts +0 -28
- package/dist/tui/components/reminder-list.d.ts.map +0 -1
- package/dist/tui/components/reminder-list.js +0 -261
- package/dist/tui/components/reminder-list.js.map +0 -1
|
@@ -103,7 +103,7 @@ export async function runRegister(opts) {
|
|
|
103
103
|
`${chalk.bold('baseUrl:')} ${baseUrl}`,
|
|
104
104
|
`${chalk.bold('securityKey:')} ${chalk.yellow(securityKey)}`,
|
|
105
105
|
'',
|
|
106
|
-
chalk.dim('Paste baseUrl + securityKey into CORE →
|
|
106
|
+
chalk.dim('Paste baseUrl + securityKey into CORE → Sidebar → Gateways → New gateway.'),
|
|
107
107
|
chalk.dim('This is the ONLY time the raw key is shown — it is not stored locally.'),
|
|
108
108
|
].join('\n'), 'Gateway registered');
|
|
109
109
|
return { ok: true, name, baseUrl, securityKey };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/commands/gateway/register.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/commands/gateway/register.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/server/api/server.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAC,KAAK,eAAe,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/server/api/server.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAC,KAAK,eAAe,EAAC,MAAM,SAAS,CAAC;AAetD,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyDlF;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAKlF"}
|
|
@@ -9,6 +9,7 @@ import { filesRoutes } from './files/index.js';
|
|
|
9
9
|
import { utilsRoutes } from './utils/index.js';
|
|
10
10
|
import { folderRoutes } from './folders/index.js';
|
|
11
11
|
import { shellRoutes } from './shell/index.js';
|
|
12
|
+
import { skillsRoutes } from './skills/index.js';
|
|
12
13
|
import { isSlotEnabled } from './manifest-builder.js';
|
|
13
14
|
import { getPreferences } from '../../config/preferences.js';
|
|
14
15
|
export async function buildServer(opts) {
|
|
@@ -40,6 +41,10 @@ export async function buildServer(opts) {
|
|
|
40
41
|
}
|
|
41
42
|
// utils has no slot — it's always enabled (e.g. `sleep`).
|
|
42
43
|
await app.register(utilsRoutes, { prefix: '/api/utils' });
|
|
44
|
+
// Skills management is always on — it only mutates `~/.corebrain/skills/`,
|
|
45
|
+
// which is implicitly within scope, and doesn't run user code beyond
|
|
46
|
+
// `git clone` of the URL the caller specifies.
|
|
47
|
+
await app.register(skillsRoutes, { prefix: '/api/skills' });
|
|
43
48
|
// Folder management — used by the webapp's per-gateway settings page to
|
|
44
49
|
// add/remove local paths or clone GitHub URLs into the workspace.
|
|
45
50
|
await app.register(folderRoutes, { prefix: '/api/folders' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server/api/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server/api/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FastifyPluginAsync } from 'fastify';
|
|
2
|
+
/**
|
|
3
|
+
* Mounted at `/api/skills`. Registers one POST route per skill management
|
|
4
|
+
* tool (`skill_install`, `skill_remove`). Auth is the standard gateway
|
|
5
|
+
* security key; the install itself doesn't run user code — it only writes
|
|
6
|
+
* the cloned repo subtree into `~/.corebrain/skills/<name>/`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const skillsRoutes: FastifyPluginAsync;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/api/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAIhD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,kBAE1B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { skillsTools, executeSkillsTool } from '../../../server/tools/skills-tools.js';
|
|
2
|
+
import { makeToolGroupRoutes } from '../tool-group.js';
|
|
3
|
+
/**
|
|
4
|
+
* Mounted at `/api/skills`. Registers one POST route per skill management
|
|
5
|
+
* tool (`skill_install`, `skill_remove`). Auth is the standard gateway
|
|
6
|
+
* security key; the install itself doesn't run user code — it only writes
|
|
7
|
+
* the cloned repo subtree into `~/.corebrain/skills/<name>/`.
|
|
8
|
+
*/
|
|
9
|
+
export const skillsRoutes = async (app) => {
|
|
10
|
+
await app.register(makeToolGroupRoutes(skillsTools, executeSkillsTool));
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/api/skills/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAuB,KAAK,EAAC,GAAG,EAAC,EAAE;IAC3D,MAAM,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC"}
|
|
@@ -28,9 +28,10 @@
|
|
|
28
28
|
* event, backstop mtime change, or a tick that sees `working`).
|
|
29
29
|
* Reaps abandoned sessions without cutting off active ones.
|
|
30
30
|
*
|
|
31
|
-
* Auth: we POST with the user's API key (`config.auth.apiKey`)
|
|
32
|
-
*
|
|
33
|
-
*
|
|
31
|
+
* Auth: we POST with the user's API key (`config.auth.apiKey`). The
|
|
32
|
+
* webapp resolves the session from `(workspaceId, externalSessionId)`
|
|
33
|
+
* — workspaceId comes from the API key, and externalSessionId is a UUID
|
|
34
|
+
* the coding agent generated, so no gateway-identity field is needed.
|
|
34
35
|
*/
|
|
35
36
|
export declare function startCodingSessionWatcher(args: {
|
|
36
37
|
sessionId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding-session-watcher.d.ts","sourceRoot":"","sources":["../../src/server/coding-session-watcher.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"coding-session-watcher.d.ts","sourceRoot":"","sources":["../../src/server/coding-session-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAmDH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACZ,GAAG,IAAI,CAyGP;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAuBhE"}
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
* event, backstop mtime change, or a tick that sees `working`).
|
|
29
29
|
* Reaps abandoned sessions without cutting off active ones.
|
|
30
30
|
*
|
|
31
|
-
* Auth: we POST with the user's API key (`config.auth.apiKey`)
|
|
32
|
-
*
|
|
33
|
-
*
|
|
31
|
+
* Auth: we POST with the user's API key (`config.auth.apiKey`). The
|
|
32
|
+
* webapp resolves the session from `(workspaceId, externalSessionId)`
|
|
33
|
+
* — workspaceId comes from the API key, and externalSessionId is a UUID
|
|
34
|
+
* the coding agent generated, so no gateway-identity field is needed.
|
|
34
35
|
*/
|
|
35
36
|
import { watch as fsWatch, statSync } from 'node:fs';
|
|
36
37
|
import { basename, dirname } from 'node:path';
|
|
37
38
|
import { getConfig } from '../config/index.js';
|
|
38
|
-
import { getPreferences } from '../config/preferences.js';
|
|
39
39
|
import { gatewayLog } from '../server/gateway-log.js';
|
|
40
40
|
import { ptyManager } from '../server/pty/manager.js';
|
|
41
41
|
import { getAgentReader, readAgentSessionTurns, } from '../utils/coding-agents/index.js';
|
|
@@ -286,15 +286,8 @@ async function postTurnEnded(sessionId) {
|
|
|
286
286
|
gatewayLog(`coding-watch: skip post sessionId=${sessionId} reason=no_auth url=${url ?? '(missing)'} apiKey=${apiKey ? '(set)' : '(missing)'}`);
|
|
287
287
|
return;
|
|
288
288
|
}
|
|
289
|
-
const prefs = getPreferences();
|
|
290
|
-
const baseUrl = prefs.gateway?.httpBaseUrl;
|
|
291
|
-
if (!baseUrl) {
|
|
292
|
-
gatewayLog(`coding-watch: skip post sessionId=${sessionId} reason=no_baseUrl`);
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
289
|
const endpoint = `${url.replace(/\/+$/, '')}/api/v1/internal/coding-events`;
|
|
296
|
-
|
|
297
|
-
gatewayLog(`coding-watch: posting turn_ended sessionId=${sessionId} endpoint=${endpoint} baseUrl=${sanitizedBaseUrl}`);
|
|
290
|
+
gatewayLog(`coding-watch: posting turn_ended sessionId=${sessionId} endpoint=${endpoint}`);
|
|
298
291
|
const controller = new AbortController();
|
|
299
292
|
const timeout = setTimeout(() => controller.abort(), 8_000);
|
|
300
293
|
try {
|
|
@@ -306,7 +299,6 @@ async function postTurnEnded(sessionId) {
|
|
|
306
299
|
},
|
|
307
300
|
body: JSON.stringify({
|
|
308
301
|
kind: 'turn_ended',
|
|
309
|
-
baseUrl: sanitizedBaseUrl,
|
|
310
302
|
sessionId,
|
|
311
303
|
at: new Date().toISOString(),
|
|
312
304
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding-session-watcher.js","sourceRoot":"","sources":["../../src/server/coding-session-watcher.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"coding-session-watcher.js","sourceRoot":"","sources":["../../src/server/coding-session-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { GatewaySkill } from '@redplanethq/gateway-protocol';
|
|
2
|
+
/**
|
|
3
|
+
* Source description for `installSkill`. Currently only `url` is supported —
|
|
4
|
+
* the gateway clones (optionally sparse-checkout'd) the repo and copies the
|
|
5
|
+
* skill's directory into `~/.corebrain/skills/<name>/`.
|
|
6
|
+
*/
|
|
7
|
+
export interface InstallFromUrl {
|
|
8
|
+
source: 'url';
|
|
9
|
+
/** `https://...` or `git@host:org/repo` clone URL. */
|
|
10
|
+
url: string;
|
|
11
|
+
/**
|
|
12
|
+
* Optional path inside the cloned repo to the skill folder. When set, the
|
|
13
|
+
* gateway uses `git sparse-checkout` so only this subtree is fetched —
|
|
14
|
+
* cheap for skills inside a large monorepo like `RedPlanetHQ/core`.
|
|
15
|
+
* If omitted, `installFromUrl` looks for SKILL.md at the repo root (or
|
|
16
|
+
* one level down if `name` is provided).
|
|
17
|
+
*/
|
|
18
|
+
subdir?: string;
|
|
19
|
+
/** Required when using `subdir`; otherwise inferred from frontmatter. */
|
|
20
|
+
name?: string;
|
|
21
|
+
/** If true, overwrite an existing skill with the same name. */
|
|
22
|
+
force?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export type InstallSource = InstallFromUrl;
|
|
25
|
+
export interface InstallOptions {
|
|
26
|
+
/** Skills root directory. Defaults to `~/.corebrain/skills/`. */
|
|
27
|
+
dir?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Install a skill from a git URL. Always stages in a temp dir and uses
|
|
31
|
+
* `fs.rename` for the final move so partial installs never appear on disk.
|
|
32
|
+
*/
|
|
33
|
+
export declare function installSkill(input: InstallSource, opts?: InstallOptions): Promise<GatewaySkill>;
|
|
34
|
+
export declare function removeSkill(name: string, opts?: InstallOptions): Promise<void>;
|
|
35
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/server/skills/install.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAQhE;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B,MAAM,EAAE,KAAK,CAAC;IACd,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC9B,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAsB,YAAY,CACjC,KAAK,EAAE,aAAa,EACpB,IAAI,GAAE,cAAmB,GACvB,OAAO,CAAC,YAAY,CAAC,CAIvB;AAyFD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CASxF"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { mkdtempSync, rmSync, renameSync, existsSync } from 'node:fs';
|
|
2
|
+
import { mkdir, readFile } from 'node:fs/promises';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join, isAbsolute } from 'node:path';
|
|
5
|
+
import { execFile } from 'node:child_process';
|
|
6
|
+
import { promisify } from 'node:util';
|
|
7
|
+
import matter from 'gray-matter';
|
|
8
|
+
import { DEFAULT_SKILLS_DIR } from './skill-store.js';
|
|
9
|
+
import { gatewayLog } from '../../server/gateway-log.js';
|
|
10
|
+
const execFileP = promisify(execFile);
|
|
11
|
+
const NAME_RE = /^[a-z0-9][a-z0-9-]*$/;
|
|
12
|
+
/**
|
|
13
|
+
* Install a skill from a git URL. Always stages in a temp dir and uses
|
|
14
|
+
* `fs.rename` for the final move so partial installs never appear on disk.
|
|
15
|
+
*/
|
|
16
|
+
export async function installSkill(input, opts = {}) {
|
|
17
|
+
const skillsDir = opts.dir ?? DEFAULT_SKILLS_DIR;
|
|
18
|
+
await mkdir(skillsDir, { recursive: true });
|
|
19
|
+
return installFromUrl(input, skillsDir);
|
|
20
|
+
}
|
|
21
|
+
async function installFromUrl(input, skillsDir) {
|
|
22
|
+
if (!/^https:\/\//.test(input.url) && !/^git@[\w.-]+:/.test(input.url)) {
|
|
23
|
+
throw new Error(`install: URL must start with "https://" or "git@host:" — got "${input.url}"`);
|
|
24
|
+
}
|
|
25
|
+
if (input.subdir) {
|
|
26
|
+
assertSafeSubdir(input.subdir);
|
|
27
|
+
if (!input.name) {
|
|
28
|
+
throw new Error('install: `name` is required when `subdir` is set');
|
|
29
|
+
}
|
|
30
|
+
assertValidName(input.name);
|
|
31
|
+
}
|
|
32
|
+
const cloneDir = mkdtempSync(join(tmpdir(), 'corebrain-skill-clone-'));
|
|
33
|
+
try {
|
|
34
|
+
await gitClone(input.url, cloneDir, input.subdir);
|
|
35
|
+
let sourceDir;
|
|
36
|
+
let name;
|
|
37
|
+
if (input.subdir) {
|
|
38
|
+
sourceDir = join(cloneDir, input.subdir);
|
|
39
|
+
if (!existsSync(join(sourceDir, 'SKILL.md'))) {
|
|
40
|
+
throw new Error(`install: subdir "${input.subdir}" has no SKILL.md (looked at ${sourceDir})`);
|
|
41
|
+
}
|
|
42
|
+
name = input.name;
|
|
43
|
+
// Validate frontmatter name matches the requested install name so a
|
|
44
|
+
// renamed skill folder can't masquerade as something else.
|
|
45
|
+
const fm = matter(await readFile(join(sourceDir, 'SKILL.md'), 'utf8')).data;
|
|
46
|
+
const fmName = typeof fm.name === 'string' ? fm.name : null;
|
|
47
|
+
if (fmName && fmName !== name) {
|
|
48
|
+
throw new Error(`install: SKILL.md frontmatter name "${fmName}" does not match install name "${name}"`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else if (input.name) {
|
|
52
|
+
assertValidName(input.name);
|
|
53
|
+
sourceDir = join(cloneDir, input.name);
|
|
54
|
+
if (!existsSync(join(sourceDir, 'SKILL.md'))) {
|
|
55
|
+
throw new Error(`install: "${input.name}" not found in repo root (looked at ${sourceDir})`);
|
|
56
|
+
}
|
|
57
|
+
name = input.name;
|
|
58
|
+
}
|
|
59
|
+
else if (existsSync(join(cloneDir, 'SKILL.md'))) {
|
|
60
|
+
sourceDir = cloneDir;
|
|
61
|
+
const fm = matter(await readFile(join(sourceDir, 'SKILL.md'), 'utf8')).data;
|
|
62
|
+
if (typeof fm.name !== 'string') {
|
|
63
|
+
throw new Error('install: repo root has SKILL.md but frontmatter is missing `name`');
|
|
64
|
+
}
|
|
65
|
+
name = fm.name;
|
|
66
|
+
assertValidName(name);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
throw new Error('install: no SKILL.md found at repo root — pass `name` or `subdir` to locate the skill');
|
|
70
|
+
}
|
|
71
|
+
const skillMd = await readFile(join(sourceDir, 'SKILL.md'), 'utf8');
|
|
72
|
+
const meta = parseSkillMd(skillMd, name);
|
|
73
|
+
const target = join(skillsDir, name);
|
|
74
|
+
await ensureNoCollision(target, name, Boolean(input.force), skillsDir);
|
|
75
|
+
renameSync(sourceDir, target);
|
|
76
|
+
gatewayLog(`skill installed (url): ${name} from ${input.url}${input.subdir ? `#${input.subdir}` : ''}`);
|
|
77
|
+
return {
|
|
78
|
+
name,
|
|
79
|
+
description: meta.description,
|
|
80
|
+
...(meta.allowedTools ? { allowedTools: meta.allowedTools } : {}),
|
|
81
|
+
path: target,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
rmSync(cloneDir, { recursive: true, force: true });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export async function removeSkill(name, opts = {}) {
|
|
89
|
+
assertValidName(name);
|
|
90
|
+
const skillsDir = opts.dir ?? DEFAULT_SKILLS_DIR;
|
|
91
|
+
const target = join(skillsDir, name);
|
|
92
|
+
if (!existsSync(target)) {
|
|
93
|
+
throw new Error(`Skill '${name}' not found`);
|
|
94
|
+
}
|
|
95
|
+
rmSync(target, { recursive: true, force: true });
|
|
96
|
+
gatewayLog(`skill removed: ${name}`);
|
|
97
|
+
}
|
|
98
|
+
// --- helpers ----------------------------------------------------------------
|
|
99
|
+
function assertValidName(name) {
|
|
100
|
+
if (!NAME_RE.test(name)) {
|
|
101
|
+
throw new Error(`invalid skill name "${name}" — must match ${NAME_RE} (lowercase, kebab-case)`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Reject subdir inputs that try to escape the clone with `..` or absolute
|
|
106
|
+
* paths. Empty segments are also rejected so a stray `//` doesn't slip past.
|
|
107
|
+
*/
|
|
108
|
+
function assertSafeSubdir(subdir) {
|
|
109
|
+
if (isAbsolute(subdir) || subdir.startsWith('/')) {
|
|
110
|
+
throw new Error(`subdir must be relative: "${subdir}"`);
|
|
111
|
+
}
|
|
112
|
+
const segments = subdir.split('/');
|
|
113
|
+
for (const seg of segments) {
|
|
114
|
+
if (seg === '' || seg === '.' || seg === '..') {
|
|
115
|
+
throw new Error(`subdir contains invalid segment "${seg}": "${subdir}"`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function parseSkillMd(content, expectedName) {
|
|
120
|
+
const parsed = matter(content);
|
|
121
|
+
const fm = parsed.data;
|
|
122
|
+
const fmName = typeof fm.name === 'string' ? fm.name : null;
|
|
123
|
+
const fmDesc = typeof fm.description === 'string' ? fm.description : null;
|
|
124
|
+
if (!fmName)
|
|
125
|
+
throw new Error('SKILL.md frontmatter is missing `name`');
|
|
126
|
+
if (!fmDesc)
|
|
127
|
+
throw new Error('SKILL.md frontmatter is missing `description`');
|
|
128
|
+
if (fmName !== expectedName) {
|
|
129
|
+
throw new Error(`SKILL.md frontmatter name "${fmName}" does not match install name "${expectedName}"`);
|
|
130
|
+
}
|
|
131
|
+
const at = fm['allowed-tools'];
|
|
132
|
+
const allowedTools = Array.isArray(at) && at.every(s => typeof s === 'string') ? at : undefined;
|
|
133
|
+
return allowedTools ? { description: fmDesc, allowedTools } : { description: fmDesc };
|
|
134
|
+
}
|
|
135
|
+
async function ensureNoCollision(target, name, force, baseDir) {
|
|
136
|
+
if (!existsSync(target))
|
|
137
|
+
return;
|
|
138
|
+
if (!force) {
|
|
139
|
+
throw new Error(`Skill '${name}' already installed. Use force=true to overwrite, or remove it first.`);
|
|
140
|
+
}
|
|
141
|
+
await removeSkill(name, { dir: baseDir });
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Clone the repo into `cloneDir`. If `subdir` is set, do a sparse,
|
|
145
|
+
* blob-filtered clone and only check out that subtree — this is what lets
|
|
146
|
+
* the gateway install a skill out of a large monorepo without pulling
|
|
147
|
+
* gigabytes of unrelated code.
|
|
148
|
+
*
|
|
149
|
+
* Sparse-checkout falls back to a regular shallow clone if any of the
|
|
150
|
+
* sparse steps fail (older `git` versions, sparse not supported). The
|
|
151
|
+
* sourceDir resolution downstream still works in that case — it just
|
|
152
|
+
* means we pulled more than we needed.
|
|
153
|
+
*/
|
|
154
|
+
async function gitClone(url, cloneDir, subdir) {
|
|
155
|
+
const timeoutMs = 5 * 60_000;
|
|
156
|
+
const exec = (args) => execFileP('git', args, { timeout: timeoutMs });
|
|
157
|
+
if (!subdir) {
|
|
158
|
+
await exec(['clone', '--depth=1', url, cloneDir]);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
await exec(['clone', '--depth=1', '--filter=blob:none', '--sparse', url, cloneDir]);
|
|
163
|
+
await execFileP('git', ['-C', cloneDir, 'sparse-checkout', 'set', subdir], {
|
|
164
|
+
timeout: timeoutMs,
|
|
165
|
+
});
|
|
166
|
+
// Make sure the subdir actually exists post-checkout. Sparse-checkout is
|
|
167
|
+
// quiet if the pattern matches nothing, so guard explicitly.
|
|
168
|
+
if (!existsSync(join(cloneDir, subdir))) {
|
|
169
|
+
throw new Error(`sparse-checkout produced no files for "${subdir}"`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
// Best-effort fallback to a full shallow clone so callers don't get
|
|
174
|
+
// blocked by old gits or unusual repos. The sourceDir lookup downstream
|
|
175
|
+
// still works — we'll just have a bigger temp tree to delete.
|
|
176
|
+
gatewayLog(`sparse-checkout failed for ${url}#${subdir}, falling back to full clone: ${err instanceof Error ? err.message : String(err)}`);
|
|
177
|
+
rmSync(cloneDir, { recursive: true, force: true });
|
|
178
|
+
await mkdir(cloneDir, { recursive: true });
|
|
179
|
+
await exec(['clone', '--depth=1', url, cloneDir]);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/server/skills/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { GatewaySkill } from '@redplanethq/gateway-protocol';
|
|
2
|
+
export declare const DEFAULT_SKILLS_DIR: string;
|
|
3
|
+
/**
|
|
4
|
+
* Walk `<dir>/<name>/SKILL.md`, parse YAML frontmatter, return validated
|
|
5
|
+
* skills. Skips entries that:
|
|
6
|
+
* - aren't directories or have no SKILL.md
|
|
7
|
+
* - have no `name` or `description` in frontmatter
|
|
8
|
+
* - have a `name` that doesn't match the containing directory
|
|
9
|
+
* Each rejection is logged via `gatewayLog` so bad fixtures surface.
|
|
10
|
+
*/
|
|
11
|
+
export declare function listSkills(dir?: string): Promise<GatewaySkill[]>;
|
|
12
|
+
//# sourceMappingURL=skill-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-store.d.ts","sourceRoot":"","sources":["../../../src/server/skills/skill-store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAGhE,eAAO,MAAM,kBAAkB,QAA6C,CAAC;AAE7E;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,GAAG,GAAE,MAA2B,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA8D1F"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { readdir, readFile, stat } from 'node:fs/promises';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { join, resolve } from 'node:path';
|
|
4
|
+
import { homedir } from 'node:os';
|
|
5
|
+
import matter from 'gray-matter';
|
|
6
|
+
import { gatewayLog } from '../../server/gateway-log.js';
|
|
7
|
+
export const DEFAULT_SKILLS_DIR = resolve(homedir(), '.corebrain', 'skills');
|
|
8
|
+
/**
|
|
9
|
+
* Walk `<dir>/<name>/SKILL.md`, parse YAML frontmatter, return validated
|
|
10
|
+
* skills. Skips entries that:
|
|
11
|
+
* - aren't directories or have no SKILL.md
|
|
12
|
+
* - have no `name` or `description` in frontmatter
|
|
13
|
+
* - have a `name` that doesn't match the containing directory
|
|
14
|
+
* Each rejection is logged via `gatewayLog` so bad fixtures surface.
|
|
15
|
+
*/
|
|
16
|
+
export async function listSkills(dir = DEFAULT_SKILLS_DIR) {
|
|
17
|
+
if (!existsSync(dir))
|
|
18
|
+
return [];
|
|
19
|
+
let entries;
|
|
20
|
+
try {
|
|
21
|
+
entries = await readdir(dir);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
const skills = [];
|
|
27
|
+
for (const name of entries) {
|
|
28
|
+
const skillDir = join(dir, name);
|
|
29
|
+
let isDir = false;
|
|
30
|
+
try {
|
|
31
|
+
isDir = (await stat(skillDir)).isDirectory();
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (!isDir)
|
|
37
|
+
continue;
|
|
38
|
+
const skillMd = join(skillDir, 'SKILL.md');
|
|
39
|
+
try {
|
|
40
|
+
await stat(skillMd);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
let parsed;
|
|
46
|
+
try {
|
|
47
|
+
parsed = matter(await readFile(skillMd, 'utf8'));
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
gatewayLog(`skill ${name}: failed to parse SKILL.md (${err})`);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const fm = parsed.data;
|
|
54
|
+
const fmName = typeof fm.name === 'string' ? fm.name : null;
|
|
55
|
+
const fmDesc = typeof fm.description === 'string' ? fm.description : null;
|
|
56
|
+
if (!fmName || !fmDesc) {
|
|
57
|
+
gatewayLog(`skill ${name}: missing required frontmatter (name/description)`);
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (fmName !== name) {
|
|
61
|
+
gatewayLog(`skill ${name}: frontmatter name "${fmName}" doesn't match directory`);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const at = fm['allowed-tools'];
|
|
65
|
+
const allowedTools = Array.isArray(at) && at.every(s => typeof s === 'string') ? at : undefined;
|
|
66
|
+
skills.push({
|
|
67
|
+
name: fmName,
|
|
68
|
+
description: fmDesc,
|
|
69
|
+
...(allowedTools ? { allowedTools } : {}),
|
|
70
|
+
path: skillDir,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
skills.sort((a, b) => a.name.localeCompare(b.name));
|
|
74
|
+
return skills;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=skill-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-store.js","sourceRoot":"","sources":["../../../src/server/skills/skill-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface GatewayTool {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
inputSchema?: Record<string, unknown>;
|
|
5
|
+
}
|
|
6
|
+
interface ToolResult {
|
|
7
|
+
success: boolean;
|
|
8
|
+
result?: unknown;
|
|
9
|
+
error?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const skillsTools: GatewayTool[];
|
|
12
|
+
export declare function executeSkillsTool(toolName: string, params: Record<string, unknown>): Promise<ToolResult>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=skills-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/skills-tools.ts"],"names":[],"mappings":"AAGA,UAAU,WAAW;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,UAAU,UAAU;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAoDD,eAAO,MAAM,WAAW,EAAE,WAAW,EAapC,CAAC;AA0BF,wBAAsB,iBAAiB,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,UAAU,CAAC,CAgBrB"}
|