@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.
- package/README.md +2 -0
- package/apps/web/dist/assets/{index-Dg7joYCK.css → index-BTIJBvkA.css} +1 -1
- package/apps/web/dist/assets/{index-DIh4WFed.js → index-CF6eHzu0.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- package/apps/web/package.json +1 -1
- package/apps/web/src/style.css +9 -3
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-stars.json +1 -2
- package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +2 -2
- package/node_modules/@pi-harness/api-gateway/package.json +1 -1
- package/node_modules/@pi-harness/cli/package.json +1 -1
- package/node_modules/@pi-harness/host-webserver/package.json +1 -1
- package/node_modules/@pi-harness/web-app/package.json +1 -1
- package/package.json +6 -6
- package/packages/api-gateway/dist/marketplace-entries/official/plugin-stars.json +1 -2
- package/packages/api-gateway/dist/marketplace-entries/official/telemetry-blocker.json +2 -2
- package/packages/api-gateway/package.json +1 -1
- package/packages/api-gateway/src/marketplace-entries/official/plugin-stars.json +1 -2
- package/packages/api-gateway/src/marketplace-entries/official/telemetry-blocker.json +2 -2
- package/packages/api-gateway/test/marketplace.test.ts +30 -2
- package/packages/bundle-web-app/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/host-webserver/package.json +1 -1
package/apps/web/dist/index.html
CHANGED
|
@@ -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-
|
|
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-
|
|
21
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BTIJBvkA.css">
|
|
22
22
|
</head>
|
|
23
23
|
<body>
|
|
24
24
|
<main id="root"></main>
|
package/apps/web/package.json
CHANGED
package/apps/web/src/style.css
CHANGED
|
@@ -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
|
}
|
package/node_modules/@pi-harness/api-gateway/dist/marketplace-entries/official/plugin-stars.json
CHANGED
|
@@ -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": "
|
|
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": {}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-harness/pi-harness",
|
|
3
|
-
"version": "0.1.
|
|
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.
|
|
62
|
-
"@pi-harness/cli": "0.1.
|
|
63
|
-
"@pi-harness/core": "^0.1.
|
|
64
|
-
"@pi-harness/host-webserver": "0.1.
|
|
65
|
-
"@pi-harness/web-app": "0.1.
|
|
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": "
|
|
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": {}
|
|
@@ -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": "
|
|
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(
|
|
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);
|