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
package/dist/db.js ADDED
@@ -0,0 +1,648 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) Reflectt AI
3
+ /**
4
+ * SQLite database module for reflectt-node
5
+ *
6
+ * Primary local store with WAL mode for concurrent reads.
7
+ * Replaces JSONL flat files while keeping JSONL as append-only audit log.
8
+ */
9
+ import Database from 'better-sqlite3';
10
+ import { join } from 'path';
11
+ import { existsSync, readFileSync, mkdirSync } from 'fs';
12
+ import { DATA_DIR } from './config.js';
13
+ const DB_PATH = join(DATA_DIR, 'reflectt.db');
14
+ let _db = null;
15
+ /**
16
+ * Get or create the SQLite database connection
17
+ */
18
+ export function getDb() {
19
+ if (_db)
20
+ return _db;
21
+ mkdirSync(DATA_DIR, { recursive: true });
22
+ _db = new Database(DB_PATH);
23
+ // WAL mode for concurrent reads + better write performance
24
+ _db.pragma('journal_mode = WAL');
25
+ _db.pragma('synchronous = NORMAL');
26
+ _db.pragma('foreign_keys = ON');
27
+ // Prevent SQLITE_BUSY timeouts under concurrent agent access.
28
+ // 5000ms wait before returning BUSY — covers typical heartbeat storms.
29
+ _db.pragma('busy_timeout = 5000');
30
+ // WAL auto-checkpoint every 1000 pages (~4MB) to prevent unbounded WAL growth
31
+ _db.pragma('wal_autocheckpoint = 1000');
32
+ // Checkpoint WAL on startup to reclaim disk space from accumulated writes
33
+ try {
34
+ _db.pragma('wal_checkpoint(TRUNCATE)');
35
+ }
36
+ catch {
37
+ // Non-fatal: checkpoint may fail if another process holds a read lock
38
+ }
39
+ // Run schema migrations
40
+ runMigrations(_db);
41
+ return _db;
42
+ }
43
+ /**
44
+ * Close the database connection (call on shutdown)
45
+ */
46
+ export function closeDb() {
47
+ if (_db) {
48
+ _db.close();
49
+ _db = null;
50
+ }
51
+ }
52
+ /**
53
+ * Schema version tracking + migrations
54
+ */
55
+ export function runMigrations(db) {
56
+ // Create migration tracking table
57
+ db.exec(`
58
+ CREATE TABLE IF NOT EXISTS _migrations (
59
+ version INTEGER PRIMARY KEY,
60
+ applied_at TEXT NOT NULL DEFAULT (datetime('now'))
61
+ )
62
+ `);
63
+ const currentVersion = db.prepare('SELECT MAX(version) as v FROM _migrations').get();
64
+ const version = currentVersion?.v ?? 0;
65
+ const migrations = [
66
+ {
67
+ version: 1,
68
+ sql: `
69
+ -- Tasks table
70
+ CREATE TABLE IF NOT EXISTS tasks (
71
+ id TEXT PRIMARY KEY,
72
+ title TEXT NOT NULL,
73
+ description TEXT,
74
+ status TEXT NOT NULL DEFAULT 'todo',
75
+ assignee TEXT,
76
+ reviewer TEXT,
77
+ done_criteria TEXT, -- JSON array
78
+ created_by TEXT NOT NULL,
79
+ created_at INTEGER NOT NULL,
80
+ updated_at INTEGER NOT NULL,
81
+ priority TEXT,
82
+ blocked_by TEXT, -- JSON array
83
+ epic_id TEXT,
84
+ tags TEXT, -- JSON array
85
+ metadata TEXT, -- JSON object
86
+ comment_count INTEGER NOT NULL DEFAULT 0
87
+ );
88
+
89
+ CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
90
+ CREATE INDEX IF NOT EXISTS idx_tasks_assignee ON tasks(assignee);
91
+ CREATE INDEX IF NOT EXISTS idx_tasks_priority ON tasks(priority);
92
+
93
+ -- Task comments
94
+ CREATE TABLE IF NOT EXISTS task_comments (
95
+ id TEXT PRIMARY KEY,
96
+ task_id TEXT NOT NULL,
97
+ author TEXT NOT NULL,
98
+ content TEXT NOT NULL,
99
+ timestamp INTEGER NOT NULL,
100
+ FOREIGN KEY (task_id) REFERENCES tasks(id) ON DELETE CASCADE
101
+ );
102
+
103
+ CREATE INDEX IF NOT EXISTS idx_task_comments_task_id ON task_comments(task_id);
104
+
105
+ -- Task history
106
+ CREATE TABLE IF NOT EXISTS task_history (
107
+ id TEXT PRIMARY KEY,
108
+ task_id TEXT NOT NULL,
109
+ type TEXT NOT NULL,
110
+ actor TEXT NOT NULL,
111
+ timestamp INTEGER NOT NULL,
112
+ data TEXT -- JSON object
113
+ );
114
+
115
+ CREATE INDEX IF NOT EXISTS idx_task_history_task_id ON task_history(task_id);
116
+
117
+ -- Recurring tasks
118
+ CREATE TABLE IF NOT EXISTS recurring_tasks (
119
+ id TEXT PRIMARY KEY,
120
+ title TEXT NOT NULL,
121
+ description TEXT,
122
+ assignee TEXT,
123
+ reviewer TEXT,
124
+ done_criteria TEXT, -- JSON array
125
+ created_by TEXT NOT NULL,
126
+ priority TEXT,
127
+ blocked_by TEXT, -- JSON array
128
+ epic_id TEXT,
129
+ tags TEXT, -- JSON array
130
+ metadata TEXT, -- JSON object
131
+ schedule TEXT NOT NULL, -- JSON object
132
+ enabled INTEGER NOT NULL DEFAULT 1,
133
+ status TEXT DEFAULT 'todo',
134
+ last_run_at INTEGER,
135
+ last_skip_at INTEGER,
136
+ last_skip_reason TEXT,
137
+ next_run_at INTEGER NOT NULL,
138
+ created_at INTEGER NOT NULL,
139
+ updated_at INTEGER NOT NULL
140
+ );
141
+
142
+ -- Chat messages
143
+ CREATE TABLE IF NOT EXISTS chat_messages (
144
+ id TEXT PRIMARY KEY,
145
+ "from" TEXT NOT NULL,
146
+ "to" TEXT,
147
+ content TEXT NOT NULL,
148
+ timestamp INTEGER NOT NULL,
149
+ channel TEXT DEFAULT 'general',
150
+ reactions TEXT, -- JSON object
151
+ thread_id TEXT,
152
+ reply_count INTEGER DEFAULT 0,
153
+ metadata TEXT -- JSON object
154
+ );
155
+
156
+ CREATE INDEX IF NOT EXISTS idx_chat_messages_channel ON chat_messages(channel);
157
+ CREATE INDEX IF NOT EXISTS idx_chat_messages_timestamp ON chat_messages(timestamp);
158
+ CREATE INDEX IF NOT EXISTS idx_chat_messages_from ON chat_messages("from");
159
+ CREATE INDEX IF NOT EXISTS idx_chat_messages_thread_id ON chat_messages(thread_id);
160
+
161
+ -- Legacy inbox message table (kept for backward compatibility)
162
+ CREATE TABLE IF NOT EXISTS inbox (
163
+ id TEXT PRIMARY KEY,
164
+ agent TEXT NOT NULL,
165
+ "from" TEXT NOT NULL,
166
+ content TEXT NOT NULL,
167
+ timestamp INTEGER NOT NULL,
168
+ read INTEGER NOT NULL DEFAULT 0,
169
+ metadata TEXT -- JSON object
170
+ );
171
+
172
+ CREATE INDEX IF NOT EXISTS idx_inbox_agent ON inbox(agent);
173
+ CREATE INDEX IF NOT EXISTS idx_inbox_read ON inbox(read);
174
+ `,
175
+ },
176
+ {
177
+ version: 2,
178
+ sql: `
179
+ -- Sync ledger for incremental cloud coordination
180
+ CREATE TABLE IF NOT EXISTS sync_ledger (
181
+ record_type TEXT NOT NULL,
182
+ record_id TEXT NOT NULL,
183
+ local_updated_at INTEGER NOT NULL,
184
+ cloud_synced_at INTEGER,
185
+ sync_status TEXT NOT NULL DEFAULT 'pending',
186
+ attempt_count INTEGER NOT NULL DEFAULT 0,
187
+ last_error TEXT,
188
+ PRIMARY KEY (record_type, record_id)
189
+ );
190
+
191
+ CREATE INDEX IF NOT EXISTS idx_sync_ledger_status ON sync_ledger(sync_status);
192
+ CREATE INDEX IF NOT EXISTS idx_sync_ledger_local_updated ON sync_ledger(local_updated_at);
193
+
194
+ -- Backfill current task state into sync ledger (first incremental run)
195
+ INSERT OR IGNORE INTO sync_ledger (record_type, record_id, local_updated_at, sync_status)
196
+ SELECT 'task', id, updated_at, 'pending'
197
+ FROM tasks;
198
+
199
+ -- Keep ledger pending whenever tasks are inserted/updated/deleted
200
+ CREATE TRIGGER IF NOT EXISTS trg_tasks_sync_ledger_insert
201
+ AFTER INSERT ON tasks
202
+ BEGIN
203
+ INSERT INTO sync_ledger (record_type, record_id, local_updated_at, cloud_synced_at, sync_status, attempt_count, last_error)
204
+ VALUES ('task', NEW.id, NEW.updated_at, NULL, 'pending', 0, NULL)
205
+ ON CONFLICT(record_type, record_id) DO UPDATE SET
206
+ local_updated_at = excluded.local_updated_at,
207
+ sync_status = 'pending',
208
+ last_error = NULL;
209
+ END;
210
+
211
+ CREATE TRIGGER IF NOT EXISTS trg_tasks_sync_ledger_update
212
+ AFTER UPDATE ON tasks
213
+ BEGIN
214
+ INSERT INTO sync_ledger (record_type, record_id, local_updated_at, cloud_synced_at, sync_status, attempt_count, last_error)
215
+ VALUES ('task', NEW.id, NEW.updated_at, NULL, 'pending', 0, NULL)
216
+ ON CONFLICT(record_type, record_id) DO UPDATE SET
217
+ local_updated_at = excluded.local_updated_at,
218
+ sync_status = 'pending',
219
+ last_error = NULL;
220
+ END;
221
+
222
+ CREATE TRIGGER IF NOT EXISTS trg_tasks_sync_ledger_delete
223
+ AFTER DELETE ON tasks
224
+ BEGIN
225
+ DELETE FROM sync_ledger
226
+ WHERE record_type = 'task' AND record_id = OLD.id;
227
+ END;
228
+ `,
229
+ },
230
+ {
231
+ version: 3,
232
+ sql: `
233
+ -- Inbox state moved from per-agent files to SQLite
234
+ CREATE TABLE IF NOT EXISTS inbox_states (
235
+ agent TEXT PRIMARY KEY,
236
+ subscriptions TEXT NOT NULL, -- JSON array
237
+ last_read_timestamp INTEGER NOT NULL DEFAULT 0,
238
+ last_updated INTEGER NOT NULL
239
+ );
240
+
241
+ CREATE TABLE IF NOT EXISTS inbox_acks (
242
+ agent TEXT NOT NULL,
243
+ message_id TEXT NOT NULL,
244
+ acked_at INTEGER NOT NULL,
245
+ PRIMARY KEY (agent, message_id)
246
+ );
247
+
248
+ CREATE INDEX IF NOT EXISTS idx_inbox_acks_agent ON inbox_acks(agent);
249
+ CREATE INDEX IF NOT EXISTS idx_inbox_acks_message_id ON inbox_acks(message_id);
250
+ `,
251
+ },
252
+ {
253
+ version: 4,
254
+ sql: 'SELECT 1', // Vector tables initialized via initVectorTables() after extension load
255
+ },
256
+ {
257
+ version: 5,
258
+ sql: `
259
+ -- Focus mode persistence across restarts
260
+ CREATE TABLE IF NOT EXISTS focus_states (
261
+ agent TEXT PRIMARY KEY,
262
+ active INTEGER NOT NULL DEFAULT 0,
263
+ level TEXT NOT NULL DEFAULT 'soft',
264
+ started_at INTEGER NOT NULL DEFAULT 0,
265
+ expires_at INTEGER,
266
+ reason TEXT,
267
+ updated_at INTEGER NOT NULL
268
+ );
269
+ `,
270
+ },
271
+ {
272
+ version: 6,
273
+ sql: `
274
+ ALTER TABLE tasks ADD COLUMN team_id TEXT;
275
+ CREATE INDEX IF NOT EXISTS idx_tasks_team_id ON tasks(team_id);
276
+ `,
277
+ },
278
+ {
279
+ version: 7,
280
+ sql: `
281
+ CREATE TABLE IF NOT EXISTS reflections (
282
+ id TEXT PRIMARY KEY,
283
+ pain TEXT NOT NULL,
284
+ impact TEXT NOT NULL,
285
+ evidence TEXT NOT NULL, -- JSON array of strings
286
+ went_well TEXT NOT NULL,
287
+ suspected_why TEXT NOT NULL,
288
+ proposed_fix TEXT NOT NULL,
289
+ confidence REAL NOT NULL, -- 0-10
290
+ role_type TEXT NOT NULL, -- engineering|product|ops|comms|growth|support|sales|finance|hr|other
291
+ severity TEXT, -- low|medium|high|critical (nullable)
292
+ author TEXT NOT NULL,
293
+ task_id TEXT, -- optional link to originating task
294
+ tags TEXT, -- JSON array (nullable)
295
+ team_id TEXT, -- optional team scope
296
+ metadata TEXT, -- JSON object (nullable)
297
+ created_at INTEGER NOT NULL,
298
+ updated_at INTEGER NOT NULL
299
+ );
300
+ CREATE INDEX IF NOT EXISTS idx_reflections_author ON reflections(author);
301
+ CREATE INDEX IF NOT EXISTS idx_reflections_role_type ON reflections(role_type);
302
+ CREATE INDEX IF NOT EXISTS idx_reflections_severity ON reflections(severity);
303
+ CREATE INDEX IF NOT EXISTS idx_reflections_task_id ON reflections(task_id);
304
+ CREATE INDEX IF NOT EXISTS idx_reflections_created_at ON reflections(created_at);
305
+ `,
306
+ },
307
+ {
308
+ version: 8,
309
+ sql: `
310
+ CREATE TABLE IF NOT EXISTS insights (
311
+ id TEXT PRIMARY KEY,
312
+ cluster_key TEXT NOT NULL,
313
+ workflow_stage TEXT NOT NULL,
314
+ failure_family TEXT NOT NULL,
315
+ impacted_unit TEXT NOT NULL,
316
+ title TEXT NOT NULL,
317
+ status TEXT NOT NULL DEFAULT 'candidate',
318
+ score REAL NOT NULL DEFAULT 0,
319
+ priority TEXT NOT NULL DEFAULT 'P3',
320
+ reflection_ids TEXT NOT NULL, -- JSON array
321
+ independent_count INTEGER NOT NULL DEFAULT 0,
322
+ evidence_refs TEXT NOT NULL, -- JSON array
323
+ authors TEXT NOT NULL, -- JSON array
324
+ promotion_readiness TEXT NOT NULL DEFAULT 'not_ready',
325
+ recurring_candidate INTEGER NOT NULL DEFAULT 0,
326
+ cooldown_until INTEGER,
327
+ cooldown_reason TEXT,
328
+ severity_max TEXT,
329
+ task_id TEXT,
330
+ metadata TEXT,
331
+ created_at INTEGER NOT NULL,
332
+ updated_at INTEGER NOT NULL
333
+ );
334
+ CREATE INDEX IF NOT EXISTS idx_insights_cluster_key ON insights(cluster_key);
335
+ CREATE INDEX IF NOT EXISTS idx_insights_status ON insights(status);
336
+ CREATE INDEX IF NOT EXISTS idx_insights_priority ON insights(priority);
337
+ CREATE INDEX IF NOT EXISTS idx_insights_score ON insights(score);
338
+ `,
339
+ },
340
+ {
341
+ version: 9,
342
+ // task_id now in base schema; ALTER handled via runFn for legacy DBs
343
+ runFn: (database) => {
344
+ const cols = database.pragma('table_info(insights)');
345
+ if (!cols.some(c => c.name === 'task_id')) {
346
+ database.exec('ALTER TABLE insights ADD COLUMN task_id TEXT');
347
+ }
348
+ },
349
+ },
350
+ {
351
+ version: 10,
352
+ sql: `
353
+ CREATE TABLE IF NOT EXISTS mention_rescue_state (
354
+ thread_key TEXT PRIMARY KEY,
355
+ message_ids TEXT NOT NULL DEFAULT '[]',
356
+ rescued_at INTEGER NOT NULL,
357
+ rescue_count INTEGER NOT NULL DEFAULT 1
358
+ );
359
+ `,
360
+ },
361
+ {
362
+ version: 11,
363
+ // Add task_id column to insights table for insight→task linkage
364
+ runFn: (db) => {
365
+ // Check if column already exists (idempotent)
366
+ const cols = db.prepare("PRAGMA table_info(insights)").all();
367
+ if (!cols.some(c => c.name === 'task_id')) {
368
+ db.exec("ALTER TABLE insights ADD COLUMN task_id TEXT DEFAULT NULL");
369
+ }
370
+ db.exec("CREATE INDEX IF NOT EXISTS idx_insights_task_id ON insights(task_id)");
371
+ },
372
+ },
373
+ {
374
+ version: 12,
375
+ // Compound indexes for hot query paths — eliminates TEMP B-TREE sorts
376
+ // on chat_messages (92K+ rows) and tasks (900+ rows) under concurrent agent load.
377
+ sql: `
378
+ CREATE INDEX IF NOT EXISTS idx_chat_messages_channel_ts ON chat_messages(channel, timestamp DESC);
379
+ CREATE INDEX IF NOT EXISTS idx_chat_messages_from_ts ON chat_messages("from", timestamp DESC);
380
+ CREATE INDEX IF NOT EXISTS idx_tasks_assignee_status ON tasks(assignee, status);
381
+ CREATE INDEX IF NOT EXISTS idx_tasks_status_priority ON tasks(status, priority);
382
+ `,
383
+ },
384
+ {
385
+ version: 13,
386
+ // Task comment comms_policy suppression metadata
387
+ runFn: (db) => {
388
+ const table = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='task_comments'").get();
389
+ if (!table) {
390
+ // Some synthetic migration tests construct partial pre-v1 schemas.
391
+ // If task_comments does not exist, skip this migration safely.
392
+ return;
393
+ }
394
+ const cols = db.prepare('PRAGMA table_info(task_comments)').all();
395
+ const has = (name) => cols.some(c => c.name === name);
396
+ if (!has('category'))
397
+ db.exec('ALTER TABLE task_comments ADD COLUMN category TEXT');
398
+ if (!has('suppressed'))
399
+ db.exec('ALTER TABLE task_comments ADD COLUMN suppressed INTEGER NOT NULL DEFAULT 0');
400
+ if (!has('suppressed_reason'))
401
+ db.exec('ALTER TABLE task_comments ADD COLUMN suppressed_reason TEXT');
402
+ if (!has('suppressed_rule'))
403
+ db.exec('ALTER TABLE task_comments ADD COLUMN suppressed_rule TEXT');
404
+ db.exec('CREATE INDEX IF NOT EXISTS idx_task_comments_task_id_ts ON task_comments(task_id, timestamp ASC)');
405
+ db.exec('CREATE INDEX IF NOT EXISTS idx_task_comments_task_id_suppressed ON task_comments(task_id, suppressed)');
406
+ },
407
+ },
408
+ {
409
+ version: 14,
410
+ sql: `
411
+ -- Persistent suppression ledger for system message deduplication
412
+ CREATE TABLE IF NOT EXISTS suppression_ledger (
413
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
414
+ dedup_key TEXT NOT NULL,
415
+ category TEXT NOT NULL,
416
+ channel TEXT NOT NULL,
417
+ "from" TEXT NOT NULL,
418
+ content_preview TEXT,
419
+ first_seen_at INTEGER NOT NULL,
420
+ last_seen_at INTEGER NOT NULL,
421
+ hit_count INTEGER NOT NULL DEFAULT 1,
422
+ suppressed INTEGER NOT NULL DEFAULT 0,
423
+ window_ms INTEGER NOT NULL DEFAULT 1800000
424
+ );
425
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_suppression_ledger_dedup_key ON suppression_ledger(dedup_key);
426
+ CREATE INDEX IF NOT EXISTS idx_suppression_ledger_last_seen ON suppression_ledger(last_seen_at);
427
+ CREATE INDEX IF NOT EXISTS idx_suppression_ledger_channel ON suppression_ledger(channel);
428
+
429
+ -- Add dedup_key column to chat_messages for traceability
430
+ ALTER TABLE chat_messages ADD COLUMN dedup_key TEXT;
431
+ `,
432
+ },
433
+ {
434
+ version: 15,
435
+ sql: `
436
+ -- Context budget memos (persisted summaries)
437
+ CREATE TABLE IF NOT EXISTS context_memos (
438
+ scope_id TEXT NOT NULL,
439
+ layer TEXT NOT NULL,
440
+ memo_version INTEGER NOT NULL DEFAULT 1,
441
+ content TEXT NOT NULL,
442
+ source_window TEXT, -- JSON object
443
+ source_hash TEXT,
444
+ created_at INTEGER NOT NULL,
445
+ updated_at INTEGER NOT NULL,
446
+ PRIMARY KEY (scope_id, layer)
447
+ );
448
+
449
+ CREATE INDEX IF NOT EXISTS idx_context_memos_updated_at ON context_memos(updated_at);
450
+ `,
451
+ },
452
+ {
453
+ version: 16,
454
+ sql: `
455
+ -- Host registry: remote hosts phone-home via heartbeat
456
+ CREATE TABLE IF NOT EXISTS hosts (
457
+ id TEXT PRIMARY KEY,
458
+ hostname TEXT,
459
+ os TEXT,
460
+ arch TEXT,
461
+ ip TEXT,
462
+ version TEXT,
463
+ agents TEXT, -- JSON array of agent names
464
+ metadata TEXT, -- JSON object
465
+ status TEXT NOT NULL DEFAULT 'online',
466
+ last_seen_at INTEGER NOT NULL,
467
+ registered_at INTEGER NOT NULL
468
+ );
469
+
470
+ CREATE INDEX IF NOT EXISTS idx_hosts_last_seen ON hosts(last_seen_at);
471
+ CREATE INDEX IF NOT EXISTS idx_hosts_status ON hosts(status);
472
+ `,
473
+ },
474
+ {
475
+ version: 17,
476
+ sql: `
477
+ -- Persisted loop tick timestamps for /health/system
478
+ CREATE TABLE IF NOT EXISTS system_loop_ticks (
479
+ name TEXT PRIMARY KEY,
480
+ last_tick_at INTEGER NOT NULL
481
+ );
482
+ `,
483
+ },
484
+ {
485
+ version: 18,
486
+ sql: `
487
+ -- Chat message attachments (JSON array of file references)
488
+ ALTER TABLE chat_messages ADD COLUMN attachments TEXT;
489
+ `,
490
+ },
491
+ ];
492
+ const insertMigration = db.prepare('INSERT INTO _migrations (version) VALUES (?)');
493
+ for (const migration of migrations) {
494
+ if (migration.version > version) {
495
+ if ('runFn' in migration && typeof migration.runFn === 'function') {
496
+ migration.runFn(db);
497
+ }
498
+ else if ('sql' in migration) {
499
+ db.exec(migration.sql);
500
+ }
501
+ insertMigration.run(migration.version);
502
+ console.log(`[DB] Applied migration v${migration.version}`);
503
+ }
504
+ }
505
+ // ── Migration integrity check ──────────────────────────────────────────
506
+ // Verify tables that should exist actually do. If a migration was recorded
507
+ // as applied but the table is missing (e.g. transaction anomaly), re-run
508
+ // the SQL to recreate it. Only covers SQL-based migrations with CREATE TABLE.
509
+ const expectedTables = [
510
+ { version: 1, tables: ['tasks', 'task_comments', 'task_history', 'recurring_tasks', 'chat_messages', 'inbox'] },
511
+ { version: 2, tables: ['sync_ledger'] },
512
+ { version: 3, tables: ['inbox_states', 'inbox_acks'] },
513
+ { version: 5, tables: ['focus_states'] },
514
+ { version: 7, tables: ['reflections'] },
515
+ { version: 8, tables: ['insights'] },
516
+ { version: 10, tables: ['mention_rescue_state'] },
517
+ { version: 14, tables: ['suppression_ledger'] },
518
+ { version: 15, tables: ['context_memos'] },
519
+ { version: 16, tables: ['hosts'] },
520
+ { version: 17, tables: ['system_loop_ticks'] },
521
+ ];
522
+ const existingTables = new Set(db.prepare("SELECT name FROM sqlite_master WHERE type='table'").all()
523
+ .map(r => r.name));
524
+ const appliedVersions = new Set(db.prepare('SELECT version FROM _migrations').all()
525
+ .map(r => r.version));
526
+ for (const entry of expectedTables) {
527
+ if (!appliedVersions.has(entry.version))
528
+ continue; // not yet applied — skip
529
+ const missing = entry.tables.filter(t => !existingTables.has(t));
530
+ if (missing.length === 0)
531
+ continue;
532
+ // Find the migration SQL and re-run it
533
+ const migration = migrations.find(m => m.version === entry.version);
534
+ if (migration && 'sql' in migration && migration.sql) {
535
+ console.warn(`[DB] Migration v${entry.version} recorded but tables missing: ${missing.join(', ')}. Re-running SQL.`);
536
+ db.exec(migration.sql);
537
+ }
538
+ else if (migration && 'runFn' in migration && typeof migration.runFn === 'function') {
539
+ console.warn(`[DB] Migration v${entry.version} recorded but tables missing: ${missing.join(', ')}. Re-running function.`);
540
+ migration.runFn(db);
541
+ }
542
+ }
543
+ }
544
+ // ---- JSONL import helpers ----
545
+ /**
546
+ * Import data from a JSONL file into a table
547
+ * Used for one-time migration from JSONL → SQLite on first boot
548
+ */
549
+ export function importJsonlIfNeeded(db, jsonlPath, tableName, importFn) {
550
+ // Check if table already has data
551
+ const count = db.prepare(`SELECT COUNT(*) as c FROM ${tableName}`).get();
552
+ if (count.c > 0)
553
+ return 0;
554
+ if (!existsSync(jsonlPath))
555
+ return 0;
556
+ try {
557
+ const content = readFileSync(jsonlPath, 'utf-8');
558
+ const records = content
559
+ .split('\n')
560
+ .filter(line => line.trim().length > 0)
561
+ .map(line => {
562
+ try {
563
+ return JSON.parse(line);
564
+ }
565
+ catch {
566
+ return null;
567
+ }
568
+ })
569
+ .filter(Boolean);
570
+ if (records.length === 0)
571
+ return 0;
572
+ const imported = importFn(db, records);
573
+ console.log(`[DB] Imported ${imported} records from ${jsonlPath} → ${tableName}`);
574
+ return imported;
575
+ }
576
+ catch (err) {
577
+ console.error(`[DB] Failed to import ${jsonlPath}:`, err?.message);
578
+ return 0;
579
+ }
580
+ }
581
+ /**
582
+ * Helper to safely parse JSON or return null
583
+ */
584
+ export function safeJsonStringify(value) {
585
+ if (value === null || value === undefined)
586
+ return null;
587
+ try {
588
+ return JSON.stringify(value);
589
+ }
590
+ catch {
591
+ return null;
592
+ }
593
+ }
594
+ /**
595
+ * Helper to safely parse JSON string
596
+ */
597
+ export function safeJsonParse(value) {
598
+ if (!value)
599
+ return undefined;
600
+ try {
601
+ return JSON.parse(value);
602
+ }
603
+ catch {
604
+ return undefined;
605
+ }
606
+ }
607
+ /**
608
+ * SQLite-vec helper utilities.
609
+ *
610
+ * Kept in db.ts so search/indexing code can depend on one storage module
611
+ * while embeddings implementation stays isolated in src/embeddings.ts.
612
+ */
613
+ export async function embedTextForDb(text) {
614
+ const { embed } = await import('./embeddings.js');
615
+ return embed(text);
616
+ }
617
+ export async function embedBatchForDb(texts) {
618
+ const { embedBatch } = await import('./embeddings.js');
619
+ return embedBatch(texts);
620
+ }
621
+ /**
622
+ * Initialize vector search tables (sqlite-vec).
623
+ * Called lazily on first vector operation or explicitly at startup.
624
+ * Safe to call multiple times.
625
+ */
626
+ let _vecInitialized = false;
627
+ export function initVectorSearch() {
628
+ if (_vecInitialized)
629
+ return;
630
+ try {
631
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
632
+ const { initVectorTables } = require('./vector-store.js');
633
+ const db = getDb();
634
+ initVectorTables(db);
635
+ _vecInitialized = true;
636
+ console.log('[DB] Vector search tables initialized');
637
+ }
638
+ catch (err) {
639
+ console.warn('[DB] Vector search not available:', err?.message);
640
+ }
641
+ }
642
+ export function isVectorSearchAvailable() {
643
+ return _vecInitialized;
644
+ }
645
+ export function resetVecInitForTests() {
646
+ _vecInitialized = false;
647
+ }
648
+ //# sourceMappingURL=db.js.map
package/dist/db.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,4BAA4B;AAE5B;;;;;GAKG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;AAE7C,IAAI,GAAG,GAA6B,IAAI,CAAA;AAExC;;GAEG;AACH,MAAM,UAAU,KAAK;IACnB,IAAI,GAAG;QAAE,OAAO,GAAG,CAAA;IAEnB,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAExC,GAAG,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAA;IAE3B,2DAA2D;IAC3D,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAChC,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;IAClC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAE/B,8DAA8D;IAC9D,uEAAuE;IACvE,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;IAEjC,8EAA8E;IAC9E,GAAG,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAA;IAEvC,0EAA0E;IAC1E,IAAI,CAAC;QACH,GAAG,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;IAED,wBAAwB;IACxB,aAAa,CAAC,GAAG,CAAC,CAAA;IAElB,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO;IACrB,IAAI,GAAG,EAAE,CAAC;QACR,GAAG,CAAC,KAAK,EAAE,CAAA;QACX,GAAG,GAAG,IAAI,CAAA;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,kCAAkC;IAClC,EAAE,CAAC,IAAI,CAAC;;;;;GAKP,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,EAA0B,CAAA;IAC5G,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC,IAAI,CAAC,CAAA;IAEtC,MAAM,UAAU,GAAsF;QACpG;YACE,OAAO,EAAE,CAAC;YACV,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0GJ;SACF;QACD;YACE,OAAO,EAAE,CAAC;YACV,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkDJ;SACF;QACD;YACE,OAAO,EAAE,CAAC;YACV,GAAG,EAAE;;;;;;;;;;;;;;;;;;OAkBJ;SACF;QACD;YACE,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,UAAU,EAAE,wEAAwE;SAC1F;QACD;YACE,OAAO,EAAE,CAAC;YACV,GAAG,EAAE;;;;;;;;;;;OAWJ;SACF;QACD;YACE,OAAO,EAAE,CAAC;YACV,GAAG,EAAE;;;OAGJ;SACF;QACD;YACE,OAAO,EAAE,CAAC;YACV,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBJ;SACF;QACD;YACE,OAAO,EAAE,CAAC;YACV,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BJ;SACF;QACD;YACE,OAAO,EAAE,CAAC;YACV,qEAAqE;YACrE,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAA4B,CAAA;gBAC/E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;oBAC1C,QAAQ,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;gBAC/D,CAAC;YACH,CAAC;SACF;QACD;YACE,OAAO,EAAE,EAAE;YACX,GAAG,EAAE;;;;;;;OAOJ;SACF;QACD;YACE,OAAO,EAAE,EAAE;YACX,gEAAgE;YAChE,KAAK,EAAE,CAAC,EAAqB,EAAE,EAAE;gBAC/B,8CAA8C;gBAC9C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAA6B,CAAA;gBACvF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;oBAC1C,EAAE,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;gBACtE,CAAC;gBACD,EAAE,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;YACjF,CAAC;SACF;QACD;YACE,OAAO,EAAE,EAAE;YACX,sEAAsE;YACtE,kFAAkF;YAClF,GAAG,EAAE;;;;;OAKJ;SACF;QACD;YACE,OAAO,EAAE,EAAE;YACX,iDAAiD;YACjD,KAAK,EAAE,CAAC,EAAqB,EAAE,EAAE;gBAC/B,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,4EAA4E,CAAC,CAAC,GAAG,EAAkC,CAAA;gBAC5I,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,mEAAmE;oBACnE,+DAA+D;oBAC/D,OAAM;gBACR,CAAC;gBAED,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,EAA6B,CAAA;gBAC5F,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;gBAE7D,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;oBAAE,EAAE,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;gBACnF,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;oBAAE,EAAE,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAA;gBAC7G,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC;oBAAE,EAAE,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;gBACrG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;oBAAE,EAAE,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;gBAEjG,EAAE,CAAC,IAAI,CAAC,kGAAkG,CAAC,CAAA;gBAC3G,EAAE,CAAC,IAAI,CAAC,uGAAuG,CAAC,CAAA;YAClH,CAAC;SACF;QACD;YACE,OAAO,EAAE,EAAE;YACX,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;OAqBJ;SACF;QACD;YACE,OAAO,EAAE,EAAE;YACX,GAAG,EAAE;;;;;;;;;;;;;;;OAeJ;SACF;QACD;YACE,OAAO,EAAE,EAAE;YACX,GAAG,EAAE;;;;;;;;;;;;;;;;;;OAkBJ;SACF;QACD;YACE,OAAO,EAAE,EAAE;YACX,GAAG,EAAE;;;;;;OAMJ;SACF;QACD;YACE,OAAO,EAAE,EAAE;YACX,GAAG,EAAE;;;OAGJ;SACF;KACF,CAAA;IAED,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAA;IAElF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;YAChC,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBAClE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACrB,CAAC;iBAAM,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC9B,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAa,CAAC,CAAA;YAClC,CAAC;YACD,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACtC,OAAO,CAAC,GAAG,CAAC,2BAA2B,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,yEAAyE;IACzE,8EAA8E;IAE9E,MAAM,cAAc,GAAiD;QACnE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;QAC/G,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE;QACvC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,EAAE;QACtD,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE;QACxC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE;QACvC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE;QACpC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,sBAAsB,CAAC,EAAE;QACjD,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,oBAAoB,CAAC,EAAE;QAC/C,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE;QAC1C,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAClC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,mBAAmB,CAAC,EAAE;KAC/C,CAAA;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAC3B,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,EAA8B;SAC/F,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACpB,CAAA;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAC5B,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,GAAG,EAAiC;SAChF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CACvB,CAAA;IAED,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,SAAQ,CAAC,yBAAyB;QAE3E,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAElC,uCAAuC;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAA;QACnE,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,OAAO,iCAAiC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YACpH,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;aAAM,IAAI,SAAS,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACtF,OAAO,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,OAAO,iCAAiC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;YACzH,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;AACH,CAAC;AAED,iCAAiC;AAEjC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAqB,EACrB,SAAiB,EACjB,SAAiB,EACjB,QAA+D;IAE/D,kCAAkC;IAClC,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC,GAAG,EAAmB,CAAA;IACzF,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IAEzB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,CAAC,CAAA;IAEpC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAChD,MAAM,OAAO,GAAG,OAAO;aACpB,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;aACtC,GAAG,CAAC,IAAI,CAAC,EAAE;YACV,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC,CAAA;QAElB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAA;QAElC,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;QACtC,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,iBAAiB,SAAS,MAAM,SAAS,EAAE,CAAC,CAAA;QACjF,OAAO,QAAQ,CAAA;IACjB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,yBAAyB,SAAS,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;QAClE,OAAO,CAAC,CAAA;IACV,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACtD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAc,KAAgC;IACzE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAA;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAA;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAe;IACnD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACtD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED;;;;GAIG;AACH,IAAI,eAAe,GAAG,KAAK,CAAA;AAC3B,MAAM,UAAU,gBAAgB;IAC9B,IAAI,eAAe;QAAE,OAAM;IAC3B,IAAI,CAAC;QACH,iEAAiE;QACjE,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;QACzD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;QAClB,gBAAgB,CAAC,EAAE,CAAC,CAAA;QACpB,eAAe,GAAG,IAAI,CAAA;QACtB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAA;IACtD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;IACjE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,eAAe,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,eAAe,GAAG,KAAK,CAAA;AACzB,CAAC"}
@@ -0,0 +1,30 @@
1
+ export type DoctorFetch = (input: string | URL, init?: RequestInit) => Promise<Response>;
2
+ export type DoctorSectionResult = {
3
+ ok: boolean;
4
+ status?: number;
5
+ ms?: number;
6
+ error?: string;
7
+ data?: any;
8
+ };
9
+ export type DoctorReport = {
10
+ baseUrl: string;
11
+ timestamp: number;
12
+ overall: 'pass' | 'warn' | 'fail';
13
+ ok: boolean;
14
+ sections: {
15
+ health: DoctorSectionResult;
16
+ system: DoctorSectionResult;
17
+ execution: DoctorSectionResult;
18
+ policy: DoctorSectionResult;
19
+ teamDoctor: DoctorSectionResult;
20
+ preflight: DoctorSectionResult;
21
+ };
22
+ hints: string[];
23
+ };
24
+ export declare function collectDoctorReport(input: {
25
+ baseUrl: string;
26
+ timeoutMs?: number;
27
+ fetchFn?: DoctorFetch;
28
+ }): Promise<DoctorReport>;
29
+ export declare function formatDoctorHuman(report: DoctorReport): string;
30
+ //# sourceMappingURL=doctor.d.ts.map