psyclaw 0.27.14 → 0.27.18

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.
Files changed (71) hide show
  1. package/README.md +16 -7
  2. package/dist/apps/panel/index.html +8 -7
  3. package/dist/src/adapters/pi/extension.js +424 -175
  4. package/dist/src/adapters/pi/extension.js.map +1 -1
  5. package/dist/src/analysis/hooks.js +3 -3
  6. package/dist/src/analysis/hooks.js.map +1 -1
  7. package/dist/src/analysis/pre-registration.d.ts +5 -4
  8. package/dist/src/analysis/pre-registration.js +3 -3
  9. package/dist/src/analysis/pre-registration.js.map +1 -1
  10. package/dist/src/branding.d.ts +1 -1
  11. package/dist/src/branding.js +17 -12
  12. package/dist/src/branding.js.map +1 -1
  13. package/dist/src/chat.js +9 -0
  14. package/dist/src/chat.js.map +1 -1
  15. package/dist/src/cli.js +1 -18
  16. package/dist/src/cli.js.map +1 -1
  17. package/dist/src/index.d.ts +1 -0
  18. package/dist/src/index.js +1 -0
  19. package/dist/src/index.js.map +1 -1
  20. package/dist/src/orchestration/contracts.d.ts +4 -1
  21. package/dist/src/panel/events.js +28 -1
  22. package/dist/src/panel/events.js.map +1 -1
  23. package/dist/src/panel/extension.d.ts +1 -1
  24. package/dist/src/panel/extension.js +16 -1
  25. package/dist/src/panel/extension.js.map +1 -1
  26. package/dist/src/panel/projection.d.ts +1 -1
  27. package/dist/src/panel/projection.js +30 -12
  28. package/dist/src/panel/projection.js.map +1 -1
  29. package/dist/src/panel/server.d.ts +12 -0
  30. package/dist/src/panel/server.js +104 -2
  31. package/dist/src/panel/server.js.map +1 -1
  32. package/dist/src/project/approvals.d.ts +8 -0
  33. package/dist/src/project/approvals.js +6 -7
  34. package/dist/src/project/approvals.js.map +1 -1
  35. package/dist/src/project/bootstrap.d.ts +0 -17
  36. package/dist/src/project/bootstrap.js +1 -87
  37. package/dist/src/project/bootstrap.js.map +1 -1
  38. package/dist/src/project/hitl.d.ts +4 -1
  39. package/dist/src/project/hitl.js +8 -5
  40. package/dist/src/project/hitl.js.map +1 -1
  41. package/dist/src/research/brief.js +1 -1
  42. package/dist/src/research/brief.js.map +1 -1
  43. package/dist/src/research/decision.d.ts +46 -0
  44. package/dist/src/research/decision.js +85 -0
  45. package/dist/src/research/decision.js.map +1 -0
  46. package/dist/src/style/cli-ui.js +2 -3
  47. package/dist/src/style/cli-ui.js.map +1 -1
  48. package/dist/src/tui/skill-manager.d.ts +1 -0
  49. package/dist/src/tui/skill-manager.js +6 -1
  50. package/dist/src/tui/skill-manager.js.map +1 -1
  51. package/dist/src/wizard.js +16 -7
  52. package/dist/src/wizard.js.map +1 -1
  53. package/dist/src/workflows/expert-review-runner.js +4 -6
  54. package/dist/src/workflows/expert-review-runner.js.map +1 -1
  55. package/dist/src/workflows/institutional-fulltext.js +3 -3
  56. package/dist/src/workflows/institutional-fulltext.js.map +1 -1
  57. package/dist/src/workflows/publish.js +3 -2
  58. package/dist/src/workflows/publish.js.map +1 -1
  59. package/dist/src/workflows/spec.js +1 -1
  60. package/dist/src/workflows/spec.js.map +1 -1
  61. package/dist/src/workflows/writing-review.js +40 -7
  62. package/dist/src/workflows/writing-review.js.map +1 -1
  63. package/package.json +4 -2
  64. package/scripts/psyclaw.mjs +27 -0
  65. package/scripts/rebrand-pi.mjs +77 -16
  66. package/skills/core/academic-grill/SKILL.md +9 -1
  67. package/skills/core/citation-audit/SKILL.md +2 -0
  68. package/skills/core/research-brief/SKILL.md +6 -0
  69. package/skills/core/research-intake/SKILL.md +1 -1
  70. package/skills/recommended/catalog.json +32 -31
  71. package/skills/recommended/mcp-catalog.json +13 -1
@@ -1 +1 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/panel/projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/panel/projection.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,12 @@ export declare function downloadReferencePdf(root: string, doi: string, fetchFn?
24
24
  reason: string;
25
25
  doi: string;
26
26
  }>;
