@runcore-sh/runcore 0.1.2

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 (1112) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +353 -0
  3. package/dist/activity/log.d.ts +37 -0
  4. package/dist/activity/log.d.ts.map +1 -0
  5. package/dist/activity/log.js +259 -0
  6. package/dist/activity/log.js.map +1 -0
  7. package/dist/adapters/storage/gdrive-backup.d.ts +20 -0
  8. package/dist/adapters/storage/gdrive-backup.d.ts.map +1 -0
  9. package/dist/adapters/storage/gdrive-backup.js +244 -0
  10. package/dist/adapters/storage/gdrive-backup.js.map +1 -0
  11. package/dist/adapters/storage/local.d.ts +19 -0
  12. package/dist/adapters/storage/local.d.ts.map +1 -0
  13. package/dist/adapters/storage/local.js +101 -0
  14. package/dist/adapters/storage/local.js.map +1 -0
  15. package/dist/adapters/storage/types.d.ts +44 -0
  16. package/dist/adapters/storage/types.d.ts.map +1 -0
  17. package/dist/adapters/storage/types.js +6 -0
  18. package/dist/adapters/storage/types.js.map +1 -0
  19. package/dist/agents/autonomous.d.ts +67 -0
  20. package/dist/agents/autonomous.d.ts.map +1 -0
  21. package/dist/agents/autonomous.js +710 -0
  22. package/dist/agents/autonomous.js.map +1 -0
  23. package/dist/agents/commit.d.ts +22 -0
  24. package/dist/agents/commit.d.ts.map +1 -0
  25. package/dist/agents/commit.js +120 -0
  26. package/dist/agents/commit.js.map +1 -0
  27. package/dist/agents/continue.d.ts +19 -0
  28. package/dist/agents/continue.d.ts.map +1 -0
  29. package/dist/agents/continue.js +158 -0
  30. package/dist/agents/continue.js.map +1 -0
  31. package/dist/agents/cooldown.d.ts +127 -0
  32. package/dist/agents/cooldown.d.ts.map +1 -0
  33. package/dist/agents/cooldown.js +396 -0
  34. package/dist/agents/cooldown.js.map +1 -0
  35. package/dist/agents/dedup-guard.d.ts +15 -0
  36. package/dist/agents/dedup-guard.d.ts.map +1 -0
  37. package/dist/agents/dedup-guard.js +128 -0
  38. package/dist/agents/dedup-guard.js.map +1 -0
  39. package/dist/agents/index.d.ts +34 -0
  40. package/dist/agents/index.d.ts.map +1 -0
  41. package/dist/agents/index.js +51 -0
  42. package/dist/agents/index.js.map +1 -0
  43. package/dist/agents/instance-manager.d.ts +262 -0
  44. package/dist/agents/instance-manager.d.ts.map +1 -0
  45. package/dist/agents/instance-manager.js +850 -0
  46. package/dist/agents/instance-manager.js.map +1 -0
  47. package/dist/agents/locks.d.ts +81 -0
  48. package/dist/agents/locks.d.ts.map +1 -0
  49. package/dist/agents/locks.js +234 -0
  50. package/dist/agents/locks.js.map +1 -0
  51. package/dist/agents/memory.d.ts +37 -0
  52. package/dist/agents/memory.d.ts.map +1 -0
  53. package/dist/agents/memory.js +92 -0
  54. package/dist/agents/memory.js.map +1 -0
  55. package/dist/agents/monitor.d.ts +16 -0
  56. package/dist/agents/monitor.d.ts.map +1 -0
  57. package/dist/agents/monitor.js +235 -0
  58. package/dist/agents/monitor.js.map +1 -0
  59. package/dist/agents/orchestration.d.ts +218 -0
  60. package/dist/agents/orchestration.d.ts.map +1 -0
  61. package/dist/agents/orchestration.js +715 -0
  62. package/dist/agents/orchestration.js.map +1 -0
  63. package/dist/agents/recover.d.ts +30 -0
  64. package/dist/agents/recover.d.ts.map +1 -0
  65. package/dist/agents/recover.js +166 -0
  66. package/dist/agents/recover.js.map +1 -0
  67. package/dist/agents/reflection.d.ts +36 -0
  68. package/dist/agents/reflection.d.ts.map +1 -0
  69. package/dist/agents/reflection.js +198 -0
  70. package/dist/agents/reflection.js.map +1 -0
  71. package/dist/agents/runtime/bus.d.ts +46 -0
  72. package/dist/agents/runtime/bus.d.ts.map +1 -0
  73. package/dist/agents/runtime/bus.js +174 -0
  74. package/dist/agents/runtime/bus.js.map +1 -0
  75. package/dist/agents/runtime/config.d.ts +14 -0
  76. package/dist/agents/runtime/config.d.ts.map +1 -0
  77. package/dist/agents/runtime/config.js +100 -0
  78. package/dist/agents/runtime/config.js.map +1 -0
  79. package/dist/agents/runtime/driver.d.ts +25 -0
  80. package/dist/agents/runtime/driver.d.ts.map +1 -0
  81. package/dist/agents/runtime/driver.js +215 -0
  82. package/dist/agents/runtime/driver.js.map +1 -0
  83. package/dist/agents/runtime/errors.d.ts +30 -0
  84. package/dist/agents/runtime/errors.d.ts.map +1 -0
  85. package/dist/agents/runtime/errors.js +40 -0
  86. package/dist/agents/runtime/errors.js.map +1 -0
  87. package/dist/agents/runtime/index.d.ts +29 -0
  88. package/dist/agents/runtime/index.d.ts.map +1 -0
  89. package/dist/agents/runtime/index.js +54 -0
  90. package/dist/agents/runtime/index.js.map +1 -0
  91. package/dist/agents/runtime/lifecycle.d.ts +46 -0
  92. package/dist/agents/runtime/lifecycle.d.ts.map +1 -0
  93. package/dist/agents/runtime/lifecycle.js +116 -0
  94. package/dist/agents/runtime/lifecycle.js.map +1 -0
  95. package/dist/agents/runtime/manager.d.ts +129 -0
  96. package/dist/agents/runtime/manager.d.ts.map +1 -0
  97. package/dist/agents/runtime/manager.js +947 -0
  98. package/dist/agents/runtime/manager.js.map +1 -0
  99. package/dist/agents/runtime/registry.d.ts +66 -0
  100. package/dist/agents/runtime/registry.d.ts.map +1 -0
  101. package/dist/agents/runtime/registry.js +195 -0
  102. package/dist/agents/runtime/registry.js.map +1 -0
  103. package/dist/agents/runtime/resources.d.ts +49 -0
  104. package/dist/agents/runtime/resources.d.ts.map +1 -0
  105. package/dist/agents/runtime/resources.js +146 -0
  106. package/dist/agents/runtime/resources.js.map +1 -0
  107. package/dist/agents/runtime/types.d.ts +168 -0
  108. package/dist/agents/runtime/types.d.ts.map +1 -0
  109. package/dist/agents/runtime/types.js +24 -0
  110. package/dist/agents/runtime/types.js.map +1 -0
  111. package/dist/agents/runtime.d.ts +240 -0
  112. package/dist/agents/runtime.d.ts.map +1 -0
  113. package/dist/agents/runtime.js +577 -0
  114. package/dist/agents/runtime.js.map +1 -0
  115. package/dist/agents/spawn.d.ts +49 -0
  116. package/dist/agents/spawn.d.ts.map +1 -0
  117. package/dist/agents/spawn.js +975 -0
  118. package/dist/agents/spawn.js.map +1 -0
  119. package/dist/agents/store.d.ts +29 -0
  120. package/dist/agents/store.d.ts.map +1 -0
  121. package/dist/agents/store.js +174 -0
  122. package/dist/agents/store.js.map +1 -0
  123. package/dist/agents/triage.d.ts +23 -0
  124. package/dist/agents/triage.d.ts.map +1 -0
  125. package/dist/agents/triage.js +81 -0
  126. package/dist/agents/triage.js.map +1 -0
  127. package/dist/agents/types.d.ts +37 -0
  128. package/dist/agents/types.d.ts.map +1 -0
  129. package/dist/agents/types.js +2 -0
  130. package/dist/agents/types.js.map +1 -0
  131. package/dist/agents/workflow.d.ts +137 -0
  132. package/dist/agents/workflow.d.ts.map +1 -0
  133. package/dist/agents/workflow.js +542 -0
  134. package/dist/agents/workflow.js.map +1 -0
  135. package/dist/auth/crypto.d.ts +22 -0
  136. package/dist/auth/crypto.d.ts.map +1 -0
  137. package/dist/auth/crypto.js +42 -0
  138. package/dist/auth/crypto.js.map +1 -0
  139. package/dist/auth/identity.d.ts +89 -0
  140. package/dist/auth/identity.d.ts.map +1 -0
  141. package/dist/auth/identity.js +264 -0
  142. package/dist/auth/identity.js.map +1 -0
  143. package/dist/avatar/client.d.ts +34 -0
  144. package/dist/avatar/client.d.ts.map +1 -0
  145. package/dist/avatar/client.js +172 -0
  146. package/dist/avatar/client.js.map +1 -0
  147. package/dist/avatar/sidecar.d.ts +16 -0
  148. package/dist/avatar/sidecar.d.ts.map +1 -0
  149. package/dist/avatar/sidecar.js +125 -0
  150. package/dist/avatar/sidecar.js.map +1 -0
  151. package/dist/board/provider.d.ts +13 -0
  152. package/dist/board/provider.d.ts.map +1 -0
  153. package/dist/board/provider.js +19 -0
  154. package/dist/board/provider.js.map +1 -0
  155. package/dist/board/types.d.ts +76 -0
  156. package/dist/board/types.d.ts.map +1 -0
  157. package/dist/board/types.js +7 -0
  158. package/dist/board/types.js.map +1 -0
  159. package/dist/brain/skills.d.ts +177 -0
  160. package/dist/brain/skills.d.ts.map +1 -0
  161. package/dist/brain/skills.js +452 -0
  162. package/dist/brain/skills.js.map +1 -0
  163. package/dist/brain.d.ts +42 -0
  164. package/dist/brain.d.ts.map +1 -0
  165. package/dist/brain.js +98 -0
  166. package/dist/brain.js.map +1 -0
  167. package/dist/browser/sessions.d.ts +23 -0
  168. package/dist/browser/sessions.d.ts.map +1 -0
  169. package/dist/browser/sessions.js +121 -0
  170. package/dist/browser/sessions.js.map +1 -0
  171. package/dist/cache/file.d.ts +56 -0
  172. package/dist/cache/file.d.ts.map +1 -0
  173. package/dist/cache/file.js +176 -0
  174. package/dist/cache/file.js.map +1 -0
  175. package/dist/cache/index.d.ts +64 -0
  176. package/dist/cache/index.d.ts.map +1 -0
  177. package/dist/cache/index.js +108 -0
  178. package/dist/cache/index.js.map +1 -0
  179. package/dist/cache/keys.d.ts +29 -0
  180. package/dist/cache/keys.d.ts.map +1 -0
  181. package/dist/cache/keys.js +52 -0
  182. package/dist/cache/keys.js.map +1 -0
  183. package/dist/cache/llm-cache.d.ts +70 -0
  184. package/dist/cache/llm-cache.d.ts.map +1 -0
  185. package/dist/cache/llm-cache.js +165 -0
  186. package/dist/cache/llm-cache.js.map +1 -0
  187. package/dist/cache/memory.d.ts +53 -0
  188. package/dist/cache/memory.d.ts.map +1 -0
  189. package/dist/cache/memory.js +114 -0
  190. package/dist/cache/memory.js.map +1 -0
  191. package/dist/calendar/google-adapter.d.ts +16 -0
  192. package/dist/calendar/google-adapter.d.ts.map +1 -0
  193. package/dist/calendar/google-adapter.js +163 -0
  194. package/dist/calendar/google-adapter.js.map +1 -0
  195. package/dist/calendar/index.d.ts +8 -0
  196. package/dist/calendar/index.d.ts.map +1 -0
  197. package/dist/calendar/index.js +7 -0
  198. package/dist/calendar/index.js.map +1 -0
  199. package/dist/calendar/routes.d.ts +7 -0
  200. package/dist/calendar/routes.d.ts.map +1 -0
  201. package/dist/calendar/routes.js +199 -0
  202. package/dist/calendar/routes.js.map +1 -0
  203. package/dist/calendar/store.d.ts +73 -0
  204. package/dist/calendar/store.d.ts.map +1 -0
  205. package/dist/calendar/store.js +373 -0
  206. package/dist/calendar/store.js.map +1 -0
  207. package/dist/calendar/types.d.ts +99 -0
  208. package/dist/calendar/types.d.ts.map +1 -0
  209. package/dist/calendar/types.js +7 -0
  210. package/dist/calendar/types.js.map +1 -0
  211. package/dist/capabilities/definitions/board.d.ts +7 -0
  212. package/dist/capabilities/definitions/board.d.ts.map +1 -0
  213. package/dist/capabilities/definitions/board.js +232 -0
  214. package/dist/capabilities/definitions/board.js.map +1 -0
  215. package/dist/capabilities/definitions/browser.d.ts +18 -0
  216. package/dist/capabilities/definitions/browser.d.ts.map +1 -0
  217. package/dist/capabilities/definitions/browser.js +242 -0
  218. package/dist/capabilities/definitions/browser.js.map +1 -0
  219. package/dist/capabilities/definitions/calendar-context.d.ts +8 -0
  220. package/dist/capabilities/definitions/calendar-context.d.ts.map +1 -0
  221. package/dist/capabilities/definitions/calendar-context.js +41 -0
  222. package/dist/capabilities/definitions/calendar-context.js.map +1 -0
  223. package/dist/capabilities/definitions/calendar.d.ts +7 -0
  224. package/dist/capabilities/definitions/calendar.d.ts.map +1 -0
  225. package/dist/capabilities/definitions/calendar.js +173 -0
  226. package/dist/capabilities/definitions/calendar.js.map +1 -0
  227. package/dist/capabilities/definitions/docs.d.ts +6 -0
  228. package/dist/capabilities/definitions/docs.d.ts.map +1 -0
  229. package/dist/capabilities/definitions/docs.js +62 -0
  230. package/dist/capabilities/definitions/docs.js.map +1 -0
  231. package/dist/capabilities/definitions/email-context.d.ts +7 -0
  232. package/dist/capabilities/definitions/email-context.d.ts.map +1 -0
  233. package/dist/capabilities/definitions/email-context.js +55 -0
  234. package/dist/capabilities/definitions/email-context.js.map +1 -0
  235. package/dist/capabilities/definitions/email.d.ts +7 -0
  236. package/dist/capabilities/definitions/email.d.ts.map +1 -0
  237. package/dist/capabilities/definitions/email.js +94 -0
  238. package/dist/capabilities/definitions/email.js.map +1 -0
  239. package/dist/capabilities/definitions/task-done.d.ts +10 -0
  240. package/dist/capabilities/definitions/task-done.d.ts.map +1 -0
  241. package/dist/capabilities/definitions/task-done.js +83 -0
  242. package/dist/capabilities/definitions/task-done.js.map +1 -0
  243. package/dist/capabilities/definitions/vault-context.d.ts +12 -0
  244. package/dist/capabilities/definitions/vault-context.d.ts.map +1 -0
  245. package/dist/capabilities/definitions/vault-context.js +62 -0
  246. package/dist/capabilities/definitions/vault-context.js.map +1 -0
  247. package/dist/capabilities/definitions/web-search-context.d.ts +22 -0
  248. package/dist/capabilities/definitions/web-search-context.d.ts.map +1 -0
  249. package/dist/capabilities/definitions/web-search-context.js +60 -0
  250. package/dist/capabilities/definitions/web-search-context.js.map +1 -0
  251. package/dist/capabilities/index.d.ts +18 -0
  252. package/dist/capabilities/index.d.ts.map +1 -0
  253. package/dist/capabilities/index.js +21 -0
  254. package/dist/capabilities/index.js.map +1 -0
  255. package/dist/capabilities/registry.d.ts +84 -0
  256. package/dist/capabilities/registry.d.ts.map +1 -0
  257. package/dist/capabilities/registry.js +248 -0
  258. package/dist/capabilities/registry.js.map +1 -0
  259. package/dist/capabilities/types.d.ts +157 -0
  260. package/dist/capabilities/types.d.ts.map +1 -0
  261. package/dist/capabilities/types.js +35 -0
  262. package/dist/capabilities/types.js.map +1 -0
  263. package/dist/channels/whatsapp.d.ts +88 -0
  264. package/dist/channels/whatsapp.d.ts.map +1 -0
  265. package/dist/channels/whatsapp.js +200 -0
  266. package/dist/channels/whatsapp.js.map +1 -0
  267. package/dist/cli/backup.d.ts +13 -0
  268. package/dist/cli/backup.d.ts.map +1 -0
  269. package/dist/cli/backup.js +176 -0
  270. package/dist/cli/backup.js.map +1 -0
  271. package/dist/cli.d.ts +12 -0
  272. package/dist/cli.d.ts.map +1 -0
  273. package/dist/cli.js +231 -0
  274. package/dist/cli.js.map +1 -0
  275. package/dist/config/defaults.d.ts +45 -0
  276. package/dist/config/defaults.d.ts.map +1 -0
  277. package/dist/config/defaults.js +54 -0
  278. package/dist/config/defaults.js.map +1 -0
  279. package/dist/contacts/index.d.ts +3 -0
  280. package/dist/contacts/index.d.ts.map +1 -0
  281. package/dist/contacts/index.js +2 -0
  282. package/dist/contacts/index.js.map +1 -0
  283. package/dist/contacts/store.d.ts +58 -0
  284. package/dist/contacts/store.d.ts.map +1 -0
  285. package/dist/contacts/store.js +278 -0
  286. package/dist/contacts/store.js.map +1 -0
  287. package/dist/contacts/types.d.ts +47 -0
  288. package/dist/contacts/types.d.ts.map +1 -0
  289. package/dist/contacts/types.js +5 -0
  290. package/dist/contacts/types.js.map +1 -0
  291. package/dist/context/assembler.d.ts +26 -0
  292. package/dist/context/assembler.d.ts.map +1 -0
  293. package/dist/context/assembler.js +65 -0
  294. package/dist/context/assembler.js.map +1 -0
  295. package/dist/context/compaction.d.ts +34 -0
  296. package/dist/context/compaction.d.ts.map +1 -0
  297. package/dist/context/compaction.js +84 -0
  298. package/dist/context/compaction.js.map +1 -0
  299. package/dist/context/index.d.ts +3 -0
  300. package/dist/context/index.d.ts.map +1 -0
  301. package/dist/context/index.js +2 -0
  302. package/dist/context/index.js.map +1 -0
  303. package/dist/core/registry/index.d.ts +12 -0
  304. package/dist/core/registry/index.d.ts.map +1 -0
  305. package/dist/core/registry/index.js +14 -0
  306. package/dist/core/registry/index.js.map +1 -0
  307. package/dist/core/registry/publisher.d.ts +22 -0
  308. package/dist/core/registry/publisher.d.ts.map +1 -0
  309. package/dist/core/registry/publisher.js +195 -0
  310. package/dist/core/registry/publisher.js.map +1 -0
  311. package/dist/core/registry/registry.d.ts +92 -0
  312. package/dist/core/registry/registry.d.ts.map +1 -0
  313. package/dist/core/registry/registry.js +254 -0
  314. package/dist/core/registry/registry.js.map +1 -0
  315. package/dist/core/registry/search.d.ts +12 -0
  316. package/dist/core/registry/search.d.ts.map +1 -0
  317. package/dist/core/registry/search.js +132 -0
  318. package/dist/core/registry/search.js.map +1 -0
  319. package/dist/core/registry/store.d.ts +55 -0
  320. package/dist/core/registry/store.d.ts.map +1 -0
  321. package/dist/core/registry/store.js +185 -0
  322. package/dist/core/registry/store.js.map +1 -0
  323. package/dist/core/registry/types.d.ts +141 -0
  324. package/dist/core/registry/types.d.ts.map +1 -0
  325. package/dist/core/registry/types.js +30 -0
  326. package/dist/core/registry/types.js.map +1 -0
  327. package/dist/core/registry/versions.d.ts +56 -0
  328. package/dist/core/registry/versions.d.ts.map +1 -0
  329. package/dist/core/registry/versions.js +101 -0
  330. package/dist/core/registry/versions.js.map +1 -0
  331. package/dist/credentials/store.d.ts +59 -0
  332. package/dist/credentials/store.d.ts.map +1 -0
  333. package/dist/credentials/store.js +178 -0
  334. package/dist/credentials/store.js.map +1 -0
  335. package/dist/files/agent-api.d.ts +50 -0
  336. package/dist/files/agent-api.d.ts.map +1 -0
  337. package/dist/files/agent-api.js +126 -0
  338. package/dist/files/agent-api.js.map +1 -0
  339. package/dist/files/compress.d.ts +20 -0
  340. package/dist/files/compress.d.ts.map +1 -0
  341. package/dist/files/compress.js +83 -0
  342. package/dist/files/compress.js.map +1 -0
  343. package/dist/files/extract.d.ts +11 -0
  344. package/dist/files/extract.d.ts.map +1 -0
  345. package/dist/files/extract.js +33 -0
  346. package/dist/files/extract.js.map +1 -0
  347. package/dist/files/gdrive.d.ts +56 -0
  348. package/dist/files/gdrive.d.ts.map +1 -0
  349. package/dist/files/gdrive.js +246 -0
  350. package/dist/files/gdrive.js.map +1 -0
  351. package/dist/files/ingest-folder.d.ts +22 -0
  352. package/dist/files/ingest-folder.d.ts.map +1 -0
  353. package/dist/files/ingest-folder.js +71 -0
  354. package/dist/files/ingest-folder.js.map +1 -0
  355. package/dist/files/ingest.d.ts +13 -0
  356. package/dist/files/ingest.d.ts.map +1 -0
  357. package/dist/files/ingest.js +127 -0
  358. package/dist/files/ingest.js.map +1 -0
  359. package/dist/files/manager.d.ts +117 -0
  360. package/dist/files/manager.d.ts.map +1 -0
  361. package/dist/files/manager.js +306 -0
  362. package/dist/files/manager.js.map +1 -0
  363. package/dist/files/store.d.ts +41 -0
  364. package/dist/files/store.d.ts.map +1 -0
  365. package/dist/files/store.js +271 -0
  366. package/dist/files/store.js.map +1 -0
  367. package/dist/files/templates.d.ts +45 -0
  368. package/dist/files/templates.d.ts.map +1 -0
  369. package/dist/files/templates.js +179 -0
  370. package/dist/files/templates.js.map +1 -0
  371. package/dist/files/types.d.ts +115 -0
  372. package/dist/files/types.d.ts.map +1 -0
  373. package/dist/files/types.js +20 -0
  374. package/dist/files/types.js.map +1 -0
  375. package/dist/files/validate.d.ts +15 -0
  376. package/dist/files/validate.d.ts.map +1 -0
  377. package/dist/files/validate.js +213 -0
  378. package/dist/files/validate.js.map +1 -0
  379. package/dist/files/version.d.ts +31 -0
  380. package/dist/files/version.d.ts.map +1 -0
  381. package/dist/files/version.js +129 -0
  382. package/dist/files/version.js.map +1 -0
  383. package/dist/github/client.d.ts +83 -0
  384. package/dist/github/client.d.ts.map +1 -0
  385. package/dist/github/client.js +408 -0
  386. package/dist/github/client.js.map +1 -0
  387. package/dist/github/commit-analysis.d.ts +30 -0
  388. package/dist/github/commit-analysis.d.ts.map +1 -0
  389. package/dist/github/commit-analysis.js +276 -0
  390. package/dist/github/commit-analysis.js.map +1 -0
  391. package/dist/github/contributor-stats.d.ts +18 -0
  392. package/dist/github/contributor-stats.d.ts.map +1 -0
  393. package/dist/github/contributor-stats.js +119 -0
  394. package/dist/github/contributor-stats.js.map +1 -0
  395. package/dist/github/issue-sla.d.ts +25 -0
  396. package/dist/github/issue-sla.d.ts.map +1 -0
  397. package/dist/github/issue-sla.js +220 -0
  398. package/dist/github/issue-sla.js.map +1 -0
  399. package/dist/github/issue-triage.d.ts +49 -0
  400. package/dist/github/issue-triage.d.ts.map +1 -0
  401. package/dist/github/issue-triage.js +286 -0
  402. package/dist/github/issue-triage.js.map +1 -0
  403. package/dist/github/pr-readiness.d.ts +18 -0
  404. package/dist/github/pr-readiness.d.ts.map +1 -0
  405. package/dist/github/pr-readiness.js +197 -0
  406. package/dist/github/pr-readiness.js.map +1 -0
  407. package/dist/github/pr-review.d.ts +17 -0
  408. package/dist/github/pr-review.d.ts.map +1 -0
  409. package/dist/github/pr-review.js +410 -0
  410. package/dist/github/pr-review.js.map +1 -0
  411. package/dist/github/release-notes.d.ts +32 -0
  412. package/dist/github/release-notes.d.ts.map +1 -0
  413. package/dist/github/release-notes.js +227 -0
  414. package/dist/github/release-notes.js.map +1 -0
  415. package/dist/github/repo-health.d.ts +17 -0
  416. package/dist/github/repo-health.d.ts.map +1 -0
  417. package/dist/github/repo-health.js +303 -0
  418. package/dist/github/repo-health.js.map +1 -0
  419. package/dist/github/retry.d.ts +39 -0
  420. package/dist/github/retry.d.ts.map +1 -0
  421. package/dist/github/retry.js +117 -0
  422. package/dist/github/retry.js.map +1 -0
  423. package/dist/github/types.d.ts +527 -0
  424. package/dist/github/types.d.ts.map +1 -0
  425. package/dist/github/types.js +8 -0
  426. package/dist/github/types.js.map +1 -0
  427. package/dist/github/webhooks.d.ts +36 -0
  428. package/dist/github/webhooks.d.ts.map +1 -0
  429. package/dist/github/webhooks.js +153 -0
  430. package/dist/github/webhooks.js.map +1 -0
  431. package/dist/goals/loop.d.ts +27 -0
  432. package/dist/goals/loop.d.ts.map +1 -0
  433. package/dist/goals/loop.js +239 -0
  434. package/dist/goals/loop.js.map +1 -0
  435. package/dist/goals/notifications.d.ts +20 -0
  436. package/dist/goals/notifications.d.ts.map +1 -0
  437. package/dist/goals/notifications.js +101 -0
  438. package/dist/goals/notifications.js.map +1 -0
  439. package/dist/goals/timer.d.ts +21 -0
  440. package/dist/goals/timer.d.ts.map +1 -0
  441. package/dist/goals/timer.js +60 -0
  442. package/dist/goals/timer.js.map +1 -0
  443. package/dist/google/auth.d.ts +84 -0
  444. package/dist/google/auth.d.ts.map +1 -0
  445. package/dist/google/auth.js +323 -0
  446. package/dist/google/auth.js.map +1 -0
  447. package/dist/google/calendar-timer.d.ts +20 -0
  448. package/dist/google/calendar-timer.d.ts.map +1 -0
  449. package/dist/google/calendar-timer.js +91 -0
  450. package/dist/google/calendar-timer.js.map +1 -0
  451. package/dist/google/calendar.d.ts +126 -0
  452. package/dist/google/calendar.d.ts.map +1 -0
  453. package/dist/google/calendar.js +270 -0
  454. package/dist/google/calendar.js.map +1 -0
  455. package/dist/google/docs.d.ts +87 -0
  456. package/dist/google/docs.d.ts.map +1 -0
  457. package/dist/google/docs.js +309 -0
  458. package/dist/google/docs.js.map +1 -0
  459. package/dist/google/gmail-send.d.ts +58 -0
  460. package/dist/google/gmail-send.d.ts.map +1 -0
  461. package/dist/google/gmail-send.js +219 -0
  462. package/dist/google/gmail-send.js.map +1 -0
  463. package/dist/google/gmail-timer.d.ts +34 -0
  464. package/dist/google/gmail-timer.d.ts.map +1 -0
  465. package/dist/google/gmail-timer.js +223 -0
  466. package/dist/google/gmail-timer.js.map +1 -0
  467. package/dist/google/gmail.d.ts +172 -0
  468. package/dist/google/gmail.d.ts.map +1 -0
  469. package/dist/google/gmail.js +470 -0
  470. package/dist/google/gmail.js.map +1 -0
  471. package/dist/google/tasks-timer.d.ts +20 -0
  472. package/dist/google/tasks-timer.d.ts.map +1 -0
  473. package/dist/google/tasks-timer.js +107 -0
  474. package/dist/google/tasks-timer.js.map +1 -0
  475. package/dist/google/tasks.d.ts +167 -0
  476. package/dist/google/tasks.d.ts.map +1 -0
  477. package/dist/google/tasks.js +331 -0
  478. package/dist/google/tasks.js.map +1 -0
  479. package/dist/google/temporal.d.ts +76 -0
  480. package/dist/google/temporal.d.ts.map +1 -0
  481. package/dist/google/temporal.js +176 -0
  482. package/dist/google/temporal.js.map +1 -0
  483. package/dist/health/alert-defaults.d.ts +12 -0
  484. package/dist/health/alert-defaults.d.ts.map +1 -0
  485. package/dist/health/alert-defaults.js +88 -0
  486. package/dist/health/alert-defaults.js.map +1 -0
  487. package/dist/health/alert-types.d.ts +97 -0
  488. package/dist/health/alert-types.d.ts.map +1 -0
  489. package/dist/health/alert-types.js +8 -0
  490. package/dist/health/alert-types.js.map +1 -0
  491. package/dist/health/alerting.d.ts +66 -0
  492. package/dist/health/alerting.d.ts.map +1 -0
  493. package/dist/health/alerting.js +373 -0
  494. package/dist/health/alerting.js.map +1 -0
  495. package/dist/health/checker.d.ts +32 -0
  496. package/dist/health/checker.d.ts.map +1 -0
  497. package/dist/health/checker.js +138 -0
  498. package/dist/health/checker.js.map +1 -0
  499. package/dist/health/checks/openrouter.d.ts +29 -0
  500. package/dist/health/checks/openrouter.d.ts.map +1 -0
  501. package/dist/health/checks/openrouter.js +75 -0
  502. package/dist/health/checks/openrouter.js.map +1 -0
  503. package/dist/health/checks.d.ts +26 -0
  504. package/dist/health/checks.d.ts.map +1 -0
  505. package/dist/health/checks.js +122 -0
  506. package/dist/health/checks.js.map +1 -0
  507. package/dist/health/components.d.ts +38 -0
  508. package/dist/health/components.d.ts.map +1 -0
  509. package/dist/health/components.js +112 -0
  510. package/dist/health/components.js.map +1 -0
  511. package/dist/health/index.d.ts +19 -0
  512. package/dist/health/index.d.ts.map +1 -0
  513. package/dist/health/index.js +23 -0
  514. package/dist/health/index.js.map +1 -0
  515. package/dist/health/recovery.d.ts +42 -0
  516. package/dist/health/recovery.d.ts.map +1 -0
  517. package/dist/health/recovery.js +138 -0
  518. package/dist/health/recovery.js.map +1 -0
  519. package/dist/health/types.d.ts +68 -0
  520. package/dist/health/types.d.ts.map +1 -0
  521. package/dist/health/types.js +5 -0
  522. package/dist/health/types.js.map +1 -0
  523. package/dist/index.d.ts +25 -0
  524. package/dist/index.d.ts.map +1 -0
  525. package/dist/index.js +22 -0
  526. package/dist/index.js.map +1 -0
  527. package/dist/instance.d.ts +24 -0
  528. package/dist/instance.d.ts.map +1 -0
  529. package/dist/instance.js +48 -0
  530. package/dist/instance.js.map +1 -0
  531. package/dist/integrations/github.d.ts +83 -0
  532. package/dist/integrations/github.d.ts.map +1 -0
  533. package/dist/integrations/github.js +331 -0
  534. package/dist/integrations/github.js.map +1 -0
  535. package/dist/integrations/google-tasks.d.ts +232 -0
  536. package/dist/integrations/google-tasks.d.ts.map +1 -0
  537. package/dist/integrations/google-tasks.js +432 -0
  538. package/dist/integrations/google-tasks.js.map +1 -0
  539. package/dist/learning/extractor.d.ts +28 -0
  540. package/dist/learning/extractor.d.ts.map +1 -0
  541. package/dist/learning/extractor.js +135 -0
  542. package/dist/learning/extractor.js.map +1 -0
  543. package/dist/lib/BasePlugin.d.ts +58 -0
  544. package/dist/lib/BasePlugin.d.ts.map +1 -0
  545. package/dist/lib/BasePlugin.js +181 -0
  546. package/dist/lib/BasePlugin.js.map +1 -0
  547. package/dist/lib/PluginRegistry.d.ts +56 -0
  548. package/dist/lib/PluginRegistry.d.ts.map +1 -0
  549. package/dist/lib/PluginRegistry.js +172 -0
  550. package/dist/lib/PluginRegistry.js.map +1 -0
  551. package/dist/lib/brain-io.d.ts +60 -0
  552. package/dist/lib/brain-io.d.ts.map +1 -0
  553. package/dist/lib/brain-io.js +180 -0
  554. package/dist/lib/brain-io.js.map +1 -0
  555. package/dist/lib/encryption-config.d.ts +16 -0
  556. package/dist/lib/encryption-config.d.ts.map +1 -0
  557. package/dist/lib/encryption-config.js +40 -0
  558. package/dist/lib/encryption-config.js.map +1 -0
  559. package/dist/lib/encryption.d.ts +19 -0
  560. package/dist/lib/encryption.d.ts.map +1 -0
  561. package/dist/lib/encryption.js +65 -0
  562. package/dist/lib/encryption.js.map +1 -0
  563. package/dist/lib/key-store.d.ts +24 -0
  564. package/dist/lib/key-store.d.ts.map +1 -0
  565. package/dist/lib/key-store.js +38 -0
  566. package/dist/lib/key-store.js.map +1 -0
  567. package/dist/lib/schema-migration.d.ts +34 -0
  568. package/dist/lib/schema-migration.d.ts.map +1 -0
  569. package/dist/lib/schema-migration.js +77 -0
  570. package/dist/lib/schema-migration.js.map +1 -0
  571. package/dist/library/brain-shadow.d.ts +10 -0
  572. package/dist/library/brain-shadow.d.ts.map +1 -0
  573. package/dist/library/brain-shadow.js +158 -0
  574. package/dist/library/brain-shadow.js.map +1 -0
  575. package/dist/library/index.d.ts +7 -0
  576. package/dist/library/index.d.ts.map +1 -0
  577. package/dist/library/index.js +6 -0
  578. package/dist/library/index.js.map +1 -0
  579. package/dist/library/routes.d.ts +7 -0
  580. package/dist/library/routes.d.ts.map +1 -0
  581. package/dist/library/routes.js +473 -0
  582. package/dist/library/routes.js.map +1 -0
  583. package/dist/library/store.d.ts +54 -0
  584. package/dist/library/store.d.ts.map +1 -0
  585. package/dist/library/store.js +403 -0
  586. package/dist/library/store.js.map +1 -0
  587. package/dist/library/types.d.ts +56 -0
  588. package/dist/library/types.d.ts.map +1 -0
  589. package/dist/library/types.js +12 -0
  590. package/dist/library/types.js.map +1 -0
  591. package/dist/llm/cache.d.ts +42 -0
  592. package/dist/llm/cache.d.ts.map +1 -0
  593. package/dist/llm/cache.js +104 -0
  594. package/dist/llm/cache.js.map +1 -0
  595. package/dist/llm/complete.d.ts +24 -0
  596. package/dist/llm/complete.d.ts.map +1 -0
  597. package/dist/llm/complete.js +56 -0
  598. package/dist/llm/complete.js.map +1 -0
  599. package/dist/llm/errors.d.ts +28 -0
  600. package/dist/llm/errors.d.ts.map +1 -0
  601. package/dist/llm/errors.js +82 -0
  602. package/dist/llm/errors.js.map +1 -0
  603. package/dist/llm/ollama.d.ts +21 -0
  604. package/dist/llm/ollama.d.ts.map +1 -0
  605. package/dist/llm/ollama.js +116 -0
  606. package/dist/llm/ollama.js.map +1 -0
  607. package/dist/llm/openrouter.d.ts +13 -0
  608. package/dist/llm/openrouter.d.ts.map +1 -0
  609. package/dist/llm/openrouter.js +105 -0
  610. package/dist/llm/openrouter.js.map +1 -0
  611. package/dist/llm/providers/anthropic.d.ts +8 -0
  612. package/dist/llm/providers/anthropic.d.ts.map +1 -0
  613. package/dist/llm/providers/anthropic.js +189 -0
  614. package/dist/llm/providers/anthropic.js.map +1 -0
  615. package/dist/llm/providers/index.d.ts +20 -0
  616. package/dist/llm/providers/index.d.ts.map +1 -0
  617. package/dist/llm/providers/index.js +47 -0
  618. package/dist/llm/providers/index.js.map +1 -0
  619. package/dist/llm/providers/ollama.d.ts +13 -0
  620. package/dist/llm/providers/ollama.d.ts.map +1 -0
  621. package/dist/llm/providers/ollama.js +188 -0
  622. package/dist/llm/providers/ollama.js.map +1 -0
  623. package/dist/llm/providers/openai.d.ts +8 -0
  624. package/dist/llm/providers/openai.d.ts.map +1 -0
  625. package/dist/llm/providers/openai.js +144 -0
  626. package/dist/llm/providers/openai.js.map +1 -0
  627. package/dist/llm/providers/openrouter.d.ts +7 -0
  628. package/dist/llm/providers/openrouter.d.ts.map +1 -0
  629. package/dist/llm/providers/openrouter.js +158 -0
  630. package/dist/llm/providers/openrouter.js.map +1 -0
  631. package/dist/llm/providers/types.d.ts +29 -0
  632. package/dist/llm/providers/types.d.ts.map +1 -0
  633. package/dist/llm/providers/types.js +6 -0
  634. package/dist/llm/providers/types.js.map +1 -0
  635. package/dist/llm/retry.d.ts +29 -0
  636. package/dist/llm/retry.d.ts.map +1 -0
  637. package/dist/llm/retry.js +139 -0
  638. package/dist/llm/retry.js.map +1 -0
  639. package/dist/memory/file-backed.d.ts +36 -0
  640. package/dist/memory/file-backed.d.ts.map +1 -0
  641. package/dist/memory/file-backed.js +178 -0
  642. package/dist/memory/file-backed.js.map +1 -0
  643. package/dist/memory/index.d.ts +7 -0
  644. package/dist/memory/index.d.ts.map +1 -0
  645. package/dist/memory/index.js +6 -0
  646. package/dist/memory/index.js.map +1 -0
  647. package/dist/memory/long-term.d.ts +38 -0
  648. package/dist/memory/long-term.d.ts.map +1 -0
  649. package/dist/memory/long-term.js +58 -0
  650. package/dist/memory/long-term.js.map +1 -0
  651. package/dist/memory/vector-index.d.ts +55 -0
  652. package/dist/memory/vector-index.d.ts.map +1 -0
  653. package/dist/memory/vector-index.js +207 -0
  654. package/dist/memory/vector-index.js.map +1 -0
  655. package/dist/memory/visual.d.ts +53 -0
  656. package/dist/memory/visual.d.ts.map +1 -0
  657. package/dist/memory/visual.js +218 -0
  658. package/dist/memory/visual.js.map +1 -0
  659. package/dist/memory/working.d.ts +12 -0
  660. package/dist/memory/working.d.ts.map +1 -0
  661. package/dist/memory/working.js +34 -0
  662. package/dist/memory/working.js.map +1 -0
  663. package/dist/metrics/aggregator.d.ts +58 -0
  664. package/dist/metrics/aggregator.d.ts.map +1 -0
  665. package/dist/metrics/aggregator.js +253 -0
  666. package/dist/metrics/aggregator.js.map +1 -0
  667. package/dist/metrics/collector.d.ts +26 -0
  668. package/dist/metrics/collector.d.ts.map +1 -0
  669. package/dist/metrics/collector.js +346 -0
  670. package/dist/metrics/collector.js.map +1 -0
  671. package/dist/metrics/firewall-metrics.d.ts +95 -0
  672. package/dist/metrics/firewall-metrics.d.ts.map +1 -0
  673. package/dist/metrics/firewall-metrics.js +261 -0
  674. package/dist/metrics/firewall-metrics.js.map +1 -0
  675. package/dist/metrics/index.d.ts +20 -0
  676. package/dist/metrics/index.d.ts.map +1 -0
  677. package/dist/metrics/index.js +23 -0
  678. package/dist/metrics/index.js.map +1 -0
  679. package/dist/metrics/instruments.d.ts +89 -0
  680. package/dist/metrics/instruments.d.ts.map +1 -0
  681. package/dist/metrics/instruments.js +172 -0
  682. package/dist/metrics/instruments.js.map +1 -0
  683. package/dist/metrics/middleware.d.ts +12 -0
  684. package/dist/metrics/middleware.d.ts.map +1 -0
  685. package/dist/metrics/middleware.js +47 -0
  686. package/dist/metrics/middleware.js.map +1 -0
  687. package/dist/metrics/prometheus.d.ts +39 -0
  688. package/dist/metrics/prometheus.d.ts.map +1 -0
  689. package/dist/metrics/prometheus.js +115 -0
  690. package/dist/metrics/prometheus.js.map +1 -0
  691. package/dist/metrics/registry.d.ts +58 -0
  692. package/dist/metrics/registry.d.ts.map +1 -0
  693. package/dist/metrics/registry.js +145 -0
  694. package/dist/metrics/registry.js.map +1 -0
  695. package/dist/metrics/reporter.d.ts +21 -0
  696. package/dist/metrics/reporter.d.ts.map +1 -0
  697. package/dist/metrics/reporter.js +207 -0
  698. package/dist/metrics/reporter.js.map +1 -0
  699. package/dist/metrics/store.d.ts +47 -0
  700. package/dist/metrics/store.d.ts.map +1 -0
  701. package/dist/metrics/store.js +209 -0
  702. package/dist/metrics/store.js.map +1 -0
  703. package/dist/metrics/system.d.ts +20 -0
  704. package/dist/metrics/system.d.ts.map +1 -0
  705. package/dist/metrics/system.js +109 -0
  706. package/dist/metrics/system.js.map +1 -0
  707. package/dist/metrics/types.d.ts +101 -0
  708. package/dist/metrics/types.d.ts.map +1 -0
  709. package/dist/metrics/types.js +6 -0
  710. package/dist/metrics/types.js.map +1 -0
  711. package/dist/modules/index.d.ts +6 -0
  712. package/dist/modules/index.d.ts.map +1 -0
  713. package/dist/modules/index.js +6 -0
  714. package/dist/modules/index.js.map +1 -0
  715. package/dist/modules/registry.d.ts +36 -0
  716. package/dist/modules/registry.d.ts.map +1 -0
  717. package/dist/modules/registry.js +155 -0
  718. package/dist/modules/registry.js.map +1 -0
  719. package/dist/modules/types.d.ts +37 -0
  720. package/dist/modules/types.d.ts.map +1 -0
  721. package/dist/modules/types.js +9 -0
  722. package/dist/modules/types.js.map +1 -0
  723. package/dist/notifications/channel.d.ts +25 -0
  724. package/dist/notifications/channel.d.ts.map +1 -0
  725. package/dist/notifications/channel.js +83 -0
  726. package/dist/notifications/channel.js.map +1 -0
  727. package/dist/notifications/email.d.ts +27 -0
  728. package/dist/notifications/email.d.ts.map +1 -0
  729. package/dist/notifications/email.js +72 -0
  730. package/dist/notifications/email.js.map +1 -0
  731. package/dist/notifications/index.d.ts +16 -0
  732. package/dist/notifications/index.d.ts.map +1 -0
  733. package/dist/notifications/index.js +12 -0
  734. package/dist/notifications/index.js.map +1 -0
  735. package/dist/notifications/phone.d.ts +16 -0
  736. package/dist/notifications/phone.d.ts.map +1 -0
  737. package/dist/notifications/phone.js +48 -0
  738. package/dist/notifications/phone.js.map +1 -0
  739. package/dist/notifications/sms.d.ts +26 -0
  740. package/dist/notifications/sms.d.ts.map +1 -0
  741. package/dist/notifications/sms.js +65 -0
  742. package/dist/notifications/sms.js.map +1 -0
  743. package/dist/notifications/webhook.d.ts +28 -0
  744. package/dist/notifications/webhook.d.ts.map +1 -0
  745. package/dist/notifications/webhook.js +65 -0
  746. package/dist/notifications/webhook.js.map +1 -0
  747. package/dist/openloop/foldback.d.ts +24 -0
  748. package/dist/openloop/foldback.d.ts.map +1 -0
  749. package/dist/openloop/foldback.js +127 -0
  750. package/dist/openloop/foldback.js.map +1 -0
  751. package/dist/openloop/index.d.ts +11 -0
  752. package/dist/openloop/index.d.ts.map +1 -0
  753. package/dist/openloop/index.js +9 -0
  754. package/dist/openloop/index.js.map +1 -0
  755. package/dist/openloop/lifecycle.d.ts +16 -0
  756. package/dist/openloop/lifecycle.d.ts.map +1 -0
  757. package/dist/openloop/lifecycle.js +304 -0
  758. package/dist/openloop/lifecycle.js.map +1 -0
  759. package/dist/openloop/resolution-scanner.d.ts +17 -0
  760. package/dist/openloop/resolution-scanner.d.ts.map +1 -0
  761. package/dist/openloop/resolution-scanner.js +551 -0
  762. package/dist/openloop/resolution-scanner.js.map +1 -0
  763. package/dist/openloop/scanner.d.ts +28 -0
  764. package/dist/openloop/scanner.d.ts.map +1 -0
  765. package/dist/openloop/scanner.js +587 -0
  766. package/dist/openloop/scanner.js.map +1 -0
  767. package/dist/openloop/store.d.ts +41 -0
  768. package/dist/openloop/store.d.ts.map +1 -0
  769. package/dist/openloop/store.js +154 -0
  770. package/dist/openloop/store.js.map +1 -0
  771. package/dist/openloop/types.d.ts +94 -0
  772. package/dist/openloop/types.d.ts.map +1 -0
  773. package/dist/openloop/types.js +6 -0
  774. package/dist/openloop/types.js.map +1 -0
  775. package/dist/plugins/google-tasks/index.d.ts +55 -0
  776. package/dist/plugins/google-tasks/index.d.ts.map +1 -0
  777. package/dist/plugins/google-tasks/index.js +135 -0
  778. package/dist/plugins/google-tasks/index.js.map +1 -0
  779. package/dist/pulse/activation-event.d.ts +66 -0
  780. package/dist/pulse/activation-event.d.ts.map +1 -0
  781. package/dist/pulse/activation-event.js +139 -0
  782. package/dist/pulse/activation-event.js.map +1 -0
  783. package/dist/pulse/activation-log.d.ts +37 -0
  784. package/dist/pulse/activation-log.d.ts.map +1 -0
  785. package/dist/pulse/activation-log.js +101 -0
  786. package/dist/pulse/activation-log.js.map +1 -0
  787. package/dist/pulse/index.d.ts +11 -0
  788. package/dist/pulse/index.d.ts.map +1 -0
  789. package/dist/pulse/index.js +13 -0
  790. package/dist/pulse/index.js.map +1 -0
  791. package/dist/pulse/pressure.d.ts +69 -0
  792. package/dist/pulse/pressure.d.ts.map +1 -0
  793. package/dist/pulse/pressure.js +304 -0
  794. package/dist/pulse/pressure.js.map +1 -0
  795. package/dist/pulse/types.d.ts +89 -0
  796. package/dist/pulse/types.d.ts.map +1 -0
  797. package/dist/pulse/types.js +6 -0
  798. package/dist/pulse/types.js.map +1 -0
  799. package/dist/queue/grooming.d.ts +16 -0
  800. package/dist/queue/grooming.d.ts.map +1 -0
  801. package/dist/queue/grooming.js +269 -0
  802. package/dist/queue/grooming.js.map +1 -0
  803. package/dist/queue/provider.d.ts +50 -0
  804. package/dist/queue/provider.d.ts.map +1 -0
  805. package/dist/queue/provider.js +131 -0
  806. package/dist/queue/provider.js.map +1 -0
  807. package/dist/queue/store.d.ts +97 -0
  808. package/dist/queue/store.d.ts.map +1 -0
  809. package/dist/queue/store.js +448 -0
  810. package/dist/queue/store.js.map +1 -0
  811. package/dist/queue/types.d.ts +47 -0
  812. package/dist/queue/types.d.ts.map +1 -0
  813. package/dist/queue/types.js +22 -0
  814. package/dist/queue/types.js.map +1 -0
  815. package/dist/rate-limit.d.ts +26 -0
  816. package/dist/rate-limit.d.ts.map +1 -0
  817. package/dist/rate-limit.js +74 -0
  818. package/dist/rate-limit.js.map +1 -0
  819. package/dist/registry/discovery.d.ts +30 -0
  820. package/dist/registry/discovery.d.ts.map +1 -0
  821. package/dist/registry/discovery.js +171 -0
  822. package/dist/registry/discovery.js.map +1 -0
  823. package/dist/registry/index.d.ts +14 -0
  824. package/dist/registry/index.d.ts.map +1 -0
  825. package/dist/registry/index.js +18 -0
  826. package/dist/registry/index.js.map +1 -0
  827. package/dist/registry/installer.d.ts +45 -0
  828. package/dist/registry/installer.d.ts.map +1 -0
  829. package/dist/registry/installer.js +175 -0
  830. package/dist/registry/installer.js.map +1 -0
  831. package/dist/registry/registry.d.ts +70 -0
  832. package/dist/registry/registry.d.ts.map +1 -0
  833. package/dist/registry/registry.js +153 -0
  834. package/dist/registry/registry.js.map +1 -0
  835. package/dist/registry/store.d.ts +69 -0
  836. package/dist/registry/store.d.ts.map +1 -0
  837. package/dist/registry/store.js +242 -0
  838. package/dist/registry/store.js.map +1 -0
  839. package/dist/registry/types.d.ts +116 -0
  840. package/dist/registry/types.d.ts.map +1 -0
  841. package/dist/registry/types.js +9 -0
  842. package/dist/registry/types.js.map +1 -0
  843. package/dist/registry/validator.d.ts +24 -0
  844. package/dist/registry/validator.d.ts.map +1 -0
  845. package/dist/registry/validator.js +203 -0
  846. package/dist/registry/validator.js.map +1 -0
  847. package/dist/scheduling/index.d.ts +4 -0
  848. package/dist/scheduling/index.d.ts.map +1 -0
  849. package/dist/scheduling/index.js +3 -0
  850. package/dist/scheduling/index.js.map +1 -0
  851. package/dist/scheduling/store.d.ts +41 -0
  852. package/dist/scheduling/store.d.ts.map +1 -0
  853. package/dist/scheduling/store.js +237 -0
  854. package/dist/scheduling/store.js.map +1 -0
  855. package/dist/scheduling/timer.d.ts +25 -0
  856. package/dist/scheduling/timer.d.ts.map +1 -0
  857. package/dist/scheduling/timer.js +118 -0
  858. package/dist/scheduling/timer.js.map +1 -0
  859. package/dist/scheduling/types.d.ts +43 -0
  860. package/dist/scheduling/types.d.ts.map +1 -0
  861. package/dist/scheduling/types.js +5 -0
  862. package/dist/scheduling/types.js.map +1 -0
  863. package/dist/search/brain-docs.d.ts +20 -0
  864. package/dist/search/brain-docs.d.ts.map +1 -0
  865. package/dist/search/brain-docs.js +103 -0
  866. package/dist/search/brain-docs.js.map +1 -0
  867. package/dist/search/browse.d.ts +45 -0
  868. package/dist/search/browse.d.ts.map +1 -0
  869. package/dist/search/browse.js +225 -0
  870. package/dist/search/browse.js.map +1 -0
  871. package/dist/search/classify.d.ts +23 -0
  872. package/dist/search/classify.d.ts.map +1 -0
  873. package/dist/search/classify.js +132 -0
  874. package/dist/search/classify.js.map +1 -0
  875. package/dist/search/client.d.ts +32 -0
  876. package/dist/search/client.d.ts.map +1 -0
  877. package/dist/search/client.js +72 -0
  878. package/dist/search/client.js.map +1 -0
  879. package/dist/search/perplexity.d.ts +13 -0
  880. package/dist/search/perplexity.d.ts.map +1 -0
  881. package/dist/search/perplexity.js +41 -0
  882. package/dist/search/perplexity.js.map +1 -0
  883. package/dist/search/sidecar.d.ts +20 -0
  884. package/dist/search/sidecar.d.ts.map +1 -0
  885. package/dist/search/sidecar.js +103 -0
  886. package/dist/search/sidecar.js.map +1 -0
  887. package/dist/server.d.ts +8 -0
  888. package/dist/server.d.ts.map +1 -0
  889. package/dist/server.js +4851 -0
  890. package/dist/server.js.map +1 -0
  891. package/dist/services/backlogReview.d.ts +66 -0
  892. package/dist/services/backlogReview.d.ts.map +1 -0
  893. package/dist/services/backlogReview.js +285 -0
  894. package/dist/services/backlogReview.js.map +1 -0
  895. package/dist/services/backup.d.ts +43 -0
  896. package/dist/services/backup.d.ts.map +1 -0
  897. package/dist/services/backup.js +334 -0
  898. package/dist/services/backup.js.map +1 -0
  899. package/dist/services/credit-monitor.d.ts +40 -0
  900. package/dist/services/credit-monitor.d.ts.map +1 -0
  901. package/dist/services/credit-monitor.js +147 -0
  902. package/dist/services/credit-monitor.js.map +1 -0
  903. package/dist/services/morningBriefing.d.ts +125 -0
  904. package/dist/services/morningBriefing.d.ts.map +1 -0
  905. package/dist/services/morningBriefing.js +660 -0
  906. package/dist/services/morningBriefing.js.map +1 -0
  907. package/dist/services/routine-patterns.d.ts +21 -0
  908. package/dist/services/routine-patterns.d.ts.map +1 -0
  909. package/dist/services/routine-patterns.js +46 -0
  910. package/dist/services/routine-patterns.js.map +1 -0
  911. package/dist/services/traceInsights.d.ts +53 -0
  912. package/dist/services/traceInsights.d.ts.map +1 -0
  913. package/dist/services/traceInsights.js +762 -0
  914. package/dist/services/traceInsights.js.map +1 -0
  915. package/dist/services/training.d.ts +63 -0
  916. package/dist/services/training.d.ts.map +1 -0
  917. package/dist/services/training.js +697 -0
  918. package/dist/services/training.js.map +1 -0
  919. package/dist/services/whatsapp.d.ts +45 -0
  920. package/dist/services/whatsapp.d.ts.map +1 -0
  921. package/dist/services/whatsapp.js +194 -0
  922. package/dist/services/whatsapp.js.map +1 -0
  923. package/dist/sessions/store.d.ts +21 -0
  924. package/dist/sessions/store.d.ts.map +1 -0
  925. package/dist/sessions/store.js +47 -0
  926. package/dist/sessions/store.js.map +1 -0
  927. package/dist/settings.d.ts +111 -0
  928. package/dist/settings.d.ts.map +1 -0
  929. package/dist/settings.js +256 -0
  930. package/dist/settings.js.map +1 -0
  931. package/dist/skills/index.d.ts +10 -0
  932. package/dist/skills/index.d.ts.map +1 -0
  933. package/dist/skills/index.js +11 -0
  934. package/dist/skills/index.js.map +1 -0
  935. package/dist/skills/loader.d.ts +22 -0
  936. package/dist/skills/loader.d.ts.map +1 -0
  937. package/dist/skills/loader.js +65 -0
  938. package/dist/skills/loader.js.map +1 -0
  939. package/dist/skills/registry.d.ts +161 -0
  940. package/dist/skills/registry.d.ts.map +1 -0
  941. package/dist/skills/registry.js +664 -0
  942. package/dist/skills/registry.js.map +1 -0
  943. package/dist/skills/types.d.ts +83 -0
  944. package/dist/skills/types.d.ts.map +1 -0
  945. package/dist/skills/types.js +31 -0
  946. package/dist/skills/types.js.map +1 -0
  947. package/dist/skills/validator.d.ts +36 -0
  948. package/dist/skills/validator.d.ts.map +1 -0
  949. package/dist/skills/validator.js +114 -0
  950. package/dist/skills/validator.js.map +1 -0
  951. package/dist/slack/channels.d.ts +102 -0
  952. package/dist/slack/channels.d.ts.map +1 -0
  953. package/dist/slack/channels.js +277 -0
  954. package/dist/slack/channels.js.map +1 -0
  955. package/dist/slack/client.d.ts +151 -0
  956. package/dist/slack/client.d.ts.map +1 -0
  957. package/dist/slack/client.js +468 -0
  958. package/dist/slack/client.js.map +1 -0
  959. package/dist/slack/retry.d.ts +36 -0
  960. package/dist/slack/retry.d.ts.map +1 -0
  961. package/dist/slack/retry.js +100 -0
  962. package/dist/slack/retry.js.map +1 -0
  963. package/dist/slack/types.d.ts +271 -0
  964. package/dist/slack/types.d.ts.map +1 -0
  965. package/dist/slack/types.js +52 -0
  966. package/dist/slack/types.js.map +1 -0
  967. package/dist/slack/webhooks.d.ts +55 -0
  968. package/dist/slack/webhooks.d.ts.map +1 -0
  969. package/dist/slack/webhooks.js +285 -0
  970. package/dist/slack/webhooks.js.map +1 -0
  971. package/dist/stt/client.d.ts +18 -0
  972. package/dist/stt/client.d.ts.map +1 -0
  973. package/dist/stt/client.js +66 -0
  974. package/dist/stt/client.js.map +1 -0
  975. package/dist/stt/sidecar.d.ts +16 -0
  976. package/dist/stt/sidecar.d.ts.map +1 -0
  977. package/dist/stt/sidecar.js +115 -0
  978. package/dist/stt/sidecar.js.map +1 -0
  979. package/dist/tracing/bridge.d.ts +14 -0
  980. package/dist/tracing/bridge.d.ts.map +1 -0
  981. package/dist/tracing/bridge.js +70 -0
  982. package/dist/tracing/bridge.js.map +1 -0
  983. package/dist/tracing/correlation.d.ts +34 -0
  984. package/dist/tracing/correlation.d.ts.map +1 -0
  985. package/dist/tracing/correlation.js +49 -0
  986. package/dist/tracing/correlation.js.map +1 -0
  987. package/dist/tracing/index.d.ts +15 -0
  988. package/dist/tracing/index.d.ts.map +1 -0
  989. package/dist/tracing/index.js +18 -0
  990. package/dist/tracing/index.js.map +1 -0
  991. package/dist/tracing/init.d.ts +42 -0
  992. package/dist/tracing/init.d.ts.map +1 -0
  993. package/dist/tracing/init.js +81 -0
  994. package/dist/tracing/init.js.map +1 -0
  995. package/dist/tracing/instrument.d.ts +39 -0
  996. package/dist/tracing/instrument.d.ts.map +1 -0
  997. package/dist/tracing/instrument.js +145 -0
  998. package/dist/tracing/instrument.js.map +1 -0
  999. package/dist/tracing/middleware.d.ts +18 -0
  1000. package/dist/tracing/middleware.d.ts.map +1 -0
  1001. package/dist/tracing/middleware.js +69 -0
  1002. package/dist/tracing/middleware.js.map +1 -0
  1003. package/dist/tracing/tracer.d.ts +105 -0
  1004. package/dist/tracing/tracer.d.ts.map +1 -0
  1005. package/dist/tracing/tracer.js +327 -0
  1006. package/dist/tracing/tracer.js.map +1 -0
  1007. package/dist/tts/client.d.ts +18 -0
  1008. package/dist/tts/client.d.ts.map +1 -0
  1009. package/dist/tts/client.js +48 -0
  1010. package/dist/tts/client.js.map +1 -0
  1011. package/dist/tts/sidecar.d.ts +16 -0
  1012. package/dist/tts/sidecar.d.ts.map +1 -0
  1013. package/dist/tts/sidecar.js +148 -0
  1014. package/dist/tts/sidecar.js.map +1 -0
  1015. package/dist/twilio/call.d.ts +22 -0
  1016. package/dist/twilio/call.d.ts.map +1 -0
  1017. package/dist/twilio/call.js +79 -0
  1018. package/dist/twilio/call.js.map +1 -0
  1019. package/dist/types/plugin.d.ts +342 -0
  1020. package/dist/types/plugin.d.ts.map +1 -0
  1021. package/dist/types/plugin.js +10 -0
  1022. package/dist/types/plugin.js.map +1 -0
  1023. package/dist/types.d.ts +97 -0
  1024. package/dist/types.d.ts.map +1 -0
  1025. package/dist/types.js +5 -0
  1026. package/dist/types.js.map +1 -0
  1027. package/dist/utils/logger.d.ts +53 -0
  1028. package/dist/utils/logger.d.ts.map +1 -0
  1029. package/dist/utils/logger.js +169 -0
  1030. package/dist/utils/logger.js.map +1 -0
  1031. package/dist/vault/matcher.d.ts +39 -0
  1032. package/dist/vault/matcher.d.ts.map +1 -0
  1033. package/dist/vault/matcher.js +197 -0
  1034. package/dist/vault/matcher.js.map +1 -0
  1035. package/dist/vault/personal.d.ts +60 -0
  1036. package/dist/vault/personal.d.ts.map +1 -0
  1037. package/dist/vault/personal.js +162 -0
  1038. package/dist/vault/personal.js.map +1 -0
  1039. package/dist/vault/store.d.ts +39 -0
  1040. package/dist/vault/store.d.ts.map +1 -0
  1041. package/dist/vault/store.js +111 -0
  1042. package/dist/vault/store.js.map +1 -0
  1043. package/dist/webhooks/config.d.ts +64 -0
  1044. package/dist/webhooks/config.d.ts.map +1 -0
  1045. package/dist/webhooks/config.js +214 -0
  1046. package/dist/webhooks/config.js.map +1 -0
  1047. package/dist/webhooks/event-log.d.ts +90 -0
  1048. package/dist/webhooks/event-log.d.ts.map +1 -0
  1049. package/dist/webhooks/event-log.js +132 -0
  1050. package/dist/webhooks/event-log.js.map +1 -0
  1051. package/dist/webhooks/handler.d.ts +92 -0
  1052. package/dist/webhooks/handler.d.ts.map +1 -0
  1053. package/dist/webhooks/handler.js +103 -0
  1054. package/dist/webhooks/handler.js.map +1 -0
  1055. package/dist/webhooks/handlers.d.ts +100 -0
  1056. package/dist/webhooks/handlers.d.ts.map +1 -0
  1057. package/dist/webhooks/handlers.js +178 -0
  1058. package/dist/webhooks/handlers.js.map +1 -0
  1059. package/dist/webhooks/index.d.ts +29 -0
  1060. package/dist/webhooks/index.d.ts.map +1 -0
  1061. package/dist/webhooks/index.js +33 -0
  1062. package/dist/webhooks/index.js.map +1 -0
  1063. package/dist/webhooks/mount.d.ts +77 -0
  1064. package/dist/webhooks/mount.d.ts.map +1 -0
  1065. package/dist/webhooks/mount.js +400 -0
  1066. package/dist/webhooks/mount.js.map +1 -0
  1067. package/dist/webhooks/registry.d.ts +52 -0
  1068. package/dist/webhooks/registry.d.ts.map +1 -0
  1069. package/dist/webhooks/registry.js +143 -0
  1070. package/dist/webhooks/registry.js.map +1 -0
  1071. package/dist/webhooks/relay.d.ts +25 -0
  1072. package/dist/webhooks/relay.d.ts.map +1 -0
  1073. package/dist/webhooks/relay.js +53 -0
  1074. package/dist/webhooks/relay.js.map +1 -0
  1075. package/dist/webhooks/retry.d.ts +92 -0
  1076. package/dist/webhooks/retry.d.ts.map +1 -0
  1077. package/dist/webhooks/retry.js +270 -0
  1078. package/dist/webhooks/retry.js.map +1 -0
  1079. package/dist/webhooks/router.d.ts +94 -0
  1080. package/dist/webhooks/router.d.ts.map +1 -0
  1081. package/dist/webhooks/router.js +290 -0
  1082. package/dist/webhooks/router.js.map +1 -0
  1083. package/dist/webhooks/twilio.d.ts +63 -0
  1084. package/dist/webhooks/twilio.d.ts.map +1 -0
  1085. package/dist/webhooks/twilio.js +129 -0
  1086. package/dist/webhooks/twilio.js.map +1 -0
  1087. package/dist/webhooks/types.d.ts +142 -0
  1088. package/dist/webhooks/types.d.ts.map +1 -0
  1089. package/dist/webhooks/types.js +8 -0
  1090. package/dist/webhooks/types.js.map +1 -0
  1091. package/dist/webhooks/verify.d.ts +51 -0
  1092. package/dist/webhooks/verify.d.ts.map +1 -0
  1093. package/dist/webhooks/verify.js +98 -0
  1094. package/dist/webhooks/verify.js.map +1 -0
  1095. package/package.json +70 -0
  1096. package/public/board.html +1316 -0
  1097. package/public/browser.html +600 -0
  1098. package/public/help.html +655 -0
  1099. package/public/index.html +4689 -0
  1100. package/public/library.html +3642 -0
  1101. package/public/observatory.html +1693 -0
  1102. package/public/ops.html +1129 -0
  1103. package/public/share-modal.js +211 -0
  1104. package/skills/README.md +34 -0
  1105. package/skills/core-architecture.md +33 -0
  1106. package/skills/form-fill.md +98 -0
  1107. package/skills/form-review.md +110 -0
  1108. package/skills/form-scout.md +94 -0
  1109. package/skills/log-decision.md +27 -0
  1110. package/skills/onboard.md +98 -0
  1111. package/skills/voice-guide.md +22 -0
  1112. package/skills/write-blog.md +43 -0
