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,278 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Insight → Task promotion workflow + recurring candidate generation
3
+ //
4
+ // Converts qualified insights into board tasks with required contract fields.
5
+ // Records audit trail and generates recurring candidates per role lane.
6
+ import { getDb, safeJsonStringify, safeJsonParse } from './db.js';
7
+ import { taskManager } from './tasks.js';
8
+ import { getInsight } from './insights.js';
9
+ import { getAgentRoles, suggestAssignee } from './assignment.js';
10
+ export function validatePromotionInput(body) {
11
+ const errors = [];
12
+ if (!body || typeof body !== 'object') {
13
+ return { valid: false, errors: ['Request body must be a JSON object'] };
14
+ }
15
+ const b = body;
16
+ if (typeof b.insight_id !== 'string' || !b.insight_id) {
17
+ errors.push('insight_id is required');
18
+ }
19
+ if (!b.contract || typeof b.contract !== 'object') {
20
+ errors.push('contract object is required');
21
+ }
22
+ else {
23
+ const c = b.contract;
24
+ const contractFields = ['owner', 'reviewer', 'eta', 'acceptance_check', 'artifact_proof_requirement', 'next_checkpoint_eta'];
25
+ for (const field of contractFields) {
26
+ if (typeof c[field] !== 'string' || !c[field].trim()) {
27
+ errors.push(`contract.${field} is required and must be a non-empty string`);
28
+ }
29
+ }
30
+ }
31
+ if (b.priority !== undefined && !['P0', 'P1', 'P2', 'P3'].includes(b.priority)) {
32
+ errors.push('priority must be P0, P1, P2, or P3');
33
+ }
34
+ return errors.length > 0 ? { valid: false, errors } : { valid: true };
35
+ }
36
+ // ── Promotion ──
37
+ /**
38
+ * Promote an insight into a board task.
39
+ */
40
+ export async function promoteInsight(input, promotedBy) {
41
+ const insight = getInsight(input.insight_id);
42
+ if (!insight) {
43
+ return { success: false, insight_id: input.insight_id, error: 'Insight not found' };
44
+ }
45
+ if (insight.status === 'closed') {
46
+ return { success: false, insight_id: input.insight_id, error: 'Cannot promote a closed insight' };
47
+ }
48
+ // Check if already promoted to a task
49
+ const existingAudit = getPromotionAuditByInsight(input.insight_id);
50
+ if (existingAudit) {
51
+ return {
52
+ success: false,
53
+ insight_id: input.insight_id,
54
+ task_id: existingAudit.task_id,
55
+ error: `Insight already promoted to task ${existingAudit.task_id}`,
56
+ };
57
+ }
58
+ const contract = input.contract;
59
+ const priority = input.priority ?? insight.priority;
60
+ // Build task description from insight data
61
+ const description = input.description ?? buildTaskDescription(insight, contract);
62
+ const title = input.title ?? `[Insight] ${insight.title}`;
63
+ const task = await taskManager.createTask({
64
+ title,
65
+ description,
66
+ status: 'todo',
67
+ assignee: contract.owner,
68
+ reviewer: contract.reviewer,
69
+ done_criteria: [
70
+ contract.acceptance_check,
71
+ `Artifact: ${contract.artifact_proof_requirement}`,
72
+ `Checkpoint: ${contract.next_checkpoint_eta}`,
73
+ ],
74
+ createdBy: promotedBy,
75
+ priority,
76
+ tags: ['insight-promoted', insight.failure_family],
77
+ metadata: {
78
+ source_insight: input.insight_id,
79
+ promotion_contract: contract,
80
+ eta: contract.eta,
81
+ cluster_key: insight.cluster_key,
82
+ severity_max: insight.severity_max,
83
+ reflection_count: insight.reflection_ids.length,
84
+ },
85
+ ...(input.team_id ? { teamId: input.team_id } : {}),
86
+ });
87
+ // Record audit
88
+ const audit = recordPromotionAudit(insight, task.id, promotedBy, contract);
89
+ // Update insight metadata
90
+ const db = getDb();
91
+ db.prepare(`
92
+ UPDATE insights SET
93
+ metadata = ?,
94
+ updated_at = ?
95
+ WHERE id = ?
96
+ `).run(safeJsonStringify({ promoted_task_id: task.id, promoted_at: Date.now(), promoted_by: promotedBy }), Date.now(), insight.id);
97
+ // TODO: emit insight:task_promoted event when EventType supports it
98
+ return {
99
+ success: true,
100
+ task_id: task.id,
101
+ insight_id: insight.id,
102
+ audit_id: audit.id,
103
+ };
104
+ }
105
+ function buildTaskDescription(insight, contract) {
106
+ return [
107
+ `## Origin`,
108
+ `Promoted from insight \`${insight.id}\` (${insight.cluster_key})`,
109
+ ``,
110
+ `**Score:** ${insight.score}/10 | **Priority:** ${insight.priority} | **Severity:** ${insight.severity_max ?? 'unset'}`,
111
+ `**Reflections:** ${insight.reflection_ids.length} from ${insight.independent_count} author(s)`,
112
+ `**Evidence:** ${insight.evidence_refs.join(', ')}`,
113
+ ``,
114
+ `## Problem`,
115
+ insight.title,
116
+ ``,
117
+ `## Contract`,
118
+ `- **Owner:** ${contract.owner}`,
119
+ `- **Reviewer:** ${contract.reviewer}`,
120
+ `- **ETA:** ${contract.eta}`,
121
+ `- **Acceptance:** ${contract.acceptance_check}`,
122
+ `- **Artifact:** ${contract.artifact_proof_requirement}`,
123
+ `- **Checkpoint:** ${contract.next_checkpoint_eta}`,
124
+ ].join('\n');
125
+ }
126
+ // ── Audit ──
127
+ export function ensurePromotionAuditTable() {
128
+ const db = getDb();
129
+ db.exec(`
130
+ CREATE TABLE IF NOT EXISTS promotion_audits (
131
+ id TEXT PRIMARY KEY,
132
+ insight_id TEXT NOT NULL,
133
+ task_id TEXT NOT NULL,
134
+ promoted_by TEXT NOT NULL,
135
+ contract TEXT NOT NULL, -- JSON
136
+ insight_snapshot TEXT NOT NULL, -- JSON
137
+ created_at INTEGER NOT NULL
138
+ );
139
+ CREATE INDEX IF NOT EXISTS idx_promotion_audits_insight ON promotion_audits(insight_id);
140
+ CREATE INDEX IF NOT EXISTS idx_promotion_audits_task ON promotion_audits(task_id);
141
+ `);
142
+ }
143
+ function recordPromotionAudit(insight, taskId, promotedBy, contract) {
144
+ ensurePromotionAuditTable();
145
+ const db = getDb();
146
+ const id = `paudit-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
147
+ const now = Date.now();
148
+ const snapshot = {
149
+ score: insight.score,
150
+ priority: insight.priority,
151
+ reflection_count: insight.reflection_ids.length,
152
+ independent_count: insight.independent_count,
153
+ severity_max: insight.severity_max,
154
+ cluster_key: insight.cluster_key,
155
+ };
156
+ db.prepare(`
157
+ INSERT INTO promotion_audits (id, insight_id, task_id, promoted_by, contract, insight_snapshot, created_at)
158
+ VALUES (?, ?, ?, ?, ?, ?, ?)
159
+ `).run(id, insight.id, taskId, promotedBy, safeJsonStringify(contract), safeJsonStringify(snapshot), now);
160
+ return { id, insight_id: insight.id, task_id: taskId, promoted_by: promotedBy, contract, insight_snapshot: snapshot, created_at: now };
161
+ }
162
+ export function getPromotionAuditByInsight(insightId) {
163
+ ensurePromotionAuditTable();
164
+ const db = getDb();
165
+ const row = db.prepare('SELECT * FROM promotion_audits WHERE insight_id = ? ORDER BY created_at DESC LIMIT 1').get(insightId);
166
+ if (!row)
167
+ return null;
168
+ return {
169
+ id: row.id,
170
+ insight_id: row.insight_id,
171
+ task_id: row.task_id,
172
+ promoted_by: row.promoted_by,
173
+ contract: safeJsonParse(row.contract),
174
+ insight_snapshot: safeJsonParse(row.insight_snapshot),
175
+ created_at: row.created_at,
176
+ };
177
+ }
178
+ export function listPromotionAudits(limit = 50) {
179
+ ensurePromotionAuditTable();
180
+ const db = getDb();
181
+ const rows = db.prepare('SELECT * FROM promotion_audits ORDER BY created_at DESC LIMIT ?').all(limit);
182
+ return rows.map(row => ({
183
+ id: row.id,
184
+ insight_id: row.insight_id,
185
+ task_id: row.task_id,
186
+ promoted_by: row.promoted_by,
187
+ contract: safeJsonParse(row.contract),
188
+ insight_snapshot: safeJsonParse(row.insight_snapshot),
189
+ created_at: row.created_at,
190
+ }));
191
+ }
192
+ // ── Recurring candidate generation ──
193
+ /**
194
+ * Generate recurring task candidates from insights that show persistent patterns.
195
+ *
196
+ * Criteria:
197
+ * - recurring_candidate = true (insight was reopened or has 4+ reflections)
198
+ * - status is promoted or cooldown (active insights)
199
+ * - Not already promoted to a task
200
+ *
201
+ * Per-lane assignment: maps failure_family + impacted_unit to agent roles.
202
+ */
203
+ export function generateRecurringCandidates() {
204
+ const db = getDb();
205
+ ensurePromotionAuditTable();
206
+ // Get recurring insights that haven't been promoted to tasks yet
207
+ const rows = db.prepare(`
208
+ SELECT i.* FROM insights i
209
+ LEFT JOIN promotion_audits pa ON pa.insight_id = i.id
210
+ WHERE i.recurring_candidate = 1
211
+ AND i.status IN ('promoted', 'cooldown', 'candidate')
212
+ AND pa.id IS NULL
213
+ ORDER BY i.score DESC
214
+ `).all();
215
+ const roles = getAgentRoles();
216
+ const candidates = [];
217
+ for (const row of rows) {
218
+ const reflectionIds = safeJsonParse(row.reflection_ids) ?? [];
219
+ const suggested = suggestOwnerForInsight(row.failure_family, row.impacted_unit, roles);
220
+ candidates.push({
221
+ insight_id: row.id,
222
+ cluster_key: row.cluster_key,
223
+ failure_family: row.failure_family,
224
+ impacted_unit: row.impacted_unit,
225
+ reflection_count: reflectionIds.length,
226
+ reopened_count: 0, // not tracked in current schema, inferred from recurring_candidate
227
+ score: row.score,
228
+ priority: row.priority,
229
+ severity_max: row.severity_max,
230
+ suggested_owner: suggested.owner,
231
+ suggested_lane: suggested.lane,
232
+ reason: buildRecurringReason(row, reflectionIds.length),
233
+ });
234
+ }
235
+ return candidates;
236
+ }
237
+ function suggestOwnerForInsight(failureFamily, impactedUnit, roles) {
238
+ // Map failure families to likely role affinities
239
+ const tagHints = [failureFamily, impactedUnit];
240
+ for (const role of roles) {
241
+ const matches = role.affinityTags.some(tag => tagHints.some(hint => hint.toLowerCase().includes(tag.toLowerCase()) || tag.toLowerCase().includes(hint.toLowerCase())));
242
+ if (matches) {
243
+ return { owner: role.name, lane: role.role };
244
+ }
245
+ }
246
+ // Fallback: try suggestAssignee with a synthetic task
247
+ try {
248
+ const suggestion = suggestAssignee({ title: `Fix ${failureFamily} issue in ${impactedUnit}` }, []);
249
+ if (suggestion?.suggested) {
250
+ const matchedRole = roles.find(r => r.name === suggestion.suggested);
251
+ return { owner: suggestion.suggested, lane: matchedRole?.role ?? null };
252
+ }
253
+ }
254
+ catch {
255
+ // assignment module may not be loaded
256
+ }
257
+ return { owner: null, lane: null };
258
+ }
259
+ function buildRecurringReason(row, reflectionCount) {
260
+ const parts = [];
261
+ if (reflectionCount >= 4)
262
+ parts.push(`${reflectionCount} reflections filed`);
263
+ if (row.severity_max === 'critical' || row.severity_max === 'high')
264
+ parts.push(`max severity: ${row.severity_max}`);
265
+ parts.push(`score: ${row.score}/10`);
266
+ return parts.length > 0 ? parts.join(', ') : 'recurring pattern detected';
267
+ }
268
+ // ── Test helpers ──
269
+ export function _clearPromotionAudits() {
270
+ try {
271
+ const db = getDb();
272
+ db.prepare('DELETE FROM promotion_audits').run();
273
+ }
274
+ catch {
275
+ // Table may not exist
276
+ }
277
+ }
278
+ //# sourceMappingURL=insight-promotion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insight-promotion.js","sourceRoot":"","sources":["../src/insight-promotion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { type Event } from './events.js';
2
+ import { type Insight } from './insights.js';
3
+ export interface OwnershipGuardrailConfig {
4
+ /** When true, avoid assigning auto-created tasks to sole insight author */
5
+ enabled: boolean;
6
+ /** When sole author IS assigned (no alternatives), require non-author reviewer */
7
+ requireNonAuthorReviewer: boolean;
8
+ /** Override: teams can disable the guardrail entirely */
9
+ teamOverrides?: Record<string, boolean>;
10
+ }
11
+ export interface AssignmentDecision {
12
+ assignee: string;
13
+ reviewer: string;
14
+ /** Why this assignment was chosen */
15
+ reason: string;
16
+ /** Whether the guardrail fired */
17
+ guardrailApplied: boolean;
18
+ /** Whether sole-author fallback was used (guardrail wanted to avoid but couldn't) */
19
+ soleAuthorFallback: boolean;
20
+ /** Candidates considered (for audit) */
21
+ candidatesConsidered: string[];
22
+ /** Authors of the insight */
23
+ insightAuthors: string[];
24
+ }
25
+ export interface BridgeConfig {
26
+ enabled: boolean;
27
+ autoCreateSeverities: string[];
28
+ defaultReviewer: string;
29
+ defaultEtaDays: number;
30
+ assignableAgents: string[];
31
+ ownershipGuardrail: OwnershipGuardrailConfig;
32
+ }
33
+ export interface BridgeStats {
34
+ tasksAutoCreated: number;
35
+ insightsTriaged: number;
36
+ duplicatesSkipped: number;
37
+ errors: number;
38
+ lastEventAt: number | null;
39
+ }
40
+ /**
41
+ * Update bridge config at runtime (e.g., from policy or API).
42
+ */
43
+ export declare function configureBridge(partial: Partial<BridgeConfig>): void;
44
+ declare function handlePromotedInsight(event: Event): Promise<void>;
45
+ export declare function isFeatureRequest(insight: Insight): boolean;
46
+ /**
47
+ * Resolve assignee + reviewer with ownership guardrail.
48
+ *
49
+ * Policy:
50
+ * 1. If guardrail enabled and insight has single author:
51
+ * a. Use suggestAssignee (scoring engine) excluding the author
52
+ * b. If no non-author candidate available → fallback to author, but require non-author reviewer
53
+ * 2. If multi-author: normal suggestAssignee routing (authors are valid candidates)
54
+ * 3. Decision is fully recorded for audit trail
55
+ */
56
+ export declare function resolveAssignment(insight: Insight, teamId?: string): AssignmentDecision;
57
+ export interface TriageDecision {
58
+ id: string;
59
+ insight_id: string;
60
+ action: 'approve' | 'dismiss';
61
+ reviewer: string;
62
+ rationale: string;
63
+ outcome_task_id: string | null;
64
+ previous_status: string;
65
+ new_status: string;
66
+ timestamp: number;
67
+ }
68
+ export declare function ensureTriageAuditTable(): void;
69
+ export declare function recordTriageDecision(decision: Omit<TriageDecision, 'id'>): TriageDecision;
70
+ export declare function getTriageAudit(insightId?: string, limit?: number): TriageDecision[];
71
+ export declare function startInsightTaskBridge(): void;
72
+ export declare function stopInsightTaskBridge(): void;
73
+ export declare function getInsightTaskBridgeStats(): BridgeStats;
74
+ export declare function _resetBridgeStats(): void;
75
+ export declare function getBridgeConfig(): BridgeConfig;
76
+ export { handlePromotedInsight as _handlePromotedInsight };
77
+ //# sourceMappingURL=insight-task-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insight-task-bridge.d.ts","sourceRoot":"","sources":["../src/insight-task-bridge.ts"],"names":[],"mappings":"AAYA,OAAO,EAAY,KAAK,KAAK,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAmC,KAAK,OAAO,EAAE,MAAM,eAAe,CAAA;AAO7E,MAAM,WAAW,wBAAwB;IACvC,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAA;IAChB,kFAAkF;IAClF,wBAAwB,EAAE,OAAO,CAAA;IACjC,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,kCAAkC;IAClC,gBAAgB,EAAE,OAAO,CAAA;IACzB,qFAAqF;IACrF,kBAAkB,EAAE,OAAO,CAAA;IAC3B,wCAAwC;IACxC,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,6BAA6B;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,kBAAkB,EAAE,wBAAwB,CAAA;CAC7C;AAED,MAAM,WAAW,WAAW;IAC1B,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AA0BD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAKpE;AAID,iBAAe,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhE;AAsID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAgB1D;AAuED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAgIvF;AA6ED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAiB7C;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,cAAc,CASzF;AAED,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,cAAc,EAAE,CAS/E;AAID,wBAAgB,sBAAsB,IAAI,IAAI,CAa7C;AAgDD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAgB,yBAAyB,IAAI,WAAW,CAEvD;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,CAAA"}