reflectt-node 0.1.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 (486) hide show
  1. package/LICENSE +178 -0
  2. package/README.md +188 -0
  3. package/dist/activationEvents.d.ts +110 -0
  4. package/dist/activationEvents.d.ts.map +1 -0
  5. package/dist/activationEvents.js +378 -0
  6. package/dist/activationEvents.js.map +1 -0
  7. package/dist/activity-signal.d.ts +30 -0
  8. package/dist/activity-signal.d.ts.map +1 -0
  9. package/dist/activity-signal.js +93 -0
  10. package/dist/activity-signal.js.map +1 -0
  11. package/dist/alert-integrity.d.ts +100 -0
  12. package/dist/alert-integrity.d.ts.map +1 -0
  13. package/dist/alert-integrity.js +333 -0
  14. package/dist/alert-integrity.js.map +1 -0
  15. package/dist/alert-preflight.d.ts +40 -0
  16. package/dist/alert-preflight.d.ts.map +1 -0
  17. package/dist/alert-preflight.js +235 -0
  18. package/dist/alert-preflight.js.map +1 -0
  19. package/dist/analytics.d.ts +131 -0
  20. package/dist/analytics.d.ts.map +1 -0
  21. package/dist/analytics.js +371 -0
  22. package/dist/analytics.js.map +1 -0
  23. package/dist/artifact-mirror.d.ts +26 -0
  24. package/dist/artifact-mirror.d.ts.map +1 -0
  25. package/dist/artifact-mirror.js +170 -0
  26. package/dist/artifact-mirror.js.map +1 -0
  27. package/dist/artifact-resolver.d.ts +48 -0
  28. package/dist/artifact-resolver.d.ts.map +1 -0
  29. package/dist/artifact-resolver.js +164 -0
  30. package/dist/artifact-resolver.js.map +1 -0
  31. package/dist/assignment.d.ts +116 -0
  32. package/dist/assignment.d.ts.map +1 -0
  33. package/dist/assignment.js +475 -0
  34. package/dist/assignment.js.map +1 -0
  35. package/dist/auditLedger.d.ts +50 -0
  36. package/dist/auditLedger.d.ts.map +1 -0
  37. package/dist/auditLedger.js +136 -0
  38. package/dist/auditLedger.js.map +1 -0
  39. package/dist/boardHealthWorker.d.ts +134 -0
  40. package/dist/boardHealthWorker.d.ts.map +1 -0
  41. package/dist/boardHealthWorker.js +882 -0
  42. package/dist/boardHealthWorker.js.map +1 -0
  43. package/dist/bootstrap-team.d.ts +42 -0
  44. package/dist/bootstrap-team.d.ts.map +1 -0
  45. package/dist/bootstrap-team.js +111 -0
  46. package/dist/bootstrap-team.js.map +1 -0
  47. package/dist/buildInfo.d.ts +17 -0
  48. package/dist/buildInfo.d.ts.map +1 -0
  49. package/dist/buildInfo.js +56 -0
  50. package/dist/buildInfo.js.map +1 -0
  51. package/dist/calendar-events.d.ts +133 -0
  52. package/dist/calendar-events.d.ts.map +1 -0
  53. package/dist/calendar-events.js +615 -0
  54. package/dist/calendar-events.js.map +1 -0
  55. package/dist/calendar-ical.d.ts +41 -0
  56. package/dist/calendar-ical.d.ts.map +1 -0
  57. package/dist/calendar-ical.js +413 -0
  58. package/dist/calendar-ical.js.map +1 -0
  59. package/dist/calendar-reminder-engine.d.ts +10 -0
  60. package/dist/calendar-reminder-engine.d.ts.map +1 -0
  61. package/dist/calendar-reminder-engine.js +143 -0
  62. package/dist/calendar-reminder-engine.js.map +1 -0
  63. package/dist/calendar.d.ts +75 -0
  64. package/dist/calendar.d.ts.map +1 -0
  65. package/dist/calendar.js +391 -0
  66. package/dist/calendar.js.map +1 -0
  67. package/dist/canvas-multiplexer.d.ts +44 -0
  68. package/dist/canvas-multiplexer.d.ts.map +1 -0
  69. package/dist/canvas-multiplexer.js +150 -0
  70. package/dist/canvas-multiplexer.js.map +1 -0
  71. package/dist/canvas-slots.d.ts +83 -0
  72. package/dist/canvas-slots.d.ts.map +1 -0
  73. package/dist/canvas-slots.js +144 -0
  74. package/dist/canvas-slots.js.map +1 -0
  75. package/dist/canvas-types.d.ts +56 -0
  76. package/dist/canvas-types.d.ts.map +1 -0
  77. package/dist/canvas-types.js +54 -0
  78. package/dist/canvas-types.js.map +1 -0
  79. package/dist/cf-keepalive.d.ts +40 -0
  80. package/dist/cf-keepalive.d.ts.map +1 -0
  81. package/dist/cf-keepalive.js +153 -0
  82. package/dist/cf-keepalive.js.map +1 -0
  83. package/dist/changeFeed.d.ts +38 -0
  84. package/dist/changeFeed.d.ts.map +1 -0
  85. package/dist/changeFeed.js +324 -0
  86. package/dist/changeFeed.js.map +1 -0
  87. package/dist/channels.d.ts +28 -0
  88. package/dist/channels.d.ts.map +1 -0
  89. package/dist/channels.js +23 -0
  90. package/dist/channels.js.map +1 -0
  91. package/dist/chat-approval-detector.d.ts +47 -0
  92. package/dist/chat-approval-detector.d.ts.map +1 -0
  93. package/dist/chat-approval-detector.js +224 -0
  94. package/dist/chat-approval-detector.js.map +1 -0
  95. package/dist/chat.d.ts +119 -0
  96. package/dist/chat.d.ts.map +1 -0
  97. package/dist/chat.js +666 -0
  98. package/dist/chat.js.map +1 -0
  99. package/dist/cli.d.ts +3 -0
  100. package/dist/cli.d.ts.map +1 -0
  101. package/dist/cli.js +1142 -0
  102. package/dist/cli.js.map +1 -0
  103. package/dist/cloud.d.ts +45 -0
  104. package/dist/cloud.d.ts.map +1 -0
  105. package/dist/cloud.js +962 -0
  106. package/dist/cloud.js.map +1 -0
  107. package/dist/config.d.ts +17 -0
  108. package/dist/config.d.ts.map +1 -0
  109. package/dist/config.js +33 -0
  110. package/dist/config.js.map +1 -0
  111. package/dist/connectivity.d.ts +59 -0
  112. package/dist/connectivity.d.ts.map +1 -0
  113. package/dist/connectivity.js +173 -0
  114. package/dist/connectivity.js.map +1 -0
  115. package/dist/contacts.d.ts +59 -0
  116. package/dist/contacts.d.ts.map +1 -0
  117. package/dist/contacts.js +183 -0
  118. package/dist/contacts.js.map +1 -0
  119. package/dist/content.d.ts +130 -0
  120. package/dist/content.d.ts.map +1 -0
  121. package/dist/content.js +186 -0
  122. package/dist/content.js.map +1 -0
  123. package/dist/context-budget.d.ts +87 -0
  124. package/dist/context-budget.d.ts.map +1 -0
  125. package/dist/context-budget.js +459 -0
  126. package/dist/context-budget.js.map +1 -0
  127. package/dist/continuity-loop.d.ts +55 -0
  128. package/dist/continuity-loop.d.ts.map +1 -0
  129. package/dist/continuity-loop.js +267 -0
  130. package/dist/continuity-loop.js.map +1 -0
  131. package/dist/dashboard.d.ts +6 -0
  132. package/dist/dashboard.d.ts.map +1 -0
  133. package/dist/dashboard.js +2348 -0
  134. package/dist/dashboard.js.map +1 -0
  135. package/dist/db.d.ts +44 -0
  136. package/dist/db.d.ts.map +1 -0
  137. package/dist/db.js +648 -0
  138. package/dist/db.js.map +1 -0
  139. package/dist/doctor.d.ts +30 -0
  140. package/dist/doctor.d.ts.map +1 -0
  141. package/dist/doctor.js +159 -0
  142. package/dist/doctor.js.map +1 -0
  143. package/dist/duplicateClosureGuard.d.ts +31 -0
  144. package/dist/duplicateClosureGuard.d.ts.map +1 -0
  145. package/dist/duplicateClosureGuard.js +83 -0
  146. package/dist/duplicateClosureGuard.js.map +1 -0
  147. package/dist/embeddings.d.ts +13 -0
  148. package/dist/embeddings.d.ts.map +1 -0
  149. package/dist/embeddings.js +78 -0
  150. package/dist/embeddings.js.map +1 -0
  151. package/dist/escalation.d.ts +80 -0
  152. package/dist/escalation.d.ts.map +1 -0
  153. package/dist/escalation.js +213 -0
  154. package/dist/escalation.js.map +1 -0
  155. package/dist/events.d.ts +130 -0
  156. package/dist/events.d.ts.map +1 -0
  157. package/dist/events.js +382 -0
  158. package/dist/events.js.map +1 -0
  159. package/dist/executionSweeper.d.ts +97 -0
  160. package/dist/executionSweeper.d.ts.map +1 -0
  161. package/dist/executionSweeper.js +875 -0
  162. package/dist/executionSweeper.js.map +1 -0
  163. package/dist/experiments.d.ts +47 -0
  164. package/dist/experiments.d.ts.map +1 -0
  165. package/dist/experiments.js +133 -0
  166. package/dist/experiments.js.map +1 -0
  167. package/dist/feedback.d.ts +179 -0
  168. package/dist/feedback.d.ts.map +1 -0
  169. package/dist/feedback.js +397 -0
  170. package/dist/feedback.js.map +1 -0
  171. package/dist/files.d.ts +52 -0
  172. package/dist/files.d.ts.map +1 -0
  173. package/dist/files.js +172 -0
  174. package/dist/files.js.map +1 -0
  175. package/dist/format-duration.d.ts +19 -0
  176. package/dist/format-duration.d.ts.map +1 -0
  177. package/dist/format-duration.js +33 -0
  178. package/dist/format-duration.js.map +1 -0
  179. package/dist/github-actor-auth.d.ts +20 -0
  180. package/dist/github-actor-auth.d.ts.map +1 -0
  181. package/dist/github-actor-auth.js +54 -0
  182. package/dist/github-actor-auth.js.map +1 -0
  183. package/dist/github-ci.d.ts +16 -0
  184. package/dist/github-ci.d.ts.map +1 -0
  185. package/dist/github-ci.js +37 -0
  186. package/dist/github-ci.js.map +1 -0
  187. package/dist/github-identity.d.ts +30 -0
  188. package/dist/github-identity.d.ts.map +1 -0
  189. package/dist/github-identity.js +96 -0
  190. package/dist/github-identity.js.map +1 -0
  191. package/dist/github-reviews.d.ts +24 -0
  192. package/dist/github-reviews.d.ts.map +1 -0
  193. package/dist/github-reviews.js +56 -0
  194. package/dist/github-reviews.js.map +1 -0
  195. package/dist/health.d.ts +391 -0
  196. package/dist/health.d.ts.map +1 -0
  197. package/dist/health.js +1841 -0
  198. package/dist/health.js.map +1 -0
  199. package/dist/host-keepalive.d.ts +22 -0
  200. package/dist/host-keepalive.d.ts.map +1 -0
  201. package/dist/host-keepalive.js +126 -0
  202. package/dist/host-keepalive.js.map +1 -0
  203. package/dist/host-registry.d.ts +43 -0
  204. package/dist/host-registry.d.ts.map +1 -0
  205. package/dist/host-registry.js +93 -0
  206. package/dist/host-registry.js.map +1 -0
  207. package/dist/inbox.d.ts +87 -0
  208. package/dist/inbox.d.ts.map +1 -0
  209. package/dist/inbox.js +410 -0
  210. package/dist/inbox.js.map +1 -0
  211. package/dist/index.d.ts +2 -0
  212. package/dist/index.d.ts.map +1 -0
  213. package/dist/index.js +306 -0
  214. package/dist/index.js.map +1 -0
  215. package/dist/insight-mutation.d.ts +32 -0
  216. package/dist/insight-mutation.d.ts.map +1 -0
  217. package/dist/insight-mutation.js +160 -0
  218. package/dist/insight-mutation.js.map +1 -0
  219. package/dist/insight-promotion.d.ts +89 -0
  220. package/dist/insight-promotion.d.ts.map +1 -0
  221. package/dist/insight-promotion.js +278 -0
  222. package/dist/insight-promotion.js.map +1 -0
  223. package/dist/insight-task-bridge.d.ts +77 -0
  224. package/dist/insight-task-bridge.d.ts.map +1 -0
  225. package/dist/insight-task-bridge.js +556 -0
  226. package/dist/insight-task-bridge.js.map +1 -0
  227. package/dist/insights.d.ts +222 -0
  228. package/dist/insights.d.ts.map +1 -0
  229. package/dist/insights.js +871 -0
  230. package/dist/insights.js.map +1 -0
  231. package/dist/intake-pipeline.d.ts +74 -0
  232. package/dist/intake-pipeline.d.ts.map +1 -0
  233. package/dist/intake-pipeline.js +199 -0
  234. package/dist/intake-pipeline.js.map +1 -0
  235. package/dist/intensity.d.ts +31 -0
  236. package/dist/intensity.d.ts.map +1 -0
  237. package/dist/intensity.js +94 -0
  238. package/dist/intensity.js.map +1 -0
  239. package/dist/knowledge-auto-index.d.ts +37 -0
  240. package/dist/knowledge-auto-index.d.ts.map +1 -0
  241. package/dist/knowledge-auto-index.js +149 -0
  242. package/dist/knowledge-auto-index.js.map +1 -0
  243. package/dist/knowledge-docs.d.ts +45 -0
  244. package/dist/knowledge-docs.d.ts.map +1 -0
  245. package/dist/knowledge-docs.js +188 -0
  246. package/dist/knowledge-docs.js.map +1 -0
  247. package/dist/lane-config.d.ts +25 -0
  248. package/dist/lane-config.d.ts.map +1 -0
  249. package/dist/lane-config.js +105 -0
  250. package/dist/lane-config.js.map +1 -0
  251. package/dist/lineage.d.ts +86 -0
  252. package/dist/lineage.d.ts.map +1 -0
  253. package/dist/lineage.js +303 -0
  254. package/dist/lineage.js.map +1 -0
  255. package/dist/logStore.d.ts +25 -0
  256. package/dist/logStore.d.ts.map +1 -0
  257. package/dist/logStore.js +83 -0
  258. package/dist/logStore.js.map +1 -0
  259. package/dist/manage.d.ts +12 -0
  260. package/dist/manage.d.ts.map +1 -0
  261. package/dist/manage.js +253 -0
  262. package/dist/manage.js.map +1 -0
  263. package/dist/mcp.d.ts +5 -0
  264. package/dist/mcp.d.ts.map +1 -0
  265. package/dist/mcp.js +604 -0
  266. package/dist/mcp.js.map +1 -0
  267. package/dist/memory.d.ts +47 -0
  268. package/dist/memory.d.ts.map +1 -0
  269. package/dist/memory.js +149 -0
  270. package/dist/memory.js.map +1 -0
  271. package/dist/mention-ack.d.ts +80 -0
  272. package/dist/mention-ack.d.ts.map +1 -0
  273. package/dist/mention-ack.js +175 -0
  274. package/dist/mention-ack.js.map +1 -0
  275. package/dist/messageRouter.d.ts +60 -0
  276. package/dist/messageRouter.d.ts.map +1 -0
  277. package/dist/messageRouter.js +309 -0
  278. package/dist/messageRouter.js.map +1 -0
  279. package/dist/mutationAlert.d.ts +44 -0
  280. package/dist/mutationAlert.d.ts.map +1 -0
  281. package/dist/mutationAlert.js +174 -0
  282. package/dist/mutationAlert.js.map +1 -0
  283. package/dist/noise-budget.d.ts +136 -0
  284. package/dist/noise-budget.d.ts.map +1 -0
  285. package/dist/noise-budget.js +340 -0
  286. package/dist/noise-budget.js.map +1 -0
  287. package/dist/notifications.d.ts +67 -0
  288. package/dist/notifications.d.ts.map +1 -0
  289. package/dist/notifications.js +253 -0
  290. package/dist/notifications.js.map +1 -0
  291. package/dist/openclaw.d.ts +34 -0
  292. package/dist/openclaw.d.ts.map +1 -0
  293. package/dist/openclaw.js +208 -0
  294. package/dist/openclaw.js.map +1 -0
  295. package/dist/pause-controls.d.ts +31 -0
  296. package/dist/pause-controls.d.ts.map +1 -0
  297. package/dist/pause-controls.js +130 -0
  298. package/dist/pause-controls.js.map +1 -0
  299. package/dist/pidlock.d.ts +25 -0
  300. package/dist/pidlock.d.ts.map +1 -0
  301. package/dist/pidlock.js +179 -0
  302. package/dist/pidlock.js.map +1 -0
  303. package/dist/policy.d.ts +139 -0
  304. package/dist/policy.d.ts.map +1 -0
  305. package/dist/policy.js +264 -0
  306. package/dist/policy.js.map +1 -0
  307. package/dist/polls.d.ts +47 -0
  308. package/dist/polls.d.ts.map +1 -0
  309. package/dist/polls.js +162 -0
  310. package/dist/polls.js.map +1 -0
  311. package/dist/portability.d.ts +55 -0
  312. package/dist/portability.d.ts.map +1 -0
  313. package/dist/portability.js +292 -0
  314. package/dist/portability.js.map +1 -0
  315. package/dist/pr-integrity.d.ts +45 -0
  316. package/dist/pr-integrity.d.ts.map +1 -0
  317. package/dist/pr-integrity.js +124 -0
  318. package/dist/pr-integrity.js.map +1 -0
  319. package/dist/prAutoMerge.d.ts +62 -0
  320. package/dist/prAutoMerge.d.ts.map +1 -0
  321. package/dist/prAutoMerge.js +493 -0
  322. package/dist/prAutoMerge.js.map +1 -0
  323. package/dist/preflight.d.ts +66 -0
  324. package/dist/preflight.d.ts.map +1 -0
  325. package/dist/preflight.js +864 -0
  326. package/dist/preflight.js.map +1 -0
  327. package/dist/presence.d.ts +98 -0
  328. package/dist/presence.d.ts.map +1 -0
  329. package/dist/presence.js +347 -0
  330. package/dist/presence.js.map +1 -0
  331. package/dist/provisioning.d.ts +101 -0
  332. package/dist/provisioning.d.ts.map +1 -0
  333. package/dist/provisioning.js +430 -0
  334. package/dist/provisioning.js.map +1 -0
  335. package/dist/reflection-automation.d.ts +59 -0
  336. package/dist/reflection-automation.d.ts.map +1 -0
  337. package/dist/reflection-automation.js +350 -0
  338. package/dist/reflection-automation.js.map +1 -0
  339. package/dist/reflections.d.ts +65 -0
  340. package/dist/reflections.d.ts.map +1 -0
  341. package/dist/reflections.js +306 -0
  342. package/dist/reflections.js.map +1 -0
  343. package/dist/release.d.ts +67 -0
  344. package/dist/release.d.ts.map +1 -0
  345. package/dist/release.js +275 -0
  346. package/dist/release.js.map +1 -0
  347. package/dist/request-tracker.d.ts +36 -0
  348. package/dist/request-tracker.d.ts.map +1 -0
  349. package/dist/request-tracker.js +109 -0
  350. package/dist/request-tracker.js.map +1 -0
  351. package/dist/research.d.ts +75 -0
  352. package/dist/research.d.ts.map +1 -0
  353. package/dist/research.js +171 -0
  354. package/dist/research.js.map +1 -0
  355. package/dist/routing-approvals.d.ts +73 -0
  356. package/dist/routing-approvals.d.ts.map +1 -0
  357. package/dist/routing-approvals.js +88 -0
  358. package/dist/routing-approvals.js.map +1 -0
  359. package/dist/routing-override.d.ts +94 -0
  360. package/dist/routing-override.d.ts.map +1 -0
  361. package/dist/routing-override.js +290 -0
  362. package/dist/routing-override.js.map +1 -0
  363. package/dist/scope-routing.d.ts +18 -0
  364. package/dist/scope-routing.d.ts.map +1 -0
  365. package/dist/scope-routing.js +29 -0
  366. package/dist/scope-routing.js.map +1 -0
  367. package/dist/secrets.d.ts +77 -0
  368. package/dist/secrets.d.ts.map +1 -0
  369. package/dist/secrets.js +287 -0
  370. package/dist/secrets.js.map +1 -0
  371. package/dist/server.d.ts +3 -0
  372. package/dist/server.d.ts.map +1 -0
  373. package/dist/server.js +10887 -0
  374. package/dist/server.js.map +1 -0
  375. package/dist/service-probe.d.ts +53 -0
  376. package/dist/service-probe.d.ts.map +1 -0
  377. package/dist/service-probe.js +225 -0
  378. package/dist/service-probe.js.map +1 -0
  379. package/dist/shared-workspace-api.d.ts +73 -0
  380. package/dist/shared-workspace-api.d.ts.map +1 -0
  381. package/dist/shared-workspace-api.js +281 -0
  382. package/dist/shared-workspace-api.js.map +1 -0
  383. package/dist/shipped-heartbeat.d.ts +91 -0
  384. package/dist/shipped-heartbeat.d.ts.map +1 -0
  385. package/dist/shipped-heartbeat.js +272 -0
  386. package/dist/shipped-heartbeat.js.map +1 -0
  387. package/dist/starter-team.d.ts +23 -0
  388. package/dist/starter-team.d.ts.map +1 -0
  389. package/dist/starter-team.js +88 -0
  390. package/dist/starter-team.js.map +1 -0
  391. package/dist/suppression-ledger.d.ts +73 -0
  392. package/dist/suppression-ledger.d.ts.map +1 -0
  393. package/dist/suppression-ledger.js +125 -0
  394. package/dist/suppression-ledger.js.map +1 -0
  395. package/dist/system-loop-state.d.ts +4 -0
  396. package/dist/system-loop-state.d.ts.map +1 -0
  397. package/dist/system-loop-state.js +40 -0
  398. package/dist/system-loop-state.js.map +1 -0
  399. package/dist/taskCommentIngest.d.ts +43 -0
  400. package/dist/taskCommentIngest.d.ts.map +1 -0
  401. package/dist/taskCommentIngest.js +59 -0
  402. package/dist/taskCommentIngest.js.map +1 -0
  403. package/dist/taskPrecheck.d.ts +20 -0
  404. package/dist/taskPrecheck.d.ts.map +1 -0
  405. package/dist/taskPrecheck.js +329 -0
  406. package/dist/taskPrecheck.js.map +1 -0
  407. package/dist/taskStateSync.d.ts +8 -0
  408. package/dist/taskStateSync.d.ts.map +1 -0
  409. package/dist/taskStateSync.js +79 -0
  410. package/dist/taskStateSync.js.map +1 -0
  411. package/dist/tasks.d.ts +140 -0
  412. package/dist/tasks.d.ts.map +1 -0
  413. package/dist/tasks.js +1281 -0
  414. package/dist/tasks.js.map +1 -0
  415. package/dist/team-config.d.ts +24 -0
  416. package/dist/team-config.d.ts.map +1 -0
  417. package/dist/team-config.js +221 -0
  418. package/dist/team-config.js.map +1 -0
  419. package/dist/team-doctor.d.ts +22 -0
  420. package/dist/team-doctor.d.ts.map +1 -0
  421. package/dist/team-doctor.js +270 -0
  422. package/dist/team-doctor.js.map +1 -0
  423. package/dist/team-pulse.d.ts +52 -0
  424. package/dist/team-pulse.d.ts.map +1 -0
  425. package/dist/team-pulse.js +176 -0
  426. package/dist/team-pulse.js.map +1 -0
  427. package/dist/telemetry.d.ts +74 -0
  428. package/dist/telemetry.d.ts.map +1 -0
  429. package/dist/telemetry.js +256 -0
  430. package/dist/telemetry.js.map +1 -0
  431. package/dist/test-task-filter.d.ts +21 -0
  432. package/dist/test-task-filter.d.ts.map +1 -0
  433. package/dist/test-task-filter.js +48 -0
  434. package/dist/test-task-filter.js.map +1 -0
  435. package/dist/types.d.ts +126 -0
  436. package/dist/types.d.ts.map +1 -0
  437. package/dist/types.js +4 -0
  438. package/dist/types.js.map +1 -0
  439. package/dist/usage-tracking.d.ts +101 -0
  440. package/dist/usage-tracking.d.ts.map +1 -0
  441. package/dist/usage-tracking.js +325 -0
  442. package/dist/usage-tracking.js.map +1 -0
  443. package/dist/vector-store.d.ts +87 -0
  444. package/dist/vector-store.d.ts.map +1 -0
  445. package/dist/vector-store.js +247 -0
  446. package/dist/vector-store.js.map +1 -0
  447. package/dist/watchdog/idleNudgeLane.d.ts +22 -0
  448. package/dist/watchdog/idleNudgeLane.d.ts.map +1 -0
  449. package/dist/watchdog/idleNudgeLane.js +98 -0
  450. package/dist/watchdog/idleNudgeLane.js.map +1 -0
  451. package/dist/webhooks.d.ts +103 -0
  452. package/dist/webhooks.d.ts.map +1 -0
  453. package/dist/webhooks.js +398 -0
  454. package/dist/webhooks.js.map +1 -0
  455. package/dist/working-contract.d.ts +42 -0
  456. package/dist/working-contract.d.ts.map +1 -0
  457. package/dist/working-contract.js +228 -0
  458. package/dist/working-contract.js.map +1 -0
  459. package/dist/ws-heartbeat.d.ts +66 -0
  460. package/dist/ws-heartbeat.d.ts.map +1 -0
  461. package/dist/ws-heartbeat.js +174 -0
  462. package/dist/ws-heartbeat.js.map +1 -0
  463. package/package.json +87 -0
  464. package/plugins/reflectt-channel/README.md +96 -0
  465. package/plugins/reflectt-channel/index.ts +789 -0
  466. package/plugins/reflectt-channel/openclaw.plugin.json +23 -0
  467. package/plugins/reflectt-channel/package.json +23 -0
  468. package/plugins/reflectt-channel/src/channel.ts +433 -0
  469. package/plugins/reflectt-channel/src/types.ts +29 -0
  470. package/public/avatars/echo.png +0 -0
  471. package/public/avatars/harmony.png +0 -0
  472. package/public/avatars/kai.png +0 -0
  473. package/public/avatars/link.png +0 -0
  474. package/public/avatars/pixel.png +0 -0
  475. package/public/avatars/rhythm.png +0 -0
  476. package/public/avatars/ryan.png +0 -0
  477. package/public/avatars/sage.png +0 -0
  478. package/public/avatars/scout.png +0 -0
  479. package/public/avatars/spark.png +0 -0
  480. package/public/dashboard-animations.css +381 -0
  481. package/public/dashboard.js +3479 -0
  482. package/public/docs.md +1062 -0
  483. package/public/file-upload-mock.html +1097 -0
  484. package/public/og-card.png +0 -0
  485. package/public/ui-kit.html +318 -0
  486. package/public/widget/feedback.js +194 -0
