sensorium-mcp 2.16.95 → 2.16.96
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/dashboard/routes/skills.d.ts +1 -1
- package/dist/dashboard/routes/skills.d.ts.map +1 -1
- package/dist/dashboard/routes/skills.js +30 -17
- package/dist/dashboard/routes/skills.js.map +1 -1
- package/dist/dashboard/routes.d.ts +1 -1
- package/dist/dashboard/routes.d.ts.map +1 -1
- package/dist/dashboard/routes.js +6 -6
- package/dist/dashboard/routes.js.map +1 -1
- package/dist/dashboard/spa.html +251 -1
- package/dist/http-server.js +1 -1
- package/dist/http-server.js.map +1 -1
- package/dist/intent.d.ts +2 -0
- package/dist/intent.d.ts.map +1 -1
- package/dist/intent.js +40 -5
- package/dist/intent.js.map +1 -1
- package/package.json +1 -1
- package/templates/multi-thread-delegation.default.md +6 -6
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { type RouteHandler, type RouteArgs } from "./types.js";
|
|
6
6
|
export declare const handleGetSkills: RouteHandler;
|
|
7
|
-
export declare function handleSkillPut(args: RouteArgs, name: string): boolean
|
|
7
|
+
export declare function handleSkillPut(args: RouteArgs, name: string): Promise<boolean>;
|
|
8
8
|
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/dashboard/routes/skills.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAY,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/dashboard/routes/skills.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAY,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAMzE,eAAO,MAAM,eAAe,EAAE,YAY7B,CAAC;AAMF,wBAAsB,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA8BpF"}
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
7
|
import { join } from "node:path";
|
|
8
|
-
import { loadSkills } from "../../intent.js";
|
|
8
|
+
import { loadSkills, invalidateSkillCache } from "../../intent.js";
|
|
9
9
|
import { readBody } from "./types.js";
|
|
10
|
+
const MAX_SKILL_BODY_BYTES = 64 * 1024; // 64 KB
|
|
10
11
|
// ─── GET /api/skills — list all loaded skills ─────────────────────────────
|
|
11
12
|
export const handleGetSkills = ({ json }) => {
|
|
12
13
|
const skills = loadSkills();
|
|
@@ -16,32 +17,44 @@ export const handleGetSkills = ({ json }) => {
|
|
|
16
17
|
triggers: s.triggers,
|
|
17
18
|
replacesOrchestrator: s.replacesOrchestrator,
|
|
18
19
|
source: s.source,
|
|
20
|
+
content: s.content,
|
|
19
21
|
})),
|
|
20
22
|
});
|
|
21
23
|
return true;
|
|
22
24
|
};
|
|
23
25
|
// ─── PUT /api/skills/:name — save a user skill override ───────────────────
|
|
24
|
-
|
|
26
|
+
// NOTE: This handler is registered as a dynamic route in routes.ts dispatchApiRoute
|
|
27
|
+
// rather than in the static route table, because the route contains a :name parameter.
|
|
28
|
+
export async function handleSkillPut(args, name) {
|
|
25
29
|
const { req, json } = args;
|
|
26
30
|
if (req.method !== "PUT")
|
|
27
31
|
return false;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
const skillsDir = join(homedir(), ".remote-copilot-mcp", "skills");
|
|
37
|
-
await mkdir(skillsDir, { recursive: true });
|
|
38
|
-
await writeFile(join(skillsDir, `${name}.md`), parsed.content, "utf-8");
|
|
39
|
-
json({ ok: true });
|
|
32
|
+
try {
|
|
33
|
+
// M3: Enforce body size limit (64 KB)
|
|
34
|
+
const contentLength = parseInt(req.headers["content-length"] ?? "", 10);
|
|
35
|
+
if (contentLength > MAX_SKILL_BODY_BYTES) {
|
|
36
|
+
json({ error: `Body too large (limit ${MAX_SKILL_BODY_BYTES} bytes)` }, 413);
|
|
37
|
+
return true;
|
|
40
38
|
}
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
const body = await readBody(req);
|
|
40
|
+
if (Buffer.byteLength(body) > MAX_SKILL_BODY_BYTES) {
|
|
41
|
+
json({ error: `Body too large (limit ${MAX_SKILL_BODY_BYTES} bytes)` }, 413);
|
|
42
|
+
return true;
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
const parsed = JSON.parse(body);
|
|
45
|
+
if (typeof parsed.content !== "string") {
|
|
46
|
+
json({ error: "Missing content field" }, 400);
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
const skillsDir = join(homedir(), ".remote-copilot-mcp", "skills");
|
|
50
|
+
await mkdir(skillsDir, { recursive: true });
|
|
51
|
+
await writeFile(join(skillsDir, `${name}.md`), parsed.content, "utf-8");
|
|
52
|
+
invalidateSkillCache();
|
|
53
|
+
json({ ok: true });
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
json({ error: err instanceof Error ? err.message : String(err) }, 500);
|
|
57
|
+
}
|
|
45
58
|
return true;
|
|
46
59
|
}
|
|
47
60
|
//# sourceMappingURL=skills.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/dashboard/routes/skills.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/dashboard/routes/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,5 +20,5 @@ import type { DashboardContext } from "./routes/types.js";
|
|
|
20
20
|
/**
|
|
21
21
|
* Handle a dashboard or API request. Returns true if handled, false if not a dashboard route.
|
|
22
22
|
*/
|
|
23
|
-
export declare function handleDashboardRequest(req: IncomingMessage, res: ServerResponse, ctx: DashboardContext, authToken?: string): boolean
|
|
23
|
+
export declare function handleDashboardRequest(req: IncomingMessage, res: ServerResponse, ctx: DashboardContext, authToken?: string): Promise<boolean>;
|
|
24
24
|
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAQjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAiF1D;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAQjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAiF1D;;GAEG;AACH,wBAAsB,sBAAsB,CACxC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,gBAAgB,EACrB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CAmClB"}
|
package/dist/dashboard/routes.js
CHANGED
|
@@ -59,7 +59,7 @@ const routeTable = {
|
|
|
59
59
|
/**
|
|
60
60
|
* Handle a dashboard or API request. Returns true if handled, false if not a dashboard route.
|
|
61
61
|
*/
|
|
62
|
-
export function handleDashboardRequest(req, res, ctx, authToken) {
|
|
62
|
+
export async function handleDashboardRequest(req, res, ctx, authToken) {
|
|
63
63
|
const url = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
|
|
64
64
|
const path = url.pathname;
|
|
65
65
|
// Serve dashboard SPA
|
|
@@ -88,12 +88,12 @@ export function handleDashboardRequest(req, res, ctx, authToken) {
|
|
|
88
88
|
return true;
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
-
return dispatchApiRoute(req, path, url, res, ctx);
|
|
91
|
+
return await dispatchApiRoute(req, path, url, res, ctx);
|
|
92
92
|
}
|
|
93
93
|
return false;
|
|
94
94
|
}
|
|
95
95
|
// ─── API route dispatcher ───────────────────────────────────────────────────
|
|
96
|
-
function dispatchApiRoute(req, path, url, res, ctx) {
|
|
96
|
+
async function dispatchApiRoute(req, path, url, res, ctx) {
|
|
97
97
|
const json = (data, status = 200) => {
|
|
98
98
|
const body = JSON.stringify(data);
|
|
99
99
|
res.writeHead(status, {
|
|
@@ -112,16 +112,16 @@ function dispatchApiRoute(req, path, url, res, ctx) {
|
|
|
112
112
|
if (handler)
|
|
113
113
|
return handler(args);
|
|
114
114
|
// 2. Dynamic template route: POST/DELETE /api/templates/:name
|
|
115
|
-
const templateMatch = path.match(/^\/api\/templates\/([
|
|
115
|
+
const templateMatch = path.match(/^\/api\/templates\/([\w-]+)$/);
|
|
116
116
|
if (templateMatch) {
|
|
117
117
|
const result = handleTemplateCrud(args, templateMatch[1]);
|
|
118
118
|
if (result)
|
|
119
119
|
return true;
|
|
120
120
|
}
|
|
121
121
|
// 3. Dynamic skill route: PUT /api/skills/:name
|
|
122
|
-
const skillMatch = path.match(/^\/api\/skills\/([
|
|
122
|
+
const skillMatch = path.match(/^\/api\/skills\/([\w-]+)$/);
|
|
123
123
|
if (skillMatch) {
|
|
124
|
-
const result = handleSkillPut(args, skillMatch[1]);
|
|
124
|
+
const result = await handleSkillPut(args, skillMatch[1]);
|
|
125
125
|
if (result)
|
|
126
126
|
return true;
|
|
127
127
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAS9C,6BAA6B;AAC7B,OAAO,EACH,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,GAC9B,MAAM,sBAAsB,CAAC;AAE9B,8BAA8B;AAC9B,OAAO,EACH,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,yBAAyB;AACzB,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,GAC5B,MAAM,kBAAkB,CAAC;AAE1B,2BAA2B;AAC3B,OAAO,EACH,eAAe,EACf,cAAc,GACjB,MAAM,oBAAoB,CAAC;AAE5B,+EAA+E;AAE/E,MAAM,UAAU,GAAiC;IAC7C,OAAO;IACP,iBAAiB,EAAQ,eAAe;IACxC,mBAAmB,EAAM,iBAAiB;IAC1C,gBAAgB,EAAS,cAAc;IACvC,mBAAmB,EAAM,iBAAiB;IAC1C,iBAAiB,EAAQ,eAAe;IACxC,iBAAiB,EAAQ,eAAe;IAExC,YAAY;IACZ,oBAAoB,EAAe,kBAAkB;IACrD,0BAA0B,EAAS,sBAAsB;IACzD,kCAAkC,EAAE,qBAAqB;IAEzD,WAAW;IACX,wCAAwC,EAAG,2BAA2B;IACtE,qCAAqC,EAAM,wBAAwB;IACnE,sCAAsC,EAAK,yBAAyB;IACpE,8BAA8B,EAAa,kBAAkB;IAC7D,+BAA+B,EAAY,mBAAmB;IAC9D,sCAAsC,EAAK,yBAAyB;IACpE,sCAAsC,EAAK,yBAAyB;IACpE,8BAA8B,EAAgB,0BAA0B;IACxE,+BAA+B,EAAe,2BAA2B;IAEzE,iBAAiB;IACjB,yBAAyB,EAAK,sBAAsB;IACpD,0BAA0B,EAAI,uBAAuB;IACrD,4BAA4B,EAAE,yBAAyB;IAEvD,SAAS;IACT,iBAAiB,EAAa,eAAe;CAChD,CAAC;AAEF,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,sBAAsB,
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/dashboard/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/dashboard/spa.html
CHANGED
|
@@ -129,6 +129,7 @@
|
|
|
129
129
|
<button onclick="switchTab('episodes')" id="tab-episodes" class="pb-3 text-sm font-medium tab-inactive transition">Episodes</button>
|
|
130
130
|
<button onclick="switchTab('topics')" id="tab-topics" class="pb-3 text-sm font-medium tab-inactive transition">Topics</button>
|
|
131
131
|
<button onclick="switchTab('templates')" id="tab-templates" class="pb-3 text-sm font-medium tab-inactive transition">Templates</button>
|
|
132
|
+
<button onclick="switchTab('skills')" id="tab-skills" class="pb-3 text-sm font-medium tab-inactive transition">Skills</button>
|
|
132
133
|
</nav>
|
|
133
134
|
</div>
|
|
134
135
|
|
|
@@ -297,6 +298,87 @@
|
|
|
297
298
|
</div>
|
|
298
299
|
</div>
|
|
299
300
|
|
|
301
|
+
<!-- Skills -->
|
|
302
|
+
<div id="panel-skills" class="hidden animate-fade-in">
|
|
303
|
+
<div class="glass rounded-xl p-6 mb-6">
|
|
304
|
+
<div class="flex flex-wrap items-center justify-between gap-4 mb-4">
|
|
305
|
+
<div>
|
|
306
|
+
<h3 class="text-lg font-semibold">Skill Library</h3>
|
|
307
|
+
<p class="text-sm text-textSecondary mt-1">Manage intent-routing skills — user overrides, defaults, and project skills</p>
|
|
308
|
+
</div>
|
|
309
|
+
<button onclick="showNewSkillForm()" class="px-4 py-2 rounded-xl bg-accent hover:bg-accentLight text-white text-sm font-medium transition">+ New Skill</button>
|
|
310
|
+
</div>
|
|
311
|
+
|
|
312
|
+
<!-- New skill form (hidden by default) -->
|
|
313
|
+
<div id="skill-new-form" class="hidden glass rounded-xl p-4 mb-4 border border-accent/30">
|
|
314
|
+
<h4 class="text-sm font-semibold mb-3">Create New Skill</h4>
|
|
315
|
+
<div class="grid grid-cols-1 sm:grid-cols-2 gap-3 mb-3">
|
|
316
|
+
<div>
|
|
317
|
+
<label class="text-xs text-textSecondary block mb-1">Name</label>
|
|
318
|
+
<input id="skill-new-name" type="text" placeholder="my-skill"
|
|
319
|
+
class="w-full px-3 py-2 rounded-lg bg-surface border border-gray-700 text-sm text-textPrimary font-mono focus:outline-none focus:border-accent transition" />
|
|
320
|
+
</div>
|
|
321
|
+
<div>
|
|
322
|
+
<label class="text-xs text-textSecondary block mb-1">Triggers (comma-separated)</label>
|
|
323
|
+
<input id="skill-new-triggers" type="text" placeholder="trigger1, trigger2"
|
|
324
|
+
class="w-full px-3 py-2 rounded-lg bg-surface border border-gray-700 text-sm text-textPrimary focus:outline-none focus:border-accent transition" />
|
|
325
|
+
</div>
|
|
326
|
+
</div>
|
|
327
|
+
<div class="flex items-center gap-4 mb-3">
|
|
328
|
+
<label class="flex items-center gap-2 text-sm text-textSecondary cursor-pointer">
|
|
329
|
+
<input id="skill-new-replaces" type="checkbox" class="rounded" />
|
|
330
|
+
<span>Replaces orchestrator</span>
|
|
331
|
+
</label>
|
|
332
|
+
</div>
|
|
333
|
+
<div class="flex items-center gap-2">
|
|
334
|
+
<button onclick="createNewSkill()" class="px-4 py-2 rounded-xl bg-accent hover:bg-accentLight text-white text-sm font-medium transition">Create</button>
|
|
335
|
+
<button onclick="hideNewSkillForm()" class="px-4 py-2 rounded-xl bg-card hover:bg-cardHover border border-gray-700 text-sm text-textSecondary hover:text-textPrimary transition">Cancel</button>
|
|
336
|
+
<span id="skill-new-status" class="text-sm"></span>
|
|
337
|
+
</div>
|
|
338
|
+
</div>
|
|
339
|
+
|
|
340
|
+
<!-- Skills list -->
|
|
341
|
+
<div id="skills-list" class="space-y-2"></div>
|
|
342
|
+
<p id="skills-empty" class="hidden text-center text-textSecondary py-12">No skills loaded</p>
|
|
343
|
+
</div>
|
|
344
|
+
|
|
345
|
+
<!-- Skill editor (hidden until a skill is selected) -->
|
|
346
|
+
<div id="skill-editor-panel" class="hidden glass rounded-xl p-6">
|
|
347
|
+
<div class="flex flex-wrap items-center justify-between gap-4 mb-4">
|
|
348
|
+
<div>
|
|
349
|
+
<h3 class="text-lg font-semibold" id="skill-editor-title">Edit Skill</h3>
|
|
350
|
+
<p class="text-sm text-textSecondary mt-1" id="skill-editor-source"></p>
|
|
351
|
+
</div>
|
|
352
|
+
<div class="flex items-center gap-2">
|
|
353
|
+
<span id="skill-editor-status" class="text-sm"></span>
|
|
354
|
+
<button onclick="closeSkillEditor()" class="px-4 py-2 rounded-xl bg-card hover:bg-cardHover border border-gray-700 text-sm text-textSecondary hover:text-textPrimary transition">Close</button>
|
|
355
|
+
<button onclick="saveSkill()" class="px-4 py-2 rounded-xl bg-accent hover:bg-accentLight text-white text-sm font-medium transition">Save</button>
|
|
356
|
+
</div>
|
|
357
|
+
</div>
|
|
358
|
+
<div class="grid grid-cols-1 sm:grid-cols-3 gap-3 mb-4">
|
|
359
|
+
<div>
|
|
360
|
+
<label class="text-xs text-textSecondary block mb-1">Name</label>
|
|
361
|
+
<input id="skill-edit-name" type="text" readonly
|
|
362
|
+
class="w-full px-3 py-2 rounded-lg bg-surface border border-gray-700 text-sm text-textPrimary font-mono opacity-60 cursor-not-allowed" />
|
|
363
|
+
</div>
|
|
364
|
+
<div>
|
|
365
|
+
<label class="text-xs text-textSecondary block mb-1">Triggers (comma-separated)</label>
|
|
366
|
+
<input id="skill-edit-triggers" type="text"
|
|
367
|
+
class="w-full px-3 py-2 rounded-lg bg-surface border border-gray-700 text-sm text-textPrimary focus:outline-none focus:border-accent transition" />
|
|
368
|
+
</div>
|
|
369
|
+
<div class="flex items-end">
|
|
370
|
+
<label class="flex items-center gap-2 text-sm text-textSecondary cursor-pointer pb-2">
|
|
371
|
+
<input id="skill-edit-replaces" type="checkbox" class="rounded" />
|
|
372
|
+
<span>Replaces orchestrator</span>
|
|
373
|
+
</label>
|
|
374
|
+
</div>
|
|
375
|
+
</div>
|
|
376
|
+
<textarea id="skill-edit-content" rows="20" spellcheck="false"
|
|
377
|
+
class="w-full px-4 py-3 rounded-xl bg-surface border border-gray-700 text-textPrimary font-mono text-sm leading-relaxed focus:outline-none focus:border-accent focus:ring-1 focus:ring-accent transition resize-y"
|
|
378
|
+
placeholder="Skill body (markdown)..."></textarea>
|
|
379
|
+
</div>
|
|
380
|
+
</div>
|
|
381
|
+
|
|
300
382
|
</div>
|
|
301
383
|
</div>
|
|
302
384
|
|
|
@@ -621,7 +703,7 @@
|
|
|
621
703
|
|
|
622
704
|
// ─── Tab switching ──────────────────────────────────────────────────
|
|
623
705
|
function switchTab(tab) {
|
|
624
|
-
const tabs = ['sessions', 'notes', 'episodes', 'topics', 'templates'];
|
|
706
|
+
const tabs = ['sessions', 'notes', 'episodes', 'topics', 'templates', 'skills'];
|
|
625
707
|
tabs.forEach(t => {
|
|
626
708
|
document.getElementById('panel-' + t).classList.toggle('hidden', t !== tab);
|
|
627
709
|
document.getElementById('tab-' + t).className = 'pb-3 text-sm font-medium transition ' + (t === tab ? 'tab-active' : 'tab-inactive');
|
|
@@ -686,6 +768,7 @@
|
|
|
686
768
|
if (currentTab === 'episodes') loadEpisodes();
|
|
687
769
|
if (currentTab === 'topics') loadTopics();
|
|
688
770
|
if (currentTab === 'templates') { loadAgentType(); loadClaudeMcpConfig(); loadTemplates(); loadDriveTemplate(); }
|
|
771
|
+
if (currentTab === 'skills') loadSkills();
|
|
689
772
|
} catch (e) {
|
|
690
773
|
console.error('Tab load error:', e);
|
|
691
774
|
}
|
|
@@ -937,6 +1020,173 @@
|
|
|
937
1020
|
if (driveTplPreviewOpen) updateDriveTplPreview();
|
|
938
1021
|
});
|
|
939
1022
|
|
|
1023
|
+
// ─── Skills ────────────────────────────────────────────────────────
|
|
1024
|
+
let skillsData = [];
|
|
1025
|
+
let editingSkillName = null;
|
|
1026
|
+
|
|
1027
|
+
async function loadSkills() {
|
|
1028
|
+
try {
|
|
1029
|
+
const data = await api('/api/skills');
|
|
1030
|
+
skillsData = data.skills || [];
|
|
1031
|
+
renderSkills(skillsData);
|
|
1032
|
+
} catch (e) { console.error('Skills load error:', e); }
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
function skillSourceType(source) {
|
|
1036
|
+
if (!source) return 'unknown';
|
|
1037
|
+
if (source.includes('.remote-copilot-mcp') && source.includes('skills')) return 'user';
|
|
1038
|
+
if (source.endsWith('.default.md')) return 'default';
|
|
1039
|
+
if (source.endsWith('.skill.md')) return 'project';
|
|
1040
|
+
return 'unknown';
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
function sourceTypeBadge(type) {
|
|
1044
|
+
const styles = {
|
|
1045
|
+
user: 'background:rgba(99,102,241,0.15);color:#818cf8',
|
|
1046
|
+
default: 'background:rgba(107,114,128,0.15);color:#9ca3af',
|
|
1047
|
+
project: 'background:rgba(34,197,94,0.15);color:#4ade80',
|
|
1048
|
+
unknown: 'background:rgba(107,114,128,0.15);color:#9ca3af',
|
|
1049
|
+
};
|
|
1050
|
+
return '<span class="type-badge" style="' + (styles[type] || styles.unknown) + '">' + type + '</span>';
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
function renderSkills(skills) {
|
|
1054
|
+
const list = document.getElementById('skills-list');
|
|
1055
|
+
const empty = document.getElementById('skills-empty');
|
|
1056
|
+
if (!skills || !skills.length) {
|
|
1057
|
+
list.innerHTML = '';
|
|
1058
|
+
empty.classList.remove('hidden');
|
|
1059
|
+
return;
|
|
1060
|
+
}
|
|
1061
|
+
empty.classList.add('hidden');
|
|
1062
|
+
const html = skills.map(function(sk) {
|
|
1063
|
+
const sType = skillSourceType(sk.source);
|
|
1064
|
+
const triggers = (sk.triggers || []).map(function(t) {
|
|
1065
|
+
return '<span class="text-xs px-2 py-0.5 rounded-full bg-accent/10 text-accentLight">' + escapeHtml(t) + '</span>';
|
|
1066
|
+
}).join(' ');
|
|
1067
|
+
const active = editingSkillName === sk.name ? ' border-accent' : ' border-transparent';
|
|
1068
|
+
return '<div class="glass rounded-xl p-4 cursor-pointer hover:bg-cardHover transition border' + active + '" onclick="openSkillEditor(\'' + escapeHtml(sk.name).replace(/'/g, "\\'") + '\')">' +
|
|
1069
|
+
'<div class="flex items-start justify-between gap-3">' +
|
|
1070
|
+
'<div class="flex-1 min-w-0">' +
|
|
1071
|
+
'<div class="flex items-center gap-2 mb-1">' +
|
|
1072
|
+
'<span class="font-medium text-sm">' + escapeHtml(sk.name) + '</span>' +
|
|
1073
|
+
sourceTypeBadge(sType) +
|
|
1074
|
+
(sk.replacesOrchestrator ? '<span class="type-badge" style="background:rgba(245,158,11,0.15);color:#fbbf24">REPLACES ORCH</span>' : '') +
|
|
1075
|
+
'</div>' +
|
|
1076
|
+
'<div class="flex flex-wrap gap-1.5 mt-1">' + triggers + '</div>' +
|
|
1077
|
+
'</div>' +
|
|
1078
|
+
'<div class="text-xs text-muted font-mono shrink-0 max-w-[200px] truncate" title="' + escapeHtml(sk.source || '') + '">' + escapeHtml((sk.source || '').split(/[\\/]/).pop() || '') + '</div>' +
|
|
1079
|
+
'</div>' +
|
|
1080
|
+
'</div>';
|
|
1081
|
+
}).join('');
|
|
1082
|
+
list.innerHTML = html;
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1085
|
+
function openSkillEditor(name) {
|
|
1086
|
+
const sk = skillsData.find(function(s) { return s.name === name; });
|
|
1087
|
+
if (!sk) return;
|
|
1088
|
+
editingSkillName = name;
|
|
1089
|
+
renderSkills(skillsData); // update highlight
|
|
1090
|
+
document.getElementById('skill-editor-panel').classList.remove('hidden');
|
|
1091
|
+
document.getElementById('skill-editor-title').textContent = 'Edit: ' + sk.name;
|
|
1092
|
+
var sType = skillSourceType(sk.source);
|
|
1093
|
+
document.getElementById('skill-editor-source').textContent = sk.source || '(unknown source)';
|
|
1094
|
+
document.getElementById('skill-edit-name').value = sk.name;
|
|
1095
|
+
document.getElementById('skill-edit-triggers').value = (sk.triggers || []).join(', ');
|
|
1096
|
+
document.getElementById('skill-edit-replaces').checked = !!sk.replacesOrchestrator;
|
|
1097
|
+
// Reconstruct full markdown content with frontmatter
|
|
1098
|
+
var content = sk.content || '';
|
|
1099
|
+
document.getElementById('skill-edit-content').value = content;
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
function closeSkillEditor() {
|
|
1103
|
+
editingSkillName = null;
|
|
1104
|
+
document.getElementById('skill-editor-panel').classList.add('hidden');
|
|
1105
|
+
renderSkills(skillsData);
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
function buildSkillMarkdown(name, triggers, replacesOrchestrator, body) {
|
|
1109
|
+
var fm = '---\nname: ' + name + '\ntriggers:\n';
|
|
1110
|
+
triggers.forEach(function(t) { fm += ' - ' + t.trim() + '\n'; });
|
|
1111
|
+
if (replacesOrchestrator) fm += 'replaces_orchestrator: true\n';
|
|
1112
|
+
fm += '---\n\n';
|
|
1113
|
+
return fm + body;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
async function saveSkill() {
|
|
1117
|
+
const status = document.getElementById('skill-editor-status');
|
|
1118
|
+
const name = document.getElementById('skill-edit-name').value.trim();
|
|
1119
|
+
if (!name) return;
|
|
1120
|
+
try {
|
|
1121
|
+
// Build full content from the editor fields
|
|
1122
|
+
var triggers = document.getElementById('skill-edit-triggers').value.split(',').map(function(t) { return t.trim(); }).filter(Boolean);
|
|
1123
|
+
var replaces = document.getElementById('skill-edit-replaces').checked;
|
|
1124
|
+
var rawContent = document.getElementById('skill-edit-content').value;
|
|
1125
|
+
// If content already has frontmatter, use as-is; otherwise reconstruct
|
|
1126
|
+
var content;
|
|
1127
|
+
if (rawContent.trimStart().startsWith('---')) {
|
|
1128
|
+
content = rawContent;
|
|
1129
|
+
} else {
|
|
1130
|
+
content = buildSkillMarkdown(name, triggers, replaces, rawContent);
|
|
1131
|
+
}
|
|
1132
|
+
const r = await fetch('/api/skills/' + encodeURIComponent(name), {
|
|
1133
|
+
method: 'PUT',
|
|
1134
|
+
headers: { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' },
|
|
1135
|
+
body: JSON.stringify({ content: content }),
|
|
1136
|
+
});
|
|
1137
|
+
if (!r.ok) throw new Error(r.statusText);
|
|
1138
|
+
await r.json();
|
|
1139
|
+
status.textContent = 'Saved \u2713';
|
|
1140
|
+
status.className = 'text-sm text-success';
|
|
1141
|
+
setTimeout(function() { status.textContent = ''; }, 3000);
|
|
1142
|
+
await loadSkills();
|
|
1143
|
+
} catch (e) {
|
|
1144
|
+
status.textContent = 'Error: ' + e.message;
|
|
1145
|
+
status.className = 'text-sm text-danger';
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
function showNewSkillForm() {
|
|
1150
|
+
document.getElementById('skill-new-form').classList.remove('hidden');
|
|
1151
|
+
document.getElementById('skill-new-name').value = '';
|
|
1152
|
+
document.getElementById('skill-new-triggers').value = '';
|
|
1153
|
+
document.getElementById('skill-new-replaces').checked = false;
|
|
1154
|
+
document.getElementById('skill-new-status').textContent = '';
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
function hideNewSkillForm() {
|
|
1158
|
+
document.getElementById('skill-new-form').classList.add('hidden');
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
async function createNewSkill() {
|
|
1162
|
+
const status = document.getElementById('skill-new-status');
|
|
1163
|
+
const name = document.getElementById('skill-new-name').value.trim();
|
|
1164
|
+
const triggersRaw = document.getElementById('skill-new-triggers').value;
|
|
1165
|
+
const replaces = document.getElementById('skill-new-replaces').checked;
|
|
1166
|
+
if (!name) { status.textContent = 'Name is required'; status.className = 'text-sm text-warn'; return; }
|
|
1167
|
+
var triggers = triggersRaw.split(',').map(function(t) { return t.trim(); }).filter(Boolean);
|
|
1168
|
+
if (!triggers.length) { status.textContent = 'At least one trigger is required'; status.className = 'text-sm text-warn'; return; }
|
|
1169
|
+
var content = buildSkillMarkdown(name, triggers, replaces, '<!-- Write your skill instructions here -->\n');
|
|
1170
|
+
try {
|
|
1171
|
+
const r = await fetch('/api/skills/' + encodeURIComponent(name), {
|
|
1172
|
+
method: 'PUT',
|
|
1173
|
+
headers: { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' },
|
|
1174
|
+
body: JSON.stringify({ content: content }),
|
|
1175
|
+
});
|
|
1176
|
+
if (!r.ok) throw new Error(r.statusText);
|
|
1177
|
+
await r.json();
|
|
1178
|
+
status.textContent = 'Created \u2713';
|
|
1179
|
+
status.className = 'text-sm text-success';
|
|
1180
|
+
hideNewSkillForm();
|
|
1181
|
+
await loadSkills();
|
|
1182
|
+
// Auto-open the new skill in editor
|
|
1183
|
+
openSkillEditor(name);
|
|
1184
|
+
} catch (e) {
|
|
1185
|
+
status.textContent = 'Error: ' + e.message;
|
|
1186
|
+
status.className = 'text-sm text-danger';
|
|
1187
|
+
}
|
|
1188
|
+
}
|
|
1189
|
+
|
|
940
1190
|
// ─── Utilities ──────────────────────────────────────────────────────
|
|
941
1191
|
function escapeHtml(str) {
|
|
942
1192
|
if (!str) return '';
|
package/dist/http-server.js
CHANGED
|
@@ -77,7 +77,7 @@ export function startHttpServer(createMcpServerFn, getMemoryDb, closeMemoryDb) {
|
|
|
77
77
|
const isDashboardPage = dashUrl.pathname === "/" || dashUrl.pathname === "/dashboard";
|
|
78
78
|
const isDashboardApi = dashUrl.pathname.startsWith("/api/");
|
|
79
79
|
if (isDashboardPage || isDashboardApi) {
|
|
80
|
-
const handled = handleDashboardRequest(req, res, dashCtx, MCP_HTTP_SECRET);
|
|
80
|
+
const handled = await handleDashboardRequest(req, res, dashCtx, MCP_HTTP_SECRET);
|
|
81
81
|
if (handled)
|
|
82
82
|
return;
|
|
83
83
|
}
|
package/dist/http-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
package/dist/intent.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export interface Skill {
|
|
|
16
16
|
}
|
|
17
17
|
/** Scan skill directories and return parsed skills (cached 60 s). */
|
|
18
18
|
export declare function loadSkills(): Skill[];
|
|
19
|
+
/** Invalidate the skill cache so the next loadSkills() re-reads from disk. */
|
|
20
|
+
export declare function invalidateSkillCache(): void;
|
|
19
21
|
/** Match operator message against skill trigger phrases. */
|
|
20
22
|
export declare function matchSkill(message: string): Skill | null;
|
|
21
23
|
type MessageIntent = "conversational" | "task";
|
package/dist/intent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../src/intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../src/intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AA4CD,qEAAqE;AACrE,wBAAgB,UAAU,IAAI,KAAK,EAAE,CA4DpC;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,IAAI,IAAI,CAAwB;AAEpE,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CASxD;AAmBD,KAAK,aAAa,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAE/C,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAa7D"}
|
package/dist/intent.js
CHANGED
|
@@ -11,6 +11,7 @@ import { readdirSync, readFileSync } from "node:fs";
|
|
|
11
11
|
import { join, dirname } from "node:path";
|
|
12
12
|
import { homedir } from "node:os";
|
|
13
13
|
import { fileURLToPath } from "node:url";
|
|
14
|
+
import { log } from "./logger.js";
|
|
14
15
|
let skillCache = [];
|
|
15
16
|
let skillCacheTime = 0;
|
|
16
17
|
const SKILL_CACHE_TTL = 60_000;
|
|
@@ -33,21 +34,28 @@ function parseSkillFile(filePath) {
|
|
|
33
34
|
// Minimal YAML parsing — no deps
|
|
34
35
|
let name = "";
|
|
35
36
|
const triggers = [];
|
|
37
|
+
// NOTE: replacesOrchestrator: false is reserved for future use (partial-inject skills)
|
|
36
38
|
let replacesOrchestrator = false;
|
|
39
|
+
let currentKey = "";
|
|
37
40
|
for (const line of yaml.split("\n")) {
|
|
38
41
|
const trimmed = line.trim();
|
|
42
|
+
if (trimmed.endsWith(":") || (/^(\w+):/.test(trimmed) && !trimmed.startsWith("- "))) {
|
|
43
|
+
currentKey = trimmed.split(":")[0].trim();
|
|
44
|
+
}
|
|
39
45
|
if (trimmed.startsWith("name:")) {
|
|
40
46
|
name = trimmed.slice(5).trim().replace(/^["']|["']$/g, "");
|
|
41
47
|
}
|
|
42
48
|
else if (trimmed.startsWith("replaces_orchestrator:")) {
|
|
43
49
|
replacesOrchestrator = trimmed.slice(22).trim() === "true";
|
|
44
50
|
}
|
|
45
|
-
else if (trimmed.startsWith("- ") &&
|
|
51
|
+
else if (trimmed.startsWith("- ") && currentKey === "triggers") {
|
|
46
52
|
triggers.push(trimmed.slice(2).trim().replace(/^["']|["']$/g, ""));
|
|
47
53
|
}
|
|
48
54
|
}
|
|
49
55
|
if (!name || triggers.length === 0)
|
|
50
56
|
return null;
|
|
57
|
+
if (replacesOrchestrator && !body)
|
|
58
|
+
return null;
|
|
51
59
|
return { name, triggers, replacesOrchestrator, content: body, source: filePath };
|
|
52
60
|
}
|
|
53
61
|
/** Scan skill directories and return parsed skills (cached 60 s). */
|
|
@@ -69,7 +77,10 @@ export function loadSkills() {
|
|
|
69
77
|
}
|
|
70
78
|
}
|
|
71
79
|
}
|
|
72
|
-
catch {
|
|
80
|
+
catch (err) {
|
|
81
|
+
if (err.code !== "ENOENT")
|
|
82
|
+
log.warn(`[skills] Failed to read dir: ${err}`);
|
|
83
|
+
}
|
|
73
84
|
// 2. Default skills: templates/*.default.md (only those with frontmatter)
|
|
74
85
|
const __dir = dirname(fileURLToPath(import.meta.url));
|
|
75
86
|
const defaultDir = join(__dir, "..", "templates");
|
|
@@ -78,11 +89,16 @@ export function loadSkills() {
|
|
|
78
89
|
if (!f.endsWith(".default.md"))
|
|
79
90
|
continue;
|
|
80
91
|
const sk = parseSkillFile(join(defaultDir, f));
|
|
81
|
-
if (sk && !seen.has(sk.name))
|
|
92
|
+
if (sk && !seen.has(sk.name)) {
|
|
82
93
|
skills.push(sk);
|
|
94
|
+
seen.add(sk.name);
|
|
95
|
+
}
|
|
83
96
|
}
|
|
84
97
|
}
|
|
85
|
-
catch {
|
|
98
|
+
catch (err) {
|
|
99
|
+
if (err.code !== "ENOENT")
|
|
100
|
+
log.warn(`[skills] Failed to read dir: ${err}`);
|
|
101
|
+
}
|
|
86
102
|
// 3. Project skills: workspace root *.skill.md
|
|
87
103
|
const projectDir = process.cwd();
|
|
88
104
|
try {
|
|
@@ -96,11 +112,30 @@ export function loadSkills() {
|
|
|
96
112
|
}
|
|
97
113
|
}
|
|
98
114
|
}
|
|
99
|
-
catch {
|
|
115
|
+
catch (err) {
|
|
116
|
+
if (err.code !== "ENOENT")
|
|
117
|
+
log.warn(`[skills] Failed to read dir: ${err}`);
|
|
118
|
+
}
|
|
119
|
+
// Warn on duplicate/shadowed triggers across skills (L3)
|
|
120
|
+
const triggerOwner = new Map();
|
|
121
|
+
for (const sk of skills) {
|
|
122
|
+
for (const t of sk.triggers) {
|
|
123
|
+
const key = t.toLowerCase();
|
|
124
|
+
const existing = triggerOwner.get(key);
|
|
125
|
+
if (existing && existing !== sk.name) {
|
|
126
|
+
log.warn(`[skills] Trigger "${t}" in skill "${sk.name}" shadows same trigger in "${existing}"`);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
triggerOwner.set(key, sk.name);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
100
133
|
skillCache = skills;
|
|
101
134
|
skillCacheTime = Date.now();
|
|
102
135
|
return skills;
|
|
103
136
|
}
|
|
137
|
+
/** Invalidate the skill cache so the next loadSkills() re-reads from disk. */
|
|
138
|
+
export function invalidateSkillCache() { skillCacheTime = 0; }
|
|
104
139
|
/** Match operator message against skill trigger phrases. */
|
|
105
140
|
export function matchSkill(message) {
|
|
106
141
|
const skills = loadSkills();
|
package/dist/intent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../src/intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../src/intent.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -24,25 +24,25 @@ When you have work that should be delegated to a worker thread:
|
|
|
24
24
|
1. **Create or identify the worker thread**
|
|
25
25
|
```
|
|
26
26
|
start_thread(name: "Dashboard Worker")
|
|
27
|
-
→ returns { threadId:
|
|
27
|
+
→ returns { threadId: <WORKER_THREAD_ID> }
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
2. **Send a detailed task with clear acceptance criteria**
|
|
31
31
|
```
|
|
32
32
|
send_message_to_thread(
|
|
33
|
-
threadId:
|
|
33
|
+
threadId: <WORKER_THREAD_ID>,
|
|
34
34
|
message: "Task: Rewrite the dashboard settings page using React.
|
|
35
35
|
Acceptance criteria:
|
|
36
36
|
- Settings load from /api/settings
|
|
37
37
|
- Form validates input
|
|
38
38
|
- Save button persists changes
|
|
39
|
-
When complete, send results back to thread
|
|
39
|
+
When complete, send results back to thread <MANAGER_THREAD_ID>."
|
|
40
40
|
)
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
3. **Wait for results — do NOT duplicate the work**
|
|
44
44
|
```
|
|
45
|
-
remote_copilot_wait_for_instructions(threadId:
|
|
45
|
+
remote_copilot_wait_for_instructions(threadId: <MANAGER_THREAD_ID>)
|
|
46
46
|
```
|
|
47
47
|
The worker will execute the task and send results back via send_message_to_thread.
|
|
48
48
|
|
|
@@ -56,13 +56,13 @@ For tasks that don't need a response back — the worker executes autonomously a
|
|
|
56
56
|
1. **Create or identify the worker thread**
|
|
57
57
|
```
|
|
58
58
|
start_thread(name: "Background Cleanup")
|
|
59
|
-
→ returns { threadId:
|
|
59
|
+
→ returns { threadId: <WORKER_THREAD_ID> }
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
2. **Send the task — no report-back needed**
|
|
63
63
|
```
|
|
64
64
|
send_message_to_thread(
|
|
65
|
-
threadId:
|
|
65
|
+
threadId: <WORKER_THREAD_ID>,
|
|
66
66
|
message: "Task: Clean up stale log files older than 30 days in ~/.remote-copilot-mcp/logs/.
|
|
67
67
|
This is a one-shot task. Report progress to the operator via report_progress or send_voice.
|
|
68
68
|
Do NOT message the sender back."
|