@pi-harness/client-web 0.1.2 → 0.1.3

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 (61) hide show
  1. package/LICENSE +9 -0
  2. package/dist/annotation-ui.d.ts +11 -0
  3. package/dist/annotation-ui.d.ts.map +1 -0
  4. package/dist/annotation-ui.js +24 -0
  5. package/dist/annotation-ui.js.map +1 -0
  6. package/dist/browser-session-view.d.ts +7 -0
  7. package/dist/browser-session-view.d.ts.map +1 -0
  8. package/dist/browser-session-view.js +8 -0
  9. package/dist/browser-session-view.js.map +1 -0
  10. package/dist/control-room.d.ts +151 -6
  11. package/dist/control-room.d.ts.map +1 -1
  12. package/dist/control-room.js +156 -11
  13. package/dist/control-room.js.map +1 -1
  14. package/dist/design-contract.d.ts.map +1 -1
  15. package/dist/design-contract.js +178 -19
  16. package/dist/design-contract.js.map +1 -1
  17. package/dist/index.d.ts +4 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +11 -3
  20. package/dist/index.js.map +1 -1
  21. package/dist/markdown.d.ts +5 -0
  22. package/dist/markdown.d.ts.map +1 -0
  23. package/dist/markdown.js +20 -0
  24. package/dist/markdown.js.map +1 -0
  25. package/dist/marketplace-catalog.d.ts +3 -0
  26. package/dist/marketplace-catalog.d.ts.map +1 -0
  27. package/dist/marketplace-catalog.js +10 -0
  28. package/dist/marketplace-catalog.js.map +1 -0
  29. package/dist/marketplace-navigation.d.ts +19 -0
  30. package/dist/marketplace-navigation.d.ts.map +1 -0
  31. package/dist/marketplace-navigation.js +31 -0
  32. package/dist/marketplace-navigation.js.map +1 -0
  33. package/dist/message-content.d.ts +9 -0
  34. package/dist/message-content.d.ts.map +1 -0
  35. package/dist/message-content.js +54 -0
  36. package/dist/message-content.js.map +1 -0
  37. package/dist/plugin-navigation.d.ts +3 -0
  38. package/dist/plugin-navigation.d.ts.map +1 -0
  39. package/dist/plugin-navigation.js +10 -0
  40. package/dist/plugin-navigation.js.map +1 -0
  41. package/dist/plugin-search.d.ts +2 -0
  42. package/dist/plugin-search.d.ts.map +1 -0
  43. package/dist/plugin-search.js +7 -0
  44. package/dist/plugin-search.js.map +1 -0
  45. package/dist/plugin-stars-view.d.ts +12 -0
  46. package/dist/plugin-stars-view.d.ts.map +1 -0
  47. package/dist/plugin-stars-view.js +8 -0
  48. package/dist/plugin-stars-view.js.map +1 -0
  49. package/dist/prompt-completion.d.ts +13 -0
  50. package/dist/prompt-completion.d.ts.map +1 -0
  51. package/dist/prompt-completion.js +17 -0
  52. package/dist/prompt-completion.js.map +1 -0
  53. package/dist/react-room.d.ts +2 -1
  54. package/dist/react-room.d.ts.map +1 -1
  55. package/dist/react-room.js +2347 -93
  56. package/dist/react-room.js.map +1 -1
  57. package/dist/runtime-events.d.ts +4 -0
  58. package/dist/runtime-events.d.ts.map +1 -0
  59. package/dist/runtime-events.js +29 -0
  60. package/dist/runtime-events.js.map +1 -0
  61. package/package.json +19 -7
