@pi-harness/pi-harness 0.1.46 → 0.1.48

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 (51) hide show
  1. package/apps/web/dist/assets/{index-DE7mHG4Q.js → index-B3lD1WQN.js} +1 -1
  2. package/apps/web/dist/assets/{index-Dg7joYCK.css → index-BTIJBvkA.css} +1 -1
  3. package/apps/web/dist/index.html +2 -2
  4. package/apps/web/package.json +1 -1
  5. package/apps/web/src/style.css +9 -3
  6. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/anchored-standard.json +1 -1
  7. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/browser-session.json +1 -1
  8. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +1 -1
  9. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-stars.json +1 -2
  10. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/prompt-library.json +1 -1
  11. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-bridge.json +2 -2
  12. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/session-compare.json +1 -1
  13. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/skill-catalog.json +1 -1
  14. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/sql-lens.json +1 -1
  15. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/synapse.json +1 -1
  16. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +2 -2
  17. package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/workspace-search.json +1 -1
  18. package/node_modules/@pi-harness/api-gateway/package.json +1 -1
  19. package/node_modules/@pi-harness/cli/package.json +1 -1
  20. package/node_modules/@pi-harness/host-webserver/package.json +1 -1
  21. package/node_modules/@pi-harness/web-app/package.json +1 -1
  22. package/package.json +6 -6
  23. package/packages/api-gateway/dist/marketplace-entries/official/anchored-standard.json +1 -1
  24. package/packages/api-gateway/dist/marketplace-entries/official/browser-session.json +1 -1
  25. package/packages/api-gateway/dist/marketplace-entries/official/obsidian-sync.json +1 -1
  26. package/packages/api-gateway/dist/marketplace-entries/official/plugin-stars.json +1 -2
  27. package/packages/api-gateway/dist/marketplace-entries/official/prompt-library.json +1 -1
  28. package/packages/api-gateway/dist/marketplace-entries/official/session-bridge.json +2 -2
  29. package/packages/api-gateway/dist/marketplace-entries/official/session-compare.json +1 -1
  30. package/packages/api-gateway/dist/marketplace-entries/official/skill-catalog.json +1 -1
  31. package/packages/api-gateway/dist/marketplace-entries/official/sql-lens.json +1 -1
  32. package/packages/api-gateway/dist/marketplace-entries/official/synapse.json +1 -1
  33. package/packages/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +2 -2
  34. package/packages/api-gateway/dist/marketplace-entries/official/workspace-search.json +1 -1
  35. package/packages/api-gateway/package.json +1 -1
  36. package/packages/api-gateway/src/marketplace-entries/official/anchored-standard.json +1 -1
  37. package/packages/api-gateway/src/marketplace-entries/official/browser-session.json +1 -1
  38. package/packages/api-gateway/src/marketplace-entries/official/obsidian-sync.json +1 -1
  39. package/packages/api-gateway/src/marketplace-entries/official/plugin-stars.json +1 -2
  40. package/packages/api-gateway/src/marketplace-entries/official/prompt-library.json +1 -1
  41. package/packages/api-gateway/src/marketplace-entries/official/session-bridge.json +2 -2
  42. package/packages/api-gateway/src/marketplace-entries/official/session-compare.json +1 -1
  43. package/packages/api-gateway/src/marketplace-entries/official/skill-catalog.json +1 -1
  44. package/packages/api-gateway/src/marketplace-entries/official/sql-lens.json +1 -1
  45. package/packages/api-gateway/src/marketplace-entries/official/synapse.json +1 -1
  46. package/packages/api-gateway/src/marketplace-entries/official/telemetry-blocker.json +2 -2
  47. package/packages/api-gateway/src/marketplace-entries/official/workspace-search.json +1 -1
  48. package/packages/api-gateway/test/marketplace.test.ts +31 -3
  49. package/packages/bundle-web-app/package.json +1 -1
  50. package/packages/cli/package.json +1 -1
  51. package/packages/host-webserver/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "session-compare",
3
3
  "packageName": "@pi-harness/plugin-session-compare",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Session Compare",
6
6
  "description": "按角色和文本比较两个已保存的 Pi 会话,不修改任何会话文件。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "skill-catalog",
3
3
  "packageName": "@pi-harness/plugin-skill-catalog",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Skills Catalog",
6
6
  "description": "列出已加载的 Agent Skills,通过受限的不可信数据边界安全查看其中一个,并显示托管 MCP 的状态。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "sql-lens",
3
3
  "packageName": "@pi-harness/plugin-sql-lens",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "SQL Lens",
