fengming 0.3.1 → 0.3.2

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 (924) hide show
  1. package/CHANGELOG.md +3 -8
  2. package/LICENSE +0 -0
  3. package/README.md +0 -0
  4. package/THIRD_PARTY_NOTICES.md +0 -0
  5. package/dist/auto-reply/reply/export-html/template.css +0 -0
  6. package/dist/auto-reply/reply/export-html/template.html +0 -0
  7. package/dist/auto-reply/reply/export-html/template.js +0 -0
  8. package/dist/auto-reply/reply/export-html/vendor/highlight.min.js +0 -0
  9. package/dist/auto-reply/reply/export-html/vendor/marked.min.js +0 -0
  10. package/dist/build-info.json +2 -2
  11. package/dist/bundled/boot-md/HOOK.md +0 -0
  12. package/dist/bundled/bootstrap-extra-files/HOOK.md +0 -0
  13. package/dist/bundled/command-logger/HOOK.md +0 -0
  14. package/dist/bundled/compaction-notifier/HOOK.md +0 -0
  15. package/dist/bundled/session-memory/HOOK.md +0 -0
  16. package/dist/{bundled-channel-config-schema-DpdKMATU.d.ts → bundled-channel-config-schema-Bte--ZlY.d.ts} +26 -26
  17. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  18. package/dist/canvas-host/a2ui/a2ui.bundle.js +0 -0
  19. package/dist/canvas-host/a2ui/index.html +0 -0
  20. package/dist/cli-startup-metadata.json +8 -8
  21. package/dist/control-ui/apple-touch-icon.png +0 -0
  22. package/dist/control-ui/assets/{activity-164wVojz.js → activity-DXrrQ3p0.js} +2 -2
  23. package/dist/control-ui/assets/{agents-B2f8TYRm.js → agents-DBTWjl5N.js} +33 -29
  24. package/dist/control-ui/assets/{channel-config-extras-Cnty6sJP.js → channel-config-extras-1Omw3P4a.js} +2 -2
  25. package/dist/control-ui/assets/{channels-DoO-OrjQ.js → channels-CLz01a7t.js} +7 -7
  26. package/dist/control-ui/assets/{cron-DTyzT3TV.js → cron-vTxFqNNV.js} +11 -9
  27. package/dist/control-ui/assets/{debug-DmFMvLdY.js → debug-CvwuX3fe.js} +2 -2
  28. package/dist/control-ui/assets/i18n-CqJHwmVQ.js +2 -0
  29. package/dist/control-ui/assets/{index-nC-y5600.js → index-CFA4p4Li.js} +104 -91
  30. package/dist/control-ui/assets/{instances-DWljwzyf.js → instances-BbKVXLX1.js} +2 -2
  31. package/dist/control-ui/assets/{logs-D7YSLRvz.js → logs-B4vkHG-U.js} +7 -7
  32. package/dist/control-ui/assets/{nodes-D1vIdMC3.js → nodes-DrdIa_Kj.js} +63 -55
  33. package/dist/control-ui/assets/{push-subscription-SK4PlhIV.js → push-subscription-Ck2KdK-7.js} +2 -2
  34. package/dist/control-ui/assets/{sessions-BqzDZWTD.js → sessions-BqDAC2V3.js} +3 -3
  35. package/dist/control-ui/assets/{skills-CAvbfEkF.js → skills-DCQx-dAB.js} +38 -34
  36. package/dist/control-ui/assets/{skills-shared-KvN3lpfP.js → skills-shared-BWrG-mcT.js} +2 -2
  37. package/dist/control-ui/assets/{workboard-DsePRAcc.js → workboard-Cqwvi5Ma.js} +2 -2
  38. package/dist/control-ui/favicon-32.png +0 -0
  39. package/dist/control-ui/favicon.ico +0 -0
  40. package/dist/control-ui/favicon.svg +0 -0
  41. package/dist/control-ui/index.html +2 -2
  42. package/dist/control-ui/manifest.webmanifest +0 -0
  43. package/dist/control-ui/sw.js +1 -1
  44. package/dist/entry.js +0 -0
  45. package/dist/extensions/browser/skills/browser-automation/SKILL.md +0 -0
  46. package/dist/gateway/protocol/index.d.ts +1 -1
  47. package/dist/{index-DhOQs6M_.d.ts → index-GK-13hii.d.ts} +46 -46
  48. package/dist/index.js +0 -0
  49. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  50. package/dist/plugin-sdk/agent-config-primitives.d.ts +1 -1
  51. package/dist/plugin-sdk/{agent-harness-runtime-Bkrjji63.d.ts → agent-harness-runtime-CgQiThzm.d.ts} +2 -2
  52. package/dist/plugin-sdk/agent-harness-runtime.d.ts +4 -4
  53. package/dist/plugin-sdk/agent-harness-task-runtime.d.ts +1 -1
  54. package/dist/plugin-sdk/agent-harness.d.ts +4 -4
  55. package/dist/plugin-sdk/agent-runtime.d.ts +1 -1
  56. package/dist/plugin-sdk/{bundled-channel-config-schema-DcGjByUV.d.ts → bundled-channel-config-schema-BPFNnbwu.d.ts} +36 -36
  57. package/dist/plugin-sdk/bundled-channel-config-schema.d.ts +3 -3
  58. package/dist/plugin-sdk/channel-config-primitives.d.ts +2 -2
  59. package/dist/plugin-sdk/channel-config-schema-legacy.d.ts +3 -3
  60. package/dist/plugin-sdk/channel-config-schema.d.ts +2 -2
  61. package/dist/plugin-sdk/channel-core.d.ts +3 -3
  62. package/dist/plugin-sdk/channel-entry-contract.d.ts +1 -1
  63. package/dist/plugin-sdk/{channel-pairing-CzsPAHgH.d.ts → channel-pairing-CX6ncj1r.d.ts} +1 -1
  64. package/dist/plugin-sdk/channel-pairing.d.ts +1 -1
  65. package/dist/plugin-sdk/channel-plugin-common.d.ts +3 -3
  66. package/dist/plugin-sdk/cli-backend.d.ts +1 -1
  67. package/dist/plugin-sdk/compat.d.ts +6 -6
  68. package/dist/plugin-sdk/{config-schema-DUddICQM.d.ts → config-schema-D7cABQ6o.d.ts} +1 -1
  69. package/dist/plugin-sdk/{config-schema-N64y7n8C.d.ts → config-schema-DuJUjn6k.d.ts} +1 -1
  70. package/dist/plugin-sdk/config-schema.d.ts +12 -12
  71. package/dist/plugin-sdk/{core-BWZB2hNB.d.ts → core-CPtu2Ftl.d.ts} +1 -1
  72. package/dist/plugin-sdk/core.d.ts +8 -8
  73. package/dist/plugin-sdk/{delegate-o5xckIuc.d.ts → delegate-uk6vAMkc.d.ts} +1 -1
  74. package/dist/plugin-sdk/discord.d.ts +4 -4
  75. package/dist/plugin-sdk/{fengming-runtime-abXAXyq2.d.ts → fengming-runtime-Dt2ZEVYX.d.ts} +1 -1
  76. package/dist/plugin-sdk/gateway-runtime.d.ts +1 -1
  77. package/dist/plugin-sdk/{host-compat-D2Ky8seZ.d.ts → host-compat-CM0h9ODw.d.ts} +1 -1
  78. package/dist/plugin-sdk/{http-registry-oxJbX3E-.d.ts → http-registry-BniL_epL.d.ts} +2 -2
  79. package/dist/plugin-sdk/image-generation-core.d.ts +4 -4
  80. package/dist/plugin-sdk/image-generation-runtime.d.ts +3 -3
  81. package/dist/plugin-sdk/index.d.ts +4 -4
  82. package/dist/plugin-sdk/lmstudio.d.ts +1 -1
  83. package/dist/plugin-sdk/{loader-CgJhYjxT.d.ts → loader-aELh60PE.d.ts} +3 -3
  84. package/dist/plugin-sdk/{logger-CyDIBtoX.d.ts → logger-BpB3--7Z.d.ts} +1 -1
  85. package/dist/plugin-sdk/logging-core.d.ts +3 -3
  86. package/dist/plugin-sdk/memory-core-host-engine-embeddings.d.ts +2 -2
  87. package/dist/plugin-sdk/memory-core-host-engine-foundation.d.ts +3 -3
  88. package/dist/plugin-sdk/{memory-core-host-engine-storage-DfW7ZqD0.d.ts → memory-core-host-engine-storage-DYPjOQCg.d.ts} +1 -1
  89. package/dist/plugin-sdk/memory-core-host-engine-storage.d.ts +1 -1
  90. package/dist/plugin-sdk/memory-core-host-runtime-cli.d.ts +1 -1
  91. package/dist/plugin-sdk/memory-core-host-runtime-core.d.ts +3 -3
  92. package/dist/plugin-sdk/memory-core.d.ts +3 -3
  93. package/dist/plugin-sdk/memory-host-core.d.ts +3 -3
  94. package/dist/plugin-sdk/migration-runtime.d.ts +1 -1
  95. package/dist/plugin-sdk/migration.d.ts +1 -1
  96. package/dist/plugin-sdk/music-generation-core.d.ts +2 -2
  97. package/dist/plugin-sdk/{plugin-entry-C9xM-ZA9.d.ts → plugin-entry-DO9kQeTr.d.ts} +1 -1
  98. package/dist/plugin-sdk/plugin-entry.d.ts +3 -3
  99. package/dist/plugin-sdk/plugin-runtime.d.ts +3 -3
  100. package/dist/plugin-sdk/{provider-api-key-auth-DOmYPTC2.d.ts → provider-api-key-auth-DvIiojS6.d.ts} +1 -1
  101. package/dist/plugin-sdk/provider-auth-api-key.d.ts +4 -4
  102. package/dist/plugin-sdk/{provider-auth-helpers-pqDNrZTd.d.ts → provider-auth-helpers-CYkWZ0vq.d.ts} +1 -1
  103. package/dist/plugin-sdk/{provider-auth-input-Ckt-cU4H.d.ts → provider-auth-input-DUV6ZTw4.d.ts} +1 -1
  104. package/dist/plugin-sdk/provider-auth-result.d.ts +1 -1
  105. package/dist/plugin-sdk/provider-auth-runtime.d.ts +1 -1
  106. package/dist/plugin-sdk/provider-auth.d.ts +5 -5
  107. package/dist/plugin-sdk/provider-catalog-runtime.d.ts +2 -2
  108. package/dist/plugin-sdk/{provider-catalog-shared-QvOT8Wz1.d.ts → provider-catalog-shared-Cm3SyFfL.d.ts} +1 -1
  109. package/dist/plugin-sdk/provider-catalog-shared.d.ts +2 -2
  110. package/dist/plugin-sdk/provider-entry.d.ts +3 -3
  111. package/dist/plugin-sdk/{provider-model-shared-Bnc8IMx5.d.ts → provider-model-shared-D5rgn7Gb.d.ts} +1 -1
  112. package/dist/plugin-sdk/provider-model-shared.d.ts +2 -2
  113. package/dist/plugin-sdk/{provider-registry-CxdVib8g.d.ts → provider-registry-D0vmhPWL.d.ts} +1 -1
  114. package/dist/plugin-sdk/{provider-registry-CqB5bSAD.d.ts → provider-registry-DiKX35tc.d.ts} +1 -1
  115. package/dist/plugin-sdk/{provider-registry-Ba1nNfhA.d.ts → provider-registry-DxdZT9UN.d.ts} +1 -1
  116. package/dist/plugin-sdk/{provider-self-hosted-setup-eMoeVPnF.d.ts → provider-self-hosted-setup-BPx7JMDC.d.ts} +1 -1
  117. package/dist/plugin-sdk/provider-setup.d.ts +2 -2
  118. package/dist/plugin-sdk/{provider-stream-CGaLae9n.d.ts → provider-stream-DcC2vn_N.d.ts} +1 -1
  119. package/dist/plugin-sdk/provider-stream-family.d.ts +2 -2
  120. package/dist/plugin-sdk/{provider-stream-shared-u5mt-8_i.d.ts → provider-stream-shared-ByDv3QKm.d.ts} +1 -1
  121. package/dist/plugin-sdk/provider-stream-shared.d.ts +1 -1
  122. package/dist/plugin-sdk/provider-stream.d.ts +2 -2
  123. package/dist/plugin-sdk/provider-tools.d.ts +1 -1
  124. package/dist/plugin-sdk/provider-web-fetch-contract.d.ts +1 -1
  125. package/dist/plugin-sdk/provider-web-fetch.d.ts +1 -1
  126. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
  127. package/dist/plugin-sdk/{provider-web-search-contract-fields-BiWOSs_d.d.ts → provider-web-search-contract-fields-CY4v8kS-.d.ts} +1 -1
  128. package/dist/plugin-sdk/provider-web-search-contract.d.ts +2 -2
  129. package/dist/plugin-sdk/provider-web-search.d.ts +1 -1
  130. package/dist/plugin-sdk/realtime-transcription.d.ts +1 -1
  131. package/dist/plugin-sdk/realtime-voice.d.ts +1 -1
  132. package/dist/plugin-sdk/{redact-identifier-CVqsKaEK.d.ts → redact-identifier-CVwkabcI.d.ts} +1 -1
  133. package/dist/plugin-sdk/{registry-Gq9OFlb3.d.ts → registry-CzaGoAKH.d.ts} +2 -2
  134. package/dist/plugin-sdk/{registry-types-DyBkef1H.d.ts → registry-types-DN1yiH3F.d.ts} +2 -2
  135. package/dist/plugin-sdk/reply-runtime.d.ts +1 -1
  136. package/dist/plugin-sdk/runtime-env.d.ts +3 -3
  137. package/dist/plugin-sdk/runtime-store.d.ts +1 -1
  138. package/dist/plugin-sdk/runtime.d.ts +3 -3
  139. package/dist/plugin-sdk/self-hosted-provider-setup.d.ts +2 -2
  140. package/dist/plugin-sdk/simple-completion-runtime.d.ts +1 -1
  141. package/dist/plugin-sdk/speech-core.d.ts +2 -2
  142. package/dist/plugin-sdk/speech.d.ts +2 -2
  143. package/dist/plugin-sdk/{subsystem-Boo2DQIV.d.ts → subsystem-n4Y4vCcQ.d.ts} +1 -1
  144. package/dist/plugin-sdk/text-runtime.d.ts +2 -2
  145. package/dist/plugin-sdk/tool-plugin.d.ts +2 -2
  146. package/dist/plugin-sdk/tts-runtime.d.ts +1 -1
  147. package/dist/plugin-sdk/{types-DGF1KeaJ.d.ts → types-BI8R-vGd.d.ts} +2 -2
  148. package/dist/plugin-sdk/{types-DpaN54PS.d.ts → types-CsqNt0j8.d.ts} +1 -1
  149. package/dist/plugin-sdk/{unhandled-rejections-Bez6JG0y.d.ts → unhandled-rejections-D9eBl3hT.d.ts} +2 -2
  150. package/dist/plugin-sdk/video-generation-core.d.ts +3 -3
  151. package/dist/plugin-sdk/video-generation-runtime.d.ts +3 -3
  152. package/dist/plugin-sdk/webhook-ingress.d.ts +1 -1
  153. package/dist/plugin-sdk/webhook-targets.d.ts +1 -1
  154. package/dist/plugin-sdk/{zod-schema.core-B4_b2R5K.d.ts → zod-schema.core-CwBNqcXp.d.ts} +1 -1
  155. package/dist/postinstall-inventory.json +53 -53
  156. package/dist/{zod-schema.core-Cuz0lz6m.d.ts → zod-schema.core-BGLctDlK.d.ts} +1 -1
  157. package/docs/.i18n/README.md +0 -0
  158. package/docs/.i18n/ar-navigation.json +0 -0
  159. package/docs/.i18n/de-navigation.json +0 -0
  160. package/docs/.i18n/es-navigation.json +0 -0
  161. package/docs/.i18n/fr-navigation.json +0 -0
  162. package/docs/.i18n/glossary.ar.json +0 -0
  163. package/docs/.i18n/glossary.de.json +0 -0
  164. package/docs/.i18n/glossary.es.json +0 -0
  165. package/docs/.i18n/glossary.fa.json +0 -0
  166. package/docs/.i18n/glossary.fr.json +0 -0
  167. package/docs/.i18n/glossary.id.json +0 -0
  168. package/docs/.i18n/glossary.it.json +0 -0
  169. package/docs/.i18n/glossary.ja-JP.json +0 -0
  170. package/docs/.i18n/glossary.ko.json +0 -0
  171. package/docs/.i18n/glossary.nl.json +0 -0
  172. package/docs/.i18n/glossary.pl.json +0 -0
  173. package/docs/.i18n/glossary.pt-BR.json +0 -0
  174. package/docs/.i18n/glossary.th.json +0 -0
  175. package/docs/.i18n/glossary.tr.json +0 -0
  176. package/docs/.i18n/glossary.uk.json +0 -0
  177. package/docs/.i18n/glossary.vi.json +0 -0
  178. package/docs/.i18n/glossary.zh-CN.json +0 -0
  179. package/docs/.i18n/glossary.zh-TW.json +0 -0
  180. package/docs/.i18n/id-navigation.json +0 -0
  181. package/docs/.i18n/it-navigation.json +0 -0
  182. package/docs/.i18n/ja-navigation.json +0 -0
  183. package/docs/.i18n/ko-navigation.json +0 -0
  184. package/docs/.i18n/pl-navigation.json +0 -0
  185. package/docs/.i18n/pt-BR-navigation.json +0 -0
  186. package/docs/.i18n/tr-navigation.json +0 -0
  187. package/docs/.i18n/translation-workflow.md +0 -0
  188. package/docs/.i18n/zh-Hans-navigation.json +0 -0
  189. package/docs/AGENTS.md +0 -0
  190. package/docs/CLAUDE.md +0 -0
  191. package/docs/agent-runtime-architecture.md +0 -0
  192. package/docs/announcements/bluebubbles-imessage.md +0 -0
  193. package/docs/auth-credential-semantics.md +0 -0
  194. package/docs/automation/auth-monitoring.md +0 -0
  195. package/docs/automation/clawflow.md +0 -0
  196. package/docs/automation/cron-jobs.md +0 -0
  197. package/docs/automation/cron-vs-heartbeat.md +0 -0
  198. package/docs/automation/gmail-pubsub.md +0 -0
  199. package/docs/automation/hooks.md +0 -0
  200. package/docs/automation/index.md +0 -0
  201. package/docs/automation/poll.md +0 -0
  202. package/docs/automation/standing-orders.md +0 -0
  203. package/docs/automation/taskflow.md +0 -0
  204. package/docs/automation/tasks.md +0 -0
  205. package/docs/automation/troubleshooting.md +0 -0
  206. package/docs/automation/webhook.md +0 -0
  207. package/docs/brave-search.md +0 -0
  208. package/docs/channels/access-groups.md +0 -0
  209. package/docs/channels/ambient-room-events.md +0 -0
  210. package/docs/channels/bot-loop-protection.md +0 -0
  211. package/docs/channels/broadcast-groups.md +0 -0
  212. package/docs/channels/channel-routing.md +0 -0
  213. package/docs/channels/clickclack.md +0 -0
  214. package/docs/channels/discord.md +0 -0
  215. package/docs/channels/feishu.md +0 -0
  216. package/docs/channels/googlechat.md +0 -0
  217. package/docs/channels/group-messages.md +0 -0
  218. package/docs/channels/groups.md +0 -0
  219. package/docs/channels/imessage-from-bluebubbles.md +0 -0
  220. package/docs/channels/imessage.md +0 -0
  221. package/docs/channels/index.md +0 -0
  222. package/docs/channels/irc.md +0 -0
  223. package/docs/channels/line.md +0 -0
  224. package/docs/channels/location.md +0 -0
  225. package/docs/channels/matrix-migration.md +0 -0
  226. package/docs/channels/matrix-presentation.md +0 -0
  227. package/docs/channels/matrix-push-rules.md +0 -0
  228. package/docs/channels/matrix.md +0 -0
  229. package/docs/channels/mattermost.md +0 -0
  230. package/docs/channels/msteams.md +0 -0
  231. package/docs/channels/nextcloud-talk.md +0 -0
  232. package/docs/channels/nostr.md +0 -0
  233. package/docs/channels/pairing.md +0 -0
  234. package/docs/channels/qqbot.md +0 -0
  235. package/docs/channels/signal.md +0 -0
  236. package/docs/channels/slack.md +0 -0
  237. package/docs/channels/synology-chat.md +0 -0
  238. package/docs/channels/telegram.md +0 -0
  239. package/docs/channels/tlon.md +0 -0
  240. package/docs/channels/troubleshooting.md +0 -0
  241. package/docs/channels/twitch.md +0 -0
  242. package/docs/channels/wechat.md +0 -0
  243. package/docs/channels/whatsapp.md +0 -0
  244. package/docs/channels/yuanbao.md +0 -0
  245. package/docs/channels/zalo.md +0 -0
  246. package/docs/channels/zalouser.md +0 -0
  247. package/docs/ci.md +0 -0
  248. package/docs/clawhub/publishing.md +0 -0
  249. package/docs/cli/acp.md +0 -0
  250. package/docs/cli/agent.md +0 -0
  251. package/docs/cli/agents.md +0 -0
  252. package/docs/cli/approvals.md +0 -0
  253. package/docs/cli/backup.md +0 -0
  254. package/docs/cli/browser.md +0 -0
  255. package/docs/cli/channels.md +0 -0
  256. package/docs/cli/clawbot.md +0 -0
  257. package/docs/cli/commitments.md +0 -0
  258. package/docs/cli/completion.md +0 -0
  259. package/docs/cli/config.md +0 -0
  260. package/docs/cli/configure.md +0 -0
  261. package/docs/cli/crestodian.md +0 -0
  262. package/docs/cli/cron.md +0 -0
  263. package/docs/cli/daemon.md +0 -0
  264. package/docs/cli/dashboard.md +0 -0
  265. package/docs/cli/devices.md +0 -0
  266. package/docs/cli/directory.md +0 -0
  267. package/docs/cli/dns.md +0 -0
  268. package/docs/cli/docs.md +0 -0
  269. package/docs/cli/doctor.md +0 -0
  270. package/docs/cli/flows.md +0 -0
  271. package/docs/cli/gateway.md +0 -0
  272. package/docs/cli/health.md +0 -0
  273. package/docs/cli/hooks.md +0 -0
  274. package/docs/cli/index.md +0 -0
  275. package/docs/cli/infer.md +0 -0
  276. package/docs/cli/logs.md +0 -0
  277. package/docs/cli/mcp.md +0 -0
  278. package/docs/cli/memory.md +0 -0
  279. package/docs/cli/message.md +0 -0
  280. package/docs/cli/migrate.md +0 -0
  281. package/docs/cli/models.md +0 -0
  282. package/docs/cli/node.md +0 -0
  283. package/docs/cli/nodes.md +0 -0
  284. package/docs/cli/onboard.md +0 -0
  285. package/docs/cli/pairing.md +0 -0
  286. package/docs/cli/path.md +0 -0
  287. package/docs/cli/plugins.md +0 -0
  288. package/docs/cli/policy.md +0 -0
  289. package/docs/cli/proxy.md +0 -0
  290. package/docs/cli/qr.md +0 -0
  291. package/docs/cli/reset.md +0 -0
  292. package/docs/cli/sandbox.md +0 -0
  293. package/docs/cli/secrets.md +0 -0
  294. package/docs/cli/security.md +0 -0
  295. package/docs/cli/sessions.md +0 -0
  296. package/docs/cli/setup.md +0 -0
  297. package/docs/cli/skills.md +0 -0
  298. package/docs/cli/status.md +0 -0
  299. package/docs/cli/system.md +0 -0
  300. package/docs/cli/tasks.md +0 -0
  301. package/docs/cli/transcripts.md +0 -0
  302. package/docs/cli/tui.md +0 -0
  303. package/docs/cli/uninstall.md +0 -0
  304. package/docs/cli/update.md +0 -0
  305. package/docs/cli/voicecall.md +0 -0
  306. package/docs/cli/webhooks.md +0 -0
  307. package/docs/cli/wiki.md +0 -0
  308. package/docs/concepts/active-memory.md +0 -0
  309. package/docs/concepts/agent-loop.md +0 -0
  310. package/docs/concepts/agent-runtimes.md +0 -0
  311. package/docs/concepts/agent-workspace.md +0 -0
  312. package/docs/concepts/agent.md +0 -0
  313. package/docs/concepts/architecture.md +0 -0
  314. package/docs/concepts/channel-docking.md +0 -0
  315. package/docs/concepts/commitments.md +0 -0
  316. package/docs/concepts/compaction.md +0 -0
  317. package/docs/concepts/context-engine.md +0 -0
  318. package/docs/concepts/context.md +0 -0
  319. package/docs/concepts/delegate-architecture.md +0 -0
  320. package/docs/concepts/dreaming.md +0 -0
  321. package/docs/concepts/experimental-features.md +0 -0
  322. package/docs/concepts/features.md +0 -0
  323. package/docs/concepts/fengming-sdk.md +0 -0
  324. package/docs/concepts/mantis-slack-desktop-runbook.md +0 -0
  325. package/docs/concepts/mantis.md +0 -0
  326. package/docs/concepts/markdown-formatting.md +0 -0
  327. package/docs/concepts/memory-builtin.md +0 -0
  328. package/docs/concepts/memory-honcho.md +0 -0
  329. package/docs/concepts/memory-qmd.md +0 -0
  330. package/docs/concepts/memory-search.md +0 -0
  331. package/docs/concepts/memory.md +0 -0
  332. package/docs/concepts/message-lifecycle-refactor.md +0 -0
  333. package/docs/concepts/messages.md +0 -0
  334. package/docs/concepts/model-failover.md +0 -0
  335. package/docs/concepts/model-providers.md +0 -0
  336. package/docs/concepts/models.md +0 -0
  337. package/docs/concepts/multi-agent.md +0 -0
  338. package/docs/concepts/oauth.md +0 -0
  339. package/docs/concepts/parallel-specialist-lanes.md +0 -0
  340. package/docs/concepts/personal-agent-benchmark-pack.md +0 -0
  341. package/docs/concepts/presence.md +0 -0
  342. package/docs/concepts/progress-drafts.md +0 -0
  343. package/docs/concepts/qa-e2e-automation.md +0 -0
  344. package/docs/concepts/qa-matrix.md +0 -0
  345. package/docs/concepts/queue-steering.md +0 -0
  346. package/docs/concepts/queue.md +0 -0
  347. package/docs/concepts/retry.md +0 -0
  348. package/docs/concepts/session-pruning.md +0 -0
  349. package/docs/concepts/session-tool.md +0 -0
  350. package/docs/concepts/session.md +0 -0
  351. package/docs/concepts/soul.md +0 -0
  352. package/docs/concepts/streaming.md +0 -0
  353. package/docs/concepts/system-prompt.md +0 -0
  354. package/docs/concepts/timezone.md +0 -0
  355. package/docs/concepts/typebox.md +0 -0
  356. package/docs/concepts/typing-indicators.md +0 -0
  357. package/docs/concepts/usage-tracking.md +0 -0
  358. package/docs/date-time.md +0 -0
  359. package/docs/debug/node-issue.md +0 -0
  360. package/docs/diagnostics/flags.md +0 -0
  361. package/docs/docs.json +0 -0
  362. package/docs/fengming-agent-runtime.md +0 -0
  363. package/docs/gateway/authentication.md +0 -0
  364. package/docs/gateway/background-process.md +0 -0
  365. package/docs/gateway/bonjour.md +0 -0
  366. package/docs/gateway/bridge-protocol.md +0 -0
  367. package/docs/gateway/cli-backends.md +0 -0
  368. package/docs/gateway/config-agents.md +0 -0
  369. package/docs/gateway/config-channels.md +0 -0
  370. package/docs/gateway/config-tools.md +0 -0
  371. package/docs/gateway/configuration-examples.md +0 -0
  372. package/docs/gateway/configuration-reference.md +0 -0
  373. package/docs/gateway/configuration.md +0 -0
  374. package/docs/gateway/diagnostics.md +0 -0
  375. package/docs/gateway/discovery.md +0 -0
  376. package/docs/gateway/doctor.md +0 -0
  377. package/docs/gateway/gateway-lock.md +0 -0
  378. package/docs/gateway/health.md +0 -0
  379. package/docs/gateway/heartbeat.md +0 -0
  380. package/docs/gateway/index.md +0 -0
  381. package/docs/gateway/local-model-services.md +0 -0
  382. package/docs/gateway/local-models.md +0 -0
  383. package/docs/gateway/logging.md +0 -0
  384. package/docs/gateway/multiple-gateways.md +0 -0
  385. package/docs/gateway/network-model.md +0 -0
  386. package/docs/gateway/openai-http-api.md +0 -0
  387. package/docs/gateway/openresponses-http-api.md +0 -0
  388. package/docs/gateway/openshell.md +0 -0
  389. package/docs/gateway/opentelemetry.md +0 -0
  390. package/docs/gateway/operator-scopes.md +0 -0
  391. package/docs/gateway/pairing.md +0 -0
  392. package/docs/gateway/prometheus.md +0 -0
  393. package/docs/gateway/protocol.md +0 -0
  394. package/docs/gateway/remote-gateway-readme.md +0 -0
  395. package/docs/gateway/remote.md +0 -0
  396. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -0
  397. package/docs/gateway/sandboxing.md +0 -0
  398. package/docs/gateway/secrets-plan-contract.md +0 -0
  399. package/docs/gateway/secrets.md +0 -0
  400. package/docs/gateway/security/audit-checks.md +0 -0
  401. package/docs/gateway/security/exposure-runbook.md +0 -0
  402. package/docs/gateway/security/index.md +0 -0
  403. package/docs/gateway/security/secure-file-operations.md +0 -0
  404. package/docs/gateway/security/shrinkwrap.md +0 -0
  405. package/docs/gateway/tailscale.md +0 -0
  406. package/docs/gateway/tools-invoke-http-api.md +0 -0
  407. package/docs/gateway/troubleshooting.md +0 -0
  408. package/docs/gateway/trusted-proxy-auth.md +0 -0
  409. package/docs/help/debugging.md +0 -0
  410. package/docs/help/environment.md +0 -0
  411. package/docs/help/faq-first-run.md +0 -0
  412. package/docs/help/faq-models.md +0 -0
  413. package/docs/help/faq.md +0 -0
  414. package/docs/help/index.md +0 -0
  415. package/docs/help/scripts.md +0 -0
  416. package/docs/help/testing-live.md +0 -0
  417. package/docs/help/testing-updates-plugins.md +0 -0
  418. package/docs/help/testing.md +0 -0
  419. package/docs/help/troubleshooting.md +0 -0
  420. package/docs/index.md +0 -0
  421. package/docs/install/ansible.md +0 -0
  422. package/docs/install/azure.md +0 -0
  423. package/docs/install/bun.md +0 -0
  424. package/docs/install/clawdock.md +0 -0
  425. package/docs/install/development-channels.md +0 -0
  426. package/docs/install/digitalocean.md +0 -0
  427. package/docs/install/docker-vm-runtime.md +0 -0
  428. package/docs/install/docker.md +0 -0
  429. package/docs/install/exe-dev.md +0 -0
  430. package/docs/install/fly.md +0 -0
  431. package/docs/install/gcp.md +0 -0
  432. package/docs/install/hetzner.md +0 -0
  433. package/docs/install/hostinger.md +0 -0
  434. package/docs/install/index.md +0 -0
  435. package/docs/install/installer.md +0 -0
  436. package/docs/install/kubernetes.md +0 -0
  437. package/docs/install/macos-vm.md +0 -0
  438. package/docs/install/migrating-claude.md +0 -0
  439. package/docs/install/migrating-hermes.md +0 -0
  440. package/docs/install/migrating.md +0 -0
  441. package/docs/install/nix.md +0 -0
  442. package/docs/install/node.md +0 -0
  443. package/docs/install/northflank.mdx +0 -0
  444. package/docs/install/oracle.md +0 -0
  445. package/docs/install/podman.md +0 -0
  446. package/docs/install/railway.mdx +0 -0
  447. package/docs/install/raspberry-pi.md +0 -0
  448. package/docs/install/render.mdx +0 -0
  449. package/docs/install/uninstall.md +0 -0
  450. package/docs/install/updating.md +0 -0
  451. package/docs/install/upstash.md +0 -0
  452. package/docs/logging.md +0 -0
  453. package/docs/nav-tabs-underline.js +0 -0
  454. package/docs/network.md +0 -0
  455. package/docs/nodes/audio.md +0 -0
  456. package/docs/nodes/camera.md +0 -0
  457. package/docs/nodes/images.md +0 -0
  458. package/docs/nodes/index.md +0 -0
  459. package/docs/nodes/location-command.md +0 -0
  460. package/docs/nodes/media-understanding.md +0 -0
  461. package/docs/nodes/talk.md +0 -0
  462. package/docs/nodes/troubleshooting.md +0 -0
  463. package/docs/nodes/voicewake.md +0 -0
  464. package/docs/perplexity.md +0 -0
  465. package/docs/plan/codex-context-engine-harness.md +0 -0
  466. package/docs/plan/ui-channels.md +0 -0
  467. package/docs/platforms/digitalocean.md +0 -0
  468. package/docs/platforms/easyrunner.md +0 -0
  469. package/docs/platforms/index.md +0 -0
  470. package/docs/platforms/linux.md +0 -0
  471. package/docs/platforms/mac/bundled-gateway.md +0 -0
  472. package/docs/platforms/mac/canvas.md +0 -0
  473. package/docs/platforms/mac/child-process.md +0 -0
  474. package/docs/platforms/mac/dev-setup.md +0 -0
  475. package/docs/platforms/mac/health.md +0 -0
  476. package/docs/platforms/mac/icon.md +0 -0
  477. package/docs/platforms/mac/logging.md +0 -0
  478. package/docs/platforms/mac/menu-bar.md +0 -0
  479. package/docs/platforms/mac/peekaboo.md +0 -0
  480. package/docs/platforms/mac/permissions.md +0 -0
  481. package/docs/platforms/mac/remote.md +0 -0
  482. package/docs/platforms/mac/signing.md +0 -0
  483. package/docs/platforms/mac/skills.md +0 -0
  484. package/docs/platforms/mac/voice-overlay.md +0 -0
  485. package/docs/platforms/mac/voicewake.md +0 -0
  486. package/docs/platforms/mac/webchat.md +0 -0
  487. package/docs/platforms/mac/xpc.md +0 -0
  488. package/docs/platforms/oracle.md +0 -0
  489. package/docs/platforms/raspberry-pi.md +0 -0
  490. package/docs/platforms/windows.md +0 -0
  491. package/docs/plugins/adding-capabilities.md +0 -0
  492. package/docs/plugins/admin-http-rpc.md +0 -0
  493. package/docs/plugins/agent-tools.md +0 -0
  494. package/docs/plugins/architecture-internals.md +0 -0
  495. package/docs/plugins/architecture.md +0 -0
  496. package/docs/plugins/building-extensions.md +0 -0
  497. package/docs/plugins/building-plugins.md +0 -0
  498. package/docs/plugins/bundles.md +0 -0
  499. package/docs/plugins/cli-backend-plugins.md +0 -0
  500. package/docs/plugins/codex-computer-use.md +0 -0
  501. package/docs/plugins/codex-harness-reference.md +0 -0
  502. package/docs/plugins/codex-harness-runtime.md +0 -0
  503. package/docs/plugins/codex-harness.md +0 -0
  504. package/docs/plugins/codex-native-plugins.md +0 -0
  505. package/docs/plugins/community.md +0 -0
  506. package/docs/plugins/compatibility.md +0 -0
  507. package/docs/plugins/copilot.md +0 -0
  508. package/docs/plugins/dependency-resolution.md +0 -0
  509. package/docs/plugins/google-meet.md +0 -0
  510. package/docs/plugins/hooks.md +0 -0
  511. package/docs/plugins/install-overrides.md +0 -0
  512. package/docs/plugins/manage-plugins.md +0 -0
  513. package/docs/plugins/manifest.md +0 -0
  514. package/docs/plugins/memory-lancedb.md +0 -0
  515. package/docs/plugins/memory-wiki.md +0 -0
  516. package/docs/plugins/message-presentation.md +0 -0
  517. package/docs/plugins/oc-path.md +0 -0
  518. package/docs/plugins/plugin-inventory.md +0 -0
  519. package/docs/plugins/plugin-permission-requests.md +0 -0
  520. package/docs/plugins/reference/acpx.md +0 -0
  521. package/docs/plugins/reference/admin-http-rpc.md +0 -0
  522. package/docs/plugins/reference/alibaba.md +0 -0
  523. package/docs/plugins/reference/amazon-bedrock-mantle.md +0 -0
  524. package/docs/plugins/reference/amazon-bedrock.md +0 -0
  525. package/docs/plugins/reference/anthropic-vertex.md +0 -0
  526. package/docs/plugins/reference/anthropic.md +0 -0
  527. package/docs/plugins/reference/arcee.md +0 -0
  528. package/docs/plugins/reference/azure-speech.md +0 -0
  529. package/docs/plugins/reference/bonjour.md +0 -0
  530. package/docs/plugins/reference/brave.md +0 -0
  531. package/docs/plugins/reference/browser.md +0 -0
  532. package/docs/plugins/reference/byteplus.md +0 -0
  533. package/docs/plugins/reference/canvas.md +0 -0
  534. package/docs/plugins/reference/cerebras.md +0 -0
  535. package/docs/plugins/reference/chutes.md +0 -0
  536. package/docs/plugins/reference/clickclack.md +0 -0
  537. package/docs/plugins/reference/cloudflare-ai-gateway.md +0 -0
  538. package/docs/plugins/reference/codex-supervisor.md +0 -0
  539. package/docs/plugins/reference/codex.md +0 -0
  540. package/docs/plugins/reference/comfy.md +0 -0
  541. package/docs/plugins/reference/copilot-proxy.md +0 -0
  542. package/docs/plugins/reference/copilot.md +0 -0
  543. package/docs/plugins/reference/deepgram.md +0 -0
  544. package/docs/plugins/reference/deepinfra.md +0 -0
  545. package/docs/plugins/reference/deepseek.md +0 -0
  546. package/docs/plugins/reference/diagnostics-otel.md +0 -0
  547. package/docs/plugins/reference/diagnostics-prometheus.md +0 -0
  548. package/docs/plugins/reference/diffs-language-pack.md +0 -0
  549. package/docs/plugins/reference/diffs.md +0 -0
  550. package/docs/plugins/reference/discord.md +0 -0
  551. package/docs/plugins/reference/document-extract.md +0 -0
  552. package/docs/plugins/reference/duckduckgo.md +0 -0
  553. package/docs/plugins/reference/elevenlabs.md +0 -0
  554. package/docs/plugins/reference/exa.md +0 -0
  555. package/docs/plugins/reference/fal.md +0 -0
  556. package/docs/plugins/reference/feishu.md +0 -0
  557. package/docs/plugins/reference/file-transfer.md +0 -0
  558. package/docs/plugins/reference/firecrawl.md +0 -0
  559. package/docs/plugins/reference/fireworks.md +0 -0
  560. package/docs/plugins/reference/github-copilot.md +0 -0
  561. package/docs/plugins/reference/gmi.md +0 -0
  562. package/docs/plugins/reference/google-meet.md +0 -0
  563. package/docs/plugins/reference/google.md +0 -0
  564. package/docs/plugins/reference/googlechat.md +0 -0
  565. package/docs/plugins/reference/gradium.md +0 -0
  566. package/docs/plugins/reference/groq.md +0 -0
  567. package/docs/plugins/reference/huggingface.md +0 -0
  568. package/docs/plugins/reference/imessage.md +0 -0
  569. package/docs/plugins/reference/inworld.md +0 -0
  570. package/docs/plugins/reference/irc.md +0 -0
  571. package/docs/plugins/reference/kilocode.md +0 -0
  572. package/docs/plugins/reference/kimi.md +0 -0
  573. package/docs/plugins/reference/line.md +0 -0
  574. package/docs/plugins/reference/litellm.md +0 -0
  575. package/docs/plugins/reference/llm-task.md +0 -0
  576. package/docs/plugins/reference/lmstudio.md +0 -0
  577. package/docs/plugins/reference/lobster.md +0 -0
  578. package/docs/plugins/reference/matrix.md +0 -0
  579. package/docs/plugins/reference/mattermost.md +0 -0
  580. package/docs/plugins/reference/memory-core.md +0 -0
  581. package/docs/plugins/reference/memory-lancedb.md +0 -0
  582. package/docs/plugins/reference/memory-wiki.md +0 -0
  583. package/docs/plugins/reference/microsoft-foundry.md +0 -0
  584. package/docs/plugins/reference/microsoft.md +0 -0
  585. package/docs/plugins/reference/migrate-claude.md +0 -0
  586. package/docs/plugins/reference/migrate-hermes.md +0 -0
  587. package/docs/plugins/reference/minimax.md +0 -0
  588. package/docs/plugins/reference/mistral.md +0 -0
  589. package/docs/plugins/reference/moonshot.md +0 -0
  590. package/docs/plugins/reference/msteams.md +0 -0
  591. package/docs/plugins/reference/nextcloud-talk.md +0 -0
  592. package/docs/plugins/reference/nostr.md +0 -0
  593. package/docs/plugins/reference/novita.md +0 -0
  594. package/docs/plugins/reference/nvidia.md +0 -0
  595. package/docs/plugins/reference/oc-path.md +0 -0
  596. package/docs/plugins/reference/ollama.md +0 -0
  597. package/docs/plugins/reference/open-prose.md +0 -0
  598. package/docs/plugins/reference/openai.md +0 -0
  599. package/docs/plugins/reference/opencode-go.md +0 -0
  600. package/docs/plugins/reference/opencode.md +0 -0
  601. package/docs/plugins/reference/openrouter.md +0 -0
  602. package/docs/plugins/reference/openshell.md +0 -0
  603. package/docs/plugins/reference/perplexity.md +0 -0
  604. package/docs/plugins/reference/pixverse.md +0 -0
  605. package/docs/plugins/reference/policy.md +0 -0
  606. package/docs/plugins/reference/qa-channel.md +0 -0
  607. package/docs/plugins/reference/qa-lab.md +0 -0
  608. package/docs/plugins/reference/qa-matrix.md +0 -0
  609. package/docs/plugins/reference/qianfan.md +0 -0
  610. package/docs/plugins/reference/qqbot.md +0 -0
  611. package/docs/plugins/reference/qwen.md +0 -0
  612. package/docs/plugins/reference/runway.md +0 -0
  613. package/docs/plugins/reference/searxng.md +0 -0
  614. package/docs/plugins/reference/senseaudio.md +0 -0
  615. package/docs/plugins/reference/sglang.md +0 -0
  616. package/docs/plugins/reference/signal.md +0 -0
  617. package/docs/plugins/reference/skill-workshop.md +0 -0
  618. package/docs/plugins/reference/slack.md +0 -0
  619. package/docs/plugins/reference/stepfun.md +0 -0
  620. package/docs/plugins/reference/synology-chat.md +0 -0
  621. package/docs/plugins/reference/synthetic.md +0 -0
  622. package/docs/plugins/reference/tavily.md +0 -0
  623. package/docs/plugins/reference/telegram.md +0 -0
  624. package/docs/plugins/reference/tencent.md +0 -0
  625. package/docs/plugins/reference/tlon.md +0 -0
  626. package/docs/plugins/reference/together.md +0 -0
  627. package/docs/plugins/reference/tokenjuice.md +0 -0
  628. package/docs/plugins/reference/tts-local-cli.md +0 -0
  629. package/docs/plugins/reference/twitch.md +0 -0
  630. package/docs/plugins/reference/venice.md +0 -0
  631. package/docs/plugins/reference/vercel-ai-gateway.md +0 -0
  632. package/docs/plugins/reference/vllm.md +0 -0
  633. package/docs/plugins/reference/voice-call.md +0 -0
  634. package/docs/plugins/reference/volcengine.md +0 -0
  635. package/docs/plugins/reference/voyage.md +0 -0
  636. package/docs/plugins/reference/vydra.md +0 -0
  637. package/docs/plugins/reference/web-readability.md +0 -0
  638. package/docs/plugins/reference/webhooks.md +0 -0
  639. package/docs/plugins/reference/whatsapp.md +0 -0
  640. package/docs/plugins/reference/workboard.md +0 -0
  641. package/docs/plugins/reference/xai.md +0 -0
  642. package/docs/plugins/reference/xiaomi.md +0 -0
  643. package/docs/plugins/reference/zai.md +0 -0
  644. package/docs/plugins/reference/zalo.md +0 -0
  645. package/docs/plugins/reference/zalouser.md +0 -0
  646. package/docs/plugins/reference.md +0 -0
  647. package/docs/plugins/sdk-agent-harness.md +0 -0
  648. package/docs/plugins/sdk-channel-inbound.md +0 -0
  649. package/docs/plugins/sdk-channel-ingress.md +0 -0
  650. package/docs/plugins/sdk-channel-message.md +0 -0
  651. package/docs/plugins/sdk-channel-outbound.md +0 -0
  652. package/docs/plugins/sdk-channel-plugins.md +0 -0
  653. package/docs/plugins/sdk-channel-turn.md +0 -0
  654. package/docs/plugins/sdk-entrypoints.md +0 -0
  655. package/docs/plugins/sdk-migration.md +0 -0
  656. package/docs/plugins/sdk-overview.md +0 -0
  657. package/docs/plugins/sdk-provider-plugins.md +0 -0
  658. package/docs/plugins/sdk-runtime.md +0 -0
  659. package/docs/plugins/sdk-setup.md +0 -0
  660. package/docs/plugins/sdk-subpaths.md +0 -0
  661. package/docs/plugins/sdk-testing.md +0 -0
  662. package/docs/plugins/skill-workshop.md +0 -0
  663. package/docs/plugins/tool-plugins.md +0 -0
  664. package/docs/plugins/voice-call.md +0 -0
  665. package/docs/plugins/webhooks.md +0 -0
  666. package/docs/plugins/workboard.md +0 -0
  667. package/docs/plugins/zalouser.md +0 -0
  668. package/docs/prose.md +0 -0
  669. package/docs/providers/alibaba.md +0 -0
  670. package/docs/providers/anthropic.md +0 -0
  671. package/docs/providers/arcee.md +0 -0
  672. package/docs/providers/azure-speech.md +0 -0
  673. package/docs/providers/bedrock-mantle.md +0 -0
  674. package/docs/providers/bedrock.md +0 -0
  675. package/docs/providers/cerebras.md +0 -0
  676. package/docs/providers/chutes.md +0 -0
  677. package/docs/providers/claude-max-api-proxy.md +0 -0
  678. package/docs/providers/cloudflare-ai-gateway.md +0 -0
  679. package/docs/providers/comfy.md +0 -0
  680. package/docs/providers/deepgram.md +0 -0
  681. package/docs/providers/deepinfra.md +0 -0
  682. package/docs/providers/deepseek.md +0 -0
  683. package/docs/providers/ds4.md +0 -0
  684. package/docs/providers/elevenlabs.md +0 -0
  685. package/docs/providers/fal.md +0 -0
  686. package/docs/providers/fireworks.md +0 -0
  687. package/docs/providers/github-copilot.md +0 -0
  688. package/docs/providers/gmi.md +0 -0
  689. package/docs/providers/google.md +0 -0
  690. package/docs/providers/gradium.md +0 -0
  691. package/docs/providers/groq.md +0 -0
  692. package/docs/providers/huggingface.md +0 -0
  693. package/docs/providers/index.md +0 -0
  694. package/docs/providers/inferrs.md +0 -0
  695. package/docs/providers/inworld.md +0 -0
  696. package/docs/providers/kilocode.md +0 -0
  697. package/docs/providers/litellm.md +0 -0
  698. package/docs/providers/lmstudio.md +0 -0
  699. package/docs/providers/minimax.md +0 -0
  700. package/docs/providers/mistral.md +0 -0
  701. package/docs/providers/models.md +0 -0
  702. package/docs/providers/moonshot.md +0 -0
  703. package/docs/providers/novita.md +0 -0
  704. package/docs/providers/nvidia.md +0 -0
  705. package/docs/providers/ollama-cloud.md +0 -0
  706. package/docs/providers/ollama.md +0 -0
  707. package/docs/providers/openai.md +0 -0
  708. package/docs/providers/opencode-go.md +0 -0
  709. package/docs/providers/opencode.md +0 -0
  710. package/docs/providers/openrouter.md +0 -0
  711. package/docs/providers/perplexity-provider.md +0 -0
  712. package/docs/providers/pixverse.md +0 -0
  713. package/docs/providers/qianfan.md +0 -0
  714. package/docs/providers/qwen-oauth.md +0 -0
  715. package/docs/providers/qwen.md +0 -0
  716. package/docs/providers/runway.md +0 -0
  717. package/docs/providers/senseaudio.md +0 -0
  718. package/docs/providers/sglang.md +0 -0
  719. package/docs/providers/stepfun.md +0 -0
  720. package/docs/providers/synthetic.md +0 -0
  721. package/docs/providers/tencent.md +0 -0
  722. package/docs/providers/together.md +0 -0
  723. package/docs/providers/venice.md +0 -0
  724. package/docs/providers/vercel-ai-gateway.md +0 -0
  725. package/docs/providers/vllm.md +0 -0
  726. package/docs/providers/volcengine.md +0 -0
  727. package/docs/providers/vydra.md +0 -0
  728. package/docs/providers/xai.md +0 -0
  729. package/docs/providers/xiaomi.md +0 -0
  730. package/docs/providers/zai.md +0 -0
  731. package/docs/refactor/access.md +0 -0
  732. package/docs/refactor/acp.md +0 -0
  733. package/docs/refactor/canvas.md +0 -0
  734. package/docs/refactor/database-first.md +0 -0
  735. package/docs/refactor/ingress-core.md +0 -0
  736. package/docs/reference/AGENTS.default.md +0 -0
  737. package/docs/reference/RELEASING.md +0 -0
  738. package/docs/reference/api-usage-costs.md +0 -0
  739. package/docs/reference/application-modernization-plan.md +0 -0
  740. package/docs/reference/code-mode.md +0 -0
  741. package/docs/reference/credits.md +0 -0
  742. package/docs/reference/device-models.md +0 -0
  743. package/docs/reference/fengming-sdk-api-design.md +0 -0
  744. package/docs/reference/full-release-validation.md +0 -0
  745. package/docs/reference/memory-config.md +0 -0
  746. package/docs/reference/prompt-caching.md +0 -0
  747. package/docs/reference/release-performance-sweep.md +0 -0
  748. package/docs/reference/rich-output-protocol.md +0 -0
  749. package/docs/reference/rpc.md +0 -0
  750. package/docs/reference/secret-placeholder-conventions.md +0 -0
  751. package/docs/reference/secretref-credential-surface.md +0 -0
  752. package/docs/reference/secretref-user-supplied-credentials-matrix.json +0 -0
  753. package/docs/reference/session-management-compaction.md +0 -0
  754. package/docs/reference/templates/AGENTS.dev.md +0 -0
  755. package/docs/reference/templates/AGENTS.md +0 -0
  756. package/docs/reference/templates/BOOT.md +0 -0
  757. package/docs/reference/templates/BOOTSTRAP.md +0 -0
  758. package/docs/reference/templates/CLAUDE.md +0 -0
  759. package/docs/reference/templates/HEARTBEAT.md +0 -0
  760. package/docs/reference/templates/IDENTITY.dev.md +0 -0
  761. package/docs/reference/templates/IDENTITY.md +0 -0
  762. package/docs/reference/templates/SOUL.dev.md +0 -0
  763. package/docs/reference/templates/SOUL.md +0 -0
  764. package/docs/reference/templates/TOOLS.dev.md +0 -0
  765. package/docs/reference/templates/TOOLS.md +0 -0
  766. package/docs/reference/templates/USER.dev.md +0 -0
  767. package/docs/reference/templates/USER.md +0 -0
  768. package/docs/reference/test.md +0 -0
  769. package/docs/reference/token-use.md +0 -0
  770. package/docs/reference/transcript-hygiene.md +0 -0
  771. package/docs/reference/wizard.md +0 -0
  772. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -0
  773. package/docs/security/THREAT-MODEL-ATLAS.md +0 -0
  774. package/docs/security/formal-verification.md +0 -0
  775. package/docs/security/incident-response.md +0 -0
  776. package/docs/security/network-proxy.md +0 -0
  777. package/docs/snippets/plugin-publish/minimal-fengming.plugin.json +0 -0
  778. package/docs/snippets/plugin-publish/minimal-package.json +0 -0
  779. package/docs/specs/claw-supervisor.md +0 -0
  780. package/docs/start/bootstrapping.md +0 -0
  781. package/docs/start/docs-directory.md +0 -0
  782. package/docs/start/fengming.md +0 -0
  783. package/docs/start/getting-started.md +0 -0
  784. package/docs/start/hubs.md +0 -0
  785. package/docs/start/lore.md +0 -0
  786. package/docs/start/onboarding-overview.md +0 -0
  787. package/docs/start/onboarding.md +0 -0
  788. package/docs/start/quickstart.md +0 -0
  789. package/docs/start/setup.md +0 -0
  790. package/docs/start/showcase.md +0 -0
  791. package/docs/start/wizard-cli-automation.md +0 -0
  792. package/docs/start/wizard-cli-reference.md +0 -0
  793. package/docs/start/wizard.md +0 -0
  794. package/docs/style.css +0 -0
  795. package/docs/superpowers/specs/2026-04-22-tweakcn-custom-theme-import-design.md +0 -0
  796. package/docs/tools/acp-agents-setup.md +0 -0
  797. package/docs/tools/acp-agents.md +0 -0
  798. package/docs/tools/agent-send.md +0 -0
  799. package/docs/tools/apply-patch.md +0 -0
  800. package/docs/tools/brave-search.md +0 -0
  801. package/docs/tools/browser-control.md +0 -0
  802. package/docs/tools/browser-linux-troubleshooting.md +0 -0
  803. package/docs/tools/browser-login.md +0 -0
  804. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +0 -0
  805. package/docs/tools/browser.md +0 -0
  806. package/docs/tools/btw.md +0 -0
  807. package/docs/tools/capability-cookbook.md +0 -0
  808. package/docs/tools/clawhub.md +0 -0
  809. package/docs/tools/code-execution.md +0 -0
  810. package/docs/tools/creating-skills.md +0 -0
  811. package/docs/tools/diffs.md +0 -0
  812. package/docs/tools/duckduckgo-search.md +0 -0
  813. package/docs/tools/elevated.md +0 -0
  814. package/docs/tools/exa-search.md +0 -0
  815. package/docs/tools/exec-approvals-advanced.md +0 -0
  816. package/docs/tools/exec-approvals.md +0 -0
  817. package/docs/tools/exec.md +0 -0
  818. package/docs/tools/firecrawl.md +0 -0
  819. package/docs/tools/gemini-search.md +0 -0
  820. package/docs/tools/goal.md +0 -0
  821. package/docs/tools/grok-search.md +0 -0
  822. package/docs/tools/image-generation.md +0 -0
  823. package/docs/tools/index.md +0 -0
  824. package/docs/tools/kimi-search.md +0 -0
  825. package/docs/tools/llm-task.md +0 -0
  826. package/docs/tools/lobster.md +0 -0
  827. package/docs/tools/loop-detection.md +0 -0
  828. package/docs/tools/media-overview.md +0 -0
  829. package/docs/tools/minimax-search.md +0 -0
  830. package/docs/tools/multi-agent-sandbox-tools.md +0 -0
  831. package/docs/tools/music-generation.md +0 -0
  832. package/docs/tools/ollama-search.md +0 -0
  833. package/docs/tools/pdf.md +0 -0
  834. package/docs/tools/perplexity-search.md +0 -0
  835. package/docs/tools/plugin.md +0 -0
  836. package/docs/tools/reactions.md +0 -0
  837. package/docs/tools/searxng-search.md +0 -0
  838. package/docs/tools/skills-config.md +0 -0
  839. package/docs/tools/skills.md +0 -0
  840. package/docs/tools/slash-commands.md +0 -0
  841. package/docs/tools/steer.md +0 -0
  842. package/docs/tools/subagents.md +0 -0
  843. package/docs/tools/tavily.md +0 -0
  844. package/docs/tools/thinking.md +0 -0
  845. package/docs/tools/tokenjuice.md +0 -0
  846. package/docs/tools/tool-search.md +0 -0
  847. package/docs/tools/trajectory.md +0 -0
  848. package/docs/tools/tts.md +0 -0
  849. package/docs/tools/video-generation.md +0 -0
  850. package/docs/tools/web-fetch.md +0 -0
  851. package/docs/tools/web.md +0 -0
  852. package/docs/tts.md +0 -0
  853. package/docs/vps.md +0 -0
  854. package/docs/web/control-ui.md +0 -0
  855. package/docs/web/dashboard.md +0 -0
  856. package/docs/web/index.md +0 -0
  857. package/docs/web/tui.md +0 -0
  858. package/docs/web/webchat.md +0 -0
  859. package/npm-shrinkwrap.json +0 -0
  860. package/package.json +110 -114
  861. package/patches/.gitkeep +0 -0
  862. package/patches/@agentclientprotocol__claude-agent-acp@0.37.0.patch +0 -0
  863. package/pnpm-workspace.yaml +0 -0
  864. package/scripts/crabbox-wrapper.mjs +0 -0
  865. package/scripts/lib/official-external-channel-catalog.json +0 -0
  866. package/scripts/lib/official-external-plugin-catalog.json +0 -0
  867. package/scripts/lib/official-external-provider-catalog.json +0 -0
  868. package/scripts/lib/package-dist-imports.mjs +0 -0
  869. package/scripts/npm-runner.mjs +0 -0
  870. package/scripts/postinstall-bundled-plugins.mjs +0 -0
  871. package/scripts/preinstall-package-manager-warning.mjs +0 -0
  872. package/scripts/prepare-git-hooks.mjs +0 -0
  873. package/scripts/windows-cmd-helpers.mjs +0 -0
  874. package/skills/canvas/SKILL.md +0 -0
  875. package/skills/clawhub/SKILL.md +0 -0
  876. package/skills/coding-agent/SKILL.md +0 -0
  877. package/skills/diagram-maker/SKILL.md +0 -0
  878. package/skills/diagram-maker/references/excalidraw-patterns.md +0 -0
  879. package/skills/diagram-maker/references/svg-template.md +0 -0
  880. package/skills/gemini/SKILL.md +0 -0
  881. package/skills/gh-issues/SKILL.md +0 -0
  882. package/skills/gifgrep/SKILL.md +0 -0
  883. package/skills/github/SKILL.md +0 -0
  884. package/skills/healthcheck/SKILL.md +0 -0
  885. package/skills/mcporter/SKILL.md +0 -0
  886. package/skills/meme-maker/SKILL.md +0 -0
  887. package/skills/meme-maker/references/templates.json +0 -0
  888. package/skills/meme-maker/scripts/meme.mjs +0 -0
  889. package/skills/model-usage/SKILL.md +0 -0
  890. package/skills/model-usage/references/codexbar-cli.md +0 -0
  891. package/skills/model-usage/scripts/model_usage.py +0 -0
  892. package/skills/model-usage/scripts/test_model_usage.py +0 -0
  893. package/skills/nano-pdf/SKILL.md +0 -0
  894. package/skills/node-connect/SKILL.md +0 -0
  895. package/skills/node-inspect-debugger/SKILL.md +0 -0
  896. package/skills/openai-whisper/SKILL.md +0 -0
  897. package/skills/openai-whisper-api/SKILL.md +0 -0
  898. package/skills/openai-whisper-api/scripts/transcribe.sh +0 -0
  899. package/skills/oracle/SKILL.md +0 -0
  900. package/skills/pyproject.toml +0 -0
  901. package/skills/python-debugpy/SKILL.md +0 -0
  902. package/skills/sag/SKILL.md +0 -0
  903. package/skills/session-logs/SKILL.md +0 -0
  904. package/skills/sherpa-onnx-tts/SKILL.md +0 -0
  905. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -0
  906. package/skills/skill-creator/SKILL.md +0 -0
  907. package/skills/skill-creator/license.txt +0 -0
  908. package/skills/skill-creator/scripts/init_skill.py +0 -0
  909. package/skills/skill-creator/scripts/package_skill.py +0 -0
  910. package/skills/skill-creator/scripts/quick_validate.py +0 -0
  911. package/skills/skill-creator/scripts/test_package_skill.py +0 -0
  912. package/skills/skill-creator/scripts/test_quick_validate.py +0 -0
  913. package/skills/spike/SKILL.md +0 -0
  914. package/skills/summarize/SKILL.md +0 -0
  915. package/skills/taskflow/SKILL.md +0 -0
  916. package/skills/taskflow/examples/inbox-triage.lobster +0 -0
  917. package/skills/taskflow/examples/pr-intake.lobster +0 -0
  918. package/skills/taskflow-inbox-triage/SKILL.md +0 -0
  919. package/skills/video-frames/SKILL.md +0 -0
  920. package/skills/video-frames/scripts/frame.sh +0 -0
  921. package/skills/voice-call/SKILL.md +0 -0
  922. package/skills/weather/SKILL.md +0 -0
  923. package/src/agents/templates/HEARTBEAT.md +0 -0
  924. package/dist/control-ui/assets/i18n-COx0mMoe.js +0 -2
