@xopcai/xopc 0.0.103 → 0.0.104

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 (930) hide show
  1. package/README.md +7 -4
  2. package/README.zh-CN.md +7 -4
  3. package/dist/_virtual/_rolldown/runtime.js +2 -3
  4. package/dist/browser-ext/manifest.json +1 -1
  5. package/dist/extensions/feishu/src/adapters/cli-login.d.ts +1 -1
  6. package/dist/extensions/feishu/src/adapters/cli-login.js +1 -1
  7. package/dist/extensions/feishu/src/adapters/cli-login.js.map +1 -1
  8. package/dist/extensions/feishu/src/adapters/gateway-setup.d.ts +2 -0
  9. package/dist/extensions/feishu/src/adapters/gateway-setup.js +225 -0
  10. package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +1 -0
  11. package/dist/extensions/feishu/src/index.d.ts +8 -1
  12. package/dist/extensions/feishu/src/index.js +14 -1
  13. package/dist/extensions/feishu/src/index.js.map +1 -0
  14. package/dist/extensions/feishu/src/outbound/outbound-adapter.js +1 -1
  15. package/dist/extensions/feishu/src/plugin.d.ts +2 -1
  16. package/dist/extensions/feishu/src/plugin.js +2 -0
  17. package/dist/extensions/feishu/src/plugin.js.map +1 -1
  18. package/dist/extensions/feishu/src/streaming/streaming-adapter.js +1 -1
  19. package/dist/extensions/feishu/src/transport/webhook/monitor.js +1 -1
  20. package/dist/extensions/feishu/xopc.extension.json +66 -1
  21. package/dist/extensions/telegram/src/adapters/gateway-setup.d.ts +2 -0
  22. package/dist/extensions/telegram/src/adapters/gateway-setup.js +146 -0
  23. package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +1 -0
  24. package/dist/extensions/telegram/src/adapters/security-adapter.js +1 -1
  25. package/dist/extensions/telegram/src/command-handler.js +1 -2
  26. package/dist/extensions/telegram/src/command-handler.js.map +1 -1
  27. package/dist/extensions/telegram/src/config-schema.js +2 -2
  28. package/dist/extensions/telegram/src/config-schema.js.map +1 -1
  29. package/dist/extensions/telegram/src/doctor.d.ts +1 -0
  30. package/dist/extensions/telegram/src/doctor.js +68 -0
  31. package/dist/extensions/telegram/src/doctor.js.map +1 -1
  32. package/dist/extensions/telegram/src/index.d.ts +8 -1
  33. package/dist/extensions/telegram/src/index.js +15 -2
  34. package/dist/extensions/telegram/src/index.js.map +1 -0
  35. package/dist/extensions/telegram/src/plugin.d.ts +13 -5
  36. package/dist/extensions/telegram/src/plugin.js +32 -12
  37. package/dist/extensions/telegram/src/plugin.js.map +1 -1
  38. package/dist/extensions/telegram/src/proxy-fetch.js +22 -5
  39. package/dist/extensions/telegram/src/proxy-fetch.js.map +1 -1
  40. package/dist/extensions/telegram/xopc.extension.json +412 -5
  41. package/dist/extensions/weixin/src/adapters/onboard-cli.js +2 -2
  42. package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +1 -1
  43. package/dist/extensions/weixin/src/api/api.js +1 -1
  44. package/dist/extensions/weixin/src/index.d.ts +8 -0
  45. package/dist/extensions/weixin/src/index.js +12 -1
  46. package/dist/extensions/weixin/src/index.js.map +1 -0
  47. package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
  48. package/dist/extensions/weixin/src/plugin.d.ts +2 -1
  49. package/dist/extensions/weixin/src/plugin.js +77 -2
  50. package/dist/extensions/weixin/src/plugin.js.map +1 -1
  51. package/dist/extensions/weixin/xopc.extension.json +52 -0
  52. package/dist/gateway/static/root/assets/agents-CvsBrBfi.js +396 -0
  53. package/dist/gateway/static/root/assets/{apps-page-C5RmwmTT.js → apps-page-L-IwQTe0.js} +1 -1
  54. package/dist/gateway/static/root/assets/browser-BLJWD7WI.js +8 -0
  55. package/dist/gateway/static/root/assets/channels-settings-D95KuPeP.js +1 -0
  56. package/dist/gateway/static/root/assets/cron-page-CfkWXDAI.js +1 -0
  57. package/dist/gateway/static/root/assets/{dist-CWm8hTXZ.js → dist-C6vclgEL.js} +1 -1
  58. package/dist/gateway/static/root/assets/{extension-debug-page-BzYgTkS9.js → extension-debug-page-D4JYAbsX.js} +1 -1
  59. package/dist/gateway/static/root/assets/{extension-page-BmTZH6gL.js → extension-page-_T62gi6e.js} +1 -1
  60. package/dist/gateway/static/root/assets/extension-settings-page-CkJbjyM-.js +1 -0
  61. package/dist/gateway/static/root/assets/{fetch-CMoWY2Si.js → fetch-B5aiIguv.js} +1 -1
  62. package/dist/gateway/static/root/assets/gateway-startup-retry-DqmLXhs6.js +1 -0
  63. package/dist/gateway/static/root/assets/heartbeat-config-api-HwJV1K_Y.js +1 -0
  64. package/dist/gateway/static/root/assets/index-BPYKW7FB.css +1 -0
  65. package/dist/gateway/static/root/assets/index-DvTb6wNR.js +4845 -0
  66. package/dist/gateway/static/root/assets/{logs-page-BjdQjHwk.js → logs-page-DsjtTjBy.js} +2 -2
  67. package/dist/gateway/static/root/assets/{note-detail-page-8Er4197b.js → note-detail-page-B2V7RhgD.js} +43 -43
  68. package/dist/gateway/static/root/assets/{note-time-CF3vf1jm.js → note-time-BG8GCTr4.js} +1 -1
  69. package/dist/gateway/static/root/assets/notes-page-xrcVBQ6Z.js +1 -0
  70. package/dist/gateway/static/root/assets/schema-form-S-QUvhul.js +1 -0
  71. package/dist/gateway/static/root/assets/sessions-page-CrQer6Au.js +1 -0
  72. package/dist/gateway/static/root/assets/settings-advanced-gate-DujQl9c7.js +2 -0
  73. package/dist/gateway/static/root/assets/{settings-form-section-C7qA7y0J.js → settings-form-section-r1V7dRV6.js} +1 -1
  74. package/dist/gateway/static/root/assets/settings-page-C9nrONQ2.js +3 -0
  75. package/dist/gateway/static/root/assets/{share-preview-page-Tvr5Mtq5.js → share-preview-page-DOFy0FNt.js} +1 -1
  76. package/dist/gateway/static/root/assets/skills-page-DmTsrs_a.js +2 -0
  77. package/dist/gateway/static/root/assets/{theme-store-HTvJlFLL.js → theme-store-Bo3j5Ovv.js} +1 -1
  78. package/dist/gateway/static/root/assets/url-WgQIjFZu.js +3 -0
  79. package/dist/gateway/static/root/assets/voice-api-key-field-AjmUAlEQ.js +1 -0
  80. package/dist/gateway/static/root/assets/{workflow-page.utils-CeBkAjP7.js → workflow-page.utils-DLEJ92gK.js} +1 -1
  81. package/dist/gateway/static/root/assets/workflows-page-BnjjKrM1.js +27 -0
  82. package/dist/gateway/static/root/index.html +6 -5
  83. package/dist/package.js +1 -1
  84. package/dist/src/agent/agent-manager.d.ts +18 -6
  85. package/dist/src/agent/agent-manager.js +60 -35
  86. package/dist/src/agent/agent-manager.js.map +1 -1
  87. package/dist/src/agent/builtin-agent-ids.d.ts +2 -0
  88. package/dist/src/agent/builtin-agent-ids.js +17 -0
  89. package/dist/src/agent/builtin-agent-ids.js.map +1 -0
  90. package/dist/src/agent/child-agent-factory.d.ts +4 -0
  91. package/dist/src/agent/child-agent-factory.js +28 -8
  92. package/dist/src/agent/child-agent-factory.js.map +1 -1
  93. package/dist/src/agent/context/workspace-seed.js +1 -1
  94. package/dist/src/agent/context/workspace-templates/AGENTS.md +23 -184
  95. package/dist/src/agent/embedded/run-turn.js +8 -2
  96. package/dist/src/agent/embedded/run-turn.js.map +1 -1
  97. package/dist/src/agent/embedded/session-tool-result-guard.js +1 -1
  98. package/dist/src/agent/embedded/subscribe-session.js +33 -51
  99. package/dist/src/agent/embedded/subscribe-session.js.map +1 -1
  100. package/dist/src/agent/embedded/types.d.ts +36 -35
  101. package/dist/src/agent/fallback/candidates.js +1 -1
  102. package/dist/src/agent/fallback/candidates.js.map +1 -1
  103. package/dist/src/agent/inbound/inbound-loop.js +1 -1
  104. package/dist/src/agent/inbound/turn-dispatcher.d.ts +1 -0
  105. package/dist/src/agent/inbound/turn-dispatcher.js +24 -5
  106. package/dist/src/agent/inbound/turn-dispatcher.js.map +1 -1
  107. package/dist/src/agent/models/manager.d.ts +1 -1
  108. package/dist/src/agent/models/manager.js +1 -1
  109. package/dist/src/agent/models/manager.js.map +1 -1
  110. package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.d.ts +1 -1
  111. package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js +1 -1
  112. package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js.map +1 -1
  113. package/dist/src/agent/prompt/sections/tooling.js +4 -0
  114. package/dist/src/agent/prompt/sections/tooling.js.map +1 -1
  115. package/dist/src/agent/service/direct-turn-helpers.d.ts +1 -0
  116. package/dist/src/agent/service/direct-turn-helpers.js +1 -1
  117. package/dist/src/agent/service/direct-turn-helpers.js.map +1 -1
  118. package/dist/src/agent/service/process-direct-streaming.d.ts +1 -0
  119. package/dist/src/agent/service/process-direct-streaming.js +35 -18
  120. package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
  121. package/dist/src/agent/service-inbound-utils.d.ts +0 -1
  122. package/dist/src/agent/service-inbound-utils.js +1 -17
  123. package/dist/src/agent/service-inbound-utils.js.map +1 -1
  124. package/dist/src/agent/service.d.ts +4 -4
  125. package/dist/src/agent/service.js +27 -15
  126. package/dist/src/agent/service.js.map +1 -1
  127. package/dist/src/agent/session/session-config-service.d.ts +1 -0
  128. package/dist/src/agent/session/session-config-service.js +9 -1
  129. package/dist/src/agent/session/session-config-service.js.map +1 -1
  130. package/dist/src/agent/session/session-inspector.d.ts +2 -1
  131. package/dist/src/agent/session/session-inspector.js +4 -0
  132. package/dist/src/agent/session/session-inspector.js.map +1 -1
  133. package/dist/src/agent/skills/config.js +1 -3
  134. package/dist/src/agent/skills/config.js.map +1 -1
  135. package/dist/src/agent/skills/format-skills-prompt.d.ts +1 -0
  136. package/dist/src/agent/skills/format-skills-prompt.js +3 -2
  137. package/dist/src/agent/skills/format-skills-prompt.js.map +1 -1
  138. package/dist/src/agent/skills/hub-pull.js +1 -1
  139. package/dist/src/agent/skills/index.js +20 -5
  140. package/dist/src/agent/skills/index.js.map +1 -1
  141. package/dist/src/agent/skills/installer.js +14 -27
  142. package/dist/src/agent/skills/installer.js.map +1 -1
  143. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +11 -1
  144. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +1 -1
  145. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +18 -4
  146. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +1 -1
  147. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +11 -2
  148. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +1 -1
  149. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +2 -2
  150. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +1 -1
  151. package/dist/src/agent/skills/skill-manager.d.ts +4 -1
  152. package/dist/src/agent/skills/skill-manager.js +3 -3
  153. package/dist/src/agent/skills/skill-manager.js.map +1 -1
  154. package/dist/src/agent/skills/skill-view-path.d.ts +1 -17
  155. package/dist/src/agent/skills/skill-view-path.js +3 -66
  156. package/dist/src/agent/skills/skill-view-path.js.map +1 -1
  157. package/dist/src/agent/skills/test-framework.js +2 -3
  158. package/dist/src/agent/skills/test-framework.js.map +1 -1
  159. package/dist/src/agent/streaming/reasoning-visibility-sse.js +1 -0
  160. package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +1 -1
  161. package/dist/src/agent/tool-manuals/browser.d.ts +1 -0
  162. package/{skills/browser/SKILL.md → dist/src/agent/tool-manuals/browser.js} +51 -54
  163. package/dist/src/agent/tool-manuals/browser.js.map +1 -0
  164. package/dist/src/agent/tool-manuals/index.d.ts +10 -0
  165. package/dist/src/agent/tool-manuals/index.js +28 -0
  166. package/dist/src/agent/tool-manuals/index.js.map +1 -0
  167. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +1 -1
  168. package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +1 -1
  169. package/dist/src/agent/tools/factory.js +7 -5
  170. package/dist/src/agent/tools/factory.js.map +1 -1
  171. package/dist/src/agent/tools/index.d.ts +1 -0
  172. package/dist/src/agent/tools/index.js +5 -4
  173. package/dist/src/agent/tools/session-search-tool.js +1 -1
  174. package/dist/src/agent/tools/shell.js +1 -1
  175. package/dist/src/agent/tools/skills-tools.js +37 -8
  176. package/dist/src/agent/tools/skills-tools.js.map +1 -1
  177. package/dist/src/agent/tools/tool-manual-tool.d.ts +6 -0
  178. package/dist/src/agent/tools/tool-manual-tool.js +34 -0
  179. package/dist/src/agent/tools/tool-manual-tool.js.map +1 -0
  180. package/dist/src/agent/tools/web-extract.js +2 -2
  181. package/dist/src/agent/tools/web.js +1 -1
  182. package/dist/src/agent/workflow/catalog.d.ts +7 -2
  183. package/dist/src/agent/workflow/catalog.js +66 -25
  184. package/dist/src/agent/workflow/catalog.js.map +1 -1
  185. package/dist/src/agent/workflow/subagent-runner.d.ts +3 -0
  186. package/dist/src/agent/workflow/subagent-runner.js +50 -4
  187. package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
  188. package/dist/src/agent/workflow/types.d.ts +10 -0
  189. package/dist/src/auth/credentials.js +10 -5
  190. package/dist/src/auth/credentials.js.map +1 -1
  191. package/dist/src/browser/actions/extension-registry-bridge.js +1 -1
  192. package/dist/src/browser/actions/registry.js +2 -2
  193. package/dist/src/browser/cdp-local-launcher.js +1 -1
  194. package/dist/src/browser/index.js +3 -3
  195. package/dist/src/browser/providers/browser-ext-install.js +1 -1
  196. package/dist/src/browser/providers/cloakbrowser.js +1 -1
  197. package/dist/src/channels/catalog/channel-catalog-service.d.ts +11 -0
  198. package/dist/src/channels/catalog/channel-catalog-service.js +168 -0
  199. package/dist/src/channels/catalog/channel-catalog-service.js.map +1 -0
  200. package/dist/src/channels/catalog/channel-catalog-types.d.ts +22 -0
  201. package/dist/src/channels/catalog/channel-catalog-types.js +1 -0
  202. package/dist/src/channels/dock.d.ts +0 -7
  203. package/dist/src/channels/dock.js +1 -21
  204. package/dist/src/channels/index.d.ts +1 -3
  205. package/dist/src/channels/index.js +1 -5
  206. package/dist/src/channels/lifecycle-supervisor.d.ts +1 -0
  207. package/dist/src/channels/lifecycle-supervisor.js +11 -0
  208. package/dist/src/channels/lifecycle-supervisor.js.map +1 -1
  209. package/dist/src/channels/manager.d.ts +1 -0
  210. package/dist/src/channels/manager.js +3 -0
  211. package/dist/src/channels/manager.js.map +1 -1
  212. package/dist/src/channels/pairing/pairing-channel.d.ts +2 -3
  213. package/dist/src/channels/pairing/pairing-messages.js +1 -1
  214. package/dist/src/channels/pairing/pairing-messages.js.map +1 -1
  215. package/dist/src/channels/pairing/pairing-service.d.ts +1 -1
  216. package/dist/src/channels/pairing/pairing-service.js +8 -27
  217. package/dist/src/channels/pairing/pairing-service.js.map +1 -1
  218. package/dist/src/channels/plugin-types.d.ts +3 -1
  219. package/dist/src/channels/plugins/types.adapters.d.ts +55 -2
  220. package/dist/src/channels/telegram/index.js +1 -1
  221. package/dist/src/chat-commands/builtins/config.js +4 -4
  222. package/dist/src/chat-commands/builtins/config.js.map +1 -1
  223. package/dist/src/chat-commands/config-paths.js +1 -1
  224. package/dist/src/chat-commands/config-paths.js.map +1 -1
  225. package/dist/src/chat-commands/context.js +1 -1
  226. package/dist/src/chat-commands/context.js.map +1 -1
  227. package/dist/src/cli/bin.js +1 -1
  228. package/dist/src/cli/command-manifest.js +1 -1
  229. package/dist/src/cli/command-manifest.js.map +1 -1
  230. package/dist/src/cli/commands/agent.js +2 -2
  231. package/dist/src/cli/commands/agent.js.map +1 -1
  232. package/dist/src/cli/commands/agents.js +2 -4
  233. package/dist/src/cli/commands/agents.js.map +1 -1
  234. package/dist/src/cli/commands/auth.js +1 -1
  235. package/dist/src/cli/commands/browser-cli-helpers.js +1 -1
  236. package/dist/src/cli/commands/channels.d.ts +1 -5
  237. package/dist/src/cli/commands/channels.js +115 -281
  238. package/dist/src/cli/commands/channels.js.map +1 -1
  239. package/dist/src/cli/commands/config.js +2 -2
  240. package/dist/src/cli/commands/config.js.map +1 -1
  241. package/dist/src/cli/commands/doctor/checks/channel-config.js +16 -69
  242. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +1 -1
  243. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +6 -4
  244. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +1 -1
  245. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +2 -2
  246. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +1 -1
  247. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  248. package/dist/src/cli/commands/doctor/checks/provider-auth.js +13 -9
  249. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +1 -1
  250. package/dist/src/cli/commands/extension-dev.js +2 -1
  251. package/dist/src/cli/commands/extension-dev.js.map +1 -1
  252. package/dist/src/cli/commands/extension-marketplace.js +2 -1
  253. package/dist/src/cli/commands/extension-marketplace.js.map +1 -1
  254. package/dist/src/cli/commands/extension-pack.js +2 -1
  255. package/dist/src/cli/commands/extension-pack.js.map +1 -1
  256. package/dist/src/cli/commands/models.js +7 -4
  257. package/dist/src/cli/commands/models.js.map +1 -1
  258. package/dist/src/cli/commands/onboard/channels/index.js +1 -1
  259. package/dist/src/cli/commands/onboard/channels/index.js.map +1 -1
  260. package/dist/src/cli/commands/onboard/channels/registry.d.ts +2 -1
  261. package/dist/src/cli/commands/onboard/channels/registry.js +32 -8
  262. package/dist/src/cli/commands/onboard/channels/registry.js.map +1 -1
  263. package/dist/src/cli/commands/onboard/model.js +8 -5
  264. package/dist/src/cli/commands/onboard/model.js.map +1 -1
  265. package/dist/src/cli/commands/onboard.js +4 -6
  266. package/dist/src/cli/commands/onboard.js.map +1 -1
  267. package/dist/src/cli/commands/setup-shared/runner.d.ts +1 -1
  268. package/dist/src/cli/commands/setup-shared/runner.js.map +1 -1
  269. package/dist/src/cli/commands/setup-shared/types.d.ts +1 -1
  270. package/dist/src/cli/commands/setup-shared/types.js.map +1 -1
  271. package/dist/src/cli/commands/tui.js +13 -5
  272. package/dist/src/cli/commands/tui.js.map +1 -1
  273. package/dist/src/cli/extension-cli-register.js +1 -1
  274. package/dist/src/commands/agents.config.d.ts +3 -3
  275. package/dist/src/commands/agents.config.js +7 -7
  276. package/dist/src/commands/agents.config.js.map +1 -1
  277. package/dist/src/config/agent-profile.d.ts +1 -1
  278. package/dist/src/config/agent-profile.js +6 -2
  279. package/dist/src/config/agent-profile.js.map +1 -1
  280. package/dist/src/config/agent-typed-models.d.ts +2 -2
  281. package/dist/src/config/agent-typed-models.js +13 -2
  282. package/dist/src/config/agent-typed-models.js.map +1 -1
  283. package/dist/src/config/index.js +3 -3
  284. package/dist/src/config/integration.d.ts +1 -1
  285. package/dist/src/config/loader.d.ts +0 -1
  286. package/dist/src/config/loader.js +4 -9
  287. package/dist/src/config/loader.js.map +1 -1
  288. package/dist/src/config/models-json.d.ts +6 -6
  289. package/dist/src/config/rules.js +2 -12
  290. package/dist/src/config/rules.js.map +1 -1
  291. package/dist/src/config/schema.d.ts +74 -47
  292. package/dist/src/config/schema.js +28 -66
  293. package/dist/src/config/schema.js.map +1 -1
  294. package/dist/src/config/validate-channel-configs.d.ts +0 -3
  295. package/dist/src/config/validate-channel-configs.js +29 -10
  296. package/dist/src/config/validate-channel-configs.js.map +1 -1
  297. package/dist/src/cron/executor.js +1 -4
  298. package/dist/src/cron/executor.js.map +1 -1
  299. package/dist/src/extensions/activation-context.js +3 -1
  300. package/dist/src/extensions/activation-context.js.map +1 -1
  301. package/dist/src/extensions/activation-planner.js +12 -0
  302. package/dist/src/extensions/activation-planner.js.map +1 -1
  303. package/dist/src/extensions/api.d.ts +5 -1
  304. package/dist/src/extensions/api.js +12 -0
  305. package/dist/src/extensions/api.js.map +1 -1
  306. package/dist/src/extensions/discover-extensions.js +17 -13
  307. package/dist/src/extensions/discover-extensions.js.map +1 -1
  308. package/dist/src/extensions/extension-metadata-snapshot.js +11 -5
  309. package/dist/src/extensions/extension-metadata-snapshot.js.map +1 -1
  310. package/dist/src/extensions/index.js +12 -4
  311. package/dist/src/extensions/index.js.map +1 -0
  312. package/dist/src/extensions/loader.d.ts +5 -1
  313. package/dist/src/extensions/loader.js +12 -11
  314. package/dist/src/extensions/loader.js.map +1 -1
  315. package/dist/src/extensions/manifest-registry.js +98 -93
  316. package/dist/src/extensions/manifest-registry.js.map +1 -1
  317. package/dist/src/extensions/normalize-manifest.js +91 -15
  318. package/dist/src/extensions/normalize-manifest.js.map +1 -1
  319. package/dist/src/extensions/sdk/index.js +1 -1
  320. package/dist/src/extensions/sdk/testing.js +4 -0
  321. package/dist/src/extensions/sdk/testing.js.map +1 -1
  322. package/dist/src/extensions/types/core.d.ts +32 -1
  323. package/dist/src/extensions/types/manifest.d.ts +60 -0
  324. package/dist/src/extensions/types/tui.d.ts +414 -5
  325. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  326. package/dist/src/gateway/agent-builtin-tools.js +16 -0
  327. package/dist/src/gateway/agent-builtin-tools.js.map +1 -1
  328. package/dist/src/gateway/agent-run-relay.d.ts +2 -3
  329. package/dist/src/gateway/agent-run-relay.js +10 -3
  330. package/dist/src/gateway/agent-run-relay.js.map +1 -1
  331. package/dist/src/gateway/agents-admin.d.ts +32 -19
  332. package/dist/src/gateway/agents-admin.js +113 -93
  333. package/dist/src/gateway/agents-admin.js.map +1 -1
  334. package/dist/src/gateway/chat-stream/mapper.d.ts +34 -0
  335. package/dist/src/gateway/chat-stream/mapper.js +244 -0
  336. package/dist/src/gateway/chat-stream/mapper.js.map +1 -0
  337. package/dist/src/gateway/chat-stream/protocol.d.ts +100 -0
  338. package/dist/src/gateway/chat-stream/protocol.js +1 -0
  339. package/dist/src/gateway/heartbeat/service.js +1 -1
  340. package/dist/src/gateway/hono/lib/agent-model.d.ts +4 -4
  341. package/dist/src/gateway/hono/lib/agent-model.js +13 -11
  342. package/dist/src/gateway/hono/lib/agent-model.js.map +1 -1
  343. package/dist/src/gateway/hono/lib/config-payload.d.ts +19 -7
  344. package/dist/src/gateway/hono/lib/config-payload.js +16 -15
  345. package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
  346. package/dist/src/gateway/hono/routes/agents.js +83 -48
  347. package/dist/src/gateway/hono/routes/agents.js.map +1 -1
  348. package/dist/src/gateway/hono/routes/channels.js +134 -214
  349. package/dist/src/gateway/hono/routes/channels.js.map +1 -1
  350. package/dist/src/gateway/hono/routes/commands-skills.js +10 -4
  351. package/dist/src/gateway/hono/routes/commands-skills.js.map +1 -1
  352. package/dist/src/gateway/hono/routes/config-patch/agents.js +26 -13
  353. package/dist/src/gateway/hono/routes/config-patch/agents.js.map +1 -1
  354. package/dist/src/gateway/hono/routes/config-patch/channels.d.ts +1 -11
  355. package/dist/src/gateway/hono/routes/config-patch/channels.js +18 -165
  356. package/dist/src/gateway/hono/routes/config-patch/channels.js.map +1 -1
  357. package/dist/src/gateway/hono/routes/config.js +5 -2
  358. package/dist/src/gateway/hono/routes/config.js.map +1 -1
  359. package/dist/src/gateway/hono/routes/dreaming.js +1 -1
  360. package/dist/src/gateway/hono/routes/lazy-bundles.js +13 -1
  361. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
  362. package/dist/src/gateway/hono/routes/public-gateway.js +2 -4
  363. package/dist/src/gateway/hono/routes/public-gateway.js.map +1 -1
  364. package/dist/src/gateway/hono/routes/sessions.js +179 -0
  365. package/dist/src/gateway/hono/routes/sessions.js.map +1 -1
  366. package/dist/src/gateway/hono/routes/tui.d.ts +3 -0
  367. package/dist/src/gateway/hono/routes/tui.js +16 -0
  368. package/dist/src/gateway/hono/routes/tui.js.map +1 -0
  369. package/dist/src/gateway/hono/routes/workflows.js +25 -1
  370. package/dist/src/gateway/hono/routes/workflows.js.map +1 -1
  371. package/dist/src/gateway/hono/sse.d.ts +5 -7
  372. package/dist/src/gateway/hono/sse.js +21 -38
  373. package/dist/src/gateway/hono/sse.js.map +1 -1
  374. package/dist/src/gateway/protocol.js.map +1 -1
  375. package/dist/src/gateway/service/agent-runner.d.ts +2 -4
  376. package/dist/src/gateway/service/agent-runner.js +1 -1
  377. package/dist/src/gateway/service/agent-runner.js.map +1 -1
  378. package/dist/src/gateway/service/marketplace-service.d.ts +4 -3
  379. package/dist/src/gateway/service/marketplace-service.js +7 -4
  380. package/dist/src/gateway/service/marketplace-service.js.map +1 -1
  381. package/dist/src/gateway/service/run-gateway-agent.d.ts +2 -6
  382. package/dist/src/gateway/service/run-gateway-agent.js +63 -36
  383. package/dist/src/gateway/service/run-gateway-agent.js.map +1 -1
  384. package/dist/src/gateway/service/sessions-api.d.ts +19 -0
  385. package/dist/src/gateway/service/sessions-api.js +12 -0
  386. package/dist/src/gateway/service/sessions-api.js.map +1 -1
  387. package/dist/src/gateway/service.d.ts +6 -0
  388. package/dist/src/gateway/service.js +73 -57
  389. package/dist/src/gateway/service.js.map +1 -1
  390. package/dist/src/heartbeat/index.js +1 -1
  391. package/dist/src/mcp/channel-bridge.js +1 -1
  392. package/dist/src/project-trust/trust-store.d.ts +30 -0
  393. package/dist/src/project-trust/trust-store.js +194 -0
  394. package/dist/src/project-trust/trust-store.js.map +1 -0
  395. package/dist/src/providers/index.d.ts +1 -1
  396. package/dist/src/providers/index.js +18 -7
  397. package/dist/src/providers/index.js.map +1 -1
  398. package/dist/src/routing/resolve-route.d.ts +0 -3
  399. package/dist/src/routing/resolve-route.js.map +1 -1
  400. package/dist/src/routing/resolve-tui-session-key.d.ts +2 -0
  401. package/dist/src/routing/resolve-tui-session-key.js +8 -3
  402. package/dist/src/routing/resolve-tui-session-key.js.map +1 -1
  403. package/dist/src/session/client-history.d.ts +32 -0
  404. package/dist/src/session/client-history.js +232 -1
  405. package/dist/src/session/client-history.js.map +1 -1
  406. package/dist/src/session/manager.d.ts +37 -4
  407. package/dist/src/session/manager.js +39 -15
  408. package/dist/src/session/manager.js.map +1 -1
  409. package/dist/src/session/session-context-for-llm.d.ts +93 -1
  410. package/dist/src/session/session-context-for-llm.js +105 -2
  411. package/dist/src/session/session-context-for-llm.js.map +1 -1
  412. package/dist/src/session/store.d.ts +37 -0
  413. package/dist/src/session/store.js +127 -2
  414. package/dist/src/session/store.js.map +1 -1
  415. package/dist/src/session/stored-rows-to-file-entries.js +37 -1
  416. package/dist/src/session/stored-rows-to-file-entries.js.map +1 -1
  417. package/dist/src/session/types.d.ts +14 -1
  418. package/dist/src/session/types.js.map +1 -1
  419. package/dist/src/share/share-thumbnail.js +1 -1
  420. package/dist/src/storage/sqlite/migrations/004_add_session_type_metadata.sql +15 -0
  421. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  422. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  423. package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
  424. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  425. package/dist/src/storage/sqlite/row-mappers.d.ts +14 -1
  426. package/dist/src/storage/sqlite/row-mappers.js +14 -1
  427. package/dist/src/storage/sqlite/row-mappers.js.map +1 -1
  428. package/dist/src/storage/sqlite/schema.js +1 -1
  429. package/dist/src/storage/sqlite/session-metadata.js +1 -0
  430. package/dist/src/storage/sqlite/session-metadata.js.map +1 -1
  431. package/dist/src/storage/sqlite/session-repository.js +52 -25
  432. package/dist/src/storage/sqlite/session-repository.js.map +1 -1
  433. package/dist/src/tui/backends/embedded-backend.d.ts +53 -4
  434. package/dist/src/tui/backends/embedded-backend.js +227 -39
  435. package/dist/src/tui/backends/embedded-backend.js.map +1 -1
  436. package/dist/src/tui/backends/gateway-sse-backend.d.ts +59 -3
  437. package/dist/src/tui/backends/gateway-sse-backend.js +416 -26
  438. package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -1
  439. package/dist/src/tui/chat-history.d.ts +5 -1
  440. package/dist/src/tui/chat-history.js +78 -8
  441. package/dist/src/tui/chat-history.js.map +1 -1
  442. package/dist/src/tui/clipboard-text.d.ts +5 -0
  443. package/dist/src/tui/clipboard-text.js +46 -0
  444. package/dist/src/tui/clipboard-text.js.map +1 -0
  445. package/dist/src/tui/components/assistant-message.d.ts +19 -3
  446. package/dist/src/tui/components/assistant-message.js +115 -9
  447. package/dist/src/tui/components/assistant-message.js.map +1 -1
  448. package/dist/src/tui/components/bash-execution.d.ts +3 -2
  449. package/dist/src/tui/components/bash-execution.js +31 -3
  450. package/dist/src/tui/components/bash-execution.js.map +1 -1
  451. package/dist/src/tui/components/bash-summary.d.ts +23 -0
  452. package/dist/src/tui/components/bash-summary.js +87 -0
  453. package/dist/src/tui/components/bash-summary.js.map +1 -0
  454. package/dist/src/tui/components/branch-message-summary.d.ts +17 -0
  455. package/dist/src/tui/components/branch-message-summary.js +43 -0
  456. package/dist/src/tui/components/branch-message-summary.js.map +1 -0
  457. package/dist/src/tui/components/branch-summary.d.ts +13 -0
  458. package/dist/src/tui/components/branch-summary.js +51 -0
  459. package/dist/src/tui/components/branch-summary.js.map +1 -0
  460. package/dist/src/tui/components/chat-log.d.ts +46 -6
  461. package/dist/src/tui/components/chat-log.js +183 -21
  462. package/dist/src/tui/components/chat-log.js.map +1 -1
  463. package/dist/src/tui/components/compaction-summary.d.ts +13 -0
  464. package/dist/src/tui/components/compaction-summary.js +46 -0
  465. package/dist/src/tui/components/compaction-summary.js.map +1 -0
  466. package/dist/src/tui/components/custom-editor.d.ts +1 -0
  467. package/dist/src/tui/components/custom-editor.js +2 -0
  468. package/dist/src/tui/components/custom-editor.js.map +1 -1
  469. package/dist/src/tui/components/custom-message.d.ts +23 -0
  470. package/dist/src/tui/components/custom-message.js +65 -0
  471. package/dist/src/tui/components/custom-message.js.map +1 -0
  472. package/dist/src/tui/components/extension-dialog.d.ts +42 -0
  473. package/dist/src/tui/components/extension-dialog.js +127 -0
  474. package/dist/src/tui/components/extension-dialog.js.map +1 -0
  475. package/dist/src/tui/components/scoped-models-selector.d.ts +7 -2
  476. package/dist/src/tui/components/scoped-models-selector.js +89 -16
  477. package/dist/src/tui/components/scoped-models-selector.js.map +1 -1
  478. package/dist/src/tui/components/searchable-select-list.d.ts +30 -3
  479. package/dist/src/tui/components/searchable-select-list.js +82 -10
  480. package/dist/src/tui/components/searchable-select-list.js.map +1 -1
  481. package/dist/src/tui/components/session-selector.d.ts +18 -4
  482. package/dist/src/tui/components/session-selector.js +207 -40
  483. package/dist/src/tui/components/session-selector.js.map +1 -1
  484. package/dist/src/tui/components/settings-selector.d.ts +6 -2
  485. package/dist/src/tui/components/settings-selector.js +126 -7
  486. package/dist/src/tui/components/settings-selector.js.map +1 -1
  487. package/dist/src/tui/components/thinking-selector.d.ts +12 -0
  488. package/dist/src/tui/components/thinking-selector.js +48 -0
  489. package/dist/src/tui/components/thinking-selector.js.map +1 -0
  490. package/dist/src/tui/components/tool-execution.d.ts +57 -3
  491. package/dist/src/tui/components/tool-execution.js +378 -28
  492. package/dist/src/tui/components/tool-execution.js.map +1 -1
  493. package/dist/src/tui/components/tui-bottom-bar.d.ts +9 -1
  494. package/dist/src/tui/components/tui-bottom-bar.js +56 -11
  495. package/dist/src/tui/components/tui-bottom-bar.js.map +1 -1
  496. package/dist/src/tui/components/tui-header.d.ts +9 -2
  497. package/dist/src/tui/components/tui-header.js +25 -5
  498. package/dist/src/tui/components/tui-header.js.map +1 -1
  499. package/dist/src/tui/components/user-message.d.ts +4 -2
  500. package/dist/src/tui/components/user-message.js +42 -9
  501. package/dist/src/tui/components/user-message.js.map +1 -1
  502. package/dist/src/tui/components/visual-truncate.d.ts +11 -0
  503. package/dist/src/tui/components/visual-truncate.js +27 -0
  504. package/dist/src/tui/components/visual-truncate.js.map +1 -0
  505. package/dist/src/tui/extension-host/autocomplete.d.ts +43 -0
  506. package/dist/src/tui/extension-host/autocomplete.js +116 -0
  507. package/dist/src/tui/extension-host/autocomplete.js.map +1 -0
  508. package/dist/src/tui/extension-host/host.d.ts +31 -1
  509. package/dist/src/tui/extension-host/host.js +123 -6
  510. package/dist/src/tui/extension-host/host.js.map +1 -1
  511. package/dist/src/tui/extension-host/load-extensions.d.ts +6 -1
  512. package/dist/src/tui/extension-host/load-extensions.js +4 -3
  513. package/dist/src/tui/extension-host/load-extensions.js.map +1 -1
  514. package/dist/src/tui/extension-host/runtime-context.d.ts +21 -0
  515. package/dist/src/tui/extension-host/runtime-context.js +152 -0
  516. package/dist/src/tui/extension-host/runtime-context.js.map +1 -0
  517. package/dist/src/tui/extension-host/runtime.d.ts +52 -4
  518. package/dist/src/tui/extension-host/runtime.js +547 -85
  519. package/dist/src/tui/extension-host/runtime.js.map +1 -1
  520. package/dist/src/tui/extension-host/surface.d.ts +20 -0
  521. package/dist/src/tui/extension-host/surface.js +30 -6
  522. package/dist/src/tui/extension-host/surface.js.map +1 -1
  523. package/dist/src/tui/extension-host/tool-renderers.d.ts +6 -3
  524. package/dist/src/tui/extension-host/tool-renderers.js +43 -5
  525. package/dist/src/tui/extension-host/tool-renderers.js.map +1 -1
  526. package/dist/src/tui/format-tui-hotkeys.d.ts +12 -2
  527. package/dist/src/tui/format-tui-hotkeys.js +22 -5
  528. package/dist/src/tui/format-tui-hotkeys.js.map +1 -1
  529. package/dist/src/tui/tui-agent-events.d.ts +8 -6
  530. package/dist/src/tui/tui-agent-events.js +200 -59
  531. package/dist/src/tui/tui-agent-events.js.map +1 -1
  532. package/dist/src/tui/tui-backend.d.ts +169 -3
  533. package/dist/src/tui/tui-command-formatters.d.ts +76 -0
  534. package/dist/src/tui/tui-command-formatters.js +594 -0
  535. package/dist/src/tui/tui-command-formatters.js.map +1 -0
  536. package/dist/src/tui/tui-commands.d.ts +57 -7
  537. package/dist/src/tui/tui-commands.js +639 -43
  538. package/dist/src/tui/tui-commands.js.map +1 -1
  539. package/dist/src/tui/tui-context-usage.d.ts +1 -1
  540. package/dist/src/tui/tui-context-usage.js +9 -1
  541. package/dist/src/tui/tui-context-usage.js.map +1 -1
  542. package/dist/src/tui/tui-extension-user-message.d.ts +8 -0
  543. package/dist/src/tui/tui-extension-user-message.js +32 -0
  544. package/dist/src/tui/tui-extension-user-message.js.map +1 -0
  545. package/dist/src/tui/tui-follow-up-queue.d.ts +9 -0
  546. package/dist/src/tui/tui-follow-up-queue.js +18 -0
  547. package/dist/src/tui/tui-follow-up-queue.js.map +1 -0
  548. package/dist/src/tui/tui-local-shell.d.ts +11 -1
  549. package/dist/src/tui/tui-local-shell.js +50 -8
  550. package/dist/src/tui/tui-local-shell.js.map +1 -1
  551. package/dist/src/tui/tui-model-picker.d.ts +26 -0
  552. package/dist/src/tui/tui-model-picker.js +152 -0
  553. package/dist/src/tui/tui-model-picker.js.map +1 -0
  554. package/dist/src/tui/tui-oauth-login.d.ts +16 -0
  555. package/dist/src/tui/tui-oauth-login.js +189 -0
  556. package/dist/src/tui/tui-oauth-login.js.map +1 -0
  557. package/dist/src/tui/tui-overlays.d.ts +3 -3
  558. package/dist/src/tui/tui-overlays.js +6 -7
  559. package/dist/src/tui/tui-overlays.js.map +1 -1
  560. package/dist/src/tui/tui-picker-overlay.d.ts +27 -32
  561. package/dist/src/tui/tui-picker-overlay.js +340 -30
  562. package/dist/src/tui/tui-picker-overlay.js.map +1 -1
  563. package/dist/src/tui/tui-picker-services.d.ts +41 -0
  564. package/dist/src/tui/tui-picker-services.js +1 -0
  565. package/dist/src/tui/tui-run-state.d.ts +11 -0
  566. package/dist/src/tui/tui-run-state.js +114 -0
  567. package/dist/src/tui/tui-run-state.js.map +1 -0
  568. package/dist/src/tui/tui-runtime-hints.d.ts +4 -0
  569. package/dist/src/tui/tui-runtime-hints.js +18 -0
  570. package/dist/src/tui/tui-runtime-hints.js.map +1 -0
  571. package/dist/src/tui/tui-scoped-models.d.ts +1 -1
  572. package/dist/src/tui/tui-scoped-models.js +2 -2
  573. package/dist/src/tui/tui-scoped-models.js.map +1 -1
  574. package/dist/src/tui/tui-session-actions.d.ts +5 -3
  575. package/dist/src/tui/tui-session-actions.js +21 -9
  576. package/dist/src/tui/tui-session-actions.js.map +1 -1
  577. package/dist/src/tui/tui-session-format.d.ts +4 -1
  578. package/dist/src/tui/tui-session-format.js +17 -3
  579. package/dist/src/tui/tui-session-format.js.map +1 -1
  580. package/dist/src/tui/tui-session-snapshot.d.ts +82 -0
  581. package/dist/src/tui/tui-session-snapshot.js +184 -0
  582. package/dist/src/tui/tui-session-snapshot.js.map +1 -0
  583. package/dist/src/tui/tui-session-stats.d.ts +3 -0
  584. package/dist/src/tui/tui-session-stats.js +59 -0
  585. package/dist/src/tui/tui-session-stats.js.map +1 -0
  586. package/dist/src/tui/tui-settings.d.ts +21 -0
  587. package/dist/src/tui/tui-settings.js +28 -1
  588. package/dist/src/tui/tui-settings.js.map +1 -1
  589. package/dist/src/tui/tui-skills-autocomplete.js +1 -1
  590. package/dist/src/tui/tui-skills-autocomplete.js.map +1 -1
  591. package/dist/src/tui/tui-startup-resources.d.ts +3 -0
  592. package/dist/src/tui/tui-startup-resources.js +39 -0
  593. package/dist/src/tui/tui-startup-resources.js.map +1 -0
  594. package/dist/src/tui/tui-startup-text.d.ts +10 -0
  595. package/dist/src/tui/tui-startup-text.js +58 -0
  596. package/dist/src/tui/tui-startup-text.js.map +1 -0
  597. package/dist/src/tui/tui-stdio-filter.d.ts +1 -0
  598. package/dist/src/tui/tui-stdio-filter.js +11 -7
  599. package/dist/src/tui/tui-stdio-filter.js.map +1 -1
  600. package/dist/src/tui/tui-submit.d.ts +2 -0
  601. package/dist/src/tui/tui-submit.js +2 -1
  602. package/dist/src/tui/tui-submit.js.map +1 -1
  603. package/dist/src/tui/tui-tool-diff.js +61 -7
  604. package/dist/src/tui/tui-tool-diff.js.map +1 -1
  605. package/dist/src/tui/tui-tool-result.d.ts +17 -0
  606. package/dist/src/tui/tui-tool-result.js +74 -0
  607. package/dist/src/tui/tui-tool-result.js.map +1 -0
  608. package/dist/src/tui/tui-transcript-tree-picker.d.ts +57 -0
  609. package/dist/src/tui/tui-transcript-tree-picker.js +604 -0
  610. package/dist/src/tui/tui-transcript-tree-picker.js.map +1 -0
  611. package/dist/src/tui/tui-transcript-tree.d.ts +7 -0
  612. package/dist/src/tui/tui-transcript-tree.js +316 -0
  613. package/dist/src/tui/tui-transcript-tree.js.map +1 -0
  614. package/dist/src/tui/tui-types.d.ts +25 -34
  615. package/dist/src/tui/tui-types.js +12 -0
  616. package/dist/src/tui/tui-types.js.map +1 -1
  617. package/dist/src/tui/tui.js +1288 -112
  618. package/dist/src/tui/tui.js.map +1 -1
  619. package/dist/src/tui/xopc-tui-keybindings.d.ts +127 -2
  620. package/dist/src/tui/xopc-tui-keybindings.js +127 -2
  621. package/dist/src/tui/xopc-tui-keybindings.js.map +1 -1
  622. package/dist/src/workflows/domain/definition-utils.d.ts +2 -1
  623. package/dist/src/workflows/domain/definition-utils.js +18 -8
  624. package/dist/src/workflows/domain/definition-utils.js.map +1 -1
  625. package/dist/src/workflows/domain/definition.d.ts +25 -0
  626. package/dist/src/workflows/domain/event.d.ts +1 -0
  627. package/dist/src/workflows/domain/result.d.ts +15 -0
  628. package/dist/src/workflows/domain/run.d.ts +2 -0
  629. package/dist/src/workflows/domain/run.js.map +1 -1
  630. package/dist/src/workflows/engine/projector.js +4 -0
  631. package/dist/src/workflows/engine/projector.js.map +1 -1
  632. package/dist/src/workflows/engine/workflow-engine.d.ts +37 -1
  633. package/dist/src/workflows/engine/workflow-engine.js +75 -11
  634. package/dist/src/workflows/engine/workflow-engine.js.map +1 -1
  635. package/dist/src/workflows/index.d.ts +1 -0
  636. package/dist/src/workflows/index.js +4 -1
  637. package/dist/src/workflows/registry/catalog-workflow-definition-registry.d.ts +9 -0
  638. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +40 -0
  639. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +1 -0
  640. package/dist/src/workflows/registry/index.d.ts +2 -0
  641. package/dist/src/workflows/registry/index.js +2 -0
  642. package/dist/src/workflows/registry/workflow-definition-registry.d.ts +15 -0
  643. package/dist/src/workflows/registry/workflow-definition-registry.js +1 -0
  644. package/dist/src/workflows/runtime/index.d.ts +2 -0
  645. package/dist/src/workflows/runtime/index.js +2 -1
  646. package/dist/src/workflows/runtime/script-workflow-runtime.d.ts +5 -0
  647. package/dist/src/workflows/runtime/script-workflow-runtime.js +15 -0
  648. package/dist/src/workflows/runtime/script-workflow-runtime.js.map +1 -0
  649. package/dist/src/workflows/runtime/workflow-runtime-port.d.ts +16 -0
  650. package/dist/src/workflows/runtime/workflow-runtime-port.js +1 -0
  651. package/dist/src/workflows/service/run-view-to-snapshot.js +3 -0
  652. package/dist/src/workflows/service/run-view-to-snapshot.js.map +1 -1
  653. package/dist/src/workflows/service/workflow-run-service.d.ts +3 -0
  654. package/dist/src/workflows/service/workflow-run-service.js +10 -15
  655. package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
  656. package/dist/src/workflows/service/workflow-session-bridge.d.ts +1 -1
  657. package/dist/src/workflows/service/workflow-session-bridge.js +4 -1
  658. package/dist/src/workflows/service/workflow-session-bridge.js.map +1 -1
  659. package/package.json +21 -15
  660. package/skills/creative/frontend-design/SKILL.md +1 -1
  661. package/skills/creative/theme-factory/SKILL.md +1 -1
  662. package/skills/documents/xlsx/SKILL.md +1 -1
  663. package/skills/engineering/diagnose/SKILL.md +2 -2
  664. package/skills/engineering/tdd/SKILL.md +1 -1
  665. package/skills/tools/github/SKILL.md +6 -1
  666. package/skills/tools/webapp-testing/SKILL.md +4 -1
  667. package/dist/extensions/telegram/src/adapters/config-surface.d.ts +0 -2
  668. package/dist/extensions/telegram/src/adapters/config-surface.js +0 -26
  669. package/dist/extensions/telegram/src/adapters/config-surface.js.map +0 -1
  670. package/dist/extensions/weixin/src/__tests__/workflow-progress.test.js +0 -158
  671. package/dist/extensions/weixin/src/__tests__/workflow-progress.test.js.map +0 -1
  672. package/dist/gateway/static/root/assets/agents-BwXkia_W.js +0 -222
  673. package/dist/gateway/static/root/assets/channels-settings-tlOTdaXw.js +0 -1
  674. package/dist/gateway/static/root/assets/channels-status-swr-D4XjqwqC.js +0 -8
  675. package/dist/gateway/static/root/assets/cron-api-DcmfGuj0.js +0 -1
  676. package/dist/gateway/static/root/assets/cron-page-CijJ4G6F.js +0 -1
  677. package/dist/gateway/static/root/assets/extension-settings-page-CyJk_G64.js +0 -1
  678. package/dist/gateway/static/root/assets/field-primitives-C4GpxsDo.js +0 -1
  679. package/dist/gateway/static/root/assets/heartbeat-config-api-CLD0Gpi3.js +0 -1
  680. package/dist/gateway/static/root/assets/index-0HmunJW9.js +0 -4845
  681. package/dist/gateway/static/root/assets/index-Bk75Phrd.css +0 -1
  682. package/dist/gateway/static/root/assets/notes-page-BBnTh0uI.js +0 -1
  683. package/dist/gateway/static/root/assets/sessions-page-B0riYK7j.js +0 -1
  684. package/dist/gateway/static/root/assets/settings-advanced-gate-DiP_WHu_.js +0 -2
  685. package/dist/gateway/static/root/assets/settings-page-1ZPhcCZ9.js +0 -3
  686. package/dist/gateway/static/root/assets/skills-page-BQ1hllKD.js +0 -2
  687. package/dist/gateway/static/root/assets/url-F3_D_6zZ.js +0 -3
  688. package/dist/gateway/static/root/assets/utils-CPr3FBh2.js +0 -1
  689. package/dist/gateway/static/root/assets/voice-api-key-field-BkbDl6dH.js +0 -1
  690. package/dist/gateway/static/root/assets/workflows-page-D059ysoF.js +0 -27
  691. package/dist/src/agent/embedded/map-stream-events.d.ts +0 -9
  692. package/dist/src/agent/embedded/map-stream-events.js +0 -63
  693. package/dist/src/agent/embedded/map-stream-events.js.map +0 -1
  694. package/dist/src/channels/dock.js.map +0 -1
  695. package/dist/src/channels/plugins/bundled.d.ts +0 -11
  696. package/dist/src/channels/plugins/bundled.js +0 -10
  697. package/dist/src/channels/plugins/bundled.js.map +0 -1
  698. package/dist/src/channels/registry.d.ts +0 -25
  699. package/dist/src/channels/registry.js +0 -82
  700. package/dist/src/channels/registry.js.map +0 -1
  701. package/dist/src/config/localized-text.d.ts +0 -6
  702. package/dist/src/config/localized-text.js +0 -42
  703. package/dist/src/config/localized-text.js.map +0 -1
  704. package/dist/src/generated/bundled-channel-plugins.d.ts +0 -10
  705. package/dist/src/generated/bundled-channel-plugins.js +0 -16
  706. package/dist/src/generated/bundled-channel-plugins.js.map +0 -1
  707. package/dist/src/tui/stream-assembler.d.ts +0 -22
  708. package/dist/src/tui/stream-assembler.js +0 -63
  709. package/dist/src/tui/stream-assembler.js.map +0 -1
  710. package/skills/browser/SKILL-zh.md +0 -188
  711. package/skills/business/company-values/SKILL-zh.md +0 -80
  712. package/skills/business/company-values/SKILL.md +0 -80
  713. package/skills/business/find-community/SKILL-zh.md +0 -50
  714. package/skills/business/find-community/SKILL.md +0 -50
  715. package/skills/business/first-customers/SKILL-zh.md +0 -76
  716. package/skills/business/first-customers/SKILL.md +0 -76
  717. package/skills/business/grow-sustainably/SKILL-zh.md +0 -92
  718. package/skills/business/grow-sustainably/SKILL.md +0 -92
  719. package/skills/business/marketing-plan/SKILL-zh.md +0 -100
  720. package/skills/business/marketing-plan/SKILL.md +0 -100
  721. package/skills/business/minimalist-review/SKILL-zh.md +0 -82
  722. package/skills/business/minimalist-review/SKILL.md +0 -82
  723. package/skills/business/mvp/SKILL-zh.md +0 -81
  724. package/skills/business/mvp/SKILL.md +0 -81
  725. package/skills/business/pricing/SKILL-zh.md +0 -64
  726. package/skills/business/pricing/SKILL.md +0 -64
  727. package/skills/business/processize/SKILL-zh.md +0 -91
  728. package/skills/business/processize/SKILL.md +0 -91
  729. package/skills/business/validate-idea/SKILL-zh.md +0 -68
  730. package/skills/business/validate-idea/SKILL.md +0 -68
  731. package/skills/creative/algorithmic-art/LICENSE.txt +0 -202
  732. package/skills/creative/algorithmic-art/SKILL-zh.md +0 -405
  733. package/skills/creative/algorithmic-art/SKILL.md +0 -405
  734. package/skills/creative/algorithmic-art/templates/generator_template.js +0 -223
  735. package/skills/creative/algorithmic-art/templates/viewer.html +0 -599
  736. package/skills/creative/frontend-design/SKILL-zh.md +0 -42
  737. package/skills/creative/theme-factory/SKILL-zh.md +0 -59
  738. package/skills/creative/web-artifacts-builder/LICENSE.txt +0 -202
  739. package/skills/creative/web-artifacts-builder/SKILL-zh.md +0 -74
  740. package/skills/creative/web-artifacts-builder/SKILL.md +0 -74
  741. package/skills/creative/web-artifacts-builder/scripts/bundle-artifact.sh +0 -54
  742. package/skills/creative/web-artifacts-builder/scripts/init-artifact.sh +0 -322
  743. package/skills/creative/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  744. package/skills/documents/doc-coauthoring/SKILL-zh.md +0 -375
  745. package/skills/documents/doc-coauthoring/SKILL.md +0 -375
  746. package/skills/documents/docx/LICENSE.txt +0 -30
  747. package/skills/documents/docx/SKILL-zh.md +0 -590
  748. package/skills/documents/docx/SKILL.md +0 -590
  749. package/skills/documents/docx/scripts/__init__.py +0 -1
  750. package/skills/documents/docx/scripts/accept_changes.py +0 -135
  751. package/skills/documents/docx/scripts/comment.py +0 -318
  752. package/skills/documents/docx/scripts/office/helpers/__init__.py +0 -0
  753. package/skills/documents/docx/scripts/office/helpers/merge_runs.py +0 -199
  754. package/skills/documents/docx/scripts/office/helpers/simplify_redlines.py +0 -197
  755. package/skills/documents/docx/scripts/office/pack.py +0 -159
  756. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  757. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  758. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  759. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  760. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  761. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  762. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  763. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  764. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  765. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  766. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  767. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  768. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  769. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  770. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  771. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  772. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  773. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  774. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  775. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  776. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  777. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  778. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  779. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  780. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  781. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  782. package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  783. package/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  784. package/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  785. package/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  786. package/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  787. package/skills/documents/docx/scripts/office/schemas/mce/mc.xsd +0 -75
  788. package/skills/documents/docx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  789. package/skills/documents/docx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  790. package/skills/documents/docx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  791. package/skills/documents/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  792. package/skills/documents/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  793. package/skills/documents/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  794. package/skills/documents/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  795. package/skills/documents/docx/scripts/office/soffice.py +0 -183
  796. package/skills/documents/docx/scripts/office/unpack.py +0 -132
  797. package/skills/documents/docx/scripts/office/validate.py +0 -111
  798. package/skills/documents/docx/scripts/office/validators/__init__.py +0 -15
  799. package/skills/documents/docx/scripts/office/validators/base.py +0 -847
  800. package/skills/documents/docx/scripts/office/validators/docx.py +0 -446
  801. package/skills/documents/docx/scripts/office/validators/pptx.py +0 -275
  802. package/skills/documents/docx/scripts/office/validators/redlining.py +0 -247
  803. package/skills/documents/docx/scripts/templates/comments.xml +0 -3
  804. package/skills/documents/docx/scripts/templates/commentsExtended.xml +0 -3
  805. package/skills/documents/docx/scripts/templates/commentsExtensible.xml +0 -3
  806. package/skills/documents/docx/scripts/templates/commentsIds.xml +0 -3
  807. package/skills/documents/docx/scripts/templates/people.xml +0 -3
  808. package/skills/documents/pdf/LICENSE.txt +0 -30
  809. package/skills/documents/pdf/SKILL-zh.md +0 -314
  810. package/skills/documents/pdf/SKILL.md +0 -314
  811. package/skills/documents/pdf/forms.md +0 -294
  812. package/skills/documents/pdf/reference.md +0 -612
  813. package/skills/documents/pdf/scripts/check_bounding_boxes.py +0 -65
  814. package/skills/documents/pdf/scripts/check_fillable_fields.py +0 -11
  815. package/skills/documents/pdf/scripts/convert_pdf_to_images.py +0 -33
  816. package/skills/documents/pdf/scripts/create_validation_image.py +0 -37
  817. package/skills/documents/pdf/scripts/extract_form_field_info.py +0 -122
  818. package/skills/documents/pdf/scripts/extract_form_structure.py +0 -115
  819. package/skills/documents/pdf/scripts/fill_fillable_fields.py +0 -98
  820. package/skills/documents/pdf/scripts/fill_pdf_form_with_annotations.py +0 -107
  821. package/skills/documents/pptx/LICENSE.txt +0 -30
  822. package/skills/documents/pptx/SKILL-zh.md +0 -232
  823. package/skills/documents/pptx/SKILL.md +0 -232
  824. package/skills/documents/pptx/editing.md +0 -205
  825. package/skills/documents/pptx/pptxgenjs.md +0 -420
  826. package/skills/documents/pptx/scripts/__init__.py +0 -0
  827. package/skills/documents/pptx/scripts/add_slide.py +0 -195
  828. package/skills/documents/pptx/scripts/clean.py +0 -286
  829. package/skills/documents/pptx/scripts/office/helpers/__init__.py +0 -0
  830. package/skills/documents/pptx/scripts/office/helpers/merge_runs.py +0 -199
  831. package/skills/documents/pptx/scripts/office/helpers/simplify_redlines.py +0 -197
  832. package/skills/documents/pptx/scripts/office/pack.py +0 -159
  833. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  834. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  835. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  836. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  837. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  838. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  839. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  840. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  841. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  842. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  843. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  844. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  845. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  846. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  847. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  848. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  849. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  850. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  851. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  852. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  853. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  854. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  855. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  856. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  857. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  858. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  859. package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  860. package/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  861. package/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  862. package/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  863. package/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  864. package/skills/documents/pptx/scripts/office/schemas/mce/mc.xsd +0 -75
  865. package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  866. package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  867. package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  868. package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  869. package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  870. package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  871. package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  872. package/skills/documents/pptx/scripts/office/soffice.py +0 -183
  873. package/skills/documents/pptx/scripts/office/unpack.py +0 -132
  874. package/skills/documents/pptx/scripts/office/validate.py +0 -111
  875. package/skills/documents/pptx/scripts/office/validators/__init__.py +0 -15
  876. package/skills/documents/pptx/scripts/office/validators/base.py +0 -847
  877. package/skills/documents/pptx/scripts/office/validators/docx.py +0 -446
  878. package/skills/documents/pptx/scripts/office/validators/pptx.py +0 -275
  879. package/skills/documents/pptx/scripts/office/validators/redlining.py +0 -247
  880. package/skills/documents/pptx/scripts/thumbnail.py +0 -289
  881. package/skills/documents/xlsx/SKILL-zh.md +0 -292
  882. package/skills/engineering/diagnose/SKILL-zh.md +0 -117
  883. package/skills/engineering/grill-with-docs/ADR-FORMAT.md +0 -47
  884. package/skills/engineering/grill-with-docs/CONTEXT-FORMAT.md +0 -77
  885. package/skills/engineering/grill-with-docs/SKILL-zh.md +0 -88
  886. package/skills/engineering/grill-with-docs/SKILL.md +0 -88
  887. package/skills/engineering/improve-codebase-architecture/DEEPENING.md +0 -37
  888. package/skills/engineering/improve-codebase-architecture/INTERFACE-DESIGN.md +0 -44
  889. package/skills/engineering/improve-codebase-architecture/LANGUAGE.md +0 -53
  890. package/skills/engineering/improve-codebase-architecture/SKILL-zh.md +0 -71
  891. package/skills/engineering/improve-codebase-architecture/SKILL.md +0 -71
  892. package/skills/engineering/tdd/SKILL-zh.md +0 -109
  893. package/skills/engineering/to-issues/SKILL-zh.md +0 -81
  894. package/skills/engineering/to-issues/SKILL.md +0 -81
  895. package/skills/engineering/to-prd/SKILL-zh.md +0 -76
  896. package/skills/engineering/to-prd/SKILL.md +0 -74
  897. package/skills/engineering/zoom-out/SKILL-zh.md +0 -7
  898. package/skills/engineering/zoom-out/SKILL.md +0 -7
  899. package/skills/tools/find-skills/SKILL-zh.md +0 -440
  900. package/skills/tools/github/SKILL-zh.md +0 -48
  901. package/skills/tools/internal-comms/LICENSE.txt +0 -202
  902. package/skills/tools/internal-comms/SKILL-zh.md +0 -32
  903. package/skills/tools/internal-comms/SKILL.md +0 -32
  904. package/skills/tools/internal-comms/examples/3p-updates.md +0 -47
  905. package/skills/tools/internal-comms/examples/company-newsletter.md +0 -65
  906. package/skills/tools/internal-comms/examples/faq-answers.md +0 -30
  907. package/skills/tools/internal-comms/examples/general-comms.md +0 -16
  908. package/skills/tools/skill-creator/LICENSE.txt +0 -202
  909. package/skills/tools/skill-creator/SKILL-zh.md +0 -483
  910. package/skills/tools/skill-creator/SKILL.md +0 -485
  911. package/skills/tools/skill-creator/agents/analyzer.md +0 -274
  912. package/skills/tools/skill-creator/agents/comparator.md +0 -202
  913. package/skills/tools/skill-creator/agents/grader.md +0 -223
  914. package/skills/tools/skill-creator/assets/eval_review.html +0 -146
  915. package/skills/tools/skill-creator/eval-viewer/generate_review.py +0 -471
  916. package/skills/tools/skill-creator/eval-viewer/viewer.html +0 -1325
  917. package/skills/tools/skill-creator/references/schemas.md +0 -430
  918. package/skills/tools/skill-creator/scripts/__init__.py +0 -0
  919. package/skills/tools/skill-creator/scripts/aggregate_benchmark.py +0 -401
  920. package/skills/tools/skill-creator/scripts/generate_report.py +0 -326
  921. package/skills/tools/skill-creator/scripts/improve_description.py +0 -247
  922. package/skills/tools/skill-creator/scripts/package_skill.py +0 -136
  923. package/skills/tools/skill-creator/scripts/quick_validate.py +0 -103
  924. package/skills/tools/skill-creator/scripts/run_eval.py +0 -310
  925. package/skills/tools/skill-creator/scripts/run_loop.py +0 -328
  926. package/skills/tools/skill-creator/scripts/utils.py +0 -47
  927. package/skills/tools/summarize/SKILL-zh.md +0 -47
  928. package/skills/tools/weather/SKILL-zh.md +0 -46
  929. package/skills/tools/weather/SKILL.md +0 -46
  930. package/skills/tools/webapp-testing/SKILL-zh.md +0 -96