6
6
  "description": "查看工作区内的 SQLite 数据库:一次一条只读语句,结果有上限,检查符号链接与文件替换,超时和取消都会收尾。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "synapse",
3
3
  "packageName": "@pi-harness/plugin-synapse",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Synapse",
6
6
  "description": "把会话之间的关联和相关工作项画出来,不改动对话记录。",
7
7
  "author": "Pi Harness",
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-telemetry-blocker",
4
4
  "version": "0.1.30",
5
5
  "name": "Telemetry Blocker",
6
- "description": "拦截配置好的遥测出站地址并记录拦截次数,不收集载荷内容。",
6
+ "description": "丢弃本地 piTelemetry 服务调用并统计事件总线观察;不保存事件属性,不拦截网络流量,也不阻止其他监听器。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "安全"
15
15
  },
16
16
  "capabilities": ["read-only"],
17
- "hooks": ["网络策略", "插件面板"],
17
+ "hooks": ["本地遥测服务", "事件总线观察", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-telemetry-blocker",
20
20
  "config": {}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "workspace-search",
3
3
  "packageName": "@pi-harness/plugin-workspace-search",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Workspace Search",
6
6
  "description": "在当前工作区的文本文件里搜索,自动跳过忽略目录和二进制内容。",
7
7
  "author": "Pi Harness",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/api-gateway",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "private": true,
5
5
  "description": "Cordis HTTP API routes for the Pi Harness browser client",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/cli",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "private": true,
5
5
  "description": "Plugin-first Pi Harness CLI",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/host-webserver",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "private": true,
5
5
  "description": "Cordis route-registration service for the Pi Harness web host",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/web-app",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "private": true,
5
5
  "description": "Patchable Web application bundle for Pi Harness",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/pi-harness",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
5
5
  "bugs": {
6
6
  "url": "https://github.com/pi-harness/pi-harness/issues"
@@ -58,11 +58,11 @@
58
58
  "@earendil-works/pi-agent-core": "0.84.4",
59
59
  "@earendil-works/pi-ai": "0.84.4",
60
60
  "@earendil-works/pi-coding-agent": "0.84.4",
61
- "@pi-harness/api-gateway": "0.1.46",
62
- "@pi-harness/cli": "0.1.46",
63
- "@pi-harness/core": "^0.1.46",
64
- "@pi-harness/host-webserver": "0.1.46",
65
- "@pi-harness/web-app": "0.1.46",
61
+ "@pi-harness/api-gateway": "0.1.48",
62
+ "@pi-harness/cli": "0.1.48",
63
+ "@pi-harness/core": "^0.1.48",
64
+ "@pi-harness/host-webserver": "0.1.48",
65
+ "@pi-harness/web-app": "0.1.48",
66
66
  "semver": "7.8.5"
67
67
  },
68
68
  "devDependencies": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "anchored-standard",
3
3
  "packageName": "@pi-harness/plugin-anchored-standard",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Anchored Standard",
6
6
  "description": "按显式的工具白名单审计 agent 的执行轨迹,标出越界的调用。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "browser-session",
3
3
  "packageName": "@pi-harness/plugin-browser-session",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Browser Session",
6
6
  "description": "通过 Chrome DevTools 协议控制一个仅限本机回环的浏览器会话,命令受限、可取消,截图元数据会被清理。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "obsidian-sync",
3
3
  "packageName": "@pi-harness/plugin-obsidian-sync",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Obsidian Sync",
6
6
  "description": "把明确指定的会话笔记写进 Obsidian 库的指定路径,不会读取库里其他文件。",
7
7
  "author": "Pi Harness",
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-plugin-stars",
4
4
  "version": "0.1.30",
5
5
  "name": "Plugin Stars",
6
- "description": " raw.githubusercontent.com 上的插件榜单快照里检索,输入受限、校验严格、可取消,失败即关闭面板。",
6
+ "description": "显式配置 raw.githubusercontent.com 上的 Pi Harness 榜单后只读检索;输入受限、校验严格、可取消,失败保留上次成功结果。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -18,7 +18,6 @@
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-plugin-stars",
20
20
  "config": {
21
- "sourceUrl": "https://raw.githubusercontent.com/ywsldxk/dsh-plugin-stars/main/data/plugins.json",
22
21
  "limit": 10,
23
22
  "timeoutMs": 15000
24
23
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "prompt-library",
3
3
  "packageName": "@pi-harness/plugin-prompt-library",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Prompt Library",
6
6
  "description": "在当前 Pi 会话里保存、搜索、更新和删除可复用的提示词模板。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "session-bridge",
3
3
  "packageName": "@pi-harness/plugin-session-bridge",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Session Bridge",
6
6
  "description": "预览并导出会话交接包;导入需要确认,包体经过严格校验并防重复注入。",
7
7
  "author": "Pi Harness",
@@ -13,7 +13,7 @@
13
13
  "id": "workflow",
14
14
  "label": "工作流"
15
15
  },
16
- "capabilities": ["read-only", "session-data"],
16
+ "capabilities": ["session-data", "writes-files"],
17
17
  "hooks": ["会话桥接工具", "当前会话管理器", "自定义上下文消息", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-session-bridge",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "session-compare",
3
3
  "packageName": "@pi-harness/plugin-session-compare",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Session Compare",
6
6
  "description": "按角色和文本比较两个已保存的 Pi 会话,不修改任何会话文件。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "skill-catalog",
3
3
  "packageName": "@pi-harness/plugin-skill-catalog",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Skills Catalog",
6
6
  "description": "列出已加载的 Agent Skills,通过受限的不可信数据边界安全查看其中一个,并显示托管 MCP 的状态。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "sql-lens",
3
3
  "packageName": "@pi-harness/plugin-sql-lens",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "SQL Lens",
6
6
  "description": "查看工作区内的 SQLite 数据库:一次一条只读语句,结果有上限,检查符号链接与文件替换,超时和取消都会收尾。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "synapse",
3
3
  "packageName": "@pi-harness/plugin-synapse",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Synapse",
6
6
  "description": "把会话之间的关联和相关工作项画出来,不改动对话记录。",
7
7
  "author": "Pi Harness",
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-telemetry-blocker",
4
4
  "version": "0.1.30",
5
5
  "name": "Telemetry Blocker",
6
- "description": "拦截配置好的遥测出站地址并记录拦截次数,不收集载荷内容。",
6
+ "description": "丢弃本地 piTelemetry 服务调用并统计事件总线观察;不保存事件属性,不拦截网络流量,也不阻止其他监听器。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "安全"
15
15
  },
16
16
  "capabilities": ["read-only"],
17
- "hooks": ["网络策略", "插件面板"],
17
+ "hooks": ["本地遥测服务", "事件总线观察", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-telemetry-blocker",
20
20
  "config": {}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "workspace-search",
3
3
  "packageName": "@pi-harness/plugin-workspace-search",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Workspace Search",
6
6
  "description": "在当前工作区的文本文件里搜索,自动跳过忽略目录和二进制内容。",
7
7
  "author": "Pi Harness",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/api-gateway",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "private": true,
5
5
  "description": "Cordis HTTP API routes for the Pi Harness browser client",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "anchored-standard",
3
3
  "packageName": "@pi-harness/plugin-anchored-standard",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Anchored Standard",
6
6
  "description": "按显式的工具白名单审计 agent 的执行轨迹,标出越界的调用。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "browser-session",
3
3
  "packageName": "@pi-harness/plugin-browser-session",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Browser Session",
6
6
  "description": "通过 Chrome DevTools 协议控制一个仅限本机回环的浏览器会话,命令受限、可取消,截图元数据会被清理。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "obsidian-sync",
3
3
  "packageName": "@pi-harness/plugin-obsidian-sync",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Obsidian Sync",
6
6
  "description": "把明确指定的会话笔记写进 Obsidian 库的指定路径,不会读取库里其他文件。",
7
7
  "author": "Pi Harness",
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-plugin-stars",
4
4
  "version": "0.1.30",
5
5
  "name": "Plugin Stars",
6
- "description": " raw.githubusercontent.com 上的插件榜单快照里检索,输入受限、校验严格、可取消,失败即关闭面板。",
6
+ "description": "显式配置 raw.githubusercontent.com 上的 Pi Harness 榜单后只读检索;输入受限、校验严格、可取消,失败保留上次成功结果。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -18,7 +18,6 @@
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-plugin-stars",
20
20
  "config": {
21
- "sourceUrl": "https://raw.githubusercontent.com/ywsldxk/dsh-plugin-stars/main/data/plugins.json",
22
21
  "limit": 10,
23
22
  "timeoutMs": 15000
24
23
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "prompt-library",
3
3
  "packageName": "@pi-harness/plugin-prompt-library",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Prompt Library",
6
6
  "description": "在当前 Pi 会话里保存、搜索、更新和删除可复用的提示词模板。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "session-bridge",
3
3
  "packageName": "@pi-harness/plugin-session-bridge",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Session Bridge",
6
6
  "description": "预览并导出会话交接包;导入需要确认,包体经过严格校验并防重复注入。",
7
7
  "author": "Pi Harness",
@@ -13,7 +13,7 @@
13
13
  "id": "workflow",
14
14
  "label": "工作流"
15
15
  },
16
- "capabilities": ["read-only", "session-data"],
16
+ "capabilities": ["session-data", "writes-files"],
17
17
  "hooks": ["会话桥接工具", "当前会话管理器", "自定义上下文消息", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-session-bridge",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "session-compare",
3
3
  "packageName": "@pi-harness/plugin-session-compare",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Session Compare",
6
6
  "description": "按角色和文本比较两个已保存的 Pi 会话,不修改任何会话文件。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "skill-catalog",
3
3
  "packageName": "@pi-harness/plugin-skill-catalog",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Skills Catalog",
6
6
  "description": "列出已加载的 Agent Skills,通过受限的不可信数据边界安全查看其中一个,并显示托管 MCP 的状态。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "sql-lens",
3
3
  "packageName": "@pi-harness/plugin-sql-lens",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "SQL Lens",
6
6
  "description": "查看工作区内的 SQLite 数据库:一次一条只读语句,结果有上限,检查符号链接与文件替换,超时和取消都会收尾。",
7
7
  "author": "Pi Harness",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "synapse",
3
3
  "packageName": "@pi-harness/plugin-synapse",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Synapse",
6
6
  "description": "把会话之间的关联和相关工作项画出来,不改动对话记录。",
7
7
  "author": "Pi Harness",
@@ -3,7 +3,7 @@
3
3
  "packageName": "@pi-harness/plugin-telemetry-blocker",
4
4
  "version": "0.1.30",
5
5
  "name": "Telemetry Blocker",
6
- "description": "拦截配置好的遥测出站地址并记录拦截次数,不收集载荷内容。",
6
+ "description": "丢弃本地 piTelemetry 服务调用并统计事件总线观察;不保存事件属性,不拦截网络流量,也不阻止其他监听器。",
7
7
  "author": "Pi Harness",
8
8
  "repository": "https://github.com/pi-harness/pi-harness",
9
9
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "label": "安全"
15
15
  },
16
16
  "capabilities": ["read-only"],
17
- "hooks": ["网络策略", "插件面板"],
17
+ "hooks": ["本地遥测服务", "事件总线观察", "插件面板"],
18
18
  "profile": {
19
19
  "name": "@pi-harness/plugin-telemetry-blocker",
20
20
  "config": {}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "workspace-search",
3
3
  "packageName": "@pi-harness/plugin-workspace-search",
4
- "version": "0.1.30",
4
+ "version": "0.1.31",
5
5
  "name": "Workspace Search",
6
6
  "description": "在当前工作区的文本文件里搜索,自动跳过忽略目录和二进制内容。",
7
7
  "author": "Pi Harness",
@@ -12,6 +12,28 @@ import {
12
12
  } from "../src/marketplace.js";
13
13
 
14
14
  describe("plugin marketplace registry", () => {
15
+ test("describes reverse skill as text inspection without file loading or activation", () => {
16
+ const plugin = MARKETPLACE_PLUGINS.find((item) => item.id === "reverse-skill");
17
+ expect(plugin?.capabilities).toEqual(["read-only"]);
18
+ expect(plugin?.description).toContain("不读取文件");
19
+ expect(plugin?.description).toContain("不自动激活");
20
+ });
21
+
22
+ test("describes the tracked diff reviewer without claiming large-file detection", () => {
23
+ const description = MARKETPLACE_PLUGINS.find((plugin) => plugin.id === "reviewer-bot")?.description;
24
+ expect(description).toContain("HEAD");
25
+ expect(description).toContain("已跟踪");
26
+ expect(description).toContain("空白");
27
+ expect(description).toContain("TODO/FIXME");
28
+ expect(description).not.toContain("超大文件");
29
+ });
30
+
31
+ test("discloses command execution for the composed change gate", () => {
32
+ const gate = MARKETPLACE_PLUGINS.find((plugin) => plugin.id === "change-verifier");
33
+ expect(gate?.capabilities).toContain("runs-commands");
34
+ expect(gate?.capabilities).not.toContain("read-only");
35
+ });
36
+
15
37
  test.each(MARKETPLACE_PLUGINS)(
16
38
  "imports $id from its published package entry point",
17
39
  async (plugin) => {
@@ -37,11 +59,10 @@ describe("plugin marketplace registry", () => {
37
59
  const official = new Map(MARKETPLACE_PLUGINS.filter((plugin) => plugin.source === "official").map((plugin) => [plugin.id, plugin]));
38
60
  expect(official.get("agent-teams")?.category.id).toBe("workflow");
39
61
  expect(official.get("plugin-stars")?.category.id).toBe("discovery");
40
- expect(official.get("plugin-stars")?.description).toMatch(/raw\.githubusercontent\.com.*输入受限.*校验严格.*可取消.*失败即关闭/u);
62
+ expect(official.get("plugin-stars")?.description).toMatch(/显式配置.*raw\.githubusercontent\.com.*失败保留/u);
41
63
  expect(official.get("plugin-stars")?.capabilities).toEqual(["network-access"]);
42
64
  expect(official.get("plugin-stars")?.hooks).toEqual(["榜单搜索工具", "GitHub 原始快照", "插件面板"]);
43
65
  expect(official.get("plugin-stars")?.profile.config).toEqual({
44
- sourceUrl: "https://raw.githubusercontent.com/ywsldxk/dsh-plugin-stars/main/data/plugins.json",
45
66
  limit: 10,
46
67
  timeoutMs: 15_000,
47
68
  });
@@ -51,8 +72,11 @@ describe("plugin marketplace registry", () => {
51
72
  expect(official.get("vision-toolkit")?.hooks).toEqual(["图像元数据工具", "工作区访问", "插件面板"]);
52
73
  expect(official.get("vision-toolkit")?.profile.config).toEqual({});
53
74
  expect(official.get("session-bridge")?.category.id).toBe("workflow");
75
+ expect(official.get("plugin-radar")?.description).toContain("GitHub");
76
+ expect(official.get("plugin-radar")?.description).toContain("未验证可安装性");
77
+ expect(official.get("plugin-radar")?.hooks).toEqual(["GitHub Topic 搜索", "插件面板"]);
54
78
  expect(official.get("session-bridge")?.description).toMatch(/预览.*导出.*导入需要确认.*严格校验.*防重复注入/u);
55
- expect(official.get("session-bridge")?.capabilities).toEqual(["read-only", "session-data"]);
79
+ expect(official.get("session-bridge")?.capabilities).toEqual(["session-data", "writes-files"]);
56
80
  expect(official.get("session-bridge")?.hooks).toEqual(["会话桥接工具", "当前会话管理器", "自定义上下文消息", "插件面板"]);
57
81
  expect(official.get("session-bridge")?.profile.config).toEqual({});
58
82
  expect(official.get("skill-guard")?.category.id).toBe("security");
@@ -106,6 +130,8 @@ describe("plugin marketplace registry", () => {
106
130
  expect(official.get("reviewer-bot")?.category.id).toBe("workflow");
107
131
  expect(official.get("auto-mode")?.category.id).toBe("security");
108
132
  expect(official.get("plan-execute")?.category.id).toBe("workflow");
133
+ expect(official.get("plan-execute")?.capabilities).toEqual(["session-data", "writes-files"]);
134
+ expect(official.get("plan-execute")?.description).toMatch(/保存.*恢复/u);
109
135
  expect(official.get("canvas-draw")?.category.id).toBe("multimodal");
110
136
  expect(official.get("canvas-draw")?.description).toMatch(/Mermaid 流程图源码/u);
111
137
  expect(official.get("canvas-draw")?.hooks).toEqual(["插件面板"]);
@@ -182,6 +208,8 @@ describe("plugin marketplace registry", () => {
182
208
  expect(official.get("fail-logger")?.hooks).toEqual(["插件错误", "运行结束", "压缩结束", "插件面板"]);
183
209
  expect(official.get("genui")?.description).toMatch(/文本、标签和进度条.*纯文本/u);
184
210
  expect(official.get("genui")?.capabilities).toEqual(["read-only"]);
211
+ expect(official.get("telemetry-blocker")?.description).toContain("不拦截网络流量");
212
+ expect(official.get("telemetry-blocker")?.hooks).toEqual(["本地遥测服务", "事件总线观察", "插件面板"]);
185
213
  expect(official.get("genui")?.hooks).toEqual(["GenUI 渲染工具", "插件面板"]);
186
214
  expect(official.get("plugin-dev")?.category.id).toBe("developer");
187
215
  expect(official.get("plugin-dev")?.description).toMatch(/推迟.*agent 空闲.*只允许一个重载.*本机开发/u);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/web-app",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "private": true,
5
5
  "description": "Patchable Web application bundle for Pi Harness",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/cli",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "private": true,
5
5
  "description": "Plugin-first Pi Harness CLI",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/host-webserver",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "private": true,
5
5
  "description": "Cordis route-registration service for the Pi Harness web host",
6
6
  "homepage": "https://github.com/pi-harness/pi-harness#readme",