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,130 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Pause/sleep controls: pause individual agents or the whole team
3
+ // When paused, /tasks/next refuses to assign new work.
4
+ import { getDb } from './db.js';
5
+ // ── DB ──
6
+ function ensurePauseTable() {
7
+ const db = getDb();
8
+ db.exec(`
9
+ CREATE TABLE IF NOT EXISTS pause_controls (
10
+ target TEXT PRIMARY KEY,
11
+ paused INTEGER NOT NULL DEFAULT 0,
12
+ paused_at INTEGER NOT NULL,
13
+ paused_until INTEGER,
14
+ paused_by TEXT NOT NULL,
15
+ reason TEXT NOT NULL DEFAULT ''
16
+ );
17
+ `);
18
+ }
19
+ // ── Core ──
20
+ const TEAM_TARGET = '__team__';
21
+ function getEntry(target) {
22
+ ensurePauseTable();
23
+ const db = getDb();
24
+ const row = db.prepare('SELECT * FROM pause_controls WHERE target = ?').get(target);
25
+ if (!row)
26
+ return null;
27
+ return {
28
+ target: String(row.target),
29
+ paused: Boolean(row.paused),
30
+ pausedAt: Number(row.paused_at) || 0,
31
+ pausedUntil: row.paused_until ? Number(row.paused_until) : null,
32
+ pausedBy: String(row.paused_by || ''),
33
+ reason: String(row.reason || ''),
34
+ };
35
+ }
36
+ function upsertPause(target, opts) {
37
+ ensurePauseTable();
38
+ const db = getDb();
39
+ const now = Date.now();
40
+ db.prepare(`
41
+ INSERT INTO pause_controls (target, paused, paused_at, paused_until, paused_by, reason)
42
+ VALUES (?, 1, ?, ?, ?, ?)
43
+ ON CONFLICT(target) DO UPDATE SET
44
+ paused = 1,
45
+ paused_at = excluded.paused_at,
46
+ paused_until = excluded.paused_until,
47
+ paused_by = excluded.paused_by,
48
+ reason = excluded.reason
49
+ `).run(target, now, opts.pausedUntil ?? null, opts.pausedBy, opts.reason);
50
+ return getEntry(target);
51
+ }
52
+ function removePause(target) {
53
+ ensurePauseTable();
54
+ const db = getDb();
55
+ const result = db.prepare('UPDATE pause_controls SET paused = 0 WHERE target = ?').run(target);
56
+ return result.changes > 0;
57
+ }
58
+ // ── Auto-expire check ──
59
+ function isExpired(entry) {
60
+ if (!entry.paused)
61
+ return true;
62
+ if (!entry.pausedUntil)
63
+ return false; // indefinite
64
+ return Date.now() >= entry.pausedUntil;
65
+ }
66
+ // ── Public API ──
67
+ /** Pause an agent or the team */
68
+ export function pauseTarget(target, opts) {
69
+ const key = target === 'team' ? TEAM_TARGET : target.toLowerCase();
70
+ return upsertPause(key, opts);
71
+ }
72
+ /** Unpause an agent or the team */
73
+ export function unpauseTarget(target) {
74
+ const key = target === 'team' ? TEAM_TARGET : target.toLowerCase();
75
+ return { success: removePause(key) };
76
+ }
77
+ /** Check if an agent is paused (directly or via team pause) */
78
+ export function checkPauseStatus(agent) {
79
+ const agentKey = agent.toLowerCase();
80
+ // Check team-wide pause first
81
+ const teamEntry = getEntry(TEAM_TARGET);
82
+ if (teamEntry && teamEntry.paused && !isExpired(teamEntry)) {
83
+ const remainingMs = teamEntry.pausedUntil ? teamEntry.pausedUntil - Date.now() : null;
84
+ return {
85
+ paused: true,
86
+ entry: teamEntry,
87
+ remainingMs,
88
+ message: `Team paused by ${teamEntry.pausedBy}: ${teamEntry.reason}${remainingMs ? ` (${Math.ceil(remainingMs / 60000)}m remaining)` : ' (indefinite)'}`,
89
+ };
90
+ }
91
+ // Auto-expire team pause
92
+ if (teamEntry && teamEntry.paused && isExpired(teamEntry)) {
93
+ removePause(TEAM_TARGET);
94
+ }
95
+ // Check agent-specific pause
96
+ const agentEntry = getEntry(agentKey);
97
+ if (agentEntry && agentEntry.paused && !isExpired(agentEntry)) {
98
+ const remainingMs = agentEntry.pausedUntil ? agentEntry.pausedUntil - Date.now() : null;
99
+ return {
100
+ paused: true,
101
+ entry: agentEntry,
102
+ remainingMs,
103
+ message: `${agent} paused by ${agentEntry.pausedBy}: ${agentEntry.reason}${remainingMs ? ` (${Math.ceil(remainingMs / 60000)}m remaining)` : ' (indefinite)'}`,
104
+ };
105
+ }
106
+ // Auto-expire agent pause
107
+ if (agentEntry && agentEntry.paused && isExpired(agentEntry)) {
108
+ removePause(agentKey);
109
+ }
110
+ return { paused: false, entry: null, remainingMs: null, message: 'Active' };
111
+ }
112
+ /** List all pause entries (active + expired) */
113
+ export function listPauseEntries() {
114
+ ensurePauseTable();
115
+ const db = getDb();
116
+ const rows = db.prepare('SELECT * FROM pause_controls ORDER BY paused_at DESC').all();
117
+ return rows.map(row => ({
118
+ target: String(row.target),
119
+ paused: Boolean(row.paused),
120
+ pausedAt: Number(row.paused_at) || 0,
121
+ pausedUntil: row.paused_until ? Number(row.paused_until) : null,
122
+ pausedBy: String(row.paused_by || ''),
123
+ reason: String(row.reason || ''),
124
+ }));
125
+ }
126
+ /** Get team pause status specifically */
127
+ export function getTeamPauseStatus() {
128
+ return checkPauseStatus(TEAM_TARGET);
129
+ }
130
+ //# sourceMappingURL=pause-controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause-controls.js","sourceRoot":"","sources":["../src/pause-controls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Get port-specific PID path to avoid cross-port lockfile conflicts.
3
+ * Production (4445) uses the default path for backward compatibility.
4
+ */
5
+ export declare function getPidPath(port: number): string;
6
+ export interface PidLockResult {
7
+ previousPid: number | null;
8
+ killedPrevious: boolean;
9
+ portConflictPids: number[];
10
+ killedPortConflicts: boolean;
11
+ }
12
+ /**
13
+ * Acquire the PID lock. Call this before starting the server.
14
+ *
15
+ * 1. Reads existing lockfile and kills that process if alive
16
+ * 2. Checks for port conflicts from unmanaged processes
17
+ * 3. Writes current PID to lockfile
18
+ */
19
+ export declare function acquirePidLock(port: number, pidPath?: string): PidLockResult;
20
+ /**
21
+ * Release the PID lock. Call this on shutdown.
22
+ * Only removes the lockfile if it still contains our PID (avoid race).
23
+ */
24
+ export declare function releasePidLock(pidPath?: string): void;
25
+ //# sourceMappingURL=pidlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pidlock.d.ts","sourceRoot":"","sources":["../src/pidlock.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,cAAc,EAAE,OAAO,CAAA;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,mBAAmB,EAAE,OAAO,CAAA;CAC7B;AAsED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,aAAa,CAgE9F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,MAAyB,GAAG,IAAI,CAcvE"}
@@ -0,0 +1,179 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) Reflectt AI
3
+ /**
4
+ * PID Lockfile Manager
5
+ *
6
+ * Ensures only one instance of reflectt-node runs at a time.
7
+ * On startup: reads lockfile, kills stale process, writes new PID.
8
+ * On shutdown: cleans up lockfile.
9
+ *
10
+ * Also detects port conflicts from processes NOT managed by our lockfile.
11
+ */
12
+ import { readFileSync, writeFileSync, unlinkSync, existsSync } from 'node:fs';
13
+ import { execSync } from 'node:child_process';
14
+ const DEFAULT_PID_PATH = '/tmp/reflectt-node.pid';
15
+ /**
16
+ * Get port-specific PID path to avoid cross-port lockfile conflicts.
17
+ * Production (4445) uses the default path for backward compatibility.
18
+ */
19
+ export function getPidPath(port) {
20
+ return port === 4445 ? DEFAULT_PID_PATH : `/tmp/reflectt-node-${port}.pid`;
21
+ }
22
+ /**
23
+ * Check if a process is alive
24
+ */
25
+ function isProcessAlive(pid) {
26
+ try {
27
+ process.kill(pid, 0); // signal 0 = just check existence
28
+ return true;
29
+ }
30
+ catch {
31
+ return false;
32
+ }
33
+ }
34
+ /**
35
+ * Kill a process with escalation: SIGTERM → wait → SIGKILL
36
+ */
37
+ function killProcess(pid, label) {
38
+ if (!isProcessAlive(pid))
39
+ return false;
40
+ console.log(` ⚠ Killing ${label} (pid ${pid})...`);
41
+ try {
42
+ process.kill(pid, 'SIGTERM');
43
+ }
44
+ catch {
45
+ return false;
46
+ }
47
+ // Wait up to 3 seconds for graceful shutdown
48
+ const deadline = Date.now() + 3000;
49
+ while (Date.now() < deadline && isProcessAlive(pid)) {
50
+ // busy-wait in 100ms increments (startup only, acceptable)
51
+ const waitUntil = Date.now() + 100;
52
+ while (Date.now() < waitUntil) { /* spin */ }
53
+ }
54
+ // Force kill if still alive
55
+ if (isProcessAlive(pid)) {
56
+ console.log(` ⚠ Force-killing ${label} (pid ${pid})...`);
57
+ try {
58
+ process.kill(pid, 'SIGKILL');
59
+ }
60
+ catch {
61
+ return false;
62
+ }
63
+ // Brief wait for SIGKILL to take effect
64
+ const killDeadline = Date.now() + 1000;
65
+ while (Date.now() < killDeadline && isProcessAlive(pid)) {
66
+ const waitUntil = Date.now() + 50;
67
+ while (Date.now() < waitUntil) { /* spin */ }
68
+ }
69
+ }
70
+ return !isProcessAlive(pid);
71
+ }
72
+ /**
73
+ * Find PIDs listening on a given port (via lsof)
74
+ */
75
+ function findPortPids(port) {
76
+ try {
77
+ const output = execSync(`lsof -i :${port} -t 2>/dev/null`, { encoding: 'utf8', timeout: 5000 });
78
+ return output
79
+ .trim()
80
+ .split('\n')
81
+ .map(s => parseInt(s, 10))
82
+ .filter(n => !isNaN(n) && n > 0 && n !== process.pid);
83
+ }
84
+ catch {
85
+ return [];
86
+ }
87
+ }
88
+ /**
89
+ * Acquire the PID lock. Call this before starting the server.
90
+ *
91
+ * 1. Reads existing lockfile and kills that process if alive
92
+ * 2. Checks for port conflicts from unmanaged processes
93
+ * 3. Writes current PID to lockfile
94
+ */
95
+ export function acquirePidLock(port, pidPath = DEFAULT_PID_PATH) {
96
+ const result = {
97
+ previousPid: null,
98
+ killedPrevious: false,
99
+ portConflictPids: [],
100
+ killedPortConflicts: false,
101
+ };
102
+ console.log('🔒 Acquiring PID lock...');
103
+ // Step 1: Check existing lockfile
104
+ if (existsSync(pidPath)) {
105
+ try {
106
+ const content = readFileSync(pidPath, 'utf8').trim();
107
+ const previousPid = parseInt(content, 10);
108
+ if (!isNaN(previousPid) && previousPid > 0) {
109
+ result.previousPid = previousPid;
110
+ if (isProcessAlive(previousPid)) {
111
+ console.log(` Found previous instance (pid ${previousPid}) from lockfile`);
112
+ result.killedPrevious = killProcess(previousPid, 'previous instance');
113
+ if (result.killedPrevious) {
114
+ console.log(` ✅ Previous instance killed`);
115
+ }
116
+ else {
117
+ console.warn(` ⚠ Could not kill previous instance (pid ${previousPid})`);
118
+ }
119
+ }
120
+ else {
121
+ console.log(` Stale lockfile found (pid ${previousPid} not running), cleaning up`);
122
+ }
123
+ }
124
+ }
125
+ catch (err) {
126
+ console.warn(` ⚠ Could not read lockfile: ${err}`);
127
+ }
128
+ }
129
+ // Step 2: Check for port conflicts (processes not in our lockfile)
130
+ const portPids = findPortPids(port);
131
+ if (portPids.length > 0) {
132
+ result.portConflictPids = portPids;
133
+ console.log(` Found ${portPids.length} process(es) on port ${port}: ${portPids.join(', ')}`);
134
+ let allKilled = true;
135
+ for (const pid of portPids) {
136
+ if (!killProcess(pid, `port conflict`)) {
137
+ allKilled = false;
138
+ console.warn(` ⚠ Could not kill port conflict (pid ${pid})`);
139
+ }
140
+ }
141
+ result.killedPortConflicts = allKilled;
142
+ if (allKilled && portPids.length > 0) {
143
+ console.log(` ✅ All port conflicts resolved`);
144
+ // Brief pause to let ports release
145
+ const waitUntil = Date.now() + 1000;
146
+ while (Date.now() < waitUntil) { /* spin */ }
147
+ }
148
+ }
149
+ // Step 3: Write current PID
150
+ try {
151
+ writeFileSync(pidPath, String(process.pid), 'utf8');
152
+ console.log(` ✅ PID lock acquired (pid ${process.pid}, lockfile ${pidPath})`);
153
+ }
154
+ catch (err) {
155
+ console.warn(` ⚠ Could not write lockfile: ${err}`);
156
+ }
157
+ return result;
158
+ }
159
+ /**
160
+ * Release the PID lock. Call this on shutdown.
161
+ * Only removes the lockfile if it still contains our PID (avoid race).
162
+ */
163
+ export function releasePidLock(pidPath = DEFAULT_PID_PATH) {
164
+ try {
165
+ if (existsSync(pidPath)) {
166
+ const content = readFileSync(pidPath, 'utf8').trim();
167
+ const lockPid = parseInt(content, 10);
168
+ if (lockPid === process.pid) {
169
+ unlinkSync(pidPath);
170
+ console.log(`🔓 PID lock released (pid ${process.pid})`);
171
+ }
172
+ // If PID doesn't match, a newer instance has taken over — don't delete
173
+ }
174
+ }
175
+ catch {
176
+ // Best effort cleanup
177
+ }
178
+ }
179
+ //# sourceMappingURL=pidlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pidlock.js","sourceRoot":"","sources":["../src/pidlock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ export interface PolicyConfig {
2
+ /** Global quiet hours — suppresses all watchdog/board-health actions */
3
+ quietHours: {
4
+ enabled: boolean;
5
+ startHour: number;
6
+ endHour: number;
7
+ timezone: string;
8
+ };
9
+ /** Idle nudge: warn/escalate agents with no activity */
10
+ idleNudge: {
11
+ enabled: boolean;
12
+ warnMin: number;
13
+ escalateMin: number;
14
+ cooldownMin: number;
15
+ suppressRecentMin: number;
16
+ shipCooldownMin: number;
17
+ activeTaskMaxAgeMin: number;
18
+ excluded: string[];
19
+ };
20
+ /** Cadence watchdog: trio silence + stale working alerts */
21
+ cadenceWatchdog: {
22
+ enabled: boolean;
23
+ silenceMin: number;
24
+ workingStaleMin: number;
25
+ workingTaskMaxAgeMin: number;
26
+ alertCooldownMin: number;
27
+ };
28
+ /** Stale doing threshold (for health endpoint) */
29
+ staleDoingThresholdMin: number;
30
+ /** Mention rescue: nudge trio when Ryan mentions them and nobody responds */
31
+ mentionRescue: {
32
+ enabled: boolean;
33
+ delayMin: number;
34
+ cooldownMin: number;
35
+ globalCooldownMin: number;
36
+ };
37
+ /** Board health worker: automated board hygiene */
38
+ boardHealth: {
39
+ enabled: boolean;
40
+ intervalMs: number;
41
+ staleDoingThresholdMin: number;
42
+ suggestCloseThresholdMin: number;
43
+ rollbackWindowMs: number;
44
+ digestIntervalMs: number;
45
+ digestChannel: string;
46
+ dryRun: boolean;
47
+ maxActionsPerTick: number;
48
+ };
49
+ /** Ready-queue floor: ensure engineering agents always have specced tasks */
50
+ readyQueueFloor: {
51
+ enabled: boolean;
52
+ minReady: number;
53
+ agents: string[];
54
+ escalateAfterMin: number;
55
+ cooldownMin: number;
56
+ channel: string;
57
+ enforceBlock?: boolean;
58
+ };
59
+ /** Reflection automation nudges */
60
+ reflectionNudge: {
61
+ enabled: boolean;
62
+ postTaskDelayMin: number;
63
+ idleReflectionHours: number;
64
+ cooldownMin: number;
65
+ agents: string[];
66
+ channel: string;
67
+ roleCadenceHours: Record<string, number>;
68
+ excludeAgents?: string[];
69
+ nudgeNeverReflected?: boolean;
70
+ };
71
+ /** Working contract enforcement: hard gates instead of nudges */
72
+ workingContract: {
73
+ enabled: boolean;
74
+ /** Max minutes a task can stay in 'doing' with no status comment before auto-requeue */
75
+ staleAutoRequeueMin: number;
76
+ /** Minutes of grace after first warning before auto-requeue fires */
77
+ graceAfterWarningMin: number;
78
+ /** Require at least one reflection before claiming a new doing task (if overdue) */
79
+ reflectionGateOnClaim: boolean;
80
+ /** Agents subject to enforcement (empty = all active agents) */
81
+ agents: string[];
82
+ /** Channel for enforcement notifications */
83
+ channel: string;
84
+ /** Dry-run mode: log but don't actually requeue */
85
+ dryRun: boolean;
86
+ };
87
+ /** Insight:promoted listener — auto-create tasks from promoted insights */
88
+ insightListener: {
89
+ enabled: boolean;
90
+ autoCreateSeverities: string[];
91
+ defaultReviewer: string;
92
+ defaultEta: string;
93
+ clusterCooldownMs: number;
94
+ };
95
+ /** Escalation channels for different severity levels */
96
+ escalation: {
97
+ defaultChannel: string;
98
+ criticalChannel: string;
99
+ digestChannel: string;
100
+ };
101
+ /**
102
+ * Status heartbeat discipline: agents must post task comment updates
103
+ * during long work windows (>30m). Prevents stale-working false positives.
104
+ *
105
+ * Format: progress, confidence, ETA → task comment first, #general only if action-relevant.
106
+ */
107
+ statusHeartbeat: {
108
+ enabled: boolean;
109
+ intervalMin: number;
110
+ graceMin: number;
111
+ escalationChannel: string;
112
+ };
113
+ }
114
+ export declare const DEFAULT_POLICY: PolicyConfig;
115
+ declare class PolicyManager {
116
+ private config;
117
+ private filePath;
118
+ private loaded;
119
+ constructor();
120
+ /** Load policy from disk, then overlay env vars. Call once at startup. */
121
+ load(): PolicyConfig;
122
+ /** Get current policy (immutable copy) */
123
+ get(): PolicyConfig;
124
+ /** Patch policy at runtime — merges, validates, persists */
125
+ patch(update: DeepPartial<PolicyConfig>): PolicyConfig;
126
+ /** Reset to defaults + re-apply env */
127
+ reset(): PolicyConfig;
128
+ /** Get file path for display */
129
+ getFilePath(): string;
130
+ private persist;
131
+ private merge;
132
+ private applyEnvOverrides;
133
+ }
134
+ type DeepPartial<T> = {
135
+ [P in keyof T]?: T[P] extends Record<string, unknown> ? DeepPartial<T[P]> : T[P];
136
+ };
137
+ export declare const policyManager: PolicyManager;
138
+ export {};
139
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}