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
package/dist/policy.js ADDED
@@ -0,0 +1,264 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) Reflectt AI
3
+ /**
4
+ * Unified Policy Config
5
+ *
6
+ * Single canonical policy file in ~/.reflectt/policy.json consumed by:
7
+ * - Watchdog (idle nudge, cadence alerts, mention rescue)
8
+ * - Board health worker (auto-block, suggest-close, digest)
9
+ * - Quiet hours
10
+ *
11
+ * Replaces scattered env vars with one editable config file.
12
+ * Env vars still override for backwards compat / CI.
13
+ * Runtime PATCH updates the in-memory config + persists to disk.
14
+ */
15
+ import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
16
+ import { dirname, join, resolve } from 'node:path';
17
+ import { REFLECTT_HOME } from './config.js';
18
+ // ── Defaults ───────────────────────────────────────────────────────────────
19
+ export const DEFAULT_POLICY = {
20
+ quietHours: {
21
+ enabled: true,
22
+ startHour: 23,
23
+ endHour: 8,
24
+ timezone: 'America/Vancouver',
25
+ },
26
+ idleNudge: {
27
+ enabled: true,
28
+ warnMin: 45,
29
+ escalateMin: 60,
30
+ cooldownMin: 20,
31
+ suppressRecentMin: 20,
32
+ shipCooldownMin: 30,
33
+ activeTaskMaxAgeMin: 180,
34
+ excluded: ['ryan', 'diag'],
35
+ },
36
+ cadenceWatchdog: {
37
+ enabled: true,
38
+ // Fire before the common “manual 60m cadence reset” pattern so the product enforces first.
39
+ silenceMin: 55,
40
+ workingStaleMin: 45,
41
+ workingTaskMaxAgeMin: 240,
42
+ alertCooldownMin: 30,
43
+ },
44
+ staleDoingThresholdMin: 240,
45
+ mentionRescue: {
46
+ enabled: true,
47
+ // Guardrail: never fire immediately; gives the trio a chance to respond naturally.
48
+ delayMin: 3,
49
+ cooldownMin: 10,
50
+ globalCooldownMin: 5,
51
+ },
52
+ boardHealth: {
53
+ enabled: true,
54
+ intervalMs: 5 * 60 * 1000,
55
+ staleDoingThresholdMin: 240,
56
+ suggestCloseThresholdMin: 1440,
57
+ rollbackWindowMs: 60 * 60 * 1000,
58
+ digestIntervalMs: 4 * 60 * 60 * 1000,
59
+ digestChannel: 'ops',
60
+ dryRun: false,
61
+ maxActionsPerTick: 5,
62
+ },
63
+ readyQueueFloor: {
64
+ enabled: true,
65
+ minReady: 2,
66
+ agents: ['link'],
67
+ escalateAfterMin: 60,
68
+ cooldownMin: 30,
69
+ channel: 'general',
70
+ },
71
+ reflectionNudge: {
72
+ enabled: true,
73
+ postTaskDelayMin: 5,
74
+ idleReflectionHours: 8,
75
+ cooldownMin: 60,
76
+ agents: [],
77
+ channel: 'general',
78
+ roleCadenceHours: {},
79
+ excludeAgents: [],
80
+ nudgeNeverReflected: true,
81
+ },
82
+ workingContract: {
83
+ enabled: true,
84
+ staleAutoRequeueMin: 45, // Warn at 45m (before any manual 60m check)
85
+ graceAfterWarningMin: 10, // 10m grace → auto-requeue at 55m
86
+ reflectionGateOnClaim: true,
87
+ agents: [],
88
+ channel: 'general',
89
+ dryRun: false,
90
+ },
91
+ insightListener: {
92
+ enabled: true,
93
+ autoCreateSeverities: ['critical', 'high'],
94
+ defaultReviewer: 'sage',
95
+ defaultEta: '4h',
96
+ clusterCooldownMs: 30 * 60_000,
97
+ },
98
+ escalation: {
99
+ defaultChannel: 'general',
100
+ criticalChannel: 'general',
101
+ digestChannel: 'ops',
102
+ },
103
+ statusHeartbeat: {
104
+ enabled: true,
105
+ intervalMin: 30,
106
+ graceMin: 10,
107
+ escalationChannel: 'general',
108
+ },
109
+ };
110
+ // ── Policy Manager ─────────────────────────────────────────────────────────
111
+ class PolicyManager {
112
+ config;
113
+ filePath;
114
+ loaded = false;
115
+ constructor() {
116
+ this.filePath = resolve(process.env.REFLECTT_POLICY_PATH || join(REFLECTT_HOME, 'policy.json'));
117
+ this.config = structuredClone(DEFAULT_POLICY);
118
+ }
119
+ /** Load policy from disk, then overlay env vars. Call once at startup. */
120
+ load() {
121
+ // 1. Load from file
122
+ try {
123
+ const raw = readFileSync(this.filePath, 'utf8');
124
+ const parsed = JSON.parse(raw);
125
+ this.config = this.merge(DEFAULT_POLICY, parsed);
126
+ }
127
+ catch {
128
+ // File doesn't exist or invalid — use defaults
129
+ }
130
+ // 2. Overlay env vars (backwards compat)
131
+ this.applyEnvOverrides();
132
+ this.loaded = true;
133
+ return this.get();
134
+ }
135
+ /** Get current policy (immutable copy) */
136
+ get() {
137
+ if (!this.loaded)
138
+ this.load();
139
+ return structuredClone(this.config);
140
+ }
141
+ /** Patch policy at runtime — merges, validates, persists */
142
+ patch(update) {
143
+ this.config = this.merge(this.config, update);
144
+ this.persist();
145
+ return this.get();
146
+ }
147
+ /** Reset to defaults + re-apply env */
148
+ reset() {
149
+ this.config = structuredClone(DEFAULT_POLICY);
150
+ this.applyEnvOverrides();
151
+ this.persist();
152
+ return this.get();
153
+ }
154
+ /** Get file path for display */
155
+ getFilePath() {
156
+ return this.filePath;
157
+ }
158
+ // ── Persistence ────────────────────────────────────────────────────────
159
+ persist() {
160
+ try {
161
+ mkdirSync(dirname(this.filePath), { recursive: true });
162
+ writeFileSync(this.filePath, JSON.stringify(this.config, null, 2) + '\n', 'utf8');
163
+ }
164
+ catch {
165
+ // Non-fatal: config still works in-memory
166
+ }
167
+ }
168
+ // ── Merge ──────────────────────────────────────────────────────────────
169
+ merge(base, overlay) {
170
+ const result = structuredClone(base);
171
+ for (const key of Object.keys(overlay)) {
172
+ const value = overlay[key];
173
+ if (value === undefined)
174
+ continue;
175
+ if (value !== null
176
+ && typeof value === 'object'
177
+ && !Array.isArray(value)
178
+ && typeof result[key] === 'object'
179
+ && result[key] !== null
180
+ && !Array.isArray(result[key])) {
181
+ result[key] = this.merge(result[key], value);
182
+ }
183
+ else {
184
+ result[key] = structuredClone(value);
185
+ }
186
+ }
187
+ return result;
188
+ }
189
+ // ── Env Overrides ──────────────────────────────────────────────────────
190
+ applyEnvOverrides() {
191
+ const env = process.env;
192
+ // Quiet hours
193
+ if (env.WATCHDOG_QUIET_HOURS_ENABLED !== undefined)
194
+ this.config.quietHours.enabled = env.WATCHDOG_QUIET_HOURS_ENABLED !== 'false';
195
+ if (env.WATCHDOG_QUIET_HOURS_START_HOUR)
196
+ this.config.quietHours.startHour = Number(env.WATCHDOG_QUIET_HOURS_START_HOUR);
197
+ if (env.WATCHDOG_QUIET_HOURS_END_HOUR)
198
+ this.config.quietHours.endHour = Number(env.WATCHDOG_QUIET_HOURS_END_HOUR);
199
+ if (env.WATCHDOG_QUIET_HOURS_TZ)
200
+ this.config.quietHours.timezone = env.WATCHDOG_QUIET_HOURS_TZ;
201
+ // Idle nudge
202
+ if (env.IDLE_NUDGE_ENABLED !== undefined)
203
+ this.config.idleNudge.enabled = env.IDLE_NUDGE_ENABLED !== 'false';
204
+ if (env.IDLE_NUDGE_WARN_MIN)
205
+ this.config.idleNudge.warnMin = Number(env.IDLE_NUDGE_WARN_MIN);
206
+ if (env.IDLE_NUDGE_ESCALATE_MIN)
207
+ this.config.idleNudge.escalateMin = Number(env.IDLE_NUDGE_ESCALATE_MIN);
208
+ if (env.IDLE_NUDGE_COOLDOWN_MIN)
209
+ this.config.idleNudge.cooldownMin = Number(env.IDLE_NUDGE_COOLDOWN_MIN);
210
+ if (env.IDLE_NUDGE_SUPPRESS_RECENT_MIN)
211
+ this.config.idleNudge.suppressRecentMin = Number(env.IDLE_NUDGE_SUPPRESS_RECENT_MIN);
212
+ if (env.IDLE_NUDGE_SHIP_COOLDOWN_MIN)
213
+ this.config.idleNudge.shipCooldownMin = Number(env.IDLE_NUDGE_SHIP_COOLDOWN_MIN);
214
+ if (env.IDLE_NUDGE_ACTIVE_TASK_MAX_AGE_MIN)
215
+ this.config.idleNudge.activeTaskMaxAgeMin = Number(env.IDLE_NUDGE_ACTIVE_TASK_MAX_AGE_MIN);
216
+ if (env.IDLE_NUDGE_EXCLUDE)
217
+ this.config.idleNudge.excluded = env.IDLE_NUDGE_EXCLUDE.split(',').map(s => s.trim().toLowerCase()).filter(Boolean);
218
+ // Cadence watchdog
219
+ if (env.CADENCE_WATCHDOG_ENABLED !== undefined)
220
+ this.config.cadenceWatchdog.enabled = env.CADENCE_WATCHDOG_ENABLED !== 'false';
221
+ if (env.CADENCE_SILENCE_MIN)
222
+ this.config.cadenceWatchdog.silenceMin = Number(env.CADENCE_SILENCE_MIN);
223
+ if (env.CADENCE_WORKING_STALE_MIN)
224
+ this.config.cadenceWatchdog.workingStaleMin = Number(env.CADENCE_WORKING_STALE_MIN);
225
+ if (env.CADENCE_WORKING_TASK_MAX_AGE_MIN)
226
+ this.config.cadenceWatchdog.workingTaskMaxAgeMin = Number(env.CADENCE_WORKING_TASK_MAX_AGE_MIN);
227
+ if (env.CADENCE_ALERT_COOLDOWN_MIN)
228
+ this.config.cadenceWatchdog.alertCooldownMin = Number(env.CADENCE_ALERT_COOLDOWN_MIN);
229
+ // Stale doing
230
+ if (env.STALE_DOING_THRESHOLD_MIN)
231
+ this.config.staleDoingThresholdMin = Number(env.STALE_DOING_THRESHOLD_MIN);
232
+ // Mention rescue
233
+ if (env.MENTION_RESCUE_ENABLED !== undefined)
234
+ this.config.mentionRescue.enabled = env.MENTION_RESCUE_ENABLED !== 'false';
235
+ if (env.MENTION_RESCUE_DELAY_MIN)
236
+ this.config.mentionRescue.delayMin = Number(env.MENTION_RESCUE_DELAY_MIN);
237
+ if (env.MENTION_RESCUE_COOLDOWN_MIN)
238
+ this.config.mentionRescue.cooldownMin = Number(env.MENTION_RESCUE_COOLDOWN_MIN);
239
+ if (env.MENTION_RESCUE_GLOBAL_COOLDOWN_MIN)
240
+ this.config.mentionRescue.globalCooldownMin = Number(env.MENTION_RESCUE_GLOBAL_COOLDOWN_MIN);
241
+ // Board health
242
+ if (env.BOARD_HEALTH_ENABLED !== undefined)
243
+ this.config.boardHealth.enabled = env.BOARD_HEALTH_ENABLED !== 'false';
244
+ if (env.BOARD_HEALTH_INTERVAL_MS)
245
+ this.config.boardHealth.intervalMs = Number(env.BOARD_HEALTH_INTERVAL_MS);
246
+ if (env.BOARD_HEALTH_STALE_DOING_MIN)
247
+ this.config.boardHealth.staleDoingThresholdMin = Number(env.BOARD_HEALTH_STALE_DOING_MIN);
248
+ if (env.BOARD_HEALTH_SUGGEST_CLOSE_MIN)
249
+ this.config.boardHealth.suggestCloseThresholdMin = Number(env.BOARD_HEALTH_SUGGEST_CLOSE_MIN);
250
+ if (env.BOARD_HEALTH_ROLLBACK_WINDOW_MS)
251
+ this.config.boardHealth.rollbackWindowMs = Number(env.BOARD_HEALTH_ROLLBACK_WINDOW_MS);
252
+ if (env.BOARD_HEALTH_DIGEST_INTERVAL_MS)
253
+ this.config.boardHealth.digestIntervalMs = Number(env.BOARD_HEALTH_DIGEST_INTERVAL_MS);
254
+ if (env.BOARD_HEALTH_DIGEST_CHANNEL)
255
+ this.config.boardHealth.digestChannel = env.BOARD_HEALTH_DIGEST_CHANNEL;
256
+ if (env.BOARD_HEALTH_DRY_RUN !== undefined)
257
+ this.config.boardHealth.dryRun = env.BOARD_HEALTH_DRY_RUN === 'true';
258
+ if (env.BOARD_HEALTH_MAX_ACTIONS)
259
+ this.config.boardHealth.maxActionsPerTick = Number(env.BOARD_HEALTH_MAX_ACTIONS);
260
+ }
261
+ }
262
+ // ── Singleton ──────────────────────────────────────────────────────────────
263
+ export const policyManager = new PolicyManager();
264
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ export interface Poll {
2
+ id: string;
3
+ question: string;
4
+ options: string[];
5
+ created_by: string;
6
+ created_at: number;
7
+ expires_at: number | null;
8
+ status: 'active' | 'closed';
9
+ anonymous: boolean;
10
+ }
11
+ export interface PollVote {
12
+ poll_id: string;
13
+ voter: string;
14
+ choice: number;
15
+ voted_at: number;
16
+ }
17
+ export interface PollWithResults extends Poll {
18
+ votes: PollVote[];
19
+ tally: Array<{
20
+ option: string;
21
+ count: number;
22
+ voters: string[];
23
+ }>;
24
+ total_votes: number;
25
+ }
26
+ export declare function createPoll(opts: {
27
+ question: string;
28
+ options: string[];
29
+ createdBy: string;
30
+ expiresAt?: number;
31
+ expiresInMinutes?: number;
32
+ anonymous?: boolean;
33
+ }): PollWithResults;
34
+ export declare function vote(pollId: string, voter: string, choice: number): {
35
+ success: boolean;
36
+ error?: string;
37
+ };
38
+ export declare function getPoll(id: string): PollWithResults | null;
39
+ export declare function listPolls(opts?: {
40
+ status?: 'active' | 'closed' | 'all';
41
+ limit?: number;
42
+ }): PollWithResults[];
43
+ export declare function closePoll(id: string): {
44
+ success: boolean;
45
+ error?: string;
46
+ };
47
+ //# sourceMappingURL=polls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polls.d.ts","sourceRoot":"","sources":["../src/polls.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC3B,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI;IAC3C,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;IACjE,WAAW,EAAE,MAAM,CAAA;CACpB;AAkCD,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,GAAG,eAAe,CA+BlB;AAED,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAuBxG;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAmC1D;AAED,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,EAAE,CAsB5G;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAM1E"}
package/dist/polls.js ADDED
@@ -0,0 +1,162 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Team polls: create, vote, view results — agents and humans
3
+ import { getDb, safeJsonStringify, safeJsonParse } from './db.js';
4
+ // ── Schema ──
5
+ function ensurePollTables() {
6
+ const db = getDb();
7
+ db.exec(`
8
+ CREATE TABLE IF NOT EXISTS polls (
9
+ id TEXT PRIMARY KEY,
10
+ question TEXT NOT NULL,
11
+ options TEXT NOT NULL,
12
+ created_by TEXT NOT NULL,
13
+ created_at INTEGER NOT NULL,
14
+ expires_at INTEGER,
15
+ status TEXT NOT NULL DEFAULT 'active',
16
+ anonymous INTEGER NOT NULL DEFAULT 0
17
+ );
18
+ CREATE INDEX IF NOT EXISTS idx_polls_status ON polls(status);
19
+ CREATE INDEX IF NOT EXISTS idx_polls_created ON polls(created_at);
20
+
21
+ CREATE TABLE IF NOT EXISTS poll_votes (
22
+ poll_id TEXT NOT NULL,
23
+ voter TEXT NOT NULL,
24
+ choice INTEGER NOT NULL,
25
+ voted_at INTEGER NOT NULL,
26
+ PRIMARY KEY (poll_id, voter),
27
+ FOREIGN KEY (poll_id) REFERENCES polls(id)
28
+ );
29
+ CREATE INDEX IF NOT EXISTS idx_poll_votes_poll ON poll_votes(poll_id);
30
+ `);
31
+ }
32
+ // ── CRUD ──
33
+ export function createPoll(opts) {
34
+ ensurePollTables();
35
+ const db = getDb();
36
+ const now = Date.now();
37
+ const id = `poll-${now}-${Math.random().toString(36).slice(2, 10)}`;
38
+ if (!opts.question?.trim())
39
+ throw new Error('Question is required');
40
+ if (!opts.options || opts.options.length < 2)
41
+ throw new Error('At least 2 options required');
42
+ if (opts.options.length > 10)
43
+ throw new Error('Maximum 10 options');
44
+ let expiresAt = null;
45
+ if (opts.expiresAt) {
46
+ expiresAt = opts.expiresAt;
47
+ }
48
+ else if (opts.expiresInMinutes && opts.expiresInMinutes > 0) {
49
+ expiresAt = now + opts.expiresInMinutes * 60 * 1000;
50
+ }
51
+ db.prepare(`
52
+ INSERT INTO polls (id, question, options, created_by, created_at, expires_at, status, anonymous)
53
+ VALUES (?, ?, ?, ?, ?, ?, 'active', ?)
54
+ `).run(id, opts.question.trim(), safeJsonStringify(opts.options.map(o => String(o).trim())), (opts.createdBy || 'unknown').trim(), now, expiresAt, opts.anonymous ? 1 : 0);
55
+ return getPoll(id);
56
+ }
57
+ export function vote(pollId, voter, choice) {
58
+ ensurePollTables();
59
+ const db = getDb();
60
+ const poll = getPollRaw(pollId);
61
+ if (!poll)
62
+ return { success: false, error: 'Poll not found' };
63
+ if (poll.status !== 'active')
64
+ return { success: false, error: 'Poll is closed' };
65
+ if (poll.expires_at && Date.now() > poll.expires_at) {
66
+ closePoll(pollId);
67
+ return { success: false, error: 'Poll has expired' };
68
+ }
69
+ if (choice < 0 || choice >= poll.options.length) {
70
+ return { success: false, error: `Invalid choice: must be 0-${poll.options.length - 1}` };
71
+ }
72
+ // Upsert: allows changing vote
73
+ db.prepare(`
74
+ INSERT INTO poll_votes (poll_id, voter, choice, voted_at)
75
+ VALUES (?, ?, ?, ?)
76
+ ON CONFLICT(poll_id, voter) DO UPDATE SET choice = excluded.choice, voted_at = excluded.voted_at
77
+ `).run(pollId, voter.trim().toLowerCase(), choice, Date.now());
78
+ return { success: true };
79
+ }
80
+ export function getPoll(id) {
81
+ ensurePollTables();
82
+ const poll = getPollRaw(id);
83
+ if (!poll)
84
+ return null;
85
+ // Auto-close expired
86
+ if (poll.status === 'active' && poll.expires_at && Date.now() > poll.expires_at) {
87
+ closePoll(id);
88
+ poll.status = 'closed';
89
+ }
90
+ const db = getDb();
91
+ const votes = db.prepare('SELECT * FROM poll_votes WHERE poll_id = ? ORDER BY voted_at')
92
+ .all(id).map(r => ({
93
+ poll_id: String(r.poll_id),
94
+ voter: String(r.voter),
95
+ choice: Number(r.choice),
96
+ voted_at: Number(r.voted_at),
97
+ }));
98
+ const tally = poll.options.map((option, i) => {
99
+ const optionVotes = votes.filter(v => v.choice === i);
100
+ return {
101
+ option,
102
+ count: optionVotes.length,
103
+ voters: poll.anonymous ? [] : optionVotes.map(v => v.voter),
104
+ };
105
+ });
106
+ return {
107
+ ...poll,
108
+ votes: poll.anonymous ? [] : votes,
109
+ tally,
110
+ total_votes: votes.length,
111
+ };
112
+ }
113
+ export function listPolls(opts) {
114
+ ensurePollTables();
115
+ const db = getDb();
116
+ const limit = Math.min(opts?.limit ?? 20, 100);
117
+ // Auto-close expired polls
118
+ const now = Date.now();
119
+ db.prepare("UPDATE polls SET status = 'closed' WHERE status = 'active' AND expires_at IS NOT NULL AND expires_at < ?").run(now);
120
+ let rows;
121
+ if (opts?.status && opts.status !== 'all') {
122
+ rows = db.prepare('SELECT * FROM polls WHERE status = ? ORDER BY created_at DESC LIMIT ?')
123
+ .all(opts.status, limit);
124
+ }
125
+ else {
126
+ rows = db.prepare('SELECT * FROM polls ORDER BY created_at DESC LIMIT ?')
127
+ .all(limit);
128
+ }
129
+ return rows.map(r => {
130
+ const poll = rowToPoll(r);
131
+ return getPoll(poll.id);
132
+ }).filter(Boolean);
133
+ }
134
+ export function closePoll(id) {
135
+ ensurePollTables();
136
+ const db = getDb();
137
+ const result = db.prepare("UPDATE polls SET status = 'closed' WHERE id = ? AND status = 'active'").run(id);
138
+ if (result.changes === 0)
139
+ return { success: false, error: 'Poll not found or already closed' };
140
+ return { success: true };
141
+ }
142
+ // ── Helpers ──
143
+ function getPollRaw(id) {
144
+ const db = getDb();
145
+ const row = db.prepare('SELECT * FROM polls WHERE id = ?').get(id);
146
+ if (!row)
147
+ return null;
148
+ return rowToPoll(row);
149
+ }
150
+ function rowToPoll(row) {
151
+ return {
152
+ id: String(row.id),
153
+ question: String(row.question),
154
+ options: safeJsonParse(row.options) ?? [],
155
+ created_by: String(row.created_by),
156
+ created_at: Number(row.created_at),
157
+ expires_at: row.expires_at ? Number(row.expires_at) : null,
158
+ status: String(row.status),
159
+ anonymous: Boolean(row.anonymous),
160
+ };
161
+ }
162
+ //# sourceMappingURL=polls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polls.js","sourceRoot":"","sources":["../src/polls.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,6DAA6D;AAE7D,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AA4BjE,eAAe;AAEf,SAAS,gBAAgB;IACvB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;GAuBP,CAAC,CAAA;AACJ,CAAC;AAED,aAAa;AAEb,MAAM,UAAU,UAAU,CAAC,IAO1B;IACC,gBAAgB,EAAE,CAAA;IAClB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,EAAE,GAAG,QAAQ,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;IAEnE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACnE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAC5F,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAEnE,IAAI,SAAS,GAAkB,IAAI,CAAA;IACnC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;IAC5B,CAAC;SAAM,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QAC9D,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAA;IACrD,CAAC;IAED,EAAE,CAAC,OAAO,CAAC;;;GAGV,CAAC,CAAC,GAAG,CACJ,EAAE,EACF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EACpB,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAC1D,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,EACpC,GAAG,EACH,SAAS,EACT,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvB,CAAA;IAED,OAAO,OAAO,CAAC,EAAE,CAAE,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,MAAc,EAAE,KAAa,EAAE,MAAc;IAChE,gBAAgB,EAAE,CAAA;IAClB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAElB,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAA;IAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAA;IAChF,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACpD,SAAS,CAAC,MAAM,CAAC,CAAA;QACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAA;IACtD,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAChD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAA;IAC1F,CAAC;IAED,+BAA+B;IAC/B,EAAE,CAAC,OAAO,CAAC;;;;GAIV,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAE9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,gBAAgB,EAAE,CAAA;IAClB,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;IAC3B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAEtB,qBAAqB;IACrB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChF,SAAS,CAAC,EAAE,CAAC,CAAA;QACb,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;IACxB,CAAC;IAED,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,KAAK,GAAI,EAAE,CAAC,OAAO,CAAC,8DAA8D,CAAC;SACtF,GAAG,CAAC,EAAE,CAAoC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;KAC7B,CAAC,CAAC,CAAA;IAEH,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;QACrD,OAAO;YACL,MAAM;YACN,KAAK,EAAE,WAAW,CAAC,MAAM;YACzB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SAC5D,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,GAAG,IAAI;QACP,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;QAClC,KAAK;QACL,WAAW,EAAE,KAAK,CAAC,MAAM;KAC1B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAA+D;IACvF,gBAAgB,EAAE,CAAA;IAClB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IAE9C,2BAA2B;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,EAAE,CAAC,OAAO,CAAC,0GAA0G,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAE/H,IAAI,IAAoC,CAAA;IACxC,IAAI,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC1C,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,uEAAuE,CAAC;aACvF,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAmC,CAAA;IAC9D,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC;aACtE,GAAG,CAAC,KAAK,CAAmC,CAAA;IACjD,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAClB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QACzB,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAE,CAAA;IAC1B,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,gBAAgB,EAAE,CAAA;IAClB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,uEAAuE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC1G,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAA;IAC9F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC1B,CAAC;AAED,gBAAgB;AAEhB,SAAS,UAAU,CAAC,EAAU;IAC5B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAwC,CAAA;IACzG,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAA;AACvB,CAAC;AAED,SAAS,SAAS,CAAC,GAA4B;IAC7C,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,OAAO,EAAE,aAAa,CAAW,GAAG,CAAC,OAAiB,CAAC,IAAI,EAAE;QAC7D,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QAClC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;QAC1D,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAmB;QAC5C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;KAClC,CAAA;AACH,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { SecretVault } from './secrets.js';
2
+ export interface ExportBundle {
3
+ version: '1.0.0';
4
+ format: 'reflectt-export';
5
+ exportedAt: string;
6
+ exportedFrom: {
7
+ hostId: string | null;
8
+ hostName: string;
9
+ reflecttHome: string;
10
+ };
11
+ teamConfig: {
12
+ teamMd: string | null;
13
+ teamRolesYaml: string | null;
14
+ teamStandardsMd: string | null;
15
+ };
16
+ serverConfig: Record<string, unknown> | null;
17
+ secrets: {
18
+ vaultExport: ReturnType<SecretVault['export']> | null;
19
+ secretCount: number;
20
+ note: string;
21
+ };
22
+ webhooks: {
23
+ routes: Array<Record<string, unknown>>;
24
+ deliveryConfig: Record<string, unknown>;
25
+ };
26
+ provisioning: {
27
+ phase: string;
28
+ hostId: string | null;
29
+ hostName: string;
30
+ cloudUrl: string;
31
+ webhookCount: number;
32
+ };
33
+ customFiles: Array<{
34
+ path: string;
35
+ content: string;
36
+ }>;
37
+ }
38
+ export interface ImportResult {
39
+ success: boolean;
40
+ message: string;
41
+ imported: {
42
+ teamConfig: boolean;
43
+ serverConfig: boolean;
44
+ webhookConfig: boolean;
45
+ customFiles: number;
46
+ };
47
+ warnings: string[];
48
+ }
49
+ export declare function exportBundle(vault: SecretVault | null): ExportBundle;
50
+ export declare function importBundle(bundle: ExportBundle, options?: {
51
+ overwrite?: boolean;
52
+ skipSecrets?: boolean;
53
+ skipConfig?: boolean;
54
+ }): ImportResult;
55
+ //# sourceMappingURL=portability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portability.d.ts","sourceRoot":"","sources":["../src/portability.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAM1C,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,iBAAiB,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE;QACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,QAAQ,EAAE,MAAM,CAAA;QAChB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;QAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;KAC/B,CAAA;IACD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE;QACP,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAA;QACrD,WAAW,EAAE,MAAM,CAAA;QACnB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QACtC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACxC,CAAA;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,YAAY,EAAE,MAAM,CAAA;KAErB,CAAA;IACD,WAAW,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;KAChB,CAAC,CAAA;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE;QACR,UAAU,EAAE,OAAO,CAAA;QACnB,YAAY,EAAE,OAAO,CAAA;QACrB,aAAa,EAAE,OAAO,CAAA;QACtB,WAAW,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AASD,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,YAAY,CA0EpE;AAID,wBAAgB,YAAY,CAC1B,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;CAChB,GACL,YAAY,CAyHd"}