@aitne/daemon 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 (1386) hide show
  1. package/LICENSE +21 -0
  2. package/dist/adapters/composite-dashboard-stream.d.ts +42 -0
  3. package/dist/adapters/composite-dashboard-stream.d.ts.map +1 -0
  4. package/dist/adapters/composite-dashboard-stream.js +49 -0
  5. package/dist/adapters/composite-dashboard-stream.js.map +1 -0
  6. package/dist/adapters/dashboard-adapter.d.ts +104 -0
  7. package/dist/adapters/dashboard-adapter.d.ts.map +1 -0
  8. package/dist/adapters/dashboard-adapter.js +216 -0
  9. package/dist/adapters/dashboard-adapter.js.map +1 -0
  10. package/dist/adapters/discord.d.ts +77 -0
  11. package/dist/adapters/discord.d.ts.map +1 -0
  12. package/dist/adapters/discord.js +339 -0
  13. package/dist/adapters/discord.js.map +1 -0
  14. package/dist/adapters/docs-qa-adapter.d.ts +123 -0
  15. package/dist/adapters/docs-qa-adapter.d.ts.map +1 -0
  16. package/dist/adapters/docs-qa-adapter.js +218 -0
  17. package/dist/adapters/docs-qa-adapter.js.map +1 -0
  18. package/dist/adapters/message-hub.d.ts +70 -0
  19. package/dist/adapters/message-hub.d.ts.map +1 -0
  20. package/dist/adapters/message-hub.js +359 -0
  21. package/dist/adapters/message-hub.js.map +1 -0
  22. package/dist/adapters/notification-manager.d.ts +99 -0
  23. package/dist/adapters/notification-manager.d.ts.map +1 -0
  24. package/dist/adapters/notification-manager.js +498 -0
  25. package/dist/adapters/notification-manager.js.map +1 -0
  26. package/dist/adapters/outbound-text.d.ts +28 -0
  27. package/dist/adapters/outbound-text.d.ts.map +1 -0
  28. package/dist/adapters/outbound-text.js +58 -0
  29. package/dist/adapters/outbound-text.js.map +1 -0
  30. package/dist/adapters/slack-adapter.d.ts +82 -0
  31. package/dist/adapters/slack-adapter.d.ts.map +1 -0
  32. package/dist/adapters/slack-adapter.js +359 -0
  33. package/dist/adapters/slack-adapter.js.map +1 -0
  34. package/dist/adapters/telegram-adapter.d.ts +107 -0
  35. package/dist/adapters/telegram-adapter.d.ts.map +1 -0
  36. package/dist/adapters/telegram-adapter.js +477 -0
  37. package/dist/adapters/telegram-adapter.js.map +1 -0
  38. package/dist/adapters/types.d.ts +92 -0
  39. package/dist/adapters/types.d.ts.map +1 -0
  40. package/dist/adapters/types.js +2 -0
  41. package/dist/adapters/types.js.map +1 -0
  42. package/dist/adapters/whatsapp-adapter.d.ts +213 -0
  43. package/dist/adapters/whatsapp-adapter.d.ts.map +1 -0
  44. package/dist/adapters/whatsapp-adapter.js +1216 -0
  45. package/dist/adapters/whatsapp-adapter.js.map +1 -0
  46. package/dist/api/chat-binding-query.d.ts +36 -0
  47. package/dist/api/chat-binding-query.d.ts.map +1 -0
  48. package/dist/api/chat-binding-query.js +63 -0
  49. package/dist/api/chat-binding-query.js.map +1 -0
  50. package/dist/api/chat-session-resume.d.ts +12 -0
  51. package/dist/api/chat-session-resume.d.ts.map +1 -0
  52. package/dist/api/chat-session-resume.js +21 -0
  53. package/dist/api/chat-session-resume.js.map +1 -0
  54. package/dist/api/delegated-proxy-helper.d.ts +33 -0
  55. package/dist/api/delegated-proxy-helper.d.ts.map +1 -0
  56. package/dist/api/delegated-proxy-helper.js +54 -0
  57. package/dist/api/delegated-proxy-helper.js.map +1 -0
  58. package/dist/api/directory-picker.d.ts +38 -0
  59. package/dist/api/directory-picker.d.ts.map +1 -0
  60. package/dist/api/directory-picker.js +278 -0
  61. package/dist/api/directory-picker.js.map +1 -0
  62. package/dist/api/env-writer.d.ts +25 -0
  63. package/dist/api/env-writer.d.ts.map +1 -0
  64. package/dist/api/env-writer.js +421 -0
  65. package/dist/api/env-writer.js.map +1 -0
  66. package/dist/api/integration-route-gate.d.ts +60 -0
  67. package/dist/api/integration-route-gate.d.ts.map +1 -0
  68. package/dist/api/integration-route-gate.js +83 -0
  69. package/dist/api/integration-route-gate.js.map +1 -0
  70. package/dist/api/json-body.d.ts +29 -0
  71. package/dist/api/json-body.d.ts.map +1 -0
  72. package/dist/api/json-body.js +87 -0
  73. package/dist/api/json-body.js.map +1 -0
  74. package/dist/api/routes/activity-sources.d.ts +20 -0
  75. package/dist/api/routes/activity-sources.d.ts.map +1 -0
  76. package/dist/api/routes/activity-sources.js +18 -0
  77. package/dist/api/routes/activity-sources.js.map +1 -0
  78. package/dist/api/routes/agent.d.ts +4 -0
  79. package/dist/api/routes/agent.d.ts.map +1 -0
  80. package/dist/api/routes/agent.js +619 -0
  81. package/dist/api/routes/agent.js.map +1 -0
  82. package/dist/api/routes/apple-calendar.d.ts +31 -0
  83. package/dist/api/routes/apple-calendar.d.ts.map +1 -0
  84. package/dist/api/routes/apple-calendar.js +310 -0
  85. package/dist/api/routes/apple-calendar.js.map +1 -0
  86. package/dist/api/routes/attachments.d.ts +36 -0
  87. package/dist/api/routes/attachments.d.ts.map +1 -0
  88. package/dist/api/routes/attachments.js +305 -0
  89. package/dist/api/routes/attachments.js.map +1 -0
  90. package/dist/api/routes/backends.d.ts +4 -0
  91. package/dist/api/routes/backends.d.ts.map +1 -0
  92. package/dist/api/routes/backends.js +1132 -0
  93. package/dist/api/routes/backends.js.map +1 -0
  94. package/dist/api/routes/books.d.ts +63 -0
  95. package/dist/api/routes/books.d.ts.map +1 -0
  96. package/dist/api/routes/books.js +467 -0
  97. package/dist/api/routes/books.js.map +1 -0
  98. package/dist/api/routes/calendar.d.ts +36 -0
  99. package/dist/api/routes/calendar.d.ts.map +1 -0
  100. package/dist/api/routes/calendar.js +351 -0
  101. package/dist/api/routes/calendar.js.map +1 -0
  102. package/dist/api/routes/commands.d.ts +4 -0
  103. package/dist/api/routes/commands.d.ts.map +1 -0
  104. package/dist/api/routes/commands.js +251 -0
  105. package/dist/api/routes/commands.js.map +1 -0
  106. package/dist/api/routes/context.d.ts +57 -0
  107. package/dist/api/routes/context.d.ts.map +1 -0
  108. package/dist/api/routes/context.js +1765 -0
  109. package/dist/api/routes/context.js.map +1 -0
  110. package/dist/api/routes/dashboard.d.ts +29 -0
  111. package/dist/api/routes/dashboard.d.ts.map +1 -0
  112. package/dist/api/routes/dashboard.js +2062 -0
  113. package/dist/api/routes/dashboard.js.map +1 -0
  114. package/dist/api/routes/delegated-sync.d.ts +4 -0
  115. package/dist/api/routes/delegated-sync.d.ts.map +1 -0
  116. package/dist/api/routes/delegated-sync.js +192 -0
  117. package/dist/api/routes/delegated-sync.js.map +1 -0
  118. package/dist/api/routes/delegated.d.ts +42 -0
  119. package/dist/api/routes/delegated.d.ts.map +1 -0
  120. package/dist/api/routes/delegated.js +250 -0
  121. package/dist/api/routes/delegated.js.map +1 -0
  122. package/dist/api/routes/docs.d.ts +34 -0
  123. package/dist/api/routes/docs.d.ts.map +1 -0
  124. package/dist/api/routes/docs.js +580 -0
  125. package/dist/api/routes/docs.js.map +1 -0
  126. package/dist/api/routes/entities.d.ts +9 -0
  127. package/dist/api/routes/entities.d.ts.map +1 -0
  128. package/dist/api/routes/entities.js +176 -0
  129. package/dist/api/routes/entities.js.map +1 -0
  130. package/dist/api/routes/git-accounts.d.ts +23 -0
  131. package/dist/api/routes/git-accounts.d.ts.map +1 -0
  132. package/dist/api/routes/git-accounts.js +227 -0
  133. package/dist/api/routes/git-accounts.js.map +1 -0
  134. package/dist/api/routes/git-templates.d.ts +50 -0
  135. package/dist/api/routes/git-templates.d.ts.map +1 -0
  136. package/dist/api/routes/git-templates.js +276 -0
  137. package/dist/api/routes/git-templates.js.map +1 -0
  138. package/dist/api/routes/git.d.ts +34 -0
  139. package/dist/api/routes/git.d.ts.map +1 -0
  140. package/dist/api/routes/git.js +126 -0
  141. package/dist/api/routes/git.js.map +1 -0
  142. package/dist/api/routes/github.d.ts +34 -0
  143. package/dist/api/routes/github.d.ts.map +1 -0
  144. package/dist/api/routes/github.js +465 -0
  145. package/dist/api/routes/github.js.map +1 -0
  146. package/dist/api/routes/health.d.ts +4 -0
  147. package/dist/api/routes/health.d.ts.map +1 -0
  148. package/dist/api/routes/health.js +257 -0
  149. package/dist/api/routes/health.js.map +1 -0
  150. package/dist/api/routes/integrations-reconcile.d.ts +33 -0
  151. package/dist/api/routes/integrations-reconcile.d.ts.map +1 -0
  152. package/dist/api/routes/integrations-reconcile.js +463 -0
  153. package/dist/api/routes/integrations-reconcile.js.map +1 -0
  154. package/dist/api/routes/integrations.d.ts +19 -0
  155. package/dist/api/routes/integrations.d.ts.map +1 -0
  156. package/dist/api/routes/integrations.js +1384 -0
  157. package/dist/api/routes/integrations.js.map +1 -0
  158. package/dist/api/routes/knowledge.d.ts +4 -0
  159. package/dist/api/routes/knowledge.d.ts.map +1 -0
  160. package/dist/api/routes/knowledge.js +224 -0
  161. package/dist/api/routes/knowledge.js.map +1 -0
  162. package/dist/api/routes/mail.d.ts +39 -0
  163. package/dist/api/routes/mail.d.ts.map +1 -0
  164. package/dist/api/routes/mail.js +1406 -0
  165. package/dist/api/routes/mail.js.map +1 -0
  166. package/dist/api/routes/managed-tasks.d.ts +48 -0
  167. package/dist/api/routes/managed-tasks.d.ts.map +1 -0
  168. package/dist/api/routes/managed-tasks.js +844 -0
  169. package/dist/api/routes/managed-tasks.js.map +1 -0
  170. package/dist/api/routes/mcp.d.ts +50 -0
  171. package/dist/api/routes/mcp.d.ts.map +1 -0
  172. package/dist/api/routes/mcp.js +470 -0
  173. package/dist/api/routes/mcp.js.map +1 -0
  174. package/dist/api/routes/metrics.d.ts +13 -0
  175. package/dist/api/routes/metrics.d.ts.map +1 -0
  176. package/dist/api/routes/metrics.js +117 -0
  177. package/dist/api/routes/metrics.js.map +1 -0
  178. package/dist/api/routes/notion.d.ts +35 -0
  179. package/dist/api/routes/notion.d.ts.map +1 -0
  180. package/dist/api/routes/notion.js +442 -0
  181. package/dist/api/routes/notion.js.map +1 -0
  182. package/dist/api/routes/observations.d.ts +4 -0
  183. package/dist/api/routes/observations.d.ts.map +1 -0
  184. package/dist/api/routes/observations.js +177 -0
  185. package/dist/api/routes/observations.js.map +1 -0
  186. package/dist/api/routes/obsidian.d.ts +16 -0
  187. package/dist/api/routes/obsidian.d.ts.map +1 -0
  188. package/dist/api/routes/obsidian.js +321 -0
  189. package/dist/api/routes/obsidian.js.map +1 -0
  190. package/dist/api/routes/profile-questions.d.ts +17 -0
  191. package/dist/api/routes/profile-questions.d.ts.map +1 -0
  192. package/dist/api/routes/profile-questions.js +115 -0
  193. package/dist/api/routes/profile-questions.js.map +1 -0
  194. package/dist/api/routes/receipts.d.ts +4 -0
  195. package/dist/api/routes/receipts.d.ts.map +1 -0
  196. package/dist/api/routes/receipts.js +155 -0
  197. package/dist/api/routes/receipts.js.map +1 -0
  198. package/dist/api/routes/recurring-schedules.d.ts +4 -0
  199. package/dist/api/routes/recurring-schedules.d.ts.map +1 -0
  200. package/dist/api/routes/recurring-schedules.js +137 -0
  201. package/dist/api/routes/recurring-schedules.js.map +1 -0
  202. package/dist/api/routes/repositories.d.ts +40 -0
  203. package/dist/api/routes/repositories.d.ts.map +1 -0
  204. package/dist/api/routes/repositories.js +857 -0
  205. package/dist/api/routes/repositories.js.map +1 -0
  206. package/dist/api/routes/setup-migrate.d.ts +74 -0
  207. package/dist/api/routes/setup-migrate.d.ts.map +1 -0
  208. package/dist/api/routes/setup-migrate.js +944 -0
  209. package/dist/api/routes/setup-migrate.js.map +1 -0
  210. package/dist/api/routes/setup.d.ts +4 -0
  211. package/dist/api/routes/setup.d.ts.map +1 -0
  212. package/dist/api/routes/setup.js +443 -0
  213. package/dist/api/routes/setup.js.map +1 -0
  214. package/dist/api/routes/skill-curation.d.ts +5 -0
  215. package/dist/api/routes/skill-curation.d.ts.map +1 -0
  216. package/dist/api/routes/skill-curation.js +728 -0
  217. package/dist/api/routes/skill-curation.js.map +1 -0
  218. package/dist/api/routes/skills.d.ts +52 -0
  219. package/dist/api/routes/skills.d.ts.map +1 -0
  220. package/dist/api/routes/skills.js +429 -0
  221. package/dist/api/routes/skills.js.map +1 -0
  222. package/dist/api/routes/sot-bindings.d.ts +20 -0
  223. package/dist/api/routes/sot-bindings.d.ts.map +1 -0
  224. package/dist/api/routes/sot-bindings.js +163 -0
  225. package/dist/api/routes/sot-bindings.js.map +1 -0
  226. package/dist/api/routes/sse.d.ts +86 -0
  227. package/dist/api/routes/sse.d.ts.map +1 -0
  228. package/dist/api/routes/sse.js +378 -0
  229. package/dist/api/routes/sse.js.map +1 -0
  230. package/dist/api/routes/system.d.ts +4 -0
  231. package/dist/api/routes/system.d.ts.map +1 -0
  232. package/dist/api/routes/system.js +207 -0
  233. package/dist/api/routes/system.js.map +1 -0
  234. package/dist/api/routes/task-flows.d.ts +30 -0
  235. package/dist/api/routes/task-flows.d.ts.map +1 -0
  236. package/dist/api/routes/task-flows.js +155 -0
  237. package/dist/api/routes/task-flows.js.map +1 -0
  238. package/dist/api/routes/travel-bookings.d.ts +4 -0
  239. package/dist/api/routes/travel-bookings.d.ts.map +1 -0
  240. package/dist/api/routes/travel-bookings.js +142 -0
  241. package/dist/api/routes/travel-bookings.js.map +1 -0
  242. package/dist/api/routes/travel-time.d.ts +8 -0
  243. package/dist/api/routes/travel-time.d.ts.map +1 -0
  244. package/dist/api/routes/travel-time.js +87 -0
  245. package/dist/api/routes/travel-time.js.map +1 -0
  246. package/dist/api/routes/triggers.d.ts +4 -0
  247. package/dist/api/routes/triggers.d.ts.map +1 -0
  248. package/dist/api/routes/triggers.js +101 -0
  249. package/dist/api/routes/triggers.js.map +1 -0
  250. package/dist/api/routes/voice.d.ts +48 -0
  251. package/dist/api/routes/voice.d.ts.map +1 -0
  252. package/dist/api/routes/voice.js +232 -0
  253. package/dist/api/routes/voice.js.map +1 -0
  254. package/dist/api/server.d.ts +428 -0
  255. package/dist/api/server.d.ts.map +1 -0
  256. package/dist/api/server.js +558 -0
  257. package/dist/api/server.js.map +1 -0
  258. package/dist/config.d.ts +136 -0
  259. package/dist/config.d.ts.map +1 -0
  260. package/dist/config.js +699 -0
  261. package/dist/config.js.map +1 -0
  262. package/dist/core/agent-core.d.ts +517 -0
  263. package/dist/core/agent-core.d.ts.map +1 -0
  264. package/dist/core/agent-core.js +102 -0
  265. package/dist/core/agent-core.js.map +1 -0
  266. package/dist/core/alerts.d.ts +86 -0
  267. package/dist/core/alerts.d.ts.map +1 -0
  268. package/dist/core/alerts.js +304 -0
  269. package/dist/core/alerts.js.map +1 -0
  270. package/dist/core/atomic-write.d.ts +51 -0
  271. package/dist/core/atomic-write.d.ts.map +1 -0
  272. package/dist/core/atomic-write.js +135 -0
  273. package/dist/core/atomic-write.js.map +1 -0
  274. package/dist/core/backends/api-key-probe.d.ts +40 -0
  275. package/dist/core/backends/api-key-probe.d.ts.map +1 -0
  276. package/dist/core/backends/api-key-probe.js +116 -0
  277. package/dist/core/backends/api-key-probe.js.map +1 -0
  278. package/dist/core/backends/auth-health-monitor.d.ts +373 -0
  279. package/dist/core/backends/auth-health-monitor.d.ts.map +1 -0
  280. package/dist/core/backends/auth-health-monitor.js +950 -0
  281. package/dist/core/backends/auth-health-monitor.js.map +1 -0
  282. package/dist/core/backends/auth-recovery.d.ts +263 -0
  283. package/dist/core/backends/auth-recovery.d.ts.map +1 -0
  284. package/dist/core/backends/auth-recovery.js +1086 -0
  285. package/dist/core/backends/auth-recovery.js.map +1 -0
  286. package/dist/core/backends/auth-telemetry.d.ts +81 -0
  287. package/dist/core/backends/auth-telemetry.d.ts.map +1 -0
  288. package/dist/core/backends/auth-telemetry.js +108 -0
  289. package/dist/core/backends/auth-telemetry.js.map +1 -0
  290. package/dist/core/backends/backend-router.d.ts +272 -0
  291. package/dist/core/backends/backend-router.d.ts.map +1 -0
  292. package/dist/core/backends/backend-router.js +759 -0
  293. package/dist/core/backends/backend-router.js.map +1 -0
  294. package/dist/core/backends/claude-code-core.d.ts +299 -0
  295. package/dist/core/backends/claude-code-core.d.ts.map +1 -0
  296. package/dist/core/backends/claude-code-core.js +2541 -0
  297. package/dist/core/backends/claude-code-core.js.map +1 -0
  298. package/dist/core/backends/claude-credentials-store.d.ts +83 -0
  299. package/dist/core/backends/claude-credentials-store.d.ts.map +1 -0
  300. package/dist/core/backends/claude-credentials-store.js +243 -0
  301. package/dist/core/backends/claude-credentials-store.js.map +1 -0
  302. package/dist/core/backends/cli-utils.d.ts +95 -0
  303. package/dist/core/backends/cli-utils.d.ts.map +1 -0
  304. package/dist/core/backends/cli-utils.js +464 -0
  305. package/dist/core/backends/cli-utils.js.map +1 -0
  306. package/dist/core/backends/codex-core.d.ts +127 -0
  307. package/dist/core/backends/codex-core.d.ts.map +1 -0
  308. package/dist/core/backends/codex-core.js +1693 -0
  309. package/dist/core/backends/codex-core.js.map +1 -0
  310. package/dist/core/backends/gemini-cli-core.d.ts +367 -0
  311. package/dist/core/backends/gemini-cli-core.d.ts.map +1 -0
  312. package/dist/core/backends/gemini-cli-core.js +2331 -0
  313. package/dist/core/backends/gemini-cli-core.js.map +1 -0
  314. package/dist/core/backends/idle-watchdog.d.ts +77 -0
  315. package/dist/core/backends/idle-watchdog.d.ts.map +1 -0
  316. package/dist/core/backends/idle-watchdog.js +94 -0
  317. package/dist/core/backends/idle-watchdog.js.map +1 -0
  318. package/dist/core/backends/install-methods.d.ts +93 -0
  319. package/dist/core/backends/install-methods.d.ts.map +1 -0
  320. package/dist/core/backends/install-methods.js +267 -0
  321. package/dist/core/backends/install-methods.js.map +1 -0
  322. package/dist/core/backends/model-registry.d.ts +58 -0
  323. package/dist/core/backends/model-registry.d.ts.map +1 -0
  324. package/dist/core/backends/model-registry.js +539 -0
  325. package/dist/core/backends/model-registry.js.map +1 -0
  326. package/dist/core/backends/plan-presets.d.ts +123 -0
  327. package/dist/core/backends/plan-presets.d.ts.map +1 -0
  328. package/dist/core/backends/plan-presets.js +235 -0
  329. package/dist/core/backends/plan-presets.js.map +1 -0
  330. package/dist/core/backends/price-fetcher.d.ts +48 -0
  331. package/dist/core/backends/price-fetcher.d.ts.map +1 -0
  332. package/dist/core/backends/price-fetcher.js +248 -0
  333. package/dist/core/backends/price-fetcher.js.map +1 -0
  334. package/dist/core/backends/process-config-cascade.d.ts +68 -0
  335. package/dist/core/backends/process-config-cascade.d.ts.map +1 -0
  336. package/dist/core/backends/process-config-cascade.js +173 -0
  337. package/dist/core/backends/process-config-cascade.js.map +1 -0
  338. package/dist/core/backends/prompt-utils.d.ts +6 -0
  339. package/dist/core/backends/prompt-utils.d.ts.map +1 -0
  340. package/dist/core/backends/prompt-utils.js +80 -0
  341. package/dist/core/backends/prompt-utils.js.map +1 -0
  342. package/dist/core/backends/proxy-model-registry.d.ts +110 -0
  343. package/dist/core/backends/proxy-model-registry.d.ts.map +1 -0
  344. package/dist/core/backends/proxy-model-registry.js +195 -0
  345. package/dist/core/backends/proxy-model-registry.js.map +1 -0
  346. package/dist/core/backends/silent-api-error-detector.d.ts +31 -0
  347. package/dist/core/backends/silent-api-error-detector.d.ts.map +1 -0
  348. package/dist/core/backends/silent-api-error-detector.js +44 -0
  349. package/dist/core/backends/silent-api-error-detector.js.map +1 -0
  350. package/dist/core/bang-commands/commands-cost.d.ts +13 -0
  351. package/dist/core/bang-commands/commands-cost.d.ts.map +1 -0
  352. package/dist/core/bang-commands/commands-cost.js +91 -0
  353. package/dist/core/bang-commands/commands-cost.js.map +1 -0
  354. package/dist/core/bang-commands/commands-report.d.ts +18 -0
  355. package/dist/core/bang-commands/commands-report.d.ts.map +1 -0
  356. package/dist/core/bang-commands/commands-report.js +105 -0
  357. package/dist/core/bang-commands/commands-report.js.map +1 -0
  358. package/dist/core/bang-commands/commands-stop-start.d.ts +4 -0
  359. package/dist/core/bang-commands/commands-stop-start.d.ts.map +1 -0
  360. package/dist/core/bang-commands/commands-stop-start.js +88 -0
  361. package/dist/core/bang-commands/commands-stop-start.js.map +1 -0
  362. package/dist/core/bang-commands/format-utils.d.ts +34 -0
  363. package/dist/core/bang-commands/format-utils.d.ts.map +1 -0
  364. package/dist/core/bang-commands/format-utils.js +118 -0
  365. package/dist/core/bang-commands/format-utils.js.map +1 -0
  366. package/dist/core/bang-commands/index.d.ts +20 -0
  367. package/dist/core/bang-commands/index.d.ts.map +1 -0
  368. package/dist/core/bang-commands/index.js +31 -0
  369. package/dist/core/bang-commands/index.js.map +1 -0
  370. package/dist/core/bang-commands/registry.d.ts +72 -0
  371. package/dist/core/bang-commands/registry.d.ts.map +1 -0
  372. package/dist/core/bang-commands/registry.js +174 -0
  373. package/dist/core/bang-commands/registry.js.map +1 -0
  374. package/dist/core/bang-commands/user-commands.d.ts +86 -0
  375. package/dist/core/bang-commands/user-commands.d.ts.map +1 -0
  376. package/dist/core/bang-commands/user-commands.js +212 -0
  377. package/dist/core/bang-commands/user-commands.js.map +1 -0
  378. package/dist/core/channel-timeline.d.ts +28 -0
  379. package/dist/core/channel-timeline.d.ts.map +1 -0
  380. package/dist/core/channel-timeline.js +117 -0
  381. package/dist/core/channel-timeline.js.map +1 -0
  382. package/dist/core/character-block.d.ts +37 -0
  383. package/dist/core/character-block.d.ts.map +1 -0
  384. package/dist/core/character-block.js +162 -0
  385. package/dist/core/character-block.js.map +1 -0
  386. package/dist/core/context/activity-sources.d.ts +37 -0
  387. package/dist/core/context/activity-sources.d.ts.map +1 -0
  388. package/dist/core/context/activity-sources.js +69 -0
  389. package/dist/core/context/activity-sources.js.map +1 -0
  390. package/dist/core/context/activity-view-reconciler.d.ts +110 -0
  391. package/dist/core/context/activity-view-reconciler.d.ts.map +1 -0
  392. package/dist/core/context/activity-view-reconciler.js +252 -0
  393. package/dist/core/context/activity-view-reconciler.js.map +1 -0
  394. package/dist/core/context/activity-view-runner.d.ts +38 -0
  395. package/dist/core/context/activity-view-runner.d.ts.map +1 -0
  396. package/dist/core/context/activity-view-runner.js +402 -0
  397. package/dist/core/context/activity-view-runner.js.map +1 -0
  398. package/dist/core/context/default-schedules-reconciler.d.ts +85 -0
  399. package/dist/core/context/default-schedules-reconciler.d.ts.map +1 -0
  400. package/dist/core/context/default-schedules-reconciler.js +153 -0
  401. package/dist/core/context/default-schedules-reconciler.js.map +1 -0
  402. package/dist/core/context/default-schedules-runner.d.ts +40 -0
  403. package/dist/core/context/default-schedules-runner.d.ts.map +1 -0
  404. package/dist/core/context/default-schedules-runner.js +233 -0
  405. package/dist/core/context/default-schedules-runner.js.map +1 -0
  406. package/dist/core/context/domain-index-reconciler.d.ts +81 -0
  407. package/dist/core/context/domain-index-reconciler.d.ts.map +1 -0
  408. package/dist/core/context/domain-index-reconciler.js +199 -0
  409. package/dist/core/context/domain-index-reconciler.js.map +1 -0
  410. package/dist/core/context/domain-index-runner.d.ts +35 -0
  411. package/dist/core/context/domain-index-runner.d.ts.map +1 -0
  412. package/dist/core/context/domain-index-runner.js +223 -0
  413. package/dist/core/context/domain-index-runner.js.map +1 -0
  414. package/dist/core/context/entity-mirror.d.ts +227 -0
  415. package/dist/core/context/entity-mirror.d.ts.map +1 -0
  416. package/dist/core/context/entity-mirror.js +629 -0
  417. package/dist/core/context/entity-mirror.js.map +1 -0
  418. package/dist/core/context/entity-source-rename.d.ts +61 -0
  419. package/dist/core/context/entity-source-rename.d.ts.map +1 -0
  420. package/dist/core/context/entity-source-rename.js +237 -0
  421. package/dist/core/context/entity-source-rename.js.map +1 -0
  422. package/dist/core/context/index-reconciler.d.ts +61 -0
  423. package/dist/core/context/index-reconciler.d.ts.map +1 -0
  424. package/dist/core/context/index-reconciler.js +329 -0
  425. package/dist/core/context/index-reconciler.js.map +1 -0
  426. package/dist/core/context/policy-index-reconciler.d.ts +102 -0
  427. package/dist/core/context/policy-index-reconciler.d.ts.map +1 -0
  428. package/dist/core/context/policy-index-reconciler.js +202 -0
  429. package/dist/core/context/policy-index-reconciler.js.map +1 -0
  430. package/dist/core/context/policy-index-runner.d.ts +66 -0
  431. package/dist/core/context/policy-index-runner.d.ts.map +1 -0
  432. package/dist/core/context/policy-index-runner.js +406 -0
  433. package/dist/core/context/policy-index-runner.js.map +1 -0
  434. package/dist/core/context/reconciler-runner.d.ts +44 -0
  435. package/dist/core/context/reconciler-runner.d.ts.map +1 -0
  436. package/dist/core/context/reconciler-runner.js +273 -0
  437. package/dist/core/context/reconciler-runner.js.map +1 -0
  438. package/dist/core/context-builder.d.ts +115 -0
  439. package/dist/core/context-builder.d.ts.map +1 -0
  440. package/dist/core/context-builder.js +1148 -0
  441. package/dist/core/context-builder.js.map +1 -0
  442. package/dist/core/context-frontmatter-backfill.d.ts +33 -0
  443. package/dist/core/context-frontmatter-backfill.d.ts.map +1 -0
  444. package/dist/core/context-frontmatter-backfill.js +111 -0
  445. package/dist/core/context-frontmatter-backfill.js.map +1 -0
  446. package/dist/core/context-frontmatter.d.ts +13 -0
  447. package/dist/core/context-frontmatter.d.ts.map +1 -0
  448. package/dist/core/context-frontmatter.js +325 -0
  449. package/dist/core/context-frontmatter.js.map +1 -0
  450. package/dist/core/context-health.d.ts +51 -0
  451. package/dist/core/context-health.d.ts.map +1 -0
  452. package/dist/core/context-health.js +304 -0
  453. package/dist/core/context-health.js.map +1 -0
  454. package/dist/core/context-paths.d.ts +183 -0
  455. package/dist/core/context-paths.d.ts.map +1 -0
  456. package/dist/core/context-paths.js +241 -0
  457. package/dist/core/context-paths.js.map +1 -0
  458. package/dist/core/context-staleness.d.ts +45 -0
  459. package/dist/core/context-staleness.d.ts.map +1 -0
  460. package/dist/core/context-staleness.js +88 -0
  461. package/dist/core/context-staleness.js.map +1 -0
  462. package/dist/core/custom-routine-scheduler.d.ts +151 -0
  463. package/dist/core/custom-routine-scheduler.d.ts.map +1 -0
  464. package/dist/core/custom-routine-scheduler.js +335 -0
  465. package/dist/core/custom-routine-scheduler.js.map +1 -0
  466. package/dist/core/daemon-api-cli.d.ts +33 -0
  467. package/dist/core/daemon-api-cli.d.ts.map +1 -0
  468. package/dist/core/daemon-api-cli.js +614 -0
  469. package/dist/core/daemon-api-cli.js.map +1 -0
  470. package/dist/core/dashboard-session-cleanup.d.ts +39 -0
  471. package/dist/core/dashboard-session-cleanup.d.ts.map +1 -0
  472. package/dist/core/dashboard-session-cleanup.js +108 -0
  473. package/dist/core/dashboard-session-cleanup.js.map +1 -0
  474. package/dist/core/dashboard-session-controls.d.ts +41 -0
  475. package/dist/core/dashboard-session-controls.d.ts.map +1 -0
  476. package/dist/core/dashboard-session-controls.js +154 -0
  477. package/dist/core/dashboard-session-controls.js.map +1 -0
  478. package/dist/core/delegated-connector-health.d.ts +63 -0
  479. package/dist/core/delegated-connector-health.d.ts.map +1 -0
  480. package/dist/core/delegated-connector-health.js +157 -0
  481. package/dist/core/delegated-connector-health.js.map +1 -0
  482. package/dist/core/dispatcher.d.ts +999 -0
  483. package/dist/core/dispatcher.d.ts.map +1 -0
  484. package/dist/core/dispatcher.js +4378 -0
  485. package/dist/core/dispatcher.js.map +1 -0
  486. package/dist/core/dm-freshness-metrics.d.ts +73 -0
  487. package/dist/core/dm-freshness-metrics.d.ts.map +1 -0
  488. package/dist/core/dm-freshness-metrics.js +138 -0
  489. package/dist/core/dm-freshness-metrics.js.map +1 -0
  490. package/dist/core/docs/citation-validator.d.ts +73 -0
  491. package/dist/core/docs/citation-validator.d.ts.map +1 -0
  492. package/dist/core/docs/citation-validator.js +195 -0
  493. package/dist/core/docs/citation-validator.js.map +1 -0
  494. package/dist/core/docs/extract-terms.d.ts +78 -0
  495. package/dist/core/docs/extract-terms.d.ts.map +1 -0
  496. package/dist/core/docs/extract-terms.js +147 -0
  497. package/dist/core/docs/extract-terms.js.map +1 -0
  498. package/dist/core/docs/indexer.d.ts +104 -0
  499. package/dist/core/docs/indexer.d.ts.map +1 -0
  500. package/dist/core/docs/indexer.js +340 -0
  501. package/dist/core/docs/indexer.js.map +1 -0
  502. package/dist/core/drift-effects.d.ts +30 -0
  503. package/dist/core/drift-effects.d.ts.map +1 -0
  504. package/dist/core/drift-effects.js +384 -0
  505. package/dist/core/drift-effects.js.map +1 -0
  506. package/dist/core/event-bus.d.ts +56 -0
  507. package/dist/core/event-bus.d.ts.map +1 -0
  508. package/dist/core/event-bus.js +135 -0
  509. package/dist/core/event-bus.js.map +1 -0
  510. package/dist/core/git-project-docs.d.ts +77 -0
  511. package/dist/core/git-project-docs.d.ts.map +1 -0
  512. package/dist/core/git-project-docs.js +439 -0
  513. package/dist/core/git-project-docs.js.map +1 -0
  514. package/dist/core/health-monitor.d.ts +57 -0
  515. package/dist/core/health-monitor.d.ts.map +1 -0
  516. package/dist/core/health-monitor.js +137 -0
  517. package/dist/core/health-monitor.js.map +1 -0
  518. package/dist/core/heartbeat.d.ts +26 -0
  519. package/dist/core/heartbeat.d.ts.map +1 -0
  520. package/dist/core/heartbeat.js +48 -0
  521. package/dist/core/heartbeat.js.map +1 -0
  522. package/dist/core/integration-health.d.ts +49 -0
  523. package/dist/core/integration-health.d.ts.map +1 -0
  524. package/dist/core/integration-health.js +89 -0
  525. package/dist/core/integration-health.js.map +1 -0
  526. package/dist/core/integration-lifecycle.d.ts +79 -0
  527. package/dist/core/integration-lifecycle.d.ts.map +1 -0
  528. package/dist/core/integration-lifecycle.js +153 -0
  529. package/dist/core/integration-lifecycle.js.map +1 -0
  530. package/dist/core/integration-main-backend.d.ts +36 -0
  531. package/dist/core/integration-main-backend.d.ts.map +1 -0
  532. package/dist/core/integration-main-backend.js +59 -0
  533. package/dist/core/integration-main-backend.js.map +1 -0
  534. package/dist/core/integration-probe.d.ts +98 -0
  535. package/dist/core/integration-probe.d.ts.map +1 -0
  536. package/dist/core/integration-probe.js +152 -0
  537. package/dist/core/integration-probe.js.map +1 -0
  538. package/dist/core/management-md-write-lock.d.ts +68 -0
  539. package/dist/core/management-md-write-lock.d.ts.map +1 -0
  540. package/dist/core/management-md-write-lock.js +93 -0
  541. package/dist/core/management-md-write-lock.js.map +1 -0
  542. package/dist/core/management-md.d.ts +186 -0
  543. package/dist/core/management-md.d.ts.map +1 -0
  544. package/dist/core/management-md.js +652 -0
  545. package/dist/core/management-md.js.map +1 -0
  546. package/dist/core/management-registry.d.ts +245 -0
  547. package/dist/core/management-registry.d.ts.map +1 -0
  548. package/dist/core/management-registry.js +906 -0
  549. package/dist/core/management-registry.js.map +1 -0
  550. package/dist/core/management-telemetry.d.ts +100 -0
  551. package/dist/core/management-telemetry.d.ts.map +1 -0
  552. package/dist/core/management-telemetry.js +156 -0
  553. package/dist/core/management-telemetry.js.map +1 -0
  554. package/dist/core/message-recorder.d.ts +38 -0
  555. package/dist/core/message-recorder.d.ts.map +1 -0
  556. package/dist/core/message-recorder.js +88 -0
  557. package/dist/core/message-recorder.js.map +1 -0
  558. package/dist/core/metrics.d.ts +338 -0
  559. package/dist/core/metrics.d.ts.map +1 -0
  560. package/dist/core/metrics.js +747 -0
  561. package/dist/core/metrics.js.map +1 -0
  562. package/dist/core/migration-backup.d.ts +218 -0
  563. package/dist/core/migration-backup.d.ts.map +1 -0
  564. package/dist/core/migration-backup.js +934 -0
  565. package/dist/core/migration-backup.js.map +1 -0
  566. package/dist/core/overview-write-lock.d.ts +48 -0
  567. package/dist/core/overview-write-lock.d.ts.map +1 -0
  568. package/dist/core/overview-write-lock.js +56 -0
  569. package/dist/core/overview-write-lock.js.map +1 -0
  570. package/dist/core/path-compat.d.ts +22 -0
  571. package/dist/core/path-compat.d.ts.map +1 -0
  572. package/dist/core/path-compat.js +67 -0
  573. package/dist/core/path-compat.js.map +1 -0
  574. package/dist/core/path-rewrite.d.ts +58 -0
  575. package/dist/core/path-rewrite.d.ts.map +1 -0
  576. package/dist/core/path-rewrite.js +141 -0
  577. package/dist/core/path-rewrite.js.map +1 -0
  578. package/dist/core/policy-files.d.ts +108 -0
  579. package/dist/core/policy-files.d.ts.map +1 -0
  580. package/dist/core/policy-files.js +198 -0
  581. package/dist/core/policy-files.js.map +1 -0
  582. package/dist/core/profile-questions/seed.d.ts +44 -0
  583. package/dist/core/profile-questions/seed.d.ts.map +1 -0
  584. package/dist/core/profile-questions/seed.js +173 -0
  585. package/dist/core/profile-questions/seed.js.map +1 -0
  586. package/dist/core/profile-questions/slot-filled.d.ts +51 -0
  587. package/dist/core/profile-questions/slot-filled.d.ts.map +1 -0
  588. package/dist/core/profile-questions/slot-filled.js +118 -0
  589. package/dist/core/profile-questions/slot-filled.js.map +1 -0
  590. package/dist/core/prompts.d.ts +111 -0
  591. package/dist/core/prompts.d.ts.map +1 -0
  592. package/dist/core/prompts.js +267 -0
  593. package/dist/core/prompts.js.map +1 -0
  594. package/dist/core/quiet-hours-sync.d.ts +15 -0
  595. package/dist/core/quiet-hours-sync.d.ts.map +1 -0
  596. package/dist/core/quiet-hours-sync.js +51 -0
  597. package/dist/core/quiet-hours-sync.js.map +1 -0
  598. package/dist/core/read-sensitive-token-manager.d.ts +19 -0
  599. package/dist/core/read-sensitive-token-manager.d.ts.map +1 -0
  600. package/dist/core/read-sensitive-token-manager.js +29 -0
  601. package/dist/core/read-sensitive-token-manager.js.map +1 -0
  602. package/dist/core/recurrence.d.ts +24 -0
  603. package/dist/core/recurrence.d.ts.map +1 -0
  604. package/dist/core/recurrence.js +162 -0
  605. package/dist/core/recurrence.js.map +1 -0
  606. package/dist/core/reinstall.d.ts +107 -0
  607. package/dist/core/reinstall.d.ts.map +1 -0
  608. package/dist/core/reinstall.js +163 -0
  609. package/dist/core/reinstall.js.map +1 -0
  610. package/dist/core/release-assets.d.ts +106 -0
  611. package/dist/core/release-assets.d.ts.map +1 -0
  612. package/dist/core/release-assets.js +434 -0
  613. package/dist/core/release-assets.js.map +1 -0
  614. package/dist/core/repository-management-docs.d.ts +216 -0
  615. package/dist/core/repository-management-docs.d.ts.map +1 -0
  616. package/dist/core/repository-management-docs.js +855 -0
  617. package/dist/core/repository-management-docs.js.map +1 -0
  618. package/dist/core/retention.d.ts +164 -0
  619. package/dist/core/retention.d.ts.map +1 -0
  620. package/dist/core/retention.js +1008 -0
  621. package/dist/core/retention.js.map +1 -0
  622. package/dist/core/review-context.d.ts +48 -0
  623. package/dist/core/review-context.d.ts.map +1 -0
  624. package/dist/core/review-context.js +282 -0
  625. package/dist/core/review-context.js.map +1 -0
  626. package/dist/core/roadmap-horizon.d.ts +48 -0
  627. package/dist/core/roadmap-horizon.d.ts.map +1 -0
  628. package/dist/core/roadmap-horizon.js +213 -0
  629. package/dist/core/roadmap-horizon.js.map +1 -0
  630. package/dist/core/roadmap-ids.d.ts +57 -0
  631. package/dist/core/roadmap-ids.d.ts.map +1 -0
  632. package/dist/core/roadmap-ids.js +118 -0
  633. package/dist/core/roadmap-ids.js.map +1 -0
  634. package/dist/core/roadmap-merge.d.ts +7 -0
  635. package/dist/core/roadmap-merge.d.ts.map +1 -0
  636. package/dist/core/roadmap-merge.js +187 -0
  637. package/dist/core/roadmap-merge.js.map +1 -0
  638. package/dist/core/roadmap-refresh-triggers.d.ts +32 -0
  639. package/dist/core/roadmap-refresh-triggers.d.ts.map +1 -0
  640. package/dist/core/roadmap-refresh-triggers.js +51 -0
  641. package/dist/core/roadmap-refresh-triggers.js.map +1 -0
  642. package/dist/core/roadmap-truncate.d.ts +49 -0
  643. package/dist/core/roadmap-truncate.d.ts.map +1 -0
  644. package/dist/core/roadmap-truncate.js +152 -0
  645. package/dist/core/roadmap-truncate.js.map +1 -0
  646. package/dist/core/roadmap-validate.d.ts +31 -0
  647. package/dist/core/roadmap-validate.d.ts.map +1 -0
  648. package/dist/core/roadmap-validate.js +403 -0
  649. package/dist/core/roadmap-validate.js.map +1 -0
  650. package/dist/core/roadmap-write-lock.d.ts +53 -0
  651. package/dist/core/roadmap-write-lock.d.ts.map +1 -0
  652. package/dist/core/roadmap-write-lock.js +59 -0
  653. package/dist/core/roadmap-write-lock.js.map +1 -0
  654. package/dist/core/schedule-insert-helper.d.ts +46 -0
  655. package/dist/core/schedule-insert-helper.d.ts.map +1 -0
  656. package/dist/core/schedule-insert-helper.js +52 -0
  657. package/dist/core/schedule-insert-helper.js.map +1 -0
  658. package/dist/core/schedule-maintenance.d.ts +22 -0
  659. package/dist/core/schedule-maintenance.d.ts.map +1 -0
  660. package/dist/core/schedule-maintenance.js +57 -0
  661. package/dist/core/schedule-maintenance.js.map +1 -0
  662. package/dist/core/scheduler.d.ts +208 -0
  663. package/dist/core/scheduler.d.ts.map +1 -0
  664. package/dist/core/scheduler.js +896 -0
  665. package/dist/core/scheduler.js.map +1 -0
  666. package/dist/core/semaphore.d.ts +13 -0
  667. package/dist/core/semaphore.d.ts.map +1 -0
  668. package/dist/core/semaphore.js +31 -0
  669. package/dist/core/semaphore.js.map +1 -0
  670. package/dist/core/session-gate.d.ts +37 -0
  671. package/dist/core/session-gate.d.ts.map +1 -0
  672. package/dist/core/session-gate.js +69 -0
  673. package/dist/core/session-gate.js.map +1 -0
  674. package/dist/core/session-manager.d.ts +252 -0
  675. package/dist/core/session-manager.d.ts.map +1 -0
  676. package/dist/core/session-manager.js +716 -0
  677. package/dist/core/session-manager.js.map +1 -0
  678. package/dist/core/signal-detector.d.ts +97 -0
  679. package/dist/core/signal-detector.d.ts.map +1 -0
  680. package/dist/core/signal-detector.js +215 -0
  681. package/dist/core/signal-detector.js.map +1 -0
  682. package/dist/core/skeleton.d.ts +83 -0
  683. package/dist/core/skeleton.d.ts.map +1 -0
  684. package/dist/core/skeleton.js +255 -0
  685. package/dist/core/skeleton.js.map +1 -0
  686. package/dist/core/skill-curation/apply-proposal.d.ts +71 -0
  687. package/dist/core/skill-curation/apply-proposal.d.ts.map +1 -0
  688. package/dist/core/skill-curation/apply-proposal.js +175 -0
  689. package/dist/core/skill-curation/apply-proposal.js.map +1 -0
  690. package/dist/core/skill-curation/auto-revert.d.ts +43 -0
  691. package/dist/core/skill-curation/auto-revert.d.ts.map +1 -0
  692. package/dist/core/skill-curation/auto-revert.js +155 -0
  693. package/dist/core/skill-curation/auto-revert.js.map +1 -0
  694. package/dist/core/skill-curation/classify-diff.d.ts +27 -0
  695. package/dist/core/skill-curation/classify-diff.d.ts.map +1 -0
  696. package/dist/core/skill-curation/classify-diff.js +0 -0
  697. package/dist/core/skill-curation/classify-diff.js.map +1 -0
  698. package/dist/core/skill-curation/declarations.d.ts +32 -0
  699. package/dist/core/skill-curation/declarations.d.ts.map +1 -0
  700. package/dist/core/skill-curation/declarations.js +171 -0
  701. package/dist/core/skill-curation/declarations.js.map +1 -0
  702. package/dist/core/skill-curation/knowledge-map.d.ts +26 -0
  703. package/dist/core/skill-curation/knowledge-map.d.ts.map +1 -0
  704. package/dist/core/skill-curation/knowledge-map.js +154 -0
  705. package/dist/core/skill-curation/knowledge-map.js.map +1 -0
  706. package/dist/core/skill-curation/orphan-overlay.d.ts +35 -0
  707. package/dist/core/skill-curation/orphan-overlay.d.ts.map +1 -0
  708. package/dist/core/skill-curation/orphan-overlay.js +167 -0
  709. package/dist/core/skill-curation/orphan-overlay.js.map +1 -0
  710. package/dist/core/skill-curation/overlay-store.d.ts +41 -0
  711. package/dist/core/skill-curation/overlay-store.d.ts.map +1 -0
  712. package/dist/core/skill-curation/overlay-store.js +143 -0
  713. package/dist/core/skill-curation/overlay-store.js.map +1 -0
  714. package/dist/core/skill-curation/render/convention-notes.d.ts +4 -0
  715. package/dist/core/skill-curation/render/convention-notes.d.ts.map +1 -0
  716. package/dist/core/skill-curation/render/convention-notes.js +13 -0
  717. package/dist/core/skill-curation/render/convention-notes.js.map +1 -0
  718. package/dist/core/skill-curation/render/cross-references.d.ts +4 -0
  719. package/dist/core/skill-curation/render/cross-references.d.ts.map +1 -0
  720. package/dist/core/skill-curation/render/cross-references.js +10 -0
  721. package/dist/core/skill-curation/render/cross-references.js.map +1 -0
  722. package/dist/core/skill-curation/render/frontmatter-schema.d.ts +4 -0
  723. package/dist/core/skill-curation/render/frontmatter-schema.d.ts.map +1 -0
  724. package/dist/core/skill-curation/render/frontmatter-schema.js +25 -0
  725. package/dist/core/skill-curation/render/frontmatter-schema.js.map +1 -0
  726. package/dist/core/skill-curation/render/index.d.ts +5 -0
  727. package/dist/core/skill-curation/render/index.d.ts.map +1 -0
  728. package/dist/core/skill-curation/render/index.js +42 -0
  729. package/dist/core/skill-curation/render/index.js.map +1 -0
  730. package/dist/core/skill-curation/render/knowledge-layout.d.ts +4 -0
  731. package/dist/core/skill-curation/render/knowledge-layout.d.ts.map +1 -0
  732. package/dist/core/skill-curation/render/knowledge-layout.js +36 -0
  733. package/dist/core/skill-curation/render/knowledge-layout.js.map +1 -0
  734. package/dist/core/skill-curation/render/routing-table.d.ts +4 -0
  735. package/dist/core/skill-curation/render/routing-table.d.ts.map +1 -0
  736. package/dist/core/skill-curation/render/routing-table.js +37 -0
  737. package/dist/core/skill-curation/render/routing-table.js.map +1 -0
  738. package/dist/core/skill-curation/render/search-recipes.d.ts +4 -0
  739. package/dist/core/skill-curation/render/search-recipes.d.ts.map +1 -0
  740. package/dist/core/skill-curation/render/search-recipes.js +39 -0
  741. package/dist/core/skill-curation/render/search-recipes.js.map +1 -0
  742. package/dist/core/skill-curation/run-token.d.ts +27 -0
  743. package/dist/core/skill-curation/run-token.d.ts.map +1 -0
  744. package/dist/core/skill-curation/run-token.js +81 -0
  745. package/dist/core/skill-curation/run-token.js.map +1 -0
  746. package/dist/core/skill-curation/signals.d.ts +49 -0
  747. package/dist/core/skill-curation/signals.d.ts.map +1 -0
  748. package/dist/core/skill-curation/signals.js +149 -0
  749. package/dist/core/skill-curation/signals.js.map +1 -0
  750. package/dist/core/skill-curation/smoke-test.d.ts +39 -0
  751. package/dist/core/skill-curation/smoke-test.d.ts.map +1 -0
  752. package/dist/core/skill-curation/smoke-test.js +313 -0
  753. package/dist/core/skill-curation/smoke-test.js.map +1 -0
  754. package/dist/core/skill-curation/splicer.d.ts +16 -0
  755. package/dist/core/skill-curation/splicer.d.ts.map +1 -0
  756. package/dist/core/skill-curation/splicer.js +78 -0
  757. package/dist/core/skill-curation/splicer.js.map +1 -0
  758. package/dist/core/skill-curation/workdir.d.ts +40 -0
  759. package/dist/core/skill-curation/workdir.d.ts.map +1 -0
  760. package/dist/core/skill-curation/workdir.js +242 -0
  761. package/dist/core/skill-curation/workdir.js.map +1 -0
  762. package/dist/core/skills-compiler.d.ts +391 -0
  763. package/dist/core/skills-compiler.d.ts.map +1 -0
  764. package/dist/core/skills-compiler.js +1271 -0
  765. package/dist/core/skills-compiler.js.map +1 -0
  766. package/dist/core/skills-manifest.d.ts +8 -0
  767. package/dist/core/skills-manifest.d.ts.map +1 -0
  768. package/dist/core/skills-manifest.js +408 -0
  769. package/dist/core/skills-manifest.js.map +1 -0
  770. package/dist/core/system-reset.d.ts +268 -0
  771. package/dist/core/system-reset.d.ts.map +1 -0
  772. package/dist/core/system-reset.js +816 -0
  773. package/dist/core/system-reset.js.map +1 -0
  774. package/dist/core/template-store.d.ts +170 -0
  775. package/dist/core/template-store.d.ts.map +1 -0
  776. package/dist/core/template-store.js +388 -0
  777. package/dist/core/template-store.js.map +1 -0
  778. package/dist/core/template-versions.d.ts +95 -0
  779. package/dist/core/template-versions.d.ts.map +1 -0
  780. package/dist/core/template-versions.js +175 -0
  781. package/dist/core/template-versions.js.map +1 -0
  782. package/dist/core/today-agent-plan.d.ts +33 -0
  783. package/dist/core/today-agent-plan.d.ts.map +1 -0
  784. package/dist/core/today-agent-plan.js +120 -0
  785. package/dist/core/today-agent-plan.js.map +1 -0
  786. package/dist/core/today-direct-writer.d.ts +62 -0
  787. package/dist/core/today-direct-writer.d.ts.map +1 -0
  788. package/dist/core/today-direct-writer.js +132 -0
  789. package/dist/core/today-direct-writer.js.map +1 -0
  790. package/dist/core/today-write-lock.d.ts +89 -0
  791. package/dist/core/today-write-lock.d.ts.map +1 -0
  792. package/dist/core/today-write-lock.js +154 -0
  793. package/dist/core/today-write-lock.js.map +1 -0
  794. package/dist/core/trigger-dispatch.d.ts +31 -0
  795. package/dist/core/trigger-dispatch.d.ts.map +1 -0
  796. package/dist/core/trigger-dispatch.js +100 -0
  797. package/dist/core/trigger-dispatch.js.map +1 -0
  798. package/dist/core/trigger-evaluator.d.ts +59 -0
  799. package/dist/core/trigger-evaluator.d.ts.map +1 -0
  800. package/dist/core/trigger-evaluator.js +243 -0
  801. package/dist/core/trigger-evaluator.js.map +1 -0
  802. package/dist/core/workdir.d.ts +241 -0
  803. package/dist/core/workdir.d.ts.map +1 -0
  804. package/dist/core/workdir.js +565 -0
  805. package/dist/core/workdir.js.map +1 -0
  806. package/dist/db/automation-triggers.d.ts +90 -0
  807. package/dist/db/automation-triggers.d.ts.map +1 -0
  808. package/dist/db/automation-triggers.js +199 -0
  809. package/dist/db/automation-triggers.js.map +1 -0
  810. package/dist/db/client.d.ts +6 -0
  811. package/dist/db/client.d.ts.map +1 -0
  812. package/dist/db/client.js +47 -0
  813. package/dist/db/client.js.map +1 -0
  814. package/dist/db/entities-store.d.ts +92 -0
  815. package/dist/db/entities-store.d.ts.map +1 -0
  816. package/dist/db/entities-store.js +180 -0
  817. package/dist/db/entities-store.js.map +1 -0
  818. package/dist/db/hourly-check-signals.d.ts +78 -0
  819. package/dist/db/hourly-check-signals.d.ts.map +1 -0
  820. package/dist/db/hourly-check-signals.js +289 -0
  821. package/dist/db/hourly-check-signals.js.map +1 -0
  822. package/dist/db/integration-probe-store.d.ts +27 -0
  823. package/dist/db/integration-probe-store.d.ts.map +1 -0
  824. package/dist/db/integration-probe-store.js +75 -0
  825. package/dist/db/integration-probe-store.js.map +1 -0
  826. package/dist/db/integrations-store.d.ts +19 -0
  827. package/dist/db/integrations-store.d.ts.map +1 -0
  828. package/dist/db/integrations-store.js +85 -0
  829. package/dist/db/integrations-store.js.map +1 -0
  830. package/dist/db/managed-tasks-store.d.ts +130 -0
  831. package/dist/db/managed-tasks-store.d.ts.map +1 -0
  832. package/dist/db/managed-tasks-store.js +238 -0
  833. package/dist/db/managed-tasks-store.js.map +1 -0
  834. package/dist/db/management-parse-failures-store.d.ts +45 -0
  835. package/dist/db/management-parse-failures-store.d.ts.map +1 -0
  836. package/dist/db/management-parse-failures-store.js +36 -0
  837. package/dist/db/management-parse-failures-store.js.map +1 -0
  838. package/dist/db/observations.d.ts +145 -0
  839. package/dist/db/observations.d.ts.map +1 -0
  840. package/dist/db/observations.js +287 -0
  841. package/dist/db/observations.js.map +1 -0
  842. package/dist/db/recurring-schedules.d.ts +70 -0
  843. package/dist/db/recurring-schedules.d.ts.map +1 -0
  844. package/dist/db/recurring-schedules.js +213 -0
  845. package/dist/db/recurring-schedules.js.map +1 -0
  846. package/dist/db/repositories-store.d.ts +296 -0
  847. package/dist/db/repositories-store.d.ts.map +1 -0
  848. package/dist/db/repositories-store.js +754 -0
  849. package/dist/db/repositories-store.js.map +1 -0
  850. package/dist/db/runtime-state.d.ts +61 -0
  851. package/dist/db/runtime-state.d.ts.map +1 -0
  852. package/dist/db/runtime-state.js +104 -0
  853. package/dist/db/runtime-state.js.map +1 -0
  854. package/dist/db/schema.d.ts +4 -0
  855. package/dist/db/schema.d.ts.map +1 -0
  856. package/dist/db/schema.js +1338 -0
  857. package/dist/db/schema.js.map +1 -0
  858. package/dist/db/sot-bindings-store.d.ts +41 -0
  859. package/dist/db/sot-bindings-store.d.ts.map +1 -0
  860. package/dist/db/sot-bindings-store.js +64 -0
  861. package/dist/db/sot-bindings-store.js.map +1 -0
  862. package/dist/db/test-schemas.d.ts +23 -0
  863. package/dist/db/test-schemas.d.ts.map +1 -0
  864. package/dist/db/test-schemas.js +111 -0
  865. package/dist/db/test-schemas.js.map +1 -0
  866. package/dist/db/voice-transcripts-store.d.ts +28 -0
  867. package/dist/db/voice-transcripts-store.d.ts.map +1 -0
  868. package/dist/db/voice-transcripts-store.js +43 -0
  869. package/dist/db/voice-transcripts-store.js.map +1 -0
  870. package/dist/index.d.ts +2 -0
  871. package/dist/index.d.ts.map +1 -0
  872. package/dist/index.js +2913 -0
  873. package/dist/index.js.map +1 -0
  874. package/dist/init.d.ts +7 -0
  875. package/dist/init.d.ts.map +1 -0
  876. package/dist/init.js +32 -0
  877. package/dist/init.js.map +1 -0
  878. package/dist/log-buffer.d.ts +71 -0
  879. package/dist/log-buffer.d.ts.map +1 -0
  880. package/dist/log-buffer.js +201 -0
  881. package/dist/log-buffer.js.map +1 -0
  882. package/dist/logging.d.ts +5 -0
  883. package/dist/logging.d.ts.map +1 -0
  884. package/dist/logging.js +130 -0
  885. package/dist/logging.js.map +1 -0
  886. package/dist/management-rules.d.ts +2 -0
  887. package/dist/management-rules.d.ts.map +1 -0
  888. package/dist/management-rules.js +62 -0
  889. package/dist/management-rules.js.map +1 -0
  890. package/dist/messaging/constants.d.ts +33 -0
  891. package/dist/messaging/constants.d.ts.map +1 -0
  892. package/dist/messaging/constants.js +52 -0
  893. package/dist/messaging/constants.js.map +1 -0
  894. package/dist/messaging/magic-phrase.d.ts +16 -0
  895. package/dist/messaging/magic-phrase.d.ts.map +1 -0
  896. package/dist/messaging/magic-phrase.js +103 -0
  897. package/dist/messaging/magic-phrase.js.map +1 -0
  898. package/dist/messaging/owner-channels.d.ts +20 -0
  899. package/dist/messaging/owner-channels.d.ts.map +1 -0
  900. package/dist/messaging/owner-channels.js +41 -0
  901. package/dist/messaging/owner-channels.js.map +1 -0
  902. package/dist/observers/calendar-poller.d.ts +51 -0
  903. package/dist/observers/calendar-poller.d.ts.map +1 -0
  904. package/dist/observers/calendar-poller.js +128 -0
  905. package/dist/observers/calendar-poller.js.map +1 -0
  906. package/dist/observers/context-index-reconciler-observer.d.ts +72 -0
  907. package/dist/observers/context-index-reconciler-observer.d.ts.map +1 -0
  908. package/dist/observers/context-index-reconciler-observer.js +253 -0
  909. package/dist/observers/context-index-reconciler-observer.js.map +1 -0
  910. package/dist/observers/delegated-probe-observer.d.ts +83 -0
  911. package/dist/observers/delegated-probe-observer.d.ts.map +1 -0
  912. package/dist/observers/delegated-probe-observer.js +237 -0
  913. package/dist/observers/delegated-probe-observer.js.map +1 -0
  914. package/dist/observers/delegated-sync-worker.d.ts +375 -0
  915. package/dist/observers/delegated-sync-worker.d.ts.map +1 -0
  916. package/dist/observers/delegated-sync-worker.js +1087 -0
  917. package/dist/observers/delegated-sync-worker.js.map +1 -0
  918. package/dist/observers/entity-mirror-observer.d.ts +55 -0
  919. package/dist/observers/entity-mirror-observer.d.ts.map +1 -0
  920. package/dist/observers/entity-mirror-observer.js +73 -0
  921. package/dist/observers/entity-mirror-observer.js.map +1 -0
  922. package/dist/observers/git-delegated-cron.d.ts +41 -0
  923. package/dist/observers/git-delegated-cron.d.ts.map +1 -0
  924. package/dist/observers/git-delegated-cron.js +159 -0
  925. package/dist/observers/git-delegated-cron.js.map +1 -0
  926. package/dist/observers/git-event-classifier.d.ts +52 -0
  927. package/dist/observers/git-event-classifier.d.ts.map +1 -0
  928. package/dist/observers/git-event-classifier.js +70 -0
  929. package/dist/observers/git-event-classifier.js.map +1 -0
  930. package/dist/observers/git-watcher.d.ts +162 -0
  931. package/dist/observers/git-watcher.d.ts.map +1 -0
  932. package/dist/observers/git-watcher.js +768 -0
  933. package/dist/observers/git-watcher.js.map +1 -0
  934. package/dist/observers/github-poller-classifier.d.ts +101 -0
  935. package/dist/observers/github-poller-classifier.d.ts.map +1 -0
  936. package/dist/observers/github-poller-classifier.js +199 -0
  937. package/dist/observers/github-poller-classifier.js.map +1 -0
  938. package/dist/observers/github-poller.d.ts +291 -0
  939. package/dist/observers/github-poller.d.ts.map +1 -0
  940. package/dist/observers/github-poller.js +609 -0
  941. package/dist/observers/github-poller.js.map +1 -0
  942. package/dist/observers/imminent-event-scheduler.d.ts +34 -0
  943. package/dist/observers/imminent-event-scheduler.d.ts.map +1 -0
  944. package/dist/observers/imminent-event-scheduler.js +125 -0
  945. package/dist/observers/imminent-event-scheduler.js.map +1 -0
  946. package/dist/observers/mail-poller.d.ts +133 -0
  947. package/dist/observers/mail-poller.d.ts.map +1 -0
  948. package/dist/observers/mail-poller.js +563 -0
  949. package/dist/observers/mail-poller.js.map +1 -0
  950. package/dist/observers/mail-reconciliation.d.ts +87 -0
  951. package/dist/observers/mail-reconciliation.d.ts.map +1 -0
  952. package/dist/observers/mail-reconciliation.js +241 -0
  953. package/dist/observers/mail-reconciliation.js.map +1 -0
  954. package/dist/observers/manager.d.ts +67 -0
  955. package/dist/observers/manager.d.ts.map +1 -0
  956. package/dist/observers/manager.js +136 -0
  957. package/dist/observers/manager.js.map +1 -0
  958. package/dist/observers/notion-poller.d.ts +43 -0
  959. package/dist/observers/notion-poller.d.ts.map +1 -0
  960. package/dist/observers/notion-poller.js +184 -0
  961. package/dist/observers/notion-poller.js.map +1 -0
  962. package/dist/observers/observation-summarizer/index.d.ts +13 -0
  963. package/dist/observers/observation-summarizer/index.d.ts.map +1 -0
  964. package/dist/observers/observation-summarizer/index.js +13 -0
  965. package/dist/observers/observation-summarizer/index.js.map +1 -0
  966. package/dist/observers/observation-summarizer/pre-filter.d.ts +62 -0
  967. package/dist/observers/observation-summarizer/pre-filter.d.ts.map +1 -0
  968. package/dist/observers/observation-summarizer/pre-filter.js +189 -0
  969. package/dist/observers/observation-summarizer/pre-filter.js.map +1 -0
  970. package/dist/observers/observation-summarizer/response-parser.d.ts +30 -0
  971. package/dist/observers/observation-summarizer/response-parser.d.ts.map +1 -0
  972. package/dist/observers/observation-summarizer/response-parser.js +106 -0
  973. package/dist/observers/observation-summarizer/response-parser.js.map +1 -0
  974. package/dist/observers/observation-summarizer/summarizer-client.d.ts +83 -0
  975. package/dist/observers/observation-summarizer/summarizer-client.d.ts.map +1 -0
  976. package/dist/observers/observation-summarizer/summarizer-client.js +185 -0
  977. package/dist/observers/observation-summarizer/summarizer-client.js.map +1 -0
  978. package/dist/observers/observation-summarizer/summarizer-prompts.d.ts +51 -0
  979. package/dist/observers/observation-summarizer/summarizer-prompts.d.ts.map +1 -0
  980. package/dist/observers/observation-summarizer/summarizer-prompts.js +286 -0
  981. package/dist/observers/observation-summarizer/summarizer-prompts.js.map +1 -0
  982. package/dist/observers/observation-summarizer/worker.d.ts +106 -0
  983. package/dist/observers/observation-summarizer/worker.d.ts.map +1 -0
  984. package/dist/observers/observation-summarizer/worker.js +311 -0
  985. package/dist/observers/observation-summarizer/worker.js.map +1 -0
  986. package/dist/observers/obsidian-watcher.d.ts +90 -0
  987. package/dist/observers/obsidian-watcher.d.ts.map +1 -0
  988. package/dist/observers/obsidian-watcher.js +166 -0
  989. package/dist/observers/obsidian-watcher.js.map +1 -0
  990. package/dist/observers/primary-vault-watcher.d.ts +73 -0
  991. package/dist/observers/primary-vault-watcher.d.ts.map +1 -0
  992. package/dist/observers/primary-vault-watcher.js +115 -0
  993. package/dist/observers/primary-vault-watcher.js.map +1 -0
  994. package/dist/observers/repository-management-cron.d.ts +70 -0
  995. package/dist/observers/repository-management-cron.d.ts.map +1 -0
  996. package/dist/observers/repository-management-cron.js +166 -0
  997. package/dist/observers/repository-management-cron.js.map +1 -0
  998. package/dist/observers/skill-curation-walker.d.ts +33 -0
  999. package/dist/observers/skill-curation-walker.d.ts.map +1 -0
  1000. package/dist/observers/skill-curation-walker.js +216 -0
  1001. package/dist/observers/skill-curation-walker.js.map +1 -0
  1002. package/dist/safety/absolute-block-audit.d.ts +22 -0
  1003. package/dist/safety/absolute-block-audit.d.ts.map +1 -0
  1004. package/dist/safety/absolute-block-audit.js +32 -0
  1005. package/dist/safety/absolute-block-audit.js.map +1 -0
  1006. package/dist/safety/agent-write-tracker.d.ts +42 -0
  1007. package/dist/safety/agent-write-tracker.d.ts.map +1 -0
  1008. package/dist/safety/agent-write-tracker.js +82 -0
  1009. package/dist/safety/agent-write-tracker.js.map +1 -0
  1010. package/dist/safety/always-disallowed.d.ts +66 -0
  1011. package/dist/safety/always-disallowed.d.ts.map +1 -0
  1012. package/dist/safety/always-disallowed.js +347 -0
  1013. package/dist/safety/always-disallowed.js.map +1 -0
  1014. package/dist/safety/audit.d.ts +118 -0
  1015. package/dist/safety/audit.d.ts.map +1 -0
  1016. package/dist/safety/audit.js +324 -0
  1017. package/dist/safety/audit.js.map +1 -0
  1018. package/dist/safety/integration-write-tracker.d.ts +58 -0
  1019. package/dist/safety/integration-write-tracker.d.ts.map +1 -0
  1020. package/dist/safety/integration-write-tracker.js +41 -0
  1021. package/dist/safety/integration-write-tracker.js.map +1 -0
  1022. package/dist/safety/risk-classifier.d.ts +65 -0
  1023. package/dist/safety/risk-classifier.d.ts.map +1 -0
  1024. package/dist/safety/risk-classifier.js +763 -0
  1025. package/dist/safety/risk-classifier.js.map +1 -0
  1026. package/dist/scheduler/hourly-check-gate.d.ts +73 -0
  1027. package/dist/scheduler/hourly-check-gate.d.ts.map +1 -0
  1028. package/dist/scheduler/hourly-check-gate.js +128 -0
  1029. package/dist/scheduler/hourly-check-gate.js.map +1 -0
  1030. package/dist/secrets/backend-api-key-env.d.ts +104 -0
  1031. package/dist/secrets/backend-api-key-env.d.ts.map +1 -0
  1032. package/dist/secrets/backend-api-key-env.js +197 -0
  1033. package/dist/secrets/backend-api-key-env.js.map +1 -0
  1034. package/dist/secrets/codex-home-materializer.d.ts +35 -0
  1035. package/dist/secrets/codex-home-materializer.d.ts.map +1 -0
  1036. package/dist/secrets/codex-home-materializer.js +76 -0
  1037. package/dist/secrets/codex-home-materializer.js.map +1 -0
  1038. package/dist/secrets/encrypted-blob-store.d.ts +20 -0
  1039. package/dist/secrets/encrypted-blob-store.d.ts.map +1 -0
  1040. package/dist/secrets/encrypted-blob-store.js +80 -0
  1041. package/dist/secrets/encrypted-blob-store.js.map +1 -0
  1042. package/dist/secrets/platform-secret-store.d.ts +17 -0
  1043. package/dist/secrets/platform-secret-store.d.ts.map +1 -0
  1044. package/dist/secrets/platform-secret-store.js +37 -0
  1045. package/dist/secrets/platform-secret-store.js.map +1 -0
  1046. package/dist/secrets/redaction.d.ts +2 -0
  1047. package/dist/secrets/redaction.d.ts.map +1 -0
  1048. package/dist/secrets/redaction.js +2 -0
  1049. package/dist/secrets/redaction.js.map +1 -0
  1050. package/dist/secrets/secret-broker.d.ts +61 -0
  1051. package/dist/secrets/secret-broker.d.ts.map +1 -0
  1052. package/dist/secrets/secret-broker.js +160 -0
  1053. package/dist/secrets/secret-broker.js.map +1 -0
  1054. package/dist/secrets/secret-names.d.ts +34 -0
  1055. package/dist/secrets/secret-names.d.ts.map +1 -0
  1056. package/dist/secrets/secret-names.js +39 -0
  1057. package/dist/secrets/secret-names.js.map +1 -0
  1058. package/dist/secrets/secret-store.d.ts +8 -0
  1059. package/dist/secrets/secret-store.d.ts.map +1 -0
  1060. package/dist/secrets/secret-store.js +2 -0
  1061. package/dist/secrets/secret-store.js.map +1 -0
  1062. package/dist/secrets/types.d.ts +7 -0
  1063. package/dist/secrets/types.d.ts.map +1 -0
  1064. package/dist/secrets/types.js +2 -0
  1065. package/dist/secrets/types.js.map +1 -0
  1066. package/dist/services/apple-calendar/caldav-client.d.ts +48 -0
  1067. package/dist/services/apple-calendar/caldav-client.d.ts.map +1 -0
  1068. package/dist/services/apple-calendar/caldav-client.js +86 -0
  1069. package/dist/services/apple-calendar/caldav-client.js.map +1 -0
  1070. package/dist/services/apple-calendar/caldav-codec.d.ts +67 -0
  1071. package/dist/services/apple-calendar/caldav-codec.d.ts.map +1 -0
  1072. package/dist/services/apple-calendar/caldav-codec.js +341 -0
  1073. package/dist/services/apple-calendar/caldav-codec.js.map +1 -0
  1074. package/dist/services/apple-calendar/index.d.ts +3 -0
  1075. package/dist/services/apple-calendar/index.d.ts.map +1 -0
  1076. package/dist/services/apple-calendar/index.js +2 -0
  1077. package/dist/services/apple-calendar/index.js.map +1 -0
  1078. package/dist/services/apple-calendar/service.d.ts +75 -0
  1079. package/dist/services/apple-calendar/service.d.ts.map +1 -0
  1080. package/dist/services/apple-calendar/service.js +374 -0
  1081. package/dist/services/apple-calendar/service.js.map +1 -0
  1082. package/dist/services/apple-calendar/types.d.ts +78 -0
  1083. package/dist/services/apple-calendar/types.d.ts.map +1 -0
  1084. package/dist/services/apple-calendar/types.js +17 -0
  1085. package/dist/services/apple-calendar/types.js.map +1 -0
  1086. package/dist/services/attachments/hardlink.d.ts +11 -0
  1087. package/dist/services/attachments/hardlink.d.ts.map +1 -0
  1088. package/dist/services/attachments/hardlink.js +56 -0
  1089. package/dist/services/attachments/hardlink.js.map +1 -0
  1090. package/dist/services/attachments/sanitize.d.ts +21 -0
  1091. package/dist/services/attachments/sanitize.d.ts.map +1 -0
  1092. package/dist/services/attachments/sanitize.js +128 -0
  1093. package/dist/services/attachments/sanitize.js.map +1 -0
  1094. package/dist/services/attachments/store.d.ts +146 -0
  1095. package/dist/services/attachments/store.d.ts.map +1 -0
  1096. package/dist/services/attachments/store.js +477 -0
  1097. package/dist/services/attachments/store.js.map +1 -0
  1098. package/dist/services/calendar/outlook/graph-calendar-client.d.ts +114 -0
  1099. package/dist/services/calendar/outlook/graph-calendar-client.d.ts.map +1 -0
  1100. package/dist/services/calendar/outlook/graph-calendar-client.js +146 -0
  1101. package/dist/services/calendar/outlook/graph-calendar-client.js.map +1 -0
  1102. package/dist/services/calendar.d.ts +115 -0
  1103. package/dist/services/calendar.d.ts.map +1 -0
  1104. package/dist/services/calendar.js +281 -0
  1105. package/dist/services/calendar.js.map +1 -0
  1106. package/dist/services/delegated-backend-invoker.d.ts +414 -0
  1107. package/dist/services/delegated-backend-invoker.d.ts.map +1 -0
  1108. package/dist/services/delegated-backend-invoker.js +2372 -0
  1109. package/dist/services/delegated-backend-invoker.js.map +1 -0
  1110. package/dist/services/delegated-proxy-config.d.ts +93 -0
  1111. package/dist/services/delegated-proxy-config.d.ts.map +1 -0
  1112. package/dist/services/delegated-proxy-config.js +98 -0
  1113. package/dist/services/delegated-proxy-config.js.map +1 -0
  1114. package/dist/services/delegated-task-result-cache.d.ts +176 -0
  1115. package/dist/services/delegated-task-result-cache.d.ts.map +1 -0
  1116. package/dist/services/delegated-task-result-cache.js +0 -0
  1117. package/dist/services/delegated-task-result-cache.js.map +1 -0
  1118. package/dist/services/delegated-task-runtime.d.ts +346 -0
  1119. package/dist/services/delegated-task-runtime.d.ts.map +1 -0
  1120. package/dist/services/delegated-task-runtime.js +589 -0
  1121. package/dist/services/delegated-task-runtime.js.map +1 -0
  1122. package/dist/services/delegated-task-session-pool.d.ts +182 -0
  1123. package/dist/services/delegated-task-session-pool.d.ts.map +1 -0
  1124. package/dist/services/delegated-task-session-pool.js +292 -0
  1125. package/dist/services/delegated-task-session-pool.js.map +1 -0
  1126. package/dist/services/delegated-tool-runtime.d.ts +50 -0
  1127. package/dist/services/delegated-tool-runtime.d.ts.map +1 -0
  1128. package/dist/services/delegated-tool-runtime.js +120 -0
  1129. package/dist/services/delegated-tool-runtime.js.map +1 -0
  1130. package/dist/services/fts5.d.ts +40 -0
  1131. package/dist/services/fts5.d.ts.map +1 -0
  1132. package/dist/services/fts5.js +54 -0
  1133. package/dist/services/fts5.js.map +1 -0
  1134. package/dist/services/git-account-registry.d.ts +164 -0
  1135. package/dist/services/git-account-registry.d.ts.map +1 -0
  1136. package/dist/services/git-account-registry.js +297 -0
  1137. package/dist/services/git-account-registry.js.map +1 -0
  1138. package/dist/services/github.d.ts +49 -0
  1139. package/dist/services/github.d.ts.map +1 -0
  1140. package/dist/services/github.js +123 -0
  1141. package/dist/services/github.js.map +1 -0
  1142. package/dist/services/gmail-classifier.d.ts +62 -0
  1143. package/dist/services/gmail-classifier.d.ts.map +1 -0
  1144. package/dist/services/gmail-classifier.js +221 -0
  1145. package/dist/services/gmail-classifier.js.map +1 -0
  1146. package/dist/services/gmail.d.ts +192 -0
  1147. package/dist/services/gmail.d.ts.map +1 -0
  1148. package/dist/services/gmail.js +678 -0
  1149. package/dist/services/gmail.js.map +1 -0
  1150. package/dist/services/google-auth.d.ts +16 -0
  1151. package/dist/services/google-auth.d.ts.map +1 -0
  1152. package/dist/services/google-auth.js +37 -0
  1153. package/dist/services/google-auth.js.map +1 -0
  1154. package/dist/services/google-maps.d.ts +35 -0
  1155. package/dist/services/google-maps.d.ts.map +1 -0
  1156. package/dist/services/google-maps.js +82 -0
  1157. package/dist/services/google-maps.js.map +1 -0
  1158. package/dist/services/integrations/extract-write-item-id.d.ts +64 -0
  1159. package/dist/services/integrations/extract-write-item-id.d.ts.map +1 -0
  1160. package/dist/services/integrations/extract-write-item-id.js +188 -0
  1161. package/dist/services/integrations/extract-write-item-id.js.map +1 -0
  1162. package/dist/services/integrations/reconcile.d.ts +136 -0
  1163. package/dist/services/integrations/reconcile.d.ts.map +1 -0
  1164. package/dist/services/integrations/reconcile.js +218 -0
  1165. package/dist/services/integrations/reconcile.js.map +1 -0
  1166. package/dist/services/integrations/snapshot-partitions.d.ts +40 -0
  1167. package/dist/services/integrations/snapshot-partitions.d.ts.map +1 -0
  1168. package/dist/services/integrations/snapshot-partitions.js +113 -0
  1169. package/dist/services/integrations/snapshot-partitions.js.map +1 -0
  1170. package/dist/services/journal/render.d.ts +15 -0
  1171. package/dist/services/journal/render.d.ts.map +1 -0
  1172. package/dist/services/journal/render.js +17 -0
  1173. package/dist/services/journal/render.js.map +1 -0
  1174. package/dist/services/journal/writer.d.ts +26 -0
  1175. package/dist/services/journal/writer.d.ts.map +1 -0
  1176. package/dist/services/journal/writer.js +50 -0
  1177. package/dist/services/journal/writer.js.map +1 -0
  1178. package/dist/services/mail/account-registry.d.ts +208 -0
  1179. package/dist/services/mail/account-registry.d.ts.map +1 -0
  1180. package/dist/services/mail/account-registry.js +554 -0
  1181. package/dist/services/mail/account-registry.js.map +1 -0
  1182. package/dist/services/mail/gmail/auth-failure-classifier.d.ts +24 -0
  1183. package/dist/services/mail/gmail/auth-failure-classifier.d.ts.map +1 -0
  1184. package/dist/services/mail/gmail/auth-failure-classifier.js +67 -0
  1185. package/dist/services/mail/gmail/auth-failure-classifier.js.map +1 -0
  1186. package/dist/services/mail/gmail/gmail-provider.d.ts +58 -0
  1187. package/dist/services/mail/gmail/gmail-provider.d.ts.map +1 -0
  1188. package/dist/services/mail/gmail/gmail-provider.js +434 -0
  1189. package/dist/services/mail/gmail/gmail-provider.js.map +1 -0
  1190. package/dist/services/mail/gmail/legacy-row.d.ts +24 -0
  1191. package/dist/services/mail/gmail/legacy-row.d.ts.map +1 -0
  1192. package/dist/services/mail/gmail/legacy-row.js +71 -0
  1193. package/dist/services/mail/gmail/legacy-row.js.map +1 -0
  1194. package/dist/services/mail/gmail/poll-cursor.d.ts +12 -0
  1195. package/dist/services/mail/gmail/poll-cursor.d.ts.map +1 -0
  1196. package/dist/services/mail/gmail/poll-cursor.js +32 -0
  1197. package/dist/services/mail/gmail/poll-cursor.js.map +1 -0
  1198. package/dist/services/mail/html-to-plaintext.d.ts +27 -0
  1199. package/dist/services/mail/html-to-plaintext.d.ts.map +1 -0
  1200. package/dist/services/mail/html-to-plaintext.js +163 -0
  1201. package/dist/services/mail/html-to-plaintext.js.map +1 -0
  1202. package/dist/services/mail/imap/app-password.d.ts +27 -0
  1203. package/dist/services/mail/imap/app-password.d.ts.map +1 -0
  1204. package/dist/services/mail/imap/app-password.js +86 -0
  1205. package/dist/services/mail/imap/app-password.js.map +1 -0
  1206. package/dist/services/mail/imap/auth-failure-classifier.d.ts +21 -0
  1207. package/dist/services/mail/imap/auth-failure-classifier.d.ts.map +1 -0
  1208. package/dist/services/mail/imap/auth-failure-classifier.js +54 -0
  1209. package/dist/services/mail/imap/auth-failure-classifier.js.map +1 -0
  1210. package/dist/services/mail/imap/capabilities.d.ts +30 -0
  1211. package/dist/services/mail/imap/capabilities.d.ts.map +1 -0
  1212. package/dist/services/mail/imap/capabilities.js +70 -0
  1213. package/dist/services/mail/imap/capabilities.js.map +1 -0
  1214. package/dist/services/mail/imap/client.d.ts +15 -0
  1215. package/dist/services/mail/imap/client.d.ts.map +1 -0
  1216. package/dist/services/mail/imap/client.js +60 -0
  1217. package/dist/services/mail/imap/client.js.map +1 -0
  1218. package/dist/services/mail/imap/cursor.d.ts +19 -0
  1219. package/dist/services/mail/imap/cursor.d.ts.map +1 -0
  1220. package/dist/services/mail/imap/cursor.js +47 -0
  1221. package/dist/services/mail/imap/cursor.js.map +1 -0
  1222. package/dist/services/mail/imap/folder-resolver.d.ts +24 -0
  1223. package/dist/services/mail/imap/folder-resolver.d.ts.map +1 -0
  1224. package/dist/services/mail/imap/folder-resolver.js +58 -0
  1225. package/dist/services/mail/imap/folder-resolver.js.map +1 -0
  1226. package/dist/services/mail/imap/icloud-provider.d.ts +5 -0
  1227. package/dist/services/mail/imap/icloud-provider.d.ts.map +1 -0
  1228. package/dist/services/mail/imap/icloud-provider.js +5 -0
  1229. package/dist/services/mail/imap/icloud-provider.js.map +1 -0
  1230. package/dist/services/mail/imap/imap-provider-base.d.ts +173 -0
  1231. package/dist/services/mail/imap/imap-provider-base.d.ts.map +1 -0
  1232. package/dist/services/mail/imap/imap-provider-base.js +1004 -0
  1233. package/dist/services/mail/imap/imap-provider-base.js.map +1 -0
  1234. package/dist/services/mail/imap/query-translator.d.ts +13 -0
  1235. package/dist/services/mail/imap/query-translator.d.ts.map +1 -0
  1236. package/dist/services/mail/imap/query-translator.js +114 -0
  1237. package/dist/services/mail/imap/query-translator.js.map +1 -0
  1238. package/dist/services/mail/imap/reconcile-planner.d.ts +56 -0
  1239. package/dist/services/mail/imap/reconcile-planner.d.ts.map +1 -0
  1240. package/dist/services/mail/imap/reconcile-planner.js +52 -0
  1241. package/dist/services/mail/imap/reconcile-planner.js.map +1 -0
  1242. package/dist/services/mail/imap/reply-mime.d.ts +24 -0
  1243. package/dist/services/mail/imap/reply-mime.d.ts.map +1 -0
  1244. package/dist/services/mail/imap/reply-mime.js +77 -0
  1245. package/dist/services/mail/imap/reply-mime.js.map +1 -0
  1246. package/dist/services/mail/imap/yahoo-provider.d.ts +5 -0
  1247. package/dist/services/mail/imap/yahoo-provider.d.ts.map +1 -0
  1248. package/dist/services/mail/imap/yahoo-provider.js +5 -0
  1249. package/dist/services/mail/imap/yahoo-provider.js.map +1 -0
  1250. package/dist/services/mail/mail-search.d.ts +35 -0
  1251. package/dist/services/mail/mail-search.d.ts.map +1 -0
  1252. package/dist/services/mail/mail-search.js +59 -0
  1253. package/dist/services/mail/mail-search.js.map +1 -0
  1254. package/dist/services/mail/outlook/auth-failure-classifier.d.ts +38 -0
  1255. package/dist/services/mail/outlook/auth-failure-classifier.d.ts.map +1 -0
  1256. package/dist/services/mail/outlook/auth-failure-classifier.js +91 -0
  1257. package/dist/services/mail/outlook/auth-failure-classifier.js.map +1 -0
  1258. package/dist/services/mail/outlook/client-config.d.ts +34 -0
  1259. package/dist/services/mail/outlook/client-config.d.ts.map +1 -0
  1260. package/dist/services/mail/outlook/client-config.js +58 -0
  1261. package/dist/services/mail/outlook/client-config.js.map +1 -0
  1262. package/dist/services/mail/outlook/delta-cursor.d.ts +66 -0
  1263. package/dist/services/mail/outlook/delta-cursor.d.ts.map +1 -0
  1264. package/dist/services/mail/outlook/delta-cursor.js +85 -0
  1265. package/dist/services/mail/outlook/delta-cursor.js.map +1 -0
  1266. package/dist/services/mail/outlook/graph-client.d.ts +98 -0
  1267. package/dist/services/mail/outlook/graph-client.d.ts.map +1 -0
  1268. package/dist/services/mail/outlook/graph-client.js +198 -0
  1269. package/dist/services/mail/outlook/graph-client.js.map +1 -0
  1270. package/dist/services/mail/outlook/msal-app-factory.d.ts +20 -0
  1271. package/dist/services/mail/outlook/msal-app-factory.d.ts.map +1 -0
  1272. package/dist/services/mail/outlook/msal-app-factory.js +62 -0
  1273. package/dist/services/mail/outlook/msal-app-factory.js.map +1 -0
  1274. package/dist/services/mail/outlook/msal-cache-plugin.d.ts +19 -0
  1275. package/dist/services/mail/outlook/msal-cache-plugin.d.ts.map +1 -0
  1276. package/dist/services/mail/outlook/msal-cache-plugin.js +30 -0
  1277. package/dist/services/mail/outlook/msal-cache-plugin.js.map +1 -0
  1278. package/dist/services/mail/outlook/oauth-device-code.d.ts +26 -0
  1279. package/dist/services/mail/outlook/oauth-device-code.d.ts.map +1 -0
  1280. package/dist/services/mail/outlook/oauth-device-code.js +32 -0
  1281. package/dist/services/mail/outlook/oauth-device-code.js.map +1 -0
  1282. package/dist/services/mail/outlook/oauth-loopback.d.ts +41 -0
  1283. package/dist/services/mail/outlook/oauth-loopback.d.ts.map +1 -0
  1284. package/dist/services/mail/outlook/oauth-loopback.js +223 -0
  1285. package/dist/services/mail/outlook/oauth-loopback.js.map +1 -0
  1286. package/dist/services/mail/outlook/outlook-provider.d.ts +100 -0
  1287. package/dist/services/mail/outlook/outlook-provider.d.ts.map +1 -0
  1288. package/dist/services/mail/outlook/outlook-provider.js +619 -0
  1289. package/dist/services/mail/outlook/outlook-provider.js.map +1 -0
  1290. package/dist/services/mail/outlook/query-translator.d.ts +10 -0
  1291. package/dist/services/mail/outlook/query-translator.d.ts.map +1 -0
  1292. package/dist/services/mail/outlook/query-translator.js +103 -0
  1293. package/dist/services/mail/outlook/query-translator.js.map +1 -0
  1294. package/dist/services/mail/provider.d.ts +267 -0
  1295. package/dist/services/mail/provider.d.ts.map +1 -0
  1296. package/dist/services/mail/provider.js +34 -0
  1297. package/dist/services/mail/provider.js.map +1 -0
  1298. package/dist/services/mail/query-utils.d.ts +13 -0
  1299. package/dist/services/mail/query-utils.d.ts.map +1 -0
  1300. package/dist/services/mail/query-utils.js +18 -0
  1301. package/dist/services/mail/query-utils.js.map +1 -0
  1302. package/dist/services/mail-classifier.d.ts +25 -0
  1303. package/dist/services/mail-classifier.d.ts.map +1 -0
  1304. package/dist/services/mail-classifier.js +52 -0
  1305. package/dist/services/mail-classifier.js.map +1 -0
  1306. package/dist/services/mail-ingestion.d.ts +139 -0
  1307. package/dist/services/mail-ingestion.d.ts.map +1 -0
  1308. package/dist/services/mail-ingestion.js +223 -0
  1309. package/dist/services/mail-ingestion.js.map +1 -0
  1310. package/dist/services/mcp/auto-probe.d.ts +76 -0
  1311. package/dist/services/mcp/auto-probe.d.ts.map +1 -0
  1312. package/dist/services/mcp/auto-probe.js +147 -0
  1313. package/dist/services/mcp/auto-probe.js.map +1 -0
  1314. package/dist/services/mcp/generators/claude.d.ts +18 -0
  1315. package/dist/services/mcp/generators/claude.d.ts.map +1 -0
  1316. package/dist/services/mcp/generators/claude.js +90 -0
  1317. package/dist/services/mcp/generators/claude.js.map +1 -0
  1318. package/dist/services/mcp/generators/codex.d.ts +22 -0
  1319. package/dist/services/mcp/generators/codex.d.ts.map +1 -0
  1320. package/dist/services/mcp/generators/codex.js +102 -0
  1321. package/dist/services/mcp/generators/codex.js.map +1 -0
  1322. package/dist/services/mcp/generators/gemini.d.ts +20 -0
  1323. package/dist/services/mcp/generators/gemini.d.ts.map +1 -0
  1324. package/dist/services/mcp/generators/gemini.js +97 -0
  1325. package/dist/services/mcp/generators/gemini.js.map +1 -0
  1326. package/dist/services/mcp/generators/index.d.ts +20 -0
  1327. package/dist/services/mcp/generators/index.d.ts.map +1 -0
  1328. package/dist/services/mcp/generators/index.js +29 -0
  1329. package/dist/services/mcp/generators/index.js.map +1 -0
  1330. package/dist/services/mcp/generators/types.d.ts +47 -0
  1331. package/dist/services/mcp/generators/types.d.ts.map +1 -0
  1332. package/dist/services/mcp/generators/types.js +40 -0
  1333. package/dist/services/mcp/generators/types.js.map +1 -0
  1334. package/dist/services/mcp/probe.d.ts +31 -0
  1335. package/dist/services/mcp/probe.d.ts.map +1 -0
  1336. package/dist/services/mcp/probe.js +437 -0
  1337. package/dist/services/mcp/probe.js.map +1 -0
  1338. package/dist/services/mcp/registry.d.ts +84 -0
  1339. package/dist/services/mcp/registry.d.ts.map +1 -0
  1340. package/dist/services/mcp/registry.js +387 -0
  1341. package/dist/services/mcp/registry.js.map +1 -0
  1342. package/dist/services/mcp/risk.d.ts +82 -0
  1343. package/dist/services/mcp/risk.d.ts.map +1 -0
  1344. package/dist/services/mcp/risk.js +126 -0
  1345. package/dist/services/mcp/risk.js.map +1 -0
  1346. package/dist/services/mcp/session-materializer.d.ts +123 -0
  1347. package/dist/services/mcp/session-materializer.d.ts.map +1 -0
  1348. package/dist/services/mcp/session-materializer.js +361 -0
  1349. package/dist/services/mcp/session-materializer.js.map +1 -0
  1350. package/dist/services/mcp/tool-audit.d.ts +53 -0
  1351. package/dist/services/mcp/tool-audit.d.ts.map +1 -0
  1352. package/dist/services/mcp/tool-audit.js +74 -0
  1353. package/dist/services/mcp/tool-audit.js.map +1 -0
  1354. package/dist/services/mcp/types.d.ts +88 -0
  1355. package/dist/services/mcp/types.d.ts.map +1 -0
  1356. package/dist/services/mcp/types.js +94 -0
  1357. package/dist/services/mcp/types.js.map +1 -0
  1358. package/dist/services/notion.d.ts +134 -0
  1359. package/dist/services/notion.d.ts.map +1 -0
  1360. package/dist/services/notion.js +350 -0
  1361. package/dist/services/notion.js.map +1 -0
  1362. package/dist/services/obsidian.d.ts +116 -0
  1363. package/dist/services/obsidian.d.ts.map +1 -0
  1364. package/dist/services/obsidian.js +305 -0
  1365. package/dist/services/obsidian.js.map +1 -0
  1366. package/dist/services/service-registry.d.ts +31 -0
  1367. package/dist/services/service-registry.d.ts.map +1 -0
  1368. package/dist/services/service-registry.js +15 -0
  1369. package/dist/services/service-registry.js.map +1 -0
  1370. package/dist/services/voice/transcriber-impl.d.ts +15 -0
  1371. package/dist/services/voice/transcriber-impl.d.ts.map +1 -0
  1372. package/dist/services/voice/transcriber-impl.js +129 -0
  1373. package/dist/services/voice/transcriber-impl.js.map +1 -0
  1374. package/dist/services/voice/transcriber.d.ts +117 -0
  1375. package/dist/services/voice/transcriber.d.ts.map +1 -0
  1376. package/dist/services/voice/transcriber.js +201 -0
  1377. package/dist/services/voice/transcriber.js.map +1 -0
  1378. package/dist/settings/runtime-settings.d.ts +232 -0
  1379. package/dist/settings/runtime-settings.d.ts.map +1 -0
  1380. package/dist/settings/runtime-settings.js +769 -0
  1381. package/dist/settings/runtime-settings.js.map +1 -0
  1382. package/dist/settings/settings-store.d.ts +13 -0
  1383. package/dist/settings/settings-store.d.ts.map +1 -0
  1384. package/dist/settings/settings-store.js +87 -0
  1385. package/dist/settings/settings-store.js.map +1 -0
  1386. package/package.json +85 -0
