psyclaw 0.27.0 → 0.27.4
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/README.md +4 -4
- package/dist/apps/panel/index.html +58 -15
- package/dist/src/adapters/pi/extension.js +80 -33
- package/dist/src/adapters/pi/extension.js.map +1 -1
- package/dist/src/branding.js +1 -1
- package/dist/src/branding.js.map +1 -1
- package/dist/src/chat.js +0 -5
- package/dist/src/chat.js.map +1 -1
- package/dist/src/cli.js +0 -0
- package/dist/src/core/docx.js +2 -2
- package/dist/src/core/docx.js.map +1 -1
- package/dist/src/panel/extension.js +3 -1
- package/dist/src/panel/extension.js.map +1 -1
- package/dist/src/panel/server.d.ts +2 -0
- package/dist/src/panel/server.js +66 -9
- package/dist/src/panel/server.js.map +1 -1
- package/dist/src/skills/recommended.d.ts +9 -0
- package/dist/src/skills/recommended.js +49 -1
- package/dist/src/skills/recommended.js.map +1 -1
- package/package.json +1 -1
- package/skills/recommended/catalog.json +163 -44
package/dist/src/branding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branding.js","sourceRoot":"","sources":["../../src/branding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;AAEtC,+FAA+F;AAC/F,MAAM,CAAC,MAAM,eAAe,GAAW,sBAAsB,EAAE,IAAI,OAAO,CAAC;AAE3E,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,IAAI,EAAE,CAAC;AAEhD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AACxC,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AACpC,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;AACtC,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,WAAW,YAAY,oCAAoC;IAC3D,4BAA4B,YAAY,kDAAkD,YAAY,oKAAoK;IAC1Q,6IAA6I;IAC7I,qNAAqN;IACrN,8LAA8L;IAC9L,sIAAsI;IACtI,uPAAuP;IACvP,sKAAsK;IACtK,8OAA8O;IAC9O,yQAAyQ;IACzQ,wUAAwU;IACxU,iUAAiU;IACjU,+PAA+P;IAC/P,4SAA4S;IAC5S,6bAA6b;IAC7b,qPAAqP;IACrP,
|
|
1
|
+
{"version":3,"file":"branding.js","sourceRoot":"","sources":["../../src/branding.ts"],"names":[],"mappings":"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"}
|
package/dist/src/chat.js
CHANGED
|
@@ -6,7 +6,6 @@ import { fileURLToPath } from "node:url";
|
|
|
6
6
|
import { acknowledgeBundledPiChangelog, ensurePsyClawTheme, ensureQuietStartup, PSYCLAW_IDENTITY_PROMPT, } from "./branding.js";
|
|
7
7
|
import { resolvePsyClawManifest } from "./updates/manifest.js";
|
|
8
8
|
import { PROVIDER_PRESETS, readMacOsLaunchctlCredential } from "./setup.js";
|
|
9
|
-
import { enabledRecommendedSkillPaths } from "./skills/recommended.js";
|
|
10
9
|
/** Package root of the installed psyclaw package (dist/src/chat.js -> root). */
|
|
11
10
|
function packageRoot() {
|
|
12
11
|
return join(dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
@@ -68,12 +67,10 @@ export async function launchChat(options = {}) {
|
|
|
68
67
|
identityPrompt = `${identityPrompt}\n\n${supplement}`;
|
|
69
68
|
}
|
|
70
69
|
catch { /* no user supplement */ }
|
|
71
|
-
const enabledSkills = await enabledRecommendedSkillPaths(cwd);
|
|
72
70
|
const args = [
|
|
73
71
|
"--extension", extensionPath,
|
|
74
72
|
"--extension", panelExtensionPath,
|
|
75
73
|
"--skill", skillsPath,
|
|
76
|
-
...enabledSkills.paths.flatMap((path) => ["--skill", path]),
|
|
77
74
|
"--tools", toolAllowlist,
|
|
78
75
|
"--append-system-prompt", identityPrompt,
|
|
79
76
|
...(options.args ?? []),
|
|
@@ -113,8 +110,6 @@ export async function launchChat(options = {}) {
|
|
|
113
110
|
catch {
|
|
114
111
|
delete spawnEnv.PSYCLAW_PET;
|
|
115
112
|
}
|
|
116
|
-
for (const warning of enabledSkills.warnings)
|
|
117
|
-
process.stderr.write(`PsyClaw Skill: ${warning}\n`);
|
|
118
113
|
return new Promise((resolve, reject) => {
|
|
119
114
|
const child = (options.spawnProcess ?? spawn)(process.execPath, [piCli, ...args], {
|
|
120
115
|
cwd,
|
package/dist/src/chat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli.js
CHANGED
|
File without changes
|
package/dist/src/core/docx.js
CHANGED
|
@@ -2,7 +2,7 @@ import { spawn } from "node:child_process";
|
|
|
2
2
|
/**
|
|
3
3
|
* Word document conversion via Pandoc. Pandoc is already part of psyclaw's DOCX
|
|
4
4
|
* export path; if it is unavailable, the caller should fall back to the
|
|
5
|
-
*
|
|
5
|
+
* external MarkItDown tool (read) or report the failure (write).
|
|
6
6
|
*/
|
|
7
7
|
function runPandoc(args) {
|
|
8
8
|
return new Promise((resolve, reject) => {
|
|
@@ -14,7 +14,7 @@ function runPandoc(args) {
|
|
|
14
14
|
let errorText = "";
|
|
15
15
|
child.stdout?.on("data", (chunk) => { output += String(chunk); });
|
|
16
16
|
child.stderr?.on("data", (chunk) => { errorText += String(chunk); });
|
|
17
|
-
child.on("error", (error) => reject(new Error(`pandoc unavailable (${error.message}); install Pandoc or use the
|
|
17
|
+
child.on("error", (error) => reject(new Error(`pandoc unavailable (${error.message}); install Pandoc or use the external MarkItDown tool`)));
|
|
18
18
|
child.on("close", (code) => {
|
|
19
19
|
if (code === 0)
|
|
20
20
|
resolve(output);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docx.js","sourceRoot":"","sources":["../../../src/core/docx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;;GAIG;AACH,SAAS,SAAS,CAAC,IAAc;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;YAClC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;SACpC,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAC,OAAO
|
|
1
|
+
{"version":3,"file":"docx.js","sourceRoot":"","sources":["../../../src/core/docx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;;GAIG;AACH,SAAS,SAAS,CAAC,IAAc;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;YAClC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;SACpC,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAC,OAAO,uDAAuD,CAAC,CAAC,CAAC,CAAC;QAC7I,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,CAAC;;gBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,IAAI,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/H,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,YAAoB,EAAE,UAAkB,EAAE,YAAqB;IAClG,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC7D,IAAI,YAAY;QAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -71,7 +71,9 @@ export default function psyclawPanelExtension(pi) {
|
|
|
71
71
|
}
|
|
72
72
|
try {
|
|
73
73
|
if (server === undefined || workbenchUrl === undefined) {
|
|
74
|
-
const next = createPanelServer(ctx.cwd, {
|
|
74
|
+
const next = createPanelServer(ctx.cwd, { installSkill: async (task) => {
|
|
75
|
+
pi.sendUserMessage(task, ctx.isIdle() ? {} : { deliverAs: "followUp" });
|
|
76
|
+
}, assistant: async (message) => {
|
|
75
77
|
if (!assistant) {
|
|
76
78
|
assistant = new PiRpcClient({
|
|
77
79
|
cwd: ctx.cwd,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/panel/extension.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/panel/extension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,wBAAwB,GAAG;IAC/B,iDAAiD;IACjD,6FAA6F;IAC7F,oFAAoF;IACpF,gHAAgH;CACjH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,SAAS,YAAY,CAAC,QAA4B;IAChD,MAAM,OAAO,GAAG,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IAChN,MAAM,KAAK,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvE,OAAO,OAAO,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,SAAS,aAAa,CAAC,MAAsC;IAC3D,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YAAE,SAAS;QACnG,MAAM,OAAO,GAAI,KAAK,CAAC,OAAiC,CAAC,OAAO,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,SAAS;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAA0C,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAK,IAA2B,CAAC,IAAI,KAAK,MAAM,IAAI,OAAQ,IAA2B,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpQ,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,MAAc,EAAE,IAAY;IAChD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;IAC3G,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3F,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACnC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAAgB;IAC5D,IAAI,MAA0B,CAAC;IAC/B,IAAI,YAAgC,CAAC;IACrC,IAAI,SAAkC,CAAC;IAEvC,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;QACtC,MAAM,OAAO,GAAG,MAAM,CAAC;QACvB,MAAM,GAAG,SAAS,CAAC;QACnB,YAAY,GAAG,SAAS,CAAC;QACzB,MAAM,gBAAgB,GAAG,SAAS,CAAC;QACnC,SAAS,GAAG,SAAS,CAAC;QACtB,MAAM,gBAAgB,EAAE,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC;IAEF,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE;QAC1B,WAAW,EAAE,qDAAqD;QAClE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACvB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,IAAI,MAAM,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBACvD,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;4BACrE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;wBAC1E,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;4BAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;gCACf,SAAS,GAAG,IAAI,WAAW,CAAC;oCAC1B,GAAG,EAAE,GAAG,CAAC,GAAG;oCACZ,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oCAC9E,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;oCAC/D,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;oCACtC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;oCACrC,YAAY,EAAE,wBAAwB;iCACvC,CAAC,CAAC;gCACH,IAAI,CAAC;oCACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;gCAC1B,CAAC;gCAAC,OAAO,KAAK,EAAE,CAAC;oCACf,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oCAC9C,SAAS,GAAG,SAAS,CAAC;oCACtB,MAAM,KAAK,CAAC;gCACd,CAAC;4BACH,CAAC;4BACD,MAAM,OAAO,GAAG,SAAS,CAAC;4BAC1B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;4BACpD,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,MAAwC,CAAC,EAAE,CAAC;wBAC3E,CAAC,EAAC,CAAC,CAAC;oBACJ,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBACzC,MAAM,GAAG,IAAI,CAAC;oBACd,YAAY,GAAG,oBAAoB,UAAU,EAAE,CAAC;gBAClD,CAAC;gBACD,aAAa,CAAC,YAAY,CAAC,CAAC;gBAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,SAAS,CAAC;gBACnB,YAAY,GAAG,SAAS,CAAC;gBACzB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -31,6 +31,8 @@ export interface PanelServerOptions {
|
|
|
31
31
|
assistant?: (message: string) => Promise<{
|
|
32
32
|
text: string;
|
|
33
33
|
}>;
|
|
34
|
+
/** Queue an approved installation task into the current PsyClaw model session. */
|
|
35
|
+
installSkill?: (task: string) => Promise<void>;
|
|
34
36
|
}
|
|
35
37
|
/**
|
|
36
38
|
* When the panel message references claims by id (e.g. the 追问此论断 flow),
|
package/dist/src/panel/server.js
CHANGED
|
@@ -30,11 +30,15 @@ export { verifyDoi } from "../core/doi.js";
|
|
|
30
30
|
import { resumePlanWithPi } from "../orchestration/pi-executor.js";
|
|
31
31
|
import { RunEventLog } from "./events.js";
|
|
32
32
|
import { PSYCLAW_IDENTITY_PROMPT } from "../branding.js";
|
|
33
|
+
import { recommendedSkillTarget } from "../skills/recommended.js";
|
|
33
34
|
const activePanelRuns = new Set();
|
|
34
35
|
async function readRecommendationState(root) {
|
|
35
36
|
try {
|
|
36
37
|
const value = JSON.parse(await readFile(join(root, ".psyclaw", "recommendations.json"), "utf8"));
|
|
37
|
-
|
|
38
|
+
const skillScopes = value.skillScopes && typeof value.skillScopes === "object"
|
|
39
|
+
? Object.fromEntries(Object.entries(value.skillScopes).filter((entry) => entry[1] === "project" || entry[1] === "user"))
|
|
40
|
+
: undefined;
|
|
41
|
+
return { schemaVersion: "psyclaw/recommendation-state/v1", skills: Array.isArray(value.skills) ? value.skills.filter((id) => typeof id === "string") : [], mcp: Array.isArray(value.mcp) ? value.mcp.filter((id) => typeof id === "string") : [], ...(skillScopes === undefined ? {} : { skillScopes }) };
|
|
38
42
|
}
|
|
39
43
|
catch {
|
|
40
44
|
return { schemaVersion: "psyclaw/recommendation-state/v1", skills: [], mcp: [] };
|
|
@@ -393,6 +397,22 @@ function publicInstallPlan(plan) {
|
|
|
393
397
|
const { projectRoot: _projectRoot, ...publicFields } = plan;
|
|
394
398
|
return publicFields;
|
|
395
399
|
}
|
|
400
|
+
function panelSkillInstallTask(root, item, scope) {
|
|
401
|
+
const id = String(item.id ?? "");
|
|
402
|
+
const name = String(item.name ?? id);
|
|
403
|
+
const sourceRef = String(item.sourceRef ?? "");
|
|
404
|
+
const target = recommendedSkillTarget(root, id, scope);
|
|
405
|
+
return [
|
|
406
|
+
`安装推荐 Skill:${name} (${id})。`,
|
|
407
|
+
`来源网址:${sourceRef}`,
|
|
408
|
+
`安装位置:${scope === "user" ? "系统目录(所有项目)" : "项目目录(仅当前项目)"}。`,
|
|
409
|
+
`唯一允许的最终目标目录:${target}`,
|
|
410
|
+
"请使用当前会话的工具检查来源仓库并完成安装。不要写入其他 Skill 目录,不要修改 data/raw、.git 或研究产物。",
|
|
411
|
+
"目标目录最终必须直接包含有效 SKILL.md(YAML frontmatter 至少包含 name 和 description),不得包含 .git、符号链接、凭据或二进制大文件。",
|
|
412
|
+
"如果仓库包含多个 Skill,只安装与此推荐项相符的部分;如果它不是 Skill 或无法合理适配,停止并说明原因,不要伪造 SKILL.md。",
|
|
413
|
+
"安装完成后检查目标目录结构,并提醒用户执行 /skills 启用该项,再执行 /reload。",
|
|
414
|
+
].join("\n");
|
|
415
|
+
}
|
|
396
416
|
/** Metadata-only catalog for the optional panel. No install or credential read. */
|
|
397
417
|
async function panelCatalog(root) {
|
|
398
418
|
const scans = await discoverAgents();
|
|
@@ -532,7 +552,15 @@ async function recommendedSkills() {
|
|
|
532
552
|
for (const path of candidates) {
|
|
533
553
|
try {
|
|
534
554
|
const catalog = JSON.parse(await readFile(path, "utf8"));
|
|
535
|
-
return {
|
|
555
|
+
return {
|
|
556
|
+
...catalog,
|
|
557
|
+
items: (catalog.items ?? []).filter((item) => item.kind === "skill").map((item) => ({
|
|
558
|
+
...item,
|
|
559
|
+
slashCommand: `/skills enable ${String(item.id ?? "")}`,
|
|
560
|
+
installCommand: `/install skill ${String(item.id ?? "")}`,
|
|
561
|
+
})),
|
|
562
|
+
externalTools: (catalog.externalTools ?? []).filter((item) => item.kind === "external-tool"),
|
|
563
|
+
};
|
|
536
564
|
}
|
|
537
565
|
catch { /* try package layout */ }
|
|
538
566
|
}
|
|
@@ -817,6 +845,8 @@ export function createPanelServer(root, options = {}) {
|
|
|
817
845
|
const state = await readRecommendationState(root);
|
|
818
846
|
const disabled = await readDisabledCapabilities(root);
|
|
819
847
|
const [skills, mcps] = await Promise.all([recommendedSkills(), recommendedMcps()]);
|
|
848
|
+
const skillIds = new Set((skills.items ?? []).map((item) => String(item.id ?? "")));
|
|
849
|
+
const mcpIds = new Set((mcps.items ?? []).map((item) => String(item.id ?? "")));
|
|
820
850
|
const nameOf = (kind, id) => {
|
|
821
851
|
const catalog = kind === "skill" ? skills : mcps;
|
|
822
852
|
const item = (catalog.items ?? []).find((candidate) => candidate.id === id);
|
|
@@ -826,8 +856,8 @@ export function createPanelServer(root, options = {}) {
|
|
|
826
856
|
response.end(JSON.stringify({
|
|
827
857
|
schemaVersion: "psyclaw/enabled-capabilities/v1",
|
|
828
858
|
coreSkills: CORE_SKILLS.map((skill) => ({ id: skill.id, name: skill.name, enabled: !disabled.coreSkills.includes(skill.id) })),
|
|
829
|
-
skills: state.skills.map((id) => ({ id, name: nameOf("skill", id), enabled: true })),
|
|
830
|
-
mcp: state.mcp.map((id) => ({ id, name: nameOf("mcp", id), enabled: true })),
|
|
859
|
+
skills: state.skills.filter((id) => skillIds.has(id)).map((id) => ({ id, name: nameOf("skill", id), enabled: true })),
|
|
860
|
+
mcp: state.mcp.filter((id) => mcpIds.has(id)).map((id) => ({ id, name: nameOf("mcp", id), enabled: true })),
|
|
831
861
|
}));
|
|
832
862
|
return;
|
|
833
863
|
}
|
|
@@ -864,6 +894,7 @@ export function createPanelServer(root, options = {}) {
|
|
|
864
894
|
const kind = body.kind === "skill" || body.kind === "mcp" ? body.kind : undefined;
|
|
865
895
|
const id = String(body.id ?? "").trim();
|
|
866
896
|
const approved = body.approved === true;
|
|
897
|
+
const scope = body.scope === "project" || body.scope === "user" ? body.scope : undefined;
|
|
867
898
|
const actor = String(body.actor ?? "researcher").trim();
|
|
868
899
|
if (!kind || !id || !approved || actor.length < 1)
|
|
869
900
|
throw new Error("kind, id, approved and actor are required");
|
|
@@ -873,12 +904,37 @@ export function createPanelServer(root, options = {}) {
|
|
|
873
904
|
response.end(JSON.stringify({ error: "unknown recommended item" }));
|
|
874
905
|
return;
|
|
875
906
|
}
|
|
876
|
-
|
|
877
|
-
|
|
907
|
+
if (kind === "skill") {
|
|
908
|
+
if (!scope)
|
|
909
|
+
throw new Error("scope must be project or user for Skill installation");
|
|
910
|
+
if (options.installSkill === undefined) {
|
|
911
|
+
response.writeHead(503, { "content-type": "application/json" });
|
|
912
|
+
response.end(JSON.stringify({ error: "Skill 安装需要当前模型通道;请在 PsyClaw 对话中执行 /panel 后再安装。", reasonCode: "panel.skill-installer-unavailable" }));
|
|
913
|
+
return;
|
|
914
|
+
}
|
|
915
|
+
await options.installSkill(panelSkillInstallTask(root, found.item, scope));
|
|
916
|
+
const state = await readRecommendationState(root);
|
|
917
|
+
state.skillScopes = { ...(state.skillScopes ?? {}), [id]: scope };
|
|
918
|
+
await writeRecommendationState(root, state);
|
|
919
|
+
response.writeHead(202, { "content-type": "application/json" });
|
|
920
|
+
response.end(JSON.stringify({
|
|
921
|
+
schemaVersion: "psyclaw/model-install-task/v1",
|
|
922
|
+
ok: true,
|
|
923
|
+
queued: true,
|
|
924
|
+
id,
|
|
925
|
+
scope,
|
|
926
|
+
reloadHint: "/reload",
|
|
927
|
+
message: "安装任务已交给当前模型;模型完成后请启用 Skill 并执行 /reload。",
|
|
928
|
+
}));
|
|
929
|
+
return;
|
|
930
|
+
}
|
|
931
|
+
const shellCommand = typeof found.prep?.command === "string" && found.prep.command.trim() ? found.prep.command.trim() : undefined;
|
|
932
|
+
if (!shellCommand) {
|
|
878
933
|
response.writeHead(400, { "content-type": "application/json" });
|
|
879
934
|
response.end(JSON.stringify({ error: "no install command is available for this item", blockedReason: found.prep?.blockedReason ?? null }));
|
|
880
935
|
return;
|
|
881
936
|
}
|
|
937
|
+
const command = shellCommand;
|
|
882
938
|
const startedAt = new Date().toISOString();
|
|
883
939
|
const runId = `panel_${randomUUID().replaceAll("-", "")}`;
|
|
884
940
|
const idempotencyKey = `panel:install:${sha256Text(`${kind}\u0000${id}\u0000${actor}`).slice(0, 24)}`;
|
|
@@ -894,7 +950,9 @@ export function createPanelServer(root, options = {}) {
|
|
|
894
950
|
command,
|
|
895
951
|
startedAt,
|
|
896
952
|
};
|
|
897
|
-
|
|
953
|
+
let exitCode;
|
|
954
|
+
let output;
|
|
955
|
+
({ exitCode, output } = await runShellCommand(command, root));
|
|
898
956
|
receipt.ok = exitCode === 0;
|
|
899
957
|
receipt.exitCode = exitCode;
|
|
900
958
|
receipt.finishedAt = new Date().toISOString();
|
|
@@ -902,8 +960,7 @@ export function createPanelServer(root, options = {}) {
|
|
|
902
960
|
await atomicWriteFile(receiptPath, `${JSON.stringify(receipt, null, 2)}\n`);
|
|
903
961
|
if (receipt.ok) {
|
|
904
962
|
const state = await readRecommendationState(root);
|
|
905
|
-
|
|
906
|
-
state[key] = [...new Set([...state[key], id])];
|
|
963
|
+
state.mcp = [...new Set([...state.mcp, id])];
|
|
907
964
|
await writeRecommendationState(root, state);
|
|
908
965
|
}
|
|
909
966
|
await appendJsonlIfMissing(projectPaths(root).audit, {
|