@@ -0,0 +1,75 @@
1
+ export type BlockType = 'busy' | 'focus' | 'available' | 'ooo';
2
+ export interface CalendarBlock {
3
+ id: string;
4
+ agent: string;
5
+ type: BlockType;
6
+ title: string;
7
+ start: number;
8
+ end: number;
9
+ recurring: string | null;
10
+ timezone: string;
11
+ created_at: number;
12
+ updated_at: number;
13
+ }
14
+ export interface CreateBlockInput {
15
+ agent: string;
16
+ type: BlockType;
17
+ title: string;
18
+ start: number;
19
+ end: number;
20
+ recurring?: string | null;
21
+ timezone?: string;
22
+ }
23
+ export interface UpdateBlockInput {
24
+ type?: BlockType;
25
+ title?: string;
26
+ start?: number;
27
+ end?: number;
28
+ recurring?: string | null;
29
+ timezone?: string;
30
+ }
31
+ export interface AvailabilityStatus {
32
+ agent: string;
33
+ status: 'free' | 'busy' | 'focus' | 'ooo';
34
+ current_block: CalendarBlock | null;
35
+ until: number | null;
36
+ }
37
+ export interface PingDecision {
38
+ should_ping: boolean;
39
+ reason: string;
40
+ delay_until: number | null;
41
+ current_block: CalendarBlock | null;
42
+ }
43
+ export declare function createBlock(input: CreateBlockInput): CalendarBlock;
44
+ export declare function getBlock(id: string): CalendarBlock | null;
45
+ export declare function listBlocks(filters?: {
46
+ agent?: string;
47
+ type?: BlockType;
48
+ from?: number;
49
+ to?: number;
50
+ }): CalendarBlock[];
51
+ export declare function updateBlock(id: string, input: UpdateBlockInput): CalendarBlock | null;
52
+ export declare function deleteBlock(id: string): boolean;
53
+ /**
54
+ * Get current availability for an agent.
55
+ */
56
+ export declare function getAgentAvailability(agent: string, atMs?: number): AvailabilityStatus;
57
+ /**
58
+ * Get availability for all agents that have calendar blocks.
59
+ */
60
+ export declare function getTeamAvailability(atMs?: number): AvailabilityStatus[];
61
+ /**
62
+ * Should an agent be pinged right now?
63
+ */
64
+ export declare function shouldPing(agent: string, urgency?: 'low' | 'normal' | 'high'): PingDecision;
65
+ export declare const calendarManager: {
66
+ createBlock: typeof createBlock;
67
+ getBlock: typeof getBlock;
68
+ listBlocks: typeof listBlocks;
69
+ updateBlock: typeof updateBlock;
70
+ deleteBlock: typeof deleteBlock;
71
+ getAgentAvailability: typeof getAgentAvailability;
72
+ getTeamAvailability: typeof getTeamAvailability;
73
+ shouldPing: typeof shouldPing;
74
+ };
75
+ //# sourceMappingURL=calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,KAAK,CAAA;AAE9D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAA;IACzC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;IACnC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;CACpC;AAyFD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,CA4BlE;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAKzD;AAED,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,GAAG,aAAa,EAAE,CAqClB;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,aAAa,GAAG,IAAI,CA8CrF;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAK/C;AAqFD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAkCrF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAKvE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,KAAK,GAAG,QAAQ,GAAG,MAAiB,GAAG,YAAY,CAmDrG;AAID,eAAO,MAAM,eAAe;;;;;;;;;CAS3B,CAAA"}
@@ -0,0 +1,391 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) Reflectt AI
3
+ /**
4
+ * Calendar — Shared time-awareness for agents and humans
5
+ *
6
+ * Stores calendar blocks (busy, focus, available, ooo) per agent.
7
+ * Supports one-off and recurring blocks (weekly pattern).
8
+ * Provides availability queries for ping gating and coordination.
9
+ */
10
+ import { getDb } from './db.js';
11
+ // ── Valid block types and days ─────────────────────────────────────────────
12
+ const VALID_BLOCK_TYPES = ['busy', 'focus', 'available', 'ooo'];
13
+ const VALID_DAYS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
14
+ const DAY_INDEX = {
15
+ sun: 0, mon: 1, tue: 2, wed: 3, thu: 4, fri: 5, sat: 6,
16
+ };
17
+ // ── Database setup ─────────────────────────────────────────────────────────
18
+ let initialized = false;
19
+ function ensureTable() {
20
+ if (initialized)
21
+ return;
22
+ const db = getDb();
23
+ db.exec(`
24
+ CREATE TABLE IF NOT EXISTS calendar_blocks (
25
+ id TEXT PRIMARY KEY,
26
+ agent TEXT NOT NULL,
27
+ type TEXT NOT NULL CHECK(type IN ('busy', 'focus', 'available', 'ooo')),
28
+ title TEXT NOT NULL DEFAULT '',
29
+ start INTEGER NOT NULL,
30
+ end INTEGER NOT NULL,
31
+ recurring TEXT,
32
+ timezone TEXT NOT NULL DEFAULT 'UTC',
33
+ created_at INTEGER NOT NULL,
34
+ updated_at INTEGER NOT NULL
35
+ )
36
+ `);
37
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_calendar_agent ON calendar_blocks(agent)`);
38
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_calendar_type ON calendar_blocks(type)`);
39
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_calendar_start ON calendar_blocks(start)`);
40
+ initialized = true;
41
+ }
42
+ // ── ID generation ──────────────────────────────────────────────────────────
43
+ function generateId() {
44
+ const ts = Date.now();
45
+ const rand = Math.random().toString(36).slice(2, 10);
46
+ return `cal-${ts}-${rand}`;
47
+ }
48
+ // ── Validation ─────────────────────────────────────────────────────────────
49
+ function validateBlockInput(input) {
50
+ const errors = [];
51
+ if (!input.agent || typeof input.agent !== 'string' || input.agent.trim() === '') {
52
+ errors.push('agent is required');
53
+ }
54
+ if (!VALID_BLOCK_TYPES.includes(input.type)) {
55
+ errors.push(`type must be one of: ${VALID_BLOCK_TYPES.join(', ')}`);
56
+ }
57
+ if (typeof input.start !== 'number' || isNaN(input.start)) {
58
+ errors.push('start must be a number');
59
+ }
60
+ if (typeof input.end !== 'number' || isNaN(input.end)) {
61
+ errors.push('end must be a number');
62
+ }
63
+ if (input.recurring) {
64
+ const days = input.recurring.split(',').map(d => d.trim().toLowerCase());
65
+ for (const day of days) {
66
+ if (!VALID_DAYS.includes(day)) {
67
+ errors.push(`Invalid recurring day: "${day}". Valid: ${VALID_DAYS.join(', ')}`);
68
+ }
69
+ }
70
+ // For recurring: start/end are minutes from midnight (0-1439)
71
+ if (input.start < 0 || input.start > 1439) {
72
+ errors.push('For recurring blocks, start must be minutes from midnight (0-1439)');
73
+ }
74
+ if (input.end < 0 || input.end > 1439) {
75
+ errors.push('For recurring blocks, end must be minutes from midnight (0-1439)');
76
+ }
77
+ }
78
+ else {
79
+ // For one-off: start/end are epoch ms, end must be after start
80
+ if (input.end <= input.start) {
81
+ errors.push('end must be after start for one-off blocks');
82
+ }
83
+ }
84
+ return errors;
85
+ }
86
+ // ── CRUD operations ────────────────────────────────────────────────────────
87
+ export function createBlock(input) {
88
+ ensureTable();
89
+ const errors = validateBlockInput(input);
90
+ if (errors.length > 0) {
91
+ throw new Error(`Validation failed: ${errors.join('; ')}`);
92
+ }
93
+ const db = getDb();
94
+ const now = Date.now();
95
+ const block = {
96
+ id: generateId(),
97
+ agent: input.agent.trim(),
98
+ type: input.type,
99
+ title: (input.title || '').trim(),
100
+ start: input.start,
101
+ end: input.end,
102
+ recurring: input.recurring ? input.recurring.toLowerCase().trim() : null,
103
+ timezone: input.timezone || 'UTC',
104
+ created_at: now,
105
+ updated_at: now,
106
+ };
107
+ db.prepare(`
108
+ INSERT INTO calendar_blocks (id, agent, type, title, start, end, recurring, timezone, created_at, updated_at)
109
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
110
+ `).run(block.id, block.agent, block.type, block.title, block.start, block.end, block.recurring, block.timezone, block.created_at, block.updated_at);
111
+ return block;
112
+ }
113
+ export function getBlock(id) {
114
+ ensureTable();
115
+ const db = getDb();
116
+ const row = db.prepare('SELECT * FROM calendar_blocks WHERE id = ?').get(id);
117
+ return row || null;
118
+ }
119
+ export function listBlocks(filters) {
120
+ ensureTable();
121
+ const db = getDb();
122
+ const conditions = [];
123
+ const params = [];
124
+ if (filters?.agent) {
125
+ conditions.push('agent = ?');
126
+ params.push(filters.agent);
127
+ }
128
+ if (filters?.type) {
129
+ conditions.push('type = ?');
130
+ params.push(filters.type);
131
+ }
132
+ // For one-off blocks, filter by time range
133
+ // Recurring blocks are always included (they repeat)
134
+ if (filters?.from || filters?.to) {
135
+ const timeClauses = [];
136
+ if (filters.from && filters.to) {
137
+ // One-off blocks that overlap with the range, OR any recurring block
138
+ timeClauses.push('(recurring IS NOT NULL) OR (end > ? AND start < ?)');
139
+ params.push(filters.from, filters.to);
140
+ }
141
+ else if (filters.from) {
142
+ timeClauses.push('(recurring IS NOT NULL) OR (end > ?)');
143
+ params.push(filters.from);
144
+ }
145
+ else if (filters.to) {
146
+ timeClauses.push('(recurring IS NOT NULL) OR (start < ?)');
147
+ params.push(filters.to);
148
+ }
149
+ if (timeClauses.length > 0) {
150
+ conditions.push(`(${timeClauses.join(' AND ')})`);
151
+ }
152
+ }
153
+ const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
154
+ const rows = db.prepare(`SELECT * FROM calendar_blocks ${where} ORDER BY start ASC`).all(...params);
155
+ return rows;
156
+ }
157
+ export function updateBlock(id, input) {
158
+ ensureTable();
159
+ const db = getDb();
160
+ const existing = getBlock(id);
161
+ if (!existing)
162
+ return null;
163
+ const updates = [];
164
+ const params = [];
165
+ if (input.type !== undefined) {
166
+ if (!VALID_BLOCK_TYPES.includes(input.type)) {
167
+ throw new Error(`type must be one of: ${VALID_BLOCK_TYPES.join(', ')}`);
168
+ }
169
+ updates.push('type = ?');
170
+ params.push(input.type);
171
+ }
172
+ if (input.title !== undefined) {
173
+ updates.push('title = ?');
174
+ params.push(input.title.trim());
175
+ }
176
+ if (input.start !== undefined) {
177
+ updates.push('start = ?');
178
+ params.push(input.start);
179
+ }
180
+ if (input.end !== undefined) {
181
+ updates.push('end = ?');
182
+ params.push(input.end);
183
+ }
184
+ if (input.recurring !== undefined) {
185
+ updates.push('recurring = ?');
186
+ params.push(input.recurring ? input.recurring.toLowerCase().trim() : null);
187
+ }
188
+ if (input.timezone !== undefined) {
189
+ updates.push('timezone = ?');
190
+ params.push(input.timezone);
191
+ }
192
+ if (updates.length === 0)
193
+ return existing;
194
+ const now = Date.now();
195
+ updates.push('updated_at = ?');
196
+ params.push(now);
197
+ params.push(id);
198
+ db.prepare(`UPDATE calendar_blocks SET ${updates.join(', ')} WHERE id = ?`).run(...params);
199
+ return getBlock(id);
200
+ }
201
+ export function deleteBlock(id) {
202
+ ensureTable();
203
+ const db = getDb();
204
+ const result = db.prepare('DELETE FROM calendar_blocks WHERE id = ?').run(id);
205
+ return result.changes > 0;
206
+ }
207
+ // ── Availability queries ───────────────────────────────────────────────────
208
+ /**
209
+ * Check if a recurring block is active at the given time.
210
+ */
211
+ function isRecurringBlockActive(block, atMs) {
212
+ if (!block.recurring)
213
+ return false;
214
+ // Convert atMs to the block's timezone
215
+ const date = new Date(atMs);
216
+ let dayName;
217
+ let minutesFromMidnight;
218
+ try {
219
+ // Get the day and time in the block's timezone
220
+ const formatter = new Intl.DateTimeFormat('en-US', {
221
+ timeZone: block.timezone,
222
+ weekday: 'short',
223
+ hour: 'numeric',
224
+ minute: 'numeric',
225
+ hour12: false,
226
+ });
227
+ const parts = formatter.formatToParts(date);
228
+ const weekday = parts.find(p => p.type === 'weekday')?.value?.toLowerCase().slice(0, 3) || '';
229
+ const hour = parseInt(parts.find(p => p.type === 'hour')?.value || '0', 10);
230
+ const minute = parseInt(parts.find(p => p.type === 'minute')?.value || '0', 10);
231
+ dayName = weekday;
232
+ minutesFromMidnight = hour * 60 + minute;
233
+ }
234
+ catch {
235
+ // Fallback to UTC
236
+ dayName = VALID_DAYS[date.getUTCDay()];
237
+ minutesFromMidnight = date.getUTCHours() * 60 + date.getUTCMinutes();
238
+ }
239
+ const days = block.recurring.split(',').map(d => d.trim());
240
+ if (!days.includes(dayName))
241
+ return false;
242
+ // Handle blocks that cross midnight (e.g., start=2300, end=100 means 11pm to 1am)
243
+ if (block.start <= block.end) {
244
+ return minutesFromMidnight >= block.start && minutesFromMidnight < block.end;
245
+ }
246
+ else {
247
+ // Crosses midnight
248
+ return minutesFromMidnight >= block.start || minutesFromMidnight < block.end;
249
+ }
250
+ }
251
+ /**
252
+ * Calculate when a recurring block ends (in epoch ms) given it's currently active.
253
+ */
254
+ function recurringBlockEndMs(block, atMs) {
255
+ const date = new Date(atMs);
256
+ let minutesFromMidnight;
257
+ try {
258
+ const formatter = new Intl.DateTimeFormat('en-US', {
259
+ timeZone: block.timezone,
260
+ hour: 'numeric',
261
+ minute: 'numeric',
262
+ hour12: false,
263
+ });
264
+ const parts = formatter.formatToParts(date);
265
+ const hour = parseInt(parts.find(p => p.type === 'hour')?.value || '0', 10);
266
+ const minute = parseInt(parts.find(p => p.type === 'minute')?.value || '0', 10);
267
+ minutesFromMidnight = hour * 60 + minute;
268
+ }
269
+ catch {
270
+ minutesFromMidnight = date.getUTCHours() * 60 + date.getUTCMinutes();
271
+ }
272
+ let minutesUntilEnd;
273
+ if (block.start <= block.end) {
274
+ minutesUntilEnd = block.end - minutesFromMidnight;
275
+ }
276
+ else {
277
+ // Crosses midnight
278
+ if (minutesFromMidnight >= block.start) {
279
+ minutesUntilEnd = (1440 - minutesFromMidnight) + block.end;
280
+ }
281
+ else {
282
+ minutesUntilEnd = block.end - minutesFromMidnight;
283
+ }
284
+ }
285
+ return atMs + minutesUntilEnd * 60 * 1000;
286
+ }
287
+ /**
288
+ * Get current availability for an agent.
289
+ */
290
+ export function getAgentAvailability(agent, atMs) {
291
+ const now = atMs || Date.now();
292
+ const blocks = listBlocks({ agent });
293
+ // Check one-off blocks first (more specific)
294
+ for (const block of blocks) {
295
+ if (!block.recurring && block.start <= now && block.end > now) {
296
+ return {
297
+ agent,
298
+ status: block.type === 'available' ? 'free' : block.type,
299
+ current_block: block,
300
+ until: block.end,
301
+ };
302
+ }
303
+ }
304
+ // Check recurring blocks
305
+ for (const block of blocks) {
306
+ if (block.recurring && isRecurringBlockActive(block, now)) {
307
+ return {
308
+ agent,
309
+ status: block.type === 'available' ? 'free' : block.type,
310
+ current_block: block,
311
+ until: recurringBlockEndMs(block, now),
312
+ };
313
+ }
314
+ }
315
+ return {
316
+ agent,
317
+ status: 'free',
318
+ current_block: null,
319
+ until: null,
320
+ };
321
+ }
322
+ /**
323
+ * Get availability for all agents that have calendar blocks.
324
+ */
325
+ export function getTeamAvailability(atMs) {
326
+ ensureTable();
327
+ const db = getDb();
328
+ const agents = db.prepare('SELECT DISTINCT agent FROM calendar_blocks ORDER BY agent').all();
329
+ return agents.map(({ agent }) => getAgentAvailability(agent, atMs));
330
+ }
331
+ /**
332
+ * Should an agent be pinged right now?
333
+ */
334
+ export function shouldPing(agent, urgency = 'normal') {
335
+ // High urgency always pings (P0 incidents, etc.)
336
+ if (urgency === 'high') {
337
+ return { should_ping: true, reason: 'High urgency overrides calendar', delay_until: null, current_block: null };
338
+ }
339
+ const availability = getAgentAvailability(agent);
340
+ switch (availability.status) {
341
+ case 'free':
342
+ return { should_ping: true, reason: 'Agent is free', delay_until: null, current_block: null };
343
+ case 'focus':
344
+ if (urgency === 'normal') {
345
+ return {
346
+ should_ping: false,
347
+ reason: `Agent in focus block: "${availability.current_block?.title || 'Focus time'}"`,
348
+ delay_until: availability.until,
349
+ current_block: availability.current_block,
350
+ };
351
+ }
352
+ // Low urgency — also delay
353
+ return {
354
+ should_ping: false,
355
+ reason: `Agent in focus block: "${availability.current_block?.title || 'Focus time'}"`,
356
+ delay_until: availability.until,
357
+ current_block: availability.current_block,
358
+ };
359
+ case 'busy':
360
+ if (urgency === 'normal') {
361
+ return { should_ping: true, reason: 'Agent is busy but urgency is normal — ping allowed', delay_until: null, current_block: availability.current_block };
362
+ }
363
+ return {
364
+ should_ping: false,
365
+ reason: `Agent is busy: "${availability.current_block?.title || 'Busy'}"`,
366
+ delay_until: availability.until,
367
+ current_block: availability.current_block,
368
+ };
369
+ case 'ooo':
370
+ return {
371
+ should_ping: false,
372
+ reason: `Agent is out of office: "${availability.current_block?.title || 'OOO'}"`,
373
+ delay_until: availability.until,
374
+ current_block: availability.current_block,
375
+ };
376
+ default:
377
+ return { should_ping: true, reason: 'No calendar data', delay_until: null, current_block: null };
378
+ }
379
+ }
380
+ // ── Calendar manager (singleton) ───────────────────────────────────────────
381
+ export const calendarManager = {
382
+ createBlock,
383
+ getBlock,
384
+ listBlocks,
385
+ updateBlock,
386
+ deleteBlock,
387
+ getAgentAvailability,
388
+ getTeamAvailability,
389
+ shouldPing,
390
+ };
391
+ //# sourceMappingURL=calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * StreamMultiplexer — validates render events against Screen Contract v0
3
+ * and broadcasts them as SSE events to canvas subscribers.
4
+ *
5
+ * Gate checks (from contract):
6
+ * 1. Relevance: slot must be in allowed list
7
+ * 2. Content type: must be in allowed list
8
+ * 3. Decision signal: required on all renders
9
+ * 4. Evidence: required for claims/recommendations
10
+ * 5. Actionability: action slots must include next step
11
+ */
12
+ import { type SlotEvent } from './canvas-types.js';
13
+ import { slotManager } from './canvas-slots.js';
14
+ export interface ValidationResult {
15
+ valid: boolean;
16
+ errors: string[];
17
+ warnings: string[];
18
+ }
19
+ export declare function validateSlotEvent(event: SlotEvent): ValidationResult;
20
+ type CanvasSubscriber = (event: SlotEvent, slot: ReturnType<typeof slotManager.get>) => void;
21
+ /**
22
+ * Subscribe to canvas render events (SSE connections call this).
23
+ */
24
+ export declare function subscribeCanvas(callback: CanvasSubscriber): () => void;
25
+ /**
26
+ * Get current subscriber count.
27
+ */
28
+ export declare function getCanvasSubscriberCount(): number;
29
+ /**
30
+ * Process a render event: validate → store in slot manager → broadcast.
31
+ * Returns validation result (callers can check .valid).
32
+ */
33
+ export declare function processRender(event: SlotEvent): ValidationResult & {
34
+ slot?: ReturnType<typeof slotManager.get>;
35
+ };
36
+ interface RejectionEntry {
37
+ event: Partial<SlotEvent>;
38
+ errors: string[];
39
+ timestamp: number;
40
+ }
41
+ export declare function logRejection(event: Partial<SlotEvent>, errors: string[]): void;
42
+ export declare function getRecentRejections(limit?: number): RejectionEntry[];
43
+ export {};
44
+ //# sourceMappingURL=canvas-multiplexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-multiplexer.d.ts","sourceRoot":"","sources":["../src/canvas-multiplexer.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EAIL,KAAK,SAAS,EAGf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAI/C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAqBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CA4EpE;AAID,KAAK,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;AAI5F;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI,CAGtE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA;CAAE,CAoBhH;AAID,UAAU,cAAc;IACtB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAKD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAS9E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,SAAK,GAAG,cAAc,EAAE,CAEhE"}