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,170 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Artifact mirror: auto-copies process/ artifacts to workspace-shared/process/
3
+ // so reviewers in other workspaces can access them without manual copying.
4
+ //
5
+ // Triggered on task transition to validating or done.
6
+ import { promises as fs } from 'fs';
7
+ import { join, resolve, dirname } from 'path';
8
+ import { homedir } from 'os';
9
+ // ── Config (lazy for testability — env is read at call time) ──
10
+ /**
11
+ * Canonical shared workspace: ~/.openclaw/workspace-shared
12
+ *
13
+ * Override with REFLECTT_SHARED_WORKSPACE env var.
14
+ * The previous default (../workspace-shared relative to project root)
15
+ * was wrong when running from a nested project directory.
16
+ */
17
+ function getWorkspaceRoot() {
18
+ const explicit = process.env.REFLECTT_WORKSPACE;
19
+ if (explicit)
20
+ return resolve(explicit);
21
+ // reflectt-node commonly runs with CWD inside a nested project directory:
22
+ // ~/.openclaw/workspace/projects/reflectt-node
23
+ // In that case, the actual workspace root is the parent *before* /projects/reflectt-node.
24
+ const cwd = resolve(process.cwd());
25
+ const normalized = cwd.replace(/\\/g, '/');
26
+ const marker = '/projects/reflectt-node';
27
+ const idx = normalized.lastIndexOf(marker);
28
+ if (idx !== -1) {
29
+ const root = normalized.slice(0, idx);
30
+ if (root)
31
+ return root;
32
+ }
33
+ return cwd;
34
+ }
35
+ function getSharedWorkspace() {
36
+ return process.env.REFLECTT_SHARED_WORKSPACE
37
+ || resolve(homedir(), '.openclaw', 'workspace-shared');
38
+ }
39
+ export function WORKSPACE_ROOT() { return getWorkspaceRoot(); }
40
+ export function SHARED_WORKSPACE() { return getSharedWorkspace(); }
41
+ async function listCandidateWorkspaceRoots() {
42
+ const roots = [];
43
+ const seen = new Set();
44
+ const add = (p) => {
45
+ if (!p)
46
+ return;
47
+ const r = resolve(p);
48
+ if (seen.has(r))
49
+ return;
50
+ seen.add(r);
51
+ roots.push(r);
52
+ };
53
+ // Prefer the inferred runtime workspace root first (fast path).
54
+ add(getWorkspaceRoot());
55
+ // Then search all known OpenClaw workspaces so artifacts produced by other
56
+ // agents can still be mirrored on review transition.
57
+ const base = resolve(homedir(), '.openclaw');
58
+ try {
59
+ const entries = await fs.readdir(base, { withFileTypes: true });
60
+ for (const e of entries) {
61
+ if (!e.isDirectory())
62
+ continue;
63
+ if (!e.name.startsWith('workspace'))
64
+ continue;
65
+ if (e.name === 'workspace-shared')
66
+ continue;
67
+ add(resolve(base, e.name));
68
+ }
69
+ }
70
+ catch {
71
+ // Non-fatal: in some deployments we may not have directory read access.
72
+ }
73
+ return roots;
74
+ }
75
+ async function findArtifactSource(artifactPath) {
76
+ const candidates = await listCandidateWorkspaceRoots();
77
+ const checked = [];
78
+ for (const root of candidates) {
79
+ const candidate = resolve(root, artifactPath);
80
+ checked.push(candidate);
81
+ const stat = await fs.stat(candidate).catch(() => null);
82
+ if (stat)
83
+ return { sourcePath: candidate, stat, checked };
84
+ }
85
+ return null;
86
+ }
87
+ /**
88
+ * Mirror a task's process artifacts to the shared workspace.
89
+ *
90
+ * Supports both directory-style artifacts (process/task-xxx/) and
91
+ * single-file artifacts (process/task-xxx-proof.md).
92
+ */
93
+ export async function mirrorArtifacts(artifactPath) {
94
+ if (!artifactPath || !artifactPath.startsWith('process/')) {
95
+ return { mirrored: false, source: artifactPath, destination: '', filesCopied: 0, error: 'Not a process/ artifact path' };
96
+ }
97
+ const destPath = resolve(getSharedWorkspace(), artifactPath);
98
+ let sourcePath = resolve(getWorkspaceRoot(), artifactPath);
99
+ try {
100
+ const lookup = await findArtifactSource(artifactPath);
101
+ if (!lookup) {
102
+ return {
103
+ mirrored: false,
104
+ source: sourcePath,
105
+ destination: destPath,
106
+ filesCopied: 0,
107
+ error: 'Source artifact not found (checked all ~/.openclaw/workspace* roots)',
108
+ };
109
+ }
110
+ sourcePath = lookup.sourcePath;
111
+ const stat = lookup.stat;
112
+ // Ensure destination directory exists
113
+ await fs.mkdir(dirname(destPath), { recursive: true });
114
+ let filesCopied = 0;
115
+ if (stat.isDirectory()) {
116
+ // Mirror entire directory
117
+ await fs.mkdir(destPath, { recursive: true });
118
+ const files = await fs.readdir(sourcePath, { recursive: true });
119
+ for (const file of files) {
120
+ const srcFile = join(sourcePath, file);
121
+ const dstFile = join(destPath, file);
122
+ const fileStat = await fs.stat(srcFile).catch(() => null);
123
+ if (fileStat?.isFile()) {
124
+ await fs.mkdir(dirname(dstFile), { recursive: true });
125
+ await fs.copyFile(srcFile, dstFile);
126
+ filesCopied++;
127
+ }
128
+ }
129
+ }
130
+ else {
131
+ // Mirror single file
132
+ await fs.copyFile(sourcePath, destPath);
133
+ filesCopied = 1;
134
+ }
135
+ return { mirrored: true, source: sourcePath, destination: destPath, filesCopied };
136
+ }
137
+ catch (err) {
138
+ return {
139
+ mirrored: false,
140
+ source: sourcePath,
141
+ destination: destPath,
142
+ filesCopied: 0,
143
+ error: `Mirror failed: ${err.message}`,
144
+ };
145
+ }
146
+ }
147
+ /**
148
+ * Called on task status transition to validating or done.
149
+ * Extracts artifact_path from task metadata and mirrors it.
150
+ */
151
+ export async function onTaskReadyForReview(taskMeta) {
152
+ const artifactPath = typeof taskMeta.artifact_path === 'string' ? taskMeta.artifact_path : null;
153
+ if (!artifactPath)
154
+ return null;
155
+ return mirrorArtifacts(artifactPath);
156
+ }
157
+ /**
158
+ * Check if shared workspace is accessible.
159
+ */
160
+ export async function isSharedWorkspaceReady() {
161
+ try {
162
+ await fs.access(getSharedWorkspace());
163
+ return true;
164
+ }
165
+ catch {
166
+ return false;
167
+ }
168
+ }
169
+ // WORKSPACE_ROOT and SHARED_WORKSPACE exported as functions above
170
+ //# sourceMappingURL=artifact-mirror.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-mirror.js","sourceRoot":"","sources":["../src/artifact-mirror.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Artifact path normalization + GitHub blob fallback.
3
+ *
4
+ * Solves: reviewers can't access artifacts because paths are workspace-dependent
5
+ * (absolute, or prefixed with workspace-<agent>/).
6
+ *
7
+ * Strategy:
8
+ * 1) Normalize: strip workspace prefixes → repo-relative process/...
9
+ * 2) Reject: absolute paths that don't contain a recognizable workspace/repo pattern
10
+ * 3) GitHub fallback: if local file missing but PR is known, build GitHub blob URL
11
+ */
12
+ /**
13
+ * Normalize an artifact path to repo-relative.
14
+ * Returns { normalized, wasAbsolute, wasNormalized }.
15
+ *
16
+ * Examples:
17
+ * "/Users/ryan/.openclaw/workspace-link/process/QA.md" → "process/QA.md"
18
+ * "workspace-shared/process/QA.md" → "process/QA.md"
19
+ * "process/QA.md" → "process/QA.md" (unchanged)
20
+ * "/etc/passwd" → null (rejected)
21
+ */
22
+ export declare function normalizeArtifactPath(raw: string): {
23
+ normalized: string | null;
24
+ wasAbsolute: boolean;
25
+ wasNormalized: boolean;
26
+ rejected: boolean;
27
+ rejectReason?: string;
28
+ };
29
+ /**
30
+ * Normalize all artifact paths in task metadata.
31
+ * Returns { patches, warnings } where patches is a metadata merge object
32
+ * and warnings lists any normalization events.
33
+ */
34
+ export declare function normalizeTaskArtifactPaths(metadata: Record<string, unknown>): {
35
+ patches: Record<string, unknown>;
36
+ warnings: string[];
37
+ rejected: string[];
38
+ };
39
+ /**
40
+ * Build a GitHub blob URL for an artifact when the local file is missing.
41
+ * Uses the PR's repo + head SHA + file path.
42
+ */
43
+ export declare function buildGitHubBlobUrl(prUrl: string, commitSha: string, filePath: string): string | null;
44
+ /**
45
+ * Build a GitHub raw URL for downloading artifact content.
46
+ */
47
+ export declare function buildGitHubRawUrl(prUrl: string, commitSha: string, filePath: string): string | null;
48
+ //# sourceMappingURL=artifact-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-resolver.d.ts","sourceRoot":"","sources":["../src/artifact-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG;IAClD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAyDA;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAC7E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CA+CA;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,IAAI,CAUf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,IAAI,CASf"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Artifact path normalization + GitHub blob fallback.
3
+ *
4
+ * Solves: reviewers can't access artifacts because paths are workspace-dependent
5
+ * (absolute, or prefixed with workspace-<agent>/).
6
+ *
7
+ * Strategy:
8
+ * 1) Normalize: strip workspace prefixes → repo-relative process/...
9
+ * 2) Reject: absolute paths that don't contain a recognizable workspace/repo pattern
10
+ * 3) GitHub fallback: if local file missing but PR is known, build GitHub blob URL
11
+ */
12
+ import { isAbsolute } from 'node:path';
13
+ // ── Known workspace prefix patterns ──────────────────────────────────
14
+ const WORKSPACE_PATTERNS = [
15
+ // OpenClaw workspace paths
16
+ /^.*?\/\.openclaw\/workspace[^/]*\//,
17
+ // Reflectt home paths
18
+ /^.*?\/\.reflectt\//,
19
+ // Generic Users/*/projects/reflectt-node/ pattern
20
+ /^.*?\/projects\/reflectt-node\//,
21
+ // Generic Users/*/reflectt-node/ pattern
22
+ /^.*?\/reflectt-node\//,
23
+ ];
24
+ /**
25
+ * Normalize an artifact path to repo-relative.
26
+ * Returns { normalized, wasAbsolute, wasNormalized }.
27
+ *
28
+ * Examples:
29
+ * "/Users/ryan/.openclaw/workspace-link/process/QA.md" → "process/QA.md"
30
+ * "workspace-shared/process/QA.md" → "process/QA.md"
31
+ * "process/QA.md" → "process/QA.md" (unchanged)
32
+ * "/etc/passwd" → null (rejected)
33
+ */
34
+ export function normalizeArtifactPath(raw) {
35
+ if (!raw || typeof raw !== 'string') {
36
+ return { normalized: null, wasAbsolute: false, wasNormalized: false, rejected: true, rejectReason: 'Empty path' };
37
+ }
38
+ const trimmed = raw.trim();
39
+ // Reject null bytes
40
+ if (trimmed.includes('\0')) {
41
+ return { normalized: null, wasAbsolute: false, wasNormalized: false, rejected: true, rejectReason: 'Null byte in path' };
42
+ }
43
+ // URLs pass through unchanged
44
+ if (/^https?:\/\//i.test(trimmed)) {
45
+ return { normalized: trimmed, wasAbsolute: false, wasNormalized: false, rejected: false };
46
+ }
47
+ const wasAbsolute = isAbsolute(trimmed);
48
+ // If absolute, try to strip known workspace prefixes
49
+ if (wasAbsolute) {
50
+ for (const pattern of WORKSPACE_PATTERNS) {
51
+ const match = trimmed.match(pattern);
52
+ if (match) {
53
+ const stripped = trimmed.slice(match[0].length);
54
+ if (stripped && !stripped.includes('..') && !isAbsolute(stripped)) {
55
+ return { normalized: stripped, wasAbsolute: true, wasNormalized: true, rejected: false };
56
+ }
57
+ }
58
+ }
59
+ // Absolute path with no recognizable prefix → reject
60
+ return {
61
+ normalized: null,
62
+ wasAbsolute: true,
63
+ wasNormalized: false,
64
+ rejected: true,
65
+ rejectReason: `Absolute path does not match any known workspace pattern: ${trimmed.slice(0, 80)}...`,
66
+ };
67
+ }
68
+ // Strip common relative workspace prefixes
69
+ let result = trimmed;
70
+ const RELATIVE_PREFIXES = ['workspace-shared/', 'workspace-link/', 'workspace-echo/', 'workspace-kai/', 'workspace-sage/', 'workspace-pixel/', 'workspace-spark/', 'workspace-harmony/', 'workspace-scout/', 'workspace-rhythm/', 'shared/'];
71
+ for (const prefix of RELATIVE_PREFIXES) {
72
+ if (result.startsWith(prefix)) {
73
+ result = result.slice(prefix.length);
74
+ break;
75
+ }
76
+ }
77
+ // Reject traversal
78
+ if (result.includes('..')) {
79
+ return { normalized: null, wasAbsolute: false, wasNormalized: false, rejected: true, rejectReason: 'Path contains ..' };
80
+ }
81
+ const wasNormalized = result !== trimmed;
82
+ return { normalized: result, wasAbsolute, wasNormalized, rejected: false };
83
+ }
84
+ /**
85
+ * Normalize all artifact paths in task metadata.
86
+ * Returns { patches, warnings } where patches is a metadata merge object
87
+ * and warnings lists any normalization events.
88
+ */
89
+ export function normalizeTaskArtifactPaths(metadata) {
90
+ const patches = {};
91
+ const warnings = [];
92
+ const rejected = [];
93
+ // Normalize metadata.artifact_path
94
+ if (typeof metadata.artifact_path === 'string') {
95
+ const result = normalizeArtifactPath(metadata.artifact_path);
96
+ if (result.rejected) {
97
+ rejected.push(`artifact_path: ${result.rejectReason}`);
98
+ }
99
+ else if (result.wasNormalized && result.normalized) {
100
+ patches.artifact_path = result.normalized;
101
+ warnings.push(`artifact_path normalized: "${metadata.artifact_path}" → "${result.normalized}"`);
102
+ }
103
+ }
104
+ // Normalize qa_bundle.review_packet.artifact_path
105
+ const qaBundle = metadata.qa_bundle;
106
+ const reviewPacket = qaBundle?.review_packet;
107
+ if (typeof reviewPacket?.artifact_path === 'string') {
108
+ const result = normalizeArtifactPath(reviewPacket.artifact_path);
109
+ if (result.rejected) {
110
+ rejected.push(`qa_bundle.review_packet.artifact_path: ${result.rejectReason}`);
111
+ }
112
+ else if (result.wasNormalized && result.normalized) {
113
+ // Deep merge
114
+ patches.qa_bundle = {
115
+ ...(patches.qa_bundle || {}),
116
+ ...qaBundle,
117
+ review_packet: { ...reviewPacket, artifact_path: result.normalized },
118
+ };
119
+ warnings.push(`qa_bundle.review_packet.artifact_path normalized: "${reviewPacket.artifact_path}" → "${result.normalized}"`);
120
+ }
121
+ }
122
+ // Normalize review_handoff.artifact_path
123
+ const reviewHandoff = metadata.review_handoff;
124
+ if (typeof reviewHandoff?.artifact_path === 'string') {
125
+ const result = normalizeArtifactPath(reviewHandoff.artifact_path);
126
+ if (result.rejected) {
127
+ rejected.push(`review_handoff.artifact_path: ${result.rejectReason}`);
128
+ }
129
+ else if (result.wasNormalized && result.normalized) {
130
+ patches.review_handoff = { ...reviewHandoff, artifact_path: result.normalized };
131
+ warnings.push(`review_handoff.artifact_path normalized: "${reviewHandoff.artifact_path}" → "${result.normalized}"`);
132
+ }
133
+ }
134
+ return { patches, warnings, rejected };
135
+ }
136
+ /**
137
+ * Build a GitHub blob URL for an artifact when the local file is missing.
138
+ * Uses the PR's repo + head SHA + file path.
139
+ */
140
+ export function buildGitHubBlobUrl(prUrl, commitSha, filePath) {
141
+ // Extract owner/repo from PR URL
142
+ const prMatch = prUrl.match(/github\.com\/([^/]+\/[^/]+)\/pull\/\d+/);
143
+ if (!prMatch)
144
+ return null;
145
+ const ownerRepo = prMatch[1];
146
+ const sha = commitSha.length >= 7 ? commitSha : null;
147
+ if (!sha)
148
+ return null;
149
+ return `https://github.com/${ownerRepo}/blob/${sha}/${filePath}`;
150
+ }
151
+ /**
152
+ * Build a GitHub raw URL for downloading artifact content.
153
+ */
154
+ export function buildGitHubRawUrl(prUrl, commitSha, filePath) {
155
+ const prMatch = prUrl.match(/github\.com\/([^/]+\/[^/]+)\/pull\/\d+/);
156
+ if (!prMatch)
157
+ return null;
158
+ const ownerRepo = prMatch[1];
159
+ const sha = commitSha.length >= 7 ? commitSha : null;
160
+ if (!sha)
161
+ return null;
162
+ return `https://raw.githubusercontent.com/${ownerRepo}/${sha}/${filePath}`;
163
+ }
164
+ //# sourceMappingURL=artifact-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-resolver.js","sourceRoot":"","sources":["../src/artifact-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ export interface AgentRole {
2
+ name: string;
3
+ role: string;
4
+ description?: string;
5
+ /** Optional: human-friendly display name (e.g. "Juniper" vs agent ID "agent-1"). Used in dashboard, chat, and mention resolution. */
6
+ displayName?: string;
7
+ /** Optional: additional names that should be treated as this agent for task lookup (e.g. OpenClaw agent "main" can act as "finance-agent"). */
8
+ aliases?: string[];
9
+ affinityTags: string[];
10
+ alwaysRoute?: string[];
11
+ neverRoute?: string[];
12
+ protectedDomains?: string[];
13
+ wipCap: number;
14
+ routingMode?: 'default' | 'opt-in';
15
+ neverRouteUnlessLane?: string;
16
+ }
17
+ declare const CONFIG_PATHS: string[];
18
+ /** Override built-in roles for tests. Call with null to reset. */
19
+ export declare function setTestRoles(roles: AgentRole[] | null): void;
20
+ declare function parseRolesYaml(content: string): AgentRole[];
21
+ /** Load roles from YAML config or fall back to built-in defaults */
22
+ export declare function loadAgentRoles(): {
23
+ roles: AgentRole[];
24
+ source: string;
25
+ };
26
+ /** Start watching the config file for changes (hot-reload) */
27
+ export declare function startConfigWatch(): void;
28
+ /** Stop watching config files */
29
+ export declare function stopConfigWatch(): void;
30
+ /** Get the current loaded roles */
31
+ export declare function getAgentRoles(): AgentRole[];
32
+ /** Get info about where roles were loaded from */
33
+ export declare function getAgentRolesSource(): {
34
+ source: string;
35
+ count: number;
36
+ };
37
+ export declare function getAgentRole(name: string): AgentRole | undefined;
38
+ /**
39
+ * Resolve an "agent identity" (e.g. OpenClaw agent name) into all task-assignee names
40
+ * that should be treated as equivalent for lookup.
41
+ */
42
+ export declare function getAgentAliases(name: string): string[];
43
+ /** Save updated agent roles to YAML config file */
44
+ export declare function saveAgentRoles(roles: AgentRole[]): {
45
+ saved: boolean;
46
+ path: string;
47
+ version: number;
48
+ };
49
+ /** Update a single agent's display name (persisted to TEAM-ROLES.yaml). */
50
+ export declare function setAgentDisplayName(agentName: string, displayName: string): {
51
+ success: boolean;
52
+ error?: string;
53
+ };
54
+ /** Resolve a mention string to an agent name. Checks name, displayName, and aliases. */
55
+ export declare function resolveAgentMention(mention: string): string | undefined;
56
+ interface TaskForScoring {
57
+ id: string;
58
+ title: string;
59
+ status: string;
60
+ assignee?: string;
61
+ reviewer?: string;
62
+ tags?: string[];
63
+ done_criteria?: string[];
64
+ metadata?: Record<string, unknown>;
65
+ }
66
+ interface AssignmentScore {
67
+ agent: string;
68
+ score: number;
69
+ breakdown: {
70
+ affinity: number;
71
+ wipPenalty: number;
72
+ throughput: number;
73
+ };
74
+ wipCount: number;
75
+ wipCap: number;
76
+ overCap: boolean;
77
+ }
78
+ export declare function scoreAssignment(agent: AgentRole, task: {
79
+ title: string;
80
+ tags?: string[];
81
+ done_criteria?: string[];
82
+ metadata?: Record<string, unknown>;
83
+ }, currentWip: number, recentCompletions?: number): AssignmentScore;
84
+ export declare function suggestAssignee(task: {
85
+ title: string;
86
+ tags?: string[];
87
+ done_criteria?: string[];
88
+ metadata?: Record<string, unknown>;
89
+ }, allTasks: TaskForScoring[], recentCompletionsPerAgent?: Map<string, number>): {
90
+ suggested: string | null;
91
+ scores: AssignmentScore[];
92
+ protectedMatch?: string;
93
+ };
94
+ export declare function suggestReviewer(task: {
95
+ title: string;
96
+ assignee?: string;
97
+ tags?: string[];
98
+ done_criteria?: string[];
99
+ metadata?: Record<string, unknown>;
100
+ }, allTasks: TaskForScoring[]): {
101
+ suggested: string | null;
102
+ scores: Array<{
103
+ agent: string;
104
+ score: number;
105
+ validatingLoad: number;
106
+ role: string;
107
+ }>;
108
+ };
109
+ export declare function checkWipCap(agentName: string, allTasks: TaskForScoring[], override?: string): {
110
+ allowed: boolean;
111
+ wipCount: number;
112
+ wipCap: number;
113
+ message?: string;
114
+ };
115
+ export { parseRolesYaml as _parseRolesYaml, CONFIG_PATHS as _CONFIG_PATHS };
116
+ //# sourceMappingURL=assignment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assignment.d.ts","sourceRoot":"","sources":["../src/assignment.ts"],"names":[],"mappings":"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"}