botmux 2.33.0 → 2.34.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 (281) hide show
  1. package/README.en.md +12 -1
  2. package/README.md +45 -1
  3. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  4. package/dist/adapters/cli/claude-code.js +11 -0
  5. package/dist/adapters/cli/claude-code.js.map +1 -1
  6. package/dist/cli/bots-list-output.d.ts +21 -0
  7. package/dist/cli/bots-list-output.d.ts.map +1 -0
  8. package/dist/cli/bots-list-output.js +23 -0
  9. package/dist/cli/bots-list-output.js.map +1 -0
  10. package/dist/cli/workflow.d.ts +13 -0
  11. package/dist/cli/workflow.d.ts.map +1 -0
  12. package/dist/cli/workflow.js +781 -0
  13. package/dist/cli/workflow.js.map +1 -0
  14. package/dist/cli.js +69 -14
  15. package/dist/cli.js.map +1 -1
  16. package/dist/core/command-handler.d.ts.map +1 -1
  17. package/dist/core/command-handler.js +219 -6
  18. package/dist/core/command-handler.js.map +1 -1
  19. package/dist/core/session-manager.d.ts +6 -1
  20. package/dist/core/session-manager.d.ts.map +1 -1
  21. package/dist/core/session-manager.js +22 -12
  22. package/dist/core/session-manager.js.map +1 -1
  23. package/dist/core/worker-pool.d.ts +13 -0
  24. package/dist/core/worker-pool.d.ts.map +1 -1
  25. package/dist/core/worker-pool.js +100 -6
  26. package/dist/core/worker-pool.js.map +1 -1
  27. package/dist/daemon.d.ts +3 -0
  28. package/dist/daemon.d.ts.map +1 -1
  29. package/dist/daemon.js +884 -3
  30. package/dist/daemon.js.map +1 -1
  31. package/dist/dashboard/auth.d.ts +36 -0
  32. package/dist/dashboard/auth.d.ts.map +1 -1
  33. package/dist/dashboard/auth.js +22 -0
  34. package/dist/dashboard/auth.js.map +1 -1
  35. package/dist/dashboard/web/app.js +20 -1
  36. package/dist/dashboard/web/app.js.map +1 -1
  37. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  38. package/dist/dashboard/web/i18n.js +356 -0
  39. package/dist/dashboard/web/i18n.js.map +1 -1
  40. package/dist/dashboard/web/workflow-catalog.d.ts +2 -0
  41. package/dist/dashboard/web/workflow-catalog.d.ts.map +1 -0
  42. package/dist/dashboard/web/workflow-catalog.js +323 -0
  43. package/dist/dashboard/web/workflow-catalog.js.map +1 -0
  44. package/dist/dashboard/web/workflows.d.ts +2 -0
  45. package/dist/dashboard/web/workflows.d.ts.map +1 -0
  46. package/dist/dashboard/web/workflows.js +1618 -0
  47. package/dist/dashboard/web/workflows.js.map +1 -0
  48. package/dist/dashboard/workflow-api.d.ts +23 -0
  49. package/dist/dashboard/workflow-api.d.ts.map +1 -0
  50. package/dist/dashboard/workflow-api.js +463 -0
  51. package/dist/dashboard/workflow-api.js.map +1 -0
  52. package/dist/dashboard-web/app.js +494 -199
  53. package/dist/dashboard-web/index.html +1 -0
  54. package/dist/dashboard-web/style.css +160 -6
  55. package/dist/dashboard-web/terminal-replay.html +227 -0
  56. package/dist/dashboard.js +29 -12
  57. package/dist/dashboard.js.map +1 -1
  58. package/dist/i18n/en.d.ts.map +1 -1
  59. package/dist/i18n/en.js +12 -0
  60. package/dist/i18n/en.js.map +1 -1
  61. package/dist/i18n/zh.d.ts.map +1 -1
  62. package/dist/i18n/zh.js +12 -0
  63. package/dist/i18n/zh.js.map +1 -1
  64. package/dist/im/lark/card-handler.d.ts +3 -0
  65. package/dist/im/lark/card-handler.d.ts.map +1 -1
  66. package/dist/im/lark/card-handler.js +27 -1
  67. package/dist/im/lark/card-handler.js.map +1 -1
  68. package/dist/im/lark/client.d.ts +19 -2
  69. package/dist/im/lark/client.d.ts.map +1 -1
  70. package/dist/im/lark/client.js +21 -2
  71. package/dist/im/lark/client.js.map +1 -1
  72. package/dist/im/lark/workflow-card-handler.d.ts +50 -0
  73. package/dist/im/lark/workflow-card-handler.d.ts.map +1 -0
  74. package/dist/im/lark/workflow-card-handler.js +152 -0
  75. package/dist/im/lark/workflow-card-handler.js.map +1 -0
  76. package/dist/im/lark/workflow-cards.d.ts +46 -0
  77. package/dist/im/lark/workflow-cards.d.ts.map +1 -0
  78. package/dist/im/lark/workflow-cards.js +226 -0
  79. package/dist/im/lark/workflow-cards.js.map +1 -0
  80. package/dist/im/lark/workflow-progress-card.d.ts +76 -0
  81. package/dist/im/lark/workflow-progress-card.d.ts.map +1 -0
  82. package/dist/im/lark/workflow-progress-card.js +279 -0
  83. package/dist/im/lark/workflow-progress-card.js.map +1 -0
  84. package/dist/im/lark/workflow-slash-command.d.ts +92 -0
  85. package/dist/im/lark/workflow-slash-command.d.ts.map +1 -0
  86. package/dist/im/lark/workflow-slash-command.js +185 -0
  87. package/dist/im/lark/workflow-slash-command.js.map +1 -0
  88. package/dist/services/group-creator.d.ts.map +1 -1
  89. package/dist/services/group-creator.js +17 -4
  90. package/dist/services/group-creator.js.map +1 -1
  91. package/dist/services/groups-store.d.ts +11 -0
  92. package/dist/services/groups-store.d.ts.map +1 -1
  93. package/dist/services/groups-store.js +26 -0
  94. package/dist/services/groups-store.js.map +1 -1
  95. package/dist/services/jsonl-cursor.d.ts +12 -0
  96. package/dist/services/jsonl-cursor.d.ts.map +1 -0
  97. package/dist/services/jsonl-cursor.js +45 -0
  98. package/dist/services/jsonl-cursor.js.map +1 -0
  99. package/dist/services/schedule-store.d.ts +35 -0
  100. package/dist/services/schedule-store.d.ts.map +1 -1
  101. package/dist/services/schedule-store.js +108 -1
  102. package/dist/services/schedule-store.js.map +1 -1
  103. package/dist/skills/definitions.d.ts.map +1 -1
  104. package/dist/skills/definitions.js +399 -0
  105. package/dist/skills/definitions.js.map +1 -1
  106. package/dist/types.d.ts +4 -0
  107. package/dist/types.d.ts.map +1 -1
  108. package/dist/utils/cli-usage-limit.d.ts.map +1 -1
  109. package/dist/utils/cli-usage-limit.js +4 -0
  110. package/dist/utils/cli-usage-limit.js.map +1 -1
  111. package/dist/worker.js +118 -14
  112. package/dist/worker.js.map +1 -1
  113. package/dist/workflows/attempt-resume.d.ts +114 -0
  114. package/dist/workflows/attempt-resume.d.ts.map +1 -0
  115. package/dist/workflows/attempt-resume.js +385 -0
  116. package/dist/workflows/attempt-resume.js.map +1 -0
  117. package/dist/workflows/attempt-terminal.d.ts +21 -0
  118. package/dist/workflows/attempt-terminal.d.ts.map +1 -0
  119. package/dist/workflows/attempt-terminal.js +7 -0
  120. package/dist/workflows/attempt-terminal.js.map +1 -0
  121. package/dist/workflows/blob.d.ts +27 -0
  122. package/dist/workflows/blob.d.ts.map +1 -0
  123. package/dist/workflows/blob.js +39 -0
  124. package/dist/workflows/blob.js.map +1 -0
  125. package/dist/workflows/cancel-run.d.ts +45 -0
  126. package/dist/workflows/cancel-run.d.ts.map +1 -0
  127. package/dist/workflows/cancel-run.js +99 -0
  128. package/dist/workflows/cancel-run.js.map +1 -0
  129. package/dist/workflows/cancel.d.ts +111 -0
  130. package/dist/workflows/cancel.d.ts.map +1 -0
  131. package/dist/workflows/cancel.js +120 -0
  132. package/dist/workflows/cancel.js.map +1 -0
  133. package/dist/workflows/catalog.d.ts +60 -0
  134. package/dist/workflows/catalog.d.ts.map +1 -0
  135. package/dist/workflows/catalog.js +119 -0
  136. package/dist/workflows/catalog.js.map +1 -0
  137. package/dist/workflows/cold-attach.d.ts +30 -0
  138. package/dist/workflows/cold-attach.d.ts.map +1 -0
  139. package/dist/workflows/cold-attach.js +40 -0
  140. package/dist/workflows/cold-attach.js.map +1 -0
  141. package/dist/workflows/cold-scan.d.ts +21 -0
  142. package/dist/workflows/cold-scan.d.ts.map +1 -0
  143. package/dist/workflows/cold-scan.js +70 -0
  144. package/dist/workflows/cold-scan.js.map +1 -0
  145. package/dist/workflows/daemon-spawn.d.ts +117 -0
  146. package/dist/workflows/daemon-spawn.d.ts.map +1 -0
  147. package/dist/workflows/daemon-spawn.js +551 -0
  148. package/dist/workflows/daemon-spawn.js.map +1 -0
  149. package/dist/workflows/definition.d.ts +1309 -0
  150. package/dist/workflows/definition.d.ts.map +1 -0
  151. package/dist/workflows/definition.js +334 -0
  152. package/dist/workflows/definition.js.map +1 -0
  153. package/dist/workflows/effect-input.d.ts +4 -0
  154. package/dist/workflows/effect-input.d.ts.map +1 -0
  155. package/dist/workflows/effect-input.js +18 -0
  156. package/dist/workflows/effect-input.js.map +1 -0
  157. package/dist/workflows/events/append.d.ts +77 -0
  158. package/dist/workflows/events/append.d.ts.map +1 -0
  159. package/dist/workflows/events/append.js +214 -0
  160. package/dist/workflows/events/append.js.map +1 -0
  161. package/dist/workflows/events/idempotency.d.ts +77 -0
  162. package/dist/workflows/events/idempotency.d.ts.map +1 -0
  163. package/dist/workflows/events/idempotency.js +116 -0
  164. package/dist/workflows/events/idempotency.js.map +1 -0
  165. package/dist/workflows/events/index.d.ts +7 -0
  166. package/dist/workflows/events/index.d.ts.map +1 -0
  167. package/dist/workflows/events/index.js +7 -0
  168. package/dist/workflows/events/index.js.map +1 -0
  169. package/dist/workflows/events/payloads.d.ts +917 -0
  170. package/dist/workflows/events/payloads.d.ts.map +1 -0
  171. package/dist/workflows/events/payloads.js +337 -0
  172. package/dist/workflows/events/payloads.js.map +1 -0
  173. package/dist/workflows/events/replay.d.ts +238 -0
  174. package/dist/workflows/events/replay.d.ts.map +1 -0
  175. package/dist/workflows/events/replay.js +608 -0
  176. package/dist/workflows/events/replay.js.map +1 -0
  177. package/dist/workflows/events/schema.d.ts +5242 -0
  178. package/dist/workflows/events/schema.d.ts.map +1 -0
  179. package/dist/workflows/events/schema.js +295 -0
  180. package/dist/workflows/events/schema.js.map +1 -0
  181. package/dist/workflows/events/types.d.ts +34 -0
  182. package/dist/workflows/events/types.d.ts.map +1 -0
  183. package/dist/workflows/events/types.js +2 -0
  184. package/dist/workflows/events/types.js.map +1 -0
  185. package/dist/workflows/fanout.d.ts +36 -0
  186. package/dist/workflows/fanout.d.ts.map +1 -0
  187. package/dist/workflows/fanout.js +114 -0
  188. package/dist/workflows/fanout.js.map +1 -0
  189. package/dist/workflows/hostExecutors/botmux-schedule.d.ts +41 -0
  190. package/dist/workflows/hostExecutors/botmux-schedule.d.ts.map +1 -0
  191. package/dist/workflows/hostExecutors/botmux-schedule.js +121 -0
  192. package/dist/workflows/hostExecutors/botmux-schedule.js.map +1 -0
  193. package/dist/workflows/hostExecutors/feishu-im.d.ts +12 -0
  194. package/dist/workflows/hostExecutors/feishu-im.d.ts.map +1 -0
  195. package/dist/workflows/hostExecutors/feishu-im.js +49 -0
  196. package/dist/workflows/hostExecutors/feishu-im.js.map +1 -0
  197. package/dist/workflows/hostExecutors/feishu-reply.d.ts +24 -0
  198. package/dist/workflows/hostExecutors/feishu-reply.d.ts.map +1 -0
  199. package/dist/workflows/hostExecutors/feishu-reply.js +88 -0
  200. package/dist/workflows/hostExecutors/feishu-reply.js.map +1 -0
  201. package/dist/workflows/hostExecutors/feishu-send.d.ts +23 -0
  202. package/dist/workflows/hostExecutors/feishu-send.d.ts.map +1 -0
  203. package/dist/workflows/hostExecutors/feishu-send.js +124 -0
  204. package/dist/workflows/hostExecutors/feishu-send.js.map +1 -0
  205. package/dist/workflows/hostExecutors/index.d.ts +8 -0
  206. package/dist/workflows/hostExecutors/index.d.ts.map +1 -0
  207. package/dist/workflows/hostExecutors/index.js +8 -0
  208. package/dist/workflows/hostExecutors/index.js.map +1 -0
  209. package/dist/workflows/hostExecutors/protocol.d.ts +42 -0
  210. package/dist/workflows/hostExecutors/protocol.d.ts.map +1 -0
  211. package/dist/workflows/hostExecutors/protocol.js +181 -0
  212. package/dist/workflows/hostExecutors/protocol.js.map +1 -0
  213. package/dist/workflows/hostExecutors/registry.d.ts +10 -0
  214. package/dist/workflows/hostExecutors/registry.d.ts.map +1 -0
  215. package/dist/workflows/hostExecutors/registry.js +36 -0
  216. package/dist/workflows/hostExecutors/registry.js.map +1 -0
  217. package/dist/workflows/hostExecutors/types.d.ts +78 -0
  218. package/dist/workflows/hostExecutors/types.d.ts.map +1 -0
  219. package/dist/workflows/hostExecutors/types.js +2 -0
  220. package/dist/workflows/hostExecutors/types.js.map +1 -0
  221. package/dist/workflows/loader.d.ts +16 -0
  222. package/dist/workflows/loader.d.ts.map +1 -0
  223. package/dist/workflows/loader.js +56 -0
  224. package/dist/workflows/loader.js.map +1 -0
  225. package/dist/workflows/loop.d.ts +50 -0
  226. package/dist/workflows/loop.d.ts.map +1 -0
  227. package/dist/workflows/loop.js +350 -0
  228. package/dist/workflows/loop.js.map +1 -0
  229. package/dist/workflows/ops-projection.d.ts +168 -0
  230. package/dist/workflows/ops-projection.d.ts.map +1 -0
  231. package/dist/workflows/ops-projection.js +707 -0
  232. package/dist/workflows/ops-projection.js.map +1 -0
  233. package/dist/workflows/orchestrator.d.ts +107 -0
  234. package/dist/workflows/orchestrator.d.ts.map +1 -0
  235. package/dist/workflows/orchestrator.js +197 -0
  236. package/dist/workflows/orchestrator.js.map +1 -0
  237. package/dist/workflows/output-binding.d.ts +70 -0
  238. package/dist/workflows/output-binding.d.ts.map +1 -0
  239. package/dist/workflows/output-binding.js +265 -0
  240. package/dist/workflows/output-binding.js.map +1 -0
  241. package/dist/workflows/params.d.ts +61 -0
  242. package/dist/workflows/params.d.ts.map +1 -0
  243. package/dist/workflows/params.js +195 -0
  244. package/dist/workflows/params.js.map +1 -0
  245. package/dist/workflows/resume.d.ts +263 -0
  246. package/dist/workflows/resume.d.ts.map +1 -0
  247. package/dist/workflows/resume.js +808 -0
  248. package/dist/workflows/resume.js.map +1 -0
  249. package/dist/workflows/run-id.d.ts +2 -0
  250. package/dist/workflows/run-id.d.ts.map +1 -0
  251. package/dist/workflows/run-id.js +7 -0
  252. package/dist/workflows/run-id.js.map +1 -0
  253. package/dist/workflows/run-init.d.ts +48 -0
  254. package/dist/workflows/run-init.d.ts.map +1 -0
  255. package/dist/workflows/run-init.js +99 -0
  256. package/dist/workflows/run-init.js.map +1 -0
  257. package/dist/workflows/runs-dir.d.ts +4 -0
  258. package/dist/workflows/runs-dir.d.ts.map +1 -0
  259. package/dist/workflows/runs-dir.js +15 -0
  260. package/dist/workflows/runs-dir.js.map +1 -0
  261. package/dist/workflows/runtime.d.ts +211 -0
  262. package/dist/workflows/runtime.d.ts.map +1 -0
  263. package/dist/workflows/runtime.js +594 -0
  264. package/dist/workflows/runtime.js.map +1 -0
  265. package/dist/workflows/spawn-bot.d.ts +165 -0
  266. package/dist/workflows/spawn-bot.d.ts.map +1 -0
  267. package/dist/workflows/spawn-bot.js +215 -0
  268. package/dist/workflows/spawn-bot.js.map +1 -0
  269. package/dist/workflows/system.d.ts +49 -0
  270. package/dist/workflows/system.d.ts.map +1 -0
  271. package/dist/workflows/system.js +48 -0
  272. package/dist/workflows/system.js.map +1 -0
  273. package/dist/workflows/trigger-run.d.ts +70 -0
  274. package/dist/workflows/trigger-run.d.ts.map +1 -0
  275. package/dist/workflows/trigger-run.js +88 -0
  276. package/dist/workflows/trigger-run.js.map +1 -0
  277. package/dist/workflows/wait.d.ts +120 -0
  278. package/dist/workflows/wait.d.ts.map +1 -0
  279. package/dist/workflows/wait.js +181 -0
  280. package/dist/workflows/wait.js.map +1 -0
  281. package/package.json +3 -3
@@ -0,0 +1,323 @@
1
+ import { t } from './ui.js';
2
+ function escapeHtml(s) {
3
+ return s.replace(/[&<>"']/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }[c]));
4
+ }
5
+ function short(value) {
6
+ if (!value)
7
+ return '-';
8
+ return value.length > 18 ? value.slice(0, 10) + '...' + value.slice(-6) : value;
9
+ }
10
+ export function renderWorkflowCatalogPage(root) {
11
+ // Catalog lives at `#/workflows/catalog[/<workflowId>]` since the nav
12
+ // refactor. Legacy `#/workflows-catalog[/<workflowId>]` is honored so
13
+ // pasted URLs keep working.
14
+ const detailMatch = location.hash.match(/^#\/(?:workflows\/catalog|workflows-catalog)\/([^/?#]+)$/);
15
+ if (detailMatch) {
16
+ return renderCatalogDetailPage(root, decodeURIComponent(detailMatch[1]));
17
+ }
18
+ return renderCatalogListPage(root);
19
+ }
20
+ function renderCatalogListPage(root) {
21
+ root.innerHTML = `
22
+ <nav class="wf-subnav">
23
+ <a href="#/workflows" data-i18n="workflow.subnav.runs">${escapeHtml(t('workflow.subnav.runs'))}</a>
24
+ <a href="#/workflows/catalog" class="active" data-i18n="workflow.subnav.catalog">${escapeHtml(t('workflow.subnav.catalog'))}</a>
25
+ </nav>
26
+ <section class="catalog-head">
27
+ <div>
28
+ <h2>${escapeHtml(t('catalog.title'))}</h2>
29
+ <p class="muted">${escapeHtml(t('catalog.subtitle'))}</p>
30
+ </div>
31
+ <button id="catalog-refresh" type="button">${escapeHtml(t('catalog.refresh'))}</button>
32
+ </section>
33
+ <form id="catalog-filters" class="filters">
34
+ <input type="search" name="q" placeholder="${escapeHtml(t('catalog.searchPlaceholder'))}" />
35
+ <span id="catalog-status" class="muted"></span>
36
+ </form>
37
+ <div class="wf-table-scroll">
38
+ <table>
39
+ <thead><tr>
40
+ <th>${escapeHtml(t('catalog.table.workflow'))}</th>
41
+ <th>${escapeHtml(t('catalog.table.version'))}</th>
42
+ <th>${escapeHtml(t('catalog.table.params'))}</th>
43
+ <th>${escapeHtml(t('catalog.table.nodes'))}</th>
44
+ <th>${escapeHtml(t('catalog.table.revision'))}</th>
45
+ <th>${escapeHtml(t('catalog.table.path'))}</th>
46
+ </tr></thead>
47
+ <tbody id="catalog-tbody"></tbody>
48
+ </table>
49
+ </div>
50
+ `;
51
+ const tbody = root.querySelector('#catalog-tbody');
52
+ const status = root.querySelector('#catalog-status');
53
+ const form = root.querySelector('#catalog-filters');
54
+ const refresh = root.querySelector('#catalog-refresh');
55
+ let entries = [];
56
+ let error = null;
57
+ let disposed = false;
58
+ function filtered() {
59
+ const q = (new FormData(form).get('q') ?? '').trim().toLowerCase();
60
+ if (!q)
61
+ return entries;
62
+ return entries.filter((entry) => entry.workflowId.toLowerCase().includes(q) ||
63
+ entry.path.toLowerCase().includes(q));
64
+ }
65
+ function render() {
66
+ if (error) {
67
+ status.textContent = t('catalog.loadFailed', { error });
68
+ status.classList.add('error');
69
+ }
70
+ else {
71
+ status.textContent = `${entries.length}`;
72
+ status.classList.remove('error');
73
+ }
74
+ const rows = filtered();
75
+ if (rows.length === 0) {
76
+ tbody.innerHTML = `<tr><td colspan="6" class="empty">${entries.length === 0
77
+ ? escapeHtml(t('catalog.noDefinitions'))
78
+ : escapeHtml(t('catalog.noFilterMatch'))}</td></tr>`;
79
+ return;
80
+ }
81
+ tbody.innerHTML = rows.map((entry) => `
82
+ <tr>
83
+ <td><a href="#/workflows/catalog/${encodeURIComponent(entry.workflowId)}"><code>${escapeHtml(entry.workflowId)}</code></a></td>
84
+ <td>${entry.version}</td>
85
+ <td>${escapeHtml(t('catalog.paramSummary', {
86
+ required: entry.requiredParamCount,
87
+ total: entry.paramCount,
88
+ }))}</td>
89
+ <td>${entry.nodeCount}</td>
90
+ <td><code>${escapeHtml(short(entry.revisionId))}</code></td>
91
+ <td><code>${escapeHtml(entry.path)}</code></td>
92
+ </tr>
93
+ `).join('');
94
+ }
95
+ async function load() {
96
+ refresh.disabled = true;
97
+ status.textContent = t('catalog.loading');
98
+ try {
99
+ const res = await fetch('/api/workflows/definitions');
100
+ if (!res.ok)
101
+ throw new Error(`HTTP ${res.status}`);
102
+ const body = (await res.json());
103
+ entries = body.definitions ?? [];
104
+ error = null;
105
+ }
106
+ catch (err) {
107
+ error = err?.message ?? String(err);
108
+ entries = [];
109
+ }
110
+ finally {
111
+ refresh.disabled = false;
112
+ if (!disposed)
113
+ render();
114
+ }
115
+ }
116
+ form.addEventListener('input', render);
117
+ refresh.addEventListener('click', () => void load());
118
+ void load();
119
+ return () => {
120
+ disposed = true;
121
+ };
122
+ }
123
+ function renderCatalogDetailPage(root, workflowId) {
124
+ root.innerHTML = `
125
+ <div class="catalog-detail-head">
126
+ <a class="btn-link" href="#/workflows/catalog">${escapeHtml(t('catalog.back'))}</a>
127
+ <div>
128
+ <h2><code>${escapeHtml(workflowId)}</code></h2>
129
+ <div id="catalog-detail-subtitle" class="muted">${escapeHtml(t('workflow.detail.loading'))}</div>
130
+ </div>
131
+ </div>
132
+ <section id="catalog-error" class="hint-warn" hidden></section>
133
+ <section id="catalog-run-status" class="hint-ok" hidden></section>
134
+ <div id="catalog-detail-body"></div>
135
+ `;
136
+ const subtitle = root.querySelector('#catalog-detail-subtitle');
137
+ const errorEl = root.querySelector('#catalog-error');
138
+ const runStatusEl = root.querySelector('#catalog-run-status');
139
+ const bodyEl = root.querySelector('#catalog-detail-body');
140
+ let detail = null;
141
+ let disposed = false;
142
+ let running = false;
143
+ function setError(message) {
144
+ errorEl.hidden = !message;
145
+ errorEl.textContent = message ?? '';
146
+ }
147
+ function setRunStatus(message) {
148
+ runStatusEl.hidden = !message;
149
+ runStatusEl.textContent = message ?? '';
150
+ }
151
+ function defaultParams(params) {
152
+ const out = {};
153
+ for (const [key, def] of Object.entries(params ?? {})) {
154
+ if ('default' in def)
155
+ out[key] = def.default;
156
+ }
157
+ return out;
158
+ }
159
+ function render() {
160
+ if (!detail)
161
+ return;
162
+ const def = detail.definition;
163
+ subtitle.textContent = `${t('catalog.revision')} ${short(detail.revisionId)} · ${detail.path}`;
164
+ const paramsJson = JSON.stringify(defaultParams(def.params), null, 2);
165
+ bodyEl.innerHTML = `
166
+ <section class="wf-panel">
167
+ <div class="wf-panel-title"><h3>${escapeHtml(t('catalog.summary'))}</h3></div>
168
+ <div class="wf-summary-grid">
169
+ <div class="wf-summary-item"><span>${escapeHtml(t('catalog.table.workflow'))}</span><strong><code>${escapeHtml(def.workflowId)}</code></strong></div>
170
+ <div class="wf-summary-item"><span>${escapeHtml(t('catalog.table.version'))}</span><strong>${def.version}</strong></div>
171
+ <div class="wf-summary-item"><span>${escapeHtml(t('catalog.nodeCount'))}</span><strong>${Object.keys(def.nodes).length}</strong></div>
172
+ <div class="wf-summary-item"><span>${escapeHtml(t('catalog.path'))}</span><strong><code>${escapeHtml(detail.path)}</code></strong></div>
173
+ </div>
174
+ </section>
175
+
176
+ <section class="wf-panel">
177
+ <div class="wf-panel-title"><h3>${escapeHtml(t('catalog.runPanel'))}</h3></div>
178
+ <form id="catalog-run-form" class="catalog-run-form">
179
+ <label>
180
+ <span>${escapeHtml(t('catalog.paramsJson'))}</span>
181
+ <textarea id="catalog-params" rows="8" spellcheck="false" placeholder="${escapeHtml(t('catalog.paramsPlaceholder'))}">${escapeHtml(paramsJson)}</textarea>
182
+ </label>
183
+ <div class="catalog-chat-grid">
184
+ <label>
185
+ <span>${escapeHtml(t('catalog.chatId'))}</span>
186
+ <input id="catalog-chat-id" type="text" autocomplete="off" />
187
+ </label>
188
+ <label>
189
+ <span>${escapeHtml(t('catalog.larkAppId'))}</span>
190
+ <input id="catalog-lark-app-id" type="text" autocomplete="off" />
191
+ </label>
192
+ </div>
193
+ <div class="muted">${escapeHtml(t('catalog.chatBindingHint'))}</div>
194
+ <div id="catalog-param-errors" class="catalog-param-errors" hidden></div>
195
+ <button id="catalog-run-btn" type="submit" class="primary">${escapeHtml(t('catalog.run'))}</button>
196
+ </form>
197
+ </section>
198
+
199
+ <section class="wf-panel">
200
+ <div class="wf-panel-title"><h3>${escapeHtml(t('catalog.paramsSchema'))}</h3></div>
201
+ ${renderParams(def.params)}
202
+ </section>
203
+
204
+ <section class="wf-panel">
205
+ <div class="wf-panel-title"><h3>${escapeHtml(t('catalog.definitionJson'))}</h3></div>
206
+ <pre class="wf-io-pre">${escapeHtml(JSON.stringify(def, null, 2))}</pre>
207
+ </section>
208
+ `;
209
+ attachRunForm();
210
+ }
211
+ async function runWorkflow() {
212
+ if (!detail || running)
213
+ return;
214
+ const paramsEl = bodyEl.querySelector('#catalog-params');
215
+ const chatIdEl = bodyEl.querySelector('#catalog-chat-id');
216
+ const appIdEl = bodyEl.querySelector('#catalog-lark-app-id');
217
+ const submit = bodyEl.querySelector('#catalog-run-btn');
218
+ const issueEl = bodyEl.querySelector('#catalog-param-errors');
219
+ let params;
220
+ try {
221
+ params = JSON.parse(paramsEl.value || '{}');
222
+ if (!params || typeof params !== 'object' || Array.isArray(params)) {
223
+ throw new Error(t('catalog.badParamsJson'));
224
+ }
225
+ }
226
+ catch (err) {
227
+ issueEl.hidden = false;
228
+ issueEl.innerHTML = `<div class="muted error">${escapeHtml(err?.message ?? String(err))}</div>`;
229
+ return;
230
+ }
231
+ running = true;
232
+ submit.disabled = true;
233
+ submit.textContent = t('catalog.running');
234
+ issueEl.hidden = true;
235
+ setError(null);
236
+ setRunStatus(null);
237
+ try {
238
+ const res = await fetch(`/api/workflows/definitions/${encodeURIComponent(detail.definition.workflowId)}/run`, {
239
+ method: 'POST',
240
+ headers: { 'content-type': 'application/json' },
241
+ body: JSON.stringify({
242
+ params,
243
+ chatBinding: {
244
+ chatId: chatIdEl.value.trim(),
245
+ larkAppId: appIdEl.value.trim(),
246
+ },
247
+ }),
248
+ });
249
+ if (res.status === 401)
250
+ throw new Error(t('catalog.writeAccess'));
251
+ const result = (await res.json().catch(() => ({})));
252
+ if (!res.ok || !result.ok) {
253
+ if (result.issues?.length) {
254
+ issueEl.hidden = false;
255
+ issueEl.innerHTML = `<strong>${escapeHtml(t('catalog.invalidParams'))}</strong><ul>${result.issues.map((issue) => `<li>${escapeHtml(t('catalog.issue', {
256
+ path: issue.path.length ? issue.path.join('.') : '(root)',
257
+ message: issue.message,
258
+ }))}</li>`).join('')}</ul>`;
259
+ }
260
+ throw new Error(result.hint ?? result.message ?? result.error ?? t('catalog.runHttp', { status: res.status }));
261
+ }
262
+ setRunStatus(t('catalog.runStarted'));
263
+ if (result.runId)
264
+ location.hash = `#/workflows/${encodeURIComponent(result.runId)}`;
265
+ }
266
+ catch (err) {
267
+ setError(err?.message ?? String(err));
268
+ }
269
+ finally {
270
+ running = false;
271
+ submit.disabled = false;
272
+ submit.textContent = t('catalog.run');
273
+ }
274
+ }
275
+ function attachRunForm() {
276
+ const form = bodyEl.querySelector('#catalog-run-form');
277
+ form?.addEventListener('submit', (ev) => {
278
+ ev.preventDefault();
279
+ void runWorkflow();
280
+ });
281
+ }
282
+ async function load() {
283
+ try {
284
+ const res = await fetch(`/api/workflows/definitions/${encodeURIComponent(workflowId)}`);
285
+ if (res.status === 404)
286
+ throw new Error('unknown_workflow');
287
+ if (!res.ok)
288
+ throw new Error(`HTTP ${res.status}`);
289
+ detail = (await res.json());
290
+ setError(null);
291
+ render();
292
+ }
293
+ catch (err) {
294
+ setError(t('catalog.definitionLoadFailed', { error: err?.message ?? String(err) }));
295
+ subtitle.textContent = t('workflow.detail.loadFailed');
296
+ }
297
+ }
298
+ void load().then(() => {
299
+ if (disposed)
300
+ return;
301
+ });
302
+ return () => {
303
+ disposed = true;
304
+ };
305
+ }
306
+ function renderParams(params) {
307
+ const entries = Object.entries(params ?? {});
308
+ if (entries.length === 0) {
309
+ return `<div class="muted">${escapeHtml(t('catalog.noParams'))}</div>`;
310
+ }
311
+ return `<div class="catalog-param-list">${entries.map(([name, def]) => `
312
+ <article class="catalog-param">
313
+ <header>
314
+ <code>${escapeHtml(name)}</code>
315
+ <span class="wf-status">${escapeHtml(def.required ? t('catalog.required') : t('catalog.optional'))}</span>
316
+ <span class="muted">${escapeHtml(def.type)}${def.format ? ` · ${escapeHtml(def.format)}` : ''}</span>
317
+ </header>
318
+ ${def.description ? `<div class="muted">${escapeHtml(t('catalog.description'))}: ${escapeHtml(def.description)}</div>` : ''}
319
+ ${'default' in def ? `<pre class="wf-io-pre">${escapeHtml(`${t('catalog.default')}: ${JSON.stringify(def.default, null, 2)}`)}</pre>` : ''}
320
+ </article>
321
+ `).join('')}</div>`;
322
+ }
323
+ //# sourceMappingURL=workflow-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-catalog.js","sourceRoot":"","sources":["../../../src/dashboard/web/workflow-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function renderWorkflowsPage(root: HTMLElement): () => void;
2
+ //# sourceMappingURL=workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/workflows.ts"],"names":[],"mappings":"AA6OA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,IAAI,CASjE"}