@@ -1,4 +1,4 @@
1
- import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-COx0mMoe.js";import{s as r,v as i}from"./index-nC-y5600.js";var a=!1;function o(r){let o=!a;return t`
1
+ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-CqJHwmVQ.js";import{s as r,v as i}from"./index-CFA4p4Li.js";var a=!1;function o(r){let o=!a;return t`
2
2
  <section class="card">
3
3
  <div class="row" style="justify-content: space-between;">
4
4
  <div>
@@ -54,4 +54,4 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
54
54
  </div>
55
55
  </div>
56
56
  `}export{o as renderInstances};
57
- //# sourceMappingURL=instances-DWljwzyf.js.map
57
+ //# sourceMappingURL=instances-BbKVXLX1.js.map
@@ -1,9 +1,9 @@
1
- import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-COx0mMoe.js";import{t as r}from"./string-coerce-BuYUxt7q.js";var i=[`trace`,`debug`,`info`,`warn`,`error`,`fatal`];function a(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString()}function o(e,t){return t?r([e.message,e.subsystem,e.raw].filter(Boolean).join(` `)).includes(t):!0}function s(s){let c=r(s.filterText),l=i.some(e=>!s.levelFilters[e]),u=s.entries.filter(e=>e.level&&!s.levelFilters[e.level]?!1:o(e,c)),d=c||l?`filtered`:`visible`;return t`
1
+ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-CqJHwmVQ.js";import{t as r}from"./string-coerce-BuYUxt7q.js";var i=[`trace`,`debug`,`info`,`warn`,`error`,`fatal`];function a(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString()}function o(e,t){return t?r([e.message,e.subsystem,e.raw].filter(Boolean).join(` `)).includes(t):!0}function s(s){let c=r(s.filterText),l=i.some(e=>!s.levelFilters[e]),u=s.entries.filter(e=>e.level&&!s.levelFilters[e.level]?!1:o(e,c)),d=c||l?`filtered`:`visible`;return t`
2
2
  <section class="card card--fill-height">
