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,475 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Role-based assignment engine: config-driven from TEAM-ROLES.yaml
3
+ import { readFileSync, writeFileSync, existsSync, watchFile, unwatchFile, statSync, mkdirSync } from 'fs';
4
+ import { join } from 'path';
5
+ import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
6
+ import { REFLECTT_HOME } from './config.js';
7
+ // ── YAML config paths (checked in order) ──
8
+ // Uses REFLECTT_HOME from config.ts (respects env override, defaults to ~/.reflectt)
9
+ const CONFIG_PATHS = [
10
+ join(REFLECTT_HOME, 'TEAM-ROLES.yaml'),
11
+ join(REFLECTT_HOME, 'TEAM-ROLES.yml'),
12
+ ];
13
+ // ── Built-in fallback (matches defaults/TEAM-ROLES.yaml) ──
14
+ // These are generic starter agents. Users should customize TEAM-ROLES.yaml
15
+ // with their actual team members.
16
+ const BUILTIN_ROLES = [
17
+ {
18
+ name: 'agent-1',
19
+ role: 'builder',
20
+ description: 'Example builder agent. Replace with your team\'s agents.',
21
+ affinityTags: ['backend', 'api', 'integration'],
22
+ wipCap: 2,
23
+ },
24
+ {
25
+ name: 'agent-2',
26
+ role: 'designer',
27
+ description: 'Example designer agent. Replace with your team\'s agents.',
28
+ affinityTags: ['design', 'ui', 'brand'],
29
+ // If you want design-only routing, encode it in TEAM-ROLES.yaml via:
30
+ // routingMode: opt-in
31
+ // alwaysRoute: [design, ui, ux, copy, brand, marketing, ...]
32
+ // neverRoute + neverRouteUnlessLane
33
+ wipCap: 2,
34
+ },
35
+ {
36
+ name: 'agent-3',
37
+ role: 'ops',
38
+ description: 'Example ops agent. Replace with your team\'s agents.',
39
+ affinityTags: ['infra', 'ci', 'monitoring'],
40
+ wipCap: 3,
41
+ },
42
+ ];
43
+ // ── Test-only role override ──
44
+ // Tests that depend on specific agent names can call setTestRoles() before
45
+ // server creation. In production, BUILTIN_ROLES is the last-resort fallback.
46
+ let testRolesOverride = null;
47
+ /** Override built-in roles for tests. Call with null to reset. */
48
+ export function setTestRoles(roles) {
49
+ testRolesOverride = roles;
50
+ }
51
+ // ── Loaded state ──
52
+ let loadedRoles = BUILTIN_ROLES;
53
+ let loadedFromPath = null;
54
+ let lastMtime = 0;
55
+ let watchActive = false;
56
+ function parseRolesYaml(content) {
57
+ const data = parseYaml(content);
58
+ if (!data?.agents || !Array.isArray(data.agents)) {
59
+ throw new Error('TEAM-ROLES.yaml: missing or invalid "agents" array');
60
+ }
61
+ return data.agents.map((a, i) => {
62
+ if (!a.name || typeof a.name !== 'string') {
63
+ throw new Error(`TEAM-ROLES.yaml: agent[${i}] missing "name"`);
64
+ }
65
+ if (!a.role || typeof a.role !== 'string') {
66
+ throw new Error(`TEAM-ROLES.yaml: agent[${i}] (${a.name}) missing "role"`);
67
+ }
68
+ return {
69
+ name: a.name,
70
+ role: a.role,
71
+ description: typeof a.description === 'string' ? a.description : undefined,
72
+ displayName: typeof a.displayName === 'string' ? a.displayName.trim() : undefined,
73
+ aliases: Array.isArray(a.aliases) ? a.aliases.map(String) : undefined,
74
+ affinityTags: Array.isArray(a.affinityTags) ? a.affinityTags.map(String) : [],
75
+ alwaysRoute: Array.isArray(a.alwaysRoute) ? a.alwaysRoute.map(String) : undefined,
76
+ neverRoute: Array.isArray(a.neverRoute) ? a.neverRoute.map(String) : undefined,
77
+ protectedDomains: Array.isArray(a.protectedDomains) ? a.protectedDomains.map(String) : undefined,
78
+ routingMode: (a.routingMode === 'opt-in' || a.routingMode === 'default') ? a.routingMode : undefined,
79
+ neverRouteUnlessLane: typeof a.neverRouteUnlessLane === 'string' ? a.neverRouteUnlessLane : undefined,
80
+ wipCap: typeof a.wipCap === 'number' && a.wipCap > 0 ? a.wipCap : 1,
81
+ };
82
+ });
83
+ }
84
+ function loadFromFile(path) {
85
+ try {
86
+ if (!existsSync(path))
87
+ return null;
88
+ const content = readFileSync(path, 'utf-8');
89
+ const roles = parseRolesYaml(content);
90
+ if (roles.length === 0)
91
+ return null;
92
+ return roles;
93
+ }
94
+ catch (err) {
95
+ console.error(`[Assignment] Failed to parse ${path}:`, err.message);
96
+ return null;
97
+ }
98
+ }
99
+ /** Load roles from YAML config or fall back to built-in defaults */
100
+ export function loadAgentRoles() {
101
+ const isTest = Boolean(process.env.VITEST) || process.env.NODE_ENV === 'test';
102
+ // Test-only override: if set, prefer it over any on-disk roles for determinism.
103
+ if (isTest && testRolesOverride) {
104
+ loadedRoles = testRolesOverride;
105
+ loadedFromPath = null;
106
+ console.log(`[Assignment] Using ${testRolesOverride.length} test-override agent roles`);
107
+ return { roles: testRolesOverride, source: 'test-override' };
108
+ }
109
+ // Try user config paths first (but never during tests; tests must be hermetic)
110
+ if (!isTest) {
111
+ for (const configPath of CONFIG_PATHS) {
112
+ const roles = loadFromFile(configPath);
113
+ if (roles) {
114
+ loadedRoles = roles;
115
+ loadedFromPath = configPath;
116
+ try {
117
+ lastMtime = statSync(configPath).mtimeMs;
118
+ }
119
+ catch { /* ignore */ }
120
+ console.log(`[Assignment] Loaded ${roles.length} agent roles from ${configPath}`);
121
+ return { roles, source: configPath };
122
+ }
123
+ }
124
+ }
125
+ // Try defaults shipped with repo
126
+ try {
127
+ const defaultsPath = new URL('../defaults/TEAM-ROLES.yaml', import.meta.url);
128
+ const content = readFileSync(defaultsPath, 'utf-8');
129
+ const roles = parseRolesYaml(content);
130
+ if (roles.length > 0) {
131
+ loadedRoles = roles;
132
+ loadedFromPath = 'defaults/TEAM-ROLES.yaml';
133
+ console.log(`[Assignment] Loaded ${roles.length} agent roles from defaults/TEAM-ROLES.yaml`);
134
+ console.log(`[Assignment] ⚠️ Using default placeholder agents. Customize your team:`);
135
+ console.log(`[Assignment] cp defaults/TEAM-ROLES.yaml ${REFLECTT_HOME}/TEAM-ROLES.yaml`);
136
+ console.log(`[Assignment] # Then edit with your agent names and roles`);
137
+ return { roles, source: 'defaults/TEAM-ROLES.yaml' };
138
+ }
139
+ }
140
+ catch { /* ignore */ }
141
+ // Fall back to test override or built-in
142
+ const fallbackRoles = testRolesOverride || BUILTIN_ROLES;
143
+ const source = testRolesOverride ? 'test-override' : 'builtin';
144
+ loadedRoles = fallbackRoles;
145
+ loadedFromPath = null;
146
+ console.log(`[Assignment] Using ${fallbackRoles.length} ${source} agent roles (no YAML found)`);
147
+ return { roles: fallbackRoles, source };
148
+ }
149
+ /** Start watching the config file for changes (hot-reload) */
150
+ export function startConfigWatch() {
151
+ if (watchActive)
152
+ return;
153
+ const isTest = Boolean(process.env.VITEST) || process.env.NODE_ENV === 'test';
154
+ if (isTest)
155
+ return;
156
+ // Watch user config paths (watchFile works for non-existent files too —
157
+ // it polls and fires when the file appears, enabling hot-reload of new configs)
158
+ for (const configPath of CONFIG_PATHS) {
159
+ try {
160
+ watchFile(configPath, { interval: 5000 }, () => {
161
+ try {
162
+ if (!existsSync(configPath))
163
+ return; // file removed or not yet created
164
+ const stat = statSync(configPath);
165
+ if (stat.mtimeMs !== lastMtime) {
166
+ console.log(`[Assignment] TEAM-ROLES.yaml changed, reloading...`);
167
+ loadAgentRoles();
168
+ }
169
+ }
170
+ catch { /* file removed */ }
171
+ });
172
+ watchActive = true;
173
+ console.log(`[Assignment] Watching ${configPath} for changes`);
174
+ }
175
+ catch { /* ignore */ }
176
+ }
177
+ }
178
+ /** Stop watching config files */
179
+ export function stopConfigWatch() {
180
+ if (!watchActive)
181
+ return;
182
+ for (const configPath of CONFIG_PATHS) {
183
+ try {
184
+ unwatchFile(configPath);
185
+ }
186
+ catch { /* ignore */ }
187
+ }
188
+ watchActive = false;
189
+ }
190
+ /** Get the current loaded roles */
191
+ export function getAgentRoles() {
192
+ return loadedRoles;
193
+ }
194
+ /** Get info about where roles were loaded from */
195
+ export function getAgentRolesSource() {
196
+ return {
197
+ source: loadedFromPath || 'builtin',
198
+ count: loadedRoles.length,
199
+ };
200
+ }
201
+ export function getAgentRole(name) {
202
+ return loadedRoles.find(a => a.name.toLowerCase() === name.toLowerCase());
203
+ }
204
+ /**
205
+ * Resolve an "agent identity" (e.g. OpenClaw agent name) into all task-assignee names
206
+ * that should be treated as equivalent for lookup.
207
+ */
208
+ export function getAgentAliases(name) {
209
+ const base = String(name || '').trim().toLowerCase();
210
+ if (!base)
211
+ return [];
212
+ const role = getAgentRole(base);
213
+ const aliases = (role?.aliases || [])
214
+ .map(a => String(a || '').trim().toLowerCase())
215
+ .filter(Boolean);
216
+ return Array.from(new Set([base, ...aliases]));
217
+ }
218
+ /** Save updated agent roles to YAML config file */
219
+ export function saveAgentRoles(roles) {
220
+ const targetPath = CONFIG_PATHS[0]; // REFLECTT_HOME/TEAM-ROLES.yaml
221
+ const dir = targetPath.substring(0, targetPath.lastIndexOf('/'));
222
+ if (!existsSync(dir))
223
+ mkdirSync(dir, { recursive: true });
224
+ const data = {
225
+ agents: roles.map(r => ({
226
+ name: r.name,
227
+ role: r.role,
228
+ ...(r.description ? { description: r.description } : {}),
229
+ ...(r.displayName ? { displayName: r.displayName } : {}),
230
+ ...(r.aliases?.length ? { aliases: r.aliases } : {}),
231
+ affinityTags: r.affinityTags,
232
+ ...(r.routingMode ? { routingMode: r.routingMode } : {}),
233
+ ...(r.neverRouteUnlessLane ? { neverRouteUnlessLane: r.neverRouteUnlessLane } : {}),
234
+ ...(r.alwaysRoute?.length ? { alwaysRoute: r.alwaysRoute } : {}),
235
+ ...(r.neverRoute?.length ? { neverRoute: r.neverRoute } : {}),
236
+ ...(r.protectedDomains?.length ? { protectedDomains: r.protectedDomains } : {}),
237
+ wipCap: r.wipCap,
238
+ })),
239
+ };
240
+ writeFileSync(targetPath, stringifyYaml(data), 'utf-8');
241
+ loadedRoles = roles;
242
+ loadedFromPath = targetPath;
243
+ lastMtime = statSync(targetPath).mtimeMs;
244
+ return { saved: true, path: targetPath, version: Date.now() };
245
+ }
246
+ /** Update a single agent's display name (persisted to TEAM-ROLES.yaml). */
247
+ export function setAgentDisplayName(agentName, displayName) {
248
+ const roles = getAgentRoles();
249
+ const idx = roles.findIndex(r => r.name.toLowerCase() === agentName.toLowerCase());
250
+ if (idx === -1)
251
+ return { success: false, error: `Agent "${agentName}" not found in TEAM-ROLES.yaml` };
252
+ roles[idx] = { ...roles[idx], displayName: displayName.trim() || undefined };
253
+ saveAgentRoles(roles);
254
+ return { success: true };
255
+ }
256
+ /** Resolve a mention string to an agent name. Checks name, displayName, and aliases. */
257
+ export function resolveAgentMention(mention) {
258
+ const lower = mention.toLowerCase();
259
+ for (const role of getAgentRoles()) {
260
+ if (role.name.toLowerCase() === lower)
261
+ return role.name;
262
+ if (role.displayName?.toLowerCase() === lower)
263
+ return role.name;
264
+ if (role.aliases?.some(a => a.toLowerCase() === lower))
265
+ return role.name;
266
+ }
267
+ return undefined;
268
+ }
269
+ // Extract scoring keywords from task title + tags + done_criteria + routing metadata
270
+ function extractTaskKeywords(task) {
271
+ const meta = getTaskMeta(task);
272
+ const metaTags = Array.isArray(meta.tags) ? meta.tags.map(String) : [];
273
+ const text = [
274
+ task.title,
275
+ ...(task.tags || []),
276
+ ...(task.done_criteria || []),
277
+ String(meta.lane ?? ''),
278
+ String(meta.surface ?? ''),
279
+ String(meta.cluster_key ?? ''),
280
+ String(meta.failure_family ?? ''),
281
+ ...metaTags,
282
+ ].join(' ').toLowerCase();
283
+ return text.split(/[\s/\-_:,.()+]+/).filter(w => w.length > 2);
284
+ }
285
+ // ── Config-driven routing guardrails ─────────────────────────────────────
286
+ function getTaskMeta(task) {
287
+ const meta = task?.metadata;
288
+ if (meta && typeof meta === 'object' && !Array.isArray(meta))
289
+ return meta;
290
+ return {};
291
+ }
292
+ function buildTaskMatchText(task) {
293
+ const meta = getTaskMeta(task);
294
+ const metaTags = Array.isArray(meta.tags) ? meta.tags.map(String) : [];
295
+ return [
296
+ task.title,
297
+ ...(task.tags || []),
298
+ ...(task.done_criteria || []),
299
+ String(meta.lane ?? ''),
300
+ String(meta.surface ?? ''),
301
+ String(meta.cluster_key ?? ''),
302
+ String(meta.failure_family ?? ''),
303
+ ...metaTags,
304
+ ].join(' ').toLowerCase();
305
+ }
306
+ function matchAnyPattern(ctx, patterns) {
307
+ for (const p of patterns) {
308
+ const pat = String(p).trim().toLowerCase();
309
+ if (!pat)
310
+ continue;
311
+ // If the pattern has punctuation (hyphen, dot, colon, etc), treat it as a literal substring.
312
+ // This avoids accidental matches like pattern "code-review" matching keyword "review".
313
+ if (/[^a-z0-9]/.test(pat)) {
314
+ if (ctx.text.includes(pat))
315
+ return pat;
316
+ continue;
317
+ }
318
+ if (ctx.keywords.includes(pat))
319
+ return pat;
320
+ }
321
+ return null;
322
+ }
323
+ /**
324
+ * Generic, config-driven eligibility:
325
+ * - routingMode=opt-in: excluded unless task matches alwaysRoute
326
+ * - neverRoute: excluded if any pattern matches
327
+ * - neverRouteUnlessLane: ignore neverRoute when metadata.lane matches (explicit override)
328
+ */
329
+ function agentEligibleForTask(agent, task) {
330
+ const meta = getTaskMeta(task);
331
+ const lane = String(meta.lane ?? '').trim().toLowerCase();
332
+ const ctx = {
333
+ text: buildTaskMatchText(task),
334
+ keywords: extractTaskKeywords(task),
335
+ };
336
+ // Hard exclusions
337
+ const ignoreNever = Boolean(agent.neverRouteUnlessLane) && lane === String(agent.neverRouteUnlessLane).trim().toLowerCase();
338
+ if (!ignoreNever && agent.neverRoute?.length) {
339
+ const hit = matchAnyPattern(ctx, agent.neverRoute);
340
+ if (hit)
341
+ return false;
342
+ }
343
+ // Opt-in routing
344
+ if (agent.routingMode === 'opt-in') {
345
+ const allow = agent.alwaysRoute ?? [];
346
+ const hit = matchAnyPattern(ctx, allow);
347
+ return Boolean(hit);
348
+ }
349
+ return true;
350
+ }
351
+ // Score how well an agent matches a task
352
+ export function scoreAssignment(agent, task, currentWip, recentCompletions = 0) {
353
+ const keywords = extractTaskKeywords(task);
354
+ // Affinity: how many task keywords match agent tags
355
+ const matchedTags = agent.affinityTags.filter(tag => keywords.some(kw => kw.includes(tag) || tag.includes(kw)));
356
+ const affinity = matchedTags.length > 0
357
+ ? Math.min(matchedTags.length / Math.max(keywords.length * 0.3, 1), 1.0)
358
+ : 0;
359
+ // WIP penalty: agents at/over cap get penalized
360
+ const wipPenalty = currentWip >= agent.wipCap
361
+ ? -0.5
362
+ : currentWip > 0
363
+ ? -0.1 * currentWip
364
+ : 0;
365
+ // Throughput bonus: agents who've shipped recently get a small boost
366
+ const throughput = Math.min(recentCompletions * 0.05, 0.2);
367
+ const score = Math.round((affinity + wipPenalty + throughput) * 100) / 100;
368
+ return {
369
+ agent: agent.name,
370
+ score,
371
+ breakdown: { affinity: Math.round(affinity * 100) / 100, wipPenalty, throughput },
372
+ wipCount: currentWip,
373
+ wipCap: agent.wipCap,
374
+ overCap: currentWip >= agent.wipCap,
375
+ };
376
+ }
377
+ // Suggest best assignee for a task
378
+ export function suggestAssignee(task, allTasks, recentCompletionsPerAgent) {
379
+ const roles = getAgentRoles().filter(r => agentEligibleForTask(r, task));
380
+ // Check protected domains first (but still return full scoring for transparency)
381
+ let protectedDecision = null;
382
+ const keywords = extractTaskKeywords(task);
383
+ for (const agent of roles) {
384
+ if (agent.protectedDomains) {
385
+ const protectedMatch = agent.protectedDomains.find(domain => keywords.some(kw => kw.includes(domain) || domain.includes(kw)));
386
+ if (protectedMatch) {
387
+ protectedDecision = { agent: agent.name, match: protectedMatch };
388
+ break;
389
+ }
390
+ }
391
+ }
392
+ // Score all agents
393
+ const scores = roles.map(agent => {
394
+ const currentWip = allTasks.filter(t => t.status === 'doing' && (t.assignee || '').toLowerCase() === agent.name).length;
395
+ const completions = recentCompletionsPerAgent?.get(agent.name) || 0;
396
+ return scoreAssignment(agent, task, currentWip, completions);
397
+ });
398
+ // Sort by score descending
399
+ scores.sort((a, b) => b.score - a.score);
400
+ // Suggest top scorer if they have positive affinity
401
+ const top = scores[0];
402
+ const suggested = top && top.score > 0 && !top.overCap ? top.agent : null;
403
+ if (protectedDecision) {
404
+ return {
405
+ suggested: protectedDecision.agent,
406
+ scores,
407
+ protectedMatch: `Protected domain "${protectedDecision.match}" → ${protectedDecision.agent}`,
408
+ };
409
+ }
410
+ return { suggested, scores };
411
+ }
412
+ // Suggest best reviewer for a task (load-balanced)
413
+ export function suggestReviewer(task, allTasks) {
414
+ const roles = getAgentRoles().filter(r => agentEligibleForTask(r, task));
415
+ // Exclude the assignee from reviewer candidates
416
+ const candidates = roles.filter(r => r.name.toLowerCase() !== (task.assignee || '').toLowerCase());
417
+ if (candidates.length === 0) {
418
+ return { suggested: null, scores: [] };
419
+ }
420
+ // Score each candidate
421
+ const scored = candidates.map(agent => {
422
+ const getReviewer = (t) => (t.reviewer || t.metadata?.reviewer || '').toLowerCase();
423
+ // Count tasks currently in validating where this agent is reviewer
424
+ const validatingLoad = allTasks.filter(t => t.status === 'validating' && getReviewer(t) === agent.name.toLowerCase()).length;
425
+ // Also count doing tasks where this agent is reviewer (upcoming review load)
426
+ const pendingLoad = allTasks.filter(t => t.status === 'doing' && getReviewer(t) === agent.name.toLowerCase()).length;
427
+ // Role bonus: reviewers/ops get priority
428
+ const roleBonus = agent.role === 'reviewer' ? 0.5
429
+ : agent.role === 'ops' ? 0.3
430
+ : 0.1;
431
+ // Affinity: does this agent have relevant domain knowledge?
432
+ const keywords = extractTaskKeywords(task);
433
+ const matchedTags = agent.affinityTags.filter(tag => keywords.some(kw => kw.includes(tag) || tag.includes(kw)));
434
+ const affinityBonus = Math.min(matchedTags.length * 0.1, 0.3);
435
+ // Load penalty: more validating work = lower score
436
+ const loadPenalty = (validatingLoad * 0.3) + (pendingLoad * 0.1);
437
+ // SLA risk: penalize if agent has high-priority tasks in review queue
438
+ const highPriorityReviewLoad = allTasks.filter(t => (t.status === 'validating' || t.status === 'doing') &&
439
+ getReviewer(t) === agent.name.toLowerCase() &&
440
+ (t.metadata?.priority === 'P0' || t.metadata?.priority === 'P1')).length;
441
+ const slaRiskPenalty = highPriorityReviewLoad * 0.2;
442
+ const score = Math.round((roleBonus + affinityBonus - loadPenalty - slaRiskPenalty) * 100) / 100;
443
+ return { agent: agent.name, score, validatingLoad, role: agent.role };
444
+ });
445
+ // Sort by score descending
446
+ scored.sort((a, b) => b.score - a.score);
447
+ return { suggested: scored[0]?.agent || null, scores: scored };
448
+ }
449
+ // Check WIP cap for an agent
450
+ export function checkWipCap(agentName, allTasks, override) {
451
+ const agent = getAgentRole(agentName);
452
+ if (!agent)
453
+ return { allowed: true, wipCount: 0, wipCap: 999 }; // unknown agents: no cap
454
+ const wipCount = allTasks.filter(t => t.status === 'doing' && (t.assignee || '').toLowerCase() === agent.name).length;
455
+ if (wipCount >= agent.wipCap) {
456
+ if (override) {
457
+ return {
458
+ allowed: true,
459
+ wipCount,
460
+ wipCap: agent.wipCap,
461
+ message: `WIP cap (${agent.wipCap}) exceeded with override: ${override}`,
462
+ };
463
+ }
464
+ return {
465
+ allowed: false,
466
+ wipCount,
467
+ wipCap: agent.wipCap,
468
+ message: `WIP cap reached: ${agentName} has ${wipCount}/${agent.wipCap} doing tasks. Include metadata.wip_override with reason to proceed.`,
469
+ };
470
+ }
471
+ return { allowed: true, wipCount, wipCap: agent.wipCap };
472
+ }
473
+ // Export for testing
474
+ export { parseRolesYaml as _parseRolesYaml, CONFIG_PATHS as _CONFIG_PATHS };
475
+ //# sourceMappingURL=assignment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assignment.js","sourceRoot":"","sources":["../src/assignment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ export interface AuditEntry {
2
+ timestamp: number;
3
+ taskId: string;
4
+ actor: string;
5
+ field: string;
6
+ before: unknown;
7
+ after: unknown;
8
+ context?: string;
9
+ }
10
+ /**
11
+ * Record a review-field mutation.
12
+ */
13
+ export declare function recordAudit(entry: AuditEntry): Promise<void>;
14
+ /**
15
+ * Record multiple field changes from a single mutation.
16
+ */
17
+ export declare function recordReviewMutation(opts: {
18
+ taskId: string;
19
+ actor: string;
20
+ context: string;
21
+ changes: Array<{
22
+ field: string;
23
+ before: unknown;
24
+ after: unknown;
25
+ }>;
26
+ }): Promise<void>;
27
+ /**
28
+ * Detect which review-related fields changed between old and new task states.
29
+ */
30
+ export declare function diffReviewFields(oldTask: Record<string, unknown>, newTask: Record<string, unknown>, oldMeta: Record<string, unknown>, newMeta: Record<string, unknown>): Array<{
31
+ field: string;
32
+ before: unknown;
33
+ after: unknown;
34
+ }>;
35
+ /**
36
+ * Get audit entries for a specific task.
37
+ */
38
+ export declare function getAuditForTask(taskId: string): AuditEntry[];
39
+ /**
40
+ * Get all audit entries (most recent first), with optional limit.
41
+ */
42
+ export declare function getAuditEntries(opts?: {
43
+ limit?: number;
44
+ taskId?: string;
45
+ }): AuditEntry[];
46
+ /**
47
+ * Load audit entries from disk on startup.
48
+ */
49
+ export declare function loadAuditLedger(): Promise<number>;
50
+ //# sourceMappingURL=auditLedger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auditLedger.d.ts","sourceRoot":"","sources":["../src/auditLedger.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAQD;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAalE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CACnE,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAoC3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAE5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,EAAE,CAOxF;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAqBvD"}