agentix-cli 0.17.0 → 0.19.0

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 (189) hide show
  1. package/README.md +75 -27
  2. package/dist/agent-57MG4LBM.js +2 -0
  3. package/dist/audit-JU3HWISB.js +3 -0
  4. package/dist/audit-JU3HWISB.js.map +1 -0
  5. package/dist/{board-dashboard-CXIVJKDP.js → board-dashboard-HXDOYGIG.js} +2237 -69
  6. package/dist/board-dashboard-HXDOYGIG.js.map +1 -0
  7. package/dist/chunk-23AUU4S2.js +102 -0
  8. package/dist/chunk-23AUU4S2.js.map +1 -0
  9. package/dist/{chunk-EKTPCSN4.js → chunk-4ITQP3XL.js} +2 -2
  10. package/dist/chunk-4MREHZP5.js +111 -0
  11. package/dist/chunk-4MREHZP5.js.map +1 -0
  12. package/dist/chunk-4YCH6IZV.js +2 -0
  13. package/dist/chunk-53NRX2NA.js +2 -0
  14. package/dist/chunk-53NRX2NA.js.map +1 -0
  15. package/dist/chunk-6B74TO2J.js +743 -0
  16. package/dist/chunk-6B74TO2J.js.map +1 -0
  17. package/dist/chunk-7P5QRX5W.js +108 -0
  18. package/dist/chunk-7P5QRX5W.js.map +1 -0
  19. package/dist/chunk-A6BKSZQA.js +3 -0
  20. package/dist/chunk-A6BKSZQA.js.map +1 -0
  21. package/dist/{chunk-6PPIFDOQ.js → chunk-CNNLREHD.js} +67 -22
  22. package/dist/{chunk-6PPIFDOQ.js.map → chunk-CNNLREHD.js.map} +1 -1
  23. package/dist/chunk-DJEZ2HVU.js +5 -0
  24. package/dist/chunk-DJEZ2HVU.js.map +1 -0
  25. package/dist/chunk-DLVOHCTA.js +5 -0
  26. package/dist/{chunk-MBEQASP3.js.map → chunk-DLVOHCTA.js.map} +1 -1
  27. package/dist/chunk-E4ZZILAK.js +15 -0
  28. package/dist/chunk-E4ZZILAK.js.map +1 -0
  29. package/dist/{chunk-63UYRJIC.js → chunk-IKBHHTIT.js} +2 -2
  30. package/dist/chunk-JGXE2YNV.js +46 -0
  31. package/dist/chunk-JGXE2YNV.js.map +1 -0
  32. package/dist/chunk-JTJIPNXY.js +2 -0
  33. package/dist/chunk-JTJIPNXY.js.map +1 -0
  34. package/dist/chunk-MBOLXKA2.js +6 -0
  35. package/dist/chunk-MBOLXKA2.js.map +1 -0
  36. package/dist/{inbox-L5ZZ623Y.js → chunk-MTRWXRFF.js} +69 -4
  37. package/dist/chunk-MTRWXRFF.js.map +1 -0
  38. package/dist/{processes-XF5CV4LK.js → chunk-NOF4HSGK.js} +3 -3
  39. package/dist/{processes-XF5CV4LK.js.map → chunk-NOF4HSGK.js.map} +1 -1
  40. package/dist/chunk-QW2OYR3N.js +7 -0
  41. package/dist/chunk-QW2OYR3N.js.map +1 -0
  42. package/dist/chunk-SR3X25TN.js +3 -0
  43. package/dist/chunk-SR3X25TN.js.map +1 -0
  44. package/dist/chunk-SV3I4CI7.js +440 -0
  45. package/dist/chunk-SV3I4CI7.js.map +1 -0
  46. package/dist/{chunk-TT2Q7YMZ.js → chunk-TC3BSUP7.js} +6 -6
  47. package/dist/{chunk-TT2Q7YMZ.js.map → chunk-TC3BSUP7.js.map} +1 -1
  48. package/dist/chunk-VJUTQAPJ.js +2 -0
  49. package/dist/chunk-VJUTQAPJ.js.map +1 -0
  50. package/dist/chunk-VWTBHLMX.js +1 -0
  51. package/dist/chunk-WFHIIVLL.js +719 -0
  52. package/dist/chunk-WFHIIVLL.js.map +1 -0
  53. package/dist/chunk-WPPUOTY6.js +6 -0
  54. package/dist/chunk-WPPUOTY6.js.map +1 -0
  55. package/dist/cli.js +1 -1
  56. package/dist/cli.js.map +1 -1
  57. package/dist/{compaction-X46EQEPS.js → compaction-BTUJJ3LJ.js} +4 -4
  58. package/dist/config-QXWKEQON.js +2 -0
  59. package/dist/config-mutator-53XGR2NT.js +2 -0
  60. package/dist/conflict-detector-D7VIYPDI.js +2 -0
  61. package/dist/conflict-detector-D7VIYPDI.js.map +1 -0
  62. package/dist/{context-planner-G2J7FNNU.js → context-planner-I7ID7XF3.js} +3 -3
  63. package/dist/debug-N3B5NVJU.js +2 -0
  64. package/dist/discover-XJXQXXIO.js +4 -0
  65. package/dist/discover-XJXQXXIO.js.map +1 -0
  66. package/dist/doctor-SEOUFHSL.js +2 -0
  67. package/dist/{editor-chat-R54E65W5.js → editor-chat-RVLCKKB7.js} +2 -2
  68. package/dist/heal-YEQYWX2L.js +2 -0
  69. package/dist/inbox-BIN2S5XN.js +2 -0
  70. package/dist/index.d.ts +1292 -122
  71. package/dist/index.js +8 -8
  72. package/dist/index.js.map +1 -1
  73. package/dist/{ingest-whatsapp-NS4OWDOU.js → ingest-whatsapp-LZE62INA.js} +2 -2
  74. package/dist/loader-5CA3O5GM.js +2 -0
  75. package/dist/loader-6IHUCPVO.js +2 -0
  76. package/dist/memory-extract-KRCHD3OP.js +2 -0
  77. package/dist/migrate-v2-QO7SLKIM.js +4 -0
  78. package/dist/migrate-v2-QO7SLKIM.js.map +1 -0
  79. package/dist/processes-RJ6RDP32.js +2 -0
  80. package/dist/program-SASDC2GV.js +2 -0
  81. package/dist/providers-WVCMIW67.js +2 -0
  82. package/dist/query-HZYYRCLU.js +2 -0
  83. package/dist/recipes-EPLE2SNT.js +2 -0
  84. package/dist/registry-HM4ELSXS.js +2 -0
  85. package/dist/rotation-memo-GMTZPMNE.js +13 -0
  86. package/dist/rotation-memo-GMTZPMNE.js.map +1 -0
  87. package/dist/scheduler-XVFIK4XH.js +2 -0
  88. package/dist/{slack-PSQLVTGB.js → slack-6P7ZJ32Y.js} +2 -2
  89. package/dist/store-BAPDZHXE.js +2 -0
  90. package/dist/{subagent-2SJHSSJS.js → subagent-WV7QKQ3L.js} +2 -2
  91. package/dist/{task-store-NM7VKNLE.js → task-store-RHISEU6V.js} +2 -2
  92. package/dist/task-store-RHISEU6V.js.map +1 -0
  93. package/dist/{telegram-W4SLFMNY.js → telegram-PIYDRM46.js} +2 -2
  94. package/dist/timers-5LPZN55J.js +2 -0
  95. package/dist/timers-5LPZN55J.js.map +1 -0
  96. package/dist/types-VECTMYTO.js +2 -0
  97. package/dist/types-VECTMYTO.js.map +1 -0
  98. package/dist/types-ZRLHHCGB.js +2 -0
  99. package/dist/types-ZRLHHCGB.js.map +1 -0
  100. package/dist/web/activity-graph.global.js +654 -0
  101. package/dist/web/activity-graph.global.js.map +1 -0
  102. package/dist/web/workflow-editor.global.js +35 -12
  103. package/dist/web/workflow-editor.global.js.map +1 -1
  104. package/dist/{whatsapp-DCHRBRVV.js → whatsapp-PFRDMUMT.js} +2 -2
  105. package/dist/{whatsapp-state-6D6FHHD2.js → whatsapp-state-XMTCSRXU.js} +2 -2
  106. package/dist/wiki-53W5NLZV.js +2 -0
  107. package/dist/wiki-53W5NLZV.js.map +1 -0
  108. package/dist/workspace-setup-FPGN5VNY.js +2 -0
  109. package/dist/workspace-setup-FPGN5VNY.js.map +1 -0
  110. package/package.json +13 -2
  111. package/dist/agent-4AOMVXRJ.js +0 -2
  112. package/dist/board-dashboard-CXIVJKDP.js.map +0 -1
  113. package/dist/chunk-34NG7UDX.js +0 -11
  114. package/dist/chunk-34NG7UDX.js.map +0 -1
  115. package/dist/chunk-4HP6UC2X.js +0 -13
  116. package/dist/chunk-4HP6UC2X.js.map +0 -1
  117. package/dist/chunk-5WNGHDFC.js +0 -164
  118. package/dist/chunk-5WNGHDFC.js.map +0 -1
  119. package/dist/chunk-ABCHHNG6.js +0 -625
  120. package/dist/chunk-ABCHHNG6.js.map +0 -1
  121. package/dist/chunk-FIOB3MEX.js +0 -2
  122. package/dist/chunk-HCFSHGK4.js +0 -46
  123. package/dist/chunk-HCFSHGK4.js.map +0 -1
  124. package/dist/chunk-HHJGKD5B.js +0 -71
  125. package/dist/chunk-HHJGKD5B.js.map +0 -1
  126. package/dist/chunk-LEIYC3BF.js +0 -104
  127. package/dist/chunk-LEIYC3BF.js.map +0 -1
  128. package/dist/chunk-MBEQASP3.js +0 -5
  129. package/dist/chunk-MCJUAE6V.js +0 -6
  130. package/dist/chunk-MCJUAE6V.js.map +0 -1
  131. package/dist/chunk-SRHLXZRF.js +0 -7
  132. package/dist/chunk-SRHLXZRF.js.map +0 -1
  133. package/dist/chunk-WZEYII2S.js +0 -6
  134. package/dist/chunk-WZEYII2S.js.map +0 -1
  135. package/dist/chunk-XDJSYQST.js +0 -6
  136. package/dist/chunk-XDJSYQST.js.map +0 -1
  137. package/dist/chunk-YPOELN6Z.js +0 -798
  138. package/dist/chunk-YPOELN6Z.js.map +0 -1
  139. package/dist/config-KCYHMKCT.js +0 -2
  140. package/dist/config-mutator-QP4GLBOE.js +0 -2
  141. package/dist/debug-3MEUO2P2.js +0 -2
  142. package/dist/heal-JDXUPRET.js +0 -2
  143. package/dist/inbox-L5ZZ623Y.js.map +0 -1
  144. package/dist/loader-PTCXLJEX.js +0 -2
  145. package/dist/memory-extract-WH4FZ456.js +0 -2
  146. package/dist/program-FFWEILAS.js +0 -2
  147. package/dist/providers-AKQ4HTB4.js +0 -2
  148. package/dist/query-PKGYE5HR.js +0 -2
  149. package/dist/registry-IFMDJWQ7.js +0 -2
  150. package/dist/scheduler-63D5KFO7.js +0 -2
  151. package/dist/store-5MJOO74U.js +0 -2
  152. package/dist/timers-PCB4ZIBD.js +0 -2
  153. package/dist/types-C7IFH42Z.js +0 -2
  154. package/dist/types-OIFU3KSQ.js +0 -2
  155. package/dist/usage-dashboard-AXPXB2KP.js +0 -803
  156. package/dist/usage-dashboard-AXPXB2KP.js.map +0 -1
  157. package/dist/wiki-UDPYFJBL.js +0 -2
  158. package/dist/workspace-setup-C4VB3QZV.js +0 -2
  159. /package/dist/{agent-4AOMVXRJ.js.map → agent-57MG4LBM.js.map} +0 -0
  160. /package/dist/{chunk-EKTPCSN4.js.map → chunk-4ITQP3XL.js.map} +0 -0
  161. /package/dist/{chunk-FIOB3MEX.js.map → chunk-4YCH6IZV.js.map} +0 -0
  162. /package/dist/{chunk-63UYRJIC.js.map → chunk-IKBHHTIT.js.map} +0 -0
  163. /package/dist/{config-KCYHMKCT.js.map → chunk-VWTBHLMX.js.map} +0 -0
  164. /package/dist/{compaction-X46EQEPS.js.map → compaction-BTUJJ3LJ.js.map} +0 -0
  165. /package/dist/{config-mutator-QP4GLBOE.js.map → config-QXWKEQON.js.map} +0 -0
  166. /package/dist/{debug-3MEUO2P2.js.map → config-mutator-53XGR2NT.js.map} +0 -0
  167. /package/dist/{context-planner-G2J7FNNU.js.map → context-planner-I7ID7XF3.js.map} +0 -0
  168. /package/dist/{heal-JDXUPRET.js.map → debug-N3B5NVJU.js.map} +0 -0
  169. /package/dist/{loader-PTCXLJEX.js.map → doctor-SEOUFHSL.js.map} +0 -0
  170. /package/dist/{editor-chat-R54E65W5.js.map → editor-chat-RVLCKKB7.js.map} +0 -0
  171. /package/dist/{memory-extract-WH4FZ456.js.map → heal-YEQYWX2L.js.map} +0 -0
  172. /package/dist/{program-FFWEILAS.js.map → inbox-BIN2S5XN.js.map} +0 -0
  173. /package/dist/{ingest-whatsapp-NS4OWDOU.js.map → ingest-whatsapp-LZE62INA.js.map} +0 -0
  174. /package/dist/{providers-AKQ4HTB4.js.map → loader-5CA3O5GM.js.map} +0 -0
  175. /package/dist/{query-PKGYE5HR.js.map → loader-6IHUCPVO.js.map} +0 -0
  176. /package/dist/{registry-IFMDJWQ7.js.map → memory-extract-KRCHD3OP.js.map} +0 -0
  177. /package/dist/{scheduler-63D5KFO7.js.map → processes-RJ6RDP32.js.map} +0 -0
  178. /package/dist/{store-5MJOO74U.js.map → program-SASDC2GV.js.map} +0 -0
  179. /package/dist/{task-store-NM7VKNLE.js.map → providers-WVCMIW67.js.map} +0 -0
  180. /package/dist/{timers-PCB4ZIBD.js.map → query-HZYYRCLU.js.map} +0 -0
  181. /package/dist/{types-C7IFH42Z.js.map → recipes-EPLE2SNT.js.map} +0 -0
  182. /package/dist/{types-OIFU3KSQ.js.map → registry-HM4ELSXS.js.map} +0 -0
  183. /package/dist/{wiki-UDPYFJBL.js.map → scheduler-XVFIK4XH.js.map} +0 -0
  184. /package/dist/{slack-PSQLVTGB.js.map → slack-6P7ZJ32Y.js.map} +0 -0
  185. /package/dist/{workspace-setup-C4VB3QZV.js.map → store-BAPDZHXE.js.map} +0 -0
  186. /package/dist/{subagent-2SJHSSJS.js.map → subagent-WV7QKQ3L.js.map} +0 -0
  187. /package/dist/{telegram-W4SLFMNY.js.map → telegram-PIYDRM46.js.map} +0 -0
  188. /package/dist/{whatsapp-DCHRBRVV.js.map → whatsapp-PFRDMUMT.js.map} +0 -0
  189. /package/dist/{whatsapp-state-6D6FHHD2.js.map → whatsapp-state-XMTCSRXU.js.map} +0 -0
