@tianshu-ai/tianshu 0.3.36 → 0.3.38
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 +15 -0
- package/README.zh-CN.md +11 -0
- package/node_modules/@tianshu-ai/plugin-sdk/dist/capabilities.d.ts +4 -0
- package/node_modules/@tianshu-ai/plugin-sdk/dist/capabilities.d.ts.map +1 -1
- package/node_modules/@tianshu-ai/plugin-sdk/dist/capabilities.js +4 -0
- package/node_modules/@tianshu-ai/plugin-sdk/dist/capabilities.js.map +1 -1
- package/node_modules/@tianshu-ai/plugin-sdk/dist/channel-bindings.d.ts +60 -0
- package/node_modules/@tianshu-ai/plugin-sdk/dist/channel-bindings.d.ts.map +1 -0
- package/node_modules/@tianshu-ai/plugin-sdk/dist/channel-bindings.js +18 -0
- package/node_modules/@tianshu-ai/plugin-sdk/dist/channel-bindings.js.map +1 -0
- package/node_modules/@tianshu-ai/plugin-sdk/dist/client.d.ts +28 -0
- package/node_modules/@tianshu-ai/plugin-sdk/dist/client.d.ts.map +1 -1
- package/node_modules/@tianshu-ai/plugin-sdk/dist/client.js +39 -0
- package/node_modules/@tianshu-ai/plugin-sdk/dist/client.js.map +1 -1
- package/node_modules/@tianshu-ai/plugin-sdk/dist/index.d.ts +1 -0
- package/node_modules/@tianshu-ai/plugin-sdk/dist/index.d.ts.map +1 -1
- package/node_modules/@tianshu-ai/plugin-sdk/dist/index.js +1 -0
- package/node_modules/@tianshu-ai/plugin-sdk/dist/index.js.map +1 -1
- package/node_modules/@tianshu-ai/plugin-sdk/src/capabilities.ts +5 -0
- package/node_modules/@tianshu-ai/plugin-sdk/src/channel-bindings.ts +75 -0
- package/node_modules/@tianshu-ai/plugin-sdk/src/client.ts +106 -0
- package/node_modules/@tianshu-ai/plugin-sdk/src/index.ts +1 -0
- package/package.json +1 -1
- package/packages/plugin-sdk/dist/capabilities.d.ts +4 -0
- package/packages/plugin-sdk/dist/capabilities.d.ts.map +1 -1
- package/packages/plugin-sdk/dist/capabilities.js +4 -0
- package/packages/plugin-sdk/dist/capabilities.js.map +1 -1
- package/packages/plugin-sdk/dist/channel-bindings.d.ts +60 -0
- package/packages/plugin-sdk/dist/channel-bindings.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/channel-bindings.js +18 -0
- package/packages/plugin-sdk/dist/channel-bindings.js.map +1 -0
- package/packages/plugin-sdk/dist/client.d.ts +28 -0
- package/packages/plugin-sdk/dist/client.d.ts.map +1 -1
- package/packages/plugin-sdk/dist/client.js +39 -0
- package/packages/plugin-sdk/dist/client.js.map +1 -1
- package/packages/plugin-sdk/dist/index.d.ts +1 -0
- package/packages/plugin-sdk/dist/index.d.ts.map +1 -1
- package/packages/plugin-sdk/dist/index.js +1 -0
- package/packages/plugin-sdk/dist/index.js.map +1 -1
- package/packages/server/builtinConfig/plugins/wechat/manifest.json +24 -19
- package/packages/server/dist/channels/adapter-manager.d.ts +4 -0
- package/packages/server/dist/channels/adapter-manager.d.ts.map +1 -1
- package/packages/server/dist/channels/adapter-manager.js +15 -0
- package/packages/server/dist/channels/adapter-manager.js.map +1 -1
- package/packages/server/dist/channels/bindings.d.ts +8 -2
- package/packages/server/dist/channels/bindings.d.ts.map +1 -1
- package/packages/server/dist/channels/bindings.js +22 -7
- package/packages/server/dist/channels/bindings.js.map +1 -1
- package/packages/server/dist/channels/index.d.ts +1 -1
- package/packages/server/dist/channels/index.d.ts.map +1 -1
- package/packages/server/dist/channels/index.js +1 -1
- package/packages/server/dist/channels/index.js.map +1 -1
- package/packages/server/dist/channels/router.d.ts.map +1 -1
- package/packages/server/dist/channels/router.js +19 -3
- package/packages/server/dist/channels/router.js.map +1 -1
- package/packages/server/dist/channels/sessions.d.ts.map +1 -1
- package/packages/server/dist/channels/sessions.js +19 -9
- package/packages/server/dist/channels/sessions.js.map +1 -1
- package/packages/server/dist/channels/types.d.ts +4 -0
- package/packages/server/dist/channels/types.d.ts.map +1 -1
- package/packages/server/dist/chat/handler.d.ts.map +1 -1
- package/packages/server/dist/chat/handler.js +20 -8
- package/packages/server/dist/chat/handler.js.map +1 -1
- package/packages/server/dist/chat/messages.d.ts +12 -0
- package/packages/server/dist/chat/messages.d.ts.map +1 -1
- package/packages/server/dist/chat/messages.js +60 -1
- package/packages/server/dist/chat/messages.js.map +1 -1
- package/packages/server/dist/chat/ws-protocol.d.ts +19 -0
- package/packages/server/dist/chat/ws-protocol.d.ts.map +1 -1
- package/packages/server/dist/chat/ws-protocol.js.map +1 -1
- package/packages/server/dist/core/migrations/011-channel-bindings-owner.d.ts +4 -0
- package/packages/server/dist/core/migrations/011-channel-bindings-owner.d.ts.map +1 -0
- package/packages/server/dist/core/migrations/011-channel-bindings-owner.js +62 -0
- package/packages/server/dist/core/migrations/011-channel-bindings-owner.js.map +1 -0
- package/packages/server/dist/core/migrations/index.d.ts.map +1 -1
- package/packages/server/dist/core/migrations/index.js +2 -0
- package/packages/server/dist/core/migrations/index.js.map +1 -1
- package/packages/server/dist/core/plugins/manifest.js +16 -0
- package/packages/server/dist/core/plugins/manifest.js.map +1 -1
- package/packages/server/dist/index.js +130 -2
- package/packages/server/dist/index.js.map +1 -1
- package/packages/server/dist/plugins-routes.d.ts +3 -3
- package/packages/web/dist/assets/{angular-html-Iamn8VeB.js → angular-html-C0dYPx6r.js} +1 -1
- package/packages/web/dist/assets/{angular-ts-Dc_oiB71.js → angular-ts-Oj3r5XKT.js} +1 -1
- package/packages/web/dist/assets/{astro-DHQtQe0F.js → astro-CCOewSfI.js} +1 -1
- package/packages/web/dist/assets/{blade-PmaEpBP5.js → blade-CMoBaI-c.js} +1 -1
- package/packages/web/dist/assets/{bundle-web-BPLQz4q7.js → bundle-web-CKXVGjGn.js} +3 -3
- package/packages/web/dist/assets/{c-6d0N850q.js → c-C3xsc8VJ.js} +1 -1
- package/packages/web/dist/assets/{coffee-D8kWvGFl.js → coffee-Bk95m5xZ.js} +1 -1
- package/packages/web/dist/assets/{cpp-CcjEAZiA.js → cpp-BDq9NJ6M.js} +1 -1
- package/packages/web/dist/assets/{css-BXLZJH0u.js → css-o-wak23w.js} +1 -1
- package/packages/web/dist/assets/{glsl-B5wzeQ70.js → glsl-C_vdhPcI.js} +1 -1
- package/packages/web/dist/assets/{graphql-C5sRBXVN.js → graphql-CTaScu0D.js} +1 -1
- package/packages/web/dist/assets/{haml-CmlLXAwX.js → haml-DPJlUtZO.js} +1 -1
- package/packages/web/dist/assets/{handlebars-Cho472sw.js → handlebars-BOguOpb_.js} +1 -1
- package/packages/web/dist/assets/{html-CHJOEdwS.js → html-D-U32qVf.js} +1 -1
- package/packages/web/dist/assets/{html-derivative-CnnsD8XF.js → html-derivative-jL4OI3XO.js} +1 -1
- package/packages/web/dist/assets/{http-QdLrXf_j.js → http-BS0vPRn7.js} +1 -1
- package/packages/web/dist/assets/{hurl-BVvBfFkA.js → hurl-B_HjhbX9.js} +1 -1
- package/packages/web/dist/assets/index-BNIrE3EB.css +2 -0
- package/packages/web/dist/assets/index-uCaxo84h.js +70 -0
- package/packages/web/dist/assets/{java-V8b8Q0RE.js → java-ChRhPBC6.js} +1 -1
- package/packages/web/dist/assets/{javascript-C3ati9Uv.js → javascript-LHwMkPdo.js} +1 -1
- package/packages/web/dist/assets/{jinja-IFferrAR.js → jinja-CFd74q6T.js} +1 -1
- package/packages/web/dist/assets/{jison-Du-VEKXM.js → jison-Ce1sYH7G.js} +1 -1
- package/packages/web/dist/assets/{jsx-DKW7cyot.js → jsx-gt-LpmXz.js} +1 -1
- package/packages/web/dist/assets/{julia-DZx644uB.js → julia-C6Y23mvC.js} +1 -1
- package/packages/web/dist/assets/{marko-DUOUvUjN.js → marko-P-1kEquO.js} +1 -1
- package/packages/web/dist/assets/{mdc-Ba06-lkg.js → mdc-2lMXMbYI.js} +1 -1
- package/packages/web/dist/assets/{papaparse.min-DDRMXFnP.js → papaparse.min-CsGIlyex.js} +1 -1
- package/packages/web/dist/assets/{php-DBWTNhOc.js → php-DwOfEa28.js} +1 -1
- package/packages/web/dist/assets/{pug-BAVJkaVg.js → pug-CM67KWgR.js} +1 -1
- package/packages/web/dist/assets/{regexp-BM38l-oV.js → regexp-BPbwK-Xq.js} +1 -1
- package/packages/web/dist/assets/{scss-BEtxFDif.js → scss-Cu9uCmMu.js} +1 -1
- package/packages/web/dist/assets/{sql-BWivcsR1.js → sql-Crihb3H8.js} +1 -1
- package/packages/web/dist/assets/{svelte-BwreCCAO.js → svelte-7M-KmR78.js} +1 -1
- package/packages/web/dist/assets/{ts-tags-B1VvoL7n.js → ts-tags-DCJuj_w-.js} +1 -1
- package/packages/web/dist/assets/{tsx-B38DHfPy.js → tsx-BghSsf5x.js} +1 -1
- package/packages/web/dist/assets/{typescript-BXszQdhG.js → typescript-DZ9XjC6y.js} +1 -1
- package/packages/web/dist/assets/{vue-B8BzggBE.js → vue--cfr4Gjc.js} +1 -1
- package/packages/web/dist/assets/{vue-html-3A7KBMS_.js → vue-html-B65J0UBj.js} +1 -1
- package/packages/web/dist/assets/{vue-vine-DayxEfJh.js → vue-vine-D8DvctWg.js} +1 -1
- package/packages/web/dist/assets/{xml-MqMTuZ7-.js → xml-BZQysVLh.js} +1 -1
- package/packages/web/dist/index.html +2 -2
- package/plugins/wechat/dist/channel.d.ts +25 -12
- package/plugins/wechat/dist/channel.d.ts.map +1 -1
- package/plugins/wechat/dist/channel.js +80 -32
- package/plugins/wechat/dist/channel.js.map +1 -1
- package/plugins/wechat/dist/client.d.ts +5 -0
- package/plugins/wechat/dist/client.d.ts.map +1 -0
- package/plugins/wechat/dist/client.js +280 -0
- package/plugins/wechat/dist/client.js.map +1 -0
- package/plugins/wechat/dist/ilink-api.d.ts +115 -27
- package/plugins/wechat/dist/ilink-api.d.ts.map +1 -1
- package/plugins/wechat/dist/ilink-api.js +171 -28
- package/plugins/wechat/dist/ilink-api.js.map +1 -1
- package/plugins/wechat/dist/server.d.ts.map +1 -1
- package/plugins/wechat/dist/server.js +209 -88
- package/plugins/wechat/dist/server.js.map +1 -1
- package/plugins/wechat/manifest.json +24 -19
- package/plugins/wechat/package.json +15 -2
- package/packages/web/dist/assets/index-DlQunQDm.css +0 -2
- package/packages/web/dist/assets/index-dNBs1BYn.js +0 -63
package/README.md
CHANGED
|
@@ -158,6 +158,16 @@ Plus:
|
|
|
158
158
|
- 🤖 **Background workers, not "tools."** Dispatch parallel agents
|
|
159
159
|
onto a Kanban board; watch elapsed time per task; intervene when
|
|
160
160
|
one stalls.
|
|
161
|
+
- 🔍 **The orchestrator is a supervisor.** The main agent (天枢,
|
|
162
|
+
literally "the pivot") doesn't just dispatch — it reads across
|
|
163
|
+
every worker run on the board (duration, intervention rate,
|
|
164
|
+
failure-reason clusters, token cost) and proposes tuning back
|
|
165
|
+
to you: *“Your `web-research` worker hits the 10-min watchdog
|
|
166
|
+
on 1 in 5 runs — want me to raise its `timeoutMs` to 15 min?”*
|
|
167
|
+
Analytics is a recommendation surface, never an auto-tuning
|
|
168
|
+
control loop — every change still needs your confirm. See
|
|
169
|
+
[ADR-0002 §12](docs/architecture/workers.md#12-orchestrator-side-analytics--continuous-improvement)
|
|
170
|
+
for the full story.
|
|
161
171
|
- 🏢 **Multi-tenant from row 1.** Every record carries `tenantId`.
|
|
162
172
|
Sidecars, workspaces, and worker pools are tenant-isolated.
|
|
163
173
|
- 🧠 **A setup assistant that fixes things.** `tianshu setup` runs a
|
|
@@ -354,6 +364,11 @@ the full picture.
|
|
|
354
364
|
- [ ] Docker image with sandbox layer baked in
|
|
355
365
|
- [ ] Linux systemd user service (matches macOS launchd UX)
|
|
356
366
|
- [ ] Skills marketplace (registry + install command)
|
|
367
|
+
- [ ] **Orchestrator analytics**: `worker_analytics` /
|
|
368
|
+
`worker_task_timeline` /
|
|
369
|
+
`worker_propose_tuning` tools so the main agent
|
|
370
|
+
can read across worker runs and propose concrete
|
|
371
|
+
tuning (see ADR-0002 §12)
|
|
357
372
|
|
|
358
373
|
Tracked in [GitHub Issues](https://github.com/tianshu-ai/tianshu/issues).
|
|
359
374
|
|
package/README.zh-CN.md
CHANGED
|
@@ -136,6 +136,13 @@ Tianshu 是**一个 agent 运行时,不是一个聊天框**。三件事跟同
|
|
|
136
136
|
|
|
137
137
|
- 🤖 **后台 worker,不是 "tool"**。多个 agent 并行调度到 Kanban
|
|
138
138
|
看板上,每个任务的耗时实时可见,卡住能介入。
|
|
139
|
+
- 🔍 **主 agent 是个 supervisor**。主 agent(天枢,“中枢”之意)
|
|
140
|
+
不只是调度——它跨任务读看板上的所有 worker 表现(耗时、干
|
|
141
|
+
预率、失败原因聚类、token 成本),主动向你提调优建议:
|
|
142
|
+
*“你的 web-research worker 每 5 次跑有 1 次撞 10 分钟 watchdog
|
|
143
|
+
—— 要不要把 `timeoutMs` 改成 15 分钟?”* 分析是推荐面,不是
|
|
144
|
+
自动调优控制环 —— 每个改动都要你确认。详见
|
|
145
|
+
[ADR-0002 §12](docs/architecture/workers.md#12-orchestrator-side-analytics--continuous-improvement)。
|
|
139
146
|
- 🏢 **多租户从第一行 schema 起**。每条记录都带 `tenantId`,
|
|
140
147
|
sidecar、workspace、worker pool 全部按租户隔离。
|
|
141
148
|
- 🧠 **能修问题的 setup agent**。`tianshu setup` 是个由 Claude/Codex
|
|
@@ -324,6 +331,10 @@ Agent 运行时基于
|
|
|
324
331
|
- [ ] Docker 镜像(带沙箱层)
|
|
325
332
|
- [ ] Linux systemd 用户服务(跟 macOS launchd 体验对齐)
|
|
326
333
|
- [ ] Skills 市场(registry + 安装命令)
|
|
334
|
+
- [ ] **主 agent 分析能力**:`worker_analytics` /
|
|
335
|
+
`worker_task_timeline` / `worker_propose_tuning` 工具,
|
|
336
|
+
让主 agent 跨 worker 读性能数据、提出具体调优建议
|
|
337
|
+
(见 ADR-0002 §12)
|
|
327
338
|
|
|
328
339
|
进度跟踪:[GitHub Issues](https://github.com/tianshu-ai/tianshu/issues)。
|
|
329
340
|
|
|
@@ -39,6 +39,10 @@ export declare const KNOWN_CAPABILITIES: {
|
|
|
39
39
|
readonly exclusive: true;
|
|
40
40
|
readonly description: "Diagnose a file via the host's LSP manager after a write/edit. Plugins (notably `files`) call `diagnoseAfterEdit({ filePath, contents })` and append the formatted diagnostic block to their tool result so the model sees compile errors in the same turn that introduced them. Tenant-scoped: the manager refuses files outside the calling tenant's workspace. See ADR-0005.";
|
|
41
41
|
};
|
|
42
|
+
readonly "host.channelBindings": {
|
|
43
|
+
readonly exclusive: true;
|
|
44
|
+
readonly description: "Manage channel adapter bindings (chat-platform integrations). Plugins contributing a channel (Feishu / Telegram / WeChat / ...) call create/start/stop/delete here so the host's adapter manager actually wires the inbound stream to the agent. The DB row + adapter lifecycle live together behind this capability.";
|
|
45
|
+
};
|
|
42
46
|
};
|
|
43
47
|
export type CapabilityName = keyof typeof KNOWN_CAPABILITIES;
|
|
44
48
|
/** True iff the given string is a registered capability name. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDoB,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAE7D,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,cAAc,CAE/D;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEvE"}
|
|
@@ -49,6 +49,10 @@ export const KNOWN_CAPABILITIES = {
|
|
|
49
49
|
exclusive: true,
|
|
50
50
|
description: "Diagnose a file via the host's LSP manager after a write/edit. Plugins (notably `files`) call `diagnoseAfterEdit({ filePath, contents })` and append the formatted diagnostic block to their tool result so the model sees compile errors in the same turn that introduced them. Tenant-scoped: the manager refuses files outside the calling tenant's workspace. See ADR-0005.",
|
|
51
51
|
},
|
|
52
|
+
"host.channelBindings": {
|
|
53
|
+
exclusive: true,
|
|
54
|
+
description: "Manage channel adapter bindings (chat-platform integrations). Plugins contributing a channel (Feishu / Telegram / WeChat / ...) call create/start/stop/delete here so the host's adapter manager actually wires the inbound stream to the agent. The DB row + adapter lifecycle live together behind this capability.",
|
|
55
|
+
},
|
|
52
56
|
};
|
|
53
57
|
/** True iff the given string is a registered capability name. */
|
|
54
58
|
export function isCapabilityName(s) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,iEAAiE;AACjE,iEAAiE;AACjE,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAC1D,EAAE;AACF,mBAAmB;AACnB,kEAAkE;AAClE,+DAA+D;AAC/D,mCAAmC;AACnC,kEAAkE;AAClE,2DAA2D;AAO3D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,eAAe,EAAE;QACf,SAAS,EAAE,IAAI;QACf,WAAW,EACT,8EAA8E;KACjF;IACD,kBAAkB,EAAE;QAClB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,0SAA0S;KAC7S;IACD,aAAa,EAAE;QACb,SAAS,EAAE,IAAI;QACf,WAAW,EACT,0HAA0H;KAC7H;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,uTAAuT;KAC1T;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,sWAAsW;KACzW;IACD,kBAAkB,EAAE;QAClB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,qTAAqT;KACxT;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,oNAAoN;KACvN;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,sRAAsR;KACzR;IACD,UAAU,EAAE;QACV,SAAS,EAAE,IAAI;QACf,WAAW,EACT,iXAAiX;KACpX;CACgD,CAAC;AAIpD,iEAAiE;AACjE,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC"}
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,iEAAiE;AACjE,iEAAiE;AACjE,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAC1D,EAAE;AACF,mBAAmB;AACnB,kEAAkE;AAClE,+DAA+D;AAC/D,mCAAmC;AACnC,kEAAkE;AAClE,2DAA2D;AAO3D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,eAAe,EAAE;QACf,SAAS,EAAE,IAAI;QACf,WAAW,EACT,8EAA8E;KACjF;IACD,kBAAkB,EAAE;QAClB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,0SAA0S;KAC7S;IACD,aAAa,EAAE;QACb,SAAS,EAAE,IAAI;QACf,WAAW,EACT,0HAA0H;KAC7H;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,uTAAuT;KAC1T;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,sWAAsW;KACzW;IACD,kBAAkB,EAAE;QAClB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,qTAAqT;KACxT;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,oNAAoN;KACvN;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,sRAAsR;KACzR;IACD,UAAU,EAAE;QACV,SAAS,EAAE,IAAI;QACf,WAAW,EACT,iXAAiX;KACpX;IACD,sBAAsB,EAAE;QACtB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,uTAAuT;KAC1T;CACgD,CAAC;AAIpD,iEAAiE;AACjE,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/** Subset of the channel_bindings row plugins can see. The full row
|
|
2
|
+
* (status, status_detail, timestamps) is host-internal; the plugin
|
|
3
|
+
* cares about creating / updating identity + config. */
|
|
4
|
+
export interface ChannelBindingView {
|
|
5
|
+
/** Stable id, prefixed `cb_`. */
|
|
6
|
+
id: string;
|
|
7
|
+
/** Tenant this binding belongs to. */
|
|
8
|
+
tenantId: string;
|
|
9
|
+
/** The user this binding belongs to. Channel accounts (a wechat
|
|
10
|
+
* login, a telegram bot token, ...) are personal credentials —
|
|
11
|
+
* one user binding their phone shouldn't surface that account
|
|
12
|
+
* to other users on the same tenant. The host scopes list /
|
|
13
|
+
* delete to this id. */
|
|
14
|
+
ownerUserId: string;
|
|
15
|
+
/** Channel id ("wechat" / "telegram" / ...). */
|
|
16
|
+
channelId: string;
|
|
17
|
+
/** Plugin id that contributes the channel. */
|
|
18
|
+
pluginId: string;
|
|
19
|
+
/** Human-readable label admins set / the login flow inferred. */
|
|
20
|
+
displayName: string | null;
|
|
21
|
+
/** Whether the host's adapter manager should keep it active. */
|
|
22
|
+
enabled: boolean;
|
|
23
|
+
/** Last lifecycle state the adapter reached. */
|
|
24
|
+
status: "idle" | "starting" | "running" | "error" | "stopped";
|
|
25
|
+
/** Free-text last status detail (auth failure, last reconnect, etc.). */
|
|
26
|
+
statusDetail: string | null;
|
|
27
|
+
/** Per-binding adapter config (token + identity, plugin-defined). */
|
|
28
|
+
config: Record<string, unknown>;
|
|
29
|
+
createdAt: number;
|
|
30
|
+
updatedAt: number;
|
|
31
|
+
}
|
|
32
|
+
export interface CreateChannelBindingInput {
|
|
33
|
+
/** Per-user scope. Channel credentials are personal — the host
|
|
34
|
+
* refuses any operation where the caller-supplied userId doesn't
|
|
35
|
+
* own the targeted binding. Plugin admin routes get this from
|
|
36
|
+
* `req.ctx.userId` (set by the host's tenant middleware). */
|
|
37
|
+
ownerUserId: string;
|
|
38
|
+
channelId: string;
|
|
39
|
+
pluginId: string;
|
|
40
|
+
displayName?: string;
|
|
41
|
+
config: Record<string, unknown>;
|
|
42
|
+
/** Default true. Set false to create a binding without starting
|
|
43
|
+
* the adapter (admin can flip later). */
|
|
44
|
+
enabled?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface ChannelBindingsCapability {
|
|
47
|
+
/** Create + start a binding in one call. Returns the row the
|
|
48
|
+
* host persisted. */
|
|
49
|
+
create(input: CreateChannelBindingInput): Promise<ChannelBindingView>;
|
|
50
|
+
/** Enumerate the calling user's bindings. */
|
|
51
|
+
list(opts: {
|
|
52
|
+
ownerUserId: string;
|
|
53
|
+
channelId?: string;
|
|
54
|
+
}): ChannelBindingView[];
|
|
55
|
+
/** Stop the adapter, delete the row. Refuses the operation when
|
|
56
|
+
* the binding doesn't belong to the supplied user. Returns true
|
|
57
|
+
* if anything was removed. */
|
|
58
|
+
delete(bindingId: string, ownerUserId: string): Promise<boolean>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=channel-bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-bindings.d.ts","sourceRoot":"","sources":["../src/channel-bindings.ts"],"names":[],"mappings":"AAiBA;;yDAEyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;6BAIyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9D,yEAAyE;IACzE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC;;;kEAG8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC;8CAC0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC;0BACsB;IACtB,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtE,6CAA6C;IAC7C,IAAI,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB,EAAE,CAAC;IAC9E;;mCAE+B;IAC/B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Capability-side type for `host.channelBindings`.
|
|
2
|
+
//
|
|
3
|
+
// Channel plugins (wechat / telegram / discord / ...) call into
|
|
4
|
+
// this through `ctx.capabilities.get<ChannelBindingsCapability>(
|
|
5
|
+
// "host.channelBindings")` after a successful login flow to:
|
|
6
|
+
//
|
|
7
|
+
// - persist the binding row (token, account metadata, ...) on
|
|
8
|
+
// `channel_bindings`
|
|
9
|
+
// - kick the adapter manager to actually start the adapter so
|
|
10
|
+
// the long-poll begins immediately, no server restart
|
|
11
|
+
// - list / delete previously-created bindings for the admin UI
|
|
12
|
+
//
|
|
13
|
+
// We keep the wire shape in plugin-sdk (not @tianshu/server) so
|
|
14
|
+
// plugins don't pull a host dep just to register a binding. The
|
|
15
|
+
// host registers a matching impl in index.ts; the registry hooks
|
|
16
|
+
// it under the capability name.
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=channel-bindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-bindings.js","sourceRoot":"","sources":["../src/channel-bindings.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,gEAAgE;AAChE,iEAAiE;AACjE,6DAA6D;AAC7D,EAAE;AACF,gEAAgE;AAChE,yBAAyB;AACzB,gEAAgE;AAChE,0DAA0D;AAC1D,iEAAiE;AACjE,EAAE;AACF,gEAAgE;AAChE,gEAAgE;AAChE,iEAAiE;AACjE,gCAAgC"}
|
|
@@ -293,4 +293,32 @@ export declare function __resetUseThemeForTest(): void;
|
|
|
293
293
|
/** Hook plugins call. Returns the live theme state; re-renders
|
|
294
294
|
* the consuming component on theme change. */
|
|
295
295
|
export declare function useTheme(): ThemeApi;
|
|
296
|
+
export interface ChatNavApi {
|
|
297
|
+
/** What the chat area is currently showing. null = webchat. */
|
|
298
|
+
viewingSessionId: string | null;
|
|
299
|
+
/** Pin the chat area to a given session. Pass null to return
|
|
300
|
+
* to the user's webchat thread. */
|
|
301
|
+
setViewingSession: (sessionId: string | null) => void;
|
|
302
|
+
}
|
|
303
|
+
export declare function __installChatNav(fn: () => ChatNavApi): void;
|
|
304
|
+
export declare function __resetChatNavForTest(): void;
|
|
305
|
+
/** Hook returning the host's current chat-navigation state. */
|
|
306
|
+
export declare function useChatNav(): ChatNavApi;
|
|
307
|
+
export interface WsEventApi {
|
|
308
|
+
/** Subscribe to a typed server event. Returns the cleanup
|
|
309
|
+
* function the React effect needs to unsubscribe. Caller
|
|
310
|
+
* is responsible for stable handler identity (React-shaped). */
|
|
311
|
+
subscribe: (type: string, handler: (event: {
|
|
312
|
+
type: string;
|
|
313
|
+
} & Record<string, unknown>) => void) => () => void;
|
|
314
|
+
}
|
|
315
|
+
export declare function __installWsEventApi(api: WsEventApi): void;
|
|
316
|
+
export declare function __resetWsEventApiForTest(): void;
|
|
317
|
+
/** Programmatic subscribe — plugins call this from their own
|
|
318
|
+
* useEffect to receive WebSocket events from the host. Returns the
|
|
319
|
+
* unsubscribe function (or a no-op when the host hasn't installed
|
|
320
|
+
* an API yet, e.g. unit tests or pre-mount probing). */
|
|
321
|
+
export declare function subscribeToWsEvent<TEvent extends {
|
|
322
|
+
type: string;
|
|
323
|
+
}>(type: TEvent["type"], handler: (event: TEvent) => void): () => void;
|
|
296
324
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -147,4 +147,43 @@ export function useTheme() {
|
|
|
147
147
|
}
|
|
148
148
|
return fn();
|
|
149
149
|
}
|
|
150
|
+
function chatNavSlot() {
|
|
151
|
+
return globalThis;
|
|
152
|
+
}
|
|
153
|
+
export function __installChatNav(fn) {
|
|
154
|
+
chatNavSlot().__tianshuPluginSdkChatNavHook__ = fn;
|
|
155
|
+
}
|
|
156
|
+
export function __resetChatNavForTest() {
|
|
157
|
+
delete chatNavSlot().__tianshuPluginSdkChatNavHook__;
|
|
158
|
+
}
|
|
159
|
+
/** Hook returning the host's current chat-navigation state. */
|
|
160
|
+
export function useChatNav() {
|
|
161
|
+
const fn = chatNavSlot().__tianshuPluginSdkChatNavHook__;
|
|
162
|
+
if (!fn) {
|
|
163
|
+
return {
|
|
164
|
+
viewingSessionId: null,
|
|
165
|
+
setViewingSession: () => { },
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
return fn();
|
|
169
|
+
}
|
|
170
|
+
function wsEventSlot() {
|
|
171
|
+
return globalThis;
|
|
172
|
+
}
|
|
173
|
+
export function __installWsEventApi(api) {
|
|
174
|
+
wsEventSlot().__tianshuPluginSdkWsEventApi__ = api;
|
|
175
|
+
}
|
|
176
|
+
export function __resetWsEventApiForTest() {
|
|
177
|
+
delete wsEventSlot().__tianshuPluginSdkWsEventApi__;
|
|
178
|
+
}
|
|
179
|
+
/** Programmatic subscribe — plugins call this from their own
|
|
180
|
+
* useEffect to receive WebSocket events from the host. Returns the
|
|
181
|
+
* unsubscribe function (or a no-op when the host hasn't installed
|
|
182
|
+
* an API yet, e.g. unit tests or pre-mount probing). */
|
|
183
|
+
export function subscribeToWsEvent(type, handler) {
|
|
184
|
+
const api = wsEventSlot().__tianshuPluginSdkWsEventApi__;
|
|
185
|
+
if (!api)
|
|
186
|
+
return () => { };
|
|
187
|
+
return api.subscribe(type, handler);
|
|
188
|
+
}
|
|
150
189
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,6 @@ export * from "./agent-loop.js";
|
|
|
5
5
|
export * from "./session-inbox.js";
|
|
6
6
|
export * from "./catalog.js";
|
|
7
7
|
export * from "./lsp.js";
|
|
8
|
+
export * from "./channel-bindings.js";
|
|
8
9
|
export { McpToolset, textOfMcpContent, type McpEndpointResolver, type McpToolDescriptor, type McpToolFilter, type McpToolsetEntry, type McpToolsetOptions, type McpToolsetSnapshot, type ToolsetProvider, } from "./mcp-toolset.js";
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC"}
|
|
@@ -15,5 +15,6 @@ export * from "./agent-loop.js";
|
|
|
15
15
|
export * from "./session-inbox.js";
|
|
16
16
|
export * from "./catalog.js";
|
|
17
17
|
export * from "./lsp.js";
|
|
18
|
+
export * from "./channel-bindings.js";
|
|
18
19
|
export { McpToolset, textOfMcpContent, } from "./mcp-toolset.js";
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,mEAAmE;AACnE,oEAAoE;AACpE,qEAAqE;AACrE,iCAAiC;AACjC,EAAE;AACF,wEAAwE;AACxE,iEAAiE;AACjE,0BAA0B;AAE1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,UAAU,EACV,gBAAgB,GAQjB,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,mEAAmE;AACnE,oEAAoE;AACpE,qEAAqE;AACrE,iCAAiC;AACjC,EAAE;AACF,wEAAwE;AACxE,iEAAiE;AACjE,0BAA0B;AAE1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,UAAU,EACV,gBAAgB,GAQjB,MAAM,kBAAkB,CAAC"}
|
|
@@ -64,6 +64,11 @@ export const KNOWN_CAPABILITIES = {
|
|
|
64
64
|
description:
|
|
65
65
|
"Diagnose a file via the host's LSP manager after a write/edit. Plugins (notably `files`) call `diagnoseAfterEdit({ filePath, contents })` and append the formatted diagnostic block to their tool result so the model sees compile errors in the same turn that introduced them. Tenant-scoped: the manager refuses files outside the calling tenant's workspace. See ADR-0005.",
|
|
66
66
|
},
|
|
67
|
+
"host.channelBindings": {
|
|
68
|
+
exclusive: true,
|
|
69
|
+
description:
|
|
70
|
+
"Manage channel adapter bindings (chat-platform integrations). Plugins contributing a channel (Feishu / Telegram / WeChat / ...) call create/start/stop/delete here so the host's adapter manager actually wires the inbound stream to the agent. The DB row + adapter lifecycle live together behind this capability.",
|
|
71
|
+
},
|
|
67
72
|
} as const satisfies Record<string, CapabilitySpec>;
|
|
68
73
|
|
|
69
74
|
export type CapabilityName = keyof typeof KNOWN_CAPABILITIES;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// Capability-side type for `host.channelBindings`.
|
|
2
|
+
//
|
|
3
|
+
// Channel plugins (wechat / telegram / discord / ...) call into
|
|
4
|
+
// this through `ctx.capabilities.get<ChannelBindingsCapability>(
|
|
5
|
+
// "host.channelBindings")` after a successful login flow to:
|
|
6
|
+
//
|
|
7
|
+
// - persist the binding row (token, account metadata, ...) on
|
|
8
|
+
// `channel_bindings`
|
|
9
|
+
// - kick the adapter manager to actually start the adapter so
|
|
10
|
+
// the long-poll begins immediately, no server restart
|
|
11
|
+
// - list / delete previously-created bindings for the admin UI
|
|
12
|
+
//
|
|
13
|
+
// We keep the wire shape in plugin-sdk (not @tianshu/server) so
|
|
14
|
+
// plugins don't pull a host dep just to register a binding. The
|
|
15
|
+
// host registers a matching impl in index.ts; the registry hooks
|
|
16
|
+
// it under the capability name.
|
|
17
|
+
|
|
18
|
+
/** Subset of the channel_bindings row plugins can see. The full row
|
|
19
|
+
* (status, status_detail, timestamps) is host-internal; the plugin
|
|
20
|
+
* cares about creating / updating identity + config. */
|
|
21
|
+
export interface ChannelBindingView {
|
|
22
|
+
/** Stable id, prefixed `cb_`. */
|
|
23
|
+
id: string;
|
|
24
|
+
/** Tenant this binding belongs to. */
|
|
25
|
+
tenantId: string;
|
|
26
|
+
/** The user this binding belongs to. Channel accounts (a wechat
|
|
27
|
+
* login, a telegram bot token, ...) are personal credentials —
|
|
28
|
+
* one user binding their phone shouldn't surface that account
|
|
29
|
+
* to other users on the same tenant. The host scopes list /
|
|
30
|
+
* delete to this id. */
|
|
31
|
+
ownerUserId: string;
|
|
32
|
+
/** Channel id ("wechat" / "telegram" / ...). */
|
|
33
|
+
channelId: string;
|
|
34
|
+
/** Plugin id that contributes the channel. */
|
|
35
|
+
pluginId: string;
|
|
36
|
+
/** Human-readable label admins set / the login flow inferred. */
|
|
37
|
+
displayName: string | null;
|
|
38
|
+
/** Whether the host's adapter manager should keep it active. */
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
/** Last lifecycle state the adapter reached. */
|
|
41
|
+
status: "idle" | "starting" | "running" | "error" | "stopped";
|
|
42
|
+
/** Free-text last status detail (auth failure, last reconnect, etc.). */
|
|
43
|
+
statusDetail: string | null;
|
|
44
|
+
/** Per-binding adapter config (token + identity, plugin-defined). */
|
|
45
|
+
config: Record<string, unknown>;
|
|
46
|
+
createdAt: number;
|
|
47
|
+
updatedAt: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface CreateChannelBindingInput {
|
|
51
|
+
/** Per-user scope. Channel credentials are personal — the host
|
|
52
|
+
* refuses any operation where the caller-supplied userId doesn't
|
|
53
|
+
* own the targeted binding. Plugin admin routes get this from
|
|
54
|
+
* `req.ctx.userId` (set by the host's tenant middleware). */
|
|
55
|
+
ownerUserId: string;
|
|
56
|
+
channelId: string;
|
|
57
|
+
pluginId: string;
|
|
58
|
+
displayName?: string;
|
|
59
|
+
config: Record<string, unknown>;
|
|
60
|
+
/** Default true. Set false to create a binding without starting
|
|
61
|
+
* the adapter (admin can flip later). */
|
|
62
|
+
enabled?: boolean;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface ChannelBindingsCapability {
|
|
66
|
+
/** Create + start a binding in one call. Returns the row the
|
|
67
|
+
* host persisted. */
|
|
68
|
+
create(input: CreateChannelBindingInput): Promise<ChannelBindingView>;
|
|
69
|
+
/** Enumerate the calling user's bindings. */
|
|
70
|
+
list(opts: { ownerUserId: string; channelId?: string }): ChannelBindingView[];
|
|
71
|
+
/** Stop the adapter, delete the row. Refuses the operation when
|
|
72
|
+
* the binding doesn't belong to the supplied user. Returns true
|
|
73
|
+
* if anything was removed. */
|
|
74
|
+
delete(bindingId: string, ownerUserId: string): Promise<boolean>;
|
|
75
|
+
}
|
|
@@ -558,3 +558,109 @@ export function useTheme(): ThemeApi {
|
|
|
558
558
|
}
|
|
559
559
|
return fn();
|
|
560
560
|
}
|
|
561
|
+
|
|
562
|
+
// ─── ChatNav — host-managed selection of which session the chat
|
|
563
|
+
// area is currently viewing.
|
|
564
|
+
//
|
|
565
|
+
// Channel plugins call `setViewingSession(sessionId)` from their
|
|
566
|
+
// sidebar sections so clicking a row pins the chat area to that
|
|
567
|
+
// session. `viewingSessionId === null` means the user's webchat
|
|
568
|
+
// thread.
|
|
569
|
+
//
|
|
570
|
+
// Same install-once + globalSlot pattern as useTheme / useComposer.
|
|
571
|
+
// Host installs a real implementation at boot via
|
|
572
|
+
// `__installChatNav`; tests can install a stub through the same
|
|
573
|
+
// hook.
|
|
574
|
+
|
|
575
|
+
export interface ChatNavApi {
|
|
576
|
+
/** What the chat area is currently showing. null = webchat. */
|
|
577
|
+
viewingSessionId: string | null;
|
|
578
|
+
/** Pin the chat area to a given session. Pass null to return
|
|
579
|
+
* to the user's webchat thread. */
|
|
580
|
+
setViewingSession: (sessionId: string | null) => void;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
interface ChatNavGlobalSlot {
|
|
584
|
+
__tianshuPluginSdkChatNavHook__?: () => ChatNavApi;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
function chatNavSlot(): ChatNavGlobalSlot {
|
|
588
|
+
return globalThis as unknown as ChatNavGlobalSlot;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
export function __installChatNav(fn: () => ChatNavApi): void {
|
|
592
|
+
chatNavSlot().__tianshuPluginSdkChatNavHook__ = fn;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
export function __resetChatNavForTest(): void {
|
|
596
|
+
delete chatNavSlot().__tianshuPluginSdkChatNavHook__;
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
/** Hook returning the host's current chat-navigation state. */
|
|
600
|
+
export function useChatNav(): ChatNavApi {
|
|
601
|
+
const fn = chatNavSlot().__tianshuPluginSdkChatNavHook__;
|
|
602
|
+
if (!fn) {
|
|
603
|
+
return {
|
|
604
|
+
viewingSessionId: null,
|
|
605
|
+
setViewingSession: () => {},
|
|
606
|
+
};
|
|
607
|
+
}
|
|
608
|
+
return fn();
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
// ─── WebSocket event hook ─────────────────────────────────────────────
|
|
612
|
+
//
|
|
613
|
+
// Plugins occasionally want to react to push-broadcasted events
|
|
614
|
+
// the host server emits — e.g. a wechat sidebar section refreshing
|
|
615
|
+
// its session list when a new inbound message lands. Subscribing
|
|
616
|
+
// from a plugin's own React component without reaching into host
|
|
617
|
+
// internals is what this hook provides.
|
|
618
|
+
//
|
|
619
|
+
// The host installs a singleton subscribe function at boot via
|
|
620
|
+
// __installUseWsEvent; plugins call useWsEvent(type, handler) from
|
|
621
|
+
// any component. Effect cleanup unsubscribes on unmount.
|
|
622
|
+
//
|
|
623
|
+
// We deliberately keep this generic over wire-message type so the
|
|
624
|
+
// SDK doesn't need to know every event the server emits.
|
|
625
|
+
|
|
626
|
+
export interface WsEventApi {
|
|
627
|
+
/** Subscribe to a typed server event. Returns the cleanup
|
|
628
|
+
* function the React effect needs to unsubscribe. Caller
|
|
629
|
+
* is responsible for stable handler identity (React-shaped). */
|
|
630
|
+
subscribe: (
|
|
631
|
+
type: string,
|
|
632
|
+
handler: (event: { type: string } & Record<string, unknown>) => void,
|
|
633
|
+
) => () => void;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
interface WsEventGlobalSlot {
|
|
637
|
+
__tianshuPluginSdkWsEventApi__?: WsEventApi;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
function wsEventSlot(): WsEventGlobalSlot {
|
|
641
|
+
return globalThis as unknown as WsEventGlobalSlot;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
export function __installWsEventApi(api: WsEventApi): void {
|
|
645
|
+
wsEventSlot().__tianshuPluginSdkWsEventApi__ = api;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
export function __resetWsEventApiForTest(): void {
|
|
649
|
+
delete wsEventSlot().__tianshuPluginSdkWsEventApi__;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
/** Programmatic subscribe — plugins call this from their own
|
|
653
|
+
* useEffect to receive WebSocket events from the host. Returns the
|
|
654
|
+
* unsubscribe function (or a no-op when the host hasn't installed
|
|
655
|
+
* an API yet, e.g. unit tests or pre-mount probing). */
|
|
656
|
+
export function subscribeToWsEvent<TEvent extends { type: string }>(
|
|
657
|
+
type: TEvent["type"],
|
|
658
|
+
handler: (event: TEvent) => void,
|
|
659
|
+
): () => void {
|
|
660
|
+
const api = wsEventSlot().__tianshuPluginSdkWsEventApi__;
|
|
661
|
+
if (!api) return () => {};
|
|
662
|
+
return api.subscribe(
|
|
663
|
+
type,
|
|
664
|
+
handler as (e: { type: string } & Record<string, unknown>) => void,
|
|
665
|
+
);
|
|
666
|
+
}
|
package/package.json
CHANGED
|
@@ -39,6 +39,10 @@ export declare const KNOWN_CAPABILITIES: {
|
|
|
39
39
|
readonly exclusive: true;
|
|
40
40
|
readonly description: "Diagnose a file via the host's LSP manager after a write/edit. Plugins (notably `files`) call `diagnoseAfterEdit({ filePath, contents })` and append the formatted diagnostic block to their tool result so the model sees compile errors in the same turn that introduced them. Tenant-scoped: the manager refuses files outside the calling tenant's workspace. See ADR-0005.";
|
|
41
41
|
};
|
|
42
|
+
readonly "host.channelBindings": {
|
|
43
|
+
readonly exclusive: true;
|
|
44
|
+
readonly description: "Manage channel adapter bindings (chat-platform integrations). Plugins contributing a channel (Feishu / Telegram / WeChat / ...) call create/start/stop/delete here so the host's adapter manager actually wires the inbound stream to the agent. The DB row + adapter lifecycle live together behind this capability.";
|
|
45
|
+
};
|
|
42
46
|
};
|
|
43
47
|
export type CapabilityName = keyof typeof KNOWN_CAPABILITIES;
|
|
44
48
|
/** True iff the given string is a registered capability name. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDoB,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAE7D,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,cAAc,CAE/D;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEvE"}
|
|
@@ -49,6 +49,10 @@ export const KNOWN_CAPABILITIES = {
|
|
|
49
49
|
exclusive: true,
|
|
50
50
|
description: "Diagnose a file via the host's LSP manager after a write/edit. Plugins (notably `files`) call `diagnoseAfterEdit({ filePath, contents })` and append the formatted diagnostic block to their tool result so the model sees compile errors in the same turn that introduced them. Tenant-scoped: the manager refuses files outside the calling tenant's workspace. See ADR-0005.",
|
|
51
51
|
},
|
|
52
|
+
"host.channelBindings": {
|
|
53
|
+
exclusive: true,
|
|
54
|
+
description: "Manage channel adapter bindings (chat-platform integrations). Plugins contributing a channel (Feishu / Telegram / WeChat / ...) call create/start/stop/delete here so the host's adapter manager actually wires the inbound stream to the agent. The DB row + adapter lifecycle live together behind this capability.",
|
|
55
|
+
},
|
|
52
56
|
};
|
|
53
57
|
/** True iff the given string is a registered capability name. */
|
|
54
58
|
export function isCapabilityName(s) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,iEAAiE;AACjE,iEAAiE;AACjE,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAC1D,EAAE;AACF,mBAAmB;AACnB,kEAAkE;AAClE,+DAA+D;AAC/D,mCAAmC;AACnC,kEAAkE;AAClE,2DAA2D;AAO3D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,eAAe,EAAE;QACf,SAAS,EAAE,IAAI;QACf,WAAW,EACT,8EAA8E;KACjF;IACD,kBAAkB,EAAE;QAClB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,0SAA0S;KAC7S;IACD,aAAa,EAAE;QACb,SAAS,EAAE,IAAI;QACf,WAAW,EACT,0HAA0H;KAC7H;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,uTAAuT;KAC1T;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,sWAAsW;KACzW;IACD,kBAAkB,EAAE;QAClB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,qTAAqT;KACxT;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,oNAAoN;KACvN;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,sRAAsR;KACzR;IACD,UAAU,EAAE;QACV,SAAS,EAAE,IAAI;QACf,WAAW,EACT,iXAAiX;KACpX;CACgD,CAAC;AAIpD,iEAAiE;AACjE,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC"}
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,iEAAiE;AACjE,iEAAiE;AACjE,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAC1D,EAAE;AACF,mBAAmB;AACnB,kEAAkE;AAClE,+DAA+D;AAC/D,mCAAmC;AACnC,kEAAkE;AAClE,2DAA2D;AAO3D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,eAAe,EAAE;QACf,SAAS,EAAE,IAAI;QACf,WAAW,EACT,8EAA8E;KACjF;IACD,kBAAkB,EAAE;QAClB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,0SAA0S;KAC7S;IACD,aAAa,EAAE;QACb,SAAS,EAAE,IAAI;QACf,WAAW,EACT,0HAA0H;KAC7H;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,uTAAuT;KAC1T;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,sWAAsW;KACzW;IACD,kBAAkB,EAAE;QAClB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,qTAAqT;KACxT;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,oNAAoN;KACvN;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,sRAAsR;KACzR;IACD,UAAU,EAAE;QACV,SAAS,EAAE,IAAI;QACf,WAAW,EACT,iXAAiX;KACpX;IACD,sBAAsB,EAAE;QACtB,SAAS,EAAE,IAAI;QACf,WAAW,EACT,uTAAuT;KAC1T;CACgD,CAAC;AAIpD,iEAAiE;AACjE,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC"}
|