3
3
  <div class="row" style="justify-content: space-between;">
4
4
  <div>
5
- <div class="card-title">Logs</div>
6
- <div class="card-sub">Gateway file logs (JSONL).</div>
5
+ <div class="card-title">${n(`logs.title`)}</div>
6
+ <div class="card-sub">${n(`logs.subtitle`)}</div>
7
7
  </div>
8
8
  <div class="row" style="gap: 8px;">
9
9
  <button class="btn" ?disabled=${s.loading} @click=${s.onRefresh}>
@@ -21,7 +21,7 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
21
21
 
22
22
  <div class="filters" style="margin-top: 14px;">
23
23
  <label class="field" style="min-width: 220px;">
24
- <span>Filter</span>
24
+ <span>${n(`logs.filter`)}</span>
25
25
  <input
26
26
  .value=${s.filterText}
27
27
  @input=${e=>s.onFilterTextChange(e.target.value)}
@@ -29,7 +29,7 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
29
29
  />
30
30
  </label>
31
31
  <label class="field checkbox">
32
- <span>Auto-follow</span>
32
+ <span>${n(`logs.autoFollow`)}</span>
33
33
  <input
34
34
  type="checkbox"
35
35
  .checked=${s.autoFollow}
@@ -60,7 +60,7 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
60
60
  ${s.error?t`<div class="callout danger" style="margin-top: 10px;">${s.error}</div>`:e}