27
+ interface PanelPluginRecord {
28
+ source: string;
29
+ scope: "project" | "user";
30
+ filtered: boolean;
31
+ installed: boolean;
32
+ }
27
33
  export interface PanelServerOptions {
28
34
  /** Absolute or cwd-relative path to the panel HTML file. */
29
35
  panelHtmlPath?: string;
@@ -33,6 +39,12 @@ export interface PanelServerOptions {
33
39
  }>;
34
40
  /** Queue an approved installation task into the current PsyClaw model session. */
35
41
  installSkill?: (task: string) => Promise<void>;
42
+ /** Queue an explicitly requested external-tool installation task. */
43
+ installExternalTool?: (task: string) => Promise<void>;
44
+ /** Install a Plugin through Pi's native package manager. */
45
+ installPlugin?: (source: string, scope: "project" | "user") => Promise<void>;
46
+ /** Read Pi's configured packages without duplicating its package registry. */
47
+ listPlugins?: () => PanelPluginRecord[];
36
48
  }
37
49
  /**
38
50
  * When the panel message references claims by id (e.g. the 追问此论断 flow),
@@ -425,6 +425,9 @@ function publicInstallPlan(plan) {
425
425
  const { projectRoot: _projectRoot, ...publicFields } = plan;
426
426
  return publicFields;
427
427
  }
428
+ function pluginSourceIdentity(source) {
429
+ return source.trim().replace(/^git:/, "").replace(/\.git$/i, "").replace(/\/$/, "").toLocaleLowerCase();
430
+ }
428
431
  function panelSkillInstallTask(root, item, scope) {
429
432
  const id = String(item.id ?? "");
430
433
  const name = String(item.name ?? id);
@@ -441,6 +444,16 @@ function panelSkillInstallTask(root, item, scope) {
441
444
  "安装完成后检查目标目录结构,并提醒用户执行 /skill 启用该项,再执行 /reload。",
442
445
  ].join("\n");
443
446
  }
447
+ function panelExternalToolInstallTask(root, item) {
448
+ return [
449
+ `安装推荐外部工具:${String(item.name ?? item.id ?? "external tool")}。`,
450
+ `官方来源:${String(item.sourceRef ?? "")}`,
451
+ `当前工作目录:${root}`,
452
+ String(item.installHint ?? "读取官方最新安装说明,选择适合当前操作系统的安装方式。"),
453
+ "用户已在 Panel 中明确点击安装。读取官方安装说明,执行安装并验证版本或最小命令;不要读取或输出凭据。",
454
+ "这是外部工具,不要将它宣称为来源仓库提供的 Skill 或 Plugin。完成后用自然语言报告实际安装位置、版本和验证结果。",
455
+ ].join("\n");
456
+ }
444
457
  /** Metadata-only catalog for the optional panel. No install or credential read. */
445
458
  async function panelCatalog(root) {
446
459
  const scans = await discoverAgents();
@@ -952,14 +965,26 @@ export function createPanelServer(root, options = {}) {
952
965
  return;
953
966
  }
954
967
  const body = await readJsonBody(request);
955
- const kind = body.kind === "skill" || body.kind === "mcp" ? body.kind : undefined;
968
+ const kind = body.kind === "skill" || body.kind === "mcp" || body.kind === "plugin" || body.kind === "external" ? body.kind : undefined;
956
969
  const id = String(body.id ?? "").trim();
957
970
  const approved = body.approved === true;
958
971
  const scope = body.scope === "project" || body.scope === "user" ? body.scope : undefined;
959
972
  const actor = String(body.actor ?? "researcher").trim();
960
973
  if (!kind || !id || !approved || actor.length < 1)
961
974
  throw new Error("kind, id, approved and actor are required");
962
- const found = await findRecommendedItem(kind, id);
975
+ const found = kind === "plugin"
976
+ ? await (async () => {
977
+ const catalog = await recommendedSkills();
978
+ const item = (catalog.plugins ?? []).find((candidate) => candidate.id === id);
979
+ return item ? { item } : undefined;
980
+ })()
981
+ : kind === "external"
982
+ ? await (async () => {
983
+ const catalog = await recommendedSkills();
984
+ const item = (catalog.externalTools ?? []).find((candidate) => candidate.id === id && candidate.installable !== false);
985
+ return item ? { item } : undefined;
986
+ })()
987
+ : await findRecommendedItem(kind, id);
963
988
  if (!found) {
964
989
  response.writeHead(404, { "content-type": "application/json" });
965
990
  response.end(JSON.stringify({ error: "unknown recommended item" }));
@@ -989,6 +1014,33 @@ export function createPanelServer(root, options = {}) {
989
1014
  }));
990
1015
  return;
991
1016
  }
