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,270 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Team Doctor — diagnostic checks for onboarding and ongoing health.
3
+ import { getDb } from './db.js';
4
+ import { DATA_DIR } from './config.js';
5
+ import { existsSync, readdirSync, statSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { homedir } from 'node:os';
8
+ /**
9
+ * Run all team doctor checks and return a diagnostic report.
10
+ * This is designed for onboarding (first-run) and ongoing health monitoring.
11
+ */
12
+ export function runTeamDoctor(opts) {
13
+ const checks = [];
14
+ // 1. Check: reflectt-node is running (implicit — if this code runs, the node is up)
15
+ checks.push({
16
+ name: 'node_running',
17
+ status: 'pass',
18
+ message: 'reflectt-node is running',
19
+ });
20
+ // 2. Check: SQLite database is accessible
21
+ checks.push(checkDatabase());
22
+ // 3. Check: agents are configured
23
+ checks.push(checkAgentsPresent());
24
+ // 4. Check: gateway connection
25
+ checks.push(checkGateway(opts?.gatewayUrl));
26
+ // 5. Check: model/LLM auth
27
+ checks.push(checkModelAuth(opts?.modelProvider));
28
+ // 6. Check: OpenClaw workspace bootstrap bloat (duplicate MEMORY.md/memory.md, oversized injected files)
29
+ checks.push(checkOpenClawBootstrap());
30
+ // 7. Check: at least one chat channel has messages (agents are communicating)
31
+ checks.push(checkChatActivity());
32
+ // Compute overall status
33
+ const hasFailure = checks.some(c => c.status === 'fail');
34
+ const hasWarn = checks.some(c => c.status === 'warn');
35
+ const overall = hasFailure ? 'fail' : hasWarn ? 'warn' : 'pass';
36
+ // Determine next action from first failing check
37
+ const firstFail = checks.find(c => c.status === 'fail');
38
+ const firstWarn = checks.find(c => c.status === 'warn');
39
+ const nextAction = firstFail?.fix || firstWarn?.fix;
40
+ return {
41
+ timestamp: Date.now(),
42
+ overall,
43
+ checks,
44
+ nextAction,
45
+ };
46
+ }
47
+ function checkDatabase() {
48
+ try {
49
+ const db = getDb();
50
+ const row = db.prepare('SELECT 1 as ok').get();
51
+ if (row?.ok === 1) {
52
+ return { name: 'database', status: 'pass', message: 'SQLite database is accessible' };
53
+ }
54
+ return { name: 'database', status: 'fail', message: 'SQLite query returned unexpected result', fix: 'Check ~/.reflectt/data/ permissions' };
55
+ }
56
+ catch (err) {
57
+ return { name: 'database', status: 'fail', message: `SQLite error: ${String(err)}`, fix: 'Ensure better-sqlite3 is installed and ~/.reflectt/data/ is writable' };
58
+ }
59
+ }
60
+ function checkAgentsPresent() {
61
+ try {
62
+ const db = getDb();
63
+ // Check if any agents have posted messages (proxy for "agents are active")
64
+ const row = db.prepare('SELECT COUNT(DISTINCT "from") as count FROM chat_messages').get();
65
+ const chatAgentCount = row?.count ?? 0;
66
+ // Also check filesystem for agent dirs (avoids bootstrap paradox:
67
+ // agents created by starter team won't have chat messages yet)
68
+ let dirAgentCount = 0;
69
+ try {
70
+ const agentsDir = join(DATA_DIR, 'agents');
71
+ const entries = readdirSync(agentsDir);
72
+ dirAgentCount = entries.filter(name => {
73
+ try {
74
+ return statSync(join(agentsDir, name)).isDirectory();
75
+ }
76
+ catch {
77
+ return false;
78
+ }
79
+ }).length;
80
+ }
81
+ catch {
82
+ // agents dir may not exist yet — that's fine
83
+ }
84
+ const agentCount = Math.max(chatAgentCount, dirAgentCount);
85
+ const source = chatAgentCount >= dirAgentCount ? 'chat history' : 'agent directories';
86
+ if (agentCount >= 2) {
87
+ return { name: 'agents_present', status: 'pass', message: `${agentCount} agents detected (via ${source})` };
88
+ }
89
+ if (agentCount === 1) {
90
+ return {
91
+ name: 'agents_present',
92
+ status: 'warn',
93
+ message: `Only 1 agent detected (via ${source}) — teams work best with 2+`,
94
+ fix: 'Add another agent workspace or use the starter team template',
95
+ };
96
+ }
97
+ return {
98
+ name: 'agents_present',
99
+ status: 'fail',
100
+ message: 'No agents detected (checked chat history + agent directories)',
101
+ fix: 'Run the starter team template to create default agents, or manually create agent workspaces',
102
+ };
103
+ }
104
+ catch {
105
+ return { name: 'agents_present', status: 'warn', message: 'Could not check for agents (DB not ready)', fix: 'Start the node and let it initialize' };
106
+ }
107
+ }
108
+ function checkGateway(gatewayUrl) {
109
+ // Check if gateway env vars / config exist
110
+ const url = gatewayUrl || process.env.OPENCLAW_GATEWAY_URL || process.env.CLAWD_GATEWAY_URL;
111
+ const token = process.env.OPENCLAW_GATEWAY_TOKEN || process.env.CLAWD_GATEWAY_TOKEN;
112
+ if (!url) {
113
+ return {
114
+ name: 'gateway',
115
+ status: 'fail',
116
+ message: 'No gateway URL configured',
117
+ fix: 'Set OPENCLAW_GATEWAY_URL in .env or run `openclaw setup`',
118
+ };
119
+ }
120
+ if (!token) {
121
+ return {
122
+ name: 'gateway',
123
+ status: 'warn',
124
+ message: `Gateway URL set (${url}) but no token configured`,
125
+ fix: 'Set OPENCLAW_GATEWAY_TOKEN in .env (find it in ~/.openclaw/openclaw.json)',
126
+ };
127
+ }
128
+ return {
129
+ name: 'gateway',
130
+ status: 'pass',
131
+ message: `Gateway configured: ${url}`,
132
+ };
133
+ }
134
+ function checkModelAuth(provider) {
135
+ // Check for common LLM provider API keys
136
+ const providers = [
137
+ { name: 'Anthropic', keys: ['ANTHROPIC_API_KEY'] },
138
+ { name: 'OpenAI', keys: ['OPENAI_API_KEY'] },
139
+ { name: 'Google', keys: ['GOOGLE_API_KEY', 'GEMINI_API_KEY'] },
140
+ ];
141
+ const configured = [];
142
+ for (const p of providers) {
143
+ if (p.keys.some(k => process.env[k]?.trim())) {
144
+ configured.push(p.name);
145
+ }
146
+ }
147
+ if (configured.length === 0) {
148
+ return {
149
+ name: 'model_auth',
150
+ status: 'fail',
151
+ message: 'No LLM API keys found (checked ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY)',
152
+ fix: 'Add at least one LLM API key to your .env file (e.g. ANTHROPIC_API_KEY=sk-...)',
153
+ };
154
+ }
155
+ return {
156
+ name: 'model_auth',
157
+ status: 'pass',
158
+ message: `LLM providers configured: ${configured.join(', ')}`,
159
+ };
160
+ }
161
+ function checkOpenClawBootstrap() {
162
+ try {
163
+ const stateDir = process.env.OPENCLAW_STATE_DIR || join(homedir(), '.openclaw');
164
+ const candidates = [];
165
+ const mainWorkspace = join(stateDir, 'workspace');
166
+ if (existsSync(mainWorkspace))
167
+ candidates.push(mainWorkspace);
168
+ // workspace-<agent>
169
+ try {
170
+ for (const name of readdirSync(stateDir)) {
171
+ if (!name.startsWith('workspace-'))
172
+ continue;
173
+ const full = join(stateDir, name);
174
+ try {
175
+ if (statSync(full).isDirectory())
176
+ candidates.push(full);
177
+ }
178
+ catch {
179
+ // ignore
180
+ }
181
+ }
182
+ }
183
+ catch {
184
+ // ignore
185
+ }
186
+ if (candidates.length === 0) {
187
+ return {
188
+ name: 'openclaw_bootstrap',
189
+ status: 'warn',
190
+ message: `No OpenClaw workspaces found under ${stateDir}`,
191
+ fix: 'If OpenClaw is installed, ensure OPENCLAW_STATE_DIR is set correctly (or create ~/.openclaw/workspace)',
192
+ };
193
+ }
194
+ const bootstrapFiles = ['AGENTS.md', 'SOUL.md', 'TOOLS.md', 'IDENTITY.md', 'USER.md', 'HEARTBEAT.md', 'BOOTSTRAP.md', 'MEMORY.md', 'memory.md'];
195
+ const dupes = [];
196
+ const large = [];
197
+ for (const ws of candidates) {
198
+ const memA = join(ws, 'MEMORY.md');
199
+ const memB = join(ws, 'memory.md');
200
+ if (existsSync(memA) && existsSync(memB)) {
201
+ dupes.push({ ws, a: memA, b: memB });
202
+ }
203
+ for (const f of bootstrapFiles) {
204
+ const p = join(ws, f);
205
+ if (!existsSync(p))
206
+ continue;
207
+ try {
208
+ const bytes = statSync(p).size;
209
+ // Heuristic: once any injected bootstrap file grows past ~8KB, it starts to materially bloat prompt tokens.
210
+ if (bytes > 8000)
211
+ large.push({ ws, file: f, bytes });
212
+ }
213
+ catch {
214
+ // ignore
215
+ }
216
+ }
217
+ }
218
+ if (dupes.length === 0 && large.length === 0) {
219
+ return {
220
+ name: 'openclaw_bootstrap',
221
+ status: 'pass',
222
+ message: `OpenClaw bootstrap looks sane across ${candidates.length} workspace(s)`,
223
+ };
224
+ }
225
+ const parts = [];
226
+ if (dupes.length)
227
+ parts.push(`${dupes.length} workspace(s) have both MEMORY.md + memory.md (injected twice)`);
228
+ if (large.length) {
229
+ const worst = large.sort((a, b) => b.bytes - a.bytes)[0];
230
+ parts.push(`largest injected bootstrap file: ${worst.file} (${worst.bytes} bytes) in ${worst.ws}`);
231
+ }
232
+ return {
233
+ name: 'openclaw_bootstrap',
234
+ status: 'warn',
235
+ message: `OpenClaw bootstrap bloat risk: ${parts.join('; ')}`,
236
+ fix: 'Delete one of MEMORY.md/memory.md (keep only one), and keep injected bootstrap files concise (esp. TOOLS.md, AGENTS.md, MEMORY.md). Use daily notes in memory/YYYY-MM-DD.md instead of growing a root memory file.',
237
+ };
238
+ }
239
+ catch (err) {
240
+ return {
241
+ name: 'openclaw_bootstrap',
242
+ status: 'warn',
243
+ message: `Could not check OpenClaw bootstrap files: ${String(err)}`,
244
+ fix: 'Set OPENCLAW_STATE_DIR correctly and ensure the process can read workspace bootstrap files',
245
+ };
246
+ }
247
+ }
248
+ function checkChatActivity() {
249
+ try {
250
+ const db = getDb();
251
+ const row = db.prepare('SELECT COUNT(*) as count FROM chat_messages').get();
252
+ const count = row?.count ?? 0;
253
+ if (count > 10) {
254
+ return { name: 'chat_activity', status: 'pass', message: `${count} messages in chat history` };
255
+ }
256
+ if (count > 0) {
257
+ return { name: 'chat_activity', status: 'warn', message: `Only ${count} messages — agents may not be active yet`, fix: 'Send a test message via the chat API or wait for agents to start their heartbeats' };
258
+ }
259
+ return {
260
+ name: 'chat_activity',
261
+ status: 'warn',
262
+ message: 'No chat messages yet',
263
+ fix: 'This is normal on first run — agents will start communicating once configured and running',
264
+ };
265
+ }
266
+ catch {
267
+ return { name: 'chat_activity', status: 'warn', message: 'Could not check chat activity' };
268
+ }
269
+ }
270
+ //# sourceMappingURL=team-doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-doctor.js","sourceRoot":"","sources":["../src/team-doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ export interface TeamPulseConfig {
2
+ enabled: boolean;
3
+ /** Interval between pulses in minutes */
4
+ intervalMin: number;
5
+ /** Channel to post pulse to */
6
+ channel: string;
7
+ /** Active hours (24h format): only post during these hours */
8
+ activeHoursStart: number;
9
+ activeHoursEnd: number;
10
+ /** Agents to include in pulse */
11
+ agents: string[];
12
+ /** Minimum doing/todo tasks to suppress "idle team" warnings */
13
+ minActiveThreshold: number;
14
+ }
15
+ export interface AgentPulseStatus {
16
+ agent: string;
17
+ doingCount: number;
18
+ doingTitles: string[];
19
+ todoCount: number;
20
+ recentShips: number;
21
+ lastActivity: number | null;
22
+ status: 'active' | 'idle' | 'blocked';
23
+ }
24
+ export interface TeamPulseSnapshot {
25
+ timestamp: number;
26
+ agents: AgentPulseStatus[];
27
+ totalDoing: number;
28
+ totalTodo: number;
29
+ totalRecentShips: number;
30
+ teamStatus: 'healthy' | 'slow' | 'stalled';
31
+ queueDepth: number;
32
+ }
33
+ export declare function configureTeamPulse(partial: Partial<TeamPulseConfig>): void;
34
+ export declare function getTeamPulseConfig(): TeamPulseConfig;
35
+ /**
36
+ * Compute the current team pulse snapshot.
37
+ */
38
+ export declare function computeTeamPulse(now?: number): TeamPulseSnapshot;
39
+ /**
40
+ * Format a pulse snapshot into a readable message.
41
+ */
42
+ export declare function formatPulseMessage(pulse: TeamPulseSnapshot): string;
43
+ /**
44
+ * Post a team pulse to the configured channel.
45
+ */
46
+ export declare function postTeamPulse(now?: number): Promise<TeamPulseSnapshot>;
47
+ export declare function startTeamPulse(): void;
48
+ export declare function stopTeamPulse(): void;
49
+ export declare function getTeamPulseHistory(): TeamPulseSnapshot[];
50
+ export declare function getLastPulseAt(): number;
51
+ export declare function _resetTeamPulse(): void;
52
+ //# sourceMappingURL=team-pulse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-pulse.d.ts","sourceRoot":"","sources":["../src/team-pulse.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,8DAA8D;IAC9D,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,iCAAiC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,gEAAgE;IAChE,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;CACtC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,gBAAgB,EAAE,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;IAC1C,UAAU,EAAE,MAAM,CAAA;CACnB;AAqBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAE1E;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,SAAa,GAAG,iBAAiB,CAiEpE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAqBnE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,SAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBhF;AASD,wBAAgB,cAAc,IAAI,IAAI,CAkBrC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,mBAAmB,IAAI,iBAAiB,EAAE,CAEzD;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAID,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
@@ -0,0 +1,176 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Team Pulse — Proactive periodic team status broadcast
3
+ //
4
+ // Addresses the trust gap: human confidence drops when autonomous activity
5
+ // isn't visibly progressing. Posts a structured status summary at regular
6
+ // intervals so stakeholders see real work without needing to ask.
7
+ //
8
+ // Frequency: configurable (default: every 2 hours during active hours)
9
+ // Channel: configurable (default: ops, with option for general)
10
+ // Content: per-agent lane status, recent ships, blockers, queue depth
11
+ import { taskManager } from './tasks.js';
12
+ import { routeMessage } from './messageRouter.js';
13
+ // ── State ──
14
+ let config = {
15
+ enabled: true,
16
+ intervalMin: 120, // 2 hours
17
+ channel: 'ops',
18
+ activeHoursStart: 8,
19
+ activeHoursEnd: 22,
20
+ agents: ['link', 'sage', 'kai', 'pixel', 'echo', 'scout', 'harmony'],
21
+ minActiveThreshold: 2,
22
+ };
23
+ let timer = null;
24
+ let lastPulseAt = 0;
25
+ let pulseHistory = [];
26
+ const MAX_PULSE_HISTORY = 48; // 4 days at 2h intervals
27
+ // ── Config ──
28
+ export function configureTeamPulse(partial) {
29
+ config = { ...config, ...partial };
30
+ }
31
+ export function getTeamPulseConfig() {
32
+ return { ...config };
33
+ }
34
+ // ── Core ──
35
+ /**
36
+ * Compute the current team pulse snapshot.
37
+ */
38
+ export function computeTeamPulse(now = Date.now()) {
39
+ const windowMs = config.intervalMin * 60_000;
40
+ const since = now - windowMs;
41
+ const agentStatuses = config.agents.map(agent => {
42
+ const doingTasks = taskManager.listTasks({ status: 'doing', assignee: agent });
43
+ const todoTasks = taskManager.listTasks({ status: 'todo', assignee: agent });
44
+ // Count tasks that moved to done within the pulse window
45
+ const allTasks = taskManager.listTasks({ assignee: agent });
46
+ const recentShips = allTasks.filter(t => t.status === 'done' && t.updatedAt >= since).length;
47
+ // Most recent task activity
48
+ const allAgentTasks = [...doingTasks, ...todoTasks, ...allTasks];
49
+ const lastActivity = allAgentTasks.length > 0
50
+ ? Math.max(...allAgentTasks.map(t => t.updatedAt))
51
+ : null;
52
+ // Determine status
53
+ let status = 'idle';
54
+ if (doingTasks.length > 0) {
55
+ status = 'active';
56
+ }
57
+ // Check for blocked
58
+ const blockedTasks = doingTasks.filter(t => t.status === 'doing' && lastActivity && (now - lastActivity > 2 * 60 * 60_000));
59
+ if (blockedTasks.length > 0 && doingTasks.length > 0) {
60
+ status = 'blocked';
61
+ }
62
+ return {
63
+ agent,
64
+ doingCount: doingTasks.length,
65
+ doingTitles: doingTasks.slice(0, 3).map(t => t.title.slice(0, 60)),
66
+ todoCount: todoTasks.length,
67
+ recentShips,
68
+ lastActivity,
69
+ status,
70
+ };
71
+ });
72
+ const totalDoing = agentStatuses.reduce((sum, a) => sum + a.doingCount, 0);
73
+ const totalTodo = agentStatuses.reduce((sum, a) => sum + a.todoCount, 0);
74
+ const totalRecentShips = agentStatuses.reduce((sum, a) => sum + a.recentShips, 0);
75
+ const activeAgents = agentStatuses.filter(a => a.status === 'active').length;
76
+ let teamStatus = 'healthy';
77
+ if (totalDoing === 0 && totalTodo === 0) {
78
+ teamStatus = 'stalled';
79
+ }
80
+ else if (activeAgents < config.minActiveThreshold) {
81
+ teamStatus = 'slow';
82
+ }
83
+ return {
84
+ timestamp: now,
85
+ agents: agentStatuses,
86
+ totalDoing,
87
+ totalTodo,
88
+ totalRecentShips,
89
+ teamStatus,
90
+ queueDepth: totalTodo,
91
+ };
92
+ }
93
+ /**
94
+ * Format a pulse snapshot into a readable message.
95
+ */
96
+ export function formatPulseMessage(pulse) {
97
+ const statusEmoji = pulse.teamStatus === 'healthy' ? '🟢' : pulse.teamStatus === 'slow' ? '🟡' : '🔴';
98
+ const lines = [];
99
+ lines.push(`${statusEmoji} **Team Pulse** — ${pulse.totalDoing} active, ${pulse.totalTodo} queued, ${pulse.totalRecentShips} shipped recently`);
100
+ lines.push('');
101
+ for (const agent of pulse.agents) {
102
+ if (agent.doingCount === 0 && agent.todoCount === 0 && agent.recentShips === 0)
103
+ continue;
104
+ const statusIcon = agent.status === 'active' ? '🔵' : agent.status === 'blocked' ? '🔴' : '⚪';
105
+ const doing = agent.doingCount > 0 ? agent.doingTitles.map(t => `_${t}_`).join(', ') : 'idle';
106
+ lines.push(`${statusIcon} **${agent.agent}**: ${doing} (${agent.todoCount} queued, ${agent.recentShips} shipped)`);
107
+ }
108
+ if (pulse.teamStatus === 'stalled') {
109
+ lines.push('');
110
+ lines.push('⚠️ No active or queued work detected.');
111
+ }
112
+ return lines.join('\n');
113
+ }
114
+ /**
115
+ * Post a team pulse to the configured channel.
116
+ */
117
+ export async function postTeamPulse(now = Date.now()) {
118
+ const pulse = computeTeamPulse(now);
119
+ const message = formatPulseMessage(pulse);
120
+ await routeMessage({
121
+ from: 'system',
122
+ content: message,
123
+ category: 'status-update',
124
+ severity: pulse.teamStatus === 'stalled' ? 'warning' : 'info',
125
+ forceChannel: config.channel,
126
+ });
127
+ lastPulseAt = now;
128
+ pulseHistory.push(pulse);
129
+ if (pulseHistory.length > MAX_PULSE_HISTORY) {
130
+ pulseHistory.splice(0, pulseHistory.length - MAX_PULSE_HISTORY);
131
+ }
132
+ return pulse;
133
+ }
134
+ // ── Lifecycle ──
135
+ function isActiveHours(now = Date.now()) {
136
+ const hour = new Date(now).getHours();
137
+ return hour >= config.activeHoursStart && hour < config.activeHoursEnd;
138
+ }
139
+ export function startTeamPulse() {
140
+ if (!config.enabled)
141
+ return;
142
+ if (timer)
143
+ return;
144
+ const checkIntervalMs = 5 * 60_000; // Check every 5 minutes
145
+ timer = setInterval(() => {
146
+ if (!isActiveHours())
147
+ return;
148
+ const now = Date.now();
149
+ const intervalMs = config.intervalMin * 60_000;
150
+ if (now - lastPulseAt >= intervalMs) {
151
+ void postTeamPulse(now).catch(err => {
152
+ console.error('[TeamPulse] Failed to post pulse:', err);
153
+ });
154
+ }
155
+ }, checkIntervalMs);
156
+ timer.unref();
157
+ console.log(`[TeamPulse] Started (every ${config.intervalMin}m, ${config.activeHoursStart}-${config.activeHoursEnd}h)`);
158
+ }
159
+ export function stopTeamPulse() {
160
+ if (timer) {
161
+ clearInterval(timer);
162
+ timer = null;
163
+ }
164
+ }
165
+ export function getTeamPulseHistory() {
166
+ return [...pulseHistory];
167
+ }
168
+ export function getLastPulseAt() {
169
+ return lastPulseAt;
170
+ }
171
+ // ── Test helpers ──
172
+ export function _resetTeamPulse() {
173
+ lastPulseAt = 0;
174
+ pulseHistory = [];
175
+ }
176
+ //# sourceMappingURL=team-pulse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-pulse.js","sourceRoot":"","sources":["../src/team-pulse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ export interface TelemetryConfig {
2
+ enabled: boolean;
3
+ cloudUrl: string;
4
+ hostId: string;
5
+ reportIntervalMs: number;
6
+ }
7
+ interface EndpointMetric {
8
+ path: string;
9
+ method: string;
10
+ hits: number;
11
+ errors: number;
12
+ totalDurationMs: number;
13
+ avgDurationMs: number;
14
+ p95DurationMs: number;
15
+ lastHit: number;
16
+ }
17
+ interface ErrorEntry {
18
+ type: string;
19
+ endpoint?: string;
20
+ count: number;
21
+ lastSeen: number;
22
+ }
23
+ export interface TelemetrySnapshot {
24
+ version: string;
25
+ hostId: string;
26
+ timestamp: number;
27
+ uptime: number;
28
+ period: {
29
+ startMs: number;
30
+ endMs: number;
31
+ };
32
+ team: {
33
+ agentCount: number;
34
+ activeAgentCount: number;
35
+ };
36
+ tasks: {
37
+ total: number;
38
+ created: number;
39
+ completed: number;
40
+ avgCycleTimeMs: number;
41
+ byStatus: Record<string, number>;
42
+ };
43
+ endpoints: EndpointMetric[];
44
+ features: Record<string, number>;
45
+ errors: ErrorEntry[];
46
+ health: {
47
+ uptimeMs: number;
48
+ avgResponseTimeMs: number;
49
+ errorRate: number;
50
+ requestsTotal: number;
51
+ };
52
+ }
53
+ /** Initialize telemetry with config */
54
+ export declare function initTelemetry(cfg: Partial<TelemetryConfig>): void;
55
+ /** Stop telemetry reporting */
56
+ export declare function stopTelemetry(): void;
57
+ /** Track an HTTP request (call from onResponse hook) */
58
+ export declare function trackRequest(method: string, path: string, statusCode: number, durationMs: number): void;
59
+ /** Track an error (no PII — just type + endpoint) */
60
+ export declare function trackError(type: string, endpoint?: string): void;
61
+ /** Track a task event */
62
+ export declare function trackTaskEvent(event: 'created' | 'completed'): void;
63
+ /** Get current telemetry snapshot (also used by GET /telemetry endpoint) */
64
+ export declare function getSnapshot(): TelemetrySnapshot;
65
+ /** Check if telemetry is enabled */
66
+ export declare function isTelemetryEnabled(): boolean;
67
+ /** Get telemetry config (safe — no secrets) */
68
+ export declare function getTelemetryConfig(): {
69
+ enabled: boolean;
70
+ cloudUrl: string;
71
+ reportIntervalMs: number;
72
+ };
73
+ export {};
74
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAA;QAClB,gBAAgB,EAAE,MAAM,CAAA;KACzB,CAAA;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,MAAM,CAAA;QACjB,cAAc,EAAE,MAAM,CAAA;QACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACjC,CAAA;IACD,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAA;QAChB,iBAAiB,EAAE,MAAM,CAAA;QACzB,SAAS,EAAE,MAAM,CAAA;QACjB,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AA2BD,uCAAuC;AACvC,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAmBjE;AAED,+BAA+B;AAC/B,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAmBvG;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAShE;AAED,yBAAyB;AACzB,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,IAAI,CAInE;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,IAAI,iBAAiB,CA6E/C;AAED,oCAAoC;AACpC,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,+CAA+C;AAC/C,wBAAgB,kBAAkB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAMrG"}