@@ -0,0 +1,1086 @@
1
+ import { spawn } from "node:child_process";
2
+ import { existsSync, readFileSync, readdirSync, realpathSync, writeFileSync, mkdirSync, chmodSync, copyFileSync, unlinkSync } from "node:fs";
3
+ import { join, dirname } from "node:path";
4
+ import { homedir } from "node:os";
5
+ import { redactSensitiveString } from "@aitne/shared";
6
+ import { OAuth2Client, CodeChallengeMethod } from "google-auth-library";
7
+ import { FIRST_EXPIRED_CASE_SQL, writeAuthFailureDetail, writeAuthOkDetail, } from "./auth-health-monitor.js";
8
+ import { findExecutable, killChildWithEscalation, runLineCommand } from "./cli-utils.js";
9
+ import { createLogger } from "../../logging.js";
10
+ const logger = createLogger("auth-recovery");
11
+ // ──────────────────────────────────────────────────────────────────
12
+ // Codex device auth parsing — empirical regex from §4.0 verification
13
+ // ──────────────────────────────────────────────────────────────────
14
+ const ANSI_ESCAPE_RE = /\x1b\[[0-9;]*m/g;
15
+ /**
16
+ * Device URL — static for the current Codex CLI, but validated anyway
17
+ * so we detect changes early. `\S+` will also capture any future
18
+ * query params without breaking the match.
19
+ */
20
+ const CODEX_DEVICE_URL_RE = /https:\/\/auth\.openai\.com\/\S+/;
21
+ /**
22
+ * User code format: 3-6 uppercase alphanumeric, hyphen, 3-6 uppercase
23
+ * alphanumeric. Observed patterns: `D636-F13CP`, `D65V-KQVNP`.
24
+ * The line is always indented with 3+ spaces in codex output.
25
+ */
26
+ const CODEX_USER_CODE_RE = /^\s{2,}([A-Z0-9]{3,6}-[A-Z0-9]{3,6})\s*$/m;
27
+ /**
28
+ * Expiry from the output text: "(expires in N minutes)".
29
+ */
30
+ const CODEX_EXPIRES_RE = /expires in (\d+) minutes/;
31
+ /**
32
+ * Parse the stdout of `codex login --device-auth` into structured info.
33
+ * Returns `null` if the output doesn't match the expected format.
34
+ */
35
+ export function parseCodexDeviceAuthOutput(rawStdout) {
36
+ const clean = rawStdout.replace(ANSI_ESCAPE_RE, "");
37
+ const urlMatch = clean.match(CODEX_DEVICE_URL_RE);
38
+ const codeMatch = clean.match(CODEX_USER_CODE_RE);
39
+ const expiresMatch = clean.match(CODEX_EXPIRES_RE);
40
+ if (!urlMatch || !codeMatch)
41
+ return null;
42
+ return {
43
+ deviceUrl: urlMatch[0],
44
+ userCode: codeMatch[1],
45
+ expiresMinutes: expiresMatch ? parseInt(expiresMatch[1], 10) : 15,
46
+ };
47
+ }
48
+ // ──────────────────────────────────────────────────────────────────
49
+ // Claude auth login URL parsing — Phase 9 §8.1 empirical
50
+ // ──────────────────────────────────────────────────────────────────
51
+ /**
52
+ * Regex to extract the OAuth URL from `claude auth login` stdout.
53
+ * Output format (observed in Claude Code 2.1.104):
54
+ * Line 1: "Opening browser to sign in…"
55
+ * Line 2: "If the browser didn't open, visit: <URL>"
56
+ */
57
+ const CLAUDE_AUTH_URL_RE = /visit:\s+(https:\/\/\S+)/;
58
+ /**
59
+ * Parse the OAuth URL from `claude auth login` stdout.
60
+ * Returns the URL string, or `null` if the output doesn't match.
61
+ */
62
+ export function parseClaudeAuthLoginOutput(rawStdout) {
63
+ const clean = rawStdout.replace(ANSI_ESCAPE_RE, "");
64
+ const match = clean.match(CLAUDE_AUTH_URL_RE);
65
+ return match ? match[1] : null;
66
+ }
67
+ /** Default Claude recovery timeout in minutes. Browser OAuth is faster than device code. */
68
+ const CLAUDE_RECOVERY_TIMEOUT_MIN = 10;
69
+ // ──────────────────────────────────────────────────────────────────
70
+ // Gemini OAuth auth code parsing — per design §5.2 + §4.4
71
+ // ──────────────────────────────────────────────────────────────────
72
+ /**
73
+ * Google OAuth authorization code regex.
74
+ * Codes start with `4/` followed by URL-safe base64 chars (30+).
75
+ * The design doc gates on `4/[01]` but Google may change the second
76
+ * char, so we accept any char after `4/` to avoid false negatives.
77
+ */
78
+ const GEMINI_AUTH_CODE_RE = /^(4\/[A-Za-z0-9_-]{30,})$/;
79
+ /**
80
+ * Test whether a raw DM text looks like a Google OAuth authorization code.
81
+ * Only returns a match when a Gemini recovery session is active — caller
82
+ * must gate on `isRecoveryActive("gemini")` before calling this.
83
+ */
84
+ export function parseGeminiAuthCode(text) {
85
+ const m = text.trim().match(GEMINI_AUTH_CODE_RE);
86
+ return m ? m[1] : null;
87
+ }
88
+ /** Gemini OAuth scopes — must match what the CLI uses. */
89
+ const GEMINI_OAUTH_SCOPES = [
90
+ "https://www.googleapis.com/auth/cloud-platform",
91
+ "https://www.googleapis.com/auth/userinfo.email",
92
+ "https://www.googleapis.com/auth/userinfo.profile",
93
+ ];
94
+ /** Redirect URI for Google's code relay page (user sees the code to copy). */
95
+ const GEMINI_REDIRECT_URI = "https://codeassist.google.com/authcode";
96
+ /** Default Gemini recovery timeout in minutes (Google's auth flow times out at 5 min). */
97
+ const GEMINI_RECOVERY_TIMEOUT_MIN = 5;
98
+ /** Gemini OAuth credentials file path. */
99
+ const GEMINI_OAUTH_CREDS_PATH = join(homedir(), ".gemini", "oauth_creds.json");
100
+ /** Encrypted storage env var — if set, we cannot write plaintext creds. */
101
+ const GEMINI_ENCRYPTED_STORAGE_ENV = "GEMINI_FORCE_ENCRYPTED_FILE_STORAGE";
102
+ /**
103
+ * Extract Gemini OAuth client credentials.
104
+ *
105
+ * Priority:
106
+ * 1. Env vars PA_GEMINI_OAUTH_CLIENT_ID + PA_GEMINI_OAUTH_CLIENT_SECRET
107
+ * 2. Runtime scan of @google/gemini-cli bundle chunks
108
+ *
109
+ * Returns null if credentials cannot be found.
110
+ */
111
+ export function extractGeminiOAuthCredentials() {
112
+ // 1. Env var override (most reliable, recommended for production)
113
+ const envId = process.env.PA_GEMINI_OAUTH_CLIENT_ID?.trim();
114
+ const envSecret = process.env.PA_GEMINI_OAUTH_CLIENT_SECRET?.trim();
115
+ if (envId && envSecret) {
116
+ return { clientId: envId, clientSecret: envSecret };
117
+ }
118
+ // M3 fix: warn if only one of the two env vars is set — likely a
119
+ // configuration mistake that would silently fall through to bundle scan.
120
+ if (envId || envSecret) {
121
+ logger.warn("Only one of PA_GEMINI_OAUTH_CLIENT_ID / PA_GEMINI_OAUTH_CLIENT_SECRET is set — " +
122
+ "both are required. Falling back to CLI bundle scan.");
123
+ }
124
+ // 2. Bundle scan — fragile across CLI versions but works as fallback
125
+ return scanGeminiCliBundleCredentials();
126
+ }
127
+ /**
128
+ * Scan the @google/gemini-cli bundle for embedded OAuth credentials.
129
+ * The credentials are public (shipped in a npm package), not secrets.
130
+ */
131
+ function scanGeminiCliBundleCredentials() {
132
+ try {
133
+ // Find the gemini CLI installation
134
+ const geminiPath = findExecutable("gemini");
135
+ if (!geminiPath)
136
+ return null;
137
+ // Resolve symlink to get the actual installation path
138
+ const realPath = realpathSync(geminiPath);
139
+ // Walk up to find the package root: .../bundle/cli.js or .../bin/cli.js
140
+ let pkgDir = dirname(realPath);
141
+ for (let i = 0; i < 5; i++) {
142
+ if (existsSync(join(pkgDir, "package.json")))
143
+ break;
144
+ pkgDir = dirname(pkgDir);
145
+ }
146
+ const bundleDir = join(pkgDir, "bundle");
147
+ if (!existsSync(bundleDir))
148
+ return null;
149
+ // Scan chunk files for the known constant patterns
150
+ const chunks = readdirSync(bundleDir).filter((f) => f.startsWith("chunk-") && f.endsWith(".js"));
151
+ const clientIdRe = /var OAUTH_CLIENT_ID\s*=\s*"([^"]+)"/;
152
+ const clientSecretRe = /var OAUTH_CLIENT_SECRET\s*=\s*"([^"]+)"/;
153
+ for (const chunk of chunks) {
154
+ const content = readFileSync(join(bundleDir, chunk), "utf-8");
155
+ const idMatch = content.match(clientIdRe);
156
+ const secretMatch = content.match(clientSecretRe);
157
+ if (idMatch && secretMatch) {
158
+ return { clientId: idMatch[1], clientSecret: secretMatch[1] };
159
+ }
160
+ }
161
+ }
162
+ catch (err) {
163
+ logger.debug({ err }, "Failed to scan Gemini CLI bundle for OAuth credentials");
164
+ }
165
+ return null;
166
+ }
167
+ // ──────────────────────────────────────────────────────────────────
168
+ // AuthRecovery — manages interactive auth recovery subprocesses
169
+ // ──────────────────────────────────────────────────────────────────
170
+ /** Default recovery timeout in minutes (matches Codex `expires_in`). */
171
+ const DEFAULT_RECOVERY_TIMEOUT_MIN = 15;
172
+ export class AuthRecovery {
173
+ db;
174
+ telemetry;
175
+ authHealthMonitor;
176
+ notifier;
177
+ activeRecoveries = new Map();
178
+ now;
179
+ claudeRecoveryTimeoutMin;
180
+ codexRecoveryTimeoutMin;
181
+ geminiRecoveryTimeoutMin;
182
+ shuttingDown = false;
183
+ constructor(db, telemetry, authHealthMonitor, notifier, options = {}) {
184
+ this.db = db;
185
+ this.telemetry = telemetry;
186
+ this.authHealthMonitor = authHealthMonitor;
187
+ this.notifier = notifier;
188
+ this.now = options.now ?? (() => new Date());
189
+ this.claudeRecoveryTimeoutMin = options.claudeRecoveryTimeoutMin ?? CLAUDE_RECOVERY_TIMEOUT_MIN;
190
+ this.codexRecoveryTimeoutMin = options.codexRecoveryTimeoutMin ?? DEFAULT_RECOVERY_TIMEOUT_MIN;
191
+ this.geminiRecoveryTimeoutMin = options.geminiRecoveryTimeoutMin ?? GEMINI_RECOVERY_TIMEOUT_MIN;
192
+ }
193
+ /**
194
+ * Get the active recovery session for a backend, or `undefined`.
195
+ */
196
+ getActiveRecovery(backendId) {
197
+ const internal = this.activeRecoveries.get(backendId);
198
+ if (!internal)
199
+ return undefined;
200
+ return {
201
+ backendId: internal.backendId,
202
+ startedAt: internal.startedAt,
203
+ authUrl: internal.authUrl,
204
+ userCode: internal.userCode,
205
+ expiresMinutes: internal.expiresMinutes,
206
+ completion: internal.completion,
207
+ };
208
+ }
209
+ /**
210
+ * Check if a recovery is currently active for the given backend.
211
+ */
212
+ isRecoveryActive(backendId) {
213
+ return this.activeRecoveries.has(backendId);
214
+ }
215
+ // ────────────────────────────────────────────────────────────
216
+ // Codex device auth recovery (Phase 5 §4.1)
217
+ // ────────────────────────────────────────────────────────────
218
+ /**
219
+ * Initiate Codex device auth recovery.
220
+ *
221
+ * Spawns `codex login --device-auth` as a subprocess, parses the
222
+ * device URL and user code from stdout, writes `recovering` to DB,
223
+ * and returns the device auth info for user presentation.
224
+ *
225
+ * The subprocess blocks until the user completes auth in the browser
226
+ * or the code expires. On completion:
227
+ * - exit 0 → `persistCheckResult({ok:true})`, counter `recovery_success`
228
+ * - exit ≠0 → DB → `expired`, counter `recovery_timeout` or `recovery_failed`
229
+ * - SIGTERM → daemon shutdown cleanup
230
+ *
231
+ * **Notification policy (M1 fix)**: This method does NOT send a DM.
232
+ * The caller (dispatcher / API route) is responsible for presenting
233
+ * the returned URL/code to the user, avoiding double-notification.
234
+ *
235
+ * Throws if:
236
+ * - A recovery is already in progress for this backend
237
+ * - The Codex CLI is not installed
238
+ * - The subprocess fails to produce a device code within 10s
239
+ */
240
+ async initiateCodexDeviceAuth() {
241
+ const backendId = "codex";
242
+ // Guard: concurrent recovery
243
+ if (this.activeRecoveries.has(backendId)) {
244
+ throw new Error(`Recovery already in progress for ${backendId}. Wait for it to complete or cancel.`);
245
+ }
246
+ // Guard: CLI installed
247
+ const cliPath = findExecutable("codex");
248
+ if (!cliPath) {
249
+ throw new Error("Codex CLI is not installed or not on PATH.");
250
+ }
251
+ // Guard: daemon shutting down
252
+ if (this.shuttingDown) {
253
+ throw new Error("Daemon is shutting down, cannot start recovery.");
254
+ }
255
+ // Spawn `codex login --device-auth`
256
+ const child = spawn(cliPath, ["login", "--device-auth"], {
257
+ stdio: ["pipe", "pipe", "pipe"],
258
+ env: { ...process.env, TERM: "dumb", NO_COLOR: "1" },
259
+ });
260
+ // Parse device code from stdout (collected until first \n\n after code)
261
+ const deviceInfo = await this.waitForDeviceCode(child);
262
+ // Write `recovering` status to DB
263
+ const nowIso = this.now().toISOString();
264
+ this.db.transaction(() => {
265
+ this.db
266
+ .prepare(`UPDATE backends
267
+ SET auth_status = 'recovering',
268
+ auth_checked_at = @now,
269
+ auth_last_verified_at = @now,
270
+ updated_at = @now
271
+ WHERE id = @id`)
272
+ .run({ now: nowIso, id: backendId });
273
+ writeAuthOkDetail(this.db, backendId, `Device auth in progress — code ${deviceInfo.userCode}`);
274
+ })();
275
+ // Telemetry
276
+ this.incrementRecovery(backendId, "recovery_started");
277
+ // Set up timeout
278
+ const timeoutMs = this.codexRecoveryTimeoutMin * 60 * 1000;
279
+ const timeoutHandle = setTimeout(() => {
280
+ logger.info({ backendId }, "Recovery timeout — killing subprocess");
281
+ killChildWithEscalation(child);
282
+ }, timeoutMs);
283
+ timeoutHandle.unref?.();
284
+ // Build completion promise
285
+ const completion = this.monitorCodexRecovery(child, backendId, timeoutHandle);
286
+ const internal = {
287
+ backendId,
288
+ startedAt: this.now(),
289
+ authUrl: deviceInfo.deviceUrl,
290
+ userCode: deviceInfo.userCode,
291
+ expiresMinutes: deviceInfo.expiresMinutes,
292
+ completion,
293
+ child,
294
+ timeoutHandle,
295
+ };
296
+ this.activeRecoveries.set(backendId, internal);
297
+ return {
298
+ backendId: internal.backendId,
299
+ startedAt: internal.startedAt,
300
+ authUrl: internal.authUrl,
301
+ userCode: internal.userCode,
302
+ expiresMinutes: internal.expiresMinutes,
303
+ completion: internal.completion,
304
+ };
305
+ }
306
+ // ────────────────────────────────────────────────────────────
307
+ // Claude browser auth recovery (Phase 9 §8.2)
308
+ // ────────────────────────────────────────────────────────────
309
+ /**
310
+ * Initiate Claude auth recovery via browser OAuth.
311
+ *
312
+ * Phase 9 empirical verification showed that `claude auth login` does
313
+ * NOT require a PTY — pipe stdio works. The subprocess prints an OAuth
314
+ * URL to stdout and blocks until the user completes browser auth:
315
+ *
316
+ * 1. Spawn `claude auth login --claudeai` with pipe stdio
317
+ * 2. Parse OAuth URL from stdout
318
+ * 3. Present URL to user (caller's responsibility — M1 policy)
319
+ * 4. Wait for process exit (exit 0 = success)
320
+ * 5. Verify with `claude auth status --json`
321
+ *
322
+ * Structurally identical to Codex device auth (Phase 5).
323
+ *
324
+ * **BROWSER=echo**: Suppresses the daemon from opening a browser in the
325
+ * user's session. The URL is always printed to stdout regardless.
326
+ */
327
+ async initiateClaudeAuth() {
328
+ const backendId = "claude";
329
+ if (this.activeRecoveries.has(backendId)) {
330
+ throw new Error(`Recovery already in progress for ${backendId}. Wait for it to complete or cancel.`);
331
+ }
332
+ const cliPath = findExecutable("claude");
333
+ if (!cliPath) {
334
+ throw new Error("Claude Code CLI is not installed or not on PATH.");
335
+ }
336
+ if (this.shuttingDown) {
337
+ throw new Error("Daemon is shutting down, cannot start recovery.");
338
+ }
339
+ // Spawn with BROWSER=echo to suppress daemon-initiated browser launch
340
+ const child = spawn(cliPath, ["auth", "login", "--claudeai"], {
341
+ stdio: ["pipe", "pipe", "pipe"],
342
+ env: { ...process.env, TERM: "dumb", NO_COLOR: "1", BROWSER: "echo" },
343
+ });
344
+ // Parse OAuth URL from stdout
345
+ const authUrl = await this.waitForClaudeAuthUrl(child);
346
+ // Write `recovering` status to DB
347
+ const nowIso = this.now().toISOString();
348
+ this.db.transaction(() => {
349
+ this.db
350
+ .prepare(`UPDATE backends
351
+ SET auth_status = 'recovering',
352
+ auth_checked_at = @now,
353
+ auth_last_verified_at = @now,
354
+ updated_at = @now
355
+ WHERE id = @id`)
356
+ .run({ now: nowIso, id: backendId });
357
+ writeAuthOkDetail(this.db, backendId, "Browser OAuth recovery in progress");
358
+ })();
359
+ this.incrementRecovery(backendId, "recovery_started");
360
+ // Set up timeout
361
+ const timeoutMs = this.claudeRecoveryTimeoutMin * 60 * 1000;
362
+ const timeoutHandle = setTimeout(() => {
363
+ logger.info({ backendId }, "Recovery timeout — killing subprocess");
364
+ killChildWithEscalation(child);
365
+ }, timeoutMs);
366
+ timeoutHandle.unref?.();
367
+ const completion = this.monitorClaudeRecovery(child, backendId, timeoutHandle);
368
+ const internal = {
369
+ backendId,
370
+ startedAt: this.now(),
371
+ authUrl,
372
+ expiresMinutes: this.claudeRecoveryTimeoutMin,
373
+ completion,
374
+ child,
375
+ timeoutHandle,
376
+ };
377
+ this.activeRecoveries.set(backendId, internal);
378
+ return {
379
+ backendId: internal.backendId,
380
+ startedAt: internal.startedAt,
381
+ authUrl: internal.authUrl,
382
+ expiresMinutes: internal.expiresMinutes,
383
+ completion: internal.completion,
384
+ };
385
+ }
386
+ // ────────────────────────────────────────────────────────────
387
+ // Gemini OAuth recovery (Phase 6 §5.1)
388
+ // ────────────────────────────────────────────────────────────
389
+ /**
390
+ * Initiate Gemini OAuth recovery using direct OAuth flow.
391
+ *
392
+ * Because the Gemini CLI requires a TTY for its auth flow (§5.0
393
+ * empirical verification), we bypass the CLI and implement OAuth
394
+ * directly using google-auth-library:
395
+ *
396
+ * 1. Extract client credentials from env vars or CLI bundle
397
+ * 2. Generate PKCE-protected OAuth URL
398
+ * 3. Present URL to user (caller's responsibility — M1 policy)
399
+ * 4. Wait for user to send auth code via handleGeminiAuthCode()
400
+ * 5. Exchange code for tokens → write oauth_creds.json
401
+ *
402
+ * **Encrypted storage rejection**: If GEMINI_FORCE_ENCRYPTED_FILE_STORAGE
403
+ * is enabled, we cannot write plaintext oauth_creds.json and the recovery
404
+ * is refused. The user must re-authenticate via the CLI directly.
405
+ *
406
+ * **Notification policy (M1 fix)**: This method does NOT send a DM.
407
+ * The caller is responsible for presenting the URL.
408
+ *
409
+ * Throws if:
410
+ * - A recovery is already in progress for this backend
411
+ * - Encrypted storage mode is enabled
412
+ * - OAuth credentials cannot be extracted
413
+ */
414
+ async initiateGeminiAuth() {
415
+ const backendId = "gemini";
416
+ // Guard: concurrent recovery
417
+ if (this.activeRecoveries.has(backendId)) {
418
+ throw new Error(`Recovery already in progress for ${backendId}. Wait for it to complete or cancel.`);
419
+ }
420
+ // Guard: daemon shutting down
421
+ if (this.shuttingDown) {
422
+ throw new Error("Daemon is shutting down, cannot start recovery.");
423
+ }
424
+ // Guard: encrypted storage — we can only write plaintext oauth_creds.json
425
+ if (process.env[GEMINI_ENCRYPTED_STORAGE_ENV] === "true") {
426
+ throw new Error("Gemini encrypted storage mode is enabled (GEMINI_FORCE_ENCRYPTED_FILE_STORAGE=true). " +
427
+ "Cannot write plaintext OAuth credentials. Please re-authenticate via the Gemini CLI directly.");
428
+ }
429
+ // Extract OAuth client credentials
430
+ const credentials = extractGeminiOAuthCredentials();
431
+ if (!credentials) {
432
+ throw new Error("Cannot extract Gemini OAuth credentials. " +
433
+ "Set PA_GEMINI_OAUTH_CLIENT_ID and PA_GEMINI_OAUTH_CLIENT_SECRET env vars, " +
434
+ "or ensure the Gemini CLI is installed.");
435
+ }
436
+ // Create OAuth2 client and generate PKCE auth URL
437
+ const oauthClient = new OAuth2Client({
438
+ clientId: credentials.clientId,
439
+ clientSecret: credentials.clientSecret,
440
+ });
441
+ const codeVerifierResult = await oauthClient.generateCodeVerifierAsync();
442
+ const authUrl = oauthClient.generateAuthUrl({
443
+ redirect_uri: GEMINI_REDIRECT_URI,
444
+ access_type: "offline",
445
+ scope: GEMINI_OAUTH_SCOPES,
446
+ code_challenge_method: CodeChallengeMethod.S256,
447
+ code_challenge: codeVerifierResult.codeChallenge,
448
+ });
449
+ // Write `recovering` status to DB
450
+ const nowIso = this.now().toISOString();
451
+ this.db.transaction(() => {
452
+ this.db
453
+ .prepare(`UPDATE backends
454
+ SET auth_status = 'recovering',
455
+ auth_checked_at = @now,
456
+ auth_last_verified_at = @now,
457
+ updated_at = @now
458
+ WHERE id = @id`)
459
+ .run({ now: nowIso, id: backendId });
460
+ writeAuthOkDetail(this.db, backendId, "OAuth recovery in progress — waiting for authorization code");
461
+ })();
462
+ // Telemetry
463
+ this.incrementRecovery(backendId, "recovery_started");
464
+ // Set up timeout (Gemini's auth flow expires in ~5 min)
465
+ const timeoutMs = this.geminiRecoveryTimeoutMin * 60 * 1000;
466
+ // Build completion promise that resolves when auth code is received or timeout
467
+ let resolveCompletion;
468
+ const completion = new Promise((resolve) => {
469
+ resolveCompletion = resolve;
470
+ });
471
+ const timeoutHandle = setTimeout(() => {
472
+ logger.info({ backendId }, "Gemini recovery timeout — no auth code received");
473
+ const result = {
474
+ ok: false,
475
+ reason: "timeout",
476
+ detail: `OAuth recovery timed out after ${this.geminiRecoveryTimeoutMin} minutes — no authorization code received`,
477
+ };
478
+ // Apply the result (DB + telemetry + notification)
479
+ this.applyRecoveryResult(backendId, result);
480
+ resolveCompletion(result);
481
+ this.activeRecoveries.delete(backendId);
482
+ }, timeoutMs);
483
+ timeoutHandle.unref?.();
484
+ const internal = {
485
+ backendId,
486
+ startedAt: this.now(),
487
+ authUrl,
488
+ expiresMinutes: this.geminiRecoveryTimeoutMin,
489
+ completion,
490
+ oauthClient,
491
+ codeVerifier: codeVerifierResult.codeVerifier,
492
+ resolveCompletion,
493
+ timeoutHandle,
494
+ };
495
+ this.activeRecoveries.set(backendId, internal);
496
+ return {
497
+ backendId: internal.backendId,
498
+ startedAt: internal.startedAt,
499
+ authUrl: internal.authUrl,
500
+ expiresMinutes: internal.expiresMinutes,
501
+ completion: internal.completion,
502
+ };
503
+ }
504
+ /**
505
+ * Handle a Google OAuth authorization code sent by the user.
506
+ *
507
+ * Called from the dispatcher (DM interception) or the API route
508
+ * (POST /backends/gemini/recovery/code). Exchanges the code for
509
+ * tokens, writes oauth_creds.json, verifies auth, and completes
510
+ * the recovery.
511
+ *
512
+ * Returns the recovery result. Throws if no Gemini recovery is active.
513
+ */
514
+ async handleGeminiAuthCode(code) {
515
+ const backendId = "gemini";
516
+ const internal = this.activeRecoveries.get(backendId);
517
+ if (!internal || !internal.oauthClient || !internal.codeVerifier || !internal.resolveCompletion) {
518
+ throw new Error("No active Gemini recovery session to receive an auth code.");
519
+ }
520
+ // Prevent timeout from firing after we start processing
521
+ clearTimeout(internal.timeoutHandle);
522
+ // B2 fix: backup existing oauth_creds.json before overwriting so we can
523
+ // restore on failure (design doc §4.2 backup/restore pattern).
524
+ const backedUp = backupGeminiOAuthCreds();
525
+ let result;
526
+ try {
527
+ // Exchange auth code for tokens
528
+ const { tokens } = await internal.oauthClient.getToken({
529
+ code,
530
+ codeVerifier: internal.codeVerifier,
531
+ redirect_uri: GEMINI_REDIRECT_URI,
532
+ });
533
+ if (!tokens || !tokens.access_token) {
534
+ result = {
535
+ ok: false,
536
+ reason: "verification_failed",
537
+ detail: "Token exchange succeeded but no access_token returned",
538
+ };
539
+ }
540
+ else {
541
+ // Write tokens to oauth_creds.json (same format as Gemini CLI)
542
+ writeGeminiOAuthCreds(tokens);
543
+ // Verify the credentials contain a refresh_token
544
+ const verified = await this.verifyGeminiAuth();
545
+ if (verified) {
546
+ // Success — remove backup
547
+ removeGeminiOAuthCredsBackup();
548
+ result = {
549
+ ok: true,
550
+ reason: "success",
551
+ detail: "OAuth authentication completed successfully",
552
+ };
553
+ }
554
+ else {
555
+ // Verification failed — restore backup
556
+ if (backedUp)
557
+ restoreGeminiOAuthCreds();
558
+ result = {
559
+ ok: false,
560
+ reason: "verification_failed",
561
+ detail: "Token exchange succeeded but refresh_token missing — original credentials restored",
562
+ };
563
+ }
564
+ }
565
+ }
566
+ catch (err) {
567
+ // B3 fix: redact provider error messages before they reach DM / logs.
568
+ const rawDetail = err instanceof Error ? err.message : "unknown error";
569
+ const safeDetail = redactSensitiveString(rawDetail);
570
+ // Restore backup on exchange failure
571
+ if (backedUp)
572
+ restoreGeminiOAuthCreds();
573
+ result = {
574
+ ok: false,
575
+ reason: "exception",
576
+ detail: `Failed to exchange authorization code: ${safeDetail}`,
577
+ };
578
+ }
579
+ // Apply result (DB + telemetry + notification)
580
+ this.applyRecoveryResult(backendId, result);
581
+ internal.resolveCompletion(result);
582
+ internal.resolveCompletion = undefined;
583
+ this.activeRecoveries.delete(backendId);
584
+ return result;
585
+ }
586
+ /**
587
+ * Post-auth verification: check that oauth_creds.json exists and
588
+ * contains a refresh_token. Must match GeminiCliCore.checkAuthDetailed
589
+ * semantics — access_token alone is insufficient because it expires
590
+ * in ~1h and cannot be renewed without a refresh_token, causing the
591
+ * next hourly probe to flag it as expired.
592
+ */
593
+ async verifyGeminiAuth() {
594
+ try {
595
+ if (!existsSync(GEMINI_OAUTH_CREDS_PATH))
596
+ return false;
597
+ const raw = readFileSync(GEMINI_OAUTH_CREDS_PATH, "utf-8");
598
+ const creds = JSON.parse(raw);
599
+ return typeof creds.refresh_token === "string" && creds.refresh_token.length > 0;
600
+ }
601
+ catch {
602
+ return false;
603
+ }
604
+ }
605
+ /**
606
+ * Cancel an active recovery for a backend.
607
+ *
608
+ * Synchronously resets the DB row to `expired` so it is never left
609
+ * stuck in `recovering` even if the subprocess close event arrives
610
+ * late or never (B3 fix). The subprocess close handler may later
611
+ * call applyRecoveryResult, but that is guarded by
612
+ * `WHERE auth_status = 'recovering'` and will no-op.
613
+ */
614
+ cancelRecovery(backendId) {
615
+ const internal = this.activeRecoveries.get(backendId);
616
+ if (!internal)
617
+ return false;
618
+ // Synchronously reset DB BEFORE killing — daemon might exit before
619
+ // the close event arrives (B3).
620
+ this.resetRecoveringToExpired(backendId, "Recovery cancelled by user");
621
+ this.killRecoveryProcess(internal);
622
+ this.activeRecoveries.delete(backendId);
623
+ return true;
624
+ }
625
+ /**
626
+ * Graceful shutdown — kill all active recovery subprocesses.
627
+ * Called from the daemon's SIGTERM handler.
628
+ *
629
+ * Synchronously resets DB rows so they are never stuck in `recovering`
630
+ * across daemon restarts (reinforces reconcilePendingRecoveries).
631
+ * Scans the DB in addition to the in-memory map for defense-in-depth
632
+ * — if a recovery was started but the in-memory tracking diverged
633
+ * (e.g. partial init failure), the DB scan catches it.
634
+ */
635
+ shutdown() {
636
+ this.shuttingDown = true;
637
+ // 1. Kill tracked subprocesses
638
+ for (const internal of this.activeRecoveries.values()) {
639
+ this.killRecoveryProcess(internal);
640
+ }
641
+ this.activeRecoveries.clear();
642
+ // 2. Reset ALL recovering rows in DB (defense-in-depth)
643
+ try {
644
+ const ids = this.db.prepare("SELECT id FROM backends WHERE auth_status = 'recovering'").all().map((r) => r.id);
645
+ for (const id of ids) {
646
+ this.resetRecoveringToExpired(id, "Recovery interrupted by daemon shutdown");
647
+ }
648
+ }
649
+ catch (err) {
650
+ logger.warn({ err }, "shutdown: failed to reset recovering rows");
651
+ }
652
+ }
653
+ // ────────────────────────────────────────────────────────────
654
+ // Private helpers
655
+ // ────────────────────────────────────────────────────────────
656
+ /**
657
+ * Wait for the device code output from `codex login --device-auth`.
658
+ * Times out after 10 seconds if the expected output doesn't appear.
659
+ */
660
+ waitForDeviceCode(child) {
661
+ return new Promise((resolve, reject) => {
662
+ let stdout = "";
663
+ const PARSE_TIMEOUT_MS = 10_000;
664
+ const timer = setTimeout(() => {
665
+ cleanup();
666
+ killChildWithEscalation(child);
667
+ reject(new Error("Codex device auth did not produce a device code within 10s. " +
668
+ `Captured stdout: ${redactSensitiveString(stdout.slice(0, 200))}`));
669
+ }, PARSE_TIMEOUT_MS);
670
+ timer.unref?.();
671
+ const onData = (chunk) => {
672
+ stdout += chunk.toString();
673
+ const info = parseCodexDeviceAuthOutput(stdout);
674
+ if (info) {
675
+ cleanup();
676
+ resolve(info);
677
+ }
678
+ };
679
+ const onError = (err) => {
680
+ cleanup();
681
+ reject(err);
682
+ };
683
+ const onClose = (code) => {
684
+ cleanup();
685
+ reject(new Error(`Codex login exited (code=${code}) before producing a device code.`));
686
+ };
687
+ child.stdout?.on("data", onData);
688
+ child.once("error", onError);
689
+ child.once("close", onClose);
690
+ function cleanup() {
691
+ clearTimeout(timer);
692
+ child.stdout?.off("data", onData);
693
+ child.off("error", onError);
694
+ child.off("close", onClose);
695
+ }
696
+ });
697
+ }
698
+ /**
699
+ * Monitor the Codex recovery subprocess until it exits.
700
+ *
701
+ * B2 fix: after `waitForDeviceCode` resolves, the child may have
702
+ * already exited (e.g. crash immediately after printing the code).
703
+ * We check `child.exitCode !== null` before registering `once("close")`
704
+ * and handle the already-exited case synchronously.
705
+ */
706
+ async monitorCodexRecovery(child, backendId, timeoutHandle) {
707
+ try {
708
+ const result = await new Promise((resolve) => {
709
+ const handleClose = async (code, signal) => {
710
+ clearTimeout(timeoutHandle);
711
+ try {
712
+ if (code === 0) {
713
+ const verified = await this.verifyCodexAuth();
714
+ if (verified) {
715
+ resolve({ ok: true, reason: "success", detail: "Device auth completed successfully" });
716
+ }
717
+ else {
718
+ resolve({ ok: false, reason: "verification_failed", detail: "Device auth process exited 0 but login status check failed" });
719
+ }
720
+ }
721
+ else if (signal) {
722
+ resolve({ ok: false, reason: "killed", detail: `Recovery process killed (signal=${signal})` });
723
+ }
724
+ else {
725
+ resolve({ ok: false, reason: "exit_error", detail: `Device auth failed (exit code=${code})` });
726
+ }
727
+ }
728
+ catch (err) {
729
+ resolve({ ok: false, reason: "exception", detail: `Recovery verification failed: ${err instanceof Error ? err.message : "unknown"}` });
730
+ }
731
+ };
732
+ // B2 fix: child may have already exited between waitForDeviceCode
733
+ // resolve and this registration. Node sets child.exitCode
734
+ // synchronously on exit before emitting "close".
735
+ if (child.exitCode !== null) {
736
+ void handleClose(child.exitCode, null);
737
+ }
738
+ else {
739
+ child.once("close", (code, signal) => void handleClose(code, signal));
740
+ }
741
+ });
742
+ this.applyRecoveryResult(backendId, result);
743
+ return result;
744
+ }
745
+ finally {
746
+ this.activeRecoveries.delete(backendId);
747
+ }
748
+ }
749
+ /**
750
+ * Post-auth verification: run `codex login status` and check exit code.
751
+ */
752
+ async verifyCodexAuth() {
753
+ const cliPath = findExecutable("codex");
754
+ if (!cliPath)
755
+ return false;
756
+ try {
757
+ const result = await runLineCommand({
758
+ command: cliPath,
759
+ args: ["login", "status"],
760
+ cwd: process.cwd(),
761
+ timeoutMs: 10_000,
762
+ });
763
+ return result.exitCode === 0;
764
+ }
765
+ catch {
766
+ return false;
767
+ }
768
+ }
769
+ /**
770
+ * Wait for the OAuth URL from `claude auth login` stdout.
771
+ * Times out after 10 seconds if the expected output doesn't appear.
772
+ */
773
+ waitForClaudeAuthUrl(child) {
774
+ return new Promise((resolve, reject) => {
775
+ let stdout = "";
776
+ const PARSE_TIMEOUT_MS = 10_000;
777
+ const timer = setTimeout(() => {
778
+ cleanup();
779
+ killChildWithEscalation(child);
780
+ reject(new Error("Claude auth login did not produce an OAuth URL within 10s. " +
781
+ `Captured stdout: ${redactSensitiveString(stdout.slice(0, 200))}`));
782
+ }, PARSE_TIMEOUT_MS);
783
+ timer.unref?.();
784
+ const onData = (chunk) => {
785
+ stdout += chunk.toString();
786
+ const url = parseClaudeAuthLoginOutput(stdout);
787
+ if (url) {
788
+ cleanup();
789
+ resolve(url);
790
+ }
791
+ };
792
+ const onError = (err) => {
793
+ cleanup();
794
+ reject(err);
795
+ };
796
+ const onClose = (code) => {
797
+ cleanup();
798
+ reject(new Error(`Claude auth login exited (code=${code}) before producing an OAuth URL.`));
799
+ };
800
+ child.stdout?.on("data", onData);
801
+ child.once("error", onError);
802
+ child.once("close", onClose);
803
+ function cleanup() {
804
+ clearTimeout(timer);
805
+ child.stdout?.off("data", onData);
806
+ child.off("error", onError);
807
+ child.off("close", onClose);
808
+ }
809
+ });
810
+ }
811
+ /**
812
+ * Monitor the Claude recovery subprocess until it exits.
813
+ * Mirrors monitorCodexRecovery — same B2 fix pattern.
814
+ */
815
+ async monitorClaudeRecovery(child, backendId, timeoutHandle) {
816
+ try {
817
+ const result = await new Promise((resolve) => {
818
+ const handleClose = async (code, signal) => {
819
+ clearTimeout(timeoutHandle);
820
+ try {
821
+ if (code === 0) {
822
+ const verified = await this.verifyClaudeAuth();
823
+ if (verified) {
824
+ resolve({ ok: true, reason: "success", detail: "Browser auth completed successfully" });
825
+ }
826
+ else {
827
+ resolve({ ok: false, reason: "verification_failed", detail: "Claude auth process exited 0 but auth status check failed" });
828
+ }
829
+ }
830
+ else if (signal) {
831
+ resolve({ ok: false, reason: "killed", detail: `Recovery process killed (signal=${signal})` });
832
+ }
833
+ else {
834
+ resolve({ ok: false, reason: "exit_error", detail: `Claude auth failed (exit code=${code})` });
835
+ }
836
+ }
837
+ catch (err) {
838
+ resolve({ ok: false, reason: "exception", detail: `Recovery verification failed: ${err instanceof Error ? err.message : "unknown"}` });
839
+ }
840
+ };
841
+ if (child.exitCode !== null) {
842
+ void handleClose(child.exitCode, null);
843
+ }
844
+ else {
845
+ child.once("close", (code, signal) => void handleClose(code, signal));
846
+ }
847
+ });
848
+ this.applyRecoveryResult(backendId, result);
849
+ return result;
850
+ }
851
+ finally {
852
+ this.activeRecoveries.delete(backendId);
853
+ }
854
+ }
855
+ /**
856
+ * Post-auth verification: run `claude auth status --json` and check loggedIn.
857
+ */
858
+ async verifyClaudeAuth() {
859
+ const cliPath = findExecutable("claude");
860
+ if (!cliPath)
861
+ return false;
862
+ try {
863
+ const result = await runLineCommand({
864
+ command: cliPath,
865
+ args: ["auth", "status", "--json"],
866
+ cwd: process.cwd(),
867
+ timeoutMs: 10_000,
868
+ });
869
+ if (result.exitCode !== 0)
870
+ return false;
871
+ const stdout = result.stdoutLines.join("");
872
+ try {
873
+ const parsed = JSON.parse(stdout);
874
+ return parsed.loggedIn === true;
875
+ }
876
+ catch {
877
+ return false;
878
+ }
879
+ }
880
+ catch {
881
+ return false;
882
+ }
883
+ }
884
+ /**
885
+ * Apply recovery result: update DB status and record telemetry.
886
+ */
887
+ applyRecoveryResult(backendId, result) {
888
+ try {
889
+ if (result.ok) {
890
+ // Persist success via AuthHealthMonitor — clears failure
891
+ // bookkeeping, stamps auth_last_success_at, records self-heal.
892
+ this.authHealthMonitor.persistCheckResult(backendId, {
893
+ ok: true,
894
+ status: "ok",
895
+ method: "oauth",
896
+ detail: result.detail,
897
+ });
898
+ this.incrementRecovery(backendId, "recovery_success");
899
+ this.telemetry.recordSelfHealObserved(backendId, "reactive");
900
+ logger.info({ backendId }, "Auth recovery succeeded");
901
+ }
902
+ else {
903
+ // Write `expired` back — the recovering subprocess no longer
904
+ // owns the row. Uses FIRST_EXPIRED_CASE_SQL (M4 fix) so that
905
+ // `auth_first_expired_at` is preserved from the pre-recovery
906
+ // state (the ELSE/COALESCE branch handles `recovering` →
907
+ // `expired`). The `WHERE auth_status = 'recovering'` guard
908
+ // ensures we only touch rows we own — if cancelRecovery or
909
+ // reconcilePendingRecoveries already reset the row, this is
910
+ // a no-op (B1 fix: writeAuthFailureDetail is gated on changes).
911
+ const nowIso = this.now().toISOString();
912
+ let changes = 0;
913
+ this.db.transaction(() => {
914
+ const info = this.db
915
+ .prepare(`UPDATE backends
916
+ SET auth_status = 'expired',
917
+ auth_checked_at = @now,
918
+ auth_last_verified_at = @now,
919
+ ${FIRST_EXPIRED_CASE_SQL},
920
+ updated_at = @now
921
+ WHERE id = @id
922
+ AND auth_status = 'recovering'`)
923
+ .run({ now: nowIso, id: backendId });
924
+ changes = Number(info.changes);
925
+ // B1 fix: only write detail if the UPDATE actually matched.
926
+ // If another path (cancelRecovery, reconcilePendingRecoveries)
927
+ // already reset the row, we must not clobber their detail.
928
+ if (changes > 0) {
929
+ writeAuthFailureDetail(this.db, backendId, result.detail);
930
+ }
931
+ })();
932
+ // M6 fix: use structured reason for counter attribution.
933
+ const counterKey = result.reason === "killed" || result.reason === "timeout"
934
+ ? "recovery_timeout"
935
+ : "recovery_failed";
936
+ this.incrementRecovery(backendId, counterKey);
937
+ logger.info({ backendId, detail: result.detail, reason: result.reason }, "Auth recovery failed");
938
+ }
939
+ }
940
+ catch (err) {
941
+ logger.warn({ err, backendId }, "Failed to apply recovery result to DB");
942
+ }
943
+ // Notify user of result (D2 fix: kind = "recovery")
944
+ this.notifyRecoveryComplete(backendId, result).catch((err) => {
945
+ logger.warn({ err, backendId }, "Failed to send recovery completion notification");
946
+ });
947
+ }
948
+ /**
949
+ * Synchronously reset a `recovering` row back to `expired`.
950
+ * Used by cancelRecovery and shutdown (B3 fix) so the DB is never
951
+ * left stuck even if the subprocess close event doesn't arrive.
952
+ */
953
+ resetRecoveringToExpired(backendId, detail) {
954
+ try {
955
+ const nowIso = this.now().toISOString();
956
+ this.db.transaction(() => {
957
+ const info = this.db
958
+ .prepare(`UPDATE backends
959
+ SET auth_status = 'expired',
960
+ auth_checked_at = @now,
961
+ auth_last_verified_at = @now,
962
+ ${FIRST_EXPIRED_CASE_SQL},
963
+ updated_at = @now
964
+ WHERE id = @id
965
+ AND auth_status = 'recovering'`)
966
+ .run({ now: nowIso, id: backendId });
967
+ if (Number(info.changes) > 0) {
968
+ writeAuthFailureDetail(this.db, backendId, detail);
969
+ }
970
+ })();
971
+ }
972
+ catch (err) {
973
+ logger.warn({ err, backendId }, "resetRecoveringToExpired: DB write failed");
974
+ }
975
+ }
976
+ killRecoveryProcess(internal) {
977
+ clearTimeout(internal.timeoutHandle);
978
+ if (internal.child) {
979
+ killChildWithEscalation(internal.child);
980
+ }
981
+ // Gemini: reject the pending completion promise so callers aren't stuck
982
+ if (internal.resolveCompletion) {
983
+ internal.resolveCompletion({
984
+ ok: false,
985
+ reason: "killed",
986
+ detail: "Recovery cancelled",
987
+ });
988
+ internal.resolveCompletion = undefined;
989
+ }
990
+ }
991
+ /**
992
+ * Notify the user that a recovery completed (D2 fix: kind = "recovery").
993
+ */
994
+ async notifyRecoveryComplete(backendId, result) {
995
+ if (!this.notifier)
996
+ return;
997
+ const icon = result.ok ? "✅" : "❌";
998
+ // B3 fix: redact detail before sending to DM — provider error messages
999
+ // may contain token fragments or client credentials.
1000
+ const safeDetail = redactSensitiveString(result.detail);
1001
+ const msg = `${icon} ${backendId} auth recovery: ${safeDetail}`;
1002
+ try {
1003
+ await this.notifier.send(msg, { kind: "recovery" });
1004
+ }
1005
+ catch (err) {
1006
+ logger.warn({ err }, "Failed to send recovery completion notification");
1007
+ }
1008
+ }
1009
+ /**
1010
+ * Increment a recovery telemetry counter.
1011
+ * Recovery counters reuse the AuthTelemetry infrastructure with
1012
+ * `source = "reactive"` since recovery is user-initiated.
1013
+ */
1014
+ incrementRecovery(backendId, key) {
1015
+ try {
1016
+ this.telemetry.increment(backendId, key, "reactive");
1017
+ }
1018
+ catch {
1019
+ // Telemetry is best-effort
1020
+ }
1021
+ }
1022
+ }
1023
+ /**
1024
+ * Write OAuth tokens to ~/.gemini/oauth_creds.json in the same format
1025
+ * the Gemini CLI uses (mode 0600). Creates the directory if needed.
1026
+ */
1027
+ function writeGeminiOAuthCreds(tokens) {
1028
+ const dir = dirname(GEMINI_OAUTH_CREDS_PATH);
1029
+ if (!existsSync(dir)) {
1030
+ mkdirSync(dir, { recursive: true });
1031
+ }
1032
+ const content = JSON.stringify(tokens, null, 2);
1033
+ writeFileSync(GEMINI_OAUTH_CREDS_PATH, content, { mode: 0o600 });
1034
+ try {
1035
+ chmodSync(GEMINI_OAUTH_CREDS_PATH, 0o600);
1036
+ }
1037
+ catch {
1038
+ // Best-effort
1039
+ }
1040
+ }
1041
+ const GEMINI_OAUTH_CREDS_BACKUP = GEMINI_OAUTH_CREDS_PATH + ".pa-backup";
1042
+ /**
1043
+ * B2 fix: backup existing oauth_creds.json before overwriting.
1044
+ * Returns true if a backup was created.
1045
+ */
1046
+ function backupGeminiOAuthCreds() {
1047
+ try {
1048
+ if (existsSync(GEMINI_OAUTH_CREDS_PATH)) {
1049
+ copyFileSync(GEMINI_OAUTH_CREDS_PATH, GEMINI_OAUTH_CREDS_BACKUP);
1050
+ return true;
1051
+ }
1052
+ }
1053
+ catch (err) {
1054
+ logger.debug({ err }, "Failed to backup oauth_creds.json — proceeding without backup");
1055
+ }
1056
+ return false;
1057
+ }
1058
+ /**
1059
+ * B2 fix: restore oauth_creds.json from backup on recovery failure.
1060
+ */
1061
+ function restoreGeminiOAuthCreds() {
1062
+ try {
1063
+ if (existsSync(GEMINI_OAUTH_CREDS_BACKUP)) {
1064
+ copyFileSync(GEMINI_OAUTH_CREDS_BACKUP, GEMINI_OAUTH_CREDS_PATH);
1065
+ unlinkSync(GEMINI_OAUTH_CREDS_BACKUP);
1066
+ logger.info("Restored original oauth_creds.json from backup after failed recovery");
1067
+ }
1068
+ }
1069
+ catch (err) {
1070
+ logger.warn({ err }, "Failed to restore oauth_creds.json backup");
1071
+ }
1072
+ }
1073
+ /**
1074
+ * Remove the backup file after successful recovery.
1075
+ */
1076
+ function removeGeminiOAuthCredsBackup() {
1077
+ try {
1078
+ if (existsSync(GEMINI_OAUTH_CREDS_BACKUP)) {
1079
+ unlinkSync(GEMINI_OAUTH_CREDS_BACKUP);
1080
+ }
1081
+ }
1082
+ catch {
1083
+ // Best-effort
1084
+ }
1085
+ }
1086
+ //# sourceMappingURL=auth-recovery.js.map