@pi-harness/pi-harness 0.1.47 → 0.1.49

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.
@@ -15,10 +15,10 @@
15
15
  <link rel="apple-touch-icon" href="/icons/app/apple-touch-icon-180.png" sizes="180x180" />
16
16
  <link rel="manifest" href="/manifest.webmanifest" />
17
17
  <title>Pi Harness / Control Room</title>
18
- <script type="module" crossorigin src="/assets/index-DIh4WFed.js"></script>
18
+ <script type="module" crossorigin src="/assets/index-CF6eHzu0.js"></script>
19
19
  <link rel="modulepreload" crossorigin href="/assets/react-vendor-BxoMtjVy.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/markdown-vendor-DUdMWn0M.js">
21
- <link rel="stylesheet" crossorigin href="/assets/index-Dg7joYCK.css">
21
+ <link rel="stylesheet" crossorigin href="/assets/index-BTIJBvkA.css">
22
22
  </head>
23
23
  <body>
24
24
  <main id="root"></main>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/web",
3
- "version": "0.1.47",
3
+ "version": "0.1.49",
4
4
  "private": true,
5
5
  "description": "Browser application entry for Pi Harness",
6
6
  "type": "module",
@@ -1207,6 +1207,9 @@ button:disabled {
1207
1207
  @apply [width:100%] [max-width:none] [margin:0] [padding:32px_24px];
1208
1208
  container-type: inline-size;
1209
1209
  }
1210
+ .plugin-detail-content > .grid > * {
1211
+ @apply [min-width:0];
1212
+ }
1210
1213
  .plugin-detail-actions {
1211
1214
  @apply [display:flex] [flex-wrap:wrap] [gap:8px];
1212
1215
  }
@@ -1998,6 +2001,12 @@ button:disabled {
1998
2001
  .action-error-summary {
1999
2002
  @apply [display:flex] [gap:8px] [align-items:baseline];
2000
2003
  }
2004
+ .provider-auth-notice {
2005
+ @apply [display:flex] [align-items:center] [gap:8px] [margin-bottom:8px] [padding:9px_11px] [border:1px_solid_rgba(236,_19,_19,_0.16)] [border-radius:9px] [background:var(--color-red-soft)] [color:var(--color-red)] [font-size:11.5px];
2006
+ }
2007
+ .provider-auth-notice .action-error-summary {
2008
+ @apply [flex:1] [min-width:0] [flex-wrap:wrap];
2009
+ }
2001
2010
  .action-error-summary strong {
2002
2011
  @apply [flex:none] [font-size:11.5px] [color:var(--color-red)];
2003
2012
  }
@@ -2599,9 +2608,6 @@ body {
2599
2608
  .workspace-row small {
2600
2609
  @apply [display:block] [max-width:100%] [overflow:hidden] [text-overflow:ellipsis] [white-space:nowrap];
2601
2610
  }
2602
- .plugin-detail-content > .grid > * {
2603
- @apply [min-width:0];
2604
- }
2605
2611
  .config-sections {
2606
2612
  @apply [grid-template-columns:minmax(0,_1fr)];
2607
2613
  }
@@ -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
  }
@@ -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,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/api-gateway",
3
- "version": "0.1.47",
3
+ "version": "0.1.49",
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.47",
3
+ "version": "0.1.49",
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.47",
3
+ "version": "0.1.49",
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.47",
3
+ "version": "0.1.49",
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.47",
3
+ "version": "0.1.49",
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.47",
62
- "@pi-harness/cli": "0.1.47",
63
- "@pi-harness/core": "^0.1.47",
64
- "@pi-harness/host-webserver": "0.1.47",
65
- "@pi-harness/web-app": "0.1.47",
61
+ "@pi-harness/api-gateway": "0.1.49",
62
+ "@pi-harness/cli": "0.1.49",
63
+ "@pi-harness/core": "^0.1.49",
64
+ "@pi-harness/host-webserver": "0.1.49",
65
+ "@pi-harness/web-app": "0.1.49",
66
66
  "semver": "7.8.5"
67
67
  },
68
68
  "devDependencies": {
@@ -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
  }
@@ -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,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/api-gateway",
3
- "version": "0.1.47",
3
+ "version": "0.1.49",
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",
@@ -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
  }
@@ -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": {}
@@ -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,6 +72,9 @@ 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
79
  expect(official.get("session-bridge")?.capabilities).toEqual(["session-data", "writes-files"]);
56
80
  expect(official.get("session-bridge")?.hooks).toEqual(["会话桥接工具", "当前会话管理器", "自定义上下文消息", "插件面板"]);
@@ -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.47",
3
+ "version": "0.1.49",
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.47",
3
+ "version": "0.1.49",
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.47",
3
+ "version": "0.1.49",
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",