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 @@
1
+ {"version":3,"file":"shared-workspace-api.js","sourceRoot":"","sources":["../src/shared-workspace-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Shipped-Artifact Auto-Heartbeat
3
+ *
4
+ * Emits a compact status update to #general when a task transitions to
5
+ * validating or done AND has an artifact_path in metadata.
6
+ *
7
+ * Payload format (sage-validated contract):
8
+ * [SHIP] <task_id> | shipped:<ref> | next:<eta> | review:@<reviewer> | by:@<owner>
9
+ *
10
+ * Suppression rules:
11
+ * 1. Dedup window (30m) — same task won't re-fire within 30 minutes
12
+ * 2. Reviewer override — if reviewer posts in #general within 5m of the
13
+ * trigger, the auto-heartbeat is suppressed (they wrote their own)
14
+ * 3. Missing/invalid artifact — silently skipped with warning log
15
+ *
16
+ * Failure modes (documented per done criteria):
17
+ * - Duplicate spam: dedup map with 30m TTL prevents double-posts on rapid
18
+ * status flips (e.g., validating→blocked→validating)
19
+ * - Missing artifact link: task without metadata.artifact_path is skipped;
20
+ * logged at warn level for ops visibility
21
+ * - Reviewer already posted: 5m look-back in #general for reviewer messages
22
+ * mentioning the task ID suppresses the auto-heartbeat
23
+ * - Chat budget exceeded: respects existing noise-budget in chat.sendMessage;
24
+ * if budget blocks the message, it's logged but not retried
25
+ *
26
+ * Task: task-1771691652369-2c2y0uknl
27
+ * Design: scout (pilot spec) → Implementation: link
28
+ */
29
+ import { type Event } from './events.js';
30
+ import type { Task } from './types.js';
31
+ export interface ShippedHeartbeatPayload {
32
+ taskId: string;
33
+ shipped: string;
34
+ next: string;
35
+ reviewer: string;
36
+ owner: string;
37
+ lane: 'ops' | 'product' | 'comms' | 'engineering' | 'unknown';
38
+ }
39
+ export interface HeartbeatStats {
40
+ totalEmitted: number;
41
+ totalSuppressed: number;
42
+ suppressionReasons: Record<string, number>;
43
+ lastEmittedAt: number | null;
44
+ }
45
+ /**
46
+ * Build a compact heartbeat payload from a task.
47
+ */
48
+ export declare function buildPayload(task: Task): ShippedHeartbeatPayload | null;
49
+ /**
50
+ * Format the canonical compact message.
51
+ *
52
+ * Examples:
53
+ * [SHIP] task-abc123 | shipped:process/spec.md | next:pending review | review:@sage | by:@scout
54
+ * [SHIP] task-def456 | shipped:src/feature.ts | next:done | review:@kai | by:@link
55
+ * [SHIP] task-ghi789 | shipped:docs/runbook.md | next:~2h | review:@pixel | by:@echo
56
+ */
57
+ export declare function formatMessage(payload: ShippedHeartbeatPayload): string;
58
+ /**
59
+ * Infer the task lane from metadata, tags, or title keywords.
60
+ */
61
+ declare function inferLane(task: Task): ShippedHeartbeatPayload['lane'];
62
+ /**
63
+ * Check dedup window — returns true if this task was already emitted recently.
64
+ */
65
+ declare function isDuplicate(taskId: string): boolean;
66
+ /**
67
+ * Check if reviewer already posted about this task in #general recently.
68
+ * Returns true if reviewer override should suppress the auto-heartbeat.
69
+ */
70
+ declare function isReviewerOverride(task: Task): boolean;
71
+ /**
72
+ * Validate artifact_path is under process/ (canonical location).
73
+ */
74
+ declare function isValidArtifactPath(artifactPath: string): boolean;
75
+ declare function handleTaskEvent(event: Event): Promise<void>;
76
+ export declare function startShippedHeartbeat(): void;
77
+ export declare function stopShippedHeartbeat(): void;
78
+ export declare function getShippedHeartbeatStats(): HeartbeatStats;
79
+ export declare const _testing: {
80
+ handleTaskEvent: typeof handleTaskEvent;
81
+ isDuplicate: typeof isDuplicate;
82
+ isReviewerOverride: typeof isReviewerOverride;
83
+ isValidArtifactPath: typeof isValidArtifactPath;
84
+ inferLane: typeof inferLane;
85
+ dedupMap: Map<string, number>;
86
+ stats: HeartbeatStats;
87
+ DEDUP_WINDOW_MS: number;
88
+ REVIEWER_OVERRIDE_WINDOW_MS: number;
89
+ };
90
+ export {};
91
+ //# sourceMappingURL=shipped-heartbeat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shipped-heartbeat.d.ts","sourceRoot":"","sources":["../src/shipped-heartbeat.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAY,KAAK,KAAK,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AA4BtC,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,CAAA;CAC9D;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAkBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,uBAAuB,GAAG,IAAI,CAmBvE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAEtE;AAED;;GAEG;AACH,iBAAS,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAiB9D;AAID;;GAEG;AACH,iBAAS,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAI5C;AAED;;;GAGG;AACH,iBAAS,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAc/C;AAED;;GAEG;AACH,iBAAS,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAK1D;AAID,iBAAe,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAyF1D;AAeD,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAQ3C;AAED,wBAAgB,wBAAwB,IAAI,cAAc,CAEzD;AAID,eAAO,MAAM,QAAQ;;;;;;;;;;CAUpB,CAAA"}
@@ -0,0 +1,272 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) Reflectt AI
3
+ /**
4
+ * Shipped-Artifact Auto-Heartbeat
5
+ *
6
+ * Emits a compact status update to #general when a task transitions to
7
+ * validating or done AND has an artifact_path in metadata.
8
+ *
9
+ * Payload format (sage-validated contract):
10
+ * [SHIP] <task_id> | shipped:<ref> | next:<eta> | review:@<reviewer> | by:@<owner>
11
+ *
12
+ * Suppression rules:
13
+ * 1. Dedup window (30m) — same task won't re-fire within 30 minutes
14
+ * 2. Reviewer override — if reviewer posts in #general within 5m of the
15
+ * trigger, the auto-heartbeat is suppressed (they wrote their own)
16
+ * 3. Missing/invalid artifact — silently skipped with warning log
17
+ *
18
+ * Failure modes (documented per done criteria):
19
+ * - Duplicate spam: dedup map with 30m TTL prevents double-posts on rapid
20
+ * status flips (e.g., validating→blocked→validating)
21
+ * - Missing artifact link: task without metadata.artifact_path is skipped;
22
+ * logged at warn level for ops visibility
23
+ * - Reviewer already posted: 5m look-back in #general for reviewer messages
24
+ * mentioning the task ID suppresses the auto-heartbeat
25
+ * - Chat budget exceeded: respects existing noise-budget in chat.sendMessage;
26
+ * if budget blocks the message, it's logged but not retried
27
+ *
28
+ * Task: task-1771691652369-2c2y0uknl
29
+ * Design: scout (pilot spec) → Implementation: link
30
+ */
31
+ import { eventBus } from './events.js';
32
+ import { chatManager } from './chat.js';
33
+ // ── Config ──
34
+ const LISTENER_ID = 'shipped-heartbeat';
35
+ /** Dedup window in ms (30 minutes) */
36
+ const DEDUP_WINDOW_MS = 30 * 60 * 1000;
37
+ /** Look-back window for reviewer override check (5 minutes) */
38
+ const REVIEWER_OVERRIDE_WINDOW_MS = 5 * 60 * 1000;
39
+ /** Target channel for heartbeat posts */
40
+ const TARGET_CHANNEL = 'general';
41
+ /** Statuses that trigger the heartbeat */
42
+ const TRIGGER_STATUSES = new Set(['validating', 'done']);
43
+ // ── State ──
44
+ /** Map of taskId → last emit timestamp for dedup */
45
+ const dedupMap = new Map();
46
+ /** Cleanup interval handle */
47
+ let cleanupInterval = null;
48
+ // ── Telemetry ──
49
+ const stats = {
50
+ totalEmitted: 0,
51
+ totalSuppressed: 0,
52
+ suppressionReasons: {},
53
+ lastEmittedAt: null,
54
+ };
55
+ function recordSuppression(reason) {
56
+ stats.totalSuppressed++;
57
+ stats.suppressionReasons[reason] = (stats.suppressionReasons[reason] || 0) + 1;
58
+ }
59
+ // ── Core Logic ──
60
+ /**
61
+ * Build a compact heartbeat payload from a task.
62
+ */
63
+ export function buildPayload(task) {
64
+ const artifactPath = task.metadata?.artifact_path;
65
+ if (!artifactPath || typeof artifactPath !== 'string') {
66
+ return null;
67
+ }
68
+ const lane = inferLane(task);
69
+ const eta = task.status === 'done'
70
+ ? 'done'
71
+ : task.metadata?.eta ?? 'pending review';
72
+ return {
73
+ taskId: task.id,
74
+ shipped: artifactPath,
75
+ next: eta,
76
+ reviewer: task.reviewer ? `@${task.reviewer}` : 'none',
77
+ owner: task.assignee ? `@${task.assignee}` : 'unknown',
78
+ lane,
79
+ };
80
+ }
81
+ /**
82
+ * Format the canonical compact message.
83
+ *
84
+ * Examples:
85
+ * [SHIP] task-abc123 | shipped:process/spec.md | next:pending review | review:@sage | by:@scout
86
+ * [SHIP] task-def456 | shipped:src/feature.ts | next:done | review:@kai | by:@link
87
+ * [SHIP] task-ghi789 | shipped:docs/runbook.md | next:~2h | review:@pixel | by:@echo
88
+ */
89
+ export function formatMessage(payload) {
90
+ return `[SHIP] ${payload.taskId} | shipped:${payload.shipped} | next:${payload.next} | review:${payload.reviewer} | by:${payload.owner}`;
91
+ }
92
+ /**
93
+ * Infer the task lane from metadata, tags, or title keywords.
94
+ */
95
+ function inferLane(task) {
96
+ const meta = task.metadata;
97
+ const roleType = meta?.role_type ?? '';
98
+ const tags = task.tags ?? [];
99
+ const title = (task.title ?? '').toLowerCase();
100
+ if (roleType.includes('ops') || tags.includes('ops'))
101
+ return 'ops';
102
+ if (roleType.includes('product') || tags.includes('product'))
103
+ return 'product';
104
+ if (roleType.includes('comms') || tags.includes('comms'))
105
+ return 'comms';
106
+ if (tags.includes('engineering') || tags.includes('dev'))
107
+ return 'engineering';
108
+ // Fallback heuristics from title
109
+ if (title.includes('deploy') || title.includes('infra') || title.includes('ci'))
110
+ return 'ops';
111
+ if (title.includes('design') || title.includes('spec') || title.includes('feature'))
112
+ return 'product';
113
+ if (title.includes('announce') || title.includes('blog') || title.includes('docs'))
114
+ return 'comms';
115
+ return 'unknown';
116
+ }
117
+ // ── Suppression Checks ──
118
+ /**
119
+ * Check dedup window — returns true if this task was already emitted recently.
120
+ */
121
+ function isDuplicate(taskId) {
122
+ const lastEmit = dedupMap.get(taskId);
123
+ if (!lastEmit)
124
+ return false;
125
+ return (Date.now() - lastEmit) < DEDUP_WINDOW_MS;
126
+ }
127
+ /**
128
+ * Check if reviewer already posted about this task in #general recently.
129
+ * Returns true if reviewer override should suppress the auto-heartbeat.
130
+ */
131
+ function isReviewerOverride(task) {
132
+ if (!task.reviewer)
133
+ return false;
134
+ const cutoff = Date.now() - REVIEWER_OVERRIDE_WINDOW_MS;
135
+ const recentMessages = chatManager.getMessages({
136
+ channel: TARGET_CHANNEL,
137
+ since: cutoff,
138
+ limit: 20,
139
+ });
140
+ return recentMessages.some(msg => msg.from === task.reviewer &&
141
+ msg.content.includes(task.id));
142
+ }
143
+ /**
144
+ * Validate artifact_path is under process/ (canonical location).
145
+ */
146
+ function isValidArtifactPath(artifactPath) {
147
+ // Accept process/ paths and src/ paths (code artifacts)
148
+ return artifactPath.startsWith('process/') ||
149
+ artifactPath.startsWith('src/') ||
150
+ artifactPath.startsWith('docs/');
151
+ }
152
+ // ── Event Handler ──
153
+ async function handleTaskEvent(event) {
154
+ if (event.type !== 'task_updated')
155
+ return;
156
+ const task = event.data;
157
+ if (!task?.status || !task?.id)
158
+ return;
159
+ // Only trigger on validating/done transitions
160
+ if (!TRIGGER_STATUSES.has(task.status))
161
+ return;
162
+ const artifactPath = task.metadata?.artifact_path;
163
+ if (!artifactPath || typeof artifactPath !== 'string') {
164
+ console.warn(`[ShippedHeartbeat] Task ${task.id} → ${task.status} but no artifact_path — skipping`);
165
+ recordSuppression('missing_artifact');
166
+ return;
167
+ }
168
+ if (!isValidArtifactPath(artifactPath)) {
169
+ console.warn(`[ShippedHeartbeat] Task ${task.id} has non-canonical artifact_path: ${artifactPath} — skipping`);
170
+ recordSuppression('invalid_artifact_path');
171
+ return;
172
+ }
173
+ // Suppression: zombie cleanup transitions
174
+ const meta = task.metadata;
175
+ const transitionReason = meta?.transition?.reason;
176
+ if (transitionReason === 'Zombie cleanup' || meta?.auto_close_reason === 'Zombie task cleanup') {
177
+ console.log(`[ShippedHeartbeat] Task ${task.id} suppressed (zombie cleanup transition)`);
178
+ recordSuppression('zombie_cleanup');
179
+ return;
180
+ }
181
+ // Suppression: N/A review packet (no real shipped work)
182
+ const reviewPacket = meta?.qa_bundle?.review_packet;
183
+ const prUrl = reviewPacket?.pr_url ?? reviewPacket?.pr_link ?? meta?.qa_bundle?.pr_link;
184
+ const commitSha = reviewPacket?.commit ?? meta?.commit_sha;
185
+ const isValidPrUrl = typeof prUrl === 'string' && /^https:\/\/github\.com\/.+\/pull\/\d+/.test(prUrl);
186
+ const isValidCommit = typeof commitSha === 'string' && commitSha.length >= 7 && commitSha !== 'N/A';
187
+ if (!isValidPrUrl && !isValidCommit) {
188
+ console.log(`[ShippedHeartbeat] Task ${task.id} suppressed (N/A review packet: pr_url=${prUrl}, commit=${commitSha})`);
189
+ recordSuppression('invalid_review_packet');
190
+ return;
191
+ }
192
+ // Suppression: dedup window
193
+ if (isDuplicate(task.id)) {
194
+ console.log(`[ShippedHeartbeat] Task ${task.id} suppressed (dedup 30m window)`);
195
+ recordSuppression('dedup_window');
196
+ return;
197
+ }
198
+ // Suppression: reviewer override
199
+ if (isReviewerOverride(task)) {
200
+ console.log(`[ShippedHeartbeat] Task ${task.id} suppressed (reviewer @${task.reviewer} already posted)`);
201
+ recordSuppression('reviewer_override');
202
+ return;
203
+ }
204
+ // Build and send
205
+ const payload = buildPayload(task);
206
+ if (!payload) {
207
+ recordSuppression('payload_build_failed');
208
+ return;
209
+ }
210
+ const message = formatMessage(payload);
211
+ try {
212
+ await chatManager.sendMessage({
213
+ from: 'system',
214
+ channel: TARGET_CHANNEL,
215
+ content: message,
216
+ metadata: {
217
+ type: 'shipped_heartbeat',
218
+ taskId: task.id,
219
+ lane: payload.lane,
220
+ artifactPath: payload.shipped,
221
+ },
222
+ });
223
+ // Record success
224
+ dedupMap.set(task.id, Date.now());
225
+ stats.totalEmitted++;
226
+ stats.lastEmittedAt = Date.now();
227
+ console.log(`[ShippedHeartbeat] Emitted for ${task.id}: ${message}`);
228
+ }
229
+ catch (err) {
230
+ console.error(`[ShippedHeartbeat] Failed to send for ${task.id}:`, err);
231
+ }
232
+ }
233
+ // ── Dedup Cleanup ──
234
+ function cleanupDedupMap() {
235
+ const cutoff = Date.now() - DEDUP_WINDOW_MS;
236
+ for (const [taskId, timestamp] of dedupMap) {
237
+ if (timestamp < cutoff) {
238
+ dedupMap.delete(taskId);
239
+ }
240
+ }
241
+ }
242
+ // ── Lifecycle ──
243
+ export function startShippedHeartbeat() {
244
+ eventBus.on(LISTENER_ID, handleTaskEvent);
245
+ cleanupInterval = setInterval(cleanupDedupMap, DEDUP_WINDOW_MS);
246
+ console.log('[ShippedHeartbeat] Listening for shipped-artifact events');
247
+ }
248
+ export function stopShippedHeartbeat() {
249
+ eventBus.off(LISTENER_ID);
250
+ if (cleanupInterval) {
251
+ clearInterval(cleanupInterval);
252
+ cleanupInterval = null;
253
+ }
254
+ dedupMap.clear();
255
+ console.log('[ShippedHeartbeat] Stopped');
256
+ }
257
+ export function getShippedHeartbeatStats() {
258
+ return { ...stats };
259
+ }
260
+ // ── Exports for Testing ──
261
+ export const _testing = {
262
+ handleTaskEvent,
263
+ isDuplicate,
264
+ isReviewerOverride,
265
+ isValidArtifactPath,
266
+ inferLane,
267
+ dedupMap,
268
+ stats,
269
+ DEDUP_WINDOW_MS,
270
+ REVIEWER_OVERRIDE_WINDOW_MS,
271
+ };
272
+ //# sourceMappingURL=shipped-heartbeat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shipped-heartbeat.js","sourceRoot":"","sources":["../src/shipped-heartbeat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface StarterAgent {
2
+ name: string;
3
+ role: string;
4
+ description: string;
5
+ soulMd: string;
6
+ }
7
+ declare const STARTER_AGENTS: StarterAgent[];
8
+ export interface StarterTeamResult {
9
+ created: string[];
10
+ skipped: string[];
11
+ teamDir: string;
12
+ }
13
+ /**
14
+ * Scaffold a starter team with default agents.
15
+ * Creates workspace directories + SOUL.md files.
16
+ * Idempotent: skips agents that already exist.
17
+ */
18
+ export declare function createStarterTeam(opts?: {
19
+ baseDir?: string;
20
+ agents?: StarterAgent[];
21
+ }): Promise<StarterTeamResult>;
22
+ export { STARTER_AGENTS };
23
+ //# sourceMappingURL=starter-team.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starter-team.d.ts","sourceRoot":"","sources":["../src/starter-team.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,QAAA,MAAM,cAAc,EAAE,YAAY,EAoDjC,CAAA;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,CAAC,EAAE;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;CACxB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgC7B;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,88 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Starter Team Template — scaffolds a default team configuration.
3
+ import { promises as fs } from 'node:fs';
4
+ import { join } from 'node:path';
5
+ import { DATA_DIR } from './config.js';
6
+ const STARTER_AGENTS = [
7
+ {
8
+ name: 'builder',
9
+ role: 'engineer',
10
+ description: 'Builds features, fixes bugs, ships code.',
11
+ soulMd: `# Builder
12
+
13
+ *I turn ideas into working code.*
14
+
15
+ ## What I Do
16
+ - Full-stack development (frontend, backend, APIs)
17
+ - Code review and quality
18
+ - Testing and debugging
19
+
20
+ ## How I Work
21
+ 1. Read existing code first
22
+ 2. Make small, focused changes
23
+ 3. Test before shipping
24
+ 4. Document what I learn
25
+
26
+ ## Rules
27
+ - Ship working code, not demos
28
+ - Quality over quantity
29
+ - Read before writing
30
+ `,
31
+ },
32
+ {
33
+ name: 'ops',
34
+ role: 'operations',
35
+ description: 'Monitors systems, manages deployments, keeps things running.',
36
+ soulMd: `# Ops
37
+
38
+ *I keep the systems running and the team productive.*
39
+
40
+ ## What I Do
41
+ - Monitor health and performance
42
+ - Review and validate work
43
+ - Manage task flow and priorities
44
+ - Spot blockers before they block
45
+
46
+ ## How I Work
47
+ 1. Check system health regularly
48
+ 2. Review PRs and task quality
49
+ 3. Escalate issues early
50
+ 4. Keep the board clean
51
+
52
+ ## Rules
53
+ - Proactive, not reactive
54
+ - Evidence over assumptions
55
+ - Clear communication
56
+ `,
57
+ },
58
+ ];
59
+ /**
60
+ * Scaffold a starter team with default agents.
61
+ * Creates workspace directories + SOUL.md files.
62
+ * Idempotent: skips agents that already exist.
63
+ */
64
+ export async function createStarterTeam(opts) {
65
+ const baseDir = opts?.baseDir || join(DATA_DIR, 'agents');
66
+ const agents = opts?.agents || STARTER_AGENTS;
67
+ await fs.mkdir(baseDir, { recursive: true });
68
+ const created = [];
69
+ const skipped = [];
70
+ for (const agent of agents) {
71
+ const agentDir = join(baseDir, agent.name);
72
+ try {
73
+ await fs.access(agentDir);
74
+ skipped.push(agent.name);
75
+ continue;
76
+ }
77
+ catch {
78
+ // Directory doesn't exist — create it
79
+ }
80
+ await fs.mkdir(agentDir, { recursive: true });
81
+ await fs.writeFile(join(agentDir, 'SOUL.md'), agent.soulMd.trim() + '\n', 'utf-8');
82
+ await fs.writeFile(join(agentDir, 'AGENTS.md'), `# ${agent.name}\n\nRole: ${agent.role}\n\n${agent.description}\n`, 'utf-8');
83
+ created.push(agent.name);
84
+ }
85
+ return { created, skipped, teamDir: baseDir };
86
+ }
87
+ export { STARTER_AGENTS };
88
+ //# sourceMappingURL=starter-team.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starter-team.js","sourceRoot":"","sources":["../src/starter-team.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,kEAAkE;AAElE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAStC,MAAM,cAAc,GAAmB;IACrC;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,0CAA0C;QACvD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;CAmBX;KACE;IACD;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,8DAA8D;QAC3E,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;CAoBX;KACE;CACF,CAAA;AAQD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAGvC;IACC,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACzD,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,cAAc,CAAA;IAE7C,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE5C,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAE1C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACzB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACxB,SAAQ;QACV,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;QAED,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA;QAClF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAC3B,KAAK,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,WAAW,IAAI,EAClE,OAAO,CACR,CAAA;QAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;AAC/C,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,73 @@
1
+ export interface SuppressionEntry {
2
+ id: number;
3
+ dedup_key: string;
4
+ category: string;
5
+ channel: string;
6
+ from: string;
7
+ content_preview: string | null;
8
+ first_seen_at: number;
9
+ last_seen_at: number;
10
+ hit_count: number;
11
+ suppressed: boolean;
12
+ window_ms: number;
13
+ }
14
+ export interface SuppressionCheckResult {
15
+ isDuplicate: boolean;
16
+ dedup_key: string;
17
+ existing?: SuppressionEntry;
18
+ }
19
+ export interface SuppressionStats {
20
+ total_entries: number;
21
+ total_suppressed: number;
22
+ total_hits: number;
23
+ by_category: Record<string, {
24
+ entries: number;
25
+ suppressed: number;
26
+ hits: number;
27
+ }>;
28
+ by_channel: Record<string, {
29
+ entries: number;
30
+ suppressed: number;
31
+ hits: number;
32
+ }>;
33
+ window_ms: number;
34
+ active_entries: number;
35
+ }
36
+ export declare class SuppressionLedger {
37
+ private windowMs;
38
+ constructor(windowMs?: number);
39
+ /**
40
+ * Compute a dedup key from category + channel + content.
41
+ * Content is normalized: timestamps, task IDs, and message IDs stripped.
42
+ */
43
+ computeDedupKey(category: string, channel: string, content: string): string;
44
+ /**
45
+ * Check if a message is a duplicate within the suppression window.
46
+ * If not a duplicate, records it in the ledger.
47
+ * If duplicate, increments the hit count and marks as suppressed.
48
+ */
49
+ check(opts: {
50
+ category: string;
51
+ channel: string;
52
+ from: string;
53
+ content: string;
54
+ }): SuppressionCheckResult;
55
+ /**
56
+ * Get suppression statistics.
57
+ */
58
+ getStats(): SuppressionStats;
59
+ /**
60
+ * Prune old entries outside the window.
61
+ */
62
+ prune(): number;
63
+ /**
64
+ * Get window in ms.
65
+ */
66
+ getWindowMs(): number;
67
+ /**
68
+ * Update window.
69
+ */
70
+ setWindowMs(ms: number): void;
71
+ }
72
+ export declare const suppressionLedger: SuppressionLedger;
73
+ //# sourceMappingURL=suppression-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suppression-ledger.d.ts","sourceRoot":"","sources":["../src/suppression-ledger.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClF,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjF,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;CACvB;AAID,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,QAAQ,CAAC,EAAE,MAAM;IAI7B;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAY3E;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE;QACV,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;KAChB,GAAG,sBAAsB;IAyD1B;;OAEG;IACH,QAAQ,IAAI,gBAAgB;IAqC5B;;OAEG;IACH,KAAK,IAAI,MAAM;IAOf;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAG9B;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAA"}