package/README.md CHANGED
@@ -6,9 +6,8 @@
6
6
  <h1 align="center"><a href="https://xopc.ai">xopc</a></h1>
7
7
 
8
8
  <p align="center">
9
- <strong>The AI workstation that grows with you.</strong><br />
10
- A self-hosted, local-first AI for one-person companies terminal, browser, desktop, mobile, and messengers. One brain everywhere.<br />
11
- Bring your own keys. Extend without forking.
9
+ <strong>Goal Loop OS. Long-term AI in one loop.</strong><br />
10
+ Local-first · Multi-surface · Workflows + Multi-agent + Extensible.
12
11
  </p>
13
12
 
14
13
  <p align="center">
@@ -57,6 +56,8 @@ iex (irm https://xopc.ai/install.ps1)
57
56
 
58
57
  The installer detects your OS, installs **Node.js ≥ 22** when needed, and installs **`@xopcai/xopc`**. China mirror: add `--cn` (bash) or `-Cn` (PowerShell), or pass `--registry https://registry.npmmirror.com`.
59
58
 
59
+ > **30-second start:** this is the homepage-recommended path, including Node setup on macOS, Linux, and Windows.
60
+
60
61
  ### Onboard & chat
61
62
 
62
63
  ```bash
@@ -106,6 +107,8 @@ Windows git install: `& ([scriptblock]::Create((irm https://xopc.ai/install.ps1)
106
107
 
107
108
  ## Why xopc
108
109
 
110
+ - 🔁 **Goal loops, not one-shot chats** — keep long-term direction, action, and feedback moving together.
111
+
109
112
  - 🏠 **Your machine** — Data and config under **`~/.xopc/`**. No mandatory cloud or surprise bills.
110
113
  - 🔑 **Bring your own keys** — OpenAI, Anthropic, Google, DeepSeek, Ollama, LM Studio, vLLM, and **20+** providers. Mix cloud and local; switch catalog models in one config line. See **[Models](https://xopcai.github.io/xopc/models)**.
111
114
  - 📱 **One brain, every screen** — Same assistant in terminal, browser, desktop, phone, and IM. No sync layer — one system.
@@ -122,7 +125,7 @@ Windows git install: `& ([scriptblock]::Create((irm https://xopc.ai/install.ps1)
122
125
  | **CLI** | `xopc agent -i` / `xopc agent -m "…"` | Scripts and minimal TTY |
123
126
  | **Web** | `xopc gateway` → open console URL | Chat, settings, logs in the browser |
124
127
  | **Desktop** | [GitHub Releases](#desktop-app) or `pnpm run electron:build` | Native app (macOS, Windows, Linux) |
125
- | **Mobile** | Pair with your gateway ([remote access](https://xopcai.github.io/xopc/remote-access)) | Assistant on the go |
128
+ | **Mobile** | Pair with your gateway ([remote access](https://xopcai.github.io/xopc/remote-access)) | Continue your loop on the move |
126
129
  | **Messengers** | `channels.*` + gateway | Telegram, WeChat, Feishu/Lark |
127
130
 
128
131
  ---
package/README.zh-CN.md CHANGED
@@ -6,9 +6,8 @@
6
6
  <h1 align="center"><a href="https://xopc.ai">xopc</a></h1>
7
7
 
8
8
  <p align="center">
9
- <strong>与你一起成长的 AI 工作站。</strong><br />
10
- 可自托管的本地优先 AI——为一人公司准备;终端、浏览器、桌面、手机与 IM,一处配置,同一个大脑。<br />
11
- 自带钥匙,无需 fork 即可扩展。
9
+ <strong>Goal Loop OS,目标持续循环。</strong><br />
10
+ 本地优先 · 多端联动 · 工作流 + 多 Agent + 可扩展。
12
11
  </p>
13
12
 
14
13
  <p align="center">
@@ -57,6 +56,8 @@ iex (irm https://xopc.ai/install.ps1)
57
56
 
58
57
  安装脚本会自动识别系统、在需要时安装 **Node.js ≥ 22**,并安装 **`@xopcai/xopc`**。国内镜像:bash 加 `--cn`,PowerShell 加 `-Cn`,或指定 `--registry https://registry.npmmirror.com`。
59
58
 
59
+ > **30 秒启动:** 这是官网推荐路径,覆盖 macOS、Linux 与 Windows 的环境初始化。
60
+
60
61
  ### 配置并开聊
61
62
 
62
63
  ```bash
@@ -106,6 +107,8 @@ Windows 源码安装:`& ([scriptblock]::Create((irm https://xopc.ai/install.ps
106
107
 
107
108
  ## 为什么选 xopc
108
109
 
110
+ - 🔁 **循环驱动,而非一次性对话** — 把目标、行动与反馈持续连起来,目标不会因为对话断点就停住。
111
+
109
112
  - 🏠 **你的机器** — 配置与数据在 **`~/.xopc/`**,无强制云端、无意外账单。
110
113
  - 🔑 **自带钥匙** — OpenAI、Anthropic、Google、DeepSeek、Ollama、LM Studio、vLLM 等 **20+** 厂商;云端本地可混用,一行配置切换目录模型。详见 **[模型](https://xopcai.github.io/xopc/zh/models)**。
111
114
  - 📱 **一个大脑,处处可用** — 终端、浏览器、桌面、手机、IM 同一套助手,无需另做同步。
@@ -122,7 +125,7 @@ Windows 源码安装:`& ([scriptblock]::Create((irm https://xopc.ai/install.ps
122
125
  | **CLI** | `xopc agent -i` / `xopc agent -m "…"` | 脚本、最小终端环境 |
123
126
  | **网页** | `xopc gateway` → 打开控制台地址 | 聊天、设置、日志 |
124
127
  | **桌面** | [GitHub Releases](#desktop-app) 或 `pnpm run electron:build` | 原生应用(macOS / Windows / Linux) |
125
- | **手机** | 与网关配对([远程访问](https://xopcai.github.io/xopc/zh/remote-access)) | 外出也能用 |
128
+ | **手机** | 与网关配对([远程访问](https://xopcai.github.io/xopc/zh/remote-access)) | 在路上也能继续推进循环 |
126
129
  | **即时通讯** | 配置 `channels.*` 并启动网关 | Telegram、微信、飞书/Lark |
127
130
 
128
131
  ---
@@ -1,4 +1,4 @@
1
- import { createRequire } from "node:module";
1
+ import "node:module";
2
2
  //#region \0rolldown/runtime.js
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -25,6 +25,5 @@ var __copyProps = (to, from, except, desc) => {
25
25
  return to;
26
26
  };
27
27
  var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
- var __require = /* @__PURE__ */ createRequire(import.meta.url);
29
28
  //#endregion
30
- export { __esmMin, __exportAll, __require, __toCommonJS };
29
+ export { __esmMin, __exportAll, __toCommonJS };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "xopc Browser Bridge",
4
- "version": "0.0.103",
4
+ "version": "0.0.104",
5
5
  "description": "Browser automation bridge for xopc — executes commands in Chrome via the local xopc daemon.",
6
6
  "permissions": [
7
7
  "debugger",
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Feishu CLI Login adapter — implements `ChannelCliLoginAdapter`.
3
3
  *
4
- * Provides `xopc channels login --channel feishu` interactive credential setup.
4
+ * Provides interactive credential setup for Feishu channel onboarding.
5
5
  * Supports QR scan-to-create and manual credential input.
6
6
  */
7
7
  import type { ChannelCliLoginAdapter } from '@xopcai/xopc/channels/plugins/types.adapters.js';
@@ -6,7 +6,7 @@ import { confirm, input, select } from "@inquirer/prompts";
6
6
  /**
7
7
  * Feishu CLI Login adapter — implements `ChannelCliLoginAdapter`.
8
8
  *
9
- * Provides `xopc channels login --channel feishu` interactive credential setup.
9
+ * Provides interactive credential setup for Feishu channel onboarding.
10
10
  * Supports QR scan-to-create and manual credential input.
11
11
  */
12
12
  function loadConfigFromPath(configPath) {
@@ -1 +1 @@
1
- {"version":3,"file":"cli-login.js","names":[],"sources":["../../../../../extensions/feishu/src/adapters/cli-login.ts"],"sourcesContent":["/**\n * Feishu CLI Login adapter — implements `ChannelCliLoginAdapter`.\n *\n * Provides `xopc channels login --channel feishu` interactive credential setup.\n * Supports QR scan-to-create and manual credential input.\n */\n\nimport fs from 'node:fs';\n\nimport { confirm, input, select } from '@inquirer/prompts';\n\nimport type { Config } from '@xopcai/xopc/config/schema.js';\nimport { mergeDistinctSenderIds } from '@xopcai/xopc/channels/pairing/index.js';\nimport type { ChannelCliLoginAdapter } from '@xopcai/xopc/channels/plugins/types.adapters.js';\n\nimport {\n initAppRegistration,\n beginAppRegistration,\n pollAppRegistration,\n printQrCode,\n type FeishuDomain,\n} from '../auth/app-registration.js';\n\ntype DmPolicy = 'pairing' | 'allowlist' | 'open' | 'disabled';\ntype GroupPolicy = 'open' | 'disabled' | 'allowlist';\n\nfunction loadConfigFromPath(configPath: string): Config {\n try {\n const raw = fs.readFileSync(configPath, 'utf8');\n return JSON.parse(raw) as Config;\n } catch {\n return {} as Config;\n }\n}\n\nfunction writeConfigToPath(configPath: string, config: Config): void {\n fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\\n', 'utf8');\n}\n\nfunction isFeishuConfigured(config: Config): boolean {\n const feishu = config.channels?.feishu as Record<string, unknown> | undefined;\n if (!feishu) return false;\n const appId = typeof feishu.appId === 'string' ? feishu.appId.trim() : '';\n const appSecret = typeof feishu.appSecret === 'string' ? feishu.appSecret.trim() : '';\n return Boolean(appId && appSecret);\n}\n\nfunction parseAllowlistRaw(raw: string): Array<string | number> {\n if (!raw.trim()) return [];\n return raw\n .split(/[,\\s\\n]+/)\n .map((entry) => entry.trim())\n .filter(Boolean)\n .map((entry) => {\n const asNumber = parseInt(entry, 10);\n return !isNaN(asNumber) && String(asNumber) === entry ? asNumber : entry;\n });\n}\n\nasync function acquireCredentials(params: {\n existingAppId: string;\n timeoutMs: number;\n}): Promise<{\n appId: string;\n appSecret: string;\n domain: FeishuDomain;\n ownerOpenId?: string;\n}> {\n const domain = await select<FeishuDomain>({\n message: 'Feishu/Lark domain:',\n choices: [\n { value: 'feishu', name: 'feishu (open.feishu.cn)', description: 'China / Feishu' },\n { value: 'lark', name: 'lark (open.larksuite.com)', description: 'International / Lark' },\n ],\n default: 'feishu',\n });\n\n const canScan = await initAppRegistration(domain);\n const useScan = canScan\n ? await confirm({\n message: 'Create an app by scanning a QR code (recommended)?',\n default: true,\n })\n : false;\n\n if (useScan) {\n console.log('\\nScan this QR code with Feishu/Lark to create an app:\\n');\n const begin = await beginAppRegistration(domain);\n await printQrCode(begin.qrUrl);\n console.log('\\nWaiting for confirmation...\\n');\n\n const expireInSec = Math.min(begin.expireInSec, Math.floor(params.timeoutMs / 1000));\n const outcome = await pollAppRegistration({\n deviceCode: begin.deviceCode,\n intervalSec: begin.intervalSec,\n expireInSec,\n initialDomain: domain,\n });\n\n if (outcome.status === 'success') {\n console.log(`✅ App created. Domain: \"${outcome.result.domain}\".\\n`);\n return {\n appId: outcome.result.appId,\n appSecret: outcome.result.appSecret,\n domain: outcome.result.domain,\n ownerOpenId: outcome.result.openId,\n };\n }\n\n const reason =\n outcome.status === 'access_denied'\n ? 'User denied authorization.'\n : outcome.status === 'expired'\n ? 'Session expired.'\n : outcome.status === 'timeout'\n ? 'Scan timed out.'\n : `Error: ${'message' in outcome ? outcome.message : 'unknown'}`;\n console.log(`${reason} Falling back to manual input.\\n`);\n }\n\n console.log('📝 Enter Feishu app credentials (from Feishu Open Platform developer console):\\n');\n\n const appId = (\n await input({\n message: 'App ID (cli_xxx):',\n default: params.existingAppId || undefined,\n validate: (value) => value.trim().length > 0 || 'App ID cannot be empty',\n })\n ).trim();\n\n const appSecret = (\n await input({\n message: 'App Secret:',\n validate: (value) => value.trim().length > 0 || 'App Secret cannot be empty',\n })\n ).trim();\n\n return { appId, appSecret, domain };\n}\n\nasync function promptSecurityPolicies(ownerOpenId?: string): Promise<{\n dmPolicy: DmPolicy;\n groupPolicy: GroupPolicy;\n allowFrom: Array<string | number>;\n groupAllowFrom: Array<string | number>;\n requireMention: boolean;\n}> {\n const dmPolicy = await select<DmPolicy>({\n message: 'DM (private chat) policy:',\n choices: [\n { value: 'open', name: 'open [default]', description: 'Anyone can DM the bot after setup' },\n {\n value: 'pairing',\n name: 'pairing',\n description: 'New users need `xopc channels pairing approve`',\n },\n { value: 'allowlist', name: 'allowlist', description: 'Only allowlisted users' },\n { value: 'disabled', name: 'disabled', description: 'Disable DMs' },\n ],\n default: 'open',\n });\n\n let allowFrom: Array<string | number> = [];\n if (dmPolicy === 'allowlist') {\n const defaultAllow = ownerOpenId ?? '';\n const raw = await input({\n message: 'Allowed user open_id / union_id (comma-separated):',\n default: defaultAllow,\n });\n allowFrom = parseAllowlistRaw(raw || defaultAllow);\n }\n\n const groupPolicy = await select<GroupPolicy>({\n message: 'Group chat policy:',\n choices: [\n { value: 'allowlist', name: 'allowlist [recommended]', description: 'Only allowlisted groups' },\n { value: 'open', name: 'open', description: 'All groups allowed' },\n { value: 'disabled', name: 'disabled', description: 'Disable groups' },\n ],\n default: 'allowlist',\n });\n\n let groupAllowFrom: Array<string | number> = [];\n if (groupPolicy === 'allowlist') {\n const raw = await input({\n message: 'Allowed group chat IDs (comma-separated, e.g. oc_xxx):',\n default: '',\n });\n groupAllowFrom = parseAllowlistRaw(raw);\n }\n\n const requireMention = await confirm({\n message: 'Require @mention in groups?',\n default: true,\n });\n\n const extras =\n ownerOpenId?.trim() && (dmPolicy === 'pairing' || dmPolicy === 'allowlist') ? [ownerOpenId.trim()] : [];\n const mergedAllowFrom = mergeDistinctSenderIds(allowFrom, extras);\n\n return { dmPolicy, groupPolicy, allowFrom: mergedAllowFrom, groupAllowFrom, requireMention };\n}\n\nexport const feishuCliLoginAdapter: ChannelCliLoginAdapter = {\n async runLogin(params) {\n const { configPath, verbose, timeoutMs = 480_000, accountId, writeConfig = true } = params;\n\n if (verbose) {\n console.log(`[feishu-login] configPath=${configPath}, timeoutMs=${timeoutMs}`);\n }\n\n const config = loadConfigFromPath(configPath);\n const existingFeishu = config.channels?.feishu as Record<string, unknown> | undefined;\n const existingAppId = typeof existingFeishu?.appId === 'string' ? existingFeishu.appId : '';\n const alreadyConfigured = isFeishuConfigured(config);\n\n console.log(`\\n${'='.repeat(50)}`);\n console.log('📱 Feishu / Lark login');\n console.log(`${'='.repeat(50)}\\n`);\n\n if (alreadyConfigured) {\n const reconfigure = await confirm({\n message: `Feishu is already configured (App ID: ${existingAppId}). Reconfigure?`,\n default: false,\n });\n if (!reconfigure) {\n console.log('Keeping existing configuration.\\n');\n return { ok: true, message: 'Existing configuration kept.', accountId };\n }\n }\n\n const credentials = await acquireCredentials({\n existingAppId,\n timeoutMs,\n });\n\n const policies = await promptSecurityPolicies(credentials.ownerOpenId);\n\n const nextFeishu: Record<string, unknown> = {\n ...(existingFeishu ?? {}),\n enabled: true,\n appId: credentials.appId,\n appSecret: credentials.appSecret,\n domain: credentials.domain,\n connectionMode: (existingFeishu?.connectionMode as string) || 'websocket',\n dmPolicy: policies.dmPolicy,\n groupPolicy: policies.groupPolicy,\n allowFrom: policies.allowFrom,\n groupAllowFrom: policies.groupAllowFrom,\n requireMention: policies.requireMention,\n };\n\n const nextConfig: Config = {\n ...config,\n channels: {\n ...config.channels,\n feishu: nextFeishu,\n },\n };\n\n if (writeConfig) {\n writeConfigToPath(configPath, nextConfig);\n console.log(`✅ Feishu configuration saved to ${configPath}\\n`);\n } else {\n console.log('✅ Feishu credentials acquired (--credentials-only: config not updated).\\n');\n }\n\n return {\n ok: true,\n message: `Feishu login complete (App ID: ${credentials.appId}).`,\n accountId: accountId ?? undefined,\n };\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"cli-login.js","names":[],"sources":["../../../../../extensions/feishu/src/adapters/cli-login.ts"],"sourcesContent":["/**\n * Feishu CLI Login adapter — implements `ChannelCliLoginAdapter`.\n *\n * Provides interactive credential setup for Feishu channel onboarding.\n * Supports QR scan-to-create and manual credential input.\n */\n\nimport fs from 'node:fs';\n\nimport { confirm, input, select } from '@inquirer/prompts';\n\nimport type { Config } from '@xopcai/xopc/config/schema.js';\nimport { mergeDistinctSenderIds } from '@xopcai/xopc/channels/pairing/index.js';\nimport type { ChannelCliLoginAdapter } from '@xopcai/xopc/channels/plugins/types.adapters.js';\n\nimport {\n initAppRegistration,\n beginAppRegistration,\n pollAppRegistration,\n printQrCode,\n type FeishuDomain,\n} from '../auth/app-registration.js';\n\ntype DmPolicy = 'pairing' | 'allowlist' | 'open' | 'disabled';\ntype GroupPolicy = 'open' | 'disabled' | 'allowlist';\n\nfunction loadConfigFromPath(configPath: string): Config {\n try {\n const raw = fs.readFileSync(configPath, 'utf8');\n return JSON.parse(raw) as Config;\n } catch {\n return {} as Config;\n }\n}\n\nfunction writeConfigToPath(configPath: string, config: Config): void {\n fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\\n', 'utf8');\n}\n\nfunction isFeishuConfigured(config: Config): boolean {\n const feishu = config.channels?.feishu as Record<string, unknown> | undefined;\n if (!feishu) return false;\n const appId = typeof feishu.appId === 'string' ? feishu.appId.trim() : '';\n const appSecret = typeof feishu.appSecret === 'string' ? feishu.appSecret.trim() : '';\n return Boolean(appId && appSecret);\n}\n\nfunction parseAllowlistRaw(raw: string): Array<string | number> {\n if (!raw.trim()) return [];\n return raw\n .split(/[,\\s\\n]+/)\n .map((entry) => entry.trim())\n .filter(Boolean)\n .map((entry) => {\n const asNumber = parseInt(entry, 10);\n return !isNaN(asNumber) && String(asNumber) === entry ? asNumber : entry;\n });\n}\n\nasync function acquireCredentials(params: {\n existingAppId: string;\n timeoutMs: number;\n}): Promise<{\n appId: string;\n appSecret: string;\n domain: FeishuDomain;\n ownerOpenId?: string;\n}> {\n const domain = await select<FeishuDomain>({\n message: 'Feishu/Lark domain:',\n choices: [\n { value: 'feishu', name: 'feishu (open.feishu.cn)', description: 'China / Feishu' },\n { value: 'lark', name: 'lark (open.larksuite.com)', description: 'International / Lark' },\n ],\n default: 'feishu',\n });\n\n const canScan = await initAppRegistration(domain);\n const useScan = canScan\n ? await confirm({\n message: 'Create an app by scanning a QR code (recommended)?',\n default: true,\n })\n : false;\n\n if (useScan) {\n console.log('\\nScan this QR code with Feishu/Lark to create an app:\\n');\n const begin = await beginAppRegistration(domain);\n await printQrCode(begin.qrUrl);\n console.log('\\nWaiting for confirmation...\\n');\n\n const expireInSec = Math.min(begin.expireInSec, Math.floor(params.timeoutMs / 1000));\n const outcome = await pollAppRegistration({\n deviceCode: begin.deviceCode,\n intervalSec: begin.intervalSec,\n expireInSec,\n initialDomain: domain,\n });\n\n if (outcome.status === 'success') {\n console.log(`✅ App created. Domain: \"${outcome.result.domain}\".\\n`);\n return {\n appId: outcome.result.appId,\n appSecret: outcome.result.appSecret,\n domain: outcome.result.domain,\n ownerOpenId: outcome.result.openId,\n };\n }\n\n const reason =\n outcome.status === 'access_denied'\n ? 'User denied authorization.'\n : outcome.status === 'expired'\n ? 'Session expired.'\n : outcome.status === 'timeout'\n ? 'Scan timed out.'\n : `Error: ${'message' in outcome ? outcome.message : 'unknown'}`;\n console.log(`${reason} Falling back to manual input.\\n`);\n }\n\n console.log('📝 Enter Feishu app credentials (from Feishu Open Platform developer console):\\n');\n\n const appId = (\n await input({\n message: 'App ID (cli_xxx):',\n default: params.existingAppId || undefined,\n validate: (value) => value.trim().length > 0 || 'App ID cannot be empty',\n })\n ).trim();\n\n const appSecret = (\n await input({\n message: 'App Secret:',\n validate: (value) => value.trim().length > 0 || 'App Secret cannot be empty',\n })\n ).trim();\n\n return { appId, appSecret, domain };\n}\n\nasync function promptSecurityPolicies(ownerOpenId?: string): Promise<{\n dmPolicy: DmPolicy;\n groupPolicy: GroupPolicy;\n allowFrom: Array<string | number>;\n groupAllowFrom: Array<string | number>;\n requireMention: boolean;\n}> {\n const dmPolicy = await select<DmPolicy>({\n message: 'DM (private chat) policy:',\n choices: [\n { value: 'open', name: 'open [default]', description: 'Anyone can DM the bot after setup' },\n {\n value: 'pairing',\n name: 'pairing',\n description: 'New users need `xopc channels pairing approve`',\n },\n { value: 'allowlist', name: 'allowlist', description: 'Only allowlisted users' },\n { value: 'disabled', name: 'disabled', description: 'Disable DMs' },\n ],\n default: 'open',\n });\n\n let allowFrom: Array<string | number> = [];\n if (dmPolicy === 'allowlist') {\n const defaultAllow = ownerOpenId ?? '';\n const raw = await input({\n message: 'Allowed user open_id / union_id (comma-separated):',\n default: defaultAllow,\n });\n allowFrom = parseAllowlistRaw(raw || defaultAllow);\n }\n\n const groupPolicy = await select<GroupPolicy>({\n message: 'Group chat policy:',\n choices: [\n { value: 'allowlist', name: 'allowlist [recommended]', description: 'Only allowlisted groups' },\n { value: 'open', name: 'open', description: 'All groups allowed' },\n { value: 'disabled', name: 'disabled', description: 'Disable groups' },\n ],\n default: 'allowlist',\n });\n\n let groupAllowFrom: Array<string | number> = [];\n if (groupPolicy === 'allowlist') {\n const raw = await input({\n message: 'Allowed group chat IDs (comma-separated, e.g. oc_xxx):',\n default: '',\n });\n groupAllowFrom = parseAllowlistRaw(raw);\n }\n\n const requireMention = await confirm({\n message: 'Require @mention in groups?',\n default: true,\n });\n\n const extras =\n ownerOpenId?.trim() && (dmPolicy === 'pairing' || dmPolicy === 'allowlist') ? [ownerOpenId.trim()] : [];\n const mergedAllowFrom = mergeDistinctSenderIds(allowFrom, extras);\n\n return { dmPolicy, groupPolicy, allowFrom: mergedAllowFrom, groupAllowFrom, requireMention };\n}\n\nexport const feishuCliLoginAdapter: ChannelCliLoginAdapter = {\n async runLogin(params) {\n const { configPath, verbose, timeoutMs = 480_000, accountId, writeConfig = true } = params;\n\n if (verbose) {\n console.log(`[feishu-login] configPath=${configPath}, timeoutMs=${timeoutMs}`);\n }\n\n const config = loadConfigFromPath(configPath);\n const existingFeishu = config.channels?.feishu as Record<string, unknown> | undefined;\n const existingAppId = typeof existingFeishu?.appId === 'string' ? existingFeishu.appId : '';\n const alreadyConfigured = isFeishuConfigured(config);\n\n console.log(`\\n${'='.repeat(50)}`);\n console.log('📱 Feishu / Lark login');\n console.log(`${'='.repeat(50)}\\n`);\n\n if (alreadyConfigured) {\n const reconfigure = await confirm({\n message: `Feishu is already configured (App ID: ${existingAppId}). Reconfigure?`,\n default: false,\n });\n if (!reconfigure) {\n console.log('Keeping existing configuration.\\n');\n return { ok: true, message: 'Existing configuration kept.', accountId };\n }\n }\n\n const credentials = await acquireCredentials({\n existingAppId,\n timeoutMs,\n });\n\n const policies = await promptSecurityPolicies(credentials.ownerOpenId);\n\n const nextFeishu: Record<string, unknown> = {\n ...(existingFeishu ?? {}),\n enabled: true,\n appId: credentials.appId,\n appSecret: credentials.appSecret,\n domain: credentials.domain,\n connectionMode: (existingFeishu?.connectionMode as string) || 'websocket',\n dmPolicy: policies.dmPolicy,\n groupPolicy: policies.groupPolicy,\n allowFrom: policies.allowFrom,\n groupAllowFrom: policies.groupAllowFrom,\n requireMention: policies.requireMention,\n };\n\n const nextConfig: Config = {\n ...config,\n channels: {\n ...config.channels,\n feishu: nextFeishu,\n },\n };\n\n if (writeConfig) {\n writeConfigToPath(configPath, nextConfig);\n console.log(`✅ Feishu configuration saved to ${configPath}\\n`);\n } else {\n console.log('✅ Feishu credentials acquired (--credentials-only: config not updated).\\n');\n }\n\n return {\n ok: true,\n message: `Feishu login complete (App ID: ${credentials.appId}).`,\n accountId: accountId ?? undefined,\n };\n },\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ChannelRuntimeActionAdapter } from '@xopcai/xopc/channels/plugins/types.adapters.js';
2
+ export declare const feishuGatewaySetupActions: ChannelRuntimeActionAdapter;
@@ -0,0 +1,225 @@
1
+ import { init_loader, loadConfig, saveConfig } from "../../../../src/config/loader.js";
2
+ import { mergeDistinctSenderIds } from "../../../../src/channels/pairing/preseed-allow-from.js";
3
+ import { beginAppRegistration, initAppRegistration, pollAppRegistration } from "../auth/app-registration.js";
4
+ //#region extensions/feishu/src/adapters/gateway-setup.ts
5
+ init_loader();
6
+ const activeSessions = /* @__PURE__ */ new Map();
7
+ const completedSessions = /* @__PURE__ */ new Map();
8
+ function rememberCompleted(sessionKey, state) {
9
+ activeSessions.delete(sessionKey);
10
+ completedSessions.set(sessionKey, state);
11
+ setTimeout(() => completedSessions.delete(sessionKey), 10 * 6e4);
12
+ }
13
+ function readInput(input) {
14
+ return input && typeof input === "object" && !Array.isArray(input) ? input : {};
15
+ }
16
+ function normalizeDomain(input) {
17
+ return input === "lark" ? "lark" : "feishu";
18
+ }
19
+ function buildFeishuConfig(config, result) {
20
+ const existing = config.channels?.feishu;
21
+ const ownerOpenId = result.openId?.trim();
22
+ const previousAllowFrom = Array.isArray(existing?.allowFrom) ? existing.allowFrom : [];
23
+ const allowFrom = ownerOpenId ? mergeDistinctSenderIds(previousAllowFrom, [ownerOpenId]) : previousAllowFrom;
24
+ return {
25
+ ...config,
26
+ channels: {
27
+ ...config.channels,
28
+ feishu: {
29
+ ...existing ?? {},
30
+ enabled: true,
31
+ appId: result.appId,
32
+ appSecret: result.appSecret,
33
+ domain: result.domain,
34
+ connectionMode: "websocket",
35
+ dmPolicy: existing?.dmPolicy ?? "open",
36
+ groupPolicy: existing?.groupPolicy ?? "allowlist",
37
+ allowFrom,
38
+ groupAllowFrom: Array.isArray(existing?.groupAllowFrom) ? existing.groupAllowFrom : [],
39
+ requireMention: typeof existing?.requireMention === "boolean" ? existing.requireMention : true,
40
+ renderMode: existing?.renderMode ?? "auto",
41
+ streaming: typeof existing?.streaming === "boolean" ? existing.streaming : false,
42
+ reactionNotifications: existing?.reactionNotifications ?? "own",
43
+ actions: {
44
+ ...existing?.actions,
45
+ reactions: true
46
+ },
47
+ tools: {
48
+ doc: true,
49
+ wiki: true,
50
+ drive: true,
51
+ perm: false,
52
+ bitable: true,
53
+ scopes: true,
54
+ ...existing?.tools
55
+ },
56
+ historyLimit: typeof existing?.historyLimit === "number" ? existing.historyLimit : 50,
57
+ textChunkLimit: typeof existing?.textChunkLimit === "number" ? existing.textChunkLimit : 4e3
58
+ }
59
+ }
60
+ };
61
+ }
62
+ function isZh(locale) {
63
+ return locale?.toLowerCase().startsWith("zh") === true;
64
+ }
65
+ function statusPayload(state, active, locale) {
66
+ const zh = isZh(locale);
67
+ if (!state && active) return {
68
+ type: "poll",
69
+ phase: "pending",
70
+ ok: void 0,
71
+ qrPayload: active.qrPayload,
72
+ message: zh ? "等待飞书 / Lark 确认…" : "Waiting for Feishu/Lark confirmation..."
73
+ };
74
+ if (!state) return {
75
+ type: "poll",
76
+ phase: "unknown",
77
+ ok: false,
78
+ message: zh ? "没有活动的飞书配置会话。请重新开始,二维码可能已过期。" : "No active Feishu setup session. Start again or the QR may have expired."
79
+ };
80
+ if (state.ok === false) return {
81
+ type: "poll",
82
+ phase: "done",
83
+ ok: false,
84
+ message: state.message
85
+ };
86
+ return {
87
+ type: "poll",
88
+ phase: "done",
89
+ ok: true,
90
+ accountId: state.accountId,
91
+ appId: state.appId,
92
+ domain: state.domain,
93
+ message: zh ? "飞书配置完成。" : "Feishu setup complete.",
94
+ configChanged: true
95
+ };
96
+ }
97
+ const feishuGatewaySetupActions = { async runAction({ actionId, input, locale }) {
98
+ const zh = isZh(locale);
99
+ if (actionId === "setup.start") {
100
+ const domain = normalizeDomain(readInput(input).domain);
101
+ if (!await initAppRegistration(domain)) return {
102
+ ok: true,
103
+ payload: {
104
+ type: "form",
105
+ submitAction: "setup.manual",
106
+ message: zh ? "飞书扫码创建不可用。请在高级配置中手动填写应用凭据。" : "Feishu scan-to-create is unavailable. Enter app credentials manually in Advanced configuration.",
107
+ schema: {
108
+ type: "object",
109
+ properties: {
110
+ appId: {
111
+ type: "string",
112
+ title: "App ID"
113
+ },
114
+ appSecret: {
115
+ type: "string",
116
+ title: "App Secret",
117
+ format: "password"
118
+ },
119
+ domain: {
120
+ type: "string",
121
+ enum: ["feishu", "lark"],
122
+ default: domain,
123
+ title: zh ? "域名" : "Domain"
124
+ }
125
+ },
126
+ required: ["appId", "appSecret"]
127
+ },
128
+ values: { domain }
129
+ }
130
+ };
131
+ const begin = await beginAppRegistration(domain);
132
+ const sessionKey = begin.deviceCode;
133
+ activeSessions.set(sessionKey, {
134
+ startedAt: Date.now(),
135
+ qrPayload: begin.qrUrl
136
+ });
137
+ (async () => {
138
+ const outcome = await pollAppRegistration({
139
+ deviceCode: begin.deviceCode,
140
+ intervalSec: begin.intervalSec,
141
+ expireInSec: begin.expireInSec,
142
+ initialDomain: domain
143
+ });
144
+ if (outcome.status !== "success") {
145
+ rememberCompleted(sessionKey, {
146
+ phase: "done",
147
+ ok: false,
148
+ message: outcome.status === "access_denied" ? zh ? "用户拒绝授权。" : "User denied authorization." : outcome.status === "expired" ? zh ? "配置会话已过期。" : "Setup session expired." : outcome.status === "timeout" ? zh ? "配置超时。" : "Setup timed out." : outcome.message ?? (zh ? "飞书配置失败。" : "Feishu setup failed.")
149
+ });
150
+ return;
151
+ }
152
+ try {
153
+ await saveConfig(buildFeishuConfig(loadConfig(), outcome.result));
154
+ rememberCompleted(sessionKey, {
155
+ phase: "done",
156
+ ok: true,
157
+ accountId: "default",
158
+ appId: outcome.result.appId,
159
+ domain: outcome.result.domain
160
+ });
161
+ } catch (err) {
162
+ rememberCompleted(sessionKey, {
163
+ phase: "done",
164
+ ok: false,
165
+ message: `${zh ? "配置保存失败" : "Config save failed"}: ${String(err)}`
166
+ });
167
+ }
168
+ })();
169
+ return {
170
+ ok: true,
171
+ payload: {
172
+ type: "qr",
173
+ sessionKey,
174
+ qrPayload: begin.qrUrl,
175
+ statusAction: "setup.status",
176
+ pollIntervalMs: Math.max(1e3, begin.intervalSec * 1e3),
177
+ expiresInSec: begin.expireInSec,
178
+ message: zh ? "请使用飞书 / Lark 扫码创建并授权应用。" : "Scan with Feishu/Lark to create and authorize an app."
179
+ }
180
+ };
181
+ }
182
+ if (actionId === "setup.status") {
183
+ const raw = readInput(input);
184
+ const sessionKey = typeof raw.sessionKey === "string" ? raw.sessionKey : "";
185
+ if (!sessionKey) return {
186
+ ok: false,
187
+ message: zh ? "缺少配置 sessionKey" : "Missing setup sessionKey"
188
+ };
189
+ return {
190
+ ok: true,
191
+ payload: statusPayload(completedSessions.get(sessionKey), activeSessions.get(sessionKey), locale)
192
+ };
193
+ }
194
+ if (actionId === "setup.manual") {
195
+ const raw = readInput(input);
196
+ const appId = typeof raw.appId === "string" ? raw.appId.trim() : "";
197
+ const appSecret = typeof raw.appSecret === "string" ? raw.appSecret.trim() : "";
198
+ const domain = normalizeDomain(raw.domain);
199
+ if (!appId || !appSecret) return {
200
+ ok: false,
201
+ message: zh ? "App ID 和 App Secret 为必填项。" : "App ID and App Secret are required."
202
+ };
203
+ await saveConfig(buildFeishuConfig(loadConfig(), {
204
+ appId,
205
+ appSecret,
206
+ domain
207
+ }));
208
+ return {
209
+ ok: true,
210
+ payload: {
211
+ type: "ok",
212
+ message: zh ? "飞书配置已保存。" : "Feishu configuration saved.",
213
+ configChanged: true
214
+ }
215
+ };
216
+ }
217
+ return {
218
+ ok: false,
219
+ message: `${zh ? "不支持的飞书操作" : "Unsupported Feishu action"}: ${actionId}`
220
+ };
221
+ } };
222
+ //#endregion
223
+ export { feishuGatewaySetupActions };
224
+
225
+ //# sourceMappingURL=gateway-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-setup.js","names":[],"sources":["../../../../../extensions/feishu/src/adapters/gateway-setup.ts"],"sourcesContent":["import { loadConfig, saveConfig } from '@xopcai/xopc/config/loader.js';\nimport type { Config } from '@xopcai/xopc/config/schema.js';\nimport type {\n ChannelRuntimeActionAdapter,\n ChannelRuntimeActionPayload,\n} from '@xopcai/xopc/channels/plugins/types.adapters.js';\nimport { mergeDistinctSenderIds } from '@xopcai/xopc/channels/pairing/index.js';\n\nimport {\n beginAppRegistration,\n initAppRegistration,\n pollAppRegistration,\n type FeishuDomain,\n type AppRegistrationResult,\n} from '../auth/app-registration.js';\n\ntype FeishuGatewaySetupDone =\n | { phase: 'done'; ok: true; accountId: string; appId: string; domain: FeishuDomain }\n | { phase: 'done'; ok: false; message: string };\n\ntype FeishuGatewaySetupActive = {\n startedAt: number;\n qrPayload: string;\n};\n\nconst activeSessions = new Map<string, FeishuGatewaySetupActive>();\nconst completedSessions = new Map<string, FeishuGatewaySetupDone>();\n\nfunction rememberCompleted(sessionKey: string, state: FeishuGatewaySetupDone): void {\n activeSessions.delete(sessionKey);\n completedSessions.set(sessionKey, state);\n setTimeout(() => completedSessions.delete(sessionKey), 10 * 60_000);\n}\n\nfunction readInput(input: unknown): Record<string, unknown> {\n return input && typeof input === 'object' && !Array.isArray(input)\n ? (input as Record<string, unknown>)\n : {};\n}\n\nfunction normalizeDomain(input: unknown): FeishuDomain {\n return input === 'lark' ? 'lark' : 'feishu';\n}\n\nfunction buildFeishuConfig(config: Config, result: AppRegistrationResult): Config {\n const existing = config.channels?.feishu as Record<string, unknown> | undefined;\n const ownerOpenId = result.openId?.trim();\n const previousAllowFrom = Array.isArray(existing?.allowFrom)\n ? (existing.allowFrom as Array<string | number>)\n : [];\n const allowFrom = ownerOpenId\n ? mergeDistinctSenderIds(previousAllowFrom, [ownerOpenId])\n : previousAllowFrom;\n\n return {\n ...config,\n channels: {\n ...config.channels,\n feishu: {\n ...(existing ?? {}),\n enabled: true,\n appId: result.appId,\n appSecret: result.appSecret,\n domain: result.domain,\n connectionMode: 'websocket',\n dmPolicy: existing?.dmPolicy ?? 'open',\n groupPolicy: existing?.groupPolicy ?? 'allowlist',\n allowFrom,\n groupAllowFrom: Array.isArray(existing?.groupAllowFrom) ? existing.groupAllowFrom : [],\n requireMention: typeof existing?.requireMention === 'boolean' ? existing.requireMention : true,\n renderMode: existing?.renderMode ?? 'auto',\n streaming: typeof existing?.streaming === 'boolean' ? existing.streaming : false,\n reactionNotifications: existing?.reactionNotifications ?? 'own',\n actions: { ...(existing?.actions as Record<string, unknown> | undefined), reactions: true },\n tools: {\n doc: true,\n wiki: true,\n drive: true,\n perm: false,\n bitable: true,\n scopes: true,\n ...(existing?.tools as Record<string, unknown> | undefined),\n },\n historyLimit: typeof existing?.historyLimit === 'number' ? existing.historyLimit : 50,\n textChunkLimit: typeof existing?.textChunkLimit === 'number' ? existing.textChunkLimit : 4000,\n },\n },\n };\n}\n\nfunction isZh(locale: string | undefined): boolean {\n return locale?.toLowerCase().startsWith('zh') === true;\n}\n\nfunction statusPayload(\n state: FeishuGatewaySetupDone | undefined,\n active: FeishuGatewaySetupActive | undefined,\n locale?: string,\n): ChannelRuntimeActionPayload {\n const zh = isZh(locale);\n if (!state && active) {\n return {\n type: 'poll',\n phase: 'pending',\n ok: undefined,\n qrPayload: active.qrPayload,\n message: zh ? '等待飞书 / Lark 确认…' : 'Waiting for Feishu/Lark confirmation...',\n };\n }\n if (!state) {\n return {\n type: 'poll',\n phase: 'unknown',\n ok: false,\n message: zh ? '没有活动的飞书配置会话。请重新开始,二维码可能已过期。' : 'No active Feishu setup session. Start again or the QR may have expired.',\n };\n }\n if (state.ok === false) {\n return {\n type: 'poll',\n phase: 'done',\n ok: false,\n message: state.message,\n };\n }\n return {\n type: 'poll',\n phase: 'done',\n ok: true,\n accountId: state.accountId,\n appId: state.appId,\n domain: state.domain,\n message: zh ? '飞书配置完成。' : 'Feishu setup complete.',\n configChanged: true,\n };\n}\n\nexport const feishuGatewaySetupActions: ChannelRuntimeActionAdapter = {\n async runAction({ actionId, input, locale }) {\n const zh = isZh(locale);\n if (actionId === 'setup.start') {\n const raw = readInput(input);\n const domain = normalizeDomain(raw.domain);\n const supported = await initAppRegistration(domain);\n if (!supported) {\n return {\n ok: true,\n payload: {\n type: 'form',\n submitAction: 'setup.manual',\n message: zh ? '飞书扫码创建不可用。请在高级配置中手动填写应用凭据。' : 'Feishu scan-to-create is unavailable. Enter app credentials manually in Advanced configuration.',\n schema: {\n type: 'object',\n properties: {\n appId: { type: 'string', title: 'App ID' },\n appSecret: { type: 'string', title: 'App Secret', format: 'password' },\n domain: { type: 'string', enum: ['feishu', 'lark'], default: domain, title: zh ? '域名' : 'Domain' },\n },\n required: ['appId', 'appSecret'],\n },\n values: { domain },\n },\n };\n }\n\n const begin = await beginAppRegistration(domain);\n const sessionKey = begin.deviceCode;\n activeSessions.set(sessionKey, {\n startedAt: Date.now(),\n qrPayload: begin.qrUrl,\n });\n\n void (async () => {\n const outcome = await pollAppRegistration({\n deviceCode: begin.deviceCode,\n intervalSec: begin.intervalSec,\n expireInSec: begin.expireInSec,\n initialDomain: domain,\n });\n\n if (outcome.status !== 'success') {\n const message =\n outcome.status === 'access_denied'\n ? (zh ? '用户拒绝授权。' : 'User denied authorization.')\n : outcome.status === 'expired'\n ? (zh ? '配置会话已过期。' : 'Setup session expired.')\n : outcome.status === 'timeout'\n ? (zh ? '配置超时。' : 'Setup timed out.')\n : outcome.message ?? (zh ? '飞书配置失败。' : 'Feishu setup failed.');\n rememberCompleted(sessionKey, { phase: 'done', ok: false, message });\n return;\n }\n\n try {\n const current = loadConfig();\n await saveConfig(buildFeishuConfig(current, outcome.result));\n rememberCompleted(sessionKey, {\n phase: 'done',\n ok: true,\n accountId: 'default',\n appId: outcome.result.appId,\n domain: outcome.result.domain,\n });\n } catch (err) {\n rememberCompleted(sessionKey, {\n phase: 'done',\n ok: false,\n message: `${zh ? '配置保存失败' : 'Config save failed'}: ${String(err)}`,\n });\n }\n })();\n\n return {\n ok: true,\n payload: {\n type: 'qr',\n sessionKey,\n qrPayload: begin.qrUrl,\n statusAction: 'setup.status',\n pollIntervalMs: Math.max(1000, begin.intervalSec * 1000),\n expiresInSec: begin.expireInSec,\n message: zh ? '请使用飞书 / Lark 扫码创建并授权应用。' : 'Scan with Feishu/Lark to create and authorize an app.',\n },\n };\n }\n\n if (actionId === 'setup.status') {\n const raw = readInput(input);\n const sessionKey = typeof raw.sessionKey === 'string' ? raw.sessionKey : '';\n if (!sessionKey) return { ok: false, message: zh ? '缺少配置 sessionKey' : 'Missing setup sessionKey' };\n return { ok: true, payload: statusPayload(completedSessions.get(sessionKey), activeSessions.get(sessionKey), locale) };\n }\n\n if (actionId === 'setup.manual') {\n const raw = readInput(input);\n const appId = typeof raw.appId === 'string' ? raw.appId.trim() : '';\n const appSecret = typeof raw.appSecret === 'string' ? raw.appSecret.trim() : '';\n const domain = normalizeDomain(raw.domain);\n if (!appId || !appSecret) {\n return { ok: false, message: zh ? 'App ID 和 App Secret 为必填项。' : 'App ID and App Secret are required.' };\n }\n const current = loadConfig();\n await saveConfig(buildFeishuConfig(current, { appId, appSecret, domain }));\n return {\n ok: true,\n payload: {\n type: 'ok',\n message: zh ? '飞书配置已保存。' : 'Feishu configuration saved.',\n configChanged: true,\n },\n };\n }\n\n return { ok: false, message: `${zh ? '不支持的飞书操作' : 'Unsupported Feishu action'}: ${actionId}` };\n },\n};\n"],"mappings":"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"}
@@ -1,5 +1,12 @@
1
1
  /**
2
- * Bundled Feishu/Lark channel extension entry (registration helper).
2
+ * Bundled Feishu/Lark channel extension entry.
3
3
  */
4
4
  export { feishuPlugin } from './plugin.js';
5
5
  export { defineChannelPluginEntry } from '@xopcai/xopc/extensions/sdk/channel-entry.js';
6
+ declare const _default: {
7
+ id: string;
8
+ name: string;
9
+ description: string;
10
+ register(api: import("@xopcai/xopc/extension-sdk").ExtensionApi): void;
11
+ };
12
+ export default _default;
@@ -1,3 +1,16 @@
1
1
  import { defineChannelPluginEntry } from "../../../src/extensions/sdk/channel-entry.js";
2
2
  import { feishuPlugin } from "./plugin.js";
3
- export { defineChannelPluginEntry, feishuPlugin };
3
+ //#region extensions/feishu/src/index.ts
4
+ /**
5
+ * Bundled Feishu/Lark channel extension entry.
6
+ */
7
+ var src_default = defineChannelPluginEntry({
8
+ id: "feishu",
9
+ name: "Feishu",
10
+ description: "Feishu/Lark messaging and workspace tools",
11
+ plugin: feishuPlugin
12
+ });
13
+ //#endregion
14
+ export { src_default as default, defineChannelPluginEntry, feishuPlugin };
15
+
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../extensions/feishu/src/index.ts"],"sourcesContent":["/**\n * Bundled Feishu/Lark channel extension entry.\n */\n\nimport { defineChannelPluginEntry } from '@xopcai/xopc/extensions/sdk/channel-entry.js';\n\nimport { feishuPlugin } from './plugin.js';\n\nexport { feishuPlugin } from './plugin.js';\nexport { defineChannelPluginEntry } from '@xopcai/xopc/extensions/sdk/channel-entry.js';\n\nexport default defineChannelPluginEntry({\n id: 'feishu',\n name: 'Feishu',\n description: 'Feishu/Lark messaging and workspace tools',\n plugin: feishuPlugin,\n});\n"],"mappings":";;;;;;AAWA,IAAA,cAAe,yBAAyB;CACtC,IAAI;CACJ,MAAM;CACN,aAAa;CACb,QAAQ;CACT,CAAC"}
@@ -1,7 +1,7 @@
1
+ import { formatFeishuOutboundText } from "../format.js";
1
2
  import { resolveFeishuAccount } from "../state/accounts.js";
2
3
  import { createFeishuClient } from "../transport/client/client.js";
3
4
  import { getFeishuBindingByMessageId, recordFeishuMessageBinding } from "../state/message-bindings.js";
4
- import { formatFeishuOutboundText } from "../format.js";
5
5
  import { loadMediaForFeishu } from "./media-load.js";
6
6
  //#region extensions/feishu/src/outbound/outbound-adapter.ts
7
7
  function createFeishuOutboundAdapter() {
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import type { Config } from '@xopcai/xopc/config/schema.js';
8
8
  import type { ChannelCapabilities, ChannelDoctorAdapter, ChannelMessageActionAdapter, ChannelOutboundAdapter, ChannelPlugin, ChannelPluginDefaults, ChannelPluginInitOptions, ChannelPluginReloadMeta, ChannelPluginStartOptions, ChannelSecurityAdapter, ChannelStatusAdapter } from '@xopcai/xopc/channels/plugin-types.js';
9
- import type { ChannelCliLoginAdapter } from '@xopcai/xopc/channels/plugins/types.adapters.js';
9
+ import type { ChannelCliLoginAdapter, ChannelRuntimeActionAdapter } from '@xopcai/xopc/channels/plugins/types.adapters.js';
10
10
  import { type ResolvedFeishuAccount } from './state/accounts.js';
11
11
  export declare class FeishuChannelPlugin implements ChannelPlugin<ResolvedFeishuAccount> {
12
12
  readonly id: "feishu";
@@ -36,6 +36,7 @@ export declare class FeishuChannelPlugin implements ChannelPlugin<ResolvedFeishu
36
36
  readonly pairing: import("@xopcai/xopc/channels/plugins/types.adapters.js").ChannelPairingAdapter;
37
37
  onboard: import("@xopcai/xopc/channels/plugins/types.adapters.js").ChannelOnboardAdapter;
38
38
  readonly cliLogin: ChannelCliLoginAdapter;
39
+ readonly runtimeActions: ChannelRuntimeActionAdapter;
39
40
  private bus;
40
41
  private cfg;
41
42
  private abortControllers;
@@ -19,6 +19,7 @@ import { createFeishuDirectoryAdapter } from "./directory/directory-adapter.js";
19
19
  import { feishuWhoAmI } from "./tools/tools.js";
20
20
  import { feishuCliLoginAdapter } from "./adapters/cli-login.js";
21
21
  import { feishuOnboardAdapter } from "./adapters/onboard-cli.js";
22
+ import { feishuGatewaySetupActions } from "./adapters/gateway-setup.js";
22
23
  import { handleFeishuChannelMessageAction } from "./actions/message-action-handler.js";
23
24
  import { createFeishuInboundPipeline } from "./transport/reliability/inbound-pipeline.js";
24
25
  import { createFeishuWorkflowProgressCapability } from "./workflow-progress.js";
@@ -77,6 +78,7 @@ var FeishuChannelPlugin = class {
77
78
  pairing = createStandardPairingAdapter("feishu");
78
79
  onboard = feishuOnboardAdapter;
79
80
  cliLogin = feishuCliLoginAdapter;
81
+ runtimeActions = feishuGatewaySetupActions;
80
82
  bus;
81
83
  cfg;
82
84
  abortControllers = /* @__PURE__ */ new Map();