1017
+ if (kind === "plugin") {
1018
+ if (!scope)
1019
+ throw new Error("scope must be project or user for Plugin installation");
1020
+ if (options.installPlugin === undefined) {
1021
+ response.writeHead(503, { "content-type": "application/json" });
1022
+ response.end(JSON.stringify({ error: "Plugin 安装器不可用,请在 PsyClaw 对话中执行 /panel 后重试。" }));
1023
+ return;
1024
+ }
1025
+ const source = String(found.item.sourceRef ?? "").trim();
1026
+ if (!source)
1027
+ throw new Error("Plugin source is missing");
1028
+ await options.installPlugin(source, scope);
1029
+ response.writeHead(202, { "content-type": "application/json" });
1030
+ response.end(JSON.stringify({ schemaVersion: "psyclaw/plugin-install-receipt/v1", ok: true, id, source, scope, reloadHint: "/reload", message: "Plugin 已由 Pi 原生安装器处理;请执行 /reload。" }));
1031
+ return;
1032
+ }
1033
+ if (kind === "external") {
1034
+ if (options.installExternalTool === undefined) {
1035
+ response.writeHead(503, { "content-type": "application/json" });
1036
+ response.end(JSON.stringify({ error: "外部工具安装需要当前模型通道;请在 PsyClaw 对话中执行 /panel 后再安装。" }));
1037
+ return;
1038
+ }
1039
+ await options.installExternalTool(panelExternalToolInstallTask(root, found.item));
1040
+ response.writeHead(202, { "content-type": "application/json" });
1041
+ response.end(JSON.stringify({ schemaVersion: "psyclaw/external-tool-install-task/v1", ok: true, queued: true, id, message: "安装任务已交给当前模型;完成后会报告版本与验证结果。" }));
1042
+ return;
1043
+ }
992
1044
  const shellCommand = typeof found.prep?.command === "string" && found.prep.command.trim() ? found.prep.command.trim() : undefined;
993
1045
  if (!shellCommand) {
994
1046
  response.writeHead(400, { "content-type": "application/json" });
@@ -1594,6 +1646,56 @@ export function createPanelServer(root, options = {}) {
1594
1646
  response.end(JSON.stringify(await recommendedSkills()));
1595
1647
  return;
1596
1648
  }
1649
+ if (url.pathname === "/api/recommended-plugins") {
1650
+ const catalog = await recommendedSkills();
1651
+ const configuredBySource = new Map();
1652
+ for (const entry of options.listPlugins?.() ?? []) {
1653
+ const key = pluginSourceIdentity(entry.source);
1654
+ const previous = configuredBySource.get(key);
1655
+ if (!previous || entry.scope === "project")
1656
+ configuredBySource.set(key, entry);
1657
+ }
1658
+ const matched = new Set();
1659
+ const items = (catalog.plugins ?? []).map((item) => {
1660
+ const sourceRef = String(item.sourceRef ?? "");
1661
+ const sourceKey = pluginSourceIdentity(sourceRef);
1662
+ const installed = configuredBySource.get(sourceKey);
1663
+ if (installed)
1664
+ matched.add(sourceKey);
1665
+ return {
1666
+ ...item,
1667
+ installed: installed?.installed === true,
1668
+ enabled: installed?.installed === true,
1669
+ configured: installed !== undefined,
1670
+ local: false,
1671
+ ...(installed === undefined ? {} : { scope: installed.scope }),
1672
+ ...(installed?.filtered === undefined ? {} : { filtered: installed.filtered }),
1673
+ };
1674
+ });
1675
+ const localItems = [...configuredBySource.entries()]
1676
+ .filter(([key]) => !matched.has(key))
1677
+ .map(([, entry], index) => {
1678
+ const normalized = entry.source.replace(/^git:/, "").replace(/[?#].*$/, "").replace(/\.git$/i, "").replace(/\/$/, "");
1679
+ const name = normalized.split(/[\\/]/).filter(Boolean).at(-1)?.replace(/^npm:/, "") || "Local Plugin";
1680
+ return {
1681
+ id: `local-plugin-${index + 1}`,
1682
+ name,
1683
+ kind: "plugin",
1684
+ stage: "本地 Plugin",
1685
+ description: "由 Pi 原生包管理器识别的本地已安装 Plugin。",
1686
+ sourceRef: entry.source,
1687
+ installed: entry.installed,
1688
+ enabled: entry.installed,
1689
+ configured: true,
1690
+ local: true,
1691
+ scope: entry.scope,
1692
+ filtered: entry.filtered,
1693
+ };
1694
+ });
1695
+ response.writeHead(200, { "content-type": "application/json" });
1696
+ response.end(JSON.stringify({ schemaVersion: "psyclaw/recommended-plugins/v1", items: [...items, ...localItems] }));
1697
+ return;
1698
+ }
1597
1699
  if (url.pathname === "/api/recommended-mcps") {
1598
1700
  response.writeHead(200, { "content-type": "application/json" });
1599
1701
  response.end(JSON.stringify(await recommendedMcps()));