@@ -1,2 +0,0 @@
1
- import{d as a,e as b,f as c,g as d,i as e}from"./chunk-XDJSYQST.js";import"./chunk-FIOB3MEX.js";e();export{a as daemonConfigSchema,b as expandEnvVars,c as loadDaemonConfig,d as validateWorkspaces};
2
- //# sourceMappingURL=config-KCYHMKCT.js.map
@@ -1,2 +0,0 @@
1
- import{a,b,c,d}from"./chunk-MBEQASP3.js";import"./chunk-XDJSYQST.js";import"./chunk-FIOB3MEX.js";export{a as applyConfigMutation,c as getAtPath,b as setAtPath,d as unsetAtPath};
2
- //# sourceMappingURL=config-mutator-QP4GLBOE.js.map
@@ -1,2 +0,0 @@
1
- import{a,b,c,d,e}from"./chunk-DSYKYZMT.js";import"./chunk-FIOB3MEX.js";export{e as debug,d as getDebugLogs,c as getDebugState,b as isDebug,a as setDebug};
2
- //# sourceMappingURL=debug-3MEUO2P2.js.map
@@ -1,2 +0,0 @@
1
- import{a}from"./chunk-EKTPCSN4.js";import"./chunk-SFQUP3BP.js";import"./chunk-HCFSHGK4.js";import"./chunk-FIOB3MEX.js";export{a as HealEngine};
2
- //# sourceMappingURL=heal-JDXUPRET.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/daemon/ui/pages/inbox.ts"],"sourcesContent":["import { renderShell, esc, type TopbarPeer } from \"..\"\n\n// --- Inbox page ---\n//\n// Per-actor (or global) list of open user-tasks with an inline form\n// renderer. Reads /api/workflows/tasks; submits via\n// POST /api/workflows/tasks/:id/submit.\n//\n// Scope is intentionally tight for Phase 1:\n// - text / long-text / number / boolean / select / multi-select / date\n// - primary + optional secondary action buttons\n// - required-field validation is server-side; the UI just relays errors\n//\n// No channel-adapter coupling here — the form UI is the same whether the\n// renderer ran on Telegram or not.\n\nexport interface InboxPageOpts {\n peers?: TopbarPeer[]\n currentPeerId?: string\n /** Optional actor id to pre-filter. When unset, the page shows a prompt\n * asking the user to pick their actor id. */\n actor?: string\n}\n\nexport function renderInboxPage(opts: InboxPageOpts = {}): string {\n const body = `<div class=\"ax-inbox__root\" data-actor=\"${esc(opts.actor ?? \"\")}\">\n <aside class=\"ax-inbox__list\">\n <header>\n <h2>Inbox</h2>\n <button id=\"inbox-refresh\" class=\"ax-inbox__icon\" title=\"Refresh (r)\">↻</button>\n </header>\n <div class=\"ax-inbox__actor\">\n <label>Actor <input id=\"inbox-actor\" type=\"text\" placeholder=\"actor:<id>\" value=\"${esc(opts.actor ?? \"\")}\" autocomplete=\"off\" /></label>\n </div>\n <ul id=\"inbox-tasks\" class=\"ax-inbox__cards\" aria-live=\"polite\"></ul>\n <div id=\"inbox-empty\" class=\"ax-inbox__empty\" hidden>\n <p>No open tasks.</p>\n <p class=\"hint\">Set the actor filter to see tasks assigned to you, or leave blank for all tasks in the system.</p>\n </div>\n </aside>\n\n <section class=\"ax-inbox__detail\">\n <header id=\"inbox-detail-head\">\n <span class=\"hint\">Select a task to open its form.</span>\n </header>\n <div id=\"inbox-detail-body\" class=\"ax-inbox__detail-body\"></div>\n </section>\n</div>\n\n<div id=\"inbox-toast\" class=\"ax-inbox__toast\" hidden></div>`\n\n return renderShell({\n title: \"AgentX · Inbox\",\n activeTab: \"workflows\",\n subtitle: \"Inbox\",\n peers: opts.peers,\n currentPeerId: opts.currentPeerId,\n body,\n css: INBOX_PAGE_CSS,\n scripts: `<script>${INBOX_PAGE_SCRIPT}</script>`,\n })\n}\n\nconst INBOX_PAGE_CSS = `\n.ax-inbox__root {\n display: grid;\n grid-template-columns: 340px 1fr;\n height: calc(100vh - var(--ax-topbar-h, 48px));\n background: var(--ax-bg);\n}\n.ax-inbox__list {\n border-right: 1px solid var(--ax-border);\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n.ax-inbox__list > header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 14px;\n border-bottom: 1px solid var(--ax-border);\n}\n.ax-inbox__list > header h2 { margin: 0; font-size: 14px; font-weight: 600; }\n.ax-inbox__actor {\n padding: 10px 14px;\n border-bottom: 1px solid var(--ax-border);\n}\n.ax-inbox__actor label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--ax-muted); }\n.ax-inbox__actor input {\n font: inherit;\n padding: 6px 8px;\n border: 1px solid var(--ax-border);\n border-radius: 6px;\n background: var(--ax-bg);\n color: var(--ax-fg);\n}\n.ax-inbox__cards { list-style: none; margin: 0; padding: 6px; overflow-y: auto; flex: 1; }\n.ax-inbox__card {\n padding: 10px 12px;\n border-radius: 6px;\n margin-bottom: 4px;\n cursor: pointer;\n border: 1px solid transparent;\n}\n.ax-inbox__card:hover { background: var(--ax-surface-2, rgba(127,127,127,0.08)); }\n.ax-inbox__card.is-active { background: var(--ax-surface-2); border-color: var(--ax-border); }\n.ax-inbox__card-title { font-weight: 600; font-size: 13px; margin-bottom: 2px; }\n.ax-inbox__card-meta { font-size: 11px; color: var(--ax-muted); }\n.ax-inbox__card-due { font-size: 11px; color: #d48a00; margin-top: 4px; }\n.ax-inbox__empty { padding: 20px; color: var(--ax-muted); text-align: center; font-size: 13px; }\n.ax-inbox__detail { display: flex; flex-direction: column; min-height: 0; }\n.ax-inbox__detail > header { padding: 14px 18px; border-bottom: 1px solid var(--ax-border); }\n.ax-inbox__detail-body { overflow-y: auto; padding: 18px; flex: 1; }\n.ax-inbox__form { max-width: 560px; display: grid; gap: 14px; }\n.ax-inbox__field { display: flex; flex-direction: column; gap: 4px; }\n.ax-inbox__field label { font-size: 12px; color: var(--ax-muted); font-weight: 600; }\n.ax-inbox__field input, .ax-inbox__field textarea, .ax-inbox__field select {\n font: inherit;\n padding: 8px 10px;\n border: 1px solid var(--ax-border);\n border-radius: 6px;\n background: var(--ax-bg);\n color: var(--ax-fg);\n}\n.ax-inbox__field textarea { min-height: 100px; resize: vertical; }\n.ax-inbox__field-hint { font-size: 11px; color: var(--ax-muted); }\n.ax-inbox__field-error { font-size: 11px; color: #c0392b; }\n.ax-inbox__actions { display: flex; gap: 8px; margin-top: 8px; }\n.ax-inbox__actions button {\n font: inherit;\n padding: 8px 14px;\n border: 1px solid var(--ax-border);\n border-radius: 6px;\n cursor: pointer;\n background: var(--ax-surface-2);\n color: var(--ax-fg);\n}\n.ax-inbox__actions button.is-primary {\n background: #2ecc71; color: white; border-color: #27ae60;\n}\n.ax-inbox__actions button:disabled { opacity: 0.5; cursor: not-allowed; }\n.ax-inbox__icon {\n background: none; border: 1px solid transparent; color: var(--ax-fg); cursor: pointer;\n font-size: 14px; padding: 4px 8px; border-radius: 4px;\n}\n.ax-inbox__icon:hover { background: var(--ax-surface-2); }\n.ax-inbox__toast {\n position: fixed; bottom: 16px; right: 16px; padding: 10px 14px;\n background: var(--ax-fg); color: var(--ax-bg); border-radius: 6px;\n font-size: 13px; z-index: 100;\n}\n`\n\n// Deliberately vanilla JS — no framework dep. Fetches task list, renders\n// per-field inputs, POSTs submission.\nconst INBOX_PAGE_SCRIPT = `\n(function(){\n const $ = (sel) => document.querySelector(sel);\n const state = { tasks: [], selected: null, actor: document.querySelector('.ax-inbox__root').dataset.actor || '' };\n const toast = (msg) => {\n const el = $('#inbox-toast');\n el.textContent = msg;\n el.hidden = false;\n setTimeout(() => { el.hidden = true; }, 2500);\n };\n\n async function fetchTasks() {\n const qs = state.actor ? ('?actor=' + encodeURIComponent(state.actor)) : '';\n try {\n const r = await fetch('/api/workflows/tasks' + qs, { credentials: 'same-origin' });\n if (!r.ok) { toast('fetch failed: ' + r.status); return; }\n const data = await r.json();\n state.tasks = Array.isArray(data.tasks) ? data.tasks : [];\n renderList();\n if (state.selected && !state.tasks.find(t => t.id === state.selected)) {\n state.selected = null;\n renderDetail();\n }\n } catch (e) { toast('fetch error: ' + e.message); }\n }\n\n function renderList() {\n const ul = $('#inbox-tasks');\n const empty = $('#inbox-empty');\n ul.innerHTML = '';\n if (!state.tasks.length) { empty.hidden = false; return; }\n empty.hidden = true;\n for (const t of state.tasks) {\n const li = document.createElement('li');\n li.className = 'ax-inbox__card' + (t.id === state.selected ? ' is-active' : '');\n li.innerHTML =\n '<div class=\"ax-inbox__card-title\">' + escHtml(t.title) + '</div>' +\n '<div class=\"ax-inbox__card-meta\">' + escHtml(t.assignee) + ' · ' + escHtml(t.workflowId) + '</div>' +\n (t.dueAt ? ('<div class=\"ax-inbox__card-due\">due ' + new Date(t.dueAt).toLocaleString() + '</div>') : '');\n li.addEventListener('click', () => { state.selected = t.id; renderList(); renderDetail(); });\n ul.appendChild(li);\n }\n }\n\n function renderDetail() {\n const head = $('#inbox-detail-head');\n const body = $('#inbox-detail-body');\n const t = state.tasks.find(x => x.id === state.selected);\n if (!t) {\n head.innerHTML = '<span class=\"hint\">Select a task to open its form.</span>';\n body.innerHTML = '';\n return;\n }\n head.innerHTML = '<h2 style=\"margin:0;font-size:15px\">' + escHtml(t.title) + '</h2>' +\n (t.description ? '<p class=\"hint\" style=\"margin:6px 0 0\">' + escHtml(t.description) + '</p>' : '');\n const form = document.createElement('form');\n form.className = 'ax-inbox__form';\n form.addEventListener('submit', (e) => { e.preventDefault(); submit(t, 'primary'); });\n for (const field of (t.form.fields || [])) {\n form.appendChild(renderField(field));\n }\n const actions = document.createElement('div');\n actions.className = 'ax-inbox__actions';\n const primary = document.createElement('button');\n primary.type = 'submit';\n primary.className = 'is-primary';\n primary.textContent = t.form.submitLabel || 'Submit';\n actions.appendChild(primary);\n if (t.form.secondaryAction) {\n const secondary = document.createElement('button');\n secondary.type = 'button';\n secondary.textContent = t.form.secondaryAction.label;\n secondary.addEventListener('click', () => submit(t, 'secondary'));\n actions.appendChild(secondary);\n }\n form.appendChild(actions);\n body.innerHTML = '';\n body.appendChild(form);\n }\n\n function renderField(field) {\n const wrap = document.createElement('div');\n wrap.className = 'ax-inbox__field';\n const label = document.createElement('label');\n label.textContent = field.label + (field.required ? ' *' : '');\n wrap.appendChild(label);\n let input;\n switch (field.type) {\n case 'long-text':\n input = document.createElement('textarea');\n break;\n case 'number':\n input = document.createElement('input'); input.type = 'number';\n break;\n case 'boolean':\n input = document.createElement('select');\n for (const v of ['', 'yes', 'no']) {\n const o = document.createElement('option'); o.value = v; o.textContent = v || '—';\n input.appendChild(o);\n }\n break;\n case 'date':\n input = document.createElement('input'); input.type = 'date';\n break;\n case 'select':\n input = document.createElement('select');\n if (!field.required) { const o = document.createElement('option'); o.value = ''; o.textContent = '—'; input.appendChild(o); }\n for (const opt of (field.options || [])) {\n const o = document.createElement('option'); o.value = opt; o.textContent = opt;\n input.appendChild(o);\n }\n break;\n case 'multi-select':\n input = document.createElement('select'); input.multiple = true; input.size = Math.min(6, (field.options||[]).length || 3);\n for (const opt of (field.options || [])) {\n const o = document.createElement('option'); o.value = opt; o.textContent = opt;\n input.appendChild(o);\n }\n break;\n case 'file':\n input = document.createElement('input'); input.type = 'text'; input.placeholder = 'URL or path';\n break;\n default:\n input = document.createElement('input'); input.type = 'text';\n }\n input.name = field.key;\n if (field.defaultValue !== undefined && field.type !== 'multi-select') input.value = String(field.defaultValue);\n wrap.appendChild(input);\n if (field.hint) {\n const hint = document.createElement('div');\n hint.className = 'ax-inbox__field-hint';\n hint.textContent = field.hint;\n wrap.appendChild(hint);\n }\n const err = document.createElement('div');\n err.className = 'ax-inbox__field-error';\n err.dataset.for = field.key;\n wrap.appendChild(err);\n return wrap;\n }\n\n async function submit(task, action) {\n const form = $('.ax-inbox__form');\n if (!form) return;\n const values = {};\n for (const field of (task.form.fields || [])) {\n const el = form.querySelector('[name=\"' + field.key + '\"]');\n if (!el) continue;\n if (field.type === 'multi-select') {\n values[field.key] = Array.from(el.selectedOptions).map(o => o.value);\n } else if (field.type === 'boolean') {\n values[field.key] = el.value;\n } else {\n values[field.key] = el.value;\n }\n }\n form.querySelectorAll('.ax-inbox__field-error').forEach(e => { e.textContent = ''; });\n try {\n const r = await fetch('/api/workflows/tasks/' + encodeURIComponent(task.id) + '/submit', {\n method: 'POST',\n credentials: 'same-origin',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ submittedBy: state.actor || 'anonymous', submission: { action, values } }),\n });\n const data = await r.json().catch(() => ({}));\n if (!r.ok) {\n if (data.fieldErrors && Array.isArray(data.fieldErrors)) {\n for (const fe of data.fieldErrors) {\n const node = form.querySelector('[data-for=\"' + fe.field + '\"]');\n if (node) node.textContent = fe.message;\n }\n toast('form has errors');\n } else {\n toast(data.error || 'submit failed');\n }\n return;\n }\n toast('submitted');\n state.selected = null;\n fetchTasks();\n } catch (e) { toast('submit error: ' + e.message); }\n }\n\n function escHtml(s) {\n return String(s).replace(/[&<>\"']/g, c => ({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'})[c]);\n }\n\n $('#inbox-actor').addEventListener('change', (e) => {\n state.actor = e.target.value.trim();\n state.selected = null;\n const url = new URL(window.location.href);\n if (state.actor) url.searchParams.set('actor', state.actor); else url.searchParams.delete('actor');\n history.replaceState({}, '', url.toString());\n fetchTasks();\n });\n $('#inbox-refresh').addEventListener('click', fetchTasks);\n\n fetchTasks();\n setInterval(fetchTasks, 10000);\n})();\n`\n"],"mappings":"sEAwBO,SAASA,EAAgBC,EAAsB,CAAC,EAAW,CAChE,IAAMC,EAAO,2CAA2CC,EAAIF,EAAK,OAAS,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yFAOWE,EAAIF,EAAK,OAAS,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6DAmB3G,OAAOG,EAAY,CACjB,MAAO,oBACP,UAAW,YACX,SAAU,QACV,MAAOH,EAAK,MACZ,cAAeA,EAAK,cACpB,KAAAC,EACA,IAAKG,EACL,QAAS,WAAWC,YACtB,CAAC,CACH,CAEA,IAAMD,EAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA6FjBC,EAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":["renderInboxPage","opts","body","esc","renderShell","INBOX_PAGE_CSS","INBOX_PAGE_SCRIPT"]}
@@ -1,2 +0,0 @@
1
- import{a,b,c,d,e}from"./chunk-MCJUAE6V.js";import"./chunk-FIOB3MEX.js";export{e as getAutoInjectSkills,a as loadLocalSkills,d as matchSkillsToTask,c as parseSkillContent,b as parseSkillFile};
2
- //# sourceMappingURL=loader-PTCXLJEX.js.map
@@ -1,2 +0,0 @@
1
- import{a}from"./chunk-63UYRJIC.js";import"./chunk-FIOB3MEX.js";export{a as extractMemories};
2
- //# sourceMappingURL=memory-extract-WH4FZ456.js.map
@@ -1,2 +0,0 @@
1
- import{a}from"./chunk-YPOELN6Z.js";import"./chunk-5WNGHDFC.js";import"./chunk-6PPIFDOQ.js";import"./chunk-ABCHHNG6.js";import"./chunk-4HP6UC2X.js";import"./chunk-SRHLXZRF.js";import"./chunk-MBEQASP3.js";import"./chunk-N67JZAXU.js";import"./chunk-CDNWCYF7.js";import"./chunk-AFRHKA7B.js";import"./chunk-EW27SCCC.js";import"./chunk-ZE2YFX4K.js";import"./chunk-HHJGKD5B.js";import"./chunk-5F3J55LG.js";import"./chunk-34NG7UDX.js";import"./chunk-WJXU5F4Z.js";import"./chunk-LEIYC3BF.js";import"./chunk-WZEYII2S.js";import"./chunk-64P4QHSZ.js";import"./chunk-BFZUG66X.js";import"./chunk-TT2Q7YMZ.js";import"./chunk-SFQUP3BP.js";import"./chunk-XDJSYQST.js";import"./chunk-HCFSHGK4.js";import"./chunk-MCJUAE6V.js";import"./chunk-DSYKYZMT.js";import"./chunk-63UYRJIC.js";import"./chunk-QOYAX2FT.js";import"./chunk-FIOB3MEX.js";export{a as buildProgram};
2
- //# sourceMappingURL=program-FFWEILAS.js.map
@@ -1,2 +0,0 @@
1
- import{k as a,l as b,m as c}from"./chunk-HCFSHGK4.js";import"./chunk-FIOB3MEX.js";export{b as ClaudeCodeProvider,a as ClaudeProvider,c as createProvider};
2
- //# sourceMappingURL=providers-AKQ4HTB4.js.map
@@ -1,2 +0,0 @@
1
- import{a}from"./chunk-BFZUG66X.js";import"./chunk-FIOB3MEX.js";export{a as agenticQuery};
2
- //# sourceMappingURL=query-PKGYE5HR.js.map
@@ -1,2 +0,0 @@
1
- import{e as a,f as b,g as c}from"./chunk-HHJGKD5B.js";import"./chunk-5F3J55LG.js";import"./chunk-34NG7UDX.js";import"./chunk-WJXU5F4Z.js";import"./chunk-LEIYC3BF.js";import"./chunk-WZEYII2S.js";import"./chunk-64P4QHSZ.js";import"./chunk-BFZUG66X.js";import"./chunk-63UYRJIC.js";import"./chunk-QOYAX2FT.js";import"./chunk-FIOB3MEX.js";export{c as AgentRegistry,b as getGlobalRegistry,a as setGlobalRegistry};
2
- //# sourceMappingURL=registry-IFMDJWQ7.js.map
@@ -1,2 +0,0 @@
1
- import{a,b}from"./chunk-SRHLXZRF.js";import"./chunk-MBEQASP3.js";import"./chunk-XDJSYQST.js";import"./chunk-FIOB3MEX.js";export{b as CronScheduler,a as getNextCronDate};
2
- //# sourceMappingURL=scheduler-63D5KFO7.js.map
@@ -1,2 +0,0 @@
1
- import{b as a}from"./chunk-EW27SCCC.js";import"./chunk-FIOB3MEX.js";export{a as ActorStore};
2
- //# sourceMappingURL=store-5MJOO74U.js.map
@@ -1,2 +0,0 @@
1
- import{a,b}from"./chunk-AFRHKA7B.js";import"./chunk-FIOB3MEX.js";export{b as TimerService,a as timerRecordSchema};
2
- //# sourceMappingURL=timers-PCB4ZIBD.js.map
@@ -1,2 +0,0 @@
1
- import{a,b,c,d,e,f}from"./chunk-CDNWCYF7.js";import"./chunk-FIOB3MEX.js";export{d as formActionSchema,c as formFieldSchema,a as formFieldTypeSchema,b as formFieldValidateSchema,e as formSchemaSchema,f as formSubmissionSchema};
2
- //# sourceMappingURL=types-C7IFH42Z.js.map
@@ -1,2 +0,0 @@
1
- import{a,b}from"./chunk-64P4QHSZ.js";import"./chunk-FIOB3MEX.js";export{a as WIKI_ARTICLE_TYPES,b as isWikiArticleType};
2
- //# sourceMappingURL=types-OIFU3KSQ.js.map