@@ -15,16 +15,88 @@ export const DESIGN_TURNS = [
15
15
  { kind: "user", text: "支付成功率从昨天上线后掉了很多,日志里全是 3DS challenge timeout。定位一下,能改就直接改,改完跑测试。" },
16
16
  { kind: "reasoning", dur: "6s", text: "先找超时配置在哪定义,再看是不是 2.4.0 版本引入的默认值变化。优先只读检索,确认后再动代码。" },
17
17
  { kind: "plugin", name: "context-repo-map", hook: "context_provider", text: "注入仓库地图与最近 3 次提交摘要(1,842 tok)" },
18
- { kind: "tool", glyph: "⌕", name: "grep", target: "\"3DS\" src/**/*.ts", dur: "0.4s", stat: "12 命中", statFg: "#61666B", output: "src/payment/threeds.ts:41 const CHALLENGE_TIMEOUT_MS = 8_000\nsrc/payment/threeds.ts:88 if (elapsed > CHALLENGE_TIMEOUT_MS) throw new ChallengeTimeout\nsrc/payment/gateway.ts:114 retries: 0\ntest/payment/threeds.spec.ts:23 vi.advanceTimersByTime(8_100)" },
19
- { kind: "tool", glyph: "▤", name: "read", target: "src/payment/threeds.ts:30-96", dur: "0.1s", stat: "66 行", statFg: "#61666B", output: "const CHALLENGE_TIMEOUT_MS = 8_000\n\nexport async function runChallenge(ctx: Ctx) {\n const started = now()\n const res = await sdk.challenge(ctx.token) // sdk 2.4.0\n const elapsed = now() - started\n if (elapsed > CHALLENGE_TIMEOUT_MS) throw new ChallengeTimeout()\n return res\n}" },
20
- { kind: "text", text: "原因找到了:sdk 2.4.0 起 iOS 端 challenge 平均耗时从 3.1s 涨到 9.4s,而我们的超时仍是 8s,且 retries 为 0,一次超时就直接失败。\n\n我按两处改:超时放宽到 20s,并加一次带抖动的重试。" },
21
- { kind: "tool", glyph: "✎", name: "edit", target: "src/payment/threeds.ts", dur: "0.2s", stat: "+9 −2", statFg: "#22C55E", isDiff: true, diff: [{ no: "41", sign: "-", text: "const CHALLENGE_TIMEOUT_MS = 8_000" }, { no: "41", sign: "+", text: "const CHALLENGE_TIMEOUT_MS = 20_000" }, { no: "42", sign: "+", text: "const CHALLENGE_MAX_ATTEMPTS = 2" }, { no: "86", sign: "-", text: " const res = await sdk.challenge(ctx.token)" }, { no: "86", sign: "+", text: " const res = await withRetry(CHALLENGE_MAX_ATTEMPTS, () =>" }, { no: "87", sign: "+", text: " sdk.challenge(ctx.token), { jitter: true })" }] },
18
+ {
19
+ kind: "tool",
20
+ glyph: "",
21
+ name: "grep",
22
+ target: '"3DS" src/**/*.ts',
23
+ dur: "0.4s",
24
+ stat: "12 命中",
25
+ statFg: "#61666B",
26
+ output: "src/payment/threeds.ts:41 const CHALLENGE_TIMEOUT_MS = 8_000\nsrc/payment/threeds.ts:88 if (elapsed > CHALLENGE_TIMEOUT_MS) throw new ChallengeTimeout\nsrc/payment/gateway.ts:114 retries: 0\ntest/payment/threeds.spec.ts:23 vi.advanceTimersByTime(8_100)",
27
+ },
28
+ {
29
+ kind: "tool",
30
+ glyph: "▤",
31
+ name: "read",
32
+ target: "src/payment/threeds.ts:30-96",
33
+ dur: "0.1s",
34
+ stat: "66 行",
35
+ statFg: "#61666B",
36
+ output: "const CHALLENGE_TIMEOUT_MS = 8_000\n\nexport async function runChallenge(ctx: Ctx) {\n const started = now()\n const res = await sdk.challenge(ctx.token) // sdk 2.4.0\n const elapsed = now() - started\n if (elapsed > CHALLENGE_TIMEOUT_MS) throw new ChallengeTimeout()\n return res\n}",
37
+ },
38
+ {
39
+ kind: "text",
40
+ text: "原因找到了:sdk 2.4.0 起 iOS 端 challenge 平均耗时从 3.1s 涨到 9.4s,而我们的超时仍是 8s,且 retries 为 0,一次超时就直接失败。\n\n我按两处改:超时放宽到 20s,并加一次带抖动的重试。",
41
+ },
42
+ {
43
+ kind: "tool",
44
+ glyph: "✎",
45
+ name: "edit",
46
+ target: "src/payment/threeds.ts",
47
+ dur: "0.2s",
48
+ stat: "+9 −2",
49
+ statFg: "#22C55E",
50
+ isDiff: true,
51
+ diff: [
52
+ { no: "41", sign: "-", text: "const CHALLENGE_TIMEOUT_MS = 8_000" },
53
+ { no: "41", sign: "+", text: "const CHALLENGE_TIMEOUT_MS = 20_000" },
54
+ { no: "42", sign: "+", text: "const CHALLENGE_MAX_ATTEMPTS = 2" },
55
+ { no: "86", sign: "-", text: " const res = await sdk.challenge(ctx.token)" },
56
+ { no: "86", sign: "+", text: " const res = await withRetry(CHALLENGE_MAX_ATTEMPTS, () =>" },
57
+ { no: "87", sign: "+", text: " sdk.challenge(ctx.token), { jitter: true })" },
58
+ ],
59
+ },
22
60
  { kind: "plugin", name: "guard-secret-scan", hook: "before_write", text: "改动无凭据外泄风险,放行" },
23
61
  { kind: "approval", name: "bash — pnpm vitest run test/payment", text: "cd ~/work/checkout-svc && pnpm vitest run test/payment --reporter=dot" },
24
- { kind: "tool", glyph: "$", name: "bash", target: "pnpm vitest run test/payment", dur: "12.4s", stat: "exit 0", statFg: "#22C55E", output: "···········\n Test Files 3 passed (3)\n Tests 27 passed (27)\n Duration 11.8s\n\n✓ threeds.spec.ts (9)\n✓ gateway.spec.ts (12)\n✓ webhook.spec.ts (6)" },
25
- { kind: "subagent", name: "reviewer", preset: "read-only", goal: "复核 threeds.ts 的改动是否引入回归", dur: "8.1s", lineage: "session #s1 › turn 6 › subagent reviewer(继承 workspace,权限降级为只读)", steps: [{ tool: "read", target: "src/payment/threeds.ts", dur: "0.1s" }, { tool: "read", target: "src/payment/with-retry.ts", dur: "0.1s" }, { tool: "grep", target: "\"CHALLENGE_TIMEOUT_MS\" test/**", dur: "0.3s" }], verdict: "改动本身正确。两点提醒:test/payment/threeds.spec.ts:23 仍按 8s 断言,会在下次改动时误报通过;withRetry 的抖动上限没设,最坏情况下总耗时可能到 44s,建议加 maxTotalMs。" },
26
- { kind: "todo", progress: "3 / 4", todos: [{ text: "定位超时来源", done: true }, { text: "放宽超时并加重试", done: true }, { text: "跑 payment 相关测试", done: true }, { text: "补一条针对 20s 边界的回归用例", done: false }] },
27
- { kind: "text", text: "测试全绿。还剩一条回归用例没补:现有 spec 里 `advanceTimersByTime(8_100)` 断言的是旧阈值,需要改成 20s 边界并新增一条「首次超时后重试成功」的用例。要我继续补吗?" },
62
+ {
63
+ kind: "tool",
64
+ glyph: "$",
65
+ name: "bash",
66
+ target: "pnpm vitest run test/payment",
67
+ dur: "12.4s",
68
+ stat: "exit 0",
69
+ statFg: "#22C55E",
70
+ output: "···········\n Test Files 3 passed (3)\n Tests 27 passed (27)\n Duration 11.8s\n\n✓ threeds.spec.ts (9)\n✓ gateway.spec.ts (12)\n✓ webhook.spec.ts (6)",
71
+ },
72
+ {
73
+ kind: "subagent",
74
+ name: "reviewer",
75
+ preset: "read-only",
76
+ goal: "复核 threeds.ts 的改动是否引入回归",
77
+ dur: "8.1s",
78
+ lineage: "session #s1 › turn 6 › subagent reviewer(继承 workspace,权限降级为只读)",
79
+ steps: [
80
+ { tool: "read", target: "src/payment/threeds.ts", dur: "0.1s" },
81
+ { tool: "read", target: "src/payment/with-retry.ts", dur: "0.1s" },
82
+ { tool: "grep", target: '"CHALLENGE_TIMEOUT_MS" test/**', dur: "0.3s" },
83
+ ],
84
+ verdict: "改动本身正确。两点提醒:test/payment/threeds.spec.ts:23 仍按 8s 断言,会在下次改动时误报通过;withRetry 的抖动上限没设,最坏情况下总耗时可能到 44s,建议加 maxTotalMs。",
85
+ },
86
+ {
87
+ kind: "todo",
88
+ progress: "3 / 4",
89
+ todos: [
90
+ { text: "定位超时来源", done: true },
91
+ { text: "放宽超时并加重试", done: true },
92
+ { text: "跑 payment 相关测试", done: true },
93
+ { text: "补一条针对 20s 边界的回归用例", done: false },
94
+ ],
95
+ },
96
+ {
97
+ kind: "text",
98
+ text: "测试全绿。还剩一条回归用例没补:现有 spec 里 `advanceTimersByTime(8_100)` 断言的是旧阈值,需要改成 20s 边界并新增一条「首次超时后重试成功」的用例。要我继续补吗?",
99
+ },
28
100
  { kind: "stats", stats: ["输入 34.2k tok", "缓存命中 61%", "输出 4.8k tok", "用时 1m 42s", "$0.28"] },
29
101
  ];