61
61
 
62
62
  <div class="log-stream" style="margin-top: 12px;" @scroll=${s.onScroll}>
63
- ${u.length===0?t` <div class="muted" style="padding: 12px">No log entries.</div> `:u.map(e=>t`
63
+ ${u.length===0?t` <div class="muted" style="padding: 12px">${n(`logs.noEntries`)}</div> `:u.map(e=>t`
64
64
  <div class="log-row">
65
65
  <div class="log-time mono">${a(e.time)}</div>
66
66
  <div class="log-level ${e.level??``}">${e.level??``}</div>
@@ -71,4 +71,4 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
71
71
  </div>
72
72
  </section>
73
73
  `}export{s as renderLogs};
74
- //# sourceMappingURL=logs-D7YSLRvz.js.map
74
+ //# sourceMappingURL=logs-B4vkHG-U.js.map
@@ -1,8 +1,8 @@
1
- import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-COx0mMoe.js";import{r}from"./string-coerce-BuYUxt7q.js";import{F as i,I as a,lt as o,z as s}from"./index-nC-y5600.js";function c(...e){let t=new Set;for(let n of e){if(!n)continue;if(Array.isArray(n)){for(let e of n){let n=e.trim();n&&t.add(n)}continue}let e=n.trim();e&&t.add(e)}return[...t].toSorted()}function l(e,t){let n=new Set(e);return t.every(e=>n.has(e))}function u(e){return{roles:c(e.roles,e.role),scopes:o(e.scopes)}}function d(e){let t=c(e.roles,e.role),n=Array.isArray(e.tokens)?e.tokens:e.tokens?Object.values(e.tokens):void 0;return{roles:n===void 0?t:c(n.filter(e=>!e.revokedAtMs).flatMap(e=>e.role??[])).filter(e=>t.includes(e)),scopes:o(e.scopes)}}function f(e,t){let n=u(e),r=t?d(t):null;return r?l(r.roles,n.roles)?l(r.scopes,n.scopes)?{kind:`re-approval`,requested:n,approved:r}:{kind:`scope-upgrade`,requested:n,approved:r}:{kind:`role-upgrade`,requested:n,approved:r}:{kind:`new-pairing`,requested:n,approved:null}}function p(e){let t=e?.agents??{},n=Array.isArray(t.list)?t.list:[],i=[];return n.forEach((e,t)=>{if(!e||typeof e!=`object`)return;let n=e,a=r(n.id)??``;if(!a)return;let o=r(n.name),s=n.default===!0;i.push({id:a,name:o,isDefault:s,index:t,record:n})}),i}function m(e,t){let n=new Set(t),i=[];for(let t of e){if(!(Array.isArray(t.commands)?t.commands:[]).some(e=>n.has(String(e))))continue;let e=r(t.nodeId)??``;if(!e)continue;let a=r(t.displayName)??e;i.push({id:e,label:a===e?e:`${a} · ${e}`})}return i.sort((e,t)=>e.label.localeCompare(t.label)),i}var h=`__defaults__`,g=[{value:`deny`,label:`nodes.exec.securityLevels.deny`},{value:`allowlist`,label:`nodes.exec.securityLevels.allowlist`},{value:`full`,label:`nodes.exec.securityLevels.full`}],_=[{value:`off`,label:`nodes.exec.askLevels.off`},{value:`on-miss`,label:`nodes.exec.askLevels.onMiss`},{value:`always`,label:`nodes.exec.askLevels.always`}];function v(e){return e===`allowlist`||e===`full`||e===`deny`?e:`deny`}function y(e){return e===`always`||e===`off`||e===`on-miss`?e:`on-miss`}function b(e){let t=e?.defaults??{};return{security:v(t.security),ask:y(t.ask),askFallback:v(t.askFallback??`deny`),autoAllowSkills:t.autoAllowSkills??!1}}function x(e){return p(e).map(e=>({id:e.id,name:e.name,isDefault:e.isDefault}))}function S(e,t){let n=x(e),r=Object.keys(t?.agents??{}),i=new Map;n.forEach(e=>i.set(e.id,e)),r.forEach(e=>{i.has(e)||i.set(e,{id:e})});let a=Array.from(i.values());return a.length===0&&a.push({id:`main`,isDefault:!0}),a.sort((e,t)=>{if(e.isDefault&&!t.isDefault)return-1;if(!e.isDefault&&t.isDefault)return 1;let n=e.name?.trim()?e.name:e.id,r=t.name?.trim()?t.name:t.id;return n.localeCompare(r)}),a}function C(e,t){return e===h?h:e&&t.some(t=>t.id===e)?e:h}function w(e){let t=e.execApprovalsForm??e.execApprovalsSnapshot?.file??null,n=!!t,r=b(t),i=S(e.configForm,t),a=j(e.nodes),o=e.execApprovalsTarget,s=o===`node`&&e.execApprovalsTargetNodeId?e.execApprovalsTargetNodeId:null;o===`node`&&s&&!a.some(e=>e.id===s)&&(s=null);let c=C(e.execApprovalsSelectedAgent,i),l=c===h?null:(t?.agents??{})[c]??null,u=Array.isArray(l?.allowlist)?l.allowlist??[]:[];return{ready:n,disabled:e.execApprovalsSaving||e.execApprovalsLoading,dirty:e.execApprovalsDirty,loading:e.execApprovalsLoading,saving:e.execApprovalsSaving,form:t,defaults:r,selectedScope:c,selectedAgent:l,agents:i,allowlist:u,target:o,targetNodeId:s,targetNodes:a,onSelectScope:e.onExecApprovalsSelectAgent,onSelectTarget:e.onExecApprovalsTargetChange,onPatch:e.onExecApprovalsPatch,onRemove:e.onExecApprovalsRemove,onLoad:e.onLoadExecApprovals,onSave:e.onSaveExecApprovals}}function T(r){let i=r.ready,a=r.target!==`node`||!!r.targetNodeId;return t`
1
+ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-CqJHwmVQ.js";import{r}from"./string-coerce-BuYUxt7q.js";import{F as i,I as a,lt as o,z as s}from"./index-CFA4p4Li.js";function c(...e){let t=new Set;for(let n of e){if(!n)continue;if(Array.isArray(n)){for(let e of n){let n=e.trim();n&&t.add(n)}continue}let e=n.trim();e&&t.add(e)}return[...t].toSorted()}function l(e,t){let n=new Set(e);return t.every(e=>n.has(e))}function u(e){return{roles:c(e.roles,e.role),scopes:o(e.scopes)}}function d(e){let t=c(e.roles,e.role),n=Array.isArray(e.tokens)?e.tokens:e.tokens?Object.values(e.tokens):void 0;return{roles:n===void 0?t:c(n.filter(e=>!e.revokedAtMs).flatMap(e=>e.role??[])).filter(e=>t.includes(e)),scopes:o(e.scopes)}}function f(e,t){let n=u(e),r=t?d(t):null;return r?l(r.roles,n.roles)?l(r.scopes,n.scopes)?{kind:`re-approval`,requested:n,approved:r}:{kind:`scope-upgrade`,requested:n,approved:r}:{kind:`role-upgrade`,requested:n,approved:r}:{kind:`new-pairing`,requested:n,approved:null}}function p(e){let t=e?.agents??{},n=Array.isArray(t.list)?t.list:[],i=[];return n.forEach((e,t)=>{if(!e||typeof e!=`object`)return;let n=e,a=r(n.id)??``;if(!a)return;let o=r(n.name),s=n.default===!0;i.push({id:a,name:o,isDefault:s,index:t,record:n})}),i}function m(e,t){let n=new Set(t),i=[];for(let t of e){if(!(Array.isArray(t.commands)?t.commands:[]).some(e=>n.has(String(e))))continue;let e=r(t.nodeId)??``;if(!e)continue;let a=r(t.displayName)??e;i.push({id:e,label:a===e?e:`${a} · ${e}`})}return i.sort((e,t)=>e.label.localeCompare(t.label)),i}var h=`__defaults__`,g=[{value:`deny`,label:`nodes.exec.securityLevels.deny`},{value:`allowlist`,label:`nodes.exec.securityLevels.allowlist`},{value:`full`,label:`nodes.exec.securityLevels.full`}],_=[{value:`off`,label:`nodes.exec.askLevels.off`},{value:`on-miss`,label:`nodes.exec.askLevels.onMiss`},{value:`always`,label:`nodes.exec.askLevels.always`}];function v(e){return e===`allowlist`||e===`full`||e===`deny`?e:`deny`}function y(e){return e===`always`||e===`off`||e===`on-miss`?e:`on-miss`}function b(e){let t=e?.defaults??{};return{security:v(t.security),ask:y(t.ask),askFallback:v(t.askFallback??`deny`),autoAllowSkills:t.autoAllowSkills??!1}}function x(e){return p(e).map(e=>({id:e.id,name:e.name,isDefault:e.isDefault}))}function S(e,t){let n=x(e),r=Object.keys(t?.agents??{}),i=new Map;n.forEach(e=>i.set(e.id,e)),r.forEach(e=>{i.has(e)||i.set(e,{id:e})});let a=Array.from(i.values());return a.length===0&&a.push({id:`main`,isDefault:!0}),a.sort((e,t)=>{if(e.isDefault&&!t.isDefault)return-1;if(!e.isDefault&&t.isDefault)return 1;let n=e.name?.trim()?e.name:e.id,r=t.name?.trim()?t.name:t.id;return n.localeCompare(r)}),a}function C(e,t){return e===h?h:e&&t.some(t=>t.id===e)?e:h}function w(e){let t=e.execApprovalsForm??e.execApprovalsSnapshot?.file??null,n=!!t,r=b(t),i=S(e.configForm,t),a=j(e.nodes),o=e.execApprovalsTarget,s=o===`node`&&e.execApprovalsTargetNodeId?e.execApprovalsTargetNodeId:null;o===`node`&&s&&!a.some(e=>e.id===s)&&(s=null);let c=C(e.execApprovalsSelectedAgent,i),l=c===h?null:(t?.agents??{})[c]??null,u=Array.isArray(l?.allowlist)?l.allowlist??[]:[];return{ready:n,disabled:e.execApprovalsSaving||e.execApprovalsLoading,dirty:e.execApprovalsDirty,loading:e.execApprovalsLoading,saving:e.execApprovalsSaving,form:t,defaults:r,selectedScope:c,selectedAgent:l,agents:i,allowlist:u,target:o,targetNodeId:s,targetNodes:a,onSelectScope:e.onExecApprovalsSelectAgent,onSelectTarget:e.onExecApprovalsTargetChange,onPatch:e.onExecApprovalsPatch,onRemove:e.onExecApprovalsRemove,onLoad:e.onLoadExecApprovals,onSave:e.onSaveExecApprovals}}function T(r){let i=r.ready,a=r.target!==`node`||!!r.targetNodeId;return t`
2
2
  <section class="card">
3
3
  <div class="row" style="justify-content: space-between; align-items: center;">
4
4
  <div>
5
- <div class="card-title">Exec approvals</div>
5
+ <div class="card-title">${n(`nodes.execApprovals`)}</div>
6
6
  <div class="card-sub">
7
7
  Allowlist and approval policy for <span class="mono">exec host=gateway/node</span>.
8
8
  </div>
@@ -21,39 +21,41 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
21
21
  ${D(r)} ${O(r)}
22
22
  ${r.selectedScope===h?e:k(r)}
23
23
  `:t`<div class="row" style="margin-top: 12px; gap: 12px;">
24
- <div class="muted">Load exec approvals to edit allowlists.</div>
24
+ <div class="muted">${n(`nodes.execApprovalsLoadHint`)}</div>
25
25
  <button class="btn" ?disabled=${r.loading||!a} @click=${r.onLoad}>
26
26
  ${r.loading?n(`common.loading`):n(`common.loadApprovals`)}
27
27
  </button>
28
28
  </div>`}
29
29
  </section>
30
- `}function E(n){let r=n.targetNodes.length>0,i=n.targetNodeId??``;return t`
30
+ `}function E(r){let i=r.targetNodes.length>0,a=r.targetNodeId??``;return t`
31
31
  <div class="list" style="margin-top: 12px;">
32
32
  <div class="list-item">
33
33
  <div class="list-main">
34
- <div class="list-title">Target</div>
34
+ <div class="list-title">${n(`nodes.target`)}</div>
35
35
  <div class="list-sub">Gateway edits local approvals; node edits the selected node.</div>
36
36
  </div>
37
37
  <div class="list-meta">
38
38
  <label class="field">
39
39
  <span>Host</span>
40
40
  <select
41
- ?disabled=${n.disabled}
42
- @change=${e=>{if(e.target.value===`node`){let e=n.targetNodes[0]?.id??null;n.onSelectTarget(`node`,i||e)}else n.onSelectTarget(`gateway`,null)}}
41
+ ?disabled=${r.disabled}
42
+ @change=${e=>{if(e.target.value===`node`){let e=r.targetNodes[0]?.id??null;r.onSelectTarget(`node`,a||e)}else r.onSelectTarget(`gateway`,null)}}
43
43
  >
44
- <option value="gateway" ?selected=${n.target===`gateway`}>Gateway</option>
45
- <option value="node" ?selected=${n.target===`node`}>Node</option>
44
+ <option value="gateway" ?selected=${r.target===`gateway`}>Gateway</option>
45
+ <option value="node" ?selected=${r.target===`node`}>
46
+ ${n(`nodes.nodeOption`)}
47
+ </option>
46
48
  </select>
47
49
  </label>
48
- ${n.target===`node`?t`
50
+ ${r.target===`node`?t`
49
51
  <label class="field">
50
- <span>Node</span>
52
+ <span>${n(`nodes.nodeLabel`)}</span>
51
53
  <select
52
- ?disabled=${n.disabled||!r}
53
- @change=${e=>{let t=e.target.value.trim();n.onSelectTarget(`node`,t||null)}}
54
+ ?disabled=${r.disabled||!i}
55
+ @change=${e=>{let t=e.target.value.trim();r.onSelectTarget(`node`,t||null)}}
54
56
  >
55
- <option value="" ?selected=${i===``}>Select node</option>
56
- ${n.targetNodes.map(e=>t`<option value=${e.id} ?selected=${i===e.id}>
57
+ <option value="" ?selected=${a===``}>Select node</option>
58
+ ${r.targetNodes.map(e=>t`<option value=${e.id} ?selected=${a===e.id}>
57
59
  ${e.label}
58
60
  </option>`)}
59
61
  </select>
@@ -61,11 +63,11 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
61
63
  `:e}
62
64
  </div>
63
65
  </div>
64
- ${n.target===`node`&&!r?t` <div class="muted">No nodes advertise exec approvals yet.</div> `:e}
66
+ ${r.target===`node`&&!i?t` <div class="muted">${n(`nodes.noExecApprovalsNodes`)}</div> `:e}
65
67
  </div>
66
68
  `}function D(e){return t`
67
69
  <div class="row" style="margin-top: 12px; gap: 8px; flex-wrap: wrap;">
68
- <span class="label">Scope</span>
70
+ <span class="label">${n(`nodes.scope`)}</span>
69
71
  <div class="row" style="gap: 8px; flex-wrap: wrap;">
70
72
  <button
71
73
  class="btn btn--sm ${e.selectedScope===h?`active`:``}"
@@ -187,45 +189,47 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
187
189
  </div>
188
190
  </div>
189
191
  </div>
190
- `}function k(e){let n=[`agents`,e.selectedScope,`allowlist`],r=e.allowlist;return t`
192
+ `}function k(e){let r=[`agents`,e.selectedScope,`allowlist`],i=e.allowlist;return t`
191
193
  <div class="row" style="margin-top: 18px; justify-content: space-between;">
192
194
  <div>
193
- <div class="card-title">Allowlist</div>
195
+ <div class="card-title">${n(`nodes.allowlist`)}</div>
194
196
  <div class="card-sub">Case-insensitive glob patterns.</div>
195
197
  </div>
196
198
  <button
197
199
  class="btn btn--sm"
198
200
  ?disabled=${e.disabled}
199
- @click=${()=>{let t=[...r,{pattern:``}];e.onPatch(n,t)}}
201
+ @click=${()=>{let t=[...i,{pattern:``}];e.onPatch(r,t)}}
200
202
  >
201
203
  Add pattern
202
204
  </button>
203
205
  </div>
204
206
  <div class="list" style="margin-top: 12px;">
205
- ${r.length===0?t` <div class="muted">No allowlist entries yet.</div> `:r.map((t,n)=>A(e,t,n))}
207
+ ${i.length===0?t` <div class="muted">${n(`nodes.noAllowlistEntries`)}</div> `:i.map((t,n)=>A(e,t,n))}
206
208
  </div>
207
- `}function A(n,r,a){let o=r.lastUsedAt?s(r.lastUsedAt):`never`,c=r.lastUsedCommand?i(r.lastUsedCommand,120):null,l=r.lastResolvedPath?i(r.lastResolvedPath,120):null;return t`
209
+ `}function A(r,a,o){let c=a.lastUsedAt?s(a.lastUsedAt):`never`,l=a.lastUsedCommand?i(a.lastUsedCommand,120):null,u=a.lastResolvedPath?i(a.lastResolvedPath,120):null;return t`
208
210
  <div class="list-item">
209
211
  <div class="list-main">
210
- <div class="list-title">${r.pattern?.trim()?r.pattern:`New pattern`}</div>
211
- <div class="list-sub">Last used: ${o}</div>
212
- ${c?t`<div class="list-sub mono">${c}</div>`:e}
212
+ <div class="list-title">
213
+ ${a.pattern?.trim()?a.pattern:n(`execApproval.newPattern`)}
214
+ </div>
215
+ <div class="list-sub">Last used: ${c}</div>
213
216
  ${l?t`<div class="list-sub mono">${l}</div>`:e}
217
+ ${u?t`<div class="list-sub mono">${u}</div>`:e}
214
218
  </div>
215
219
  <div class="list-meta">
216
220
  <label class="field">
217
221
  <span>Pattern</span>
218
222
  <input
219
223
  type="text"
220
- .value=${r.pattern??``}
221
- ?disabled=${n.disabled}
222
- @input=${e=>{let t=e.target;n.onPatch([`agents`,n.selectedScope,`allowlist`,a,`pattern`],t.value)}}
224
+ .value=${a.pattern??``}
225
+ ?disabled=${r.disabled}
226
+ @input=${e=>{let t=e.target;r.onPatch([`agents`,r.selectedScope,`allowlist`,o,`pattern`],t.value)}}
223
227
  />
224
228
  </label>
225
229
  <button
226
230
  class="btn btn--sm danger"
227
- ?disabled=${n.disabled}
228
- @click=${()=>{if(n.allowlist.length<=1){n.onRemove([`agents`,n.selectedScope,`allowlist`]);return}n.onRemove([`agents`,n.selectedScope,`allowlist`,a])}}
231
+ ?disabled=${r.disabled}
232
+ @click=${()=>{if(r.allowlist.length<=1){r.onRemove([`agents`,r.selectedScope,`allowlist`]);return}r.onRemove([`agents`,r.selectedScope,`allowlist`,o])}}
229
233
  >
230
234
  Remove
231
235
  </button>
@@ -236,7 +240,7 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
236
240
  <section class="card">
237
241
  <div class="row" style="justify-content: space-between;">
238
242
  <div>
239
- <div class="card-title">Nodes</div>
243
+ <div class="card-title">${n(`nodes.title`)}</div>
240
244
  <div class="card-sub">Paired devices and live links.</div>
241
245
  </div>
242
246
  <button class="btn" ?disabled=${e.loading} @click=${e.onRefresh}>
@@ -244,14 +248,14 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
244
248
  </button>
245
249
  </div>
246
250
  <div class="list" style="margin-top: 16px;">
247
- ${e.nodes.length===0?t` <div class="muted">No nodes found.</div> `:e.nodes.map(e=>G(e))}
251
+ ${e.nodes.length===0?t` <div class="muted">${n(`nodes.noNodesFound`)}</div> `:e.nodes.map(e=>G(e))}
248
252
  </div>
249
253
  </section>
250
254
  `}function N(i){let a=i.devicesList??{pending:[],paired:[]},o=Array.isArray(a.pending)?a.pending:[],s=Array.isArray(a.paired)?a.paired:[],c=new Map(s.map(e=>[r(e.deviceId),e]).filter(e=>!!e[0]));return t`
251
255
  <section class="card">
252
256
  <div class="row" style="justify-content: space-between;">
253
257
  <div>
254
- <div class="card-title">Devices</div>
258
+ <div class="card-title">${n(`nodes.devices`)}</div>
255
259
  <div class="card-sub">Pairing requests + role tokens.</div>
256
260
  </div>
257
261
  <button class="btn" ?disabled=${i.devicesLoading} @click=${i.onDevicesRefresh}>
@@ -261,14 +265,16 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
261
265
  ${i.devicesError?t`<div class="callout danger" style="margin-top: 12px;">${i.devicesError}</div>`:e}
262
266
  <div class="list" style="margin-top: 16px;">
263
267
  ${o.length>0?t`
264
- <div class="muted" style="margin-bottom: 8px;">Pending</div>
268
+ <div class="muted" style="margin-bottom: 8px;">${n(`nodes.pending`)}</div>
265
269
  ${o.map(e=>L(e,i,P(c,e)))}
266
270
  `:e}
267
271
  ${s.length>0?t`
268
- <div class="muted" style="margin-top: 12px; margin-bottom: 8px;">Paired</div>
272
+ <div class="muted" style="margin-top: 12px; margin-bottom: 8px;">
273
+ ${n(`nodes.paired`)}
274
+ </div>
269
275
  ${s.map(e=>R(e,i))}
270
276
  `:e}
271
- ${o.length===0&&s.length===0?t` <div class="muted">No paired devices.</div> `:e}
277
+ ${o.length===0&&s.length===0?t` <div class="muted">${n(`nodes.noPairedDevices`)}</div> `:e}
272
278
  </div>
273
279
  </section>
274
280
  `}function P(e,t){let n=r(t.deviceId);if(!n)return;let i=e.get(n);if(!i)return;let a=r(t.publicKey),o=r(i.publicKey);if(!(a&&o&&a!==o))return i}function F(e){return e?`roles: ${a(e.roles)} · scopes: ${a(e.scopes)}`:`none`}function I(e){switch(e){case`scope-upgrade`:return`scope upgrade requires approval`;case`role-upgrade`:return`role upgrade requires approval`;case`re-approval`:return`reconnect details changed; approval required`;case`new-pairing`:return`new device pairing request`}throw Error(`unsupported pending approval kind`)}function L(i,a,o){let c=r(i.displayName)||i.deviceId,l=typeof i.ts==`number`?s(i.ts):n(`common.na`),u=f(i,o),d=i.isRepair?` · repair`:``,p=i.remoteIp?` · ${i.remoteIp}`:``;return t`
@@ -299,16 +305,16 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
299
305
  </div>
300
306
  </div>
301
307
  </div>
302
- `}function R(e,n){let i=r(e.displayName)||e.deviceId,o=e.remoteIp?` · ${e.remoteIp}`:``,s=`roles: ${a(e.roles)}`,c=`scopes: ${a(e.scopes)}`,l=Array.isArray(e.tokens)?e.tokens:[];return t`
308
+ `}function R(e,i){let o=r(e.displayName)||e.deviceId,s=e.remoteIp?` · ${e.remoteIp}`:``,c=`roles: ${a(e.roles)}`,l=`scopes: ${a(e.scopes)}`,u=Array.isArray(e.tokens)?e.tokens:[];return t`
303
309
  <div class="list-item">
304
310
  <div class="list-main">
305
- <div class="list-title">${i}</div>
306
- <div class="list-sub">${e.deviceId}${o}</div>
307
- <div class="muted" style="margin-top: 6px;">${s} · ${c}</div>
308
- ${l.length===0?t` <div class="muted" style="margin-top: 6px">Tokens: none</div> `:t`
309
- <div class="muted" style="margin-top: 10px;">Tokens</div>
311
+ <div class="list-title">${o}</div>
312
+ <div class="list-sub">${e.deviceId}${s}</div>
313
+ <div class="muted" style="margin-top: 6px;">${c} · ${l}</div>
314
+ ${u.length===0?t` <div class="muted" style="margin-top: 6px">${n(`nodes.tokensNone`)}</div> `:t`
315
+ <div class="muted" style="margin-top: 10px;">${n(`nodes.tokens`)}</div>
310
316
  <div style="display: flex; flex-direction: column; gap: 8px; margin-top: 6px;">
311
- ${l.map(t=>z(e.deviceId,t,n))}
317
+ ${u.map(t=>z(e.deviceId,t,i))}
312
318
  </div>
313
319
  `}
314
320
  </div>
@@ -368,17 +374,19 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
368
374
  ?disabled=${r.disabled||!i}
369
375
  @change=${e=>{let t=e.target.value.trim();r.onBindDefault(t||null)}}
370
376
  >
371
- <option value="" ?selected=${a===``}>Any node</option>
377
+ <option value="" ?selected=${a===``}>
378
+ ${n(`nodes.anyNode`)}
379
+ </option>
372
380
  ${r.nodes.map(e=>t`<option value=${e.id} ?selected=${a===e.id}>
373
381
  ${e.label}
374
382
  </option>`)}
375
383
  </select>
376
384
  </label>
377
- ${i?e:t` <div class="muted">No nodes with system.run available.</div> `}
385
+ ${i?e:t` <div class="muted">${n(`nodes.noSystemRunNodes`)}</div> `}
378
386
  </div>
379
387
  </div>
380
388
 
381
- ${r.agents.length===0?t` <div class="muted">No agents found.</div> `:r.agents.map(e=>H(e,r))}
389
+ ${r.agents.length===0?t` <div class="muted">${n(`nodes.noAgentsFound`)}</div> `:r.agents.map(e=>H(e,r))}
382
390
  </div>
383
391
  `:t`<div class="row" style="margin-top: 12px; gap: 12px;">
384
392
  <div class="muted">${n(`nodes.binding.loadConfigHint`)}</div>
@@ -387,26 +395,26 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
387
395
  </button>
388
396
  </div>`}
389
397
  </section>
390
- `}function H(e,n){let r=e.binding??`__default__`,i=e.name?.trim()?`${e.name} (${e.id})`:e.id,a=n.nodes.length>0;return t`
398
+ `}function H(e,r){let i=e.binding??`__default__`,a=e.name?.trim()?`${e.name} (${e.id})`:e.id,o=r.nodes.length>0;return t`
391
399
  <div class="list-item">
392
400
  <div class="list-main">
393
- <div class="list-title">${i}</div>
401
+ <div class="list-title">${a}</div>
394
402
  <div class="list-sub">
395
- ${e.isDefault?`default agent`:`agent`} ·
396
- ${r===`__default__`?`uses default (${n.defaultBinding??`any`})`:`override: ${e.binding}`}
403
+ ${e.isDefault?n(`common.default`):`agent`} ·
404
+ ${i===`__default__`?`uses default (${r.defaultBinding??`any`})`:`override: ${e.binding}`}
397
405
  </div>
398
406
  </div>
399
407
  <div class="list-meta">
400
408
  <label class="field">
401
409
  <span>Binding</span>
402
410
  <select
403
- ?disabled=${n.disabled||!a}
404
- @change=${t=>{let r=t.target.value.trim();n.onBindAgent(e.index,r===`__default__`?null:r)}}
411
+ ?disabled=${r.disabled||!o}
412
+ @change=${t=>{let n=t.target.value.trim();r.onBindAgent(e.index,n===`__default__`?null:n)}}
405
413
  >
406
- <option value="__default__" ?selected=${r===`__default__`}>
414
+ <option value="__default__" ?selected=${i===`__default__`}>
407
415
  Use default
408
416
  </option>
409
- ${n.nodes.map(e=>t`<option value=${e.id} ?selected=${r===e.id}>
417
+ ${r.nodes.map(e=>t`<option value=${e.id} ?selected=${i===e.id}>
410
418
  ${e.label}
411
419
  </option>`)}
412
420
  </select>
@@ -433,4 +441,4 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
433
441
  </div>
434
442
  </div>
435
443
  `}export{M as renderNodes};
436
- //# sourceMappingURL=nodes-D1vIdMC3.js.map
444
+ //# sourceMappingURL=nodes-DrdIa_Kj.js.map
@@ -1,2 +1,2 @@
1
- import{r as e}from"./i18n-COx0mMoe.js";var t=1e4;function n(){return Promise.race([navigator.serviceWorker.ready,new Promise((e,n)=>setTimeout(()=>n(Error(`Service worker not ready (timed out)`)),t))])}function r(e){let t=(e+`=`.repeat((4-e.length%4)%4)).replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}async function i(){return`serviceWorker`in navigator?await(await n()).pushManager.getSubscription():null}async function a(t){let i=await Notification.requestPermission();if(i!==`granted`)throw Error(`Notification permission ${i}`);let a=(await t.request(`push.web.vapidPublicKey`,{})).vapidPublicKey;if(!a)throw Error(`Failed to retrieve VAPID public key`);let o=await(await n()).pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:r(a).buffer}),s=o.toJSON();if(!s.endpoint||!s.keys?.p256dh||!s.keys?.auth)throw Error(e(`chat.invalidPushSubscription`));try{return await t.request(`push.web.subscribe`,{endpoint:s.endpoint,keys:{p256dh:s.keys.p256dh,auth:s.keys.auth}})}catch(e){try{await o.unsubscribe()}catch{}throw e}}async function o(e){let t=await(await n()).pushManager.getSubscription();if(t){try{await e.request(`push.web.unsubscribe`,{endpoint:t.endpoint})}catch{}await t.unsubscribe()}}async function s(e,t){await e.request(`push.web.test`,{title:t?.title,body:t?.body})}export{i as getExistingSubscription,s as sendTestWebPush,a as subscribeToWebPush,o as unsubscribeFromWebPush};
2
- //# sourceMappingURL=push-subscription-SK4PlhIV.js.map
1
+ import{r as e}from"./i18n-CqJHwmVQ.js";var t=1e4;function n(){return Promise.race([navigator.serviceWorker.ready,new Promise((e,n)=>setTimeout(()=>n(Error(`Service worker not ready (timed out)`)),t))])}function r(e){let t=(e+`=`.repeat((4-e.length%4)%4)).replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}async function i(){return`serviceWorker`in navigator?await(await n()).pushManager.getSubscription():null}async function a(t){let i=await Notification.requestPermission();if(i!==`granted`)throw Error(`Notification permission ${i}`);let a=(await t.request(`push.web.vapidPublicKey`,{})).vapidPublicKey;if(!a)throw Error(`Failed to retrieve VAPID public key`);let o=await(await n()).pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:r(a).buffer}),s=o.toJSON();if(!s.endpoint||!s.keys?.p256dh||!s.keys?.auth)throw Error(e(`chat.invalidPushSubscription`));try{return await t.request(`push.web.subscribe`,{endpoint:s.endpoint,keys:{p256dh:s.keys.p256dh,auth:s.keys.auth}})}catch(e){try{await o.unsubscribe()}catch{}throw e}}async function o(e){let t=await(await n()).pushManager.getSubscription();if(t){try{await e.request(`push.web.unsubscribe`,{endpoint:t.endpoint})}catch{}await t.unsubscribe()}}async function s(e,t){await e.request(`push.web.test`,{title:t?.title,body:t?.body})}export{i as getExistingSubscription,s as sendTestWebPush,a as subscribeToWebPush,o as unsubscribeFromWebPush};
2
+ //# sourceMappingURL=push-subscription-Ck2KdK-7.js.map
@@ -1,4 +1,4 @@
1
- import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-COx0mMoe.js";import{r,t as i}from"./string-coerce-BuYUxt7q.js";import{P as a,R as o,X as s,c,d as l,f as u,h as d,it as f,m as p,p as m,v as h,z as g}from"./index-nC-y5600.js";var _=[`off`,`minimal`,`low`,`medium`,`high`],v=[``,`off`,`on`,`full`],y=[``,`on`,`off`],b=[``,`off`,`on`,`stream`],x=[10,25,50,100];function S(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]??null:null}function C(e,t){return(!e.modelProvider||e.modelProvider===t?.modelProvider)&&(!e.model||e.model===t?.model)}function ee(e,t){let n=C(e,t),r=l(e.thinkingDefault??(n?t?.thinkingDefault:void 0)),i=e.thinkingLevels?.length?e.thinkingLevels:n&&t?.thinkingLevels?.length?t.thinkingLevels:(e.thinkingOptions?.length?e.thinkingOptions:n&&t?.thinkingOptions?.length?t.thinkingOptions:_).map(e=>({id:m(e),label:e}));return[{value:``,label:r},...i.map(e=>({value:m(e.id),label:u(e.id,e.label)}))]}function te(e,t){return!t||e.includes(t)?[...e]:[...e,t]}function w(e,t){return!t||e.some(e=>e.value===t)?[...e]:[...e,{value:t,label:u(t)}]}function ne(){return v.map(e=>({value:e,label:n(e===``?`sessionsView.inherit`:e===`off`?`sessionsView.offExplicit`:`sessionsView.${e}`)}))}function re(){return y.map(e=>({value:e,label:n(e===``?`sessionsView.inherit`:`sessionsView.${e}`)}))}function T(e){switch(e){case`running`:return n(`sessionsView.statusRunning`);case`done`:return n(`sessionsView.statusDone`);case`failed`:return n(`sessionsView.statusFailed`);case`killed`:return n(`sessionsView.statusKilled`);case`timeout`:return n(`sessionsView.statusTimeout`);default:return n(`sessionsView.statusUnknown`)}}function E(e){if(a(e))return{label:n(`sessionsView.statusLive`),tone:`live`};if(e.status===`running`&&e.hasActiveRun===!1)return{label:n(`sessionsView.statusIdle`),tone:`idle`};if(e.status){let t=e.status===`done`?`done`:`failed`;return{label:T(e.status),tone:t}}return e.hasActiveRun===!1?{label:n(`sessionsView.statusIdle`),tone:`idle`}:{label:n(`sessionsView.statusUnknown`),tone:`muted`}}function D(e){let r=E(e),i=`${n(`sessionsView.status`)}: ${r.label}`;return t`
1
+ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-CqJHwmVQ.js";import{r,t as i}from"./string-coerce-BuYUxt7q.js";import{P as a,R as o,X as s,c,d as l,f as u,h as d,it as f,m as p,p as m,v as h,z as g}from"./index-CFA4p4Li.js";var _=[`off`,`minimal`,`low`,`medium`,`high`],v=[``,`off`,`on`,`full`],y=[``,`on`,`off`],b=[``,`off`,`on`,`stream`],x=[10,25,50,100];function S(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]??null:null}function C(e,t){return(!e.modelProvider||e.modelProvider===t?.modelProvider)&&(!e.model||e.model===t?.model)}function ee(e,t){let n=C(e,t),r=l(e.thinkingDefault??(n?t?.thinkingDefault:void 0)),i=e.thinkingLevels?.length?e.thinkingLevels:n&&t?.thinkingLevels?.length?t.thinkingLevels:(e.thinkingOptions?.length?e.thinkingOptions:n&&t?.thinkingOptions?.length?t.thinkingOptions:_).map(e=>({id:m(e),label:e}));return[{value:``,label:r},...i.map(e=>({value:m(e.id),label:u(e.id,e.label)}))]}function te(e,t){return!t||e.includes(t)?[...e]:[...e,t]}function w(e,t){return!t||e.some(e=>e.value===t)?[...e]:[...e,{value:t,label:u(t)}]}function ne(){return v.map(e=>({value:e,label:n(e===``?`sessionsView.inherit`:e===`off`?`sessionsView.offExplicit`:`sessionsView.${e}`)}))}function re(){return y.map(e=>({value:e,label:n(e===``?`sessionsView.inherit`:`sessionsView.${e}`)}))}function T(e){switch(e){case`running`:return n(`sessionsView.statusRunning`);case`done`:return n(`sessionsView.statusDone`);case`failed`:return n(`sessionsView.statusFailed`);case`killed`:return n(`sessionsView.statusKilled`);case`timeout`:return n(`sessionsView.statusTimeout`);default:return n(`sessionsView.statusUnknown`)}}function E(e){if(a(e))return{label:n(`sessionsView.statusLive`),tone:`live`};if(e.status===`running`&&e.hasActiveRun===!1)return{label:n(`sessions.statusIdle`),tone:`idle`};if(e.status){let t=e.status===`done`?`done`:`failed`;return{label:T(e.status),tone:t}}return e.hasActiveRun===!1?{label:n(`sessions.statusIdle`),tone:`idle`}:{label:n(`sessionsView.statusUnknown`),tone:`muted`}}function D(e){let r=E(e),i=`${n(`sessionsView.status`)}: ${r.label}`;return t`
2
2
  <span
3
3
  class="session-status-badge session-status-badge--${r.tone}"
4
4
  title=${i}
@@ -7,7 +7,7 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
7
7
  <span class="session-status-badge__dot" aria-hidden="true"></span>
8
8
  <span class="session-status-badge__label">${r.label}</span>
9
9
  </span>
10
- `}function ie(e){return e||null}function O(e,t,n){let r=i(t);return r?e.filter(e=>{let t=i(e.key),c=i(e.label),l=i(e.kind),u=i(e.displayName),f=i(s(e.agentRuntime)),p=i(e.status),m=e.goal?i(`${e.goal.objective} ${e.goal.status} ${d(e.goal)} ${e.goal.lastStatusNote??``}`):``,h=a(e)?`live running`:e.hasActiveRun===!1?`idle`:``;if(t.includes(r)||c.includes(r)||l.includes(r)||u.includes(r)||f.includes(r)||p.includes(r)||m.includes(r)||h.includes(r))return!0;let g=o(e.key);return(g?i(S(n,g.agentId)?.name):``).includes(r)}):e}function k(e,t,n){let r=n===`asc`?1:-1;return[...e].toSorted((e,n)=>{let i=0;switch(t){case`key`:i=(e.key??``).localeCompare(n.key??``);break;case`kind`:i=(e.kind??``).localeCompare(n.kind??``);break;case`updated`:i=(e.updatedAt??0)-(n.updatedAt??0);break;case`tokens`:i=(e.totalTokens??e.inputTokens??e.outputTokens??0)-(n.totalTokens??n.inputTokens??n.outputTokens??0);break}return i*r})}function A(e,t,n){let r=t*n;return e.slice(r,r+n)}function j(e){let t=Number(e.trim());return Number.isFinite(t)&&t>0}function M(e){return i(e.searchQuery).length>0||j(e.activeMinutes)||j(e.limit)||!e.includeGlobal||!e.includeUnknown||!e.showArchived}function N(e){switch(e){case`manual`:return n(`sessionsView.manual`);case`auto-threshold`:return n(`sessionsView.autoThreshold`);case`overflow-retry`:return n(`sessionsView.overflowRetry`);case`timeout-retry`:return n(`sessionsView.timeoutRetry`);default:return e}}function P(e){return n(e===1?`sessionsView.checkpoint`:`sessionsView.checkpoints`,{count:String(e)})}function F(e){return typeof e.tokensBefore==`number`&&typeof e.tokensAfter==`number`&&Number.isFinite(e.tokensBefore)&&Number.isFinite(e.tokensAfter)?n(`sessionsView.tokenRange`,{before:e.tokensBefore.toLocaleString(),after:e.tokensAfter.toLocaleString()}):typeof e.tokensBefore==`number`&&Number.isFinite(e.tokensBefore)?n(`sessionsView.tokensBefore`,{count:e.tokensBefore.toLocaleString()}):n(`sessionsView.tokenDeltaUnavailable`)}function I(e){if(typeof e!=`number`||!Number.isFinite(e)||e<0)return null;let t=Math.round(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60),r=t%60;if(n<60)return r>0?`${n}m ${r}s`:`${n}m`;let i=Math.floor(n/60),a=n%60;return a>0?`${i}h ${a}m`:`${i}h`}function L(n){return n?t`
10
+ `}function ie(e){return e||null}function O(e,t,r){let c=i(t);return c?e.filter(e=>{let t=i(e.key),l=i(e.label),u=i(e.kind),f=i(e.displayName),p=i(s(e.agentRuntime)),m=i(e.status),h=e.goal?i(`${e.goal.objective} ${e.goal.status} ${d(e.goal)} ${e.goal.lastStatusNote??``}`):``,g=a(e)?n(`sessions.statusLive`):e.hasActiveRun===!1?n(`sessions.statusIdle`):``;if(t.includes(c)||l.includes(c)||u.includes(c)||f.includes(c)||p.includes(c)||m.includes(c)||h.includes(c)||g.includes(c))return!0;let _=o(e.key);return(_?i(S(r,_.agentId)?.name):``).includes(c)}):e}function k(e,t,n){let r=n===`asc`?1:-1;return[...e].toSorted((e,n)=>{let i=0;switch(t){case`key`:i=(e.key??``).localeCompare(n.key??``);break;case`kind`:i=(e.kind??``).localeCompare(n.kind??``);break;case`updated`:i=(e.updatedAt??0)-(n.updatedAt??0);break;case`tokens`:i=(e.totalTokens??e.inputTokens??e.outputTokens??0)-(n.totalTokens??n.inputTokens??n.outputTokens??0);break}return i*r})}function A(e,t,n){let r=t*n;return e.slice(r,r+n)}function j(e){let t=Number(e.trim());return Number.isFinite(t)&&t>0}function M(e){return i(e.searchQuery).length>0||j(e.activeMinutes)||j(e.limit)||!e.includeGlobal||!e.includeUnknown||!e.showArchived}function N(e){switch(e){case`manual`:return n(`sessionsView.manual`);case`auto-threshold`:return n(`sessionsView.autoThreshold`);case`overflow-retry`:return n(`sessionsView.overflowRetry`);case`timeout-retry`:return n(`sessionsView.timeoutRetry`);default:return e}}function P(e){return n(e===1?`sessionsView.checkpoint`:`sessionsView.checkpoints`,{count:String(e)})}function F(e){return typeof e.tokensBefore==`number`&&typeof e.tokensAfter==`number`&&Number.isFinite(e.tokensBefore)&&Number.isFinite(e.tokensAfter)?n(`sessionsView.tokenRange`,{before:e.tokensBefore.toLocaleString(),after:e.tokensAfter.toLocaleString()}):typeof e.tokensBefore==`number`&&Number.isFinite(e.tokensBefore)?n(`sessionsView.tokensBefore`,{count:e.tokensBefore.toLocaleString()}):n(`sessionsView.tokenDeltaUnavailable`)}function I(e){if(typeof e!=`number`||!Number.isFinite(e)||e<0)return null;let t=Math.round(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60),r=t%60;if(n<60)return r>0?`${n}m ${r}s`:`${n}m`;let i=Math.floor(n/60),a=n%60;return a>0?`${i}h ${a}m`:`${i}h`}function L(n){return n?t`
11
11
  <span
12
12
  class="session-goal-chip session-goal-chip--${n.status}"
13
13
  title=${p(n)}
@@ -422,4 +422,4 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
422
422
  </div>
423
423
  </td>
424
424
  </tr>`]:[]]}export{V as renderSessions};
425
- //# sourceMappingURL=sessions-BqzDZWTD.js.map
425
+ //# sourceMappingURL=sessions-BqDAC2V3.js.map
@@ -1,8 +1,8 @@
1
- import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i}from"./i18n-COx0mMoe.js";import{t as a}from"./string-coerce-BuYUxt7q.js";import{F as o,_ as s,g as c,j as l}from"./index-nC-y5600.js";import{i as u,n as d,r as f,t as p}from"./skills-shared-KvN3lpfP.js";function m(e){return e?c(e,window.location.href):null}function h(e){!(e instanceof HTMLDialogElement)||e.open||(e.isConnected?e.showModal():queueMicrotask(()=>{e.isConnected&&!e.open&&e.showModal()}))}var g=[{id:`all`,label:`All`},{id:`ready`,label:`Ready`},{id:`needs-setup`,label:i(`agentTools.needsSetup`)},{id:`disabled`,label:`Disabled`}];function _(e,t){switch(t){case`all`:return!0;case`ready`:return!e.disabled&&e.eligible;case`needs-setup`:return!e.disabled&&!e.eligible;case`disabled`:return e.disabled}throw Error(`不支持的技能状态过滤器`)}function v(e){return e.disabled?`muted`:e.eligible?`ok`:`warn`}function y(e,t){let n=e.clawhub;return!n||n.status!==`linked`||!n.valid?null:t[l({registry:n.registry,slug:n.slug,version:n.installedVersion})]??null}function b(e){if(!e)return`Unavailable`;let t=e.securityStatus?.trim()||null;return e.ok&&e.decision===`pass`?t===`clean`||!t?`Clean`:t:t===`pending`||t===`not-run`?`Pending`:t===`malicious`?`Blocked`:t===`suspicious`?`Review`:`Unavailable`}function x(e){if(!e)return`chip-warn`;if(e.ok&&e.decision===`pass`)return`chip-ok`;let t=e.securityStatus?.trim()||null;return t===`pending`||t===`not-run`?`chip`:`chip-warn`}function S(t){let n=t.report?.skills??[],o={all:n.length,ready:0,"needs-setup":0,disabled:0};for(let e of n)e.disabled?o.disabled++:e.eligible?o.ready++:o[`needs-setup`]++;let s=t.statusFilter===`all`?n:n.filter(e=>_(e,t.statusFilter)),c=a(t.filter),l=c?s.filter(e=>a([e.name,e.description,e.source].join(` `)).includes(c)):s,d=u(l),f=t.detailKey?n.find(e=>e.skillKey===t.detailKey)??null:null;return r`
1
+ import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i}from"./i18n-CqJHwmVQ.js";import{t as a}from"./string-coerce-BuYUxt7q.js";import{F as o,_ as s,g as c,j as l}from"./index-CFA4p4Li.js";import{i as u,n as d,r as f,t as p}from"./skills-shared-BWrG-mcT.js";function m(e){return e?c(e,window.location.href):null}function h(e){!(e instanceof HTMLDialogElement)||e.open||(e.isConnected?e.showModal():queueMicrotask(()=>{e.isConnected&&!e.open&&e.showModal()}))}var g=[{id:`all`,label:`All`},{id:`ready`,label:`Ready`},{id:`needs-setup`,label:i(`agentTools.needsSetup`)},{id:`disabled`,label:`Disabled`}];function _(e,t){switch(t){case`all`:return!0;case`ready`:return!e.disabled&&e.eligible;case`needs-setup`:return!e.disabled&&!e.eligible;case`disabled`:return e.disabled}throw Error(`不支持的技能状态过滤器`)}function v(e){return e.disabled?`muted`:e.eligible?`ok`:`warn`}function y(e,t){let n=e.clawhub;return!n||n.status!==`linked`||!n.valid?null:t[l({registry:n.registry,slug:n.slug,version:n.installedVersion})]??null}function b(e){if(!e)return`Unavailable`;let t=e.securityStatus?.trim()||null;return e.ok&&e.decision===`pass`?t===`clean`||!t?`Clean`:t:t===`pending`||t===`not-run`?`Pending`:t===`malicious`?`Blocked`:t===`suspicious`?`Review`:`Unavailable`}function x(e){if(!e)return`chip-warn`;if(e.ok&&e.decision===`pass`)return`chip-ok`;let t=e.securityStatus?.trim()||null;return t===`pending`||t===`not-run`?`chip`:`chip-warn`}function S(t){let n=t.report?.skills??[],o={all:n.length,ready:0,"needs-setup":0,disabled:0};for(let e of n)e.disabled?o.disabled++:e.eligible?o.ready++:o[`needs-setup`]++;let s=t.statusFilter===`all`?n:n.filter(e=>_(e,t.statusFilter)),c=a(t.filter),l=c?s.filter(e=>a([e.name,e.description,e.source].join(` `)).includes(c)):s,d=u(l),f=t.detailKey?n.find(e=>e.skillKey===t.detailKey)??null:null;return r`
2
2
  <section class="card">
3
3
  <div class="row" style="justify-content: space-between;">
4
4
  <div>
5
- <div class="card-title">Skills</div>
5
+ <div class="card-title">${i(`skills.title`)}</div>
6
6
  <div class="card-sub">Installed skills and their status.</div>
7
7
  </div>
8
8
  <button
@@ -53,12 +53,12 @@ import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i
53
53
  <input
54
54
  .value=${t.clawhubQuery}
55
55
  @input=${e=>t.onClawHubQueryChange(e.target.value)}
56
- placeholder="Search ClawHub skills"
56
+ placeholder="${i(`skills.searchPlaceholder`)}"
57
57
  autocomplete="off"
58
58
  name="clawhub-search"
59
59
  />
60
60
  </label>
61
- ${t.clawhubSearchLoading?r`<span class="muted">Searching…</span>`:e}
61
+ ${t.clawhubSearchLoading?r`<span class="muted">${i(`skills.searching`)}</span>`:e}
62
62
  </div>
63
63
  ${t.clawhubSearchError?r`<div class="callout danger" style="margin-top: 8px;">
64
64
  ${t.clawhubSearchError}
@@ -75,7 +75,7 @@ import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i
75
75
  ${t.error?r`<div class="callout danger" style="margin-top: 12px;">${t.error}</div>`:e}
76
76
  ${l.length===0?r`
77
77
  <div class="muted" style="margin-top: 16px">
78
- ${!t.connected&&!t.report?`Not connected to gateway.`:`No skills found.`}
78
+ ${!t.connected&&!t.report?`Not connected to gateway.`:i(`skills.noSkillsFound`)}
79
79
  </div>
80
80
  `:r`
81
81
  <div class="agent-skills-groups" style="margin-top: 16px;">
@@ -96,7 +96,9 @@ import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i
96
96
 
97
97
  ${f?E(f,t):e}
98
98
  ${t.clawhubDetailSlug?w(t):e}
99
- `}function C(t){let n=t.clawhubResults;return n?n.length===0?r`<div class="muted" style="margin-top: 8px;">No skills found on ClawHub.</div>`:r`
99
+ `}function C(t){let n=t.clawhubResults;return n?n.length===0?r`<div class="muted" style="margin-top: 8px;">
100
+ ${i(`skills.noSkillsFoundOnClawhub`)}
101
+ </div>`:r`
100
102
  <div class="list" style="margin-top: 8px;">
101
103
  ${n.map(n=>r`
102
104
  <div
@@ -166,7 +168,7 @@ import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i
166
168
  >
167
169
  ${t.clawhubInstallSlug===t.clawhubDetailSlug?`Installing…`:`Install ${a.skill.displayName}`}
168
170
  </button>
169
- `:r`<div class="muted">Skill not found.</div>`}
171
+ `:r`<div class="muted">${i(`skills.skillNotFound`)}</div>`}
170
172
  </div>
171
173
  </div>
172
174
  </dialog>
@@ -196,12 +198,12 @@ import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i
196
198
  </label>
197
199
  </div>
198
200
  </div>
199
- `}function E(t,i){let a=i.busyKey===t.skillKey,o=i.edits[t.skillKey]??``,s=i.messages[t.skillKey]??null,c=t.install.length>0&&t.missing.bins.length>0,l=!!(t.bundled&&t.source!==`fengming-bundled`),u=p(t),g=d(t),_=y(t,i.clawhubVerdicts),b=i.detailTab===`card`&&t.skillCard?.present?`card`:`overview`;return r`
201
+ `}function E(t,a){let o=a.busyKey===t.skillKey,s=a.edits[t.skillKey]??``,c=a.messages[t.skillKey]??null,l=t.install.length>0&&t.missing.bins.length>0,u=!!(t.bundled&&t.source!==`fengming-bundled`),g=p(t),_=d(t),b=y(t,a.clawhubVerdicts),x=a.detailTab===`card`&&t.skillCard?.present?`card`:`overview`;return r`
200
202
  <dialog
201
203
  class="md-preview-dialog"
202
204
  ${n(h)}
203
205
  @click=${e=>{let t=e.currentTarget;e.target===t&&t.close()}}
204
- @close=${i.onDetailClose}
206
+ @close=${a.onDetailClose}
205
207
  >
206
208
  <div class="md-preview-dialog__panel">
207
209
  <div class="md-preview-dialog__header">
@@ -225,37 +227,39 @@ import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i
225
227
  <div style="font-size: 14px; line-height: 1.5; color: var(--text);">
226
228
  ${t.description}
227
229
  </div>
228
- ${f({skill:t,showBundledBadge:l})}
230
+ ${f({skill:t,showBundledBadge:u})}
229
231
  </div>
230
232
 
231
233
  ${t.clawhub||t.skillCard?.present?r`
232
234
  <div class="agent-tabs">
233
235
  <button
234
- class="agent-tab ${b===`overview`?`active`:``}"
235
- @click=${()=>i.onDetailTabChange(`overview`)}
236
+ class="agent-tab ${x===`overview`?`active`:``}"
237
+ @click=${()=>a.onDetailTabChange(`overview`)}
236
238
  >
237
239
  Overview
238
240
  </button>
239
241
  ${t.skillCard?.present?r`<button
240
- class="agent-tab ${b===`card`?`active`:``}"
241
- @click=${()=>i.onDetailTabChange(`card`)}
242
+ class="agent-tab ${x===`card`?`active`:``}"
243
+ @click=${()=>a.onDetailTabChange(`card`)}
242
244
  >
243
245
  Skill Card
244
246
  </button>`:e}
245
247
  </div>
246
248
  `:e}
247
- ${b===`overview`?D(t,i,_):O(t,i)}
248
- ${u.length>0?r`
249
+ ${x===`overview`?D(t,a,b):O(t,a)}
250
+ ${g.length>0?r`
249
251
  <div
250
252
  class="callout"
251
253
  style="border-color: var(--warn-subtle); background: var(--warn-subtle); color: var(--warn);"
252
254
  >
253
- <div style="font-weight: 600; margin-bottom: 4px;">Missing requirements</div>
254
- <div>${u.join(`, `)}</div>
255
+ <div style="font-weight: 600; margin-bottom: 4px;">
256
+ ${i(`skills.missingRequirements`)}
257
+ </div>
258
+ <div>${g.join(`, `)}</div>
255
259
  </div>
256
260
  `:e}
257
- ${g.length>0?r`
258
- <div class="muted" style="font-size: 13px;">Reason: ${g.join(`, `)}</div>
261
+ ${_.length>0?r`
262
+ <div class="muted" style="font-size: 13px;">Reason: ${_.join(`, `)}</div>
259
263
  `:e}
260
264
 
261
265
  <div style="display: flex; align-items: center; gap: 12px;">
@@ -264,24 +268,24 @@ import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i
264
268
  type="checkbox"
265
269
  class="skill-toggle"
266
270
  .checked=${!t.disabled}
267
- ?disabled=${a}
268
- @change=${()=>i.onToggle(t.skillKey,t.disabled)}
271
+ ?disabled=${o}
272
+ @change=${()=>a.onToggle(t.skillKey,t.disabled)}
269
273
  />
270
274
  </label>
271
275
  <span style="font-size: 13px; font-weight: 500;">
272
276
  ${t.disabled?`Disabled`:`Enabled`}
273
277
  </span>
274
- ${c?r`<button
278
+ ${l?r`<button
275
279
  class="btn"
276
- ?disabled=${a}
277
- @click=${()=>i.onInstall(t.skillKey,t.name,t.install[0].id)}
280
+ ?disabled=${o}
281
+ @click=${()=>a.onInstall(t.skillKey,t.name,t.install[0].id)}
278
282
  >
279
- ${a?`Installing…`:t.install[0].label}
283
+ ${o?`Installing…`:t.install[0].label}
280
284
  </button>`:e}
281
285
  </div>
282
286
 
283
- ${s?r`<div class="callout ${s.kind===`error`?`danger`:`success`}">
284
- ${s.message}
287
+ ${c?r`<div class="callout ${c.kind===`error`?`danger`:`success`}">
288
+ ${c.message}
285
289
  </div>`:e}
286
290
  ${t.primaryEnv?r`
287
291
  <div style="display: grid; gap: 8px;">
@@ -294,8 +298,8 @@ import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i
294
298
  >
295
299
  <input
296
300
  type="password"
297
- .value=${o}
298
- @input=${e=>i.onEdit(t.skillKey,e.target.value)}
301
+ .value=${s}
302
+ @input=${e=>a.onEdit(t.skillKey,e.target.value)}
299
303
  />
300
304
  </div>
301
305
  ${(()=>{let n=m(t.homepage);return n?r`<div class="muted" style="font-size: 13px;">
@@ -306,8 +310,8 @@ import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i
306
310
  </div>`:e})()}
307
311
  <button
308
312
  class="btn primary"
309
- ?disabled=${a}
310
- @click=${()=>i.onSaveKey(t.skillKey)}
313
+ ?disabled=${o}
314
+ @click=${()=>a.onSaveKey(t.skillKey)}
311
315
  >
312
316
  Save key
313
317
  </button>
@@ -339,7 +343,7 @@ import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i
339
343
  <div style="display: flex; align-items: center; gap: 8px; flex-wrap: wrap;">
340
344
  <span class="chip ${x(a)}">${b(a)}</span>
341
345
  <span class="muted" style="font-size: 12px;">${o.slug}@${o.installedVersion}</span>
342
- ${n.clawhubVerdictsLoading?r`<span class="muted">Refreshing…</span>`:e}
346
+ ${n.clawhubVerdictsLoading?r`<span class="muted">${i(`skills.refreshing`)}</span>`:e}
343
347
  </div>
344
348
  ${n.clawhubVerdictsError?r`<div class="muted" style="font-size: 13px;">${n.clawhubVerdictsError}</div>`:c?r`<div class="muted" style="font-size: 13px;">${c}</div>`:e}
345
349
  ${s?r`<div style="font-size: 13px;">
@@ -355,4 +359,4 @@ import{f as e,i as t,o as n,p as r}from"./lit-runtime-DA0-mbwP.js";import{r as i
355
359
  ${t(s(a))}
356
360
  </article>
357
361
  `}export{S as renderSkills};
358
- //# sourceMappingURL=skills-CAvbfEkF.js.map
362
+ //# sourceMappingURL=skills-DCQx-dAB.js.map
@@ -1,4 +1,4 @@
1
- import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-COx0mMoe.js";var r=[{id:`workspace`,label:n(`agentTools.workspaceSkills`),sources:[`fengming-workspace`]},{id:`built-in`,label:n(`agentTools.builtInSkills`),sources:[`fengming-bundled`]},{id:`installed`,label:n(`agentTools.installedSkills`),sources:[`fengming-managed`]},{id:`extra`,label:n(`agentTools.extraSkills`),sources:[`fengming-extra`]}];function i(e){let t=new Map;for(let e of r)t.set(e.id,{id:e.id,label:e.label,skills:[]});let i=r.find(e=>e.id===`built-in`),a={id:`other`,label:n(`agentTools.otherSkills`),skills:[]};for(let n of e){let e=n.bundled?i:r.find(e=>e.sources.includes(n.source));e?t.get(e.id)?.skills.push(n):a.skills.push(n)}let o=r.map(e=>t.get(e.id)).filter(e=>!!(e&&e.skills.length>0));return a.skills.length>0&&o.push(a),o}function a(e){return[...e.missing.bins.map(e=>`bin:${e}`),...e.missing.env.map(e=>`env:${e}`),...e.missing.config.map(e=>`config:${e}`),...e.missing.os.map(e=>`os:${e}`)]}function o(e){let t=[];return e.disabled&&t.push(`disabled`),e.blockedByAllowlist&&t.push(`blocked by allowlist`),t}function s(n){let r=n.skill,i=!!n.showBundledBadge;return t`
1
+ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-CqJHwmVQ.js";var r=[{id:`workspace`,label:n(`agentTools.workspaceSkills`),sources:[`fengming-workspace`]},{id:`built-in`,label:n(`agentTools.builtInSkills`),sources:[`fengming-bundled`]},{id:`installed`,label:n(`agentTools.installedSkills`),sources:[`fengming-managed`]},{id:`extra`,label:n(`agentTools.extraSkills`),sources:[`fengming-extra`]}];function i(e){let t=new Map;for(let e of r)t.set(e.id,{id:e.id,label:e.label,skills:[]});let i=r.find(e=>e.id===`built-in`),a={id:`other`,label:n(`agentTools.otherSkills`),skills:[]};for(let n of e){let e=n.bundled?i:r.find(e=>e.sources.includes(n.source));e?t.get(e.id)?.skills.push(n):a.skills.push(n)}let o=r.map(e=>t.get(e.id)).filter(e=>!!(e&&e.skills.length>0));return a.skills.length>0&&o.push(a),o}function a(e){return[...e.missing.bins.map(e=>`bin:${e}`),...e.missing.env.map(e=>`env:${e}`),...e.missing.config.map(e=>`config:${e}`),...e.missing.os.map(e=>`os:${e}`)]}function o(e){let t=[];return e.disabled&&t.push(n(`common.disabled`)),e.blockedByAllowlist&&t.push(n(`skills.blockedByAllowlist`)),t}function s(n){let r=n.skill,i=!!n.showBundledBadge;return t`
2
2
  <div class="chip-row" style="margin-top: 6px;">
3
3
  <span class="chip">${r.source}</span>
4
4
  ${i?t` <span class="chip">bundled</span> `:e}
@@ -8,4 +8,4 @@ import{f as e,p as t}from"./lit-runtime-DA0-mbwP.js";import{r as n}from"./i18n-C
8
8
  ${r.disabled?t` <span class="chip chip-warn">disabled</span> `:e}
9
9
  </div>
10
10
  `}export{i,o as n,s as r,a as t};
11
- //# sourceMappingURL=skills-shared-KvN3lpfP.js.map
11
+ //# sourceMappingURL=skills-shared-BWrG-mcT.js.map