@@ -0,0 +1,697 @@
1
+ /**
2
+ * Paired Human Training — observes board craft, observatory usage, and
3
+ * system tuning to provide coaching nudges and track proficiency.
4
+ *
5
+ * No LLM calls. All heuristics are regex-based (same patterns as grooming.ts).
6
+ * Piggybacks on existing timers — no new intervals.
7
+ *
8
+ * Data:
9
+ * brain/training/proficiency.jsonl — append-only observations (source of truth)
10
+ * brain/training/progress.json — rewritable snapshot (derived cache)
11
+ */
12
+ import { join } from "node:path";
13
+ import { writeFile, mkdir } from "node:fs/promises";
14
+ import { existsSync, statSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
15
+ import { createLogger } from "../utils/logger.js";
16
+ import { appendBrainLine, appendBrainLineSync, ensureBrainFileSync, } from "../lib/brain-io.js";
17
+ import { logActivity, getActivities } from "../activity/log.js";
18
+ import { pushNotification } from "../goals/notifications.js";
19
+ const log = createLogger("training");
20
+ // ─── Paths ────────────────────────────────────────────────────────────────────
21
+ const BRAIN_DIR = join(process.cwd(), "brain");
22
+ const TRAINING_DIR = join(BRAIN_DIR, "training");
23
+ const PROFICIENCY_FILE = join(TRAINING_DIR, "proficiency.jsonl");
24
+ const PROGRESS_FILE = join(TRAINING_DIR, "progress.json");
25
+ const SCHEMA_LINE = JSON.stringify({ _schema: "proficiency", _version: "1.0" });
26
+ const BOARD_CRAFT_SKILLS = [
27
+ { id: "bc.title", label: "Clear titles", tree: "board_craft" },
28
+ { id: "bc.description", label: "Meaningful descriptions", tree: "board_craft" },
29
+ { id: "bc.acceptance", label: "Acceptance criteria", tree: "board_craft" },
30
+ { id: "bc.priority", label: "Sets priority", tree: "board_craft" },
31
+ { id: "bc.file_paths", label: "References files", tree: "board_craft" },
32
+ { id: "bc.exchanges", label: "Engages in grooming", tree: "board_craft" },
33
+ ];
34
+ const OBSERVATORY_SKILLS = [
35
+ { id: "ol.observatory", label: "Opens Observatory", tree: "observatory_literacy" },
36
+ { id: "ol.briefing", label: "Reads briefing", tree: "observatory_literacy" },
37
+ { id: "ol.bridge", label: "Reads bridge reports", tree: "observatory_literacy" },
38
+ { id: "ol.grooming", label: "Acts on grooming nudges", tree: "observatory_literacy" },
39
+ ];
40
+ const TUNING_SKILLS = [
41
+ { id: "tc.settings", label: "Adjusts settings", tree: "tuning_core" },
42
+ { id: "tc.goals", label: "Maintains goals", tree: "tuning_core" },
43
+ { id: "tc.patterns", label: "Adjusts routine patterns", tree: "tuning_core" },
44
+ ];
45
+ const ALL_SKILLS = [...BOARD_CRAFT_SKILLS, ...OBSERVATORY_SKILLS, ...TUNING_SKILLS];
46
+ // ─── Nudge messages ───────────────────────────────────────────────────────────
47
+ const INTRODUCE_MESSAGES = {
48
+ "bc.title": "Tip: Board item titles work best with a verb + object (e.g. \"Add retry logic to webhook handler\"). Helps me understand the task at a glance.",
49
+ "bc.description": "Tip: Adding 80+ characters of description to board items — file paths, expected behavior, constraints — helps me spec tasks before I start.",
50
+ "bc.acceptance": "Tip: Adding acceptance criteria ('should', 'must', 'when X then Y') to board items helps me know when the work is done.",
51
+ "bc.priority": "Tip: Setting priority on board items (P0–P3) helps me decide what to work on first when multiple items are ready.",
52
+ "bc.file_paths": "Tip: Referencing file paths (src/, brain/, .ts, .md) in board item descriptions helps me find the right code immediately.",
53
+ "bc.exchanges": "Tip: Commenting on board items (grooming exchanges) adds context I can use when I pick up the task.",
54
+ "ol.observatory": "Tip: The Observatory (/observatory) shows real-time system health, activity, and insights. Worth checking regularly.",
55
+ "ol.briefing": "Tip: I send a morning briefing daily. Reading it helps you know what happened overnight and what needs attention.",
56
+ "ol.bridge": "Tip: Bridge reports summarize what I tried, what worked, and what failed. They're the best way to understand my autonomous work.",
57
+ "ol.grooming": "Tip: When I nudge about vague board items, grooming them within 24h keeps the pipeline flowing.",
58
+ "tc.settings": "Tip: brain/settings.json controls my behavior — provider, models, timers. Adjusting it tunes how I work.",
59
+ "tc.goals": "Tip: Keeping brain/operations/goals.yaml up to date helps me prioritize autonomous work toward your actual goals.",
60
+ "tc.patterns": "Tip: Discussing or adjusting routine patterns (timer intervals, autonomous behavior) helps me match your workflow.",
61
+ };
62
+ const CELEBRATE_MESSAGES = {
63
+ "bc.title": "Your recent board items all have clear verb-noun titles. That's second nature now.",
64
+ "bc.description": "Your board item descriptions are consistently detailed. I can spec tasks without guessing.",
65
+ "bc.acceptance": "You've been adding acceptance criteria to board items reliably. That's a big help.",
66
+ "bc.priority": "Priority settings on your board items are consistent. I know what matters most.",
67
+ "bc.file_paths": "You regularly reference file paths in board items. I can jump straight to the code.",
68
+ "bc.exchanges": "You're actively grooming board items with exchanges. Great collaboration signal.",
69
+ "ol.observatory": "You're checking the Observatory regularly. You have good situational awareness.",
70
+ "ol.briefing": "You consistently read the morning briefing. We're in sync on daily status.",
71
+ "ol.bridge": "You read bridge reports and act on them. That feedback loop keeps me effective.",
72
+ "ol.grooming": "You act on grooming nudges quickly. The backlog stays clean.",
73
+ "tc.settings": "You've tuned the settings to match your workflow. System is well-calibrated.",
74
+ "tc.goals": "Goals are up to date. My autonomous work stays aligned with your priorities.",
75
+ "tc.patterns": "You've adjusted routine patterns. The system matches how you work.",
76
+ };
77
+ // ─── State ────────────────────────────────────────────────────────────────────
78
+ let progress = {
79
+ lastScan: null,
80
+ lastBoardWatermark: null,
81
+ lastActivityId: 0,
82
+ trees: {},
83
+ nextNudge: null,
84
+ };
85
+ /** Rolling window of recent observations (in-memory, loaded from JSONL). */
86
+ let observations = [];
87
+ /** Nudge cooldowns: skillId → last nudge ISO timestamp. */
88
+ const nudgeCooldowns = new Map();
89
+ /** Daily nudge counter: "YYYY-MM-DD" → count. */
90
+ let dailyNudges = { date: "", count: 0 };
91
+ let initialized = false;
92
+ // ─── Init ─────────────────────────────────────────────────────────────────────
93
+ /**
94
+ * Load progress.json into memory, create dir/files if missing.
95
+ * Called once at server startup.
96
+ */
97
+ export function initTraining() {
98
+ if (initialized)
99
+ return;
100
+ initialized = true;
101
+ try {
102
+ ensureBrainFileSync(PROFICIENCY_FILE, SCHEMA_LINE);
103
+ // Load progress snapshot
104
+ if (existsSync(PROGRESS_FILE)) {
105
+ const raw = JSON.parse(readFileSync(PROGRESS_FILE, "utf-8"));
106
+ progress = raw;
107
+ }
108
+ else {
109
+ // Write default progress
110
+ progress = buildDefaultProgress();
111
+ writeProgressSync(progress);
112
+ }
113
+ // Load recent observations (30d window) from JSONL
114
+ loadObservations();
115
+ log.info("Training system initialized");
116
+ }
117
+ catch (err) {
118
+ log.warn(`Training init failed: ${err instanceof Error ? err.message : String(err)}`);
119
+ }
120
+ }
121
+ function buildDefaultProgress() {
122
+ return {
123
+ lastScan: null,
124
+ lastBoardWatermark: null,
125
+ lastActivityId: 0,
126
+ trees: {
127
+ board_craft: {
128
+ label: "Board Craft",
129
+ level: 1,
130
+ unlocked: true,
131
+ skills: Object.fromEntries(BOARD_CRAFT_SKILLS.map((s) => [s.id, { signal: 0, observations: 0, status: "undiscovered" }])),
132
+ },
133
+ observatory_literacy: {
134
+ label: "Observatory Literacy",
135
+ level: 2,
136
+ unlocked: false,
137
+ skills: Object.fromEntries(OBSERVATORY_SKILLS.map((s) => [s.id, { signal: 0, observations: 0, status: "undiscovered" }])),
138
+ },
139
+ tuning_core: {
140
+ label: "Tuning Core",
141
+ level: 3,
142
+ unlocked: false,
143
+ skills: Object.fromEntries(TUNING_SKILLS.map((s) => [s.id, { signal: 0, observations: 0, status: "undiscovered" }])),
144
+ },
145
+ },
146
+ nextNudge: null,
147
+ };
148
+ }
149
+ function writeProgressSync(p) {
150
+ try {
151
+ const dir = TRAINING_DIR;
152
+ if (!existsSync(dir)) {
153
+ mkdirSync(dir, { recursive: true });
154
+ }
155
+ writeFileSync(PROGRESS_FILE, JSON.stringify(p, null, 2) + "\n", "utf-8");
156
+ }
157
+ catch (err) {
158
+ log.warn(`Failed to write progress.json: ${err instanceof Error ? err.message : String(err)}`);
159
+ }
160
+ }
161
+ function loadObservations() {
162
+ try {
163
+ const raw = readFileSync(PROFICIENCY_FILE, "utf-8");
164
+ const cutoff = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString();
165
+ observations = [];
166
+ for (const line of raw.split("\n")) {
167
+ const trimmed = line.trim();
168
+ if (!trimmed)
169
+ continue;
170
+ try {
171
+ const obj = JSON.parse(trimmed);
172
+ if (obj._schema)
173
+ continue;
174
+ if (obj.type === "observation" && obj.timestamp >= cutoff) {
175
+ observations.push(obj);
176
+ }
177
+ }
178
+ catch {
179
+ // skip malformed
180
+ }
181
+ }
182
+ }
183
+ catch {
184
+ observations = [];
185
+ }
186
+ }
187
+ // ─── Board Craft heuristics ───────────────────────────────────────────────────
188
+ function assessBoardCraft(task) {
189
+ const now = new Date().toISOString();
190
+ const obs = [];
191
+ const id = task.identifier;
192
+ const desc = task.description || "";
193
+ const title = task.title || "";
194
+ // bc.title: >5 words, contains a verb
195
+ const wordCount = title.trim().split(/\s+/).length;
196
+ const hasVerb = /\b(?:add|create|fix|update|remove|implement|refactor|build|design|configure|integrate|migrate|optimize|enable|disable|set up|write|deploy|test|validate|handle|extract|convert|move|rename|replace|rewrite|clean|improve|extend)\b/i.test(title);
197
+ obs.push({
198
+ type: "observation",
199
+ skillId: "bc.title",
200
+ timestamp: now,
201
+ positive: wordCount > 5 && hasVerb,
202
+ context: `${id}: ${wordCount} words${hasVerb ? ", has verb" : ", no verb"}`,
203
+ });
204
+ // bc.description: >80 chars OR has file paths/acceptance keywords
205
+ const hasFilePaths = /(?:src\/|brain\/|public\/|\.ts|\.js|\.md)/.test(desc);
206
+ const hasActionableDetail = /(?:acceptance|criteria|deliverable|must|should|implement|add|create|fix|update|remove|when|endpoint|route|component)/i.test(desc);
207
+ obs.push({
208
+ type: "observation",
209
+ skillId: "bc.description",
210
+ timestamp: now,
211
+ positive: desc.length >= 80 || hasFilePaths || hasActionableDetail,
212
+ context: `${id}: ${desc.length} chars${hasFilePaths ? ", has paths" : ""}${hasActionableDetail ? ", has detail" : ""}`,
213
+ });
214
+ // bc.acceptance: contains should/must/when/deliverable
215
+ const hasAcceptance = /\b(?:should|must|when|deliverable|given|then|expect|verify|assert)\b/i.test(desc);
216
+ obs.push({
217
+ type: "observation",
218
+ skillId: "bc.acceptance",
219
+ timestamp: now,
220
+ positive: hasAcceptance,
221
+ context: `${id}: ${hasAcceptance ? "has" : "no"} acceptance keywords`,
222
+ });
223
+ // bc.priority: priority !== 0
224
+ obs.push({
225
+ type: "observation",
226
+ skillId: "bc.priority",
227
+ timestamp: now,
228
+ positive: task.priority !== 0,
229
+ context: `${id}: priority=${task.priority}`,
230
+ });
231
+ // bc.file_paths: description references src/ or brain/ or .ts/.md
232
+ obs.push({
233
+ type: "observation",
234
+ skillId: "bc.file_paths",
235
+ timestamp: now,
236
+ positive: hasFilePaths,
237
+ context: `${id}: ${hasFilePaths ? "references files" : "no file refs"}`,
238
+ });
239
+ // bc.exchanges: has human-authored exchanges (source: "chat")
240
+ const humanExchanges = (task.exchanges ?? []).filter((ex) => ex.source === "chat");
241
+ obs.push({
242
+ type: "observation",
243
+ skillId: "bc.exchanges",
244
+ timestamp: now,
245
+ positive: humanExchanges.length > 0,
246
+ context: `${id}: ${humanExchanges.length} chat exchange(s)`,
247
+ });
248
+ return obs;
249
+ }
250
+ // ─── Observatory Literacy heuristics ──────────────────────────────────────────
251
+ async function assessObservatoryLiteracy() {
252
+ const now = new Date().toISOString();
253
+ const obs = [];
254
+ const activities = await getActivities(progress.lastActivityId);
255
+ // ol.observatory: check for observatory access in activity log
256
+ const hasObservatoryAccess = activities.some((a) => a.summary.toLowerCase().includes("observatory") ||
257
+ a.source === "system" && a.summary.includes("/observatory"));
258
+ if (hasObservatoryAccess) {
259
+ obs.push({
260
+ type: "observation",
261
+ skillId: "ol.observatory",
262
+ timestamp: now,
263
+ positive: true,
264
+ context: "Observatory accessed recently",
265
+ });
266
+ }
267
+ // ol.briefing: chat activity within hours of briefing delivery
268
+ const briefingActivity = activities.find((a) => a.source === "system" && a.summary.includes("Morning briefing delivered"));
269
+ if (briefingActivity) {
270
+ const briefingTime = new Date(briefingActivity.timestamp).getTime();
271
+ const chatAfterBriefing = activities.some((a) => (a.source === "board" || a.source === "agent") &&
272
+ new Date(a.timestamp).getTime() > briefingTime &&
273
+ new Date(a.timestamp).getTime() < briefingTime + 4 * 60 * 60 * 1000);
274
+ obs.push({
275
+ type: "observation",
276
+ skillId: "ol.briefing",
277
+ timestamp: now,
278
+ positive: chatAfterBriefing,
279
+ context: chatAfterBriefing ? "Activity seen after briefing" : "No activity after briefing",
280
+ });
281
+ }
282
+ // ol.bridge: references bridge report or acts on failed task
283
+ const bridgeRef = activities.some((a) => a.summary.toLowerCase().includes("bridge") ||
284
+ a.summary.toLowerCase().includes("bridge report"));
285
+ if (bridgeRef) {
286
+ obs.push({
287
+ type: "observation",
288
+ skillId: "ol.bridge",
289
+ timestamp: now,
290
+ positive: true,
291
+ context: "Bridge report referenced in activity",
292
+ });
293
+ }
294
+ // ol.grooming: check if user groomed items within 24h of a grooming nudge
295
+ const groomingNudge = activities.find((a) => a.source === "board" && a.summary.includes("Grooming"));
296
+ if (groomingNudge) {
297
+ const nudgeTime = new Date(groomingNudge.timestamp).getTime();
298
+ const groomedAfter = activities.some((a) => a.source === "board" &&
299
+ a.summary.includes("exchange") &&
300
+ new Date(a.timestamp).getTime() > nudgeTime &&
301
+ new Date(a.timestamp).getTime() < nudgeTime + 24 * 60 * 60 * 1000);
302
+ if (groomedAfter) {
303
+ obs.push({
304
+ type: "observation",
305
+ skillId: "ol.grooming",
306
+ timestamp: now,
307
+ positive: true,
308
+ context: "Groomed items within 24h of nudge",
309
+ });
310
+ }
311
+ }
312
+ return obs;
313
+ }
314
+ // ─── Tuning Core heuristics ───────────────────────────────────────────────────
315
+ function assessTuningCore() {
316
+ const now = new Date().toISOString();
317
+ const obs = [];
318
+ // tc.settings: check if settings.json differs from defaults
319
+ try {
320
+ const settingsPath = join(BRAIN_DIR, "settings.json");
321
+ if (existsSync(settingsPath)) {
322
+ const content = readFileSync(settingsPath, "utf-8");
323
+ const settings = JSON.parse(content);
324
+ // If settings has been customized (more than just default keys)
325
+ const keys = Object.keys(settings);
326
+ const isCustomized = keys.length > 2; // default has ~2 keys
327
+ obs.push({
328
+ type: "observation",
329
+ skillId: "tc.settings",
330
+ timestamp: now,
331
+ positive: isCustomized,
332
+ context: `settings.json has ${keys.length} keys`,
333
+ });
334
+ }
335
+ }
336
+ catch {
337
+ // can't read settings — skip
338
+ }
339
+ // tc.goals: check if goals.yaml was updated in last 30 days
340
+ try {
341
+ const goalsPath = join(BRAIN_DIR, "operations", "goals.yaml");
342
+ if (existsSync(goalsPath)) {
343
+ const stat = statSync(goalsPath);
344
+ const thirtyDaysAgo = Date.now() - 30 * 24 * 60 * 60 * 1000;
345
+ obs.push({
346
+ type: "observation",
347
+ skillId: "tc.goals",
348
+ timestamp: now,
349
+ positive: stat.mtimeMs > thirtyDaysAgo,
350
+ context: `goals.yaml last modified ${Math.round((Date.now() - stat.mtimeMs) / (24 * 60 * 60 * 1000))}d ago`,
351
+ });
352
+ }
353
+ }
354
+ catch {
355
+ // can't stat goals — skip
356
+ }
357
+ // tc.patterns: check activity log for settings/routine discussions
358
+ // This is a lightweight check — just see if there have been chat exchanges about patterns
359
+ // We'll rely on the activity log scan in assessObservatoryLiteracy for the full picture
360
+ return obs;
361
+ }
362
+ // ─── Signal computation ───────────────────────────────────────────────────────
363
+ function computeSkillStatus(skillId) {
364
+ const cutoff = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString();
365
+ const relevant = observations.filter((o) => o.skillId === skillId && o.timestamp >= cutoff);
366
+ const total = relevant.length;
367
+ const positive = relevant.filter((o) => o.positive).length;
368
+ const signal = total > 0 ? positive / total : 0;
369
+ let status;
370
+ if (total === 0) {
371
+ status = "undiscovered";
372
+ }
373
+ else if (total <= 3) {
374
+ status = "introduced";
375
+ }
376
+ else if (signal < 0.5) {
377
+ status = "learning";
378
+ }
379
+ else if (signal < 0.8) {
380
+ status = "practicing";
381
+ }
382
+ else {
383
+ status = "practiced";
384
+ }
385
+ return { signal: Math.round(signal * 100) / 100, observations: total, status };
386
+ }
387
+ // ─── Level progression ────────────────────────────────────────────────────────
388
+ function checkTreeUnlocks(trees) {
389
+ let changed = false;
390
+ // Level 2 (Observatory Literacy): unlocks when 3+ Board Craft skills are practicing/practiced
391
+ const bcSkills = Object.values(trees.board_craft?.skills ?? {});
392
+ const bcProficient = bcSkills.filter((s) => s.status === "practicing" || s.status === "practiced").length;
393
+ const olShouldUnlock = bcProficient >= 3;
394
+ if (trees.observatory_literacy && trees.observatory_literacy.unlocked !== olShouldUnlock) {
395
+ trees.observatory_literacy.unlocked = olShouldUnlock;
396
+ changed = true;
397
+ }
398
+ // Level 3 (Tuning Core): unlocks when 2+ Observatory Literacy skills are practicing/practiced
399
+ const olSkills = Object.values(trees.observatory_literacy?.skills ?? {});
400
+ const olProficient = olSkills.filter((s) => s.status === "practicing" || s.status === "practiced").length;
401
+ const tcShouldUnlock = olProficient >= 2;
402
+ if (trees.tuning_core && trees.tuning_core.unlocked !== tcShouldUnlock) {
403
+ trees.tuning_core.unlocked = tcShouldUnlock;
404
+ changed = true;
405
+ }
406
+ return changed;
407
+ }
408
+ // ─── Nudge engine ─────────────────────────────────────────────────────────────
409
+ const MAX_DAILY_NUDGES = 3;
410
+ const SKILL_COOLDOWN_MS = 24 * 60 * 60 * 1000; // 24h
411
+ function canNudge(skillId) {
412
+ // Daily limit
413
+ const today = new Date().toISOString().slice(0, 10);
414
+ if (dailyNudges.date !== today) {
415
+ dailyNudges = { date: today, count: 0 };
416
+ }
417
+ if (dailyNudges.count >= MAX_DAILY_NUDGES)
418
+ return false;
419
+ // Per-skill cooldown
420
+ const lastNudge = nudgeCooldowns.get(skillId);
421
+ if (lastNudge) {
422
+ const elapsed = Date.now() - new Date(lastNudge).getTime();
423
+ if (elapsed < SKILL_COOLDOWN_MS)
424
+ return false;
425
+ }
426
+ return true;
427
+ }
428
+ function recordNudge(skillId) {
429
+ const now = new Date().toISOString();
430
+ nudgeCooldowns.set(skillId, now);
431
+ const today = now.slice(0, 10);
432
+ if (dailyNudges.date !== today) {
433
+ dailyNudges = { date: today, count: 1 };
434
+ }
435
+ else {
436
+ dailyNudges.count++;
437
+ }
438
+ }
439
+ function pickNudge(trees) {
440
+ // Priority 1: celebrate — skill just crossed 0.8
441
+ for (const tree of Object.values(trees)) {
442
+ if (!tree.unlocked)
443
+ continue;
444
+ for (const [skillId, snap] of Object.entries(tree.skills)) {
445
+ if (snap.status === "practiced" && canNudge(skillId)) {
446
+ // Check if this is a "just crossed" event by looking at previous progress
447
+ const prev = progress.trees[getTreeKey(skillId)]?.skills[skillId];
448
+ if (prev && prev.status !== "practiced") {
449
+ return { skillId, type: "celebrate" };
450
+ }
451
+ }
452
+ }
453
+ }
454
+ // Priority 2: level_up — new tree just unlocked
455
+ for (const [key, tree] of Object.entries(trees)) {
456
+ const prevTree = progress.trees[key];
457
+ if (tree.unlocked && prevTree && !prevTree.unlocked) {
458
+ const firstSkill = Object.keys(tree.skills)[0];
459
+ if (firstSkill && canNudge(firstSkill)) {
460
+ return { skillId: firstSkill, type: "level_up" };
461
+ }
462
+ }
463
+ }
464
+ // Priority 3: introduce — lowest-ordered undiscovered skill in active tree
465
+ for (const tree of Object.values(trees)) {
466
+ if (!tree.unlocked)
467
+ continue;
468
+ for (const [skillId, snap] of Object.entries(tree.skills)) {
469
+ if (snap.status === "undiscovered" && canNudge(skillId)) {
470
+ return { skillId, type: "introduce" };
471
+ }
472
+ }
473
+ }
474
+ // Priority 4: practice — lowest-signal skill in active tree
475
+ let lowestSignal = Infinity;
476
+ let lowestSkill = null;
477
+ for (const tree of Object.values(trees)) {
478
+ if (!tree.unlocked)
479
+ continue;
480
+ for (const [skillId, snap] of Object.entries(tree.skills)) {
481
+ if (snap.observations >= 4 && snap.signal < 0.5 && snap.signal < lowestSignal && canNudge(skillId)) {
482
+ lowestSignal = snap.signal;
483
+ lowestSkill = skillId;
484
+ }
485
+ }
486
+ }
487
+ if (lowestSkill) {
488
+ return { skillId: lowestSkill, type: "practice" };
489
+ }
490
+ return null;
491
+ }
492
+ function getTreeKey(skillId) {
493
+ const prefix = skillId.split(".")[0];
494
+ if (prefix === "bc")
495
+ return "board_craft";
496
+ if (prefix === "ol")
497
+ return "observatory_literacy";
498
+ if (prefix === "tc")
499
+ return "tuning_core";
500
+ return "board_craft";
501
+ }
502
+ function formatNudgeMessage(nudge) {
503
+ switch (nudge.type) {
504
+ case "introduce":
505
+ return INTRODUCE_MESSAGES[nudge.skillId] ?? `Training tip for ${nudge.skillId}.`;
506
+ case "celebrate":
507
+ return CELEBRATE_MESSAGES[nudge.skillId] ?? `Great work on ${nudge.skillId}!`;
508
+ case "level_up": {
509
+ const tree = getTreeKey(nudge.skillId);
510
+ const label = tree === "observatory_literacy" ? "Observatory Literacy" : "Tuning Core";
511
+ return `Level up! ${label} unlocked. You've got the previous skills down — let's build on that.`;
512
+ }
513
+ case "practice":
514
+ return INTRODUCE_MESSAGES[nudge.skillId]
515
+ ? `Reminder: ${INTRODUCE_MESSAGES[nudge.skillId]}`
516
+ : `Keep practicing ${nudge.skillId}.`;
517
+ default:
518
+ return "";
519
+ }
520
+ }
521
+ // ─── Main scan ────────────────────────────────────────────────────────────────
522
+ /**
523
+ * Primary training scan. Called after grooming completes.
524
+ * 1. Assess Board Craft from passed-in tasks
525
+ * 2. Assess Observatory Literacy from activity log
526
+ * 3. Assess Tuning Core from file checks
527
+ * 4. Append observations, recompute status, write snapshot, nudge
528
+ */
529
+ async function runTrainingScan(tasks) {
530
+ const now = new Date().toISOString();
531
+ const newObs = [];
532
+ // 1. Board Craft — assess tasks updated since last watermark
533
+ const watermark = progress.lastBoardWatermark ?? "1970-01-01T00:00:00Z";
534
+ for (const task of tasks) {
535
+ if (task.state === "done" || task.state === "cancelled")
536
+ continue;
537
+ if (task.updatedAt > watermark || task.createdAt > watermark) {
538
+ newObs.push(...assessBoardCraft(task));
539
+ }
540
+ }
541
+ // 2. Observatory Literacy (if tree unlocked)
542
+ if (progress.trees.observatory_literacy?.unlocked) {
543
+ const olObs = await assessObservatoryLiteracy();
544
+ newObs.push(...olObs);
545
+ }
546
+ // 3. Tuning Core (if tree unlocked)
547
+ if (progress.trees.tuning_core?.unlocked) {
548
+ newObs.push(...assessTuningCore());
549
+ }
550
+ if (newObs.length === 0) {
551
+ log.debug("Training scan: no new observations");
552
+ return;
553
+ }
554
+ // 4. Append observations to JSONL
555
+ for (const ob of newObs) {
556
+ try {
557
+ await appendBrainLine(PROFICIENCY_FILE, JSON.stringify(ob));
558
+ }
559
+ catch {
560
+ try {
561
+ appendBrainLineSync(PROFICIENCY_FILE, JSON.stringify(ob));
562
+ }
563
+ catch {
564
+ // non-critical
565
+ }
566
+ }
567
+ observations.push(ob);
568
+ }
569
+ // Trim observations to 30d window
570
+ const cutoff = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString();
571
+ observations = observations.filter((o) => o.timestamp >= cutoff);
572
+ // 5. Recompute skill snapshots
573
+ const trees = { ...progress.trees };
574
+ for (const skill of ALL_SKILLS) {
575
+ const treeKey = getTreeKey(skill.id);
576
+ if (!trees[treeKey])
577
+ continue;
578
+ trees[treeKey].skills[skill.id] = computeSkillStatus(skill.id);
579
+ }
580
+ // 6. Check tree unlocks
581
+ const leveledUp = checkTreeUnlocks(trees);
582
+ // 7. Pick nudge
583
+ const nudge = pickNudge(trees);
584
+ // 8. Append status rollups to JSONL
585
+ for (const skill of ALL_SKILLS) {
586
+ const treeKey = getTreeKey(skill.id);
587
+ const snap = trees[treeKey]?.skills[skill.id];
588
+ if (!snap || snap.observations === 0)
589
+ continue;
590
+ const rollup = {
591
+ type: "status",
592
+ skillId: skill.id,
593
+ timestamp: now,
594
+ signal: snap.signal,
595
+ observations: snap.observations,
596
+ positive: Math.round(snap.signal * snap.observations),
597
+ };
598
+ try {
599
+ await appendBrainLine(PROFICIENCY_FILE, JSON.stringify(rollup));
600
+ }
601
+ catch {
602
+ // non-critical
603
+ }
604
+ }
605
+ // 9. Update and write progress snapshot
606
+ // Find highest activity ID from recent activities
607
+ try {
608
+ const activities = await getActivities(progress.lastActivityId);
609
+ if (activities.length > 0) {
610
+ progress.lastActivityId = activities[activities.length - 1].id;
611
+ }
612
+ }
613
+ catch {
614
+ // non-critical
615
+ }
616
+ progress = {
617
+ lastScan: now,
618
+ lastBoardWatermark: now,
619
+ lastActivityId: progress.lastActivityId,
620
+ trees,
621
+ nextNudge: nudge,
622
+ };
623
+ try {
624
+ await mkdir(TRAINING_DIR, { recursive: true });
625
+ await writeFile(PROGRESS_FILE, JSON.stringify(progress, null, 2) + "\n", "utf-8");
626
+ }
627
+ catch {
628
+ writeProgressSync(progress);
629
+ }
630
+ // 10. Deliver nudge
631
+ if (nudge) {
632
+ const message = formatNudgeMessage(nudge);
633
+ if (message) {
634
+ pushNotification({
635
+ timestamp: now,
636
+ source: "training",
637
+ message,
638
+ });
639
+ recordNudge(nudge.skillId);
640
+ }
641
+ }
642
+ logActivity({
643
+ source: "system",
644
+ summary: `Training scan: ${newObs.length} observations${nudge ? `, nudged ${nudge.skillId} (${nudge.type})` : ""}`,
645
+ });
646
+ }
647
+ // ─── Public API ───────────────────────────────────────────────────────────────
648
+ /**
649
+ * Hook: called by grooming timer after runGroomingCheck completes.
650
+ * Fire-and-forget — errors logged, never thrown to caller.
651
+ */
652
+ export async function onGroomingComplete(tasks) {
653
+ if (!initialized)
654
+ initTraining();
655
+ try {
656
+ await runTrainingScan(tasks);
657
+ }
658
+ catch (err) {
659
+ log.warn(`Training scan failed: ${err instanceof Error ? err.message : String(err)}`);
660
+ }
661
+ }
662
+ /**
663
+ * Sync: returns formatted training summary for morning briefing.
664
+ * Returns null if no training data exists yet.
665
+ */
666
+ export function getTrainingSummary() {
667
+ if (!initialized)
668
+ return null;
669
+ const parts = [];
670
+ for (const [, tree] of Object.entries(progress.trees)) {
671
+ if (!tree.unlocked)
672
+ continue;
673
+ const skills = Object.values(tree.skills);
674
+ const total = skills.length;
675
+ const proficient = skills.filter((s) => s.status === "practicing" || s.status === "practiced").length;
676
+ parts.push(`${tree.label}: ${proficient}/${total} skills practiced`);
677
+ }
678
+ if (parts.length === 0)
679
+ return null;
680
+ // Add next nudge hint
681
+ if (progress.nextNudge) {
682
+ const skill = ALL_SKILLS.find((s) => s.id === progress.nextNudge?.skillId);
683
+ if (skill) {
684
+ parts.push(`Next: ${skill.label.toLowerCase()}`);
685
+ }
686
+ }
687
+ return " " + parts.join(". ") + ".";
688
+ }
689
+ /**
690
+ * Sync: returns cached progress for API endpoint.
691
+ */
692
+ export function getTrainingProgress() {
693
+ if (!initialized)
694
+ initTraining();
695
+ return progress;
696
+ }
697
+ //# sourceMappingURL=training.js.map