30
102
  export const DESIGN_EVENTS = [
@@ -32,7 +104,7 @@ export const DESIGN_EVENTS = [
32
104
  { ts: "02:14:01", source: "context_injection", summary: "注入仓库地图与最近提交(1,842 tok)", by: "context-repo-map", dur: "88ms" },
33
105
  { ts: "02:14:02", source: "user_message", summary: "支付成功率下降,定位并修复", by: "用户", dur: "—" },
34
106
  { ts: "02:14:03", source: "reasoning", summary: "先只读检索超时配置,再判断是否与 sdk 版本相关", by: "ds-coder-v3", dur: "6.0s" },
35
- { ts: "02:14:09", source: "tool_call", summary: "grep \"3DS\" src/**/*.ts", by: "内置", dur: "0.4s" },
107
+ { ts: "02:14:09", source: "tool_call", summary: 'grep "3DS" src/**/*.ts', by: "内置", dur: "0.4s" },
36
108
  { ts: "02:14:10", source: "tool_result", summary: "12 命中,定位 threeds.ts:41", by: "内置", dur: "—" },
37
109
  { ts: "02:14:11", source: "tool_call", summary: "read src/payment/threeds.ts:30-96", by: "内置", dur: "0.1s" },
38
110
  { ts: "02:14:14", source: "tool_call", summary: "edit src/payment/threeds.ts (+9 −2)", by: "内置", dur: "0.2s" },
@@ -44,18 +116,105 @@ export const DESIGN_EVENTS = [
44
116
  { ts: "02:14:41", source: "assistant_message", summary: "给出结论与剩余一条回归用例建议", by: "ds-coder-v3", dur: "2.6s" },
45
117
  ];
46
118
  export const DESIGN_PLUGINS = [
47
- { name: "context-repo-map", ver: "1.4.2", capability: "上下文", on: true, update: false, desc: "把仓库结构、入口文件与最近提交压缩成上下文,超预算时自动裁剪", hooks: ["context_provider", "before_step"] },
48
- { name: "guard-secret-scan", ver: "2.0.1", capability: "策略", on: true, update: true, desc: "写入与提交前扫描凭据、私钥、token,命中即拦截并说明位置", hooks: ["before_write", "before_commit"] },
49
- { name: "subagent-review", ver: "0.8.5", capability: "子代理", on: true, update: false, desc: "改动落盘后派生只读 reviewer 子代理复核 diff,产出可执行意见", hooks: ["after_write"] },
50
- { name: "sandbox-landlock", ver: "1.1.0", capability: "沙箱", on: true, update: false, desc: "Linux Landlock 限制子进程可写路径与出网,越权直接拒绝", hooks: ["shell_exec"] },
51
- { name: "model-deepseek", ver: "3.2.0", capability: "模型", on: true, update: true, desc: "DeepSeek 官方模型路由,支持 prompt 缓存与推理内容透传", hooks: ["model_provider"] },
52
- { name: "store-sqlite", ver: "1.0.7", capability: "存储", on: true, update: false, desc: "会话事件流落地到本地 SQLite,支持 resume、fork、replay", hooks: ["session_store"] },
53
- { name: "vision-handoff", ver: "path", capability: "上下文", on: true, update: false, local: true, desc: "图片交给独立视觉模型描述后回填上下文,从本地路径加载(../pi-pkg-vision-handoff)", hooks: ["context_provider"] },
54
- { name: "notify-webhook", ver: "0.3.1", capability: "通知", on: false, update: false, desc: "任务结束或需要确认时推送到自定义 webhook", hooks: ["after_turn"] },
119
+ {
120
+ name: "context-repo-map",
121
+ ver: "1.4.2",
122
+ capability: "上下文",
123
+ on: true,
124
+ update: false,
125
+ desc: "把仓库结构、入口文件与最近提交压缩成上下文,超预算时自动裁剪",
126
+ hooks: ["context_provider", "before_step"],
127
+ },
128
+ {
129
+ name: "guard-secret-scan",
130
+ ver: "2.0.1",
131
+ capability: "策略",
132
+ on: true,
133
+ update: true,
134
+ desc: "写入与提交前扫描凭据、私钥、token,命中即拦截并说明位置",
135
+ hooks: ["before_write", "before_commit"],
136
+ },
137
+ {
138
+ name: "subagent-review",
139
+ ver: "0.8.5",
140
+ capability: "子代理",
141
+ on: true,
142
+ update: false,
143
+ desc: "改动落盘后派生只读 reviewer 子代理复核 diff,产出可执行意见",
144
+ hooks: ["after_write"],
145
+ },
146
+ {
147
+ name: "sandbox-landlock",
148
+ ver: "1.1.0",
149
+ capability: "沙箱",
150
+ on: true,
151
+ update: false,
152
+ desc: "Linux Landlock 限制子进程可写路径与出网,越权直接拒绝",
153
+ hooks: ["shell_exec"],
154
+ },
155
+ {
156
+ name: "model-deepseek",
157
+ ver: "3.2.0",
158
+ capability: "模型",
159
+ on: true,
160
+ update: true,
161
+ desc: "DeepSeek 官方模型路由,支持 prompt 缓存与推理内容透传",
162
+ hooks: ["model_provider"],
163
+ },
164
+ {
165
+ name: "store-sqlite",
166
+ ver: "1.0.7",
167
+ capability: "存储",
168
+ on: true,
169
+ update: false,
170
+ desc: "会话事件流落地到本地 SQLite,支持 resume、fork、replay",
171
+ hooks: ["session_store"],
172
+ },
173
+ {
174
+ name: "vision-handoff",
175
+ ver: "path",
176
+ capability: "上下文",
177
+ on: true,
178
+ update: false,
179
+ local: true,
180
+ desc: "图片交给独立视觉模型描述后回填上下文,从本地路径加载(../pi-pkg-vision-handoff)",
181
+ hooks: ["context_provider"],
182
+ },
183
+ {
184
+ name: "notify-webhook",
185
+ ver: "0.3.1",
186
+ capability: "通知",
187
+ on: false,
188
+ update: false,
189
+ desc: "任务结束或需要确认时推送到自定义 webhook",
190
+ hooks: ["after_turn"],
191
+ },
55
192
  ];
56
193
  export const DESIGN_PROVIDERS = [
57
- { id: "deepseek", name: "DeepSeek", state: "已连接", ok: true, protocol: "openai", baseUrl: "https://api.deepseek.com/v1", key: "sk-••••••••••••••••7f3a", models: ["ds-coder-v3", "ds-chat", "ds-reasoner"], latency: "41ms", by: "model-deepseek" },
58
- { id: "anthropic", name: "Anthropic", state: "已连接", ok: true, protocol: "anthropic", baseUrl: "https://api.anthropic.com", key: "sk-ant-••••••••••2c91", models: ["claude-sonnet", "claude-haiku"], latency: "128ms", by: "model-anthropic" },
194
+ {
195
+ id: "deepseek",
196
+ name: "DeepSeek",
197
+ state: "已连接",
198
+ ok: true,
199
+ protocol: "openai",
200
+ baseUrl: "https://api.deepseek.com/v1",
201
+ key: "sk-••••••••••••••••7f3a",
202
+ models: ["ds-coder-v3", "ds-chat", "ds-reasoner"],
203
+ latency: "41ms",
204
+ by: "model-deepseek",
205
+ },
206
+ {
207
+ id: "anthropic",
208
+ name: "Anthropic",
209
+ state: "已连接",
210
+ ok: true,
211
+ protocol: "anthropic",
212
+ baseUrl: "https://api.anthropic.com",
213
+ key: "sk-ant-••••••••••2c91",
214
+ models: ["claude-sonnet", "claude-haiku"],
215
+ latency: "128ms",
216
+ by: "model-anthropic",
217
+ },
59
218
  ];
60
219
  export const DESIGN_TOML = `# ~/.config/pi/pi.toml
61
220
  # 一切都是包:模型、工具、沙箱、存储、界面都在这里装卸。
@@ -1 +1 @@
1
- {"version":3,"file":"design-contract.js","sourceRoot":"","sources":["../src/design-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"design-contract.js","sourceRoot":"","sources":["../src/design-contract.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,7 +10,10 @@ export declare class AppWebEntry {
10
10
  #private;
11
11
  readonly context: Context;
12
12
  readonly root: HTMLElement;
13
- constructor(root: HTMLElement);
13
+ readonly version?: string;
14
+ constructor(root: HTMLElement, options?: {
15
+ readonly version?: string;
16
+ });
14
17
  run(): void;
15
18
  dispose(): Promise<void>;
16
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,QAAQ,qBAAqB,CAAC;IAAE,UAAU,OAAO;QAAG,UAAU,EAAE,WAAW,CAAC;QAAC,SAAS,EAAE,SAAS,CAAC;KAAE;CAAE;AAE7G,qBAAa,WAAW;;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;gBAEf,IAAI,EAAE,WAAW;IAC7B,GAAG,IAAI,IAAI;IAML,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAC/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,UAAU,EAAE,WAAW,CAAC;QACxB,SAAS,EAAE,SAAS,CAAC;KACtB;CACF;AAED,qBAAa,WAAW;;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEd,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO;IAK1E,GAAG,IAAI,IAAI;IAML,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B"}
package/dist/index.js CHANGED
@@ -6,14 +6,22 @@ import { createClientApi } from "./control-room.js";
6
6
  export class AppWebEntry {
7
7
  context;
8
8
  root;
9
+ version;
9
10
  #reactRoot;
10
- constructor(root) { this.root = root; this.context = new Context(); }
11
+ constructor(root, options = {}) {
12
+ this.root = root;
13
+ this.version = options.version;
14
+ this.context = new Context();
15
+ }
11
16
  run() {
12
17
  this.context.provide("clientRoot", this.root);
13
18
  this.context.provide("clientApi", createClientApi());
14
19
  this.#reactRoot = createRoot(this.root);
15
- this.#reactRoot.render(createElement(ControlRoomView, { api: this.context.clientApi }));
20
+ this.#reactRoot.render(createElement(ControlRoomView, { api: this.context.clientApi, appVersion: this.version }));
21
+ }
22
+ async dispose() {
23
+ this.#reactRoot?.unmount();
24
+ await this.context.fiber.dispose();
16
25
  }
17
- async dispose() { this.#reactRoot?.unmount(); await this.context.fiber.dispose(); }
18
26
  }
19
27
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAkB,MAAM,mBAAmB,CAAC;AAIpE,MAAM,OAAO,WAAW;IACb,OAAO,CAAU;IACjB,IAAI,CAAc;IAC3B,UAAU,CAAQ;IAClB,YAAY,IAAiB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;IAClF,GAAG;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;IACD,KAAK,CAAC,OAAO,KAAoB,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;CACnG"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAkB,MAAM,mBAAmB,CAAC;AASpE,MAAM,OAAO,WAAW;IACb,OAAO,CAAU;IACjB,IAAI,CAAc;IAClB,OAAO,CAAU;IAC1B,UAAU,CAAQ;IAClB,YAAY,IAAiB,EAAE,UAAyC,EAAE;QACxE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC/B,CAAC;IACD,GAAG;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpH,CAAC;IACD,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export declare function MarkdownMessage({ text, onMouseUp }: {
2
+ text: string;
3
+ onMouseUp?: () => void;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.tsx"],"names":[],"mappings":"AAmBA,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,2CAE5F"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import createDOMPurify from "dompurify";
3
+ import { marked } from "marked";
4
+ const markdownOptions = { gfm: true, breaks: true };
5
+ const purifier = typeof window === "undefined" ? undefined : createDOMPurify(window);
6
+ function renderMarkdown(source) {
7
+ const html = marked.parse(source, markdownOptions);
8
+ if (typeof html !== "string")
9
+ return "";
10
+ return (purifier?.sanitize(html, {
11
+ USE_PROFILES: { html: true },
12
+ ALLOWED_TAGS: ["a", "blockquote", "br", "code", "del", "em", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "li", "ol", "p", "pre", "strong", "ul"],
13
+ ALLOWED_ATTR: ["href", "rel", "target"],
14
+ FORBID_ATTR: ["style", "class", "id"],
15
+ }) ?? "");
16
+ }
17
+ export function MarkdownMessage({ text, onMouseUp }) {
18
+ return _jsx("div", { className: "turn-markdown", dangerouslySetInnerHTML: { __html: renderMarkdown(text) }, onMouseUp: onMouseUp });
19
+ }
20
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.tsx"],"names":[],"mappings":";AAAA,OAAO,eAAe,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAW,CAAC;AAC7D,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAErF,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACnD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,CACL,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE;QACvB,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;QAC5B,YAAY,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC;QAC9I,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;QACvC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;KACtC,CAAC,IAAI,EAAE,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAA4C;IAC3F,OAAO,cAAK,SAAS,EAAC,eAAe,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,GAAI,CAAC;AAC5H,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ClientApi, ClientMarketplacePlugin } from "./control-room.js";
2
+ export declare const loadMarketplaceCatalog: (api: Pick<ClientApi, "listMarketplace">) => Promise<readonly ClientMarketplacePlugin[]>;
3
+ //# sourceMappingURL=marketplace-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace-catalog.d.ts","sourceRoot":"","sources":["../src/marketplace-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,eAAO,MAAM,sBAAsB,GAAU,KAAK,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,KAAG,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAOhI,CAAC"}
@@ -0,0 +1,10 @@
1
+ export const loadMarketplaceCatalog = async (api) => {
2
+ const items = [];
3
+ for (let page = 0;; page += 1) {
4
+ const result = await api.listMarketplace("", "", page, 100);
5
+ items.push(...result.items);
6
+ if (!result.hasNext || result.items.length === 0 || items.length >= result.total)
7
+ return items;
8
+ }
9
+ };
10
+ //# sourceMappingURL=marketplace-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace-catalog.js","sourceRoot":"","sources":["../src/marketplace-catalog.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,GAAuC,EAA+C,EAAE;IACnI,MAAM,KAAK,GAA8B,EAAE,CAAC;IAC5C,KAAK,IAAI,IAAI,GAAG,CAAC,GAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;IACjG,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ export declare function marketplaceDetailPath(id: string): string;
2
+ export declare function readMarketplaceDetailId(params: URLSearchParams): string | undefined;
3
+ export interface MarketplaceCategoryTab {
4
+ readonly id: string;
5
+ readonly label: string;
6
+ readonly count: number;
7
+ }
8
+ export declare function marketplaceCategoryTabs(categories: readonly MarketplaceCategoryTab[]): readonly MarketplaceCategoryTab[];
9
+ export interface MarketplaceStatisticsInput {
10
+ readonly downloads30d?: number;
11
+ readonly quality?: number;
12
+ readonly updatedAt?: string;
13
+ }
14
+ export interface MarketplaceStatisticItem {
15
+ readonly label: string;
16
+ readonly value: string;
17
+ }
18
+ export declare function marketplaceStatisticItems(statistics: MarketplaceStatisticsInput | undefined): readonly MarketplaceStatisticItem[];
19
+ //# sourceMappingURL=marketplace-navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace-navigation.d.ts","sourceRoot":"","sources":["../src/marketplace-navigation.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAInF;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,SAAS,sBAAsB,EAAE,GAAG,SAAS,sBAAsB,EAAE,CAGxH;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAOD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,0BAA0B,GAAG,SAAS,GAAG,SAAS,wBAAwB,EAAE,CAQjI"}
@@ -0,0 +1,31 @@
1
+ export function marketplaceDetailPath(id) {
2
+ return `?page=marketplace&plugin=${encodeURIComponent(id)}`;
3
+ }
4
+ export function readMarketplaceDetailId(params) {
5
+ if (params.get("page") !== "marketplace")
6
+ return undefined;
7
+ const id = params.get("plugin")?.trim();
8
+ return id || undefined;
9
+ }
10
+ export function marketplaceCategoryTabs(categories) {
11
+ const total = categories.reduce((sum, category) => sum + category.count, 0);
12
+ return [{ id: "", label: "全部", count: total }, ...categories];
13
+ }
14
+ function compactDownloadCount(value) {
15
+ if (value >= 10_000)
16
+ return `${(value / 10_000).toFixed(1).replace(/\.0$/, "")} 万`;
17
+ return new Intl.NumberFormat("zh-CN").format(value);
18
+ }
19
+ export function marketplaceStatisticItems(statistics) {
20
+ if (statistics === undefined)
21
+ return [];
22
+ const items = [];
23
+ if (statistics.downloads30d !== undefined)
24
+ items.push({ label: "近 30 天下载量", value: compactDownloadCount(statistics.downloads30d) });
25
+ if (statistics.quality !== undefined)
26
+ items.push({ label: "npm 质量分", value: String(Math.round(statistics.quality * 100)) });
27
+ if (statistics.updatedAt !== undefined && Number.isFinite(Date.parse(statistics.updatedAt)))
28
+ items.push({ label: "npm 更新时间", value: statistics.updatedAt.slice(0, 10) });
29
+ return items;
30
+ }
31
+ //# sourceMappingURL=marketplace-navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace-navigation.js","sourceRoot":"","sources":["../src/marketplace-navigation.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,EAAU;IAC9C,OAAO,4BAA4B,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAuB;IAC7D,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,aAAa;QAAE,OAAO,SAAS,CAAC;IAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IACxC,OAAO,EAAE,IAAI,SAAS,CAAC;AACzB,CAAC;AAQD,MAAM,UAAU,uBAAuB,CAAC,UAA6C;IACnF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC;AAChE,CAAC;AAaD,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,KAAK,IAAI,MAAM;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC;IACnF,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,UAAkD;IAC1F,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,KAAK,GAA+B,EAAE,CAAC;IAC7C,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,oBAAoB,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACpI,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5H,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACzF,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9E,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function messageText(message: Record<string, unknown>): string;
2
+ export declare function messageThinking(message: Record<string, unknown>): string;
3
+ export interface ChatTurn {
4
+ readonly role: "user" | "assistant";
5
+ readonly text: string;
6
+ readonly thinking: string;
7
+ }
8
+ export declare function projectChatTurns(messages: readonly Record<string, unknown>[]): readonly ChatTurn[];
9
+ //# sourceMappingURL=message-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-content.d.ts","sourceRoot":"","sources":["../src/message-content.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAYpE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAWxE;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,QAAQ,EAAE,CAiBlG"}
@@ -0,0 +1,54 @@
1
+ export function messageText(message) {
2
+ const content = message.content;
3
+ if (typeof content === "string")
4
+ return content;
5
+ if (!Array.isArray(content))
6
+ return "";
7
+ return content
8
+ .map((part) => {
9
+ if (typeof part === "string")
10
+ return part;
11
+ if (typeof part !== "object" || part === null)
12
+ return "";
13
+ const typedPart = part;
14
+ return (typedPart.type === undefined || typedPart.type === "text") && typeof typedPart.text === "string" ? typedPart.text : "";
15
+ })
16
+ .join("");
17
+ }
18
+ export function messageThinking(message) {
19
+ const content = message.content;
20
+ if (!Array.isArray(content))
21
+ return "";
22
+ return content
23
+ .map((part) => {
24
+ if (typeof part !== "object" || part === null)
25
+ return "";
26
+ const typedPart = part;
27
+ return typedPart.type === "thinking" && typeof typedPart.thinking === "string" ? typedPart.thinking : "";
28
+ })
29
+ .filter(Boolean)
30
+ .join("\n\n");
31
+ }
32
+ export function projectChatTurns(messages) {
33
+ const turns = [];
34
+ for (const message of messages) {
35
+ if (message.role === "toolResult")
36
+ continue;
37
+ const role = message.role === "user" ? "user" : message.role === "assistant" ? "assistant" : undefined;
38
+ if (!role)
39
+ continue;
40
+ const text = messageText(message);
41
+ const thinking = role === "assistant" ? messageThinking(message) : "";
42
+ if (!text && !thinking)
43
+ continue;
44
+ const previous = turns.at(-1);
45
+ if (role === "assistant" && previous?.role === "assistant") {
46
+ turns[turns.length - 1] = { role, text: previous.text + text, thinking: previous.thinking + thinking };
47
+ }
48
+ else {
49
+ turns.push({ role, text, thinking });
50
+ }
51
+ }
52
+ return turns;
53
+ }
54
+ //# sourceMappingURL=message-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-content.js","sourceRoot":"","sources":["../src/message-content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function installedPluginDetailPath(packageName: string): string;
2
+ export declare function readInstalledPluginDetailId(params: URLSearchParams): string | undefined;
3
+ //# sourceMappingURL=plugin-navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-navigation.d.ts","sourceRoot":"","sources":["../src/plugin-navigation.ts"],"names":[],"mappings":"AAAA,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAIvF"}
@@ -0,0 +1,10 @@
1
+ export function installedPluginDetailPath(packageName) {
2
+ return `?page=plugins&plugin=${encodeURIComponent(packageName)}`;
3
+ }
4
+ export function readInstalledPluginDetailId(params) {
5
+ if (params.get("page") !== "plugins")
6
+ return undefined;
7
+ const id = params.get("plugin")?.trim();
8
+ return id || undefined;
9
+ }
10
+ //# sourceMappingURL=plugin-navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-navigation.js","sourceRoot":"","sources":["../src/plugin-navigation.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAC3D,OAAO,wBAAwB,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAuB;IACjE,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACvD,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IACxC,OAAO,EAAE,IAAI,SAAS,CAAC;AACzB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const matchesPluginQuery: (query: string, fields: readonly (string | undefined)[]) => boolean;
2
+ //# sourceMappingURL=plugin-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-search.d.ts","sourceRoot":"","sources":["../src/plugin-search.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,EAAE,QAAQ,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KAAG,OAI3F,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const matchesPluginQuery = (query, fields) => {
2
+ const normalized = query.trim().toLowerCase();
3
+ if (!normalized)
4
+ return true;
5
+ return fields.some((field) => field?.toLowerCase().includes(normalized));
6
+ };
7
+ //# sourceMappingURL=plugin-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-search.js","sourceRoot":"","sources":["../src/plugin-search.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,MAAuC,EAAW,EAAE;IACpG,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3E,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface PluginStarsRowInput {
2
+ readonly fullName: string;
3
+ readonly name: string;
4
+ readonly stars: number;
5
+ readonly htmlUrl: string;
6
+ readonly updatedAt: string;
7
+ }
8
+ export interface PluginStarsRow extends PluginStarsRowInput {
9
+ readonly rank: number;
10
+ }
11
+ export declare function pluginStarsRows(entries: readonly PluginStarsRowInput[], limit: number): readonly PluginStarsRow[];
12
+ //# sourceMappingURL=plugin-stars-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-stars-view.d.ts","sourceRoot":"","sources":["../src/plugin-stars-view.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,cAAc,EAAE,CAMjH"}
@@ -0,0 +1,8 @@
1
+ export function pluginStarsRows(entries, limit) {
2
+ const normalizedLimit = Math.max(0, Math.min(50, Math.trunc(limit)));
3
+ return [...entries]
4
+ .sort((left, right) => right.stars - left.stars || left.fullName.localeCompare(right.fullName))
5
+ .slice(0, normalizedLimit)
6
+ .map((entry, index) => ({ ...entry, rank: index + 1 }));
7
+ }
8
+ //# sourceMappingURL=plugin-stars-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-stars-view.js","sourceRoot":"","sources":["../src/plugin-stars-view.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,eAAe,CAAC,OAAuC,EAAE,KAAa;IACpF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,OAAO,CAAC;SAChB,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SAC9F,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC;SACzB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC"}