botmux 2.88.1 → 2.90.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 (217) hide show
  1. package/README.en.md +3 -3
  2. package/README.md +3 -3
  3. package/dist/bot-registry.d.ts +2 -0
  4. package/dist/bot-registry.d.ts.map +1 -1
  5. package/dist/bot-registry.js +4 -0
  6. package/dist/bot-registry.js.map +1 -1
  7. package/dist/cli/dashboard-endpoint.d.ts.map +1 -1
  8. package/dist/cli/dashboard-endpoint.js +9 -3
  9. package/dist/cli/dashboard-endpoint.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +11 -3
  12. package/dist/cli.js.map +1 -1
  13. package/dist/core/command-handler.d.ts.map +1 -1
  14. package/dist/core/command-handler.js +9 -1
  15. package/dist/core/command-handler.js.map +1 -1
  16. package/dist/core/dashboard-command/groups.d.ts +20 -0
  17. package/dist/core/dashboard-command/groups.d.ts.map +1 -0
  18. package/dist/core/dashboard-command/groups.js +52 -0
  19. package/dist/core/dashboard-command/groups.js.map +1 -0
  20. package/dist/core/dashboard-command/index.d.ts +30 -0
  21. package/dist/core/dashboard-command/index.d.ts.map +1 -0
  22. package/dist/core/dashboard-command/index.js +81 -0
  23. package/dist/core/dashboard-command/index.js.map +1 -0
  24. package/dist/core/dashboard-command/overview.d.ts +29 -0
  25. package/dist/core/dashboard-command/overview.d.ts.map +1 -0
  26. package/dist/core/dashboard-command/overview.js +61 -0
  27. package/dist/core/dashboard-command/overview.js.map +1 -0
  28. package/dist/core/dashboard-command/owner-gate.d.ts +41 -0
  29. package/dist/core/dashboard-command/owner-gate.d.ts.map +1 -0
  30. package/dist/core/dashboard-command/owner-gate.js +40 -0
  31. package/dist/core/dashboard-command/owner-gate.js.map +1 -0
  32. package/dist/core/dashboard-command/schedules.d.ts +20 -0
  33. package/dist/core/dashboard-command/schedules.d.ts.map +1 -0
  34. package/dist/core/dashboard-command/schedules.js +47 -0
  35. package/dist/core/dashboard-command/schedules.js.map +1 -0
  36. package/dist/core/dashboard-command/sessions.d.ts +22 -0
  37. package/dist/core/dashboard-command/sessions.d.ts.map +1 -0
  38. package/dist/core/dashboard-command/sessions.js +43 -0
  39. package/dist/core/dashboard-command/sessions.js.map +1 -0
  40. package/dist/core/dashboard-command/settings.d.ts +21 -0
  41. package/dist/core/dashboard-command/settings.d.ts.map +1 -0
  42. package/dist/core/dashboard-command/settings.js +55 -0
  43. package/dist/core/dashboard-command/settings.js.map +1 -0
  44. package/dist/core/dashboard-command/stub.d.ts +16 -0
  45. package/dist/core/dashboard-command/stub.d.ts.map +1 -0
  46. package/dist/core/dashboard-command/stub.js +28 -0
  47. package/dist/core/dashboard-command/stub.js.map +1 -0
  48. package/dist/core/dashboard-command/workflows.d.ts +20 -0
  49. package/dist/core/dashboard-command/workflows.d.ts.map +1 -0
  50. package/dist/core/dashboard-command/workflows.js +45 -0
  51. package/dist/core/dashboard-command/workflows.js.map +1 -0
  52. package/dist/core/passthrough-commands.d.ts.map +1 -1
  53. package/dist/core/passthrough-commands.js +1 -1
  54. package/dist/core/passthrough-commands.js.map +1 -1
  55. package/dist/core/skills/discovery.d.ts +16 -0
  56. package/dist/core/skills/discovery.d.ts.map +1 -1
  57. package/dist/core/skills/discovery.js +48 -2
  58. package/dist/core/skills/discovery.js.map +1 -1
  59. package/dist/core/worker-pool.d.ts.map +1 -1
  60. package/dist/core/worker-pool.js +9 -2
  61. package/dist/core/worker-pool.js.map +1 -1
  62. package/dist/daemon-internal-client-wrapper.d.ts +41 -0
  63. package/dist/daemon-internal-client-wrapper.d.ts.map +1 -0
  64. package/dist/daemon-internal-client-wrapper.js +65 -0
  65. package/dist/daemon-internal-client-wrapper.js.map +1 -0
  66. package/dist/dashboard/aggregator.d.ts +12 -0
  67. package/dist/dashboard/aggregator.d.ts.map +1 -1
  68. package/dist/dashboard/aggregator.js +16 -0
  69. package/dist/dashboard/aggregator.js.map +1 -1
  70. package/dist/dashboard/auth.d.ts +7 -0
  71. package/dist/dashboard/auth.d.ts.map +1 -1
  72. package/dist/dashboard/auth.js +21 -0
  73. package/dist/dashboard/auth.js.map +1 -1
  74. package/dist/dashboard/card-model-types.d.ts +50 -0
  75. package/dist/dashboard/card-model-types.d.ts.map +1 -0
  76. package/dist/dashboard/card-model-types.js +9 -0
  77. package/dist/dashboard/card-model-types.js.map +1 -0
  78. package/dist/dashboard/daemon-internal-api.d.ts +90 -0
  79. package/dist/dashboard/daemon-internal-api.d.ts.map +1 -0
  80. package/dist/dashboard/daemon-internal-api.js +534 -0
  81. package/dist/dashboard/daemon-internal-api.js.map +1 -0
  82. package/dist/dashboard/daemon-internal-auth.d.ts +124 -0
  83. package/dist/dashboard/daemon-internal-auth.d.ts.map +1 -0
  84. package/dist/dashboard/daemon-internal-auth.js +188 -0
  85. package/dist/dashboard/daemon-internal-auth.js.map +1 -0
  86. package/dist/dashboard/daemon-internal-client.d.ts +67 -0
  87. package/dist/dashboard/daemon-internal-client.d.ts.map +1 -0
  88. package/dist/dashboard/daemon-internal-client.js +157 -0
  89. package/dist/dashboard/daemon-internal-client.js.map +1 -0
  90. package/dist/dashboard/dashboard-admins.d.ts +8 -0
  91. package/dist/dashboard/dashboard-admins.d.ts.map +1 -0
  92. package/dist/dashboard/dashboard-admins.js +15 -0
  93. package/dist/dashboard/dashboard-admins.js.map +1 -0
  94. package/dist/dashboard/federation-spoke-api.d.ts +3 -0
  95. package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
  96. package/dist/dashboard/federation-spoke-api.js +11 -8
  97. package/dist/dashboard/federation-spoke-api.js.map +1 -1
  98. package/dist/dashboard/groups-action-helpers.d.ts +69 -0
  99. package/dist/dashboard/groups-action-helpers.d.ts.map +1 -0
  100. package/dist/dashboard/groups-action-helpers.js +141 -0
  101. package/dist/dashboard/groups-action-helpers.js.map +1 -0
  102. package/dist/dashboard/groups-card-model.d.ts +120 -0
  103. package/dist/dashboard/groups-card-model.d.ts.map +1 -0
  104. package/dist/dashboard/groups-card-model.js +175 -0
  105. package/dist/dashboard/groups-card-model.js.map +1 -0
  106. package/dist/dashboard/schedule-card-model.d.ts +172 -0
  107. package/dist/dashboard/schedule-card-model.d.ts.map +1 -0
  108. package/dist/dashboard/schedule-card-model.js +290 -0
  109. package/dist/dashboard/schedule-card-model.js.map +1 -0
  110. package/dist/dashboard/session-card-model.d.ts +83 -0
  111. package/dist/dashboard/session-card-model.d.ts.map +1 -0
  112. package/dist/dashboard/session-card-model.js +196 -0
  113. package/dist/dashboard/session-card-model.js.map +1 -0
  114. package/dist/dashboard/settings-card-model.d.ts +73 -0
  115. package/dist/dashboard/settings-card-model.d.ts.map +1 -0
  116. package/dist/dashboard/settings-card-model.js +94 -0
  117. package/dist/dashboard/settings-card-model.js.map +1 -0
  118. package/dist/dashboard/settings-owner-resolver.d.ts +32 -0
  119. package/dist/dashboard/settings-owner-resolver.d.ts.map +1 -0
  120. package/dist/dashboard/settings-owner-resolver.js +43 -0
  121. package/dist/dashboard/settings-owner-resolver.js.map +1 -0
  122. package/dist/dashboard/settings-write-applier.d.ts +84 -0
  123. package/dist/dashboard/settings-write-applier.d.ts.map +1 -0
  124. package/dist/dashboard/settings-write-applier.js +119 -0
  125. package/dist/dashboard/settings-write-applier.js.map +1 -0
  126. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  127. package/dist/dashboard/web/i18n.js +60 -2
  128. package/dist/dashboard/web/i18n.js.map +1 -1
  129. package/dist/dashboard/web/insights.d.ts.map +1 -1
  130. package/dist/dashboard/web/insights.js +514 -68
  131. package/dist/dashboard/web/insights.js.map +1 -1
  132. package/dist/dashboard/web/skills.d.ts.map +1 -1
  133. package/dist/dashboard/web/skills.js +1 -1
  134. package/dist/dashboard/web/skills.js.map +1 -1
  135. package/dist/dashboard/web/whiteboards.js +3 -3
  136. package/dist/dashboard/workflow-api.d.ts.map +1 -1
  137. package/dist/dashboard/workflow-api.js +38 -119
  138. package/dist/dashboard/workflow-api.js.map +1 -1
  139. package/dist/dashboard/workflow-card-model.d.ts +127 -0
  140. package/dist/dashboard/workflow-card-model.d.ts.map +1 -0
  141. package/dist/dashboard/workflow-card-model.js +186 -0
  142. package/dist/dashboard/workflow-card-model.js.map +1 -0
  143. package/dist/dashboard/workflows-action-helpers.d.ts +105 -0
  144. package/dist/dashboard/workflows-action-helpers.d.ts.map +1 -0
  145. package/dist/dashboard/workflows-action-helpers.js +196 -0
  146. package/dist/dashboard/workflows-action-helpers.js.map +1 -0
  147. package/dist/dashboard-web/app.js +883 -795
  148. package/dist/dashboard-web/style.css +105 -3
  149. package/dist/dashboard.js +196 -269
  150. package/dist/dashboard.js.map +1 -1
  151. package/dist/i18n/en.d.ts.map +1 -1
  152. package/dist/i18n/en.js +266 -0
  153. package/dist/i18n/en.js.map +1 -1
  154. package/dist/i18n/zh.d.ts.map +1 -1
  155. package/dist/i18n/zh.js +266 -0
  156. package/dist/i18n/zh.js.map +1 -1
  157. package/dist/im/lark/card-builder.d.ts +2 -0
  158. package/dist/im/lark/card-builder.d.ts.map +1 -1
  159. package/dist/im/lark/card-builder.js +2 -1
  160. package/dist/im/lark/card-builder.js.map +1 -1
  161. package/dist/im/lark/card-handler.d.ts +54 -2
  162. package/dist/im/lark/card-handler.d.ts.map +1 -1
  163. package/dist/im/lark/card-handler.js +127 -1
  164. package/dist/im/lark/card-handler.js.map +1 -1
  165. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  166. package/dist/im/lark/event-dispatcher.js +22 -0
  167. package/dist/im/lark/event-dispatcher.js.map +1 -1
  168. package/dist/im/lark/groups-card.d.ts +90 -0
  169. package/dist/im/lark/groups-card.d.ts.map +1 -0
  170. package/dist/im/lark/groups-card.js +832 -0
  171. package/dist/im/lark/groups-card.js.map +1 -0
  172. package/dist/im/lark/overview-card.d.ts +101 -0
  173. package/dist/im/lark/overview-card.d.ts.map +1 -0
  174. package/dist/im/lark/overview-card.js +475 -0
  175. package/dist/im/lark/overview-card.js.map +1 -0
  176. package/dist/im/lark/schedules-card.d.ts +96 -0
  177. package/dist/im/lark/schedules-card.d.ts.map +1 -0
  178. package/dist/im/lark/schedules-card.js +892 -0
  179. package/dist/im/lark/schedules-card.js.map +1 -0
  180. package/dist/im/lark/sessions-card.d.ts +117 -0
  181. package/dist/im/lark/sessions-card.d.ts.map +1 -0
  182. package/dist/im/lark/sessions-card.js +870 -0
  183. package/dist/im/lark/sessions-card.js.map +1 -0
  184. package/dist/im/lark/settings-card.d.ts +125 -0
  185. package/dist/im/lark/settings-card.d.ts.map +1 -0
  186. package/dist/im/lark/settings-card.js +433 -0
  187. package/dist/im/lark/settings-card.js.map +1 -0
  188. package/dist/im/lark/workflows-card.d.ts +102 -0
  189. package/dist/im/lark/workflows-card.d.ts.map +1 -0
  190. package/dist/im/lark/workflows-card.js +737 -0
  191. package/dist/im/lark/workflows-card.js.map +1 -0
  192. package/dist/services/insight/classify.d.ts +2 -0
  193. package/dist/services/insight/classify.d.ts.map +1 -1
  194. package/dist/services/insight/classify.js +25 -0
  195. package/dist/services/insight/classify.js.map +1 -1
  196. package/dist/services/insight/claude-span-reader.d.ts.map +1 -1
  197. package/dist/services/insight/claude-span-reader.js +7 -4
  198. package/dist/services/insight/claude-span-reader.js.map +1 -1
  199. package/dist/services/insight/report.d.ts.map +1 -1
  200. package/dist/services/insight/report.js +102 -23
  201. package/dist/services/insight/report.js.map +1 -1
  202. package/dist/services/insight/subagent-reader.d.ts +19 -0
  203. package/dist/services/insight/subagent-reader.d.ts.map +1 -0
  204. package/dist/services/insight/subagent-reader.js +111 -0
  205. package/dist/services/insight/subagent-reader.js.map +1 -0
  206. package/dist/services/insight/types.d.ts +43 -0
  207. package/dist/services/insight/types.d.ts.map +1 -1
  208. package/dist/services/insight/types.js.map +1 -1
  209. package/dist/skills/definitions.d.ts +8 -0
  210. package/dist/skills/definitions.d.ts.map +1 -1
  211. package/dist/skills/definitions.js +8 -2
  212. package/dist/skills/definitions.js.map +1 -1
  213. package/dist/skills/installer.d.ts +15 -0
  214. package/dist/skills/installer.d.ts.map +1 -1
  215. package/dist/skills/installer.js +39 -1
  216. package/dist/skills/installer.js.map +1 -1
  217. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/dashboard/auth.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE;AAExE;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEvF;AAED;;gFAEgF;AAChF,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAM5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA4BlC;AAED,qEAAqE;AACrE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKnE;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAInE;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO1E;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAID;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAmBxB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB;;;;uDAImD;IACnD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,YAAY,CA6Cf"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/dashboard/auth.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE;AAExE;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEvF;AAED;;gFAEgF;AAChF,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAM5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA4BlC;AAED,qEAAqE;AACrE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIrE;AAED,gFAAgF;AAChF,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAQtE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKnE;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAInE;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO1E;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAID;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAmBxB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB;;;;uDAImD;IACnD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,YAAY,CA6Cf"}
@@ -77,6 +77,27 @@ export function verifyHmac(secretB64Url, attempt, remoteAddr, bind) {
77
77
  export function generateToken() {
78
78
  return randomBytes(32).toString('base64url');
79
79
  }
80
+ /**
81
+ * Load a dashboard HMAC secret from disk. Empty / whitespace-only files are
82
+ * treated as missing so callers never sign requests with an empty key.
83
+ */
84
+ export function loadDashboardSecret(secretPath) {
85
+ if (!existsSync(secretPath))
86
+ return null;
87
+ const secret = readFileSync(secretPath, 'utf8').trim();
88
+ return secret.length > 0 ? secret : null;
89
+ }
90
+ /** Load the dashboard HMAC secret, creating a fresh 0600 secret when absent. */
91
+ export function loadOrCreateDashboardSecret(secretPath) {
92
+ const existing = loadDashboardSecret(secretPath);
93
+ if (existing)
94
+ return existing;
95
+ const secret = randomBytes(32).toString('base64url');
96
+ mkdirSync(dirname(secretPath), { recursive: true });
97
+ atomicWriteFileSync(secretPath, secret, { mode: 0o600 });
98
+ chmodSync(secretPath, 0o600);
99
+ return secret;
100
+ }
80
101
  /**
81
102
  * Load the persisted active dashboard token from `tokenPath`, or `null` when
82
103
  * the file is absent / empty / unreadable.
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/dashboard/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/dashboard/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Shared pure-type primitives for dashboard card models (PR1).
3
+ *
4
+ * Zero runtime — only `interface` and string-literal unions. Imported as
5
+ * `import type { ... }` by every dashboard card model so the model layer
6
+ * stays erasable and IO-free.
7
+ */
8
+ /** Pagination query input shared by list-style modules (sessions/workflows/groups/schedules). */
9
+ export interface PaginationParams {
10
+ /** 1-based page index. Values < 1 are coerced to 1; values > totalPages coerce to totalPages. */
11
+ page?: number;
12
+ /** Page size; values < 1 coerce to default 20; values > 100 coerce to 100. */
13
+ pageSize?: number;
14
+ }
15
+ /** Pagination metadata returned alongside paged results. */
16
+ export interface PaginationMeta {
17
+ /** Active 1-based page after clamp. */
18
+ page: number;
19
+ /** Page size after clamp. */
20
+ pageSize: number;
21
+ /** Filtered total before slicing. */
22
+ total: number;
23
+ /** Math.max(1, Math.ceil(total / pageSize)). */
24
+ totalPages: number;
25
+ }
26
+ /** Semantic status dot — color tone + animation flag + i18n-free label key. */
27
+ export interface StatusDot {
28
+ /** Semantic color token; renderer maps to concrete hex. */
29
+ tone: 'neutral' | 'info' | 'success' | 'warning' | 'danger';
30
+ /** True hints the renderer to apply a pulsing animation. */
31
+ pulse: boolean;
32
+ /** Short label key; renderer translates via t(). */
33
+ label: string;
34
+ }
35
+ /** Action button availability — enabled flag plus optional i18n reason for tooltips. */
36
+ export interface ButtonState {
37
+ enabled: boolean;
38
+ /** Optional i18n key explaining why the button is disabled. */
39
+ reasonKey?: string;
40
+ }
41
+ /** Explicit "now" injection — keeps relative-time formatters pure and deterministic. */
42
+ export interface NowContext {
43
+ /** Epoch milliseconds representing the current instant. */
44
+ nowMs: number;
45
+ }
46
+ /** Section limit option bag — caps items per section (default 5, clamp [1, 50]). */
47
+ export interface SectionLimit {
48
+ limit?: number;
49
+ }
50
+ //# sourceMappingURL=card-model-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-model-types.d.ts","sourceRoot":"","sources":["../../src/dashboard/card-model-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iGAAiG;AACjG,MAAM,WAAW,gBAAgB;IAC/B,iGAAiG;IACjG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,+EAA+E;AAC/E,MAAM,WAAW,SAAS;IACxB,2DAA2D;IAC3D,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC5D,4DAA4D;IAC5D,KAAK,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wFAAwF;AACxF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wFAAwF;AACxF,MAAM,WAAW,UAAU;IACzB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared pure-type primitives for dashboard card models (PR1).
3
+ *
4
+ * Zero runtime — only `interface` and string-literal unions. Imported as
5
+ * `import type { ... }` by every dashboard card model so the model layer
6
+ * stays erasable and IO-free.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=card-model-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-model-types.js","sourceRoot":"","sources":["../../src/dashboard/card-model-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Daemon-internal API — typed Route B server for `/__daemon/*`.
3
+ *
4
+ * Dispatch pipeline:
5
+ * 1) `verifyDaemonRequest` checks HMAC + loopback + ts ±60s + nonce replay.
6
+ * Reads the body stream EXACTLY ONCE and returns `bodyRaw`.
7
+ * 2) `bodyRaw` is JSON-parsed (empty body → `undefined`); a parse failure
8
+ * after a valid HMAC returns 400 `bad_json` without re-reading `req`.
9
+ * 3) Dispatch matches `(method, path)` against a typed allowlist
10
+ * endpoints — there is intentionally NO generic forward, so a daemon
11
+ * can never use Route B as a path-shifting proxy.
12
+ *
13
+ * Settings-write also enforces the union_id owner gate: the body must
14
+ * carry an `ownerUnionId` (`on_`-prefixed) that resolves to a candidate in
15
+ * the global owner set, or the request returns 403 `owner_only`.
16
+ *
17
+ * The factory exposes both `handle(req,res,url)` (production wiring) and
18
+ * `dispatchForTest(method, url, bodyRaw)` (skips HMAC for unit tests that
19
+ * focus on route shape; full HMAC flow is covered by daemon-internal-auth).
20
+ */
21
+ import type { IncomingMessage, ServerResponse } from 'node:http';
22
+ import { type ClockLike, type NonceStore } from './daemon-internal-auth.js';
23
+ import { type GroupsActionDeps, type HandlerResult } from './groups-action-helpers.js';
24
+ import { type ResolvedDashboardSettingsView, type SettingsWriteApplierDeps } from './settings-write-applier.js';
25
+ import { type SettingsOwnerResolverDeps } from './settings-owner-resolver.js';
26
+ import { type WorkflowsActionDeps } from './workflows-action-helpers.js';
27
+ export type SimpleHttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
28
+ /** Deps the dispatcher needs — all IO is injected. */
29
+ export interface DaemonInternalApiDeps {
30
+ /** `.dashboard-secret` body (string used directly as HMAC key — same convention as `/__cli/rotate`). */
31
+ secret: string;
32
+ /** Override for tests to inject a fake clock-aware nonce store. Production uses `createNonceStore()`. */
33
+ nonceStore?: NonceStore;
34
+ /** Override for tests to advance time deterministically inside verifyDaemonRequest. */
35
+ clock?: ClockLike;
36
+ getSessions: () => unknown[];
37
+ getSchedules: () => unknown[];
38
+ resolveDashboardSettings: () => ResolvedDashboardSettingsView;
39
+ /** Returns `{ chats, bots }`; groups model requires both for missingOnly accuracy. */
40
+ buildGroupsMatrix: () => Promise<{
41
+ chats: unknown[];
42
+ bots: unknown[];
43
+ }>;
44
+ settingsApplierDeps: SettingsWriteApplierDeps;
45
+ groupsActionDeps: GroupsActionDeps;
46
+ workflowsActionDeps: WorkflowsActionDeps<any>;
47
+ proxyToDaemon: (larkAppId: string, daemonPath: string, init: RequestInit) => Promise<Response>;
48
+ ownerOf: (sessionId: string) => string | undefined;
49
+ /** Companion of `ownerOf` — tells "row missing" apart from "legacy row".
50
+ * Same rationale as `scheduleExists`. */
51
+ sessionExists: (sessionId: string) => boolean;
52
+ scheduleOwnerOf: (id: string) => string | undefined;
53
+ /** True iff a schedule row with this id exists at all in the aggregator,
54
+ * regardless of its `larkAppId` presence. Used by the Route B write gate
55
+ * to tell apart "legacy schedule (no owner field)" from "unknown id". */
56
+ scheduleExists: (id: string) => boolean;
57
+ /** Override for unit tests; production omits and uses the real federation helper. */
58
+ settingsOwnerDeps?: SettingsOwnerResolverDeps;
59
+ }
60
+ export interface DispatchContext {
61
+ bodyRaw: string;
62
+ body: unknown;
63
+ url: URL;
64
+ /**
65
+ * Authenticated caller's bot `larkAppId` — populated by `handle()` from
66
+ * `verify.appId` (`daemon-internal-auth.ts:232`). Aggregated read routes
67
+ * use this id for their default per-bot view; `?scope=global` explicitly
68
+ * widens `/dashboard` list reads to the Bot Owner's deployment-wide view.
69
+ * undefined only on the test seam (`dispatchForTest`) where the caller is
70
+ * trusted to assert their own scope.
71
+ */
72
+ callerAppId?: string;
73
+ }
74
+ /**
75
+ * Pure dispatcher: matches `(method, path)` against the typed allowlist.
76
+ * Returns `unknown_endpoint` (404) when no path matches, `method_not_allowed`
77
+ * (405) when a path matches but the method does not, or hands off to the
78
+ * matched handler.
79
+ */
80
+ export declare function dispatchDaemonInternalRequest(method: string, url: URL, bodyRaw: string, deps: DaemonInternalApiDeps, callerAppId?: string): Promise<HandlerResult>;
81
+ export interface DaemonInternalApi {
82
+ /** Production entry point: verify HMAC, JSON-parse, dispatch, write response. */
83
+ handle(req: IncomingMessage, res: ServerResponse, url: URL): Promise<boolean>;
84
+ /** Test seam: bypass HMAC, exercise dispatch shape directly. `callerAppId`
85
+ * emulates the authenticated bot id so read-scoping tests can drive the
86
+ * per-bot filter without going through HMAC. */
87
+ dispatchForTest(method: string, url: URL, bodyRaw?: string, callerAppId?: string): Promise<HandlerResult>;
88
+ }
89
+ export declare function createDaemonInternalApi(deps: DaemonInternalApiDeps): DaemonInternalApi;
90
+ //# sourceMappingURL=daemon-internal-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-internal-api.d.ts","sourceRoot":"","sources":["../../src/dashboard/daemon-internal-api.ts"],"names":[],"mappings":"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"}