@aitne/daemon 0.1.7 → 0.1.9

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 (2056) hide show
  1. package/dist/adapters/composite-dashboard-stream.d.ts +8 -11
  2. package/dist/adapters/composite-dashboard-stream.js +8 -11
  3. package/dist/adapters/dashboard-adapter.d.ts +18 -6
  4. package/dist/adapters/dashboard-adapter.js +101 -55
  5. package/dist/adapters/discord.d.ts +10 -3
  6. package/dist/adapters/discord.js +102 -26
  7. package/dist/adapters/docs-qa-adapter.d.ts +15 -16
  8. package/dist/adapters/docs-qa-adapter.js +14 -15
  9. package/dist/adapters/message-hub.d.ts +2 -3
  10. package/dist/adapters/message-hub.js +9 -3
  11. package/dist/adapters/notification-manager.d.ts +100 -3
  12. package/dist/adapters/notification-manager.js +244 -23
  13. package/dist/adapters/outbound-text.d.ts +17 -4
  14. package/dist/adapters/outbound-text.js +119 -5
  15. package/dist/adapters/primary-platform-resolver.d.ts +68 -0
  16. package/dist/adapters/primary-platform-resolver.js +54 -0
  17. package/dist/adapters/slack-adapter.d.ts +32 -5
  18. package/dist/adapters/slack-adapter.js +146 -58
  19. package/dist/adapters/telegram-adapter.d.ts +11 -8
  20. package/dist/adapters/telegram-adapter.js +63 -42
  21. package/dist/adapters/types.d.ts +3 -4
  22. package/dist/adapters/types.js +0 -1
  23. package/dist/adapters/whatsapp-adapter.d.ts +104 -18
  24. package/dist/adapters/whatsapp-adapter.js +305 -69
  25. package/dist/api/chat-binding-query.d.ts +0 -1
  26. package/dist/api/chat-binding-query.js +0 -1
  27. package/dist/api/chat-session-resume.d.ts +0 -1
  28. package/dist/api/chat-session-resume.js +0 -1
  29. package/dist/api/directory-picker.d.ts +0 -1
  30. package/dist/api/directory-picker.js +14 -1
  31. package/dist/api/env-writer.d.ts +0 -1
  32. package/dist/api/env-writer.js +108 -5
  33. package/dist/api/helpers/agent-errors-envelope.d.ts +116 -0
  34. package/dist/api/helpers/agent-errors-envelope.js +165 -0
  35. package/dist/api/helpers/agent-errors-registry.d.ts +2290 -0
  36. package/dist/api/helpers/agent-errors-registry.js +2197 -0
  37. package/dist/api/helpers/agent-errors-types.d.ts +193 -0
  38. package/dist/api/helpers/agent-errors-types.js +15 -0
  39. package/dist/api/helpers/agent-errors-zod.d.ts +33 -0
  40. package/dist/api/helpers/agent-errors-zod.js +138 -0
  41. package/dist/api/helpers/agent-errors.d.ts +4 -0
  42. package/dist/api/helpers/agent-errors.js +17 -0
  43. package/dist/api/integration-route-gate.d.ts +0 -1
  44. package/dist/api/integration-route-gate.js +10 -4
  45. package/dist/api/json-body.d.ts +3 -4
  46. package/dist/api/json-body.js +3 -4
  47. package/dist/api/routes/activity-sources.d.ts +1 -2
  48. package/dist/api/routes/activity-sources.js +0 -1
  49. package/dist/api/routes/agent-schedule-plan-match.d.ts +4 -0
  50. package/dist/api/routes/agent-schedule-plan-match.js +100 -0
  51. package/dist/api/routes/agent-schedule.d.ts +3 -0
  52. package/dist/api/routes/agent-schedule.js +790 -0
  53. package/dist/api/routes/agent.d.ts +0 -1
  54. package/dist/api/routes/agent.js +233 -367
  55. package/dist/api/routes/agents/index.d.ts +3 -0
  56. package/dist/api/routes/agents/index.js +404 -0
  57. package/dist/api/routes/agents/views.d.ts +185 -0
  58. package/dist/api/routes/agents/views.js +514 -0
  59. package/dist/api/routes/apple-calendar.d.ts +1 -2
  60. package/dist/api/routes/apple-calendar.js +110 -29
  61. package/dist/api/routes/attachments.d.ts +0 -1
  62. package/dist/api/routes/attachments.js +113 -22
  63. package/dist/api/routes/backends.d.ts +0 -1
  64. package/dist/api/routes/backends.js +144 -40
  65. package/dist/api/routes/books.d.ts +0 -1
  66. package/dist/api/routes/books.js +65 -26
  67. package/dist/api/routes/browser-automation-purchase.d.ts +31 -0
  68. package/dist/api/routes/browser-automation-purchase.js +251 -0
  69. package/dist/api/routes/browser-automation-sites.d.ts +22 -0
  70. package/dist/api/routes/browser-automation-sites.js +238 -0
  71. package/dist/api/routes/browser-history-managed.d.ts +23 -0
  72. package/dist/api/routes/browser-history-managed.js +202 -0
  73. package/dist/api/routes/browser-history.d.ts +3 -0
  74. package/dist/api/routes/browser-history.js +433 -0
  75. package/dist/api/routes/browser-task.d.ts +43 -0
  76. package/dist/api/routes/browser-task.js +617 -0
  77. package/dist/api/routes/calendar.d.ts +3 -3
  78. package/dist/api/routes/calendar.js +330 -56
  79. package/dist/api/routes/commands.d.ts +0 -1
  80. package/dist/api/routes/commands.js +27 -2
  81. package/dist/api/routes/context/frontmatter-merge.d.ts +28 -0
  82. package/dist/api/routes/context/frontmatter-merge.js +56 -0
  83. package/dist/api/routes/context/index.d.ts +40 -0
  84. package/dist/api/routes/context/index.js +174 -0
  85. package/dist/api/routes/context/locks.d.ts +3 -0
  86. package/dist/api/routes/context/locks.js +136 -0
  87. package/dist/api/routes/context/path-resolve.d.ts +26 -0
  88. package/dist/api/routes/context/path-resolve.js +125 -0
  89. package/dist/api/routes/context/permissions.d.ts +58 -0
  90. package/dist/api/routes/context/permissions.js +234 -0
  91. package/dist/api/routes/context/read.d.ts +3 -0
  92. package/dist/api/routes/context/read.js +306 -0
  93. package/dist/api/routes/context/repair.d.ts +3 -0
  94. package/dist/api/routes/context/repair.js +114 -0
  95. package/dist/api/routes/context/snapshots.d.ts +3 -0
  96. package/dist/api/routes/context/snapshots.js +208 -0
  97. package/dist/api/routes/context/write-step.d.ts +132 -0
  98. package/dist/api/routes/context/write-step.js +151 -0
  99. package/dist/api/routes/context/write.d.ts +3 -0
  100. package/dist/api/routes/context/write.js +781 -0
  101. package/dist/api/routes/dashboard/config.d.ts +3 -0
  102. package/dist/api/routes/dashboard/config.js +507 -0
  103. package/dist/api/routes/dashboard/conversations.d.ts +3 -0
  104. package/dist/api/routes/dashboard/conversations.js +308 -0
  105. package/dist/api/routes/dashboard/cost-approvals.d.ts +28 -0
  106. package/dist/api/routes/dashboard/cost-approvals.js +258 -0
  107. package/dist/api/routes/dashboard/index.d.ts +26 -0
  108. package/dist/api/routes/dashboard/index.js +46 -0
  109. package/dist/api/routes/dashboard/messaging.d.ts +3 -0
  110. package/dist/api/routes/dashboard/messaging.js +349 -0
  111. package/dist/api/routes/dashboard/notifications.d.ts +3 -0
  112. package/dist/api/routes/dashboard/notifications.js +108 -0
  113. package/dist/api/routes/dashboard/oauth-google.d.ts +3 -0
  114. package/dist/api/routes/dashboard/oauth-google.js +288 -0
  115. package/dist/api/routes/dashboard/schedule-readonly.d.ts +3 -0
  116. package/dist/api/routes/dashboard/schedule-readonly.js +54 -0
  117. package/dist/api/routes/dashboard/secrets.d.ts +23 -0
  118. package/dist/api/routes/dashboard/secrets.js +306 -0
  119. package/dist/api/routes/dashboard/snapshots.d.ts +3 -0
  120. package/dist/api/routes/dashboard/snapshots.js +32 -0
  121. package/dist/api/routes/delegated-sync.d.ts +0 -1
  122. package/dist/api/routes/delegated-sync.js +0 -1
  123. package/dist/api/routes/delegated.d.ts +5 -5
  124. package/dist/api/routes/delegated.js +6 -6
  125. package/dist/api/routes/docs.d.ts +0 -1
  126. package/dist/api/routes/docs.js +72 -10
  127. package/dist/api/routes/entities.d.ts +0 -1
  128. package/dist/api/routes/entities.js +114 -45
  129. package/dist/api/routes/fs.d.ts +0 -1
  130. package/dist/api/routes/fs.js +27 -13
  131. package/dist/api/routes/fs.logic.d.ts +0 -1
  132. package/dist/api/routes/fs.logic.js +6 -2
  133. package/dist/api/routes/git-accounts.d.ts +0 -1
  134. package/dist/api/routes/git-accounts.js +0 -1
  135. package/dist/api/routes/git-templates.d.ts +0 -1
  136. package/dist/api/routes/git-templates.js +113 -28
  137. package/dist/api/routes/git.d.ts +0 -1
  138. package/dist/api/routes/git.js +65 -16
  139. package/dist/api/routes/github.d.ts +0 -1
  140. package/dist/api/routes/github.js +130 -24
  141. package/dist/api/routes/health.d.ts +0 -1
  142. package/dist/api/routes/health.js +4 -3
  143. package/dist/api/routes/integrations/crud-patch.d.ts +16 -0
  144. package/dist/api/routes/integrations/crud-patch.js +638 -0
  145. package/dist/api/routes/integrations/crud.d.ts +15 -0
  146. package/dist/api/routes/integrations/crud.js +157 -0
  147. package/dist/api/routes/integrations/exec.d.ts +22 -0
  148. package/dist/api/routes/integrations/exec.js +349 -0
  149. package/dist/api/routes/integrations/index.d.ts +61 -0
  150. package/dist/api/routes/integrations/index.js +69 -0
  151. package/dist/api/routes/integrations/probe.d.ts +20 -0
  152. package/dist/api/routes/integrations/probe.js +246 -0
  153. package/dist/api/routes/integrations-reconcile.d.ts +0 -1
  154. package/dist/api/routes/integrations-reconcile.js +0 -1
  155. package/dist/api/routes/knowledge.d.ts +0 -1
  156. package/dist/api/routes/knowledge.js +14 -4
  157. package/dist/api/routes/mail/accounts.d.ts +3 -0
  158. package/dist/api/routes/mail/accounts.js +288 -0
  159. package/dist/api/routes/mail/app-password.d.ts +3 -0
  160. package/dist/api/routes/mail/app-password.js +191 -0
  161. package/dist/api/routes/mail/body-helpers.d.ts +55 -0
  162. package/dist/api/routes/mail/body-helpers.js +90 -0
  163. package/dist/api/routes/mail/dependencies.d.ts +35 -0
  164. package/dist/api/routes/mail/dependencies.js +1 -0
  165. package/dist/api/routes/mail/drafts.d.ts +4 -0
  166. package/dist/api/routes/mail/drafts.js +138 -0
  167. package/dist/api/routes/mail/gating.d.ts +44 -0
  168. package/dist/api/routes/mail/gating.js +98 -0
  169. package/dist/api/routes/mail/index.d.ts +17 -0
  170. package/dist/api/routes/mail/index.js +39 -0
  171. package/dist/api/routes/mail/messages.d.ts +14 -0
  172. package/dist/api/routes/mail/messages.js +238 -0
  173. package/dist/api/routes/mail/outlook-config.d.ts +3 -0
  174. package/dist/api/routes/mail/outlook-config.js +72 -0
  175. package/dist/api/routes/mail/provider-resolver.d.ts +63 -0
  176. package/dist/api/routes/mail/provider-resolver.js +285 -0
  177. package/dist/api/routes/mail/providers.d.ts +3 -0
  178. package/dist/api/routes/mail/providers.js +72 -0
  179. package/dist/api/routes/mail/search-health.d.ts +3 -0
  180. package/dist/api/routes/mail/search-health.js +130 -0
  181. package/dist/api/routes/mail/tags-folders.d.ts +4 -0
  182. package/dist/api/routes/mail/tags-folders.js +34 -0
  183. package/dist/api/routes/mail/validators.d.ts +22 -0
  184. package/dist/api/routes/mail/validators.js +130 -0
  185. package/dist/api/routes/managed-tasks.d.ts +0 -1
  186. package/dist/api/routes/managed-tasks.js +154 -63
  187. package/dist/api/routes/mcp.d.ts +0 -1
  188. package/dist/api/routes/mcp.js +115 -48
  189. package/dist/api/routes/metrics.d.ts +1 -2
  190. package/dist/api/routes/metrics.js +2 -3
  191. package/dist/api/routes/notion.d.ts +0 -1
  192. package/dist/api/routes/notion.js +234 -55
  193. package/dist/api/routes/observations.d.ts +0 -1
  194. package/dist/api/routes/observations.js +53 -184
  195. package/dist/api/routes/obsidian.d.ts +0 -1
  196. package/dist/api/routes/obsidian.js +193 -33
  197. package/dist/api/routes/profile-questions.d.ts +0 -1
  198. package/dist/api/routes/profile-questions.js +26 -5
  199. package/dist/api/routes/receipts.d.ts +0 -1
  200. package/dist/api/routes/receipts.js +64 -25
  201. package/dist/api/routes/recurring-schedules.d.ts +0 -1
  202. package/dist/api/routes/recurring-schedules.js +288 -15
  203. package/dist/api/routes/repositories.d.ts +0 -1
  204. package/dist/api/routes/repositories.js +278 -105
  205. package/dist/api/routes/schedule-model-resolver.d.ts +152 -0
  206. package/dist/api/routes/schedule-model-resolver.js +285 -0
  207. package/dist/api/routes/schedule-options.d.ts +24 -0
  208. package/dist/api/routes/schedule-options.js +76 -0
  209. package/dist/api/routes/schedule-validation.d.ts +145 -0
  210. package/dist/api/routes/schedule-validation.js +152 -0
  211. package/dist/api/routes/setup-migrate.d.ts +0 -1
  212. package/dist/api/routes/setup-migrate.js +6 -4
  213. package/dist/api/routes/setup.d.ts +0 -1
  214. package/dist/api/routes/setup.js +142 -27
  215. package/dist/api/routes/skill-curation.d.ts +0 -1
  216. package/dist/api/routes/skill-curation.js +0 -1
  217. package/dist/api/routes/skills.d.ts +2 -1
  218. package/dist/api/routes/skills.js +92 -33
  219. package/dist/api/routes/sot-bindings.d.ts +1 -2
  220. package/dist/api/routes/sot-bindings.js +46 -12
  221. package/dist/api/routes/sse.d.ts +0 -1
  222. package/dist/api/routes/sse.js +6 -2
  223. package/dist/api/routes/system.d.ts +0 -1
  224. package/dist/api/routes/system.js +15 -3
  225. package/dist/api/routes/task-flows.d.ts +0 -1
  226. package/dist/api/routes/task-flows.js +0 -1
  227. package/dist/api/routes/travel-bookings.d.ts +0 -1
  228. package/dist/api/routes/travel-bookings.js +26 -10
  229. package/dist/api/routes/triggers.d.ts +0 -1
  230. package/dist/api/routes/triggers.js +0 -1
  231. package/dist/api/routes/voice.d.ts +0 -1
  232. package/dist/api/routes/voice.js +0 -1
  233. package/dist/api/routes/wiki.d.ts +0 -1
  234. package/dist/api/routes/wiki.js +84 -17
  235. package/dist/api/server.d.ts +55 -6
  236. package/dist/api/server.js +76 -22
  237. package/dist/bootstrap/adapters.d.ts +0 -1
  238. package/dist/bootstrap/adapters.js +7 -5
  239. package/dist/bootstrap/api.d.ts +219 -0
  240. package/dist/bootstrap/api.js +502 -0
  241. package/dist/bootstrap/catchup.d.ts +0 -1
  242. package/dist/bootstrap/catchup.js +1 -2
  243. package/dist/bootstrap/db.d.ts +213 -0
  244. package/dist/bootstrap/db.js +617 -0
  245. package/dist/bootstrap/event-pipeline.d.ts +329 -0
  246. package/dist/bootstrap/event-pipeline.js +1203 -0
  247. package/dist/bootstrap/managed-chromium.d.ts +26 -0
  248. package/dist/bootstrap/managed-chromium.js +66 -0
  249. package/dist/bootstrap/observers.d.ts +147 -0
  250. package/dist/bootstrap/observers.js +586 -0
  251. package/dist/bootstrap/schedule-helpers.d.ts +122 -1
  252. package/dist/bootstrap/schedule-helpers.js +206 -6
  253. package/dist/bootstrap/services.d.ts +0 -1
  254. package/dist/bootstrap/services.js +1 -11
  255. package/dist/config.d.ts +1 -2
  256. package/dist/config.js +32 -15
  257. package/dist/core/abort-utils.d.ts +13 -0
  258. package/dist/core/abort-utils.js +35 -0
  259. package/dist/core/agent-core.d.ts +36 -4
  260. package/dist/core/agent-core.js +3 -2
  261. package/dist/core/agent-execution-recorder.d.ts +78 -0
  262. package/dist/core/agent-execution-recorder.js +60 -0
  263. package/dist/core/agents/agent-execution-tracker.d.ts +91 -0
  264. package/dist/core/agents/agent-execution-tracker.js +226 -0
  265. package/dist/core/agents/agent-frontmatter.d.ts +57 -0
  266. package/dist/core/agents/agent-frontmatter.js +74 -0
  267. package/dist/core/agents/agent-id-resolver.d.ts +47 -0
  268. package/dist/core/agents/agent-id-resolver.js +61 -0
  269. package/dist/core/agents/builtin-registry.d.ts +156 -0
  270. package/dist/core/agents/builtin-registry.js +257 -0
  271. package/dist/core/agents/cron-substitute.d.ts +60 -0
  272. package/dist/core/agents/cron-substitute.js +100 -0
  273. package/dist/core/agents/definition-criteria.d.ts +14 -0
  274. package/dist/core/agents/definition-criteria.js +25 -0
  275. package/dist/core/agents/effective-definition.d.ts +47 -0
  276. package/dist/core/agents/effective-definition.js +101 -0
  277. package/dist/core/agents/firing-blocked.d.ts +28 -0
  278. package/dist/core/agents/firing-blocked.js +27 -0
  279. package/dist/core/agents/loader-boot.d.ts +26 -0
  280. package/dist/core/agents/loader-boot.js +98 -0
  281. package/dist/core/agents/loader-watcher.d.ts +23 -0
  282. package/dist/core/agents/loader-watcher.js +84 -0
  283. package/dist/core/agents/loader.d.ts +188 -0
  284. package/dist/core/agents/loader.js +754 -0
  285. package/dist/core/agents/override-merge.d.ts +57 -0
  286. package/dist/core/agents/override-merge.js +131 -0
  287. package/dist/core/agents/recurrence-convert.d.ts +92 -0
  288. package/dist/core/agents/recurrence-convert.js +207 -0
  289. package/dist/core/agents/recurring-schedule-adapter.d.ts +24 -0
  290. package/dist/core/agents/recurring-schedule-adapter.js +157 -0
  291. package/dist/core/agents/success-criteria.d.ts +60 -0
  292. package/dist/core/agents/success-criteria.js +139 -0
  293. package/dist/core/agents/validate-agent-md.d.ts +17 -0
  294. package/dist/core/agents/validate-agent-md.js +64 -0
  295. package/dist/core/alerts.d.ts +0 -1
  296. package/dist/core/alerts.js +0 -1
  297. package/dist/core/atomic-write.d.ts +0 -1
  298. package/dist/core/atomic-write.js +17 -4
  299. package/dist/core/backends/api-key-probe.d.ts +0 -1
  300. package/dist/core/backends/api-key-probe.js +0 -1
  301. package/dist/core/backends/auth-health-monitor.d.ts +0 -1
  302. package/dist/core/backends/auth-health-monitor.js +31 -5
  303. package/dist/core/backends/auth-recovery.d.ts +0 -1
  304. package/dist/core/backends/auth-recovery.js +17 -4
  305. package/dist/core/backends/auth-telemetry.d.ts +0 -1
  306. package/dist/core/backends/auth-telemetry.js +0 -1
  307. package/dist/core/backends/backend-router.d.ts +44 -3
  308. package/dist/core/backends/backend-router.js +230 -3
  309. package/dist/core/backends/claude-auth.d.ts +0 -1
  310. package/dist/core/backends/claude-auth.js +0 -1
  311. package/dist/core/backends/claude-code-core.d.ts +53 -2
  312. package/dist/core/backends/claude-code-core.js +202 -29
  313. package/dist/core/backends/claude-credentials-store.d.ts +0 -1
  314. package/dist/core/backends/claude-credentials-store.js +0 -1
  315. package/dist/core/backends/claude-delegated.d.ts +0 -1
  316. package/dist/core/backends/claude-delegated.js +14 -15
  317. package/dist/core/backends/claude-errors.d.ts +0 -1
  318. package/dist/core/backends/claude-errors.js +0 -1
  319. package/dist/core/backends/claude-probe.d.ts +0 -1
  320. package/dist/core/backends/claude-probe.js +0 -1
  321. package/dist/core/backends/claude-tool-collection.d.ts +0 -1
  322. package/dist/core/backends/claude-tool-collection.js +177 -32
  323. package/dist/core/backends/cli-quota-guards.d.ts +100 -0
  324. package/dist/core/backends/cli-quota-guards.js +95 -0
  325. package/dist/core/backends/cli-utils.d.ts +26 -2
  326. package/dist/core/backends/cli-utils.js +133 -15
  327. package/dist/core/backends/codex-core.d.ts +13 -2
  328. package/dist/core/backends/codex-core.js +470 -63
  329. package/dist/core/backends/gemini-cli-core.d.ts +5 -2
  330. package/dist/core/backends/gemini-cli-core.js +348 -68
  331. package/dist/core/backends/idle-watchdog.d.ts +0 -1
  332. package/dist/core/backends/idle-watchdog.js +0 -1
  333. package/dist/core/backends/install-methods.d.ts +0 -1
  334. package/dist/core/backends/install-methods.js +22 -1
  335. package/dist/core/backends/model-registry.d.ts +10 -6
  336. package/dist/core/backends/model-registry.js +204 -34
  337. package/dist/core/backends/native-skill-discovery-probe.d.ts +77 -0
  338. package/dist/core/backends/native-skill-discovery-probe.js +172 -0
  339. package/dist/core/backends/opencode-basic-auth-fetch.d.ts +26 -0
  340. package/dist/core/backends/opencode-basic-auth-fetch.js +39 -0
  341. package/dist/core/backends/opencode-config-builder.d.ts +113 -0
  342. package/dist/core/backends/opencode-config-builder.js +184 -0
  343. package/dist/core/backends/opencode-core.d.ts +315 -0
  344. package/dist/core/backends/opencode-core.js +1508 -0
  345. package/dist/core/backends/opencode-event-mapper.d.ts +132 -0
  346. package/dist/core/backends/opencode-event-mapper.js +197 -0
  347. package/dist/core/backends/opencode-mcp.d.ts +81 -0
  348. package/dist/core/backends/opencode-mcp.js +157 -0
  349. package/dist/core/backends/opencode-server-manager.d.ts +113 -0
  350. package/dist/core/backends/opencode-server-manager.js +221 -0
  351. package/dist/core/backends/opencode-types.d.ts +45 -0
  352. package/dist/core/backends/opencode-types.js +13 -0
  353. package/dist/core/backends/plan-presets.d.ts +18 -6
  354. package/dist/core/backends/plan-presets.js +191 -24
  355. package/dist/core/backends/price-fetcher.d.ts +0 -1
  356. package/dist/core/backends/price-fetcher.js +0 -1
  357. package/dist/core/backends/process-config-cascade.d.ts +35 -1
  358. package/dist/core/backends/process-config-cascade.js +35 -2
  359. package/dist/core/backends/prompt-utils.d.ts +0 -1
  360. package/dist/core/backends/prompt-utils.js +0 -3
  361. package/dist/core/backends/proxy-model-registry.d.ts +0 -1
  362. package/dist/core/backends/proxy-model-registry.js +0 -1
  363. package/dist/core/backends/quota-reset-hints.d.ts +43 -0
  364. package/dist/core/backends/quota-reset-hints.js +116 -0
  365. package/dist/core/backends/silent-api-error-detector.d.ts +0 -1
  366. package/dist/core/backends/silent-api-error-detector.js +0 -1
  367. package/dist/core/bang-commands/commands-checks.d.ts +16 -0
  368. package/dist/core/bang-commands/commands-checks.js +58 -0
  369. package/dist/core/bang-commands/commands-close.d.ts +23 -0
  370. package/dist/core/bang-commands/commands-close.js +23 -0
  371. package/dist/core/bang-commands/commands-cost.d.ts +0 -1
  372. package/dist/core/bang-commands/commands-cost.js +13 -1
  373. package/dist/core/bang-commands/commands-help.d.ts +0 -1
  374. package/dist/core/bang-commands/commands-help.js +44 -6
  375. package/dist/core/bang-commands/commands-report.d.ts +0 -1
  376. package/dist/core/bang-commands/commands-report.js +1 -1
  377. package/dist/core/bang-commands/commands-research.d.ts +36 -0
  378. package/dist/core/bang-commands/commands-research.js +284 -0
  379. package/dist/core/bang-commands/commands-stop-start.d.ts +0 -1
  380. package/dist/core/bang-commands/commands-stop-start.js +2 -1
  381. package/dist/core/bang-commands/commands-wiki.d.ts +0 -1
  382. package/dist/core/bang-commands/commands-wiki.js +53 -14
  383. package/dist/core/bang-commands/format-utils.d.ts +15 -3
  384. package/dist/core/bang-commands/format-utils.js +23 -4
  385. package/dist/core/bang-commands/index.d.ts +3 -1
  386. package/dist/core/bang-commands/index.js +14 -1
  387. package/dist/core/bang-commands/registry.d.ts +59 -1
  388. package/dist/core/bang-commands/registry.js +175 -23
  389. package/dist/core/bang-commands/user-commands.d.ts +0 -1
  390. package/dist/core/bang-commands/user-commands.js +0 -1
  391. package/dist/core/browser-history/pre-morning-digest-job.d.ts +79 -0
  392. package/dist/core/browser-history/pre-morning-digest-job.js +89 -0
  393. package/dist/core/browser-history/research-cluster-fanout.d.ts +40 -0
  394. package/dist/core/browser-history/research-cluster-fanout.js +47 -0
  395. package/dist/core/browser-history/research-events.d.ts +37 -0
  396. package/dist/core/browser-history/research-events.js +70 -0
  397. package/dist/core/channel-timeline.d.ts +18 -2
  398. package/dist/core/channel-timeline.js +44 -1
  399. package/dist/core/character-block.d.ts +0 -1
  400. package/dist/core/character-block.js +0 -1
  401. package/dist/core/context/activity-sources.d.ts +3 -4
  402. package/dist/core/context/activity-sources.js +0 -1
  403. package/dist/core/context/activity-view-reconciler.d.ts +1 -2
  404. package/dist/core/context/activity-view-reconciler.js +10 -10
  405. package/dist/core/context/activity-view-runner.d.ts +0 -1
  406. package/dist/core/context/activity-view-runner.js +11 -3
  407. package/dist/core/context/default-schedules-reconciler.d.ts +1 -2
  408. package/dist/core/context/default-schedules-reconciler.js +1 -2
  409. package/dist/core/context/default-schedules-runner.d.ts +0 -1
  410. package/dist/core/context/default-schedules-runner.js +44 -5
  411. package/dist/core/context/domain-index-reconciler.d.ts +3 -1
  412. package/dist/core/context/domain-index-reconciler.js +11 -5
  413. package/dist/core/context/domain-index-runner.d.ts +0 -1
  414. package/dist/core/context/domain-index-runner.js +9 -2
  415. package/dist/core/context/entity-mirror.d.ts +9 -7
  416. package/dist/core/context/entity-mirror.js +21 -9
  417. package/dist/core/context/entity-source-rename.d.ts +0 -1
  418. package/dist/core/context/entity-source-rename.js +9 -2
  419. package/dist/core/context/index-reconciler.d.ts +26 -5
  420. package/dist/core/context/index-reconciler.js +110 -56
  421. package/dist/core/context/policy-index-reconciler.d.ts +6 -7
  422. package/dist/core/context/policy-index-reconciler.js +6 -7
  423. package/dist/core/context/policy-index-runner.d.ts +2 -3
  424. package/dist/core/context/policy-index-runner.js +10 -3
  425. package/dist/core/context/reconciler-runner.d.ts +0 -1
  426. package/dist/core/context/reconciler-runner.js +46 -6
  427. package/dist/core/context/reconciler-section.d.ts +30 -0
  428. package/dist/core/context/reconciler-section.js +39 -0
  429. package/dist/core/context-builder-calendar.d.ts +36 -0
  430. package/dist/core/context-builder-calendar.js +245 -0
  431. package/dist/core/context-builder-conversation.d.ts +95 -0
  432. package/dist/core/context-builder-conversation.js +444 -0
  433. package/dist/core/context-builder-format.d.ts +8 -0
  434. package/dist/core/context-builder-format.js +22 -0
  435. package/dist/core/context-builder-projects.d.ts +11 -0
  436. package/dist/core/context-builder-projects.js +102 -0
  437. package/dist/core/context-builder-yesterday.d.ts +30 -0
  438. package/dist/core/context-builder-yesterday.js +198 -0
  439. package/dist/core/context-builder.d.ts +73 -124
  440. package/dist/core/context-builder.js +272 -903
  441. package/dist/core/context-file-serializer.d.ts +92 -0
  442. package/dist/core/context-file-serializer.js +126 -0
  443. package/dist/core/context-frontmatter-extract.d.ts +32 -0
  444. package/dist/core/context-frontmatter-extract.js +98 -0
  445. package/dist/core/context-frontmatter.d.ts +14 -1
  446. package/dist/core/context-frontmatter.js +180 -109
  447. package/dist/core/context-health.d.ts +0 -1
  448. package/dist/core/context-health.js +25 -14
  449. package/dist/core/context-paths.d.ts +128 -85
  450. package/dist/core/context-paths.js +190 -108
  451. package/dist/core/context-staleness.d.ts +0 -1
  452. package/dist/core/context-staleness.js +2 -3
  453. package/dist/core/context-validation/frontmatter.d.ts +73 -0
  454. package/dist/core/context-validation/frontmatter.js +216 -0
  455. package/dist/core/context-validation/index.d.ts +19 -0
  456. package/dist/core/context-validation/index.js +19 -0
  457. package/dist/core/context-validation/prepare-write.d.ts +94 -0
  458. package/dist/core/context-validation/prepare-write.js +145 -0
  459. package/dist/core/context-validation/routine-rulebook.d.ts +59 -0
  460. package/dist/core/context-validation/routine-rulebook.js +155 -0
  461. package/dist/core/context-validation/section.d.ts +40 -0
  462. package/dist/core/context-validation/section.js +90 -0
  463. package/dist/core/context-validation/snapshot-debounce.d.ts +51 -0
  464. package/dist/core/context-validation/snapshot-debounce.js +109 -0
  465. package/dist/core/context-validation/today.d.ts +84 -0
  466. package/dist/core/context-validation/today.js +167 -0
  467. package/dist/core/context-vault-aliases.d.ts +107 -0
  468. package/dist/core/context-vault-aliases.js +253 -0
  469. package/dist/core/custom-routine-scheduler.d.ts +5 -6
  470. package/dist/core/custom-routine-scheduler.js +3 -4
  471. package/dist/core/daemon-api-cli.d.ts +6 -6
  472. package/dist/core/daemon-api-cli.js +132 -33
  473. package/dist/core/dashboard-session-cleanup.d.ts +0 -1
  474. package/dist/core/dashboard-session-cleanup.js +0 -1
  475. package/dist/core/dashboard-session-controls.d.ts +0 -1
  476. package/dist/core/dashboard-session-controls.js +0 -1
  477. package/dist/core/delegated-connector-health.d.ts +0 -1
  478. package/dist/core/delegated-connector-health.js +0 -1
  479. package/dist/core/dispatcher-date-utils.d.ts +0 -1
  480. package/dist/core/dispatcher-date-utils.js +0 -1
  481. package/dist/core/dispatcher-error-handling.d.ts +13 -1
  482. package/dist/core/dispatcher-error-handling.js +69 -1
  483. package/dist/core/dispatcher-hourly-check.d.ts +73 -2
  484. package/dist/core/dispatcher-hourly-check.js +258 -153
  485. package/dist/core/dispatcher-message-handler.d.ts +32 -2
  486. package/dist/core/dispatcher-message-handler.js +310 -53
  487. package/dist/core/dispatcher-morning-routine.d.ts +38 -31
  488. package/dist/core/dispatcher-morning-routine.js +238 -156
  489. package/dist/core/dispatcher-prompt.d.ts +4 -2
  490. package/dist/core/dispatcher-prompt.js +19 -4
  491. package/dist/core/dispatcher-repository-helpers.d.ts +0 -1
  492. package/dist/core/dispatcher-repository-helpers.js +5 -2
  493. package/dist/core/dispatcher-result-processor.d.ts +20 -1
  494. package/dist/core/dispatcher-result-processor.js +94 -5
  495. package/dist/core/dispatcher-scheduled-browser-task.d.ts +91 -0
  496. package/dist/core/dispatcher-scheduled-browser-task.js +228 -0
  497. package/dist/core/dispatcher-scheduled-tasks.d.ts +69 -2
  498. package/dist/core/dispatcher-scheduled-tasks.js +452 -29
  499. package/dist/core/dispatcher-types.d.ts +140 -13
  500. package/dist/core/dispatcher-types.js +0 -1
  501. package/dist/core/dispatcher.d.ts +194 -5
  502. package/dist/core/dispatcher.js +487 -11
  503. package/dist/core/dm-freshness-metrics.d.ts +6 -6
  504. package/dist/core/dm-freshness-metrics.js +7 -7
  505. package/dist/core/dm-token-router.d.ts +58 -0
  506. package/dist/core/dm-token-router.js +58 -0
  507. package/dist/core/docs/citation-validator.d.ts +0 -1
  508. package/dist/core/docs/citation-validator.js +0 -1
  509. package/dist/core/docs/extract-terms.d.ts +0 -1
  510. package/dist/core/docs/extract-terms.js +0 -1
  511. package/dist/core/docs/indexer.d.ts +0 -1
  512. package/dist/core/docs/indexer.js +0 -1
  513. package/dist/core/drift-effects.d.ts +0 -1
  514. package/dist/core/drift-effects.js +6 -3
  515. package/dist/core/evening-review-verify.d.ts +163 -0
  516. package/dist/core/evening-review-verify.js +636 -0
  517. package/dist/core/event-bus.d.ts +0 -1
  518. package/dist/core/event-bus.js +0 -1
  519. package/dist/core/fetch-window-prompt-loader.d.ts +46 -0
  520. package/dist/core/fetch-window-prompt-loader.js +71 -0
  521. package/dist/core/git-project-docs.d.ts +0 -1
  522. package/dist/core/git-project-docs.js +13 -6
  523. package/dist/core/health-monitor.d.ts +2 -2
  524. package/dist/core/health-monitor.js +6 -3
  525. package/dist/core/heartbeat.d.ts +0 -1
  526. package/dist/core/heartbeat.js +0 -1
  527. package/dist/core/injection-policy.d.ts +107 -0
  528. package/dist/core/injection-policy.js +117 -0
  529. package/dist/core/integration-health.d.ts +0 -1
  530. package/dist/core/integration-health.js +1 -2
  531. package/dist/core/integration-lifecycle.d.ts +0 -1
  532. package/dist/core/integration-lifecycle.js +0 -1
  533. package/dist/core/integration-main-backend.d.ts +0 -1
  534. package/dist/core/integration-main-backend.js +11 -4
  535. package/dist/core/integration-probe.d.ts +0 -1
  536. package/dist/core/integration-probe.js +0 -1
  537. package/dist/core/management-md-write-lock.d.ts +1 -2
  538. package/dist/core/management-md-write-lock.js +1 -2
  539. package/dist/core/management-md.d.ts +24 -10
  540. package/dist/core/management-md.js +65 -33
  541. package/dist/core/management-registry.d.ts +16 -25
  542. package/dist/core/management-registry.js +32 -54
  543. package/dist/core/management-telemetry.d.ts +1 -2
  544. package/dist/core/management-telemetry.js +1 -2
  545. package/dist/core/message-recorder.d.ts +3 -4
  546. package/dist/core/message-recorder.js +3 -4
  547. package/dist/core/metrics.d.ts +88 -2
  548. package/dist/core/metrics.js +78 -3
  549. package/dist/core/migration-backup.d.ts +0 -1
  550. package/dist/core/migration-backup.js +11 -1
  551. package/dist/core/morning/agent-journal-appender.d.ts +264 -0
  552. package/dist/core/morning/agent-journal-appender.js +632 -0
  553. package/dist/core/morning/daily-journal-composer.d.ts +183 -0
  554. package/dist/core/morning/daily-journal-composer.js +421 -0
  555. package/dist/core/morning/handoff-parser.d.ts +43 -0
  556. package/dist/core/morning/handoff-parser.js +115 -0
  557. package/dist/core/morning/journal-skeleton-builder.d.ts +155 -0
  558. package/dist/core/morning/journal-skeleton-builder.js +301 -0
  559. package/dist/core/morning/orchestrator.d.ts +424 -0
  560. package/dist/core/morning/orchestrator.js +1230 -0
  561. package/dist/core/morning/parent-audit-emitter.d.ts +80 -0
  562. package/dist/core/morning/parent-audit-emitter.js +118 -0
  563. package/dist/core/morning/partial-extract-streak.d.ts +76 -0
  564. package/dist/core/morning/partial-extract-streak.js +165 -0
  565. package/dist/core/morning/roadmap-skeleton-builder.d.ts +158 -0
  566. package/dist/core/morning/roadmap-skeleton-builder.js +337 -0
  567. package/dist/core/output-language-policy.d.ts +0 -1
  568. package/dist/core/output-language-policy.js +7 -8
  569. package/dist/core/overview-write-lock.d.ts +0 -1
  570. package/dist/core/overview-write-lock.js +0 -1
  571. package/dist/core/path-compat.d.ts +0 -1
  572. package/dist/core/path-compat.js +0 -1
  573. package/dist/core/path-rewrite.d.ts +1 -2
  574. package/dist/core/path-rewrite.js +0 -1
  575. package/dist/core/policy-files.d.ts +39 -13
  576. package/dist/core/policy-files.js +62 -12
  577. package/dist/core/pre-pass-freshness.d.ts +27 -0
  578. package/dist/core/pre-pass-freshness.js +9 -0
  579. package/dist/core/previous-week-digest.d.ts +129 -0
  580. package/dist/core/previous-week-digest.js +256 -0
  581. package/dist/core/profile-questions/seed.d.ts +2 -3
  582. package/dist/core/profile-questions/seed.js +4 -4
  583. package/dist/core/profile-questions/slot-filled.d.ts +0 -1
  584. package/dist/core/profile-questions/slot-filled.js +0 -1
  585. package/dist/core/prompts.d.ts +0 -1
  586. package/dist/core/prompts.js +6 -7
  587. package/dist/core/quiet-hours-sync.d.ts +0 -1
  588. package/dist/core/quiet-hours-sync.js +7 -1
  589. package/dist/core/quiet-hours.d.ts +35 -0
  590. package/dist/core/quiet-hours.js +93 -0
  591. package/dist/core/read-sensitive-token-manager.d.ts +0 -1
  592. package/dist/core/read-sensitive-token-manager.js +0 -1
  593. package/dist/core/recurrence.d.ts +13 -1
  594. package/dist/core/recurrence.js +108 -14
  595. package/dist/core/reinstall.d.ts +5 -1
  596. package/dist/core/reinstall.js +12 -2
  597. package/dist/core/release-assets.d.ts +39 -4
  598. package/dist/core/release-assets.js +83 -8
  599. package/dist/core/repository-management-docs.d.ts +0 -1
  600. package/dist/core/repository-management-docs.js +32 -11
  601. package/dist/core/retention.d.ts +49 -4
  602. package/dist/core/retention.js +218 -5
  603. package/dist/core/review-context.d.ts +10 -1
  604. package/dist/core/review-context.js +51 -6
  605. package/dist/core/roadmap-horizon.d.ts +0 -1
  606. package/dist/core/roadmap-horizon.js +0 -1
  607. package/dist/core/roadmap-ids.d.ts +4 -6
  608. package/dist/core/roadmap-ids.js +4 -6
  609. package/dist/core/roadmap-maintenance.d.ts +212 -0
  610. package/dist/core/roadmap-maintenance.js +732 -0
  611. package/dist/core/roadmap-refresh-triggers.d.ts +0 -1
  612. package/dist/core/roadmap-refresh-triggers.js +0 -1
  613. package/dist/core/roadmap-truncate.d.ts +0 -1
  614. package/dist/core/roadmap-truncate.js +0 -1
  615. package/dist/core/roadmap-validate.d.ts +5 -1
  616. package/dist/core/roadmap-validate.js +12 -75
  617. package/dist/core/roadmap-write-lock.d.ts +0 -1
  618. package/dist/core/roadmap-write-lock.js +0 -1
  619. package/dist/core/routine-acquisition-plan.d.ts +43 -8
  620. package/dist/core/routine-acquisition-plan.js +99 -9
  621. package/dist/core/routine-fetch-window-retry.d.ts +40 -3
  622. package/dist/core/routine-fetch-window-retry.js +90 -9
  623. package/dist/core/routine-fetch-window-runner.d.ts +55 -22
  624. package/dist/core/routine-fetch-window-runner.js +287 -41
  625. package/dist/core/routine-windows.d.ts +17 -19
  626. package/dist/core/routine-windows.js +80 -44
  627. package/dist/core/schedule-insert-helper.d.ts +0 -1
  628. package/dist/core/schedule-insert-helper.js +0 -1
  629. package/dist/core/schedule-maintenance.d.ts +0 -1
  630. package/dist/core/schedule-maintenance.js +0 -1
  631. package/dist/core/scheduler.d.ts +179 -37
  632. package/dist/core/scheduler.js +614 -91
  633. package/dist/core/semaphore.d.ts +0 -1
  634. package/dist/core/semaphore.js +0 -1
  635. package/dist/core/session-gate.d.ts +0 -1
  636. package/dist/core/session-gate.js +0 -1
  637. package/dist/core/session-manager.d.ts +25 -7
  638. package/dist/core/session-manager.js +32 -16
  639. package/dist/core/signal-detector.d.ts +2 -3
  640. package/dist/core/signal-detector.js +3 -4
  641. package/dist/core/skeleton.d.ts +1 -2
  642. package/dist/core/skeleton.js +31 -32
  643. package/dist/core/skill-curation/apply-proposal.d.ts +0 -1
  644. package/dist/core/skill-curation/apply-proposal.js +0 -1
  645. package/dist/core/skill-curation/auto-revert.d.ts +0 -1
  646. package/dist/core/skill-curation/auto-revert.js +4 -5
  647. package/dist/core/skill-curation/classify-diff.d.ts +0 -1
  648. package/dist/core/skill-curation/classify-diff.js +0 -0
  649. package/dist/core/skill-curation/declarations.d.ts +0 -1
  650. package/dist/core/skill-curation/declarations.js +0 -1
  651. package/dist/core/skill-curation/knowledge-map.d.ts +0 -1
  652. package/dist/core/skill-curation/knowledge-map.js +0 -1
  653. package/dist/core/skill-curation/orphan-overlay.d.ts +2 -3
  654. package/dist/core/skill-curation/orphan-overlay.js +5 -6
  655. package/dist/core/skill-curation/overlay-store.d.ts +6 -4
  656. package/dist/core/skill-curation/overlay-store.js +12 -7
  657. package/dist/core/skill-curation/render/convention-notes.d.ts +0 -1
  658. package/dist/core/skill-curation/render/convention-notes.js +0 -1
  659. package/dist/core/skill-curation/render/cross-references.d.ts +0 -1
  660. package/dist/core/skill-curation/render/cross-references.js +0 -1
  661. package/dist/core/skill-curation/render/frontmatter-schema.d.ts +0 -1
  662. package/dist/core/skill-curation/render/frontmatter-schema.js +0 -1
  663. package/dist/core/skill-curation/render/index.d.ts +0 -1
  664. package/dist/core/skill-curation/render/index.js +0 -1
  665. package/dist/core/skill-curation/render/knowledge-layout.d.ts +0 -1
  666. package/dist/core/skill-curation/render/knowledge-layout.js +0 -1
  667. package/dist/core/skill-curation/render/routing-table.d.ts +0 -1
  668. package/dist/core/skill-curation/render/routing-table.js +0 -1
  669. package/dist/core/skill-curation/render/search-recipes.d.ts +0 -1
  670. package/dist/core/skill-curation/render/search-recipes.js +0 -1
  671. package/dist/core/skill-curation/run-token.d.ts +0 -1
  672. package/dist/core/skill-curation/run-token.js +0 -1
  673. package/dist/core/skill-curation/signals.d.ts +0 -1
  674. package/dist/core/skill-curation/signals.js +0 -1
  675. package/dist/core/skill-curation/smoke-test.d.ts +0 -1
  676. package/dist/core/skill-curation/smoke-test.js +0 -1
  677. package/dist/core/skill-curation/splicer.d.ts +0 -1
  678. package/dist/core/skill-curation/splicer.js +0 -1
  679. package/dist/core/skill-curation/workdir.d.ts +0 -1
  680. package/dist/core/skill-curation/workdir.js +0 -1
  681. package/dist/core/skill-source-paths.d.ts +0 -1
  682. package/dist/core/skill-source-paths.js +0 -1
  683. package/dist/core/skills-compiler-cli-renderer.d.ts +79 -0
  684. package/dist/core/skills-compiler-cli-renderer.js +289 -0
  685. package/dist/core/skills-compiler-denied-tools.d.ts +57 -0
  686. package/dist/core/skills-compiler-denied-tools.js +204 -0
  687. package/dist/core/skills-compiler-skill-index.d.ts +117 -0
  688. package/dist/core/skills-compiler-skill-index.js +262 -0
  689. package/dist/core/skills-compiler-tree.d.ts +38 -0
  690. package/dist/core/skills-compiler-tree.js +157 -0
  691. package/dist/core/skills-compiler-types.d.ts +46 -0
  692. package/dist/core/skills-compiler-types.js +1 -0
  693. package/dist/core/skills-compiler-variants.d.ts +117 -0
  694. package/dist/core/skills-compiler-variants.js +337 -0
  695. package/dist/core/skills-compiler.d.ts +169 -217
  696. package/dist/core/skills-compiler.js +385 -940
  697. package/dist/core/skills-manifest.d.ts +133 -1
  698. package/dist/core/skills-manifest.js +507 -40
  699. package/dist/core/system-reset.d.ts +1 -2
  700. package/dist/core/system-reset.js +1 -2
  701. package/dist/core/template-store.d.ts +2 -3
  702. package/dist/core/template-store.js +7 -4
  703. package/dist/core/template-versions.d.ts +1 -2
  704. package/dist/core/template-versions.js +1 -2
  705. package/dist/core/today-agent-plan.d.ts +0 -1
  706. package/dist/core/today-agent-plan.js +0 -1
  707. package/dist/core/today-direct-writer.d.ts +11 -2
  708. package/dist/core/today-direct-writer.js +42 -27
  709. package/dist/core/today-write-lock.d.ts +0 -1
  710. package/dist/core/today-write-lock.js +0 -1
  711. package/dist/core/trigger-dispatch.d.ts +0 -1
  712. package/dist/core/trigger-dispatch.js +0 -1
  713. package/dist/core/trigger-evaluator.d.ts +0 -1
  714. package/dist/core/trigger-evaluator.js +0 -1
  715. package/dist/core/user-skills-root.d.ts +24 -0
  716. package/dist/core/user-skills-root.js +29 -0
  717. package/dist/core/wiki/approval-queue.d.ts +0 -1
  718. package/dist/core/wiki/approval-queue.js +7 -3
  719. package/dist/core/wiki/bridge.d.ts +0 -1
  720. package/dist/core/wiki/bridge.js +0 -1
  721. package/dist/core/wiki/compile-lock.d.ts +0 -1
  722. package/dist/core/wiki/compile-lock.js +0 -1
  723. package/dist/core/wiki/compile-preview.d.ts +0 -1
  724. package/dist/core/wiki/compile-preview.js +0 -1
  725. package/dist/core/wiki/cost-estimate.d.ts +0 -1
  726. package/dist/core/wiki/cost-estimate.js +23 -3
  727. package/dist/core/wiki/dispatcher.d.ts +1 -21
  728. package/dist/core/wiki/dispatcher.js +0 -26
  729. package/dist/core/wiki/git-precompile.d.ts +9 -1
  730. package/dist/core/wiki/git-precompile.js +7 -2
  731. package/dist/core/wiki/import-migrate.d.ts +0 -1
  732. package/dist/core/wiki/import-migrate.js +0 -1
  733. package/dist/core/wiki/import-probe.d.ts +0 -1
  734. package/dist/core/wiki/import-probe.js +7 -5
  735. package/dist/core/wiki/index-cache.d.ts +0 -1
  736. package/dist/core/wiki/index-cache.js +0 -1
  737. package/dist/core/wiki/multi-url-dispatch.d.ts +0 -1
  738. package/dist/core/wiki/multi-url-dispatch.js +19 -9
  739. package/dist/core/wiki/wiki-fts.d.ts +0 -1
  740. package/dist/core/wiki/wiki-fts.js +0 -1
  741. package/dist/core/wiki/workspaces.d.ts +17 -2
  742. package/dist/core/wiki/workspaces.js +28 -17
  743. package/dist/core/wiki/write-strategy.d.ts +0 -1
  744. package/dist/core/wiki/write-strategy.js +19 -3
  745. package/dist/core/workdir.d.ts +38 -2
  746. package/dist/core/workdir.js +159 -17
  747. package/dist/db/agent-executions-store.d.ts +149 -0
  748. package/dist/db/agent-executions-store.js +209 -0
  749. package/dist/db/agents-store.d.ts +179 -0
  750. package/dist/db/agents-store.js +264 -0
  751. package/dist/db/automation-triggers.d.ts +0 -1
  752. package/dist/db/automation-triggers.js +0 -1
  753. package/dist/db/browser-automation-b4-config-store.d.ts +68 -0
  754. package/dist/db/browser-automation-b4-config-store.js +111 -0
  755. package/dist/db/browser-automation-purchase-primary-channels-store.d.ts +48 -0
  756. package/dist/db/browser-automation-purchase-primary-channels-store.js +88 -0
  757. package/dist/db/browser-automation-purchase-replies-store.d.ts +48 -0
  758. package/dist/db/browser-automation-purchase-replies-store.js +71 -0
  759. package/dist/db/browser-automation-purchase-tokens-store.d.ts +276 -0
  760. package/dist/db/browser-automation-purchase-tokens-store.js +483 -0
  761. package/dist/db/browser-automation-store.d.ts +37 -0
  762. package/dist/db/browser-automation-store.js +41 -0
  763. package/dist/db/browser-history-store.d.ts +231 -0
  764. package/dist/db/browser-history-store.js +601 -0
  765. package/dist/db/browser-task-action-log-store.d.ts +41 -0
  766. package/dist/db/browser-task-action-log-store.js +74 -0
  767. package/dist/db/browser-task-clarifications-store.d.ts +67 -0
  768. package/dist/db/browser-task-clarifications-store.js +118 -0
  769. package/dist/db/browser-task-final-confirm-tokens-store.d.ts +108 -0
  770. package/dist/db/browser-task-final-confirm-tokens-store.js +251 -0
  771. package/dist/db/browser-task-store.d.ts +114 -0
  772. package/dist/db/browser-task-store.js +250 -0
  773. package/dist/db/client.d.ts +0 -1
  774. package/dist/db/client.js +0 -1
  775. package/dist/db/entities-store.d.ts +6 -7
  776. package/dist/db/entities-store.js +5 -6
  777. package/dist/db/hourly-check-signals.d.ts +0 -1
  778. package/dist/db/hourly-check-signals.js +121 -36
  779. package/dist/db/integration-probe-store.d.ts +0 -1
  780. package/dist/db/integration-probe-store.js +0 -1
  781. package/dist/db/integrations-store.d.ts +0 -1
  782. package/dist/db/integrations-store.js +0 -1
  783. package/dist/db/managed-chromium-sites-store.d.ts +110 -0
  784. package/dist/db/managed-chromium-sites-store.js +174 -0
  785. package/dist/db/managed-chromium-state.d.ts +58 -0
  786. package/dist/db/managed-chromium-state.js +104 -0
  787. package/dist/db/managed-tasks-store.d.ts +0 -1
  788. package/dist/db/managed-tasks-store.js +0 -1
  789. package/dist/db/management-parse-failures-store.d.ts +0 -1
  790. package/dist/db/management-parse-failures-store.js +0 -1
  791. package/dist/db/migrations/context-vault-restructure.d.ts +263 -0
  792. package/dist/db/migrations/context-vault-restructure.js +1384 -0
  793. package/dist/db/migrations.d.ts +111 -0
  794. package/dist/db/migrations.js +476 -0
  795. package/dist/db/observations.d.ts +1 -2
  796. package/dist/db/observations.js +13 -4
  797. package/dist/db/recurring-schedules.d.ts +44 -3
  798. package/dist/db/recurring-schedules.js +116 -21
  799. package/dist/db/repositories-store.d.ts +2 -2
  800. package/dist/db/repositories-store.js +41 -4
  801. package/dist/db/runtime-state.d.ts +32 -2
  802. package/dist/db/runtime-state.js +33 -2
  803. package/dist/db/schema.d.ts +0 -1
  804. package/dist/db/schema.js +923 -54
  805. package/dist/db/sot-bindings-store.d.ts +0 -1
  806. package/dist/db/sot-bindings-store.js +0 -1
  807. package/dist/db/voice-transcripts-store.d.ts +0 -1
  808. package/dist/db/voice-transcripts-store.js +0 -1
  809. package/dist/db/wiki-store.d.ts +0 -1
  810. package/dist/db/wiki-store.js +3 -1
  811. package/dist/index.d.ts +0 -1
  812. package/dist/index.js +408 -1522
  813. package/dist/init.d.ts +0 -1
  814. package/dist/init.js +0 -2
  815. package/dist/log-buffer.d.ts +0 -1
  816. package/dist/log-buffer.js +0 -2
  817. package/dist/logging.d.ts +0 -1
  818. package/dist/logging.js +0 -2
  819. package/dist/management-rules.d.ts +0 -1
  820. package/dist/management-rules.js +0 -1
  821. package/dist/messaging/browser-task-mcp-notifier.d.ts +77 -0
  822. package/dist/messaging/browser-task-mcp-notifier.js +164 -0
  823. package/dist/messaging/browser-task-screenshot-attachment.d.ts +62 -0
  824. package/dist/messaging/browser-task-screenshot-attachment.js +115 -0
  825. package/dist/messaging/constants.d.ts +0 -1
  826. package/dist/messaging/constants.js +0 -1
  827. package/dist/messaging/final-confirm-system-message-sender.d.ts +53 -0
  828. package/dist/messaging/final-confirm-system-message-sender.js +165 -0
  829. package/dist/messaging/magic-phrase.d.ts +16 -1
  830. package/dist/messaging/magic-phrase.js +60 -3
  831. package/dist/messaging/owner-channels.d.ts +40 -1
  832. package/dist/messaging/owner-channels.js +59 -1
  833. package/dist/messaging/purchase-system-message-sender.d.ts +54 -0
  834. package/dist/messaging/purchase-system-message-sender.js +213 -0
  835. package/dist/messaging/setup-welcome-dm.d.ts +0 -1
  836. package/dist/messaging/setup-welcome-dm.js +0 -1
  837. package/dist/messaging/url-extract.d.ts +0 -1
  838. package/dist/messaging/url-extract.js +5 -1
  839. package/dist/observers/browser-history-poller.d.ts +113 -0
  840. package/dist/observers/browser-history-poller.js +404 -0
  841. package/dist/observers/calendar-poller.d.ts +2 -1
  842. package/dist/observers/calendar-poller.js +76 -55
  843. package/dist/observers/context-index-reconciler-observer.d.ts +0 -1
  844. package/dist/observers/context-index-reconciler-observer.js +0 -1
  845. package/dist/observers/delegated-probe-observer.d.ts +0 -1
  846. package/dist/observers/delegated-probe-observer.js +0 -1
  847. package/dist/observers/delegated-sync-worker.d.ts +70 -10
  848. package/dist/observers/delegated-sync-worker.js +138 -12
  849. package/dist/observers/entity-mirror-observer.d.ts +0 -1
  850. package/dist/observers/entity-mirror-observer.js +0 -1
  851. package/dist/observers/git-delegated-cron.d.ts +0 -1
  852. package/dist/observers/git-delegated-cron.js +0 -1
  853. package/dist/observers/git-event-classifier.d.ts +0 -1
  854. package/dist/observers/git-event-classifier.js +0 -1
  855. package/dist/observers/git-watcher.d.ts +22 -1
  856. package/dist/observers/git-watcher.js +38 -9
  857. package/dist/observers/github-poller-classifier.d.ts +0 -1
  858. package/dist/observers/github-poller-classifier.js +0 -1
  859. package/dist/observers/github-poller.d.ts +3 -1
  860. package/dist/observers/github-poller.js +28 -3
  861. package/dist/observers/imminent-event-scheduler.d.ts +2 -1
  862. package/dist/observers/imminent-event-scheduler.js +30 -2
  863. package/dist/observers/mail-poller.d.ts +0 -1
  864. package/dist/observers/mail-poller.js +45 -18
  865. package/dist/observers/mail-reconciliation.d.ts +1 -2
  866. package/dist/observers/mail-reconciliation.js +1 -2
  867. package/dist/observers/manager.d.ts +7 -8
  868. package/dist/observers/manager.js +7 -8
  869. package/dist/observers/notion-poller.d.ts +2 -1
  870. package/dist/observers/notion-poller.js +44 -7
  871. package/dist/observers/observation-summarizer/index.d.ts +0 -1
  872. package/dist/observers/observation-summarizer/index.js +0 -1
  873. package/dist/observers/observation-summarizer/pre-filter.d.ts +0 -1
  874. package/dist/observers/observation-summarizer/pre-filter.js +0 -1
  875. package/dist/observers/observation-summarizer/response-parser.d.ts +0 -1
  876. package/dist/observers/observation-summarizer/response-parser.js +7 -7
  877. package/dist/observers/observation-summarizer/summarizer-client.d.ts +0 -1
  878. package/dist/observers/observation-summarizer/summarizer-client.js +0 -1
  879. package/dist/observers/observation-summarizer/summarizer-prompts.d.ts +0 -1
  880. package/dist/observers/observation-summarizer/summarizer-prompts.js +0 -1
  881. package/dist/observers/observation-summarizer/worker.d.ts +2 -1
  882. package/dist/observers/observation-summarizer/worker.js +25 -1
  883. package/dist/observers/obsidian-watcher.d.ts +0 -1
  884. package/dist/observers/obsidian-watcher.js +0 -1
  885. package/dist/observers/poll-guard.d.ts +62 -0
  886. package/dist/observers/poll-guard.js +88 -0
  887. package/dist/observers/primary-vault-watcher.d.ts +0 -1
  888. package/dist/observers/primary-vault-watcher.js +0 -1
  889. package/dist/observers/repository-management-cron.d.ts +0 -1
  890. package/dist/observers/repository-management-cron.js +0 -1
  891. package/dist/observers/skill-curation-walker.d.ts +0 -1
  892. package/dist/observers/skill-curation-walker.js +0 -1
  893. package/dist/safety/absolute-block-audit.d.ts +17 -1
  894. package/dist/safety/absolute-block-audit.js +28 -3
  895. package/dist/safety/agent-write-tracker.d.ts +42 -2
  896. package/dist/safety/agent-write-tracker.js +81 -2
  897. package/dist/safety/always-disallowed.d.ts +93 -3
  898. package/dist/safety/always-disallowed.js +504 -20
  899. package/dist/safety/audit.d.ts +37 -6
  900. package/dist/safety/audit.js +263 -15
  901. package/dist/safety/integration-write-tracker.d.ts +0 -1
  902. package/dist/safety/integration-write-tracker.js +0 -1
  903. package/dist/safety/outbound-purchase-guard.d.ts +60 -0
  904. package/dist/safety/outbound-purchase-guard.js +82 -0
  905. package/dist/safety/risk-classifier.d.ts +21 -6
  906. package/dist/safety/risk-classifier.js +296 -70
  907. package/dist/safety/subprocess-block-scanner.d.ts +88 -0
  908. package/dist/safety/subprocess-block-scanner.js +176 -0
  909. package/dist/scheduler/hourly-check-gate.d.ts +23 -10
  910. package/dist/scheduler/hourly-check-gate.js +11 -7
  911. package/dist/secrets/backend-api-key-env.d.ts +0 -1
  912. package/dist/secrets/backend-api-key-env.js +1 -1
  913. package/dist/secrets/codex-home-materializer.d.ts +0 -1
  914. package/dist/secrets/codex-home-materializer.js +0 -1
  915. package/dist/secrets/encrypted-blob-store.d.ts +0 -1
  916. package/dist/secrets/encrypted-blob-store.js +0 -1
  917. package/dist/secrets/platform-secret-store.d.ts +0 -1
  918. package/dist/secrets/platform-secret-store.js +0 -1
  919. package/dist/secrets/redaction.d.ts +0 -1
  920. package/dist/secrets/redaction.js +0 -1
  921. package/dist/secrets/secret-broker.d.ts +0 -2
  922. package/dist/secrets/secret-broker.js +0 -4
  923. package/dist/secrets/secret-names.d.ts +1 -2
  924. package/dist/secrets/secret-names.js +0 -2
  925. package/dist/secrets/secret-store.d.ts +0 -1
  926. package/dist/secrets/secret-store.js +0 -1
  927. package/dist/secrets/types.d.ts +0 -1
  928. package/dist/secrets/types.js +0 -1
  929. package/dist/services/apple-calendar/caldav-client.d.ts +0 -1
  930. package/dist/services/apple-calendar/caldav-client.js +0 -1
  931. package/dist/services/apple-calendar/caldav-codec.d.ts +0 -1
  932. package/dist/services/apple-calendar/caldav-codec.js +0 -1
  933. package/dist/services/apple-calendar/index.d.ts +0 -1
  934. package/dist/services/apple-calendar/index.js +0 -1
  935. package/dist/services/apple-calendar/service.d.ts +0 -1
  936. package/dist/services/apple-calendar/service.js +0 -1
  937. package/dist/services/apple-calendar/types.d.ts +0 -1
  938. package/dist/services/apple-calendar/types.js +0 -1
  939. package/dist/services/attachments/hardlink.d.ts +0 -1
  940. package/dist/services/attachments/hardlink.js +0 -1
  941. package/dist/services/attachments/sanitize.d.ts +0 -1
  942. package/dist/services/attachments/sanitize.js +0 -1
  943. package/dist/services/attachments/store.d.ts +0 -1
  944. package/dist/services/attachments/store.js +1 -3
  945. package/dist/services/browser-history/automation/browser-task-tools/dom-snapshot-output.d.ts +48 -0
  946. package/dist/services/browser-history/automation/browser-task-tools/dom-snapshot-output.js +98 -0
  947. package/dist/services/browser-history/automation/browser-task-tools/extract-cap.d.ts +76 -0
  948. package/dist/services/browser-history/automation/browser-task-tools/extract-cap.js +79 -0
  949. package/dist/services/browser-history/automation/browser-task-tools/extract-output.d.ts +66 -0
  950. package/dist/services/browser-history/automation/browser-task-tools/extract-output.js +69 -0
  951. package/dist/services/browser-history/automation/browser-task-tools/final-confirm-gate.d.ts +129 -0
  952. package/dist/services/browser-history/automation/browser-task-tools/final-confirm-gate.js +150 -0
  953. package/dist/services/browser-history/automation/browser-task-tools/loop-guard.d.ts +95 -0
  954. package/dist/services/browser-history/automation/browser-task-tools/loop-guard.js +123 -0
  955. package/dist/services/browser-history/automation/browser-task-tools/navigate-guard.d.ts +54 -0
  956. package/dist/services/browser-history/automation/browser-task-tools/navigate-guard.js +62 -0
  957. package/dist/services/browser-history/automation/browser-task-tools/schemas.d.ts +201 -0
  958. package/dist/services/browser-history/automation/browser-task-tools/schemas.js +248 -0
  959. package/dist/services/browser-history/automation/browser-task-tools/screenshot-output.d.ts +76 -0
  960. package/dist/services/browser-history/automation/browser-task-tools/screenshot-output.js +101 -0
  961. package/dist/services/browser-history/automation/browser-task-tools/server.d.ts +240 -0
  962. package/dist/services/browser-history/automation/browser-task-tools/server.js +1016 -0
  963. package/dist/services/browser-history/automation/cdp-network-interception.d.ts +74 -0
  964. package/dist/services/browser-history/automation/cdp-network-interception.js +106 -0
  965. package/dist/services/browser-history/automation/egress-denylist.d.ts +167 -0
  966. package/dist/services/browser-history/automation/egress-denylist.js +452 -0
  967. package/dist/services/browser-history/automation/external-content.d.ts +72 -0
  968. package/dist/services/browser-history/automation/external-content.js +0 -0
  969. package/dist/services/browser-history/automation/final-confirm-handler.d.ts +178 -0
  970. package/dist/services/browser-history/automation/final-confirm-handler.js +462 -0
  971. package/dist/services/browser-history/automation/lite-final-confirm-tokens.d.ts +100 -0
  972. package/dist/services/browser-history/automation/lite-final-confirm-tokens.js +126 -0
  973. package/dist/services/browser-history/automation/payment-path-blocker.d.ts +62 -0
  974. package/dist/services/browser-history/automation/payment-path-blocker.js +113 -0
  975. package/dist/services/browser-history/automation/purchase-handler.d.ts +344 -0
  976. package/dist/services/browser-history/automation/purchase-handler.js +666 -0
  977. package/dist/services/browser-history/automation/purchase-tokens.d.ts +265 -0
  978. package/dist/services/browser-history/automation/purchase-tokens.js +271 -0
  979. package/dist/services/browser-history/automation/site-registry.d.ts +176 -0
  980. package/dist/services/browser-history/automation/site-registry.js +290 -0
  981. package/dist/services/browser-history/automation/trace-store-paths.d.ts +80 -0
  982. package/dist/services/browser-history/automation/trace-store-paths.js +119 -0
  983. package/dist/services/browser-history/automation/trace-store.d.ts +29 -0
  984. package/dist/services/browser-history/automation/trace-store.js +63 -0
  985. package/dist/services/browser-history/cleanup-interests-reflection.d.ts +39 -0
  986. package/dist/services/browser-history/cleanup-interests-reflection.js +204 -0
  987. package/dist/services/browser-history/detectors/atlas.d.ts +2 -0
  988. package/dist/services/browser-history/detectors/atlas.js +4 -0
  989. package/dist/services/browser-history/detectors/chrome.d.ts +2 -0
  990. package/dist/services/browser-history/detectors/chrome.js +4 -0
  991. package/dist/services/browser-history/detectors/chromium.d.ts +2 -0
  992. package/dist/services/browser-history/detectors/chromium.js +193 -0
  993. package/dist/services/browser-history/detectors/comet.d.ts +2 -0
  994. package/dist/services/browser-history/detectors/comet.js +4 -0
  995. package/dist/services/browser-history/detectors/registry.d.ts +15 -0
  996. package/dist/services/browser-history/detectors/registry.js +82 -0
  997. package/dist/services/browser-history/history-mtime.d.ts +8 -0
  998. package/dist/services/browser-history/history-mtime.js +31 -0
  999. package/dist/services/browser-history/interests-reflection-lock.d.ts +26 -0
  1000. package/dist/services/browser-history/interests-reflection-lock.js +84 -0
  1001. package/dist/services/browser-history/lifecycle/chromium-install.d.ts +78 -0
  1002. package/dist/services/browser-history/lifecycle/chromium-install.js +206 -0
  1003. package/dist/services/browser-history/lifecycle/chromium-launcher.d.ts +77 -0
  1004. package/dist/services/browser-history/lifecycle/chromium-launcher.js +288 -0
  1005. package/dist/services/browser-history/lifecycle/failure-escalation.d.ts +3 -0
  1006. package/dist/services/browser-history/lifecycle/failure-escalation.js +54 -0
  1007. package/dist/services/browser-history/lifecycle/health-check.d.ts +8 -0
  1008. package/dist/services/browser-history/lifecycle/health-check.js +17 -0
  1009. package/dist/services/browser-history/lifecycle/platform.d.ts +99 -0
  1010. package/dist/services/browser-history/lifecycle/platform.js +597 -0
  1011. package/dist/services/browser-history/lifecycle/supervisor.d.ts +24 -0
  1012. package/dist/services/browser-history/lifecycle/supervisor.js +334 -0
  1013. package/dist/services/browser-history/managed-chromium/cdp-connect.d.ts +110 -0
  1014. package/dist/services/browser-history/managed-chromium/cdp-connect.js +171 -0
  1015. package/dist/services/browser-history/managed-chromium/instance-a-config.d.ts +116 -0
  1016. package/dist/services/browser-history/managed-chromium/instance-a-config.js +164 -0
  1017. package/dist/services/browser-history/managed-chromium/instance-a-launcher.d.ts +82 -0
  1018. package/dist/services/browser-history/managed-chromium/instance-a-launcher.js +200 -0
  1019. package/dist/services/browser-history/managed-chromium/managed-chromium-supervisor.d.ts +69 -0
  1020. package/dist/services/browser-history/managed-chromium/managed-chromium-supervisor.js +334 -0
  1021. package/dist/services/browser-history/managed-chromium/reauth-detector.d.ts +60 -0
  1022. package/dist/services/browser-history/managed-chromium/reauth-detector.js +179 -0
  1023. package/dist/services/browser-history/managed-chromium/sandbox-install.d.ts +69 -0
  1024. package/dist/services/browser-history/managed-chromium/sandbox-install.js +123 -0
  1025. package/dist/services/browser-history/managed-chromium/sandbox-launcher.d.ts +117 -0
  1026. package/dist/services/browser-history/managed-chromium/sandbox-launcher.js +244 -0
  1027. package/dist/services/browser-history/managed-chromium/setup-bootstrap.d.ts +149 -0
  1028. package/dist/services/browser-history/managed-chromium/setup-bootstrap.js +404 -0
  1029. package/dist/services/browser-history/managed-chromium/site-bootstrap.d.ts +133 -0
  1030. package/dist/services/browser-history/managed-chromium/site-bootstrap.js +360 -0
  1031. package/dist/services/browser-history/managed-chromium/supervisor-config.d.ts +75 -0
  1032. package/dist/services/browser-history/managed-chromium/supervisor-config.js +146 -0
  1033. package/dist/services/browser-history/managed-chromium/types.d.ts +199 -0
  1034. package/dist/services/browser-history/managed-chromium/types.js +116 -0
  1035. package/dist/services/browser-history/pipeline/amazon-extractor.d.ts +11 -0
  1036. package/dist/services/browser-history/pipeline/amazon-extractor.js +33 -0
  1037. package/dist/services/browser-history/pipeline/classifier.d.ts +7 -0
  1038. package/dist/services/browser-history/pipeline/classifier.js +208 -0
  1039. package/dist/services/browser-history/pipeline/cluster-extractor.d.ts +76 -0
  1040. package/dist/services/browser-history/pipeline/cluster-extractor.js +271 -0
  1041. package/dist/services/browser-history/pipeline/interests-block.d.ts +99 -0
  1042. package/dist/services/browser-history/pipeline/interests-block.js +333 -0
  1043. package/dist/services/browser-history/pipeline/meaningful-filter.d.ts +47 -0
  1044. package/dist/services/browser-history/pipeline/meaningful-filter.js +228 -0
  1045. package/dist/services/browser-history/pipeline/offer-rate-limit.d.ts +75 -0
  1046. package/dist/services/browser-history/pipeline/offer-rate-limit.js +188 -0
  1047. package/dist/services/browser-history/pipeline/offer-triggers.d.ts +150 -0
  1048. package/dist/services/browser-history/pipeline/offer-triggers.js +164 -0
  1049. package/dist/services/browser-history/pipeline/pre-morning-digest.d.ts +118 -0
  1050. package/dist/services/browser-history/pipeline/pre-morning-digest.js +399 -0
  1051. package/dist/services/browser-history/pipeline/project-matcher.d.ts +26 -0
  1052. package/dist/services/browser-history/pipeline/project-matcher.js +314 -0
  1053. package/dist/services/browser-history/pipeline/redactor.d.ts +15 -0
  1054. package/dist/services/browser-history/pipeline/redactor.js +119 -0
  1055. package/dist/services/browser-history/pipeline/reload-detector.d.ts +6 -0
  1056. package/dist/services/browser-history/pipeline/reload-detector.js +16 -0
  1057. package/dist/services/browser-history/pipeline/sensitive-hosts.d.ts +2 -0
  1058. package/dist/services/browser-history/pipeline/sensitive-hosts.js +173 -0
  1059. package/dist/services/browser-history/pipeline/summarizer.d.ts +52 -0
  1060. package/dist/services/browser-history/pipeline/summarizer.js +97 -0
  1061. package/dist/services/browser-history/pipeline/weekly-interests-summary.d.ts +139 -0
  1062. package/dist/services/browser-history/pipeline/weekly-interests-summary.js +227 -0
  1063. package/dist/services/browser-history/readers/chromium-reader.d.ts +30 -0
  1064. package/dist/services/browser-history/readers/chromium-reader.js +139 -0
  1065. package/dist/services/browser-history/readers/snapshot.d.ts +19 -0
  1066. package/dist/services/browser-history/readers/snapshot.js +67 -0
  1067. package/dist/services/browser-history/refresh-interests-reflection.d.ts +125 -0
  1068. package/dist/services/browser-history/refresh-interests-reflection.js +424 -0
  1069. package/dist/services/browser-history/types.d.ts +60 -0
  1070. package/dist/services/browser-history/types.js +1 -0
  1071. package/dist/services/browser-task/browser-task-allowlist.d.ts +107 -0
  1072. package/dist/services/browser-task/browser-task-allowlist.js +247 -0
  1073. package/dist/services/browser-task/browser-task-deadline-scanner.d.ts +76 -0
  1074. package/dist/services/browser-task/browser-task-deadline-scanner.js +68 -0
  1075. package/dist/services/browser-task/browser-task-driver.d.ts +188 -0
  1076. package/dist/services/browser-task/browser-task-driver.js +714 -0
  1077. package/dist/services/browser-task/browser-task-runner.d.ts +166 -0
  1078. package/dist/services/browser-task/browser-task-runner.js +781 -0
  1079. package/dist/services/browser-task/browser-task-slots.d.ts +212 -0
  1080. package/dist/services/browser-task/browser-task-slots.js +404 -0
  1081. package/dist/services/browser-task/browser-task-transition-events.d.ts +76 -0
  1082. package/dist/services/browser-task/browser-task-transition-events.js +80 -0
  1083. package/dist/services/calendar/outlook/graph-calendar-client.d.ts +0 -1
  1084. package/dist/services/calendar/outlook/graph-calendar-client.js +0 -1
  1085. package/dist/services/calendar.d.ts +0 -1
  1086. package/dist/services/calendar.js +21 -16
  1087. package/dist/services/delegated-backend-invoker.d.ts +0 -1
  1088. package/dist/services/delegated-backend-invoker.js +8 -2
  1089. package/dist/services/delegated-invoker-audit.d.ts +0 -1
  1090. package/dist/services/delegated-invoker-audit.js +5 -2
  1091. package/dist/services/delegated-invoker-cache-hits.d.ts +0 -1
  1092. package/dist/services/delegated-invoker-cache-hits.js +0 -1
  1093. package/dist/services/delegated-invoker-janitors.d.ts +0 -1
  1094. package/dist/services/delegated-invoker-janitors.js +0 -1
  1095. package/dist/services/delegated-invoker-utils.d.ts +0 -1
  1096. package/dist/services/delegated-invoker-utils.js +0 -1
  1097. package/dist/services/delegated-proxy-config.d.ts +3 -3
  1098. package/dist/services/delegated-proxy-config.js +0 -1
  1099. package/dist/services/delegated-task-result-cache.d.ts +0 -1
  1100. package/dist/services/delegated-task-result-cache.js +0 -0
  1101. package/dist/services/delegated-task-runtime.d.ts +0 -1
  1102. package/dist/services/delegated-task-runtime.js +0 -1
  1103. package/dist/services/delegated-task-session-pool.d.ts +0 -1
  1104. package/dist/services/delegated-task-session-pool.js +0 -1
  1105. package/dist/services/delegated-tool-runtime.d.ts +0 -1
  1106. package/dist/services/delegated-tool-runtime.js +0 -1
  1107. package/dist/services/fts5.d.ts +0 -1
  1108. package/dist/services/fts5.js +0 -1
  1109. package/dist/services/git-account-registry.d.ts +0 -1
  1110. package/dist/services/git-account-registry.js +0 -1
  1111. package/dist/services/github.d.ts +9 -40
  1112. package/dist/services/github.js +9 -107
  1113. package/dist/services/gmail-classifier.d.ts +0 -1
  1114. package/dist/services/gmail-classifier.js +0 -1
  1115. package/dist/services/gmail.d.ts +0 -1
  1116. package/dist/services/gmail.js +31 -52
  1117. package/dist/services/google-auth.d.ts +0 -1
  1118. package/dist/services/google-auth.js +0 -1
  1119. package/dist/services/integrations/extract-write-item-id.d.ts +5 -3
  1120. package/dist/services/integrations/extract-write-item-id.js +6 -1
  1121. package/dist/services/integrations/reconcile.d.ts +0 -1
  1122. package/dist/services/integrations/reconcile.js +0 -1
  1123. package/dist/services/integrations/snapshot-partitions.d.ts +0 -1
  1124. package/dist/services/integrations/snapshot-partitions.js +8 -1
  1125. package/dist/services/journal/render.d.ts +0 -1
  1126. package/dist/services/journal/render.js +0 -1
  1127. package/dist/services/journal/writer.d.ts +0 -1
  1128. package/dist/services/journal/writer.js +0 -1
  1129. package/dist/services/mail/account-registry.d.ts +0 -1
  1130. package/dist/services/mail/account-registry.js +7 -3
  1131. package/dist/services/mail/gmail/auth-failure-classifier.d.ts +0 -1
  1132. package/dist/services/mail/gmail/auth-failure-classifier.js +0 -1
  1133. package/dist/services/mail/gmail/gmail-provider.d.ts +0 -1
  1134. package/dist/services/mail/gmail/gmail-provider.js +0 -1
  1135. package/dist/services/mail/gmail/legacy-row.d.ts +0 -1
  1136. package/dist/services/mail/gmail/legacy-row.js +0 -1
  1137. package/dist/services/mail/gmail/poll-cursor.d.ts +0 -1
  1138. package/dist/services/mail/gmail/poll-cursor.js +0 -1
  1139. package/dist/services/mail/html-to-plaintext.d.ts +0 -1
  1140. package/dist/services/mail/html-to-plaintext.js +0 -1
  1141. package/dist/services/mail/imap/app-password.d.ts +0 -1
  1142. package/dist/services/mail/imap/app-password.js +0 -1
  1143. package/dist/services/mail/imap/auth-failure-classifier.d.ts +0 -1
  1144. package/dist/services/mail/imap/auth-failure-classifier.js +0 -1
  1145. package/dist/services/mail/imap/capabilities.d.ts +0 -1
  1146. package/dist/services/mail/imap/capabilities.js +0 -1
  1147. package/dist/services/mail/imap/client.d.ts +0 -1
  1148. package/dist/services/mail/imap/client.js +0 -1
  1149. package/dist/services/mail/imap/cursor.d.ts +0 -1
  1150. package/dist/services/mail/imap/cursor.js +0 -1
  1151. package/dist/services/mail/imap/folder-resolver.d.ts +0 -1
  1152. package/dist/services/mail/imap/folder-resolver.js +0 -1
  1153. package/dist/services/mail/imap/icloud-provider.d.ts +0 -1
  1154. package/dist/services/mail/imap/icloud-provider.js +0 -1
  1155. package/dist/services/mail/imap/imap-provider-base.d.ts +0 -1
  1156. package/dist/services/mail/imap/imap-provider-base.js +12 -7
  1157. package/dist/services/mail/imap/query-translator.d.ts +0 -1
  1158. package/dist/services/mail/imap/query-translator.js +0 -1
  1159. package/dist/services/mail/imap/reconcile-planner.d.ts +0 -1
  1160. package/dist/services/mail/imap/reconcile-planner.js +0 -1
  1161. package/dist/services/mail/imap/reply-mime.d.ts +0 -1
  1162. package/dist/services/mail/imap/reply-mime.js +0 -1
  1163. package/dist/services/mail/imap/yahoo-provider.d.ts +0 -1
  1164. package/dist/services/mail/imap/yahoo-provider.js +0 -1
  1165. package/dist/services/mail/mail-search.d.ts +0 -1
  1166. package/dist/services/mail/mail-search.js +0 -1
  1167. package/dist/services/mail/outlook/auth-failure-classifier.d.ts +0 -1
  1168. package/dist/services/mail/outlook/auth-failure-classifier.js +0 -1
  1169. package/dist/services/mail/outlook/client-config.d.ts +0 -1
  1170. package/dist/services/mail/outlook/client-config.js +0 -1
  1171. package/dist/services/mail/outlook/delta-cursor.d.ts +0 -1
  1172. package/dist/services/mail/outlook/delta-cursor.js +0 -1
  1173. package/dist/services/mail/outlook/graph-client.d.ts +0 -1
  1174. package/dist/services/mail/outlook/graph-client.js +0 -1
  1175. package/dist/services/mail/outlook/msal-app-factory.d.ts +0 -1
  1176. package/dist/services/mail/outlook/msal-app-factory.js +0 -1
  1177. package/dist/services/mail/outlook/msal-cache-plugin.d.ts +0 -1
  1178. package/dist/services/mail/outlook/msal-cache-plugin.js +0 -1
  1179. package/dist/services/mail/outlook/oauth-device-code.d.ts +0 -1
  1180. package/dist/services/mail/outlook/oauth-device-code.js +0 -1
  1181. package/dist/services/mail/outlook/oauth-loopback.d.ts +0 -1
  1182. package/dist/services/mail/outlook/oauth-loopback.js +0 -1
  1183. package/dist/services/mail/outlook/outlook-provider.d.ts +0 -1
  1184. package/dist/services/mail/outlook/outlook-provider.js +0 -1
  1185. package/dist/services/mail/outlook/query-translator.d.ts +0 -1
  1186. package/dist/services/mail/outlook/query-translator.js +0 -1
  1187. package/dist/services/mail/provider.d.ts +0 -1
  1188. package/dist/services/mail/provider.js +0 -1
  1189. package/dist/services/mail/query-utils.d.ts +0 -1
  1190. package/dist/services/mail/query-utils.js +0 -1
  1191. package/dist/services/mail-classifier.d.ts +0 -1
  1192. package/dist/services/mail-classifier.js +0 -1
  1193. package/dist/services/mail-ingestion.d.ts +0 -1
  1194. package/dist/services/mail-ingestion.js +0 -1
  1195. package/dist/services/mcp/auto-probe.d.ts +0 -1
  1196. package/dist/services/mcp/auto-probe.js +0 -1
  1197. package/dist/services/mcp/generators/claude.d.ts +0 -1
  1198. package/dist/services/mcp/generators/claude.js +0 -1
  1199. package/dist/services/mcp/generators/codex.d.ts +0 -1
  1200. package/dist/services/mcp/generators/codex.js +0 -1
  1201. package/dist/services/mcp/generators/gemini.d.ts +0 -1
  1202. package/dist/services/mcp/generators/gemini.js +0 -1
  1203. package/dist/services/mcp/generators/index.d.ts +1 -1
  1204. package/dist/services/mcp/generators/index.js +3 -1
  1205. package/dist/services/mcp/generators/types.d.ts +0 -1
  1206. package/dist/services/mcp/generators/types.js +0 -1
  1207. package/dist/services/mcp/probe.d.ts +0 -1
  1208. package/dist/services/mcp/probe.js +7 -1
  1209. package/dist/services/mcp/registry.d.ts +0 -1
  1210. package/dist/services/mcp/registry.js +0 -1
  1211. package/dist/services/mcp/risk.d.ts +1 -2
  1212. package/dist/services/mcp/risk.js +1 -2
  1213. package/dist/services/mcp/sdk-observations-server.d.ts +59 -0
  1214. package/dist/services/mcp/sdk-observations-server.js +160 -0
  1215. package/dist/services/mcp/session-materializer.d.ts +2 -3
  1216. package/dist/services/mcp/session-materializer.js +15 -12
  1217. package/dist/services/mcp/tool-audit.d.ts +0 -1
  1218. package/dist/services/mcp/tool-audit.js +0 -1
  1219. package/dist/services/mcp/types.d.ts +1 -1
  1220. package/dist/services/mcp/types.js +0 -1
  1221. package/dist/services/notion.d.ts +17 -2
  1222. package/dist/services/notion.js +39 -3
  1223. package/dist/services/observations-batch.d.ts +98 -0
  1224. package/dist/services/observations-batch.js +256 -0
  1225. package/dist/services/obsidian.d.ts +0 -1
  1226. package/dist/services/obsidian.js +0 -1
  1227. package/dist/services/service-registry.d.ts +0 -3
  1228. package/dist/services/service-registry.js +0 -2
  1229. package/dist/services/voice/transcriber-impl.d.ts +0 -1
  1230. package/dist/services/voice/transcriber-impl.js +21 -20
  1231. package/dist/services/voice/transcriber.d.ts +22 -2
  1232. package/dist/services/voice/transcriber.js +68 -11
  1233. package/dist/settings/runtime-settings.d.ts +52 -8
  1234. package/dist/settings/runtime-settings.js +172 -20
  1235. package/dist/settings/settings-store.d.ts +0 -1
  1236. package/dist/settings/settings-store.js +44 -2
  1237. package/native/win-appcontainer/README.md +66 -0
  1238. package/native/win-appcontainer/binding.gyp +33 -0
  1239. package/native/win-appcontainer/loader.js +29 -0
  1240. package/native/win-appcontainer/package.json +18 -0
  1241. package/native/win-appcontainer/src/win_appcontainer.cc +67 -0
  1242. package/package.json +8 -3
  1243. package/dist/adapters/composite-dashboard-stream.d.ts.map +0 -1
  1244. package/dist/adapters/composite-dashboard-stream.js.map +0 -1
  1245. package/dist/adapters/dashboard-adapter.d.ts.map +0 -1
  1246. package/dist/adapters/dashboard-adapter.js.map +0 -1
  1247. package/dist/adapters/discord.d.ts.map +0 -1
  1248. package/dist/adapters/discord.js.map +0 -1
  1249. package/dist/adapters/docs-qa-adapter.d.ts.map +0 -1
  1250. package/dist/adapters/docs-qa-adapter.js.map +0 -1
  1251. package/dist/adapters/message-hub.d.ts.map +0 -1
  1252. package/dist/adapters/message-hub.js.map +0 -1
  1253. package/dist/adapters/notification-manager.d.ts.map +0 -1
  1254. package/dist/adapters/notification-manager.js.map +0 -1
  1255. package/dist/adapters/outbound-text.d.ts.map +0 -1
  1256. package/dist/adapters/outbound-text.js.map +0 -1
  1257. package/dist/adapters/slack-adapter.d.ts.map +0 -1
  1258. package/dist/adapters/slack-adapter.js.map +0 -1
  1259. package/dist/adapters/telegram-adapter.d.ts.map +0 -1
  1260. package/dist/adapters/telegram-adapter.js.map +0 -1
  1261. package/dist/adapters/types.d.ts.map +0 -1
  1262. package/dist/adapters/types.js.map +0 -1
  1263. package/dist/adapters/whatsapp-adapter.d.ts.map +0 -1
  1264. package/dist/adapters/whatsapp-adapter.js.map +0 -1
  1265. package/dist/api/chat-binding-query.d.ts.map +0 -1
  1266. package/dist/api/chat-binding-query.js.map +0 -1
  1267. package/dist/api/chat-session-resume.d.ts.map +0 -1
  1268. package/dist/api/chat-session-resume.js.map +0 -1
  1269. package/dist/api/delegated-proxy-helper.d.ts +0 -33
  1270. package/dist/api/delegated-proxy-helper.d.ts.map +0 -1
  1271. package/dist/api/delegated-proxy-helper.js +0 -54
  1272. package/dist/api/delegated-proxy-helper.js.map +0 -1
  1273. package/dist/api/directory-picker.d.ts.map +0 -1
  1274. package/dist/api/directory-picker.js.map +0 -1
  1275. package/dist/api/env-writer.d.ts.map +0 -1
  1276. package/dist/api/env-writer.js.map +0 -1
  1277. package/dist/api/integration-route-gate.d.ts.map +0 -1
  1278. package/dist/api/integration-route-gate.js.map +0 -1
  1279. package/dist/api/json-body.d.ts.map +0 -1
  1280. package/dist/api/json-body.js.map +0 -1
  1281. package/dist/api/routes/activity-sources.d.ts.map +0 -1
  1282. package/dist/api/routes/activity-sources.js.map +0 -1
  1283. package/dist/api/routes/agent.d.ts.map +0 -1
  1284. package/dist/api/routes/agent.js.map +0 -1
  1285. package/dist/api/routes/apple-calendar.d.ts.map +0 -1
  1286. package/dist/api/routes/apple-calendar.js.map +0 -1
  1287. package/dist/api/routes/attachments.d.ts.map +0 -1
  1288. package/dist/api/routes/attachments.js.map +0 -1
  1289. package/dist/api/routes/backends.d.ts.map +0 -1
  1290. package/dist/api/routes/backends.js.map +0 -1
  1291. package/dist/api/routes/books.d.ts.map +0 -1
  1292. package/dist/api/routes/books.js.map +0 -1
  1293. package/dist/api/routes/calendar.d.ts.map +0 -1
  1294. package/dist/api/routes/calendar.js.map +0 -1
  1295. package/dist/api/routes/commands.d.ts.map +0 -1
  1296. package/dist/api/routes/commands.js.map +0 -1
  1297. package/dist/api/routes/context.d.ts +0 -57
  1298. package/dist/api/routes/context.d.ts.map +0 -1
  1299. package/dist/api/routes/context.js +0 -1788
  1300. package/dist/api/routes/context.js.map +0 -1
  1301. package/dist/api/routes/dashboard.d.ts +0 -29
  1302. package/dist/api/routes/dashboard.d.ts.map +0 -1
  1303. package/dist/api/routes/dashboard.js +0 -2160
  1304. package/dist/api/routes/dashboard.js.map +0 -1
  1305. package/dist/api/routes/delegated-sync.d.ts.map +0 -1
  1306. package/dist/api/routes/delegated-sync.js.map +0 -1
  1307. package/dist/api/routes/delegated.d.ts.map +0 -1
  1308. package/dist/api/routes/delegated.js.map +0 -1
  1309. package/dist/api/routes/docs.d.ts.map +0 -1
  1310. package/dist/api/routes/docs.js.map +0 -1
  1311. package/dist/api/routes/entities.d.ts.map +0 -1
  1312. package/dist/api/routes/entities.js.map +0 -1
  1313. package/dist/api/routes/fs.d.ts.map +0 -1
  1314. package/dist/api/routes/fs.js.map +0 -1
  1315. package/dist/api/routes/fs.logic.d.ts.map +0 -1
  1316. package/dist/api/routes/fs.logic.js.map +0 -1
  1317. package/dist/api/routes/git-accounts.d.ts.map +0 -1
  1318. package/dist/api/routes/git-accounts.js.map +0 -1
  1319. package/dist/api/routes/git-templates.d.ts.map +0 -1
  1320. package/dist/api/routes/git-templates.js.map +0 -1
  1321. package/dist/api/routes/git.d.ts.map +0 -1
  1322. package/dist/api/routes/git.js.map +0 -1
  1323. package/dist/api/routes/github.d.ts.map +0 -1
  1324. package/dist/api/routes/github.js.map +0 -1
  1325. package/dist/api/routes/health.d.ts.map +0 -1
  1326. package/dist/api/routes/health.js.map +0 -1
  1327. package/dist/api/routes/integrations-reconcile.d.ts.map +0 -1
  1328. package/dist/api/routes/integrations-reconcile.js.map +0 -1
  1329. package/dist/api/routes/integrations.d.ts +0 -48
  1330. package/dist/api/routes/integrations.d.ts.map +0 -1
  1331. package/dist/api/routes/integrations.js +0 -1572
  1332. package/dist/api/routes/integrations.js.map +0 -1
  1333. package/dist/api/routes/knowledge.d.ts.map +0 -1
  1334. package/dist/api/routes/knowledge.js.map +0 -1
  1335. package/dist/api/routes/mail.d.ts +0 -39
  1336. package/dist/api/routes/mail.d.ts.map +0 -1
  1337. package/dist/api/routes/mail.js +0 -1472
  1338. package/dist/api/routes/mail.js.map +0 -1
  1339. package/dist/api/routes/managed-tasks.d.ts.map +0 -1
  1340. package/dist/api/routes/managed-tasks.js.map +0 -1
  1341. package/dist/api/routes/mcp.d.ts.map +0 -1
  1342. package/dist/api/routes/mcp.js.map +0 -1
  1343. package/dist/api/routes/metrics.d.ts.map +0 -1
  1344. package/dist/api/routes/metrics.js.map +0 -1
  1345. package/dist/api/routes/notion.d.ts.map +0 -1
  1346. package/dist/api/routes/notion.js.map +0 -1
  1347. package/dist/api/routes/observations.d.ts.map +0 -1
  1348. package/dist/api/routes/observations.js.map +0 -1
  1349. package/dist/api/routes/obsidian.d.ts.map +0 -1
  1350. package/dist/api/routes/obsidian.js.map +0 -1
  1351. package/dist/api/routes/profile-questions.d.ts.map +0 -1
  1352. package/dist/api/routes/profile-questions.js.map +0 -1
  1353. package/dist/api/routes/receipts.d.ts.map +0 -1
  1354. package/dist/api/routes/receipts.js.map +0 -1
  1355. package/dist/api/routes/recurring-schedules.d.ts.map +0 -1
  1356. package/dist/api/routes/recurring-schedules.js.map +0 -1
  1357. package/dist/api/routes/repositories.d.ts.map +0 -1
  1358. package/dist/api/routes/repositories.js.map +0 -1
  1359. package/dist/api/routes/setup-migrate.d.ts.map +0 -1
  1360. package/dist/api/routes/setup-migrate.js.map +0 -1
  1361. package/dist/api/routes/setup.d.ts.map +0 -1
  1362. package/dist/api/routes/setup.js.map +0 -1
  1363. package/dist/api/routes/skill-curation.d.ts.map +0 -1
  1364. package/dist/api/routes/skill-curation.js.map +0 -1
  1365. package/dist/api/routes/skills.d.ts.map +0 -1
  1366. package/dist/api/routes/skills.js.map +0 -1
  1367. package/dist/api/routes/sot-bindings.d.ts.map +0 -1
  1368. package/dist/api/routes/sot-bindings.js.map +0 -1
  1369. package/dist/api/routes/sse.d.ts.map +0 -1
  1370. package/dist/api/routes/sse.js.map +0 -1
  1371. package/dist/api/routes/system.d.ts.map +0 -1
  1372. package/dist/api/routes/system.js.map +0 -1
  1373. package/dist/api/routes/task-flows.d.ts.map +0 -1
  1374. package/dist/api/routes/task-flows.js.map +0 -1
  1375. package/dist/api/routes/travel-bookings.d.ts.map +0 -1
  1376. package/dist/api/routes/travel-bookings.js.map +0 -1
  1377. package/dist/api/routes/travel-time.d.ts +0 -8
  1378. package/dist/api/routes/travel-time.d.ts.map +0 -1
  1379. package/dist/api/routes/travel-time.js +0 -87
  1380. package/dist/api/routes/travel-time.js.map +0 -1
  1381. package/dist/api/routes/triggers.d.ts.map +0 -1
  1382. package/dist/api/routes/triggers.js.map +0 -1
  1383. package/dist/api/routes/voice.d.ts.map +0 -1
  1384. package/dist/api/routes/voice.js.map +0 -1
  1385. package/dist/api/routes/wiki.d.ts.map +0 -1
  1386. package/dist/api/routes/wiki.js.map +0 -1
  1387. package/dist/api/server.d.ts.map +0 -1
  1388. package/dist/api/server.js.map +0 -1
  1389. package/dist/bootstrap/adapters.d.ts.map +0 -1
  1390. package/dist/bootstrap/adapters.js.map +0 -1
  1391. package/dist/bootstrap/catchup.d.ts.map +0 -1
  1392. package/dist/bootstrap/catchup.js.map +0 -1
  1393. package/dist/bootstrap/schedule-helpers.d.ts.map +0 -1
  1394. package/dist/bootstrap/schedule-helpers.js.map +0 -1
  1395. package/dist/bootstrap/services.d.ts.map +0 -1
  1396. package/dist/bootstrap/services.js.map +0 -1
  1397. package/dist/config.d.ts.map +0 -1
  1398. package/dist/config.js.map +0 -1
  1399. package/dist/core/agent-core.d.ts.map +0 -1
  1400. package/dist/core/agent-core.js.map +0 -1
  1401. package/dist/core/alerts.d.ts.map +0 -1
  1402. package/dist/core/alerts.js.map +0 -1
  1403. package/dist/core/atomic-write.d.ts.map +0 -1
  1404. package/dist/core/atomic-write.js.map +0 -1
  1405. package/dist/core/backends/api-key-probe.d.ts.map +0 -1
  1406. package/dist/core/backends/api-key-probe.js.map +0 -1
  1407. package/dist/core/backends/auth-health-monitor.d.ts.map +0 -1
  1408. package/dist/core/backends/auth-health-monitor.js.map +0 -1
  1409. package/dist/core/backends/auth-recovery.d.ts.map +0 -1
  1410. package/dist/core/backends/auth-recovery.js.map +0 -1
  1411. package/dist/core/backends/auth-telemetry.d.ts.map +0 -1
  1412. package/dist/core/backends/auth-telemetry.js.map +0 -1
  1413. package/dist/core/backends/backend-router.d.ts.map +0 -1
  1414. package/dist/core/backends/backend-router.js.map +0 -1
  1415. package/dist/core/backends/claude-auth.d.ts.map +0 -1
  1416. package/dist/core/backends/claude-auth.js.map +0 -1
  1417. package/dist/core/backends/claude-code-core.d.ts.map +0 -1
  1418. package/dist/core/backends/claude-code-core.js.map +0 -1
  1419. package/dist/core/backends/claude-credentials-store.d.ts.map +0 -1
  1420. package/dist/core/backends/claude-credentials-store.js.map +0 -1
  1421. package/dist/core/backends/claude-delegated.d.ts.map +0 -1
  1422. package/dist/core/backends/claude-delegated.js.map +0 -1
  1423. package/dist/core/backends/claude-errors.d.ts.map +0 -1
  1424. package/dist/core/backends/claude-errors.js.map +0 -1
  1425. package/dist/core/backends/claude-probe.d.ts.map +0 -1
  1426. package/dist/core/backends/claude-probe.js.map +0 -1
  1427. package/dist/core/backends/claude-tool-collection.d.ts.map +0 -1
  1428. package/dist/core/backends/claude-tool-collection.js.map +0 -1
  1429. package/dist/core/backends/cli-utils.d.ts.map +0 -1
  1430. package/dist/core/backends/cli-utils.js.map +0 -1
  1431. package/dist/core/backends/codex-core.d.ts.map +0 -1
  1432. package/dist/core/backends/codex-core.js.map +0 -1
  1433. package/dist/core/backends/gemini-cli-core.d.ts.map +0 -1
  1434. package/dist/core/backends/gemini-cli-core.js.map +0 -1
  1435. package/dist/core/backends/idle-watchdog.d.ts.map +0 -1
  1436. package/dist/core/backends/idle-watchdog.js.map +0 -1
  1437. package/dist/core/backends/install-methods.d.ts.map +0 -1
  1438. package/dist/core/backends/install-methods.js.map +0 -1
  1439. package/dist/core/backends/model-registry.d.ts.map +0 -1
  1440. package/dist/core/backends/model-registry.js.map +0 -1
  1441. package/dist/core/backends/plan-presets.d.ts.map +0 -1
  1442. package/dist/core/backends/plan-presets.js.map +0 -1
  1443. package/dist/core/backends/price-fetcher.d.ts.map +0 -1
  1444. package/dist/core/backends/price-fetcher.js.map +0 -1
  1445. package/dist/core/backends/process-config-cascade.d.ts.map +0 -1
  1446. package/dist/core/backends/process-config-cascade.js.map +0 -1
  1447. package/dist/core/backends/prompt-utils.d.ts.map +0 -1
  1448. package/dist/core/backends/prompt-utils.js.map +0 -1
  1449. package/dist/core/backends/proxy-model-registry.d.ts.map +0 -1
  1450. package/dist/core/backends/proxy-model-registry.js.map +0 -1
  1451. package/dist/core/backends/silent-api-error-detector.d.ts.map +0 -1
  1452. package/dist/core/backends/silent-api-error-detector.js.map +0 -1
  1453. package/dist/core/bang-commands/commands-cost.d.ts.map +0 -1
  1454. package/dist/core/bang-commands/commands-cost.js.map +0 -1
  1455. package/dist/core/bang-commands/commands-help.d.ts.map +0 -1
  1456. package/dist/core/bang-commands/commands-help.js.map +0 -1
  1457. package/dist/core/bang-commands/commands-report.d.ts.map +0 -1
  1458. package/dist/core/bang-commands/commands-report.js.map +0 -1
  1459. package/dist/core/bang-commands/commands-stop-start.d.ts.map +0 -1
  1460. package/dist/core/bang-commands/commands-stop-start.js.map +0 -1
  1461. package/dist/core/bang-commands/commands-wiki.d.ts.map +0 -1
  1462. package/dist/core/bang-commands/commands-wiki.js.map +0 -1
  1463. package/dist/core/bang-commands/format-utils.d.ts.map +0 -1
  1464. package/dist/core/bang-commands/format-utils.js.map +0 -1
  1465. package/dist/core/bang-commands/index.d.ts.map +0 -1
  1466. package/dist/core/bang-commands/index.js.map +0 -1
  1467. package/dist/core/bang-commands/registry.d.ts.map +0 -1
  1468. package/dist/core/bang-commands/registry.js.map +0 -1
  1469. package/dist/core/bang-commands/user-commands.d.ts.map +0 -1
  1470. package/dist/core/bang-commands/user-commands.js.map +0 -1
  1471. package/dist/core/channel-timeline.d.ts.map +0 -1
  1472. package/dist/core/channel-timeline.js.map +0 -1
  1473. package/dist/core/character-block.d.ts.map +0 -1
  1474. package/dist/core/character-block.js.map +0 -1
  1475. package/dist/core/context/activity-sources.d.ts.map +0 -1
  1476. package/dist/core/context/activity-sources.js.map +0 -1
  1477. package/dist/core/context/activity-view-reconciler.d.ts.map +0 -1
  1478. package/dist/core/context/activity-view-reconciler.js.map +0 -1
  1479. package/dist/core/context/activity-view-runner.d.ts.map +0 -1
  1480. package/dist/core/context/activity-view-runner.js.map +0 -1
  1481. package/dist/core/context/default-schedules-reconciler.d.ts.map +0 -1
  1482. package/dist/core/context/default-schedules-reconciler.js.map +0 -1
  1483. package/dist/core/context/default-schedules-runner.d.ts.map +0 -1
  1484. package/dist/core/context/default-schedules-runner.js.map +0 -1
  1485. package/dist/core/context/domain-index-reconciler.d.ts.map +0 -1
  1486. package/dist/core/context/domain-index-reconciler.js.map +0 -1
  1487. package/dist/core/context/domain-index-runner.d.ts.map +0 -1
  1488. package/dist/core/context/domain-index-runner.js.map +0 -1
  1489. package/dist/core/context/entity-mirror.d.ts.map +0 -1
  1490. package/dist/core/context/entity-mirror.js.map +0 -1
  1491. package/dist/core/context/entity-source-rename.d.ts.map +0 -1
  1492. package/dist/core/context/entity-source-rename.js.map +0 -1
  1493. package/dist/core/context/index-reconciler.d.ts.map +0 -1
  1494. package/dist/core/context/index-reconciler.js.map +0 -1
  1495. package/dist/core/context/policy-index-reconciler.d.ts.map +0 -1
  1496. package/dist/core/context/policy-index-reconciler.js.map +0 -1
  1497. package/dist/core/context/policy-index-runner.d.ts.map +0 -1
  1498. package/dist/core/context/policy-index-runner.js.map +0 -1
  1499. package/dist/core/context/reconciler-runner.d.ts.map +0 -1
  1500. package/dist/core/context/reconciler-runner.js.map +0 -1
  1501. package/dist/core/context-builder.d.ts.map +0 -1
  1502. package/dist/core/context-builder.js.map +0 -1
  1503. package/dist/core/context-frontmatter-backfill.d.ts +0 -33
  1504. package/dist/core/context-frontmatter-backfill.d.ts.map +0 -1
  1505. package/dist/core/context-frontmatter-backfill.js +0 -111
  1506. package/dist/core/context-frontmatter-backfill.js.map +0 -1
  1507. package/dist/core/context-frontmatter.d.ts.map +0 -1
  1508. package/dist/core/context-frontmatter.js.map +0 -1
  1509. package/dist/core/context-health.d.ts.map +0 -1
  1510. package/dist/core/context-health.js.map +0 -1
  1511. package/dist/core/context-paths.d.ts.map +0 -1
  1512. package/dist/core/context-paths.js.map +0 -1
  1513. package/dist/core/context-staleness.d.ts.map +0 -1
  1514. package/dist/core/context-staleness.js.map +0 -1
  1515. package/dist/core/custom-routine-scheduler.d.ts.map +0 -1
  1516. package/dist/core/custom-routine-scheduler.js.map +0 -1
  1517. package/dist/core/daemon-api-cli.d.ts.map +0 -1
  1518. package/dist/core/daemon-api-cli.js.map +0 -1
  1519. package/dist/core/dashboard-session-cleanup.d.ts.map +0 -1
  1520. package/dist/core/dashboard-session-cleanup.js.map +0 -1
  1521. package/dist/core/dashboard-session-controls.d.ts.map +0 -1
  1522. package/dist/core/dashboard-session-controls.js.map +0 -1
  1523. package/dist/core/delegated-connector-health.d.ts.map +0 -1
  1524. package/dist/core/delegated-connector-health.js.map +0 -1
  1525. package/dist/core/dispatcher-date-utils.d.ts.map +0 -1
  1526. package/dist/core/dispatcher-date-utils.js.map +0 -1
  1527. package/dist/core/dispatcher-error-handling.d.ts.map +0 -1
  1528. package/dist/core/dispatcher-error-handling.js.map +0 -1
  1529. package/dist/core/dispatcher-hourly-check.d.ts.map +0 -1
  1530. package/dist/core/dispatcher-hourly-check.js.map +0 -1
  1531. package/dist/core/dispatcher-message-handler.d.ts.map +0 -1
  1532. package/dist/core/dispatcher-message-handler.js.map +0 -1
  1533. package/dist/core/dispatcher-morning-routine.d.ts.map +0 -1
  1534. package/dist/core/dispatcher-morning-routine.js.map +0 -1
  1535. package/dist/core/dispatcher-prompt.d.ts.map +0 -1
  1536. package/dist/core/dispatcher-prompt.js.map +0 -1
  1537. package/dist/core/dispatcher-repository-helpers.d.ts.map +0 -1
  1538. package/dist/core/dispatcher-repository-helpers.js.map +0 -1
  1539. package/dist/core/dispatcher-result-processor.d.ts.map +0 -1
  1540. package/dist/core/dispatcher-result-processor.js.map +0 -1
  1541. package/dist/core/dispatcher-scheduled-tasks.d.ts.map +0 -1
  1542. package/dist/core/dispatcher-scheduled-tasks.js.map +0 -1
  1543. package/dist/core/dispatcher-types.d.ts.map +0 -1
  1544. package/dist/core/dispatcher-types.js.map +0 -1
  1545. package/dist/core/dispatcher.d.ts.map +0 -1
  1546. package/dist/core/dispatcher.js.map +0 -1
  1547. package/dist/core/dm-freshness-metrics.d.ts.map +0 -1
  1548. package/dist/core/dm-freshness-metrics.js.map +0 -1
  1549. package/dist/core/docs/citation-validator.d.ts.map +0 -1
  1550. package/dist/core/docs/citation-validator.js.map +0 -1
  1551. package/dist/core/docs/extract-terms.d.ts.map +0 -1
  1552. package/dist/core/docs/extract-terms.js.map +0 -1
  1553. package/dist/core/docs/indexer.d.ts.map +0 -1
  1554. package/dist/core/docs/indexer.js.map +0 -1
  1555. package/dist/core/drift-effects.d.ts.map +0 -1
  1556. package/dist/core/drift-effects.js.map +0 -1
  1557. package/dist/core/event-bus.d.ts.map +0 -1
  1558. package/dist/core/event-bus.js.map +0 -1
  1559. package/dist/core/git-project-docs.d.ts.map +0 -1
  1560. package/dist/core/git-project-docs.js.map +0 -1
  1561. package/dist/core/health-monitor.d.ts.map +0 -1
  1562. package/dist/core/health-monitor.js.map +0 -1
  1563. package/dist/core/heartbeat.d.ts.map +0 -1
  1564. package/dist/core/heartbeat.js.map +0 -1
  1565. package/dist/core/integration-health.d.ts.map +0 -1
  1566. package/dist/core/integration-health.js.map +0 -1
  1567. package/dist/core/integration-lifecycle.d.ts.map +0 -1
  1568. package/dist/core/integration-lifecycle.js.map +0 -1
  1569. package/dist/core/integration-main-backend.d.ts.map +0 -1
  1570. package/dist/core/integration-main-backend.js.map +0 -1
  1571. package/dist/core/integration-probe.d.ts.map +0 -1
  1572. package/dist/core/integration-probe.js.map +0 -1
  1573. package/dist/core/management-md-write-lock.d.ts.map +0 -1
  1574. package/dist/core/management-md-write-lock.js.map +0 -1
  1575. package/dist/core/management-md.d.ts.map +0 -1
  1576. package/dist/core/management-md.js.map +0 -1
  1577. package/dist/core/management-registry.d.ts.map +0 -1
  1578. package/dist/core/management-registry.js.map +0 -1
  1579. package/dist/core/management-telemetry.d.ts.map +0 -1
  1580. package/dist/core/management-telemetry.js.map +0 -1
  1581. package/dist/core/message-recorder.d.ts.map +0 -1
  1582. package/dist/core/message-recorder.js.map +0 -1
  1583. package/dist/core/metrics.d.ts.map +0 -1
  1584. package/dist/core/metrics.js.map +0 -1
  1585. package/dist/core/migration-backup.d.ts.map +0 -1
  1586. package/dist/core/migration-backup.js.map +0 -1
  1587. package/dist/core/output-language-policy.d.ts.map +0 -1
  1588. package/dist/core/output-language-policy.js.map +0 -1
  1589. package/dist/core/overview-write-lock.d.ts.map +0 -1
  1590. package/dist/core/overview-write-lock.js.map +0 -1
  1591. package/dist/core/path-compat.d.ts.map +0 -1
  1592. package/dist/core/path-compat.js.map +0 -1
  1593. package/dist/core/path-rewrite.d.ts.map +0 -1
  1594. package/dist/core/path-rewrite.js.map +0 -1
  1595. package/dist/core/policy-files.d.ts.map +0 -1
  1596. package/dist/core/policy-files.js.map +0 -1
  1597. package/dist/core/profile-questions/seed.d.ts.map +0 -1
  1598. package/dist/core/profile-questions/seed.js.map +0 -1
  1599. package/dist/core/profile-questions/slot-filled.d.ts.map +0 -1
  1600. package/dist/core/profile-questions/slot-filled.js.map +0 -1
  1601. package/dist/core/prompts.d.ts.map +0 -1
  1602. package/dist/core/prompts.js.map +0 -1
  1603. package/dist/core/quiet-hours-sync.d.ts.map +0 -1
  1604. package/dist/core/quiet-hours-sync.js.map +0 -1
  1605. package/dist/core/read-sensitive-token-manager.d.ts.map +0 -1
  1606. package/dist/core/read-sensitive-token-manager.js.map +0 -1
  1607. package/dist/core/recurrence.d.ts.map +0 -1
  1608. package/dist/core/recurrence.js.map +0 -1
  1609. package/dist/core/reinstall.d.ts.map +0 -1
  1610. package/dist/core/reinstall.js.map +0 -1
  1611. package/dist/core/release-assets.d.ts.map +0 -1
  1612. package/dist/core/release-assets.js.map +0 -1
  1613. package/dist/core/repository-management-docs.d.ts.map +0 -1
  1614. package/dist/core/repository-management-docs.js.map +0 -1
  1615. package/dist/core/retention.d.ts.map +0 -1
  1616. package/dist/core/retention.js.map +0 -1
  1617. package/dist/core/review-context.d.ts.map +0 -1
  1618. package/dist/core/review-context.js.map +0 -1
  1619. package/dist/core/roadmap-horizon.d.ts.map +0 -1
  1620. package/dist/core/roadmap-horizon.js.map +0 -1
  1621. package/dist/core/roadmap-ids.d.ts.map +0 -1
  1622. package/dist/core/roadmap-ids.js.map +0 -1
  1623. package/dist/core/roadmap-merge.d.ts +0 -7
  1624. package/dist/core/roadmap-merge.d.ts.map +0 -1
  1625. package/dist/core/roadmap-merge.js +0 -187
  1626. package/dist/core/roadmap-merge.js.map +0 -1
  1627. package/dist/core/roadmap-refresh-triggers.d.ts.map +0 -1
  1628. package/dist/core/roadmap-refresh-triggers.js.map +0 -1
  1629. package/dist/core/roadmap-truncate.d.ts.map +0 -1
  1630. package/dist/core/roadmap-truncate.js.map +0 -1
  1631. package/dist/core/roadmap-validate.d.ts.map +0 -1
  1632. package/dist/core/roadmap-validate.js.map +0 -1
  1633. package/dist/core/roadmap-write-lock.d.ts.map +0 -1
  1634. package/dist/core/roadmap-write-lock.js.map +0 -1
  1635. package/dist/core/routine-acquisition-plan.d.ts.map +0 -1
  1636. package/dist/core/routine-acquisition-plan.js.map +0 -1
  1637. package/dist/core/routine-fetch-window-retry.d.ts.map +0 -1
  1638. package/dist/core/routine-fetch-window-retry.js.map +0 -1
  1639. package/dist/core/routine-fetch-window-runner.d.ts.map +0 -1
  1640. package/dist/core/routine-fetch-window-runner.js.map +0 -1
  1641. package/dist/core/routine-windows.d.ts.map +0 -1
  1642. package/dist/core/routine-windows.js.map +0 -1
  1643. package/dist/core/schedule-insert-helper.d.ts.map +0 -1
  1644. package/dist/core/schedule-insert-helper.js.map +0 -1
  1645. package/dist/core/schedule-maintenance.d.ts.map +0 -1
  1646. package/dist/core/schedule-maintenance.js.map +0 -1
  1647. package/dist/core/scheduler.d.ts.map +0 -1
  1648. package/dist/core/scheduler.js.map +0 -1
  1649. package/dist/core/semaphore.d.ts.map +0 -1
  1650. package/dist/core/semaphore.js.map +0 -1
  1651. package/dist/core/session-gate.d.ts.map +0 -1
  1652. package/dist/core/session-gate.js.map +0 -1
  1653. package/dist/core/session-manager.d.ts.map +0 -1
  1654. package/dist/core/session-manager.js.map +0 -1
  1655. package/dist/core/signal-detector.d.ts.map +0 -1
  1656. package/dist/core/signal-detector.js.map +0 -1
  1657. package/dist/core/skeleton.d.ts.map +0 -1
  1658. package/dist/core/skeleton.js.map +0 -1
  1659. package/dist/core/skill-curation/apply-proposal.d.ts.map +0 -1
  1660. package/dist/core/skill-curation/apply-proposal.js.map +0 -1
  1661. package/dist/core/skill-curation/auto-revert.d.ts.map +0 -1
  1662. package/dist/core/skill-curation/auto-revert.js.map +0 -1
  1663. package/dist/core/skill-curation/classify-diff.d.ts.map +0 -1
  1664. package/dist/core/skill-curation/classify-diff.js.map +0 -1
  1665. package/dist/core/skill-curation/declarations.d.ts.map +0 -1
  1666. package/dist/core/skill-curation/declarations.js.map +0 -1
  1667. package/dist/core/skill-curation/knowledge-map.d.ts.map +0 -1
  1668. package/dist/core/skill-curation/knowledge-map.js.map +0 -1
  1669. package/dist/core/skill-curation/orphan-overlay.d.ts.map +0 -1
  1670. package/dist/core/skill-curation/orphan-overlay.js.map +0 -1
  1671. package/dist/core/skill-curation/overlay-store.d.ts.map +0 -1
  1672. package/dist/core/skill-curation/overlay-store.js.map +0 -1
  1673. package/dist/core/skill-curation/render/convention-notes.d.ts.map +0 -1
  1674. package/dist/core/skill-curation/render/convention-notes.js.map +0 -1
  1675. package/dist/core/skill-curation/render/cross-references.d.ts.map +0 -1
  1676. package/dist/core/skill-curation/render/cross-references.js.map +0 -1
  1677. package/dist/core/skill-curation/render/frontmatter-schema.d.ts.map +0 -1
  1678. package/dist/core/skill-curation/render/frontmatter-schema.js.map +0 -1
  1679. package/dist/core/skill-curation/render/index.d.ts.map +0 -1
  1680. package/dist/core/skill-curation/render/index.js.map +0 -1
  1681. package/dist/core/skill-curation/render/knowledge-layout.d.ts.map +0 -1
  1682. package/dist/core/skill-curation/render/knowledge-layout.js.map +0 -1
  1683. package/dist/core/skill-curation/render/routing-table.d.ts.map +0 -1
  1684. package/dist/core/skill-curation/render/routing-table.js.map +0 -1
  1685. package/dist/core/skill-curation/render/search-recipes.d.ts.map +0 -1
  1686. package/dist/core/skill-curation/render/search-recipes.js.map +0 -1
  1687. package/dist/core/skill-curation/run-token.d.ts.map +0 -1
  1688. package/dist/core/skill-curation/run-token.js.map +0 -1
  1689. package/dist/core/skill-curation/signals.d.ts.map +0 -1
  1690. package/dist/core/skill-curation/signals.js.map +0 -1
  1691. package/dist/core/skill-curation/smoke-test.d.ts.map +0 -1
  1692. package/dist/core/skill-curation/smoke-test.js.map +0 -1
  1693. package/dist/core/skill-curation/splicer.d.ts.map +0 -1
  1694. package/dist/core/skill-curation/splicer.js.map +0 -1
  1695. package/dist/core/skill-curation/workdir.d.ts.map +0 -1
  1696. package/dist/core/skill-curation/workdir.js.map +0 -1
  1697. package/dist/core/skill-source-paths.d.ts.map +0 -1
  1698. package/dist/core/skill-source-paths.js.map +0 -1
  1699. package/dist/core/skills-compiler.d.ts.map +0 -1
  1700. package/dist/core/skills-compiler.js.map +0 -1
  1701. package/dist/core/skills-manifest.d.ts.map +0 -1
  1702. package/dist/core/skills-manifest.js.map +0 -1
  1703. package/dist/core/system-reset.d.ts.map +0 -1
  1704. package/dist/core/system-reset.js.map +0 -1
  1705. package/dist/core/template-store.d.ts.map +0 -1
  1706. package/dist/core/template-store.js.map +0 -1
  1707. package/dist/core/template-versions.d.ts.map +0 -1
  1708. package/dist/core/template-versions.js.map +0 -1
  1709. package/dist/core/today-agent-plan.d.ts.map +0 -1
  1710. package/dist/core/today-agent-plan.js.map +0 -1
  1711. package/dist/core/today-direct-writer.d.ts.map +0 -1
  1712. package/dist/core/today-direct-writer.js.map +0 -1
  1713. package/dist/core/today-write-lock.d.ts.map +0 -1
  1714. package/dist/core/today-write-lock.js.map +0 -1
  1715. package/dist/core/trigger-dispatch.d.ts.map +0 -1
  1716. package/dist/core/trigger-dispatch.js.map +0 -1
  1717. package/dist/core/trigger-evaluator.d.ts.map +0 -1
  1718. package/dist/core/trigger-evaluator.js.map +0 -1
  1719. package/dist/core/wiki/approval-queue.d.ts.map +0 -1
  1720. package/dist/core/wiki/approval-queue.js.map +0 -1
  1721. package/dist/core/wiki/bridge.d.ts.map +0 -1
  1722. package/dist/core/wiki/bridge.js.map +0 -1
  1723. package/dist/core/wiki/compile-lock.d.ts.map +0 -1
  1724. package/dist/core/wiki/compile-lock.js.map +0 -1
  1725. package/dist/core/wiki/compile-preview.d.ts.map +0 -1
  1726. package/dist/core/wiki/compile-preview.js.map +0 -1
  1727. package/dist/core/wiki/cost-estimate.d.ts.map +0 -1
  1728. package/dist/core/wiki/cost-estimate.js.map +0 -1
  1729. package/dist/core/wiki/dispatcher.d.ts.map +0 -1
  1730. package/dist/core/wiki/dispatcher.js.map +0 -1
  1731. package/dist/core/wiki/git-precompile.d.ts.map +0 -1
  1732. package/dist/core/wiki/git-precompile.js.map +0 -1
  1733. package/dist/core/wiki/import-migrate.d.ts.map +0 -1
  1734. package/dist/core/wiki/import-migrate.js.map +0 -1
  1735. package/dist/core/wiki/import-probe.d.ts.map +0 -1
  1736. package/dist/core/wiki/import-probe.js.map +0 -1
  1737. package/dist/core/wiki/index-cache.d.ts.map +0 -1
  1738. package/dist/core/wiki/index-cache.js.map +0 -1
  1739. package/dist/core/wiki/multi-url-dispatch.d.ts.map +0 -1
  1740. package/dist/core/wiki/multi-url-dispatch.js.map +0 -1
  1741. package/dist/core/wiki/wiki-fts.d.ts.map +0 -1
  1742. package/dist/core/wiki/wiki-fts.js.map +0 -1
  1743. package/dist/core/wiki/workspaces.d.ts.map +0 -1
  1744. package/dist/core/wiki/workspaces.js.map +0 -1
  1745. package/dist/core/wiki/write-strategy.d.ts.map +0 -1
  1746. package/dist/core/wiki/write-strategy.js.map +0 -1
  1747. package/dist/core/workdir.d.ts.map +0 -1
  1748. package/dist/core/workdir.js.map +0 -1
  1749. package/dist/db/automation-triggers.d.ts.map +0 -1
  1750. package/dist/db/automation-triggers.js.map +0 -1
  1751. package/dist/db/client.d.ts.map +0 -1
  1752. package/dist/db/client.js.map +0 -1
  1753. package/dist/db/entities-store.d.ts.map +0 -1
  1754. package/dist/db/entities-store.js.map +0 -1
  1755. package/dist/db/hourly-check-signals.d.ts.map +0 -1
  1756. package/dist/db/hourly-check-signals.js.map +0 -1
  1757. package/dist/db/integration-probe-store.d.ts.map +0 -1
  1758. package/dist/db/integration-probe-store.js.map +0 -1
  1759. package/dist/db/integrations-store.d.ts.map +0 -1
  1760. package/dist/db/integrations-store.js.map +0 -1
  1761. package/dist/db/managed-tasks-store.d.ts.map +0 -1
  1762. package/dist/db/managed-tasks-store.js.map +0 -1
  1763. package/dist/db/management-parse-failures-store.d.ts.map +0 -1
  1764. package/dist/db/management-parse-failures-store.js.map +0 -1
  1765. package/dist/db/observations.d.ts.map +0 -1
  1766. package/dist/db/observations.js.map +0 -1
  1767. package/dist/db/recurring-schedules.d.ts.map +0 -1
  1768. package/dist/db/recurring-schedules.js.map +0 -1
  1769. package/dist/db/repositories-store.d.ts.map +0 -1
  1770. package/dist/db/repositories-store.js.map +0 -1
  1771. package/dist/db/runtime-state.d.ts.map +0 -1
  1772. package/dist/db/runtime-state.js.map +0 -1
  1773. package/dist/db/schema.d.ts.map +0 -1
  1774. package/dist/db/schema.js.map +0 -1
  1775. package/dist/db/sot-bindings-store.d.ts.map +0 -1
  1776. package/dist/db/sot-bindings-store.js.map +0 -1
  1777. package/dist/db/test-schemas.d.ts +0 -23
  1778. package/dist/db/test-schemas.d.ts.map +0 -1
  1779. package/dist/db/test-schemas.js +0 -111
  1780. package/dist/db/test-schemas.js.map +0 -1
  1781. package/dist/db/voice-transcripts-store.d.ts.map +0 -1
  1782. package/dist/db/voice-transcripts-store.js.map +0 -1
  1783. package/dist/db/wiki-store.d.ts.map +0 -1
  1784. package/dist/db/wiki-store.js.map +0 -1
  1785. package/dist/index.d.ts.map +0 -1
  1786. package/dist/index.js.map +0 -1
  1787. package/dist/init.d.ts.map +0 -1
  1788. package/dist/init.js.map +0 -1
  1789. package/dist/log-buffer.d.ts.map +0 -1
  1790. package/dist/log-buffer.js.map +0 -1
  1791. package/dist/logging.d.ts.map +0 -1
  1792. package/dist/logging.js.map +0 -1
  1793. package/dist/management-rules.d.ts.map +0 -1
  1794. package/dist/management-rules.js.map +0 -1
  1795. package/dist/messaging/constants.d.ts.map +0 -1
  1796. package/dist/messaging/constants.js.map +0 -1
  1797. package/dist/messaging/magic-phrase.d.ts.map +0 -1
  1798. package/dist/messaging/magic-phrase.js.map +0 -1
  1799. package/dist/messaging/owner-channels.d.ts.map +0 -1
  1800. package/dist/messaging/owner-channels.js.map +0 -1
  1801. package/dist/messaging/setup-welcome-dm.d.ts.map +0 -1
  1802. package/dist/messaging/setup-welcome-dm.js.map +0 -1
  1803. package/dist/messaging/url-extract.d.ts.map +0 -1
  1804. package/dist/messaging/url-extract.js.map +0 -1
  1805. package/dist/observers/calendar-poller.d.ts.map +0 -1
  1806. package/dist/observers/calendar-poller.js.map +0 -1
  1807. package/dist/observers/context-index-reconciler-observer.d.ts.map +0 -1
  1808. package/dist/observers/context-index-reconciler-observer.js.map +0 -1
  1809. package/dist/observers/delegated-probe-observer.d.ts.map +0 -1
  1810. package/dist/observers/delegated-probe-observer.js.map +0 -1
  1811. package/dist/observers/delegated-sync-worker.d.ts.map +0 -1
  1812. package/dist/observers/delegated-sync-worker.js.map +0 -1
  1813. package/dist/observers/entity-mirror-observer.d.ts.map +0 -1
  1814. package/dist/observers/entity-mirror-observer.js.map +0 -1
  1815. package/dist/observers/git-delegated-cron.d.ts.map +0 -1
  1816. package/dist/observers/git-delegated-cron.js.map +0 -1
  1817. package/dist/observers/git-event-classifier.d.ts.map +0 -1
  1818. package/dist/observers/git-event-classifier.js.map +0 -1
  1819. package/dist/observers/git-watcher.d.ts.map +0 -1
  1820. package/dist/observers/git-watcher.js.map +0 -1
  1821. package/dist/observers/github-poller-classifier.d.ts.map +0 -1
  1822. package/dist/observers/github-poller-classifier.js.map +0 -1
  1823. package/dist/observers/github-poller.d.ts.map +0 -1
  1824. package/dist/observers/github-poller.js.map +0 -1
  1825. package/dist/observers/imminent-event-scheduler.d.ts.map +0 -1
  1826. package/dist/observers/imminent-event-scheduler.js.map +0 -1
  1827. package/dist/observers/mail-poller.d.ts.map +0 -1
  1828. package/dist/observers/mail-poller.js.map +0 -1
  1829. package/dist/observers/mail-reconciliation.d.ts.map +0 -1
  1830. package/dist/observers/mail-reconciliation.js.map +0 -1
  1831. package/dist/observers/manager.d.ts.map +0 -1
  1832. package/dist/observers/manager.js.map +0 -1
  1833. package/dist/observers/notion-poller.d.ts.map +0 -1
  1834. package/dist/observers/notion-poller.js.map +0 -1
  1835. package/dist/observers/observation-summarizer/index.d.ts.map +0 -1
  1836. package/dist/observers/observation-summarizer/index.js.map +0 -1
  1837. package/dist/observers/observation-summarizer/pre-filter.d.ts.map +0 -1
  1838. package/dist/observers/observation-summarizer/pre-filter.js.map +0 -1
  1839. package/dist/observers/observation-summarizer/response-parser.d.ts.map +0 -1
  1840. package/dist/observers/observation-summarizer/response-parser.js.map +0 -1
  1841. package/dist/observers/observation-summarizer/summarizer-client.d.ts.map +0 -1
  1842. package/dist/observers/observation-summarizer/summarizer-client.js.map +0 -1
  1843. package/dist/observers/observation-summarizer/summarizer-prompts.d.ts.map +0 -1
  1844. package/dist/observers/observation-summarizer/summarizer-prompts.js.map +0 -1
  1845. package/dist/observers/observation-summarizer/worker.d.ts.map +0 -1
  1846. package/dist/observers/observation-summarizer/worker.js.map +0 -1
  1847. package/dist/observers/obsidian-watcher.d.ts.map +0 -1
  1848. package/dist/observers/obsidian-watcher.js.map +0 -1
  1849. package/dist/observers/primary-vault-watcher.d.ts.map +0 -1
  1850. package/dist/observers/primary-vault-watcher.js.map +0 -1
  1851. package/dist/observers/repository-management-cron.d.ts.map +0 -1
  1852. package/dist/observers/repository-management-cron.js.map +0 -1
  1853. package/dist/observers/skill-curation-walker.d.ts.map +0 -1
  1854. package/dist/observers/skill-curation-walker.js.map +0 -1
  1855. package/dist/safety/absolute-block-audit.d.ts.map +0 -1
  1856. package/dist/safety/absolute-block-audit.js.map +0 -1
  1857. package/dist/safety/agent-write-tracker.d.ts.map +0 -1
  1858. package/dist/safety/agent-write-tracker.js.map +0 -1
  1859. package/dist/safety/always-disallowed.d.ts.map +0 -1
  1860. package/dist/safety/always-disallowed.js.map +0 -1
  1861. package/dist/safety/audit.d.ts.map +0 -1
  1862. package/dist/safety/audit.js.map +0 -1
  1863. package/dist/safety/integration-write-tracker.d.ts.map +0 -1
  1864. package/dist/safety/integration-write-tracker.js.map +0 -1
  1865. package/dist/safety/risk-classifier.d.ts.map +0 -1
  1866. package/dist/safety/risk-classifier.js.map +0 -1
  1867. package/dist/scheduler/hourly-check-gate.d.ts.map +0 -1
  1868. package/dist/scheduler/hourly-check-gate.js.map +0 -1
  1869. package/dist/secrets/backend-api-key-env.d.ts.map +0 -1
  1870. package/dist/secrets/backend-api-key-env.js.map +0 -1
  1871. package/dist/secrets/codex-home-materializer.d.ts.map +0 -1
  1872. package/dist/secrets/codex-home-materializer.js.map +0 -1
  1873. package/dist/secrets/encrypted-blob-store.d.ts.map +0 -1
  1874. package/dist/secrets/encrypted-blob-store.js.map +0 -1
  1875. package/dist/secrets/platform-secret-store.d.ts.map +0 -1
  1876. package/dist/secrets/platform-secret-store.js.map +0 -1
  1877. package/dist/secrets/redaction.d.ts.map +0 -1
  1878. package/dist/secrets/redaction.js.map +0 -1
  1879. package/dist/secrets/secret-broker.d.ts.map +0 -1
  1880. package/dist/secrets/secret-broker.js.map +0 -1
  1881. package/dist/secrets/secret-names.d.ts.map +0 -1
  1882. package/dist/secrets/secret-names.js.map +0 -1
  1883. package/dist/secrets/secret-store.d.ts.map +0 -1
  1884. package/dist/secrets/secret-store.js.map +0 -1
  1885. package/dist/secrets/types.d.ts.map +0 -1
  1886. package/dist/secrets/types.js.map +0 -1
  1887. package/dist/services/apple-calendar/caldav-client.d.ts.map +0 -1
  1888. package/dist/services/apple-calendar/caldav-client.js.map +0 -1
  1889. package/dist/services/apple-calendar/caldav-codec.d.ts.map +0 -1
  1890. package/dist/services/apple-calendar/caldav-codec.js.map +0 -1
  1891. package/dist/services/apple-calendar/index.d.ts.map +0 -1
  1892. package/dist/services/apple-calendar/index.js.map +0 -1
  1893. package/dist/services/apple-calendar/service.d.ts.map +0 -1
  1894. package/dist/services/apple-calendar/service.js.map +0 -1
  1895. package/dist/services/apple-calendar/types.d.ts.map +0 -1
  1896. package/dist/services/apple-calendar/types.js.map +0 -1
  1897. package/dist/services/attachments/hardlink.d.ts.map +0 -1
  1898. package/dist/services/attachments/hardlink.js.map +0 -1
  1899. package/dist/services/attachments/sanitize.d.ts.map +0 -1
  1900. package/dist/services/attachments/sanitize.js.map +0 -1
  1901. package/dist/services/attachments/store.d.ts.map +0 -1
  1902. package/dist/services/attachments/store.js.map +0 -1
  1903. package/dist/services/calendar/outlook/graph-calendar-client.d.ts.map +0 -1
  1904. package/dist/services/calendar/outlook/graph-calendar-client.js.map +0 -1
  1905. package/dist/services/calendar.d.ts.map +0 -1
  1906. package/dist/services/calendar.js.map +0 -1
  1907. package/dist/services/delegated-backend-invoker.d.ts.map +0 -1
  1908. package/dist/services/delegated-backend-invoker.js.map +0 -1
  1909. package/dist/services/delegated-invoker-audit.d.ts.map +0 -1
  1910. package/dist/services/delegated-invoker-audit.js.map +0 -1
  1911. package/dist/services/delegated-invoker-cache-hits.d.ts.map +0 -1
  1912. package/dist/services/delegated-invoker-cache-hits.js.map +0 -1
  1913. package/dist/services/delegated-invoker-janitors.d.ts.map +0 -1
  1914. package/dist/services/delegated-invoker-janitors.js.map +0 -1
  1915. package/dist/services/delegated-invoker-utils.d.ts.map +0 -1
  1916. package/dist/services/delegated-invoker-utils.js.map +0 -1
  1917. package/dist/services/delegated-proxy-config.d.ts.map +0 -1
  1918. package/dist/services/delegated-proxy-config.js.map +0 -1
  1919. package/dist/services/delegated-task-result-cache.d.ts.map +0 -1
  1920. package/dist/services/delegated-task-result-cache.js.map +0 -1
  1921. package/dist/services/delegated-task-runtime.d.ts.map +0 -1
  1922. package/dist/services/delegated-task-runtime.js.map +0 -1
  1923. package/dist/services/delegated-task-session-pool.d.ts.map +0 -1
  1924. package/dist/services/delegated-task-session-pool.js.map +0 -1
  1925. package/dist/services/delegated-tool-runtime.d.ts.map +0 -1
  1926. package/dist/services/delegated-tool-runtime.js.map +0 -1
  1927. package/dist/services/fts5.d.ts.map +0 -1
  1928. package/dist/services/fts5.js.map +0 -1
  1929. package/dist/services/git-account-registry.d.ts.map +0 -1
  1930. package/dist/services/git-account-registry.js.map +0 -1
  1931. package/dist/services/github.d.ts.map +0 -1
  1932. package/dist/services/github.js.map +0 -1
  1933. package/dist/services/gmail-classifier.d.ts.map +0 -1
  1934. package/dist/services/gmail-classifier.js.map +0 -1
  1935. package/dist/services/gmail.d.ts.map +0 -1
  1936. package/dist/services/gmail.js.map +0 -1
  1937. package/dist/services/google-auth.d.ts.map +0 -1
  1938. package/dist/services/google-auth.js.map +0 -1
  1939. package/dist/services/google-maps.d.ts +0 -35
  1940. package/dist/services/google-maps.d.ts.map +0 -1
  1941. package/dist/services/google-maps.js +0 -82
  1942. package/dist/services/google-maps.js.map +0 -1
  1943. package/dist/services/integrations/extract-write-item-id.d.ts.map +0 -1
  1944. package/dist/services/integrations/extract-write-item-id.js.map +0 -1
  1945. package/dist/services/integrations/reconcile.d.ts.map +0 -1
  1946. package/dist/services/integrations/reconcile.js.map +0 -1
  1947. package/dist/services/integrations/snapshot-partitions.d.ts.map +0 -1
  1948. package/dist/services/integrations/snapshot-partitions.js.map +0 -1
  1949. package/dist/services/journal/render.d.ts.map +0 -1
  1950. package/dist/services/journal/render.js.map +0 -1
  1951. package/dist/services/journal/writer.d.ts.map +0 -1
  1952. package/dist/services/journal/writer.js.map +0 -1
  1953. package/dist/services/mail/account-registry.d.ts.map +0 -1
  1954. package/dist/services/mail/account-registry.js.map +0 -1
  1955. package/dist/services/mail/gmail/auth-failure-classifier.d.ts.map +0 -1
  1956. package/dist/services/mail/gmail/auth-failure-classifier.js.map +0 -1
  1957. package/dist/services/mail/gmail/gmail-provider.d.ts.map +0 -1
  1958. package/dist/services/mail/gmail/gmail-provider.js.map +0 -1
  1959. package/dist/services/mail/gmail/legacy-row.d.ts.map +0 -1
  1960. package/dist/services/mail/gmail/legacy-row.js.map +0 -1
  1961. package/dist/services/mail/gmail/poll-cursor.d.ts.map +0 -1
  1962. package/dist/services/mail/gmail/poll-cursor.js.map +0 -1
  1963. package/dist/services/mail/html-to-plaintext.d.ts.map +0 -1
  1964. package/dist/services/mail/html-to-plaintext.js.map +0 -1
  1965. package/dist/services/mail/imap/app-password.d.ts.map +0 -1
  1966. package/dist/services/mail/imap/app-password.js.map +0 -1
  1967. package/dist/services/mail/imap/auth-failure-classifier.d.ts.map +0 -1
  1968. package/dist/services/mail/imap/auth-failure-classifier.js.map +0 -1
  1969. package/dist/services/mail/imap/capabilities.d.ts.map +0 -1
  1970. package/dist/services/mail/imap/capabilities.js.map +0 -1
  1971. package/dist/services/mail/imap/client.d.ts.map +0 -1
  1972. package/dist/services/mail/imap/client.js.map +0 -1
  1973. package/dist/services/mail/imap/cursor.d.ts.map +0 -1
  1974. package/dist/services/mail/imap/cursor.js.map +0 -1
  1975. package/dist/services/mail/imap/folder-resolver.d.ts.map +0 -1
  1976. package/dist/services/mail/imap/folder-resolver.js.map +0 -1
  1977. package/dist/services/mail/imap/icloud-provider.d.ts.map +0 -1
  1978. package/dist/services/mail/imap/icloud-provider.js.map +0 -1
  1979. package/dist/services/mail/imap/imap-provider-base.d.ts.map +0 -1
  1980. package/dist/services/mail/imap/imap-provider-base.js.map +0 -1
  1981. package/dist/services/mail/imap/query-translator.d.ts.map +0 -1
  1982. package/dist/services/mail/imap/query-translator.js.map +0 -1
  1983. package/dist/services/mail/imap/reconcile-planner.d.ts.map +0 -1
  1984. package/dist/services/mail/imap/reconcile-planner.js.map +0 -1
  1985. package/dist/services/mail/imap/reply-mime.d.ts.map +0 -1
  1986. package/dist/services/mail/imap/reply-mime.js.map +0 -1
  1987. package/dist/services/mail/imap/yahoo-provider.d.ts.map +0 -1
  1988. package/dist/services/mail/imap/yahoo-provider.js.map +0 -1
  1989. package/dist/services/mail/mail-search.d.ts.map +0 -1
  1990. package/dist/services/mail/mail-search.js.map +0 -1
  1991. package/dist/services/mail/outlook/auth-failure-classifier.d.ts.map +0 -1
  1992. package/dist/services/mail/outlook/auth-failure-classifier.js.map +0 -1
  1993. package/dist/services/mail/outlook/client-config.d.ts.map +0 -1
  1994. package/dist/services/mail/outlook/client-config.js.map +0 -1
  1995. package/dist/services/mail/outlook/delta-cursor.d.ts.map +0 -1
  1996. package/dist/services/mail/outlook/delta-cursor.js.map +0 -1
  1997. package/dist/services/mail/outlook/graph-client.d.ts.map +0 -1
  1998. package/dist/services/mail/outlook/graph-client.js.map +0 -1
  1999. package/dist/services/mail/outlook/msal-app-factory.d.ts.map +0 -1
  2000. package/dist/services/mail/outlook/msal-app-factory.js.map +0 -1
  2001. package/dist/services/mail/outlook/msal-cache-plugin.d.ts.map +0 -1
  2002. package/dist/services/mail/outlook/msal-cache-plugin.js.map +0 -1
  2003. package/dist/services/mail/outlook/oauth-device-code.d.ts.map +0 -1
  2004. package/dist/services/mail/outlook/oauth-device-code.js.map +0 -1
  2005. package/dist/services/mail/outlook/oauth-loopback.d.ts.map +0 -1
  2006. package/dist/services/mail/outlook/oauth-loopback.js.map +0 -1
  2007. package/dist/services/mail/outlook/outlook-provider.d.ts.map +0 -1
  2008. package/dist/services/mail/outlook/outlook-provider.js.map +0 -1
  2009. package/dist/services/mail/outlook/query-translator.d.ts.map +0 -1
  2010. package/dist/services/mail/outlook/query-translator.js.map +0 -1
  2011. package/dist/services/mail/provider.d.ts.map +0 -1
  2012. package/dist/services/mail/provider.js.map +0 -1
  2013. package/dist/services/mail/query-utils.d.ts.map +0 -1
  2014. package/dist/services/mail/query-utils.js.map +0 -1
  2015. package/dist/services/mail-classifier.d.ts.map +0 -1
  2016. package/dist/services/mail-classifier.js.map +0 -1
  2017. package/dist/services/mail-ingestion.d.ts.map +0 -1
  2018. package/dist/services/mail-ingestion.js.map +0 -1
  2019. package/dist/services/mcp/auto-probe.d.ts.map +0 -1
  2020. package/dist/services/mcp/auto-probe.js.map +0 -1
  2021. package/dist/services/mcp/generators/claude.d.ts.map +0 -1
  2022. package/dist/services/mcp/generators/claude.js.map +0 -1
  2023. package/dist/services/mcp/generators/codex.d.ts.map +0 -1
  2024. package/dist/services/mcp/generators/codex.js.map +0 -1
  2025. package/dist/services/mcp/generators/gemini.d.ts.map +0 -1
  2026. package/dist/services/mcp/generators/gemini.js.map +0 -1
  2027. package/dist/services/mcp/generators/index.d.ts.map +0 -1
  2028. package/dist/services/mcp/generators/index.js.map +0 -1
  2029. package/dist/services/mcp/generators/types.d.ts.map +0 -1
  2030. package/dist/services/mcp/generators/types.js.map +0 -1
  2031. package/dist/services/mcp/probe.d.ts.map +0 -1
  2032. package/dist/services/mcp/probe.js.map +0 -1
  2033. package/dist/services/mcp/registry.d.ts.map +0 -1
  2034. package/dist/services/mcp/registry.js.map +0 -1
  2035. package/dist/services/mcp/risk.d.ts.map +0 -1
  2036. package/dist/services/mcp/risk.js.map +0 -1
  2037. package/dist/services/mcp/session-materializer.d.ts.map +0 -1
  2038. package/dist/services/mcp/session-materializer.js.map +0 -1
  2039. package/dist/services/mcp/tool-audit.d.ts.map +0 -1
  2040. package/dist/services/mcp/tool-audit.js.map +0 -1
  2041. package/dist/services/mcp/types.d.ts.map +0 -1
  2042. package/dist/services/mcp/types.js.map +0 -1
  2043. package/dist/services/notion.d.ts.map +0 -1
  2044. package/dist/services/notion.js.map +0 -1
  2045. package/dist/services/obsidian.d.ts.map +0 -1
  2046. package/dist/services/obsidian.js.map +0 -1
  2047. package/dist/services/service-registry.d.ts.map +0 -1
  2048. package/dist/services/service-registry.js.map +0 -1
  2049. package/dist/services/voice/transcriber-impl.d.ts.map +0 -1
  2050. package/dist/services/voice/transcriber-impl.js.map +0 -1
  2051. package/dist/services/voice/transcriber.d.ts.map +0 -1
  2052. package/dist/services/voice/transcriber.js.map +0 -1
  2053. package/dist/settings/runtime-settings.d.ts.map +0 -1
  2054. package/dist/settings/runtime-settings.js.map +0 -1
  2055. package/dist/settings/settings-store.d.ts.map +0 -1
  2056. package/dist/settings/settings-store.js.map +0 -1
@@ -1,211 +1,38 @@
1
- import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync, } from "node:fs";
2
- import { dirname, join, relative } from "node:path";
3
- import { APP_NAME, BACKEND_IDS, INTEGRATION_DESCRIPTORS, INTEGRATION_KEYS, applyIntegrationModeFilter, collectSessionDeniedTools, filterDeniedToolsForBackend, selectSkillVariantFile, selectTaskFlowVariantSuffix, substituteBrandTokens, } from "@aitne/shared";
4
- import { getProfileForEvent, getProfileForProcess, getSkillsForEvent, getSkillsForProcess } from "./skills-manifest.js";
1
+ import { cpSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync, } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { APP_NAME, INTEGRATION_KEYS, applyIntegrationModeFilter, selectSkillVariantFile, substituteBrandTokens, } from "@aitne/shared";
4
+ import { composeSkillSet, getProfileForEvent, getProfileForProcess, resolveSkillManifest, resolveSkillManifestForProcess, } from "./skills-manifest.js";
5
5
  import { applyCharacterBlockRewrite, buildCharacterBlock } from "./character-block.js";
6
- import { applyOutputLanguagePointerRewrite, renderOutputLanguagePolicyPointer, } from "./output-language-policy.js";
6
+ import { applyOutputLanguagePointerRewrite } from "./output-language-policy.js";
7
7
  import { createLogger } from "../logging.js";
8
+ import { loadFetchWindowSystemPrompt } from "./fetch-window-prompt-loader.js";
8
9
  import { substituteIntegrationRoutingTables } from "./management-md.js";
9
10
  import { loadCurationDeclaration, } from "./skill-curation/declarations.js";
10
- import { listBuiltinSlugs, resolveBuiltinSkillDir, } from "./skill-source-paths.js";
11
+ import { resolveBuiltinSkillDir } from "./skill-source-paths.js";
11
12
  import { OverlayStore } from "./skill-curation/overlay-store.js";
12
13
  import { hasCurationAnchors, spliceCurationAnchors, } from "./skill-curation/splicer.js";
13
- // Exported so tests can spy on `logger.warn` (e.g. the missing-reference
14
- // branch of `renderReferenceIncludes`). Production callers do not import it.
15
- export const logger = createLogger("skills-compiler");
16
- /**
17
- * Check whether the skill AND task-flow variants a given integration would
18
- * require when delegated to `delegatedBackend` are all present on disk.
19
- * Returns missing file paths split by kind.
20
- *
21
- * DELEGATED-MODE-V2-DESIGN.md §4.1.1 variant filenames are keyed on
22
- * **session backend**, not the delegated backend. Three resolutions:
23
- * - sessionBackend === delegatedBackend `null` (no skill body, native MCP)
24
- * - sessionBackend !== delegatedBackend `SKILL.delegated.<sessionBackend>.md`
25
- * (cross-backend; the daemon proxy spawns delegatedBackend)
26
- * - non-delegated touch `SKILL.md` (no delegated variant required)
27
- *
28
- * Task flow variants always fire as `delegated.<sessionBackend>` whenever
29
- * any touched integration is delegated, regardless of same- vs cross-backend
30
- * (`selectTaskFlowVariantSuffix`).
31
- *
32
- * The gate enumerates every potential session backend (`BACKEND_IDS`) and
33
- * defers to the resolvers; that keeps the gate automatically aligned with
34
- * `selectSkillVariantFile` / `selectTaskFlowVariantSuffix` if those grow new
35
- * cases. We pin the integration's mode locally as `delegated` with the
36
- * supplied `delegatedBackend` so the resolvers see the post-PATCH state.
37
- *
38
- * Consumed by:
39
- * - `SkillsCompiler.validateDelegatedVariants()` — startup aggregate
40
- * - `PATCH /api/integrations/:key` — pre-commit hard reject (§4.7)
41
- * - `buildIntegrationHealthMap` — surfaces the list in
42
- * `/health.integrationModes.<key>.variantsMissing`
43
- */
44
- /**
45
- * Walk a materialized session subdirectory and rewrite every `.md` file with
46
- * `{APP_NAME}` tokens resolved. Called immediately after `cpSync(src, dest, …)`
47
- * so the verbatim copy from `agent-assets/` becomes brand-substituted before
48
- * any downstream transform (renderReferenceIncludes, applyIntegrationModeFilter,
49
- * tool-deny filter) reads it. Idempotent — running it twice is a no-op.
50
- */
51
- function substituteBrandTokensInDir(dir) {
52
- if (!existsSync(dir))
53
- return;
54
- for (const entry of readdirSync(dir, { withFileTypes: true })) {
55
- const full = join(dir, entry.name);
56
- if (entry.isDirectory()) {
57
- substituteBrandTokensInDir(full);
58
- }
59
- else if (entry.isFile() && entry.name.endsWith(".md")) {
60
- const original = readFileSync(full, "utf-8");
61
- const substituted = substituteBrandTokens(original);
62
- if (substituted !== original) {
63
- writeFileSync(full, substituted, "utf-8");
64
- }
65
- }
66
- }
67
- }
68
- let wikiWorkspaceTokenResolver = null;
69
- export function setWikiWorkspaceTokenResolver(resolver) {
70
- wikiWorkspaceTokenResolver = resolver;
71
- }
72
- function wikiTokensFor(processKey, workspaceName) {
73
- if (!processKey?.startsWith("wiki."))
74
- return null;
75
- return wikiWorkspaceTokenResolver?.(processKey, workspaceName) ?? null;
76
- }
77
- function substituteWikiWorkspaceTokens(content, processKey, workspaceName) {
78
- const tokens = wikiTokensFor(processKey, workspaceName);
79
- if (!tokens)
80
- return content;
81
- return content
82
- .replaceAll("{{vault_path}}", tokens.vault_path)
83
- .replaceAll("{{language}}", tokens.language)
84
- .replaceAll("{{workspace_name}}", tokens.workspace_name)
85
- .replaceAll("{{schema_version}}", tokens.schema_version);
86
- }
87
- function substituteWikiWorkspaceTokensInDir(dir, processKey, workspaceName) {
88
- if (!existsSync(dir))
89
- return;
90
- for (const entry of readdirSync(dir, { withFileTypes: true })) {
91
- const full = join(dir, entry.name);
92
- if (entry.isDirectory()) {
93
- substituteWikiWorkspaceTokensInDir(full, processKey, workspaceName);
94
- }
95
- else if (entry.isFile() && entry.name.endsWith(".md")) {
96
- const original = readFileSync(full, "utf-8");
97
- const substituted = substituteWikiWorkspaceTokens(original, processKey, workspaceName);
98
- if (substituted !== original) {
99
- writeFileSync(full, substituted, "utf-8");
100
- }
101
- }
102
- }
103
- }
104
- export function missingDelegatedVariants(workspaceDir, integrationKey, delegatedBackend) {
105
- return missingVariantsForMode(workspaceDir, integrationKey, {
106
- mode: "delegated",
107
- delegatedBackend,
108
- });
109
- }
110
- /**
111
- * INTEGRATION_NATIVE_MODE_DESIGN.md §7.4 / §8.5 — symmetric to
112
- * {@link missingDelegatedVariants} for the new `native` mode. Used by
113
- * the PATCH route's pre-commit hard reject and (Phase B2 onwards) by
114
- * `skills-manifest.test.ts` to assert variant existence on every
115
- * supported `(integration, native backend)` pair before a release.
116
- */
117
- export function missingNativeVariants(workspaceDir, integrationKey, nativeBackend) {
118
- return missingVariantsForMode(workspaceDir, integrationKey, {
119
- mode: "native",
120
- nativeBackend,
121
- });
122
- }
123
- function missingVariantsForMode(workspaceDir, integrationKey, pinnedState) {
124
- const descriptor = INTEGRATION_DESCRIPTORS[integrationKey];
125
- const skillsRoot = join(workspaceDir, "agent-assets", "skills");
126
- const taskFlowsRoot = join(workspaceDir, "agent-assets", "task-flows");
127
- // Synthetic post-PATCH state. The resolvers consume only `mode` and
128
- // the backend binding; `lastChangedAt` is required by the type but not
129
- // read here.
130
- const synthetic = pinnedState.mode === "delegated"
131
- ? {
132
- mode: "delegated",
133
- delegatedBackend: pinnedState.delegatedBackend,
134
- deniedTools: [],
135
- lastChangedAt: "1970-01-01T00:00:00.000Z",
136
- }
137
- : {
138
- mode: "native",
139
- nativeBackend: pinnedState.nativeBackend,
140
- deniedTools: [],
141
- lastChangedAt: "1970-01-01T00:00:00.000Z",
142
- };
143
- const integrationsState = {
144
- [integrationKey]: synthetic,
145
- };
146
- // For `native` mode the variant is only required when the session
147
- // backend is the bound native backend (other session backends would
148
- // resolve to `disabled` per §5.4.1's safety degrade, so they don't need
149
- // a SKILL.native.<other>.md file). For `delegated` we keep the original
150
- // walk over every session backend since cross-backend variants ARE
151
- // required.
152
- const sessionBackendsToCheck = pinnedState.mode === "native"
153
- ? [pinnedState.nativeBackend]
154
- : BACKEND_IDS;
155
- // De-dup with sets — the same file path can come up under multiple
156
- // session backends when descriptors share a slug.
157
- const skills = new Set();
158
- for (const slug of descriptor.skillsTouched) {
159
- for (const sessionBackend of sessionBackendsToCheck) {
160
- const variantFile = selectSkillVariantFile(slug, sessionBackend, integrationsState);
161
- // null → same-backend delegated drops body; no file required.
162
- // SKILL.md → resolver fell back to direct/disabled; no variant file.
163
- if (variantFile === null || variantFile === "SKILL.md")
164
- continue;
165
- const variantPath = join(resolveBuiltinSkillDir(skillsRoot, slug), variantFile);
166
- if (!existsSync(variantPath))
167
- skills.add(variantPath);
168
- }
169
- }
170
- const taskFlows = new Set();
171
- for (const flowKey of descriptor.taskFlowsTouched) {
172
- for (const sessionBackend of sessionBackendsToCheck) {
173
- const suffix = selectTaskFlowVariantSuffix(flowKey, sessionBackend, integrationsState);
174
- if (suffix === "direct")
175
- continue;
176
- const variantPath = join(taskFlowsRoot, `${flowKey}.${suffix}.md`);
177
- if (existsSync(variantPath))
178
- continue;
179
- // INTEGRATION_NATIVE_MODE_DESIGN.md §8.1 — when a task-flow lists a
180
- // mode-aware integration in `taskFlowsTouched` but doesn't ship a
181
- // per-mode variant file, the loader (`prompts.ts:loadFlowVariant`)
182
- // gracefully falls back to the canonical base file. Treat that as
183
- // a valid coverage path so the `missingDelegatedVariants` /
184
- // `missingNativeVariants` PATCH-time check doesn't reject a flip
185
- // for which the loader's base-file fallback is the designed answer.
186
- //
187
- // Concrete example: `message.received.dm` is listed in gmail /
188
- // google_calendar / notion `taskFlowsTouched` so the native DM
189
- // variant resolves; the matching delegated variant
190
- // (`message.received.dm.delegated.<backend>.md`) is intentionally
191
- // absent. The base `message.received.dm.md` carries inline
192
- // `<!-- mode:<predicate>:<key> -->` markers for the Calendar block
193
- // and routes other integrations through their per-skill bodies. The
194
- // loader correctly falls back, so the missing variant is not a real
195
- // configuration gap.
196
- //
197
- // Skill variants remain strict — a missing `SKILL.<mode>.<backend>.md`
198
- // leaves the agent with no per-mode body for the integration, which
199
- // IS a real gap. The strict check above (no leniency branch) handles
200
- // that.
201
- const basePath = join(taskFlowsRoot, `${flowKey}.md`);
202
- if (!existsSync(basePath)) {
203
- taskFlows.add(variantPath);
204
- }
205
- }
206
- }
207
- return { skills: [...skills], taskFlows: [...taskFlows] };
208
- }
14
+ import { isValidSkillSlug, missingDelegatedVariants, } from "./skills-compiler-variants.js";
15
+ import { EMPTY_MAIL_ACCOUNTS_MD, pruneStaleBuiltinSkillDirs, readTreeFiles, renderMailAccountsMd, substituteBrandTokensInDir, substituteWikiWorkspaceTokens, substituteWikiWorkspaceTokensInDir, } from "./skills-compiler-tree.js";
16
+ import { loadSkillIndexPreamble, renderPartialIncludes, renderReferenceIncludes, renderSkillIndexBlock, stripUnconfiguredServices, } from "./skills-compiler-skill-index.js";
17
+ import { applyAllDeniedToolsForSkill, buildSameBackendDenyBlock } from "./skills-compiler-denied-tools.js";
18
+ import { cliInstructionFileName, cliSkillsDirName, prependCodexReadSensitiveBanner, renderCliInstructionFile, renderDaemonApiUsageSection, } from "./skills-compiler-cli-renderer.js";
19
+ // Module logger for the class's own warn callsites (invalid-slug warning
20
+ // in writeSkillsDir, skill-curation declaration / anchor warnings in
21
+ // spliceCurationAnchorsInSkill). Not exported — sibling modules carry
22
+ // their own peer loggers; the test suite spies on those.
23
+ const logger = createLogger("skills-compiler");
24
+ // docs/design/appendices/fetch-window-cost-reduction.md Phase 1.5 single shared constant
25
+ // for the pre-pass process key. Typed as `ProcessKey` (not the inferred
26
+ // string literal) so a rename in `@aitne/shared/process-key.ts` lights up
27
+ // here rather than silently dead-branching the slim materializer.
28
+ const FETCH_WINDOW_PROCESS_KEY = "routine.fetch_window";
29
+ // Single skill kept in the slim fetch_window CLI session: the
30
+ // `observations` SKILL.md is the POST contract for
31
+ // `/api/observations/batch` and the fetcher's only structural assertion.
32
+ // The other skills the wide path inlines (`mail`, `notion`,
33
+ // `external-services`, `attach`) are already restated by the integration
34
+ // partial the runner inlines into the user prompt.
35
+ const FETCH_WINDOW_SLIM_SKILL = "observations";
209
36
  /**
210
37
  * Materializes backend-specific instruction files for session workdirs
211
38
  * by reading directly from the source tree (agent-assets/agent-profiles/ and
@@ -259,7 +86,7 @@ export class SkillsCompiler {
259
86
  /**
260
87
  * P22 — skill-curation overlay context. When set, the materializer runs an
261
88
  * extra pass that resolves `<!-- CURATION:<kind> id="<id>" -->` anchors in
262
- * each skill's SKILL.md against `<dataDir>/skills/overlays/<slug>/<id>.json`
89
+ * each skill's SKILL.md against `<dataDir>/skill-curation-overlays/<slug>/<id>.json`
263
90
  * (overlay) or `agent-assets/skills/<slug>/seeds/<id>.seed.json` (seed).
264
91
  *
265
92
  * Optional and default-OFF — daemon code is expected to call
@@ -289,10 +116,10 @@ export class SkillsCompiler {
289
116
  * §4.7 "Missing-variant policy": if any paths come back, the caller
290
117
  * should refuse to enter delegated mode or at least log a loud warning.
291
118
  * The per-integration variant for the hypothetical PATCH path lives in
292
- * the standalone `missingDelegatedVariants` helper below; this method
293
- * aggregates across every currently-delegated integration using its
294
- * declared `delegatedBackend` (not the session backend — see the helper
295
- * docstring for the rationale).
119
+ * `missingDelegatedVariants` in `./skills-compiler-variants.js`; this
120
+ * method aggregates across every currently-delegated integration using
121
+ * its declared `delegatedBackend` (not the session backend — see the
122
+ * helper docstring for the rationale).
296
123
  */
297
124
  validateDelegatedVariants() {
298
125
  const skills = [];
@@ -357,18 +184,36 @@ export class SkillsCompiler {
357
184
  const profileName = params.processKey
358
185
  ? getProfileForProcess(params.processKey)
359
186
  : getProfileForEvent(params.eventType);
187
+ // `evening-review-slimdown.md` §2.1 — route through the predicate-aware
188
+ // wrapper so the evening rulebook gate (and any future per-event
189
+ // predicate) is consulted exactly once per session, at materialization
190
+ // time. The wrapper passes non-conditional events through verbatim, so
191
+ // every other process key keeps its old behaviour.
192
+ const manifestOpts = {
193
+ ...(params.contextDir ? { contextDir: params.contextDir } : {}),
194
+ ...(params.db !== undefined ? { db: params.db } : {}),
195
+ ...(params.messageText !== undefined ? { messageText: params.messageText } : {}),
196
+ };
197
+ const hasManifestOpts = Object.keys(manifestOpts).length > 0;
360
198
  const manifestSkills = params.processKey
361
- ? getSkillsForProcess(params.processKey)
362
- : getSkillsForEvent(params.eventType);
199
+ ? resolveSkillManifestForProcess(params.processKey, hasManifestOpts ? manifestOpts : undefined)
200
+ : resolveSkillManifest(params.eventType, hasManifestOpts ? manifestOpts : undefined);
363
201
  // Custom bang command override: when the dispatcher passes a slug array
364
202
  // we use it verbatim, ignoring the manifest. Empty array is allowed and
365
203
  // means "no skills." `null` keeps manifest behavior — the override is a
366
204
  // partial replacement so a future caller can pass just `profileBody`
367
205
  // without affecting skill selection.
368
- const skills = params.override?.skillSlugs !== null
206
+ const baseSkills = params.override?.skillSlugs !== null
369
207
  && params.override?.skillSlugs !== undefined
370
208
  ? [...params.override.skillSlugs]
371
209
  : manifestSkills;
210
+ // AGENT_DEFINITIONS_DESIGN.md §4.2 — fold the firing Agent's `tools.skills`
211
+ // onto the resolved bundle (union, or replace when `skillsReplace`). A
212
+ // no-op when `extraSkills` is empty/absent, so every non-Agent site keeps
213
+ // its prior set verbatim. Applied AFTER the bang-command override so the
214
+ // two surfaces never silently fight; in practice they never co-occur (an
215
+ // Agent firing carries no `override`).
216
+ const skills = composeSkillSet(baseSkills, params.extraSkills, params.skillsReplace ?? false);
372
217
  const profileBodyOverride = params.override?.profileBody ?? null;
373
218
  // Always materialize the `mail` skill when the manifest asks for it —
374
219
  // even if the current account list is empty. The skill is inert when
@@ -378,13 +223,32 @@ export class SkillsCompiler {
378
223
  // adds their first account mid-session (0→N transition). Filtering
379
224
  // here would leave the skill dir absent forever since refresh only
380
225
  // writes into existing dirs.
226
+ // docs/design/appendices/opencode-backend.md §6.5 / Phase 4 — opencode discovers
227
+ // skills via cwd auto-discovery from `.claude/skills/` (V2) AND uses
228
+ // a per-process agent file at `.opencode/agent/<slug>.md` (V5,
229
+ // singular `agent/`). Routing through `materializeCliSession` would
230
+ // inline skill bodies into AGENTS.md, which we explicitly do NOT
231
+ // want for opencode (skills are auto-discovered by the `skill` tool).
381
232
  if (params.backendId === "claude") {
382
233
  this.materializeClaudeSession(params.sessionDir, profileName, skills, profileBodyOverride, params.processKey ?? params.eventType, params.wikiWorkspaceName);
383
234
  }
235
+ else if (params.backendId === "opencode") {
236
+ this.materializeOpencodeSession(params.sessionDir, profileName, skills, profileBodyOverride, params.processKey ?? params.eventType, params.wikiWorkspaceName);
237
+ }
384
238
  else {
385
239
  this.materializeCliSession(params.sessionDir, profileName, skills, params.backendId, params.processKey ?? params.eventType, profileBodyOverride, params.wikiWorkspaceName);
386
240
  }
387
- return { profile: profileName, skills };
241
+ // docs/design/appendices/fetch-window-cost-reduction.md Phase 1.5 the slim
242
+ // CLI materializer drops every manifest skill except `observations`.
243
+ // The Claude path is wide for fetch_window today (Phase 1 swaps only
244
+ // the system prompt, not the workdir layout). Report what was
245
+ // actually written so log lines / callers see truth, not the
246
+ // manifest's pre-narrow list.
247
+ const effectiveSkills = params.backendId !== "claude"
248
+ && (params.processKey ?? params.eventType) === FETCH_WINDOW_PROCESS_KEY
249
+ ? [FETCH_WINDOW_SLIM_SKILL]
250
+ : skills;
251
+ return { profile: profileName, skills: effectiveSkills };
388
252
  }
389
253
  /** Read raw profile .md without safety injection. */
390
254
  readProfile(profileName) {
@@ -492,8 +356,39 @@ export class SkillsCompiler {
492
356
  mkdirSync(dirname(join(sessionDir, "CLAUDE.md")), { recursive: true });
493
357
  writeFileSync(join(sessionDir, "CLAUDE.md"), profileContent, "utf-8");
494
358
  }
359
+ this.writeSkillsDir(sessionDir, join(".claude", "skills"), skillSlugs, "claude", processKey, wikiWorkspaceName);
360
+ }
361
+ /**
362
+ * docs/design/appendices/skills-unification.md Phase 1 — per-backend skill-dir writer.
363
+ *
364
+ * Writes `<sessionDir>/<destSkillsRootRelative>/<slug>/SKILL.md` for each
365
+ * slug, applying the full per-skill transformation pipeline:
366
+ * variant resolution → brand tokens → partial / reference inlining →
367
+ * service strip → mode filter → deny filter → curation splice → mail
368
+ * `accounts.md`. The destination directory is the only thing that varies
369
+ * across backends:
370
+ *
371
+ * - Claude → `.claude/skills`
372
+ * - OpenCode → `.opencode/skills`
373
+ * - Codex → `.codex/skills`
374
+ * - Gemini → `.gemini/skills`
375
+ *
376
+ * For Codex sessions, this method ALSO prepends a one-line read-sensitive
377
+ * banner to each materialised SKILL.md whose body references a read-
378
+ * sensitive `/api/*` endpoint (those endpoints 401 on Codex because the
379
+ * Codex backend does not hold the read-sensitive token). The banner
380
+ * points the agent at the `## Read-sensitive endpoints are UNAVAILABLE`
381
+ * section already rendered into `AGENTS.md`.
382
+ *
383
+ * Returns the list of slugs that ended up on disk (slugs whose variant
384
+ * resolved to `null` for same-backend native MCP and slugs whose source
385
+ * SKILL.md was missing are excluded). Callers use this list to render
386
+ * the `<skill-index>` block from a stable, post-materialisation source.
387
+ */
388
+ writeSkillsDir(sessionDir, destSkillsRootRelative, skillSlugs, sessionBackend, processKey, wikiWorkspaceName) {
389
+ const materialised = [];
495
390
  const skillsRoot = this.getSourceSkillsRoot();
496
- const destSkillsRoot = join(sessionDir, ".claude", "skills");
391
+ const destSkillsRoot = join(sessionDir, destSkillsRootRelative);
497
392
  mkdirSync(destSkillsRoot, { recursive: true });
498
393
  // Re-materialize cleanup: a previous turn (especially one with a wider
499
394
  // skill set or a different custom-command override) may have left
@@ -504,11 +399,19 @@ export class SkillsCompiler {
504
399
  // `syncAllUserSkills` is the authoritative writer for that subset.
505
400
  pruneStaleBuiltinSkillDirs(destSkillsRoot, skillsRoot, skillSlugs);
506
401
  for (const skillSlug of skillSlugs) {
402
+ // docs/design/appendices/opencode-backend.md §10 D6 / Phase 4 — slug must match
403
+ // opencode's skill-name lint regex `[a-z0-9-]{1,64}` because a
404
+ // future opencode release may reject names that fall outside it.
405
+ // Warn at materialisation; do not strip the skill (every Aitne
406
+ // built-in slug already conforms — see audit acceptance criterion).
407
+ if (!isValidSkillSlug(skillSlug)) {
408
+ logger.warn({ skillSlug, expected: "[a-z0-9-]{1,64}" }, "skills_compiler.skill_slug_invalid");
409
+ }
507
410
  const src = resolveBuiltinSkillDir(skillsRoot, skillSlug);
508
411
  if (!existsSync(join(src, "SKILL.md"))) {
509
412
  continue;
510
413
  }
511
- const variantFile = this.resolveSkillVariantFile(skillSlug, "claude");
414
+ const variantFile = this.resolveSkillVariantFile(skillSlug, sessionBackend);
512
415
  const destDir = join(destSkillsRoot, skillSlug);
513
416
  // DELEGATED-MODE-V2-DESIGN.md §4.1.2 — same-backend native MCP. The
514
417
  // agent already has the connector's tools in its inventory; a skill
@@ -545,10 +448,10 @@ export class SkillsCompiler {
545
448
  //
546
449
  // Order: refs BEFORE strip-services. The CLI paths
547
450
  // (`materializeCliSession` inline + directory copy) both run refs
548
- // before strip; aligning Claude here preserves the byte-equivalence
451
+ // before strip; aligning here preserves the byte-equivalence
549
452
  // contract (plan §3.1) for the case where a reference file carries
550
453
  // `<!-- service:* -->` markers — strip-first would leak those on
551
- // Claude while CLI scrubs them.
454
+ // Claude/OpenCode while CLI scrubs them.
552
455
  const destSkillMdForRefs = join(destDir, "SKILL.md");
553
456
  if (existsSync(destSkillMdForRefs)) {
554
457
  const raw = readFileSync(destSkillMdForRefs, "utf-8");
@@ -578,18 +481,20 @@ export class SkillsCompiler {
578
481
  const destSkillMdForMode = join(destDir, "SKILL.md");
579
482
  if (existsSync(destSkillMdForMode)) {
580
483
  const raw = readFileSync(destSkillMdForMode, "utf-8");
581
- const filtered = applyIntegrationModeFilter(raw, this.integrations, "claude");
484
+ const filtered = applyIntegrationModeFilter(raw, this.integrations, sessionBackend);
582
485
  if (filtered !== raw) {
583
486
  writeFileSync(destSkillMdForMode, filtered, "utf-8");
584
487
  }
585
488
  }
586
489
  // §7.7 — apply tool-deny policy AFTER partial includes and
587
- // service-section stripping. For Claude this rewrites the
588
- // `allowed-tools` frontmatter; the SDK enforces hard.
490
+ // service-section stripping. For the Claude SDK this rewrites the
491
+ // `allowed-tools` frontmatter (hard); for opencode the rewrite is
492
+ // a soft-enforcement prose body addition that the runtime config
493
+ // doubles up via `permission.bash.deny` rules.
589
494
  const destSkillMdForDeny = join(destDir, "SKILL.md");
590
495
  if (existsSync(destSkillMdForDeny)) {
591
496
  const raw = readFileSync(destSkillMdForDeny, "utf-8");
592
- const filtered = applyAllDeniedToolsForSkill(raw, skillSlug, "claude", this.integrations);
497
+ const filtered = applyAllDeniedToolsForSkill(raw, skillSlug, sessionBackend, this.integrations);
593
498
  if (filtered !== raw) {
594
499
  writeFileSync(destSkillMdForDeny, filtered, "utf-8");
595
500
  }
@@ -608,7 +513,141 @@ export class SkillsCompiler {
608
513
  ? renderMailAccountsMd(this.mailAccounts)
609
514
  : EMPTY_MAIL_ACCOUNTS_MD, "utf-8");
610
515
  }
516
+ // Phase 1 §"Codex read-sensitive banner inheritance" — prepend the
517
+ // 3-line caveat banner to every Codex skill body that touches a
518
+ // read-sensitive `/api/*` endpoint. Skipped for the other three
519
+ // backends: Claude / Gemini hold the read-sensitive token; OpenCode
520
+ // surfaces those routes via its own credential flow.
521
+ if (sessionBackend === "codex") {
522
+ prependCodexReadSensitiveBanner(join(destDir, "SKILL.md"));
523
+ }
524
+ materialised.push(skillSlug);
611
525
  }
526
+ return materialised;
527
+ }
528
+ /**
529
+ * docs/design/appendices/opencode-backend.md §6.5 / Phase 4 — opencode-specific
530
+ * materialisation.
531
+ *
532
+ * Three on-disk artefacts are written per session:
533
+ * 1. `AGENTS.md` (cwd-auto-discovered by opencode per V1) — same
534
+ * shape as `materializeCliSession` produces for Codex EXCEPT
535
+ * skill bodies are NOT inlined (skills auto-discover from
536
+ * `.claude/skills/` via opencode's `skill` tool — V2). Includes
537
+ * safety, character, behavioral rules, daemon-API, integration
538
+ * routing tables, and the runtime profile body.
539
+ * 2. `.opencode/agent/<profile-slug>.md` (singular `agent/` per V5)
540
+ * — the per-process agent persona with V5-correct frontmatter
541
+ * (`mode: primary`, `permission` block keyed only on
542
+ * `edit/bash/webfetch/doom_loop/external_directory` — NO `read`
543
+ * key per V5 contract). Body is the profile body; opencode
544
+ * invokes this via `session.prompt({ body: { agent: <slug> } })`
545
+ * so the per-agent permission overrides the server-level
546
+ * defaults.
547
+ * 3. `.opencode/skills/<slug>/` via `writeSkillsDir` — every
548
+ * manifest skill becomes a discoverable SKILL.md tree opencode
549
+ * reads on `skill` tool activation. `.claude/skills/` is
550
+ * intentionally NOT written: docs/design/appendices/skills-unification.md Phase 1
551
+ * flipped opencode from V2 path (b) (`.claude/skills/`
552
+ * redundancy-avoiding alias) to V2 path (c) (`.opencode/skills/`)
553
+ * so each backend lives under its own brand-aligned namespace.
554
+ *
555
+ * The dispatcher passes `agent: <slug>` (where `<slug>` matches the
556
+ * profile filename without `.md`) on every `session.prompt` call so
557
+ * the right agent file is selected.
558
+ */
559
+ materializeOpencodeSession(sessionDir, profileName, skillSlugs, profileBodyOverride, processKey, wikiWorkspaceName) {
560
+ // ── 1. AGENTS.md — cwd context (no skill inlining) ──
561
+ let profileContent = profileBodyOverride !== null
562
+ ? profileBodyOverride.trim()
563
+ : (this.readProfile(profileName) ?? "");
564
+ profileContent = substituteWikiWorkspaceTokens(profileContent, processKey, wikiWorkspaceName);
565
+ const safetyContent = this.readSafetyPreamble();
566
+ const characterBlock = buildCharacterBlock(this.character);
567
+ // DELEGATED-MODE-V2-DESIGN.md §4.3.3-§4.3.4 — same-backend deny prose.
568
+ // Opencode's MCP-tool deny is server-level only (§5.6 v1: drop the
569
+ // server from config to deny). The prose duplicates intent so the
570
+ // agent doesn't waste tokens drafting calls that will be dropped.
571
+ const sameBackendDenyBlock = buildSameBackendDenyBlock(this.integrations, "opencode");
572
+ const rawInstruction = renderCliInstructionFile({
573
+ backendId: "opencode",
574
+ processKey,
575
+ profileName,
576
+ profileContent,
577
+ safetyContent,
578
+ characterBlock,
579
+ skillSlugs,
580
+ // R3 — OpenCode never gets a `<skill-index>` block. The cwd
581
+ // auto-discovery loader is the source of truth; emitting an index
582
+ // here would inject a second listing the runtime ignores and the
583
+ // agent could mistake for canonical. The `## Skills` slug manifest
584
+ // (no path, no inlined bodies) survives as a turn-scope hint.
585
+ skillPreamble: null,
586
+ skillIndexBlock: null,
587
+ sameBackendDenyBlock,
588
+ });
589
+ const instruction = substituteWikiWorkspaceTokens(substituteIntegrationRoutingTables(rawInstruction, this.integrations), processKey, wikiWorkspaceName);
590
+ writeFileSync(join(sessionDir, "AGENTS.md"), instruction, "utf-8");
591
+ // ── 2. .opencode/agent/<profileName>.md — V5 frontmatter wrapper ──
592
+ this.writeOpencodeAgentFile(sessionDir, profileName, profileContent, safetyContent, characterBlock);
593
+ // ── 3. .opencode/skills/ — auto-discovered by opencode 1.14+ ──
594
+ // docs/design/appendices/skills-unification.md Phase 1 — opencode 1.14+ auto-discovers
595
+ // skills from `.opencode/skills/<slug>/SKILL.md` (V2 path (c),
596
+ // empirically verified). The earlier path (b) (`.claude/skills/`)
597
+ // worked as a redundancy-avoiding alias; per-backend brand-aligned
598
+ // naming now picks (c) explicitly.
599
+ this.writeSkillsDir(sessionDir, join(".opencode", "skills"), skillSlugs, "opencode", processKey, wikiWorkspaceName);
600
+ }
601
+ /**
602
+ * docs/design/appendices/opencode-backend.md §6.5 / V5 — write the per-process agent
603
+ * profile to `.opencode/agent/<slug>.md` (singular `agent/`; the
604
+ * plural form does NOT register per V5).
605
+ *
606
+ * Frontmatter shape (V5-correct keys only):
607
+ * - `mode: primary` — opencode's primary-agent mode; subagent is
608
+ * reserved for the disabled `task` tool path.
609
+ * - NO `permission` block here — the server-level
610
+ * `OpencodeRuntimeConfig.permission` is the per-session truth and
611
+ * is stricter for narrow agents (delegated runs use a separate
612
+ * `delegated-<callId>` agent file with its own tight permission).
613
+ * Emitting `permission: {}` here would NOT widen anything (the
614
+ * server-level deny still wins), but the absence keeps the
615
+ * frontmatter a manifest and avoids drift between two seats.
616
+ * - NO `model` field — opencode falls back to `OPENCODE_CONFIG_CONTENT.model`
617
+ * (set per-session by `OpencodeCore`'s runtime-config builder),
618
+ * and the dispatcher additionally overrides per `session.prompt`
619
+ * body. Pinning here would either drift from the per-call value
620
+ * or duplicate it.
621
+ *
622
+ * Body composition mirrors AGENTS.md (safety + character + profile)
623
+ * so an `agent: <slug>` invocation that REPLACES opencode's default
624
+ * cwd context still gets safety/character rules — V5 confirmed the
625
+ * agent body becomes the system prompt for that turn.
626
+ */
627
+ writeOpencodeAgentFile(sessionDir, profileName, profileBody, safetyContent, characterBlock) {
628
+ const agentDir = join(sessionDir, ".opencode", "agent");
629
+ mkdirSync(agentDir, { recursive: true });
630
+ // Strip a description from the profile body's first paragraph for
631
+ // the frontmatter `description` field. Opencode displays this in
632
+ // its agent picker; we use a stable phrasing so re-renders produce
633
+ // identical bytes.
634
+ const description = `${APP_NAME} ${profileName} — per-process persona`;
635
+ const frontmatter = [
636
+ "---",
637
+ `description: ${description}`,
638
+ "mode: primary",
639
+ "---",
640
+ "",
641
+ ].join("\n");
642
+ const bodySections = [];
643
+ if (safetyContent)
644
+ bodySections.push(safetyContent);
645
+ if (characterBlock)
646
+ bodySections.push(characterBlock);
647
+ if (profileBody.trim())
648
+ bodySections.push(profileBody.trim());
649
+ const body = bodySections.join("\n\n");
650
+ writeFileSync(join(agentDir, `${profileName}.md`), `${frontmatter}${body}\n`, "utf-8");
612
651
  }
613
652
  /**
614
653
  * P22 §1.5 — splice CURATION anchors in a single skill's materialized
@@ -648,64 +687,121 @@ export class SkillsCompiler {
648
687
  writeFileSync(skillMdPath, result.body, "utf-8");
649
688
  }
650
689
  }
651
- materializeCliSession(sessionDir, profileName, skillSlugs, backendId, processKey, profileBodyOverride, wikiWorkspaceName) {
652
- // Skills are inlined in the instruction file (AGENTS.md / GEMINI.md) for
653
- // guaranteed availability AND copied to the backend-specific skill
654
- // directory for native CLI skill discovery. The directory copy only adds
655
- // ~20 tokens per skill at session start (name + description); full body
656
- // is lazy-loaded on activation. Belt-and-suspenders: inline ensures task
657
- // flow prompts always have API references in context; directories let the
658
- // CLI's native skill activation and tooling work.
690
+ /**
691
+ * docs/design/appendices/skills-unification.md Phase 1 item 15 the slim path does NOT
692
+ * emit a `<skill-index>` block or the skill-discovery preamble. The
693
+ * fetch_window system prompt is a self-contained operational contract
694
+ * (one-window-one-curl, no sub-tasks, exactly-one JSON-on-stdout) and
695
+ * the only skill copied (`observations`) is referenced inline by the
696
+ * runner-emitted user prompt. Adding the index would mis-signal the
697
+ * fetcher to scan for skills before executing the acquisition plan.
698
+ *
699
+ * docs/design/appendices/fetch-window-cost-reduction.md Phase 1.5 — slim instruction-file
700
+ * materializer for `routine.fetch_window` on Codex / Gemini CLI.
701
+ *
702
+ * Mirrors the Claude SDK's Phase 1 systemPrompt swap (the same
703
+ * `agent-assets/system-prompts/routine-fetch-window.md` template is the
704
+ * single source of truth): write the slim body verbatim as AGENTS.md /
705
+ * GEMINI.md and copy only the `observations` skill — the
706
+ * `/api/observations/batch` POST contract is the fetcher's sole
707
+ * structural assertion. The integration partial inlined by the runner
708
+ * (`routine-fetch-window-runner.ts:reassemblePrompt`) covers the
709
+ * per-attempt call shape, so `mail` / `notion` / `external-services` /
710
+ * `attach` skill bodies are deliberately omitted.
711
+ *
712
+ * No safety preamble / character / behavioral-rules / daemon-API
713
+ * sections — the slim template restates the only rules the fetcher
714
+ * needs (localhost-only curl, no sub-tasks, no context writes, no
715
+ * notify, JSON-on-stdout-and-exit). The destructive-action policy layer
716
+ * (absolute-block list, Codex sandbox, Gemini admin TOML) still applies
717
+ * unchanged at runtime.
718
+ *
719
+ * The `<mcp-servers>` section is appended downstream by
720
+ * `services/mcp/session-materializer.ts:appendMcpSection` exactly as on
721
+ * the wide path — Phase 3's allowlist filter, when it lands, will scope
722
+ * that section without further changes here.
723
+ */
724
+ materializeFetchWindowCliSession(sessionDir, backendId) {
725
+ mkdirSync(sessionDir, { recursive: true });
726
+ const slim = loadFetchWindowSystemPrompt();
727
+ writeFileSync(join(sessionDir, cliInstructionFileName(backendId)), slim, "utf-8");
728
+ // Copy ONLY the `observations` skill dir. The wide path's prune step
729
+ // is replaced by an explicit single-slug list — `pruneStaleBuiltinSkillDirs`
730
+ // removes any other built-in skill dir that a prior re-materialization
731
+ // (e.g. a fallback-driven wide path on the same workdir) may have left.
732
+ const cliSkillsRoot = cliSkillsDirName(backendId);
733
+ if (cliSkillsRoot === null)
734
+ return; // Claude-only — fetch_window slim runs on Claude SDK natively.
659
735
  const skillsRoot = this.getSourceSkillsRoot();
660
- const skillContents = {};
661
- for (const skillSlug of skillSlugs) {
662
- const src = resolveBuiltinSkillDir(skillsRoot, skillSlug);
663
- const variantFile = this.resolveSkillVariantFile(skillSlug, backendId);
664
- // DELEGATED-MODE-V2-DESIGN.md §4.1.2 same-backend native MCP path:
665
- // skip the inline. The connector's own tool descriptions, present in
666
- // the CLI's tool inventory at session-init, are the authoritative
667
- // surface for the agent.
668
- if (variantFile === null)
669
- continue;
670
- const skillMdPath = join(src, variantFile);
671
- if (!existsSync(skillMdPath)) {
672
- continue;
673
- }
674
- let raw = substituteBrandTokens(readFileSync(skillMdPath, "utf-8"));
675
- // Resolve {{> base }} partials before inlining. Wrap the result
676
- // SKILL.base.md is read directly from src and would slip past the
677
- // single-point-of-change contract if it grew an `{APP_NAME}` token.
678
- raw = substituteBrandTokens(renderPartialIncludes(raw, join(src, "SKILL.base.md")));
679
- // Resolve `{{> ref:<name> }}` directives by inlining
680
- // `references/<name>.md` from the source skill dir. Runs AFTER the
681
- // base-partial resolver so a base-partial fragment can itself carry
682
- // `{{> ref:* }}` markers (one-level nesting cap; references inside
683
- // references are intentionally NOT resolved per §4.7 / NG5). Same
684
- // src-bypass concern as above wrap the result.
685
- raw = substituteBrandTokens(renderReferenceIncludes(raw, src));
686
- raw = substituteWikiWorkspaceTokens(raw, processKey, wikiWorkspaceName);
687
- // Strip unconfigured service sections before inlining
688
- if (skillSlug === "external-services" && this.configuredServices.size > 0) {
689
- raw = stripUnconfiguredServices(raw, this.configuredServices);
690
- }
691
- // Mode-conditional sectionssee materializeClaudeSession for the
692
- // ordering rationale. Same filter, same ordering: service-strip
693
- // then mode-filter then deny.
694
- raw = applyIntegrationModeFilter(raw, this.integrations, backendId);
695
- // §7.7 — apply tool-deny policy. For CLI backends this appends the
696
- // soft-enforcement prose block; the inline-into-AGENTS.md path
697
- // strips frontmatter below, so the deny block must already be in
698
- // body content before that strip.
699
- raw = applyAllDeniedToolsForSkill(raw, skillSlug, backendId, this.integrations);
700
- // Inline content for instruction file strip frontmatter (Claude-specific
701
- // YAML metadata like allowed-tools has no meaning for CLI backends).
702
- skillContents[skillSlug] = stripFrontmatter(raw);
736
+ const destSkillsRoot = join(sessionDir, cliSkillsRoot, "skills");
737
+ mkdirSync(destSkillsRoot, { recursive: true });
738
+ pruneStaleBuiltinSkillDirs(destSkillsRoot, skillsRoot, [FETCH_WINDOW_SLIM_SKILL]);
739
+ const src = resolveBuiltinSkillDir(skillsRoot, FETCH_WINDOW_SLIM_SKILL);
740
+ const skillMdPath = join(src, "SKILL.md");
741
+ if (!existsSync(skillMdPath))
742
+ return;
743
+ const destDir = join(destSkillsRoot, FETCH_WINDOW_SLIM_SKILL);
744
+ cpSync(src, destDir, { recursive: true });
745
+ substituteBrandTokensInDir(destDir);
746
+ // No `substituteWikiWorkspaceTokensInDir` fetch_window never touches
747
+ // wiki workspace state, and the resolver is a no-op for non-wiki
748
+ // process keys anyway.
749
+ let adapted = substituteBrandTokens(readFileSync(skillMdPath, "utf-8"));
750
+ // observations/SKILL.md ships no `{{> base }}` or `{{> ref:* }}`
751
+ // directives today, but run the resolvers anyway so a future curation
752
+ // edit cannot silently drop content. Idempotent on plain content.
753
+ adapted = substituteBrandTokens(renderPartialIncludes(adapted, join(src, "SKILL.base.md")));
754
+ adapted = substituteBrandTokens(renderReferenceIncludes(adapted, src));
755
+ // Mode-conditional filter observations/SKILL.md carries
756
+ // `<!-- mode:<predicate>:notion -->` markers (lines 273-345 today)
757
+ // because the source / consume contract differs across `direct` /
758
+ // `delegated-same` / `delegated-cross` / `native` / `disabled`. The
759
+ // wide path applies this filter at `materializeCliSession`; the
760
+ // slim path must match so the agent doesn't get every mode's prose
761
+ // for every integration. Idempotent on bodies that lack markers.
762
+ adapted = applyIntegrationModeFilter(adapted, this.integrations, backendId);
763
+ // Tool-deny policy stays in force — even though the fetcher is fed a
764
+ // narrow allowlist, the soft-enforcement prose lands in the body
765
+ // BEFORE the CLI frontmatter strip so it's not lost.
766
+ adapted = applyAllDeniedToolsForSkill(adapted, FETCH_WINDOW_SLIM_SKILL, backendId, this.integrations);
767
+ // docs/design/appendices/skills-unification.md Phase 1 §R6 frontmatter stays intact
768
+ // across all backends. `adaptSkillForCli` is gone; the source body's
769
+ // YAML preamble flows through verbatim.
770
+ writeFileSync(join(destDir, "SKILL.md"), adapted, "utf-8");
771
+ this.spliceCurationAnchorsInSkill(destDir, FETCH_WINDOW_SLIM_SKILL);
772
+ }
773
+ materializeCliSession(sessionDir, profileName, skillSlugs, backendId, processKey, profileBodyOverride, wikiWorkspaceName) {
774
+ // docs/design/appendices/fetch-window-cost-reduction.md Phase 1.5 divert
775
+ // `routine.fetch_window` to a slim materializer that mirrors the
776
+ // Claude SDK's Phase 1 systemPrompt swap. Custom bang commands cannot
777
+ // reach this branch (they bind to `messaging.custom_command`), so
778
+ // `profileBodyOverride` is intentionally NOT forwarded.
779
+ if (processKey === FETCH_WINDOW_PROCESS_KEY) {
780
+ this.materializeFetchWindowCliSession(sessionDir, backendId);
781
+ return;
782
+ }
783
+ // docs/design/appendices/skills-unification.md Phase 1 — directory-based skill delivery.
784
+ // The Codex / Gemini CLIs have no native cwd auto-discovery today, so
785
+ // the instruction file (AGENTS.md / GEMINI.md) carries a compact
786
+ // `<skill-index>` block and the agent `Read`s each `SKILL.md` from the
787
+ // per-backend dir on demand. Skill bodies are NEVER inlined into the
788
+ // instruction file.
789
+ //
790
+ // OpenCode reaches `materializeOpencodeSession` instead, so this method
791
+ // only handles Codex and Gemini. The defensive `null` check below
792
+ // protects future backends that might temporarily route through here
793
+ // before getting their own materialiser.
794
+ const cliSkillsDir = cliSkillsDirName(backendId);
795
+ if (cliSkillsDir === null) {
796
+ throw new Error(`materializeCliSession: no skills directory mapped for backend "${backendId}"`);
703
797
  }
798
+ const destSkillsRootRelative = join(cliSkillsDir, "skills");
799
+ const materialisedSlugs = this.writeSkillsDir(sessionDir, destSkillsRootRelative, skillSlugs, backendId, processKey, wikiWorkspaceName);
704
800
  // Read profile and safety separately so renderCliInstructionFile can
705
801
  // place safety at the top level for prominence (instead of burying it
706
802
  // inside the profile section). For custom bang commands the dispatcher
707
803
  // passes a `profileBodyOverride` that replaces the persona body; the
708
- // safety + character + skills sections still wrap around it via
804
+ // safety + character + skill index sections still wrap around it via
709
805
  // `renderCliInstructionFile`.
710
806
  let profileContent = profileBodyOverride !== null
711
807
  ? profileBodyOverride.trim()
@@ -721,6 +817,18 @@ export class SkillsCompiler {
721
817
  // prose duplicates intent so the agent doesn't waste tokens drafting
722
818
  // calls that will be denied at the policy layer.
723
819
  const sameBackendDenyBlock = buildSameBackendDenyBlock(this.integrations, backendId);
820
+ // docs/design/appendices/skills-unification.md Phase 1 §"Skill preamble" — render the
821
+ // universal preamble + `<skill-index>` block. The index is derived
822
+ // from the **materialised** SKILL.md frontmatter on disk so curation /
823
+ // mode-filter / deny passes are reflected. Reading post-materialisation
824
+ // also keeps user-authored slugs synced by `syncAllUserSkills` (which
825
+ // runs LATER from the workdir layer) out of the index — those land in
826
+ // the same dir but are appended after this render. The
827
+ // `refreshSkillIndexBlock` helper (called by workdir.ts post-sync) is
828
+ // responsible for splicing user-authored slugs into the block.
829
+ const skillPreamble = loadSkillIndexPreamble(this.workspaceDir);
830
+ const destSkillsRootAbs = join(sessionDir, destSkillsRootRelative);
831
+ const skillIndexBlock = renderSkillIndexBlock(destSkillsRootAbs, destSkillsRootRelative);
724
832
  const rawInstruction = renderCliInstructionFile({
725
833
  backendId,
726
834
  processKey,
@@ -728,680 +836,17 @@ export class SkillsCompiler {
728
836
  profileContent,
729
837
  safetyContent,
730
838
  characterBlock,
731
- skillSlugs,
732
- skillContents,
839
+ skillSlugs: materialisedSlugs,
840
+ skillPreamble,
841
+ skillIndexBlock,
733
842
  sameBackendDenyBlock,
734
843
  });
735
844
  // INTEGRATION_NATIVE_MODE_DESIGN.md §7.3 — substitute the
736
845
  // `<integration-routing-table>` placeholder in the rendered
737
846
  // instruction file. Runs after the whole document is assembled so
738
- // placeholders anywhere (profile body, inlined skill bodies,
739
- // safety preamble) all resolve in one pass. No-op when neither
740
- // placeholder string is present.
847
+ // placeholders anywhere (profile body, preamble, index) all resolve
848
+ // in one pass.
741
849
  const instruction = substituteWikiWorkspaceTokens(substituteIntegrationRoutingTables(rawInstruction, this.integrations), processKey, wikiWorkspaceName);
742
- writeFileSync(join(sessionDir, backendId === "codex" ? "AGENTS.md" : "GEMINI.md"), instruction, "utf-8");
743
- // Copy skills to the backend-specific skill directory for native CLI
744
- // discovery: .codex/skills/<slug>/ or .gemini/skills/<slug>/
745
- const cliSkillsDir = cliSkillsDirName(backendId);
746
- const destSkillsRoot = join(sessionDir, cliSkillsDir, "skills");
747
- mkdirSync(destSkillsRoot, { recursive: true });
748
- // See `materializeClaudeSession` — same prune contract for CLI workdirs.
749
- pruneStaleBuiltinSkillDirs(destSkillsRoot, skillsRoot, skillSlugs);
750
- for (const skillSlug of skillSlugs) {
751
- const src = resolveBuiltinSkillDir(skillsRoot, skillSlug);
752
- const variantFile = this.resolveSkillVariantFile(skillSlug, backendId);
753
- const destDir = join(destSkillsRoot, skillSlug);
754
- // §4.1.2 same-backend short-circuit: no SKILL.md / .codex/skills/<slug>
755
- // / .gemini/skills/<slug> directory written. The connector ships its
756
- // own descriptions; injecting prose only confuses the dispatch.
757
- // Remove any prior-materialization leftovers so a mode flip doesn't
758
- // leak stale prose into the workdir.
759
- if (variantFile === null) {
760
- if (existsSync(destDir)) {
761
- rmSync(destDir, { recursive: true, force: true });
762
- }
763
- continue;
764
- }
765
- const variantPath = join(src, variantFile);
766
- if (!existsSync(variantPath)) {
767
- continue;
768
- }
769
- // Copy the whole skill directory (scripts/, references/, etc.)
770
- cpSync(src, destDir, { recursive: true });
771
- // Resolve `{APP_NAME}` brand tokens in the verbatim copy before any
772
- // downstream transform reads them. Source-of-truth: branding.ts.
773
- substituteBrandTokensInDir(destDir);
774
- substituteWikiWorkspaceTokensInDir(destDir, processKey, wikiWorkspaceName);
775
- // Render variant (resolving partials), adapt frontmatter for CLI, and
776
- // write as SKILL.md in the dest dir.
777
- let adapted = substituteBrandTokens(readFileSync(variantPath, "utf-8"));
778
- // SKILL.base.md and references/*.md are read directly from src by these
779
- // inliners; wrap the results so future tokens added to those files still
780
- // reach single-point-of-change. Idempotent.
781
- adapted = substituteBrandTokens(renderPartialIncludes(adapted, join(src, "SKILL.base.md")));
782
- // Resolve `{{> ref:<name> }}` directives — keeps the
783
- // `.codex/skills/<slug>/SKILL.md` and `.gemini/skills/<slug>/SKILL.md`
784
- // bodies byte-identical to the inline-into-AGENTS.md / GEMINI.md
785
- // copy emitted above (modulo CLI frontmatter strip), preserving the
786
- // "guaranteed availability" contract that motivated this resolver.
787
- adapted = substituteBrandTokens(renderReferenceIncludes(adapted, src));
788
- adapted = substituteWikiWorkspaceTokens(adapted, processKey, wikiWorkspaceName);
789
- if (skillSlug === "external-services" && this.configuredServices.size > 0) {
790
- adapted = stripUnconfiguredServices(adapted, this.configuredServices);
791
- }
792
- // Mode-conditional filter — keep this dest-dir copy byte-aligned with
793
- // the inline copy emitted into AGENTS.md / GEMINI.md (modulo
794
- // adaptSkillForCli's frontmatter strip). The filter is idempotent so
795
- // running it on both copies independently is safe.
796
- adapted = applyIntegrationModeFilter(adapted, this.integrations, backendId);
797
- // §7.7 — apply tool-deny policy BEFORE adaptSkillForCli strips
798
- // frontmatter so the soft-enforcement prose block lands in body
799
- // content (CLI skills carry only `name` + `description` in
800
- // frontmatter, no `allowed-tools` to filter).
801
- adapted = applyAllDeniedToolsForSkill(adapted, skillSlug, backendId, this.integrations);
802
- adapted = adaptSkillForCli(adapted);
803
- writeFileSync(join(destDir, "SKILL.md"), adapted, "utf-8");
804
- // P22 — splice CURATION anchors against overlay/seed JSON so the
805
- // CLI-side .codex/.gemini skill copy stays byte-equivalent to the
806
- // Claude-side copy after curation. No-op when no curation context.
807
- this.spliceCurationAnchorsInSkill(destDir, skillSlug);
808
- if (skillSlug === "mail") {
809
- writeFileSync(join(destDir, "accounts.md"), this.mailAccounts.length > 0
810
- ? renderMailAccountsMd(this.mailAccounts)
811
- : EMPTY_MAIL_ACCOUNTS_MD, "utf-8");
812
- }
813
- }
814
- }
815
- }
816
- export const EMPTY_MAIL_ACCOUNTS_MD = [
817
- "# Mail accounts",
818
- "",
819
- "No active mail accounts are configured right now. The `mail` skill's API",
820
- "calls will fail without an `accountId` — do NOT guess account ids. If no",
821
- "account matches, tell the user no active mail account is configured and",
822
- "stop — account setup is outside this skill's scope.",
823
- "",
824
- ].join("\n");
825
- export function renderMailAccountsMd(accounts) {
826
- const rows = accounts.map((a) => {
827
- const label = a.label ? ` (${a.label})` : "";
828
- return `| \`${a.id}\` | ${a.kind} | ${a.email}${label} | ${a.idleEnabled ? "IDLE" : "poll"} |`;
829
- });
830
- return [
831
- "# Mail accounts",
832
- "",
833
- "Active mail accounts this session can use. Resolve `accountId` from this",
834
- "table before calling `/api/mail/:accountId/*`. Inactive / unhealthy",
835
- "accounts are omitted by design — no global \"primary\" default exists;",
836
- "pick the account from conversation context (reply thread, user mention,",
837
- "or a single active row) and ask when ambiguous.",
838
- "",
839
- "| accountId | kind | email | transport |",
840
- "|---|---|---|---|",
841
- ...rows,
842
- "",
843
- ].join("\n");
844
- }
845
- /**
846
- * Return the backend-specific skills directory name for a given backend.
847
- * Returns null for Claude (which uses `.claude/skills/` managed separately).
848
- */
849
- export function cliSkillsDirName(backendId) {
850
- switch (backendId) {
851
- case "codex": return ".codex";
852
- case "gemini": return ".gemini";
853
- default: return null;
854
- }
855
- }
856
- /**
857
- * Session instruction files the live-overwrite path (design §15.6.1 /
858
- * §15.9) walks when the owner PATCHes `character` mid-session. Each file
859
- * corresponds to a backend (CLAUDE.md = Claude Code SDK, AGENTS.md =
860
- * Codex CLI, GEMINI.md = Gemini CLI). A workdir that has already seen a
861
- * heavy-tier fallback can contain two of these side-by-side — see
862
- * CLAUDE.md "Fallback re-materialization".
863
- */
864
- const CHARACTER_INSTRUCTION_FILES = [
865
- "CLAUDE.md",
866
- "AGENTS.md",
867
- "GEMINI.md",
868
- ];
869
- /**
870
- * Rewrite the `## Character (user-defined)` block inside every backend
871
- * instruction file that currently lives in `workdir`. Used by the
872
- * `PATCH /api/config` live-overwrite path (§15.6.1) so an owner editing
873
- * character on the dashboard doesn't have to wait for the next session
874
- * spawn for the change to land.
875
- *
876
- * Multi-backend aware: a workdir that has seen a Claude→Codex fallback
877
- * contains both CLAUDE.md and AGENTS.md, and both must end up byte-
878
- * identical in their character block. Each write is atomic (tmp +
879
- * rename, both on the same filesystem so rename stays cheap) and
880
- * per-file errors are logged without failing the whole call.
881
- *
882
- * Returns a summary of how many files were rewritten. Useful for
883
- * instrumentation and for the dashboard PATCH handler to log.
884
- *
885
- * The helper is an FS wrapper: its pure parse/compose half lives in
886
- * `character-block.ts` and is covered 100% there. This side is excluded
887
- * from coverage along with the rest of `skills-compiler.ts`.
888
- */
889
- export function rewriteCharacterBlock(workdir, character) {
890
- const summary = { rewritten: 0, skipped: 0, failed: 0 };
891
- for (const name of CHARACTER_INSTRUCTION_FILES) {
892
- const target = join(workdir, name);
893
- if (!existsSync(target)) {
894
- summary.skipped++;
895
- continue;
896
- }
897
- try {
898
- const current = readFileSync(target, "utf-8");
899
- const next = applyCharacterBlockRewrite(current, character);
900
- if (next === current) {
901
- summary.skipped++;
902
- continue;
903
- }
904
- // `.tmp` lives next to the target so the rename stays on one
905
- // filesystem (design R1 mitigation).
906
- const tmp = `${target}.tmp`;
907
- writeFileSync(tmp, next, "utf-8");
908
- renameSync(tmp, target);
909
- summary.rewritten++;
910
- }
911
- catch (err) {
912
- // Per-file logging so a partial failure (e.g. CLAUDE.md written,
913
- // AGENTS.md EACCES) is recoverable post-hoc — the outer PATCH
914
- // handler only sees aggregate totals.
915
- logger.warn({ err, target }, "rewriteCharacterBlock failed to update instruction file");
916
- summary.failed++;
917
- }
918
- }
919
- return summary;
920
- }
921
- function renderCliInstructionFile(params) {
922
- const toolName = params.backendId === "codex" ? "AGENTS.md" : "GEMINI.md";
923
- const parts = [
924
- `# ${APP_NAME} ${toolName}`,
925
- "",
926
- `Process key: \`${params.processKey}\``,
927
- `Profile: \`${params.profileName}\``,
928
- "",
929
- ];
930
- // Safety invariants at top level for prominence — CLI backends don't
931
- // have a separate project-instruction layer, so burying safety inside
932
- // the profile section risks it being overlooked by weaker models.
933
- if (params.safetyContent) {
934
- parts.push(params.safetyContent, "");
935
- }
936
- // User-defined character sits immediately after safety so it strictly
937
- // outranks every profile / skill / task-flow layer below it, and
938
- // strictly below safety (design §15.4.2 / §15.5).
939
- if (params.characterBlock) {
940
- parts.push(params.characterBlock, "");
941
- }
942
- // DELEGATED-MODE-V2-DESIGN.md §4.3.4 — same-backend integration deny block.
943
- // Sits right after character / safety (above behavioral rules + skills) so
944
- // weak models cannot miss it. For Codex this is the only enforcement
945
- // surface; for Gemini it duplicates the admin-policy hard-deny.
946
- if (params.sameBackendDenyBlock) {
947
- parts.push(params.sameBackendDenyBlock, "");
948
- }
949
- // Output-language pointer paragraph (design `output-language-policy.md`
950
- // §13.3). Identical byte-for-byte across CLAUDE.md / AGENTS.md /
951
- // GEMINI.md — declarative only, never inlines the current
952
- // `primaryLanguage` (that lives in the per-turn XML and would go
953
- // stale here on a PATCH /api/config mid-session).
954
- parts.push(renderOutputLanguagePolicyPointer(), "");
955
- // Behavioral rules that Claude Code receives via system prompt append but
956
- // CLI backends don't have a system prompt layer for.
957
- parts.push("## Behavioral rules", "", "- WhatsApp outbound messages are prefixed by the daemon. Do not add that prefix yourself unless the user explicitly asks.", "");
958
- // Daemon-API usage hoisted ABOVE the skills (was: appended at the end
959
- // of the file). Skill bodies inline below carry hundreds of `curl
960
- // http://localhost:8321/api/...` examples; for Codex specifically those
961
- // examples target endpoints that return 401 because Codex does not
962
- // hold the read-sensitive token. Surfacing the constraint up-front
963
- // gives the agent the routing rule before it reads the first skill.
964
- // For Gemini / Claude the section is informational; the position is
965
- // kept consistent so the rendered file shape is uniform.
966
- parts.push(renderDaemonApiUsageSection(params.backendId !== "codex"), "");
967
- parts.push("## Runtime profile", "", params.profileContent.trim(), "", "## Skills", "");
968
- if (params.skillSlugs.length === 0) {
969
- parts.push("No process-scoped built-in skills were selected for this turn.");
970
- }
971
- else {
972
- for (const slug of params.skillSlugs) {
973
- const content = params.skillContents[slug];
974
- if (content) {
975
- parts.push(`### ${slug}`, "", content.trim(), "");
976
- }
977
- else {
978
- parts.push(`### ${slug}`, "", `See \`skills/${slug}/SKILL.md\` for details.`, "");
979
- }
980
- }
981
- }
982
- parts.push("", "User-authored skills may also exist under `skills/<name>/SKILL.md`.");
983
- return parts.join("\n");
984
- }
985
- function renderDaemonApiUsageSection(readSensitiveAvailable) {
986
- const lines = [
987
- "## Daemon API Usage",
988
- "",
989
- "- Use plain `curl` for daemon API calls. The daemon prepends a session-local wrapper on PATH.",
990
- "- Never use absolute curl paths, alternative HTTP clients, connection overrides, or custom auth headers.",
991
- ];
992
- if (readSensitiveAvailable) {
993
- lines.push("- The wrapper auto-attaches session auth for read-sensitive endpoints.");
994
- }
995
- else {
996
- lines.push("", "### Read-sensitive endpoints are UNAVAILABLE on this backend", "", "Codex sessions do not receive the read-sensitive daemon token. The", "wrapper still prepends headers it can supply, but the daemon answers", "personal-data reads with `401 Unauthorized` regardless. Endpoints", "below are affected; the skill bodies in `## Skills` describe them", "as if they were available — treat the section as a contract you", "cannot satisfy on this backend.", "", "- Context vault: `GET /api/context/*`, `GET /api/context/list/*`", "- Mail (multi-provider): `GET /api/mail/*` (read), search, providers", "- Calendar (direct mode): `GET /api/calendar/*`", "- Notion (direct mode): `GET /api/notion/{query,search,pages}`", "- Obsidian: `GET /api/obsidian/*`", "- Observations: `GET /api/observations`", "- Reading list / receipts / travel bookings", "", "If a skill body directs you at one of these reads, stop and tell", "the user the task needs a different backend (Claude or Gemini).", "Do not hammer the endpoint — the 401 is permanent for this", "session, not transient. Writes and autonomous-tier endpoints", "stay reachable; the gate is read-sensitive scope only.");
997
- }
998
- return lines.join("\n");
999
- }
1000
- /**
1001
- * Strip service sections from external-services/SKILL.md that correspond to
1002
- * unconfigured integrations. Sections are delimited by HTML comments:
1003
- * <!-- service:calendar --> ... <!-- /service:calendar -->
1004
- * When `configuredServices` is empty the content is returned unchanged — the
1005
- * "no services configured yet" case keeps every section so the agent can see
1006
- * the full menu. Only strips once the user has configured at least one
1007
- * service (and therefore expressed an intent to narrow the surface).
1008
- */
1009
- export function stripUnconfiguredServices(content, configuredServices) {
1010
- if (configuredServices.size === 0)
1011
- return content;
1012
- const servicePattern = /<!-- service:(\w+) -->\n([\s\S]*?)<!-- \/service:\1 -->\n?/g;
1013
- return content.replace(servicePattern, (match, service) => configuredServices.has(service) ? match : "");
1014
- }
1015
- /** Strip YAML frontmatter (--- ... ---) from markdown content. */
1016
- function stripFrontmatter(content) {
1017
- if (!content.startsWith("---"))
1018
- return content;
1019
- const endIdx = content.indexOf("\n---", 3);
1020
- if (endIdx < 0)
1021
- return content;
1022
- return content.slice(endIdx + 4).replace(/^\n+/, "");
1023
- }
1024
- /**
1025
- * Adapt a SKILL.md for CLI backends (Codex / Gemini): retain only `name`,
1026
- * `description`, and `when_to_use` frontmatter fields, stripping
1027
- * Claude-specific fields like `allowed-tools`. The body content is
1028
- * preserved unchanged.
1029
- *
1030
- * `when_to_use` is the secondary trigger-shape clarification documented
1031
- * in `SKILLS-PHASE-2-PLAN.md` §3.2 / §5; the Claude Agent SDK reads it
1032
- * verbatim from `q.when_to_use` (verified against
1033
- * `claude-agent-sdk@0.2.98/cli.js`). Preserving it on the CLI side keeps
1034
- * the per-backend skill frontmatter aligned even though Codex / Gemini
1035
- * do not currently consume the field — drift would surface as a missing
1036
- * activation hint when they eventually do.
1037
- *
1038
- * Assumes `name`, `description`, and `when_to_use` are each single-line
1039
- * YAML scalars (no `|` / `>` block forms). A multi-line `when_to_use:`
1040
- * is matched only by its first line — the `.+` regex stops at the
1041
- * newline — but since YAML block scalars start with the line that
1042
- * contains only `|` or `>`, the captured value would be the empty
1043
- * indicator and the inlined value would be useless. Phase 2 v1 keeps
1044
- * this conservative: callers must use single-line scalars (NG5).
1045
- */
1046
- export function adaptSkillForCli(content) {
1047
- if (!content.startsWith("---"))
1048
- return content;
1049
- const endIdx = content.indexOf("\n---", 3);
1050
- if (endIdx < 0)
1051
- return content;
1052
- const frontmatter = content.slice(4, endIdx);
1053
- const body = content.slice(endIdx + 4);
1054
- const nameMatch = frontmatter.match(/^name:\s*(.+)$/m);
1055
- const descMatch = frontmatter.match(/^description:\s*(.+)$/m);
1056
- const whenMatch = frontmatter.match(/^when_to_use:\s*(.+)$/m);
1057
- // Reject multi-line block scalars (`when_to_use: |` / `when_to_use: >`):
1058
- // their first-line capture would just be the indicator. Falling through
1059
- // to "no when_to_use" matches the documented contract (§3.4.2 #9).
1060
- const whenIsBlockScalar = whenMatch !== null && /^[|>][-+]?\s*$/.test(whenMatch[1].trim());
1061
- const parts = ["---"];
1062
- if (nameMatch)
1063
- parts.push(`name: ${nameMatch[1].trim()}`);
1064
- if (descMatch)
1065
- parts.push(`description: ${descMatch[1].trim()}`);
1066
- if (whenMatch && !whenIsBlockScalar) {
1067
- parts.push(`when_to_use: ${whenMatch[1].trim()}`);
1068
- }
1069
- parts.push("---");
1070
- return parts.join("\n") + body;
1071
- }
1072
- /**
1073
- * Resolve `{{> base }}` include directives in a skill/task-flow variant file.
1074
- * Reads `SKILL.base.md` (or `<key>.base.md` for task flows) from `basePath`
1075
- * and replaces every occurrence of `{{> base }}` with the base file's content
1076
- * (frontmatter stripped). A missing or empty base file is silently ignored.
1077
- *
1078
- * Only `{{> base }}` is supported — this is intentionally minimal (§4.7
1079
- * design note: "~40 lines of pure TS").
1080
- *
1081
- * @deprecated DELEGATED-PROXY-API-DESIGN.md §11 — after Phase D no in-tree
1082
- * skill uses `{{> base }}`: mail / external-services unified their bodies
1083
- * during Phase D, and the lone surviving `notion/SKILL.base.md` was
1084
- * removed in Phase 9 (its hourly-check read-only constraint moved to
1085
- * `routine.hourly_check.md` task-flow where the rule applies in every
1086
- * integration mode, including same-backend delegated where the skill
1087
- * body is dropped). The helper is retained for future composition needs;
1088
- * remove the call sites in `materializeClaudeSession` /
1089
- * `materializeCliSession` when no consumer reappears.
1090
- */
1091
- export function renderPartialIncludes(content, basePath) {
1092
- if (!content.includes("{{> base }}"))
1093
- return content;
1094
- if (!existsSync(basePath))
1095
- return content.replace(/\{\{> base \}\}/g, "");
1096
- const baseRaw = readFileSync(basePath, "utf-8");
1097
- const baseContent = stripFrontmatter(baseRaw).trim();
1098
- return content.replace(/\{\{> base \}\}/g, baseContent);
1099
- }
1100
- /**
1101
- * Resolve `{{> ref:<name> }}` directives in a skill body by inlining
1102
- * `references/<name>.md` (frontmatter stripped) from the skill's source dir.
1103
- *
1104
- * Mirrors `renderPartialIncludes` but is intra-skill, not cross-skill: each
1105
- * skill carries its own `references/` dir. Used by progressive-disclosure
1106
- * skills (planned for `mail`, `roadmap`, `reading`, `user-interview` after
1107
- * Phase 2-B) so heavy reference tables can live next to the skill body
1108
- * without bloating the navigation overview.
1109
- *
1110
- * Behaviour:
1111
- * - Missing `references/<name>.md` → directive replaced with empty string;
1112
- * logged at WARN. (Mirrors the deprecated helper's missing-base behaviour.)
1113
- * - The directive matches `{{> ref:<name> }}` with the strict-kebab name
1114
- * pattern `[a-z][a-z0-9-]*`. Path-traversal (`../`, leading underscore,
1115
- * uppercase) is rejected at the regex level — `existsSync` is never
1116
- * consulted for invalid names.
1117
- * - Multiple occurrences each inline the same file's content (re-read per
1118
- * occurrence — pinned by the unit tests so a later caching refactor must
1119
- * surface as a deliberate change).
1120
- * - Frontmatter on the reference file (if present) is stripped before
1121
- * inline, so reference files can carry `---\nkind: reference\n---`
1122
- * headers for tooling without leaking YAML into skill bodies.
1123
- * - The resolver is NOT fence-aware; a directive inside a triple-backtick
1124
- * fence is still expanded. This matches `renderPartialIncludes` and is
1125
- * deliberate for v1 — fence-aware resolution would be a separate refactor.
1126
- *
1127
- * Phase 2-A ships compiler-only; no in-tree skill carries a directive yet
1128
- * (`skills-manifest.test.ts` pins `0` as the lockstep count). Phase 2-B
1129
- * starts emitting them per the migration map in `SKILLS-PHASE-2-PLAN.md`.
1130
- */
1131
- export function renderReferenceIncludes(content, skillSrcDir) {
1132
- return content.replace(/\{\{> ref:([a-z][a-z0-9-]*) \}\}/g, (_match, name) => {
1133
- const refPath = join(skillSrcDir, "references", `${name}.md`);
1134
- if (!existsSync(refPath)) {
1135
- logger.warn({ skillSrcDir, name }, "renderReferenceIncludes: missing reference file");
1136
- return "";
1137
- }
1138
- return stripFrontmatter(readFileSync(refPath, "utf-8")).trim();
1139
- });
1140
- }
1141
- /**
1142
- * §7.7 — apply the per-integration tool-deny policy to a delegated skill
1143
- * body. Two enforcement modes:
1144
- *
1145
- * - **Claude (hard enforcement):** parse the YAML frontmatter and remove
1146
- * every `allowed-tools` entry whose unsuffixed name (after the
1147
- * descriptor's `toolNamespace`) is in `deniedTools`. The Claude Agent
1148
- * SDK refuses to invoke any tool not present in `allowed-tools`, so
1149
- * this is hard enforcement at the SDK boundary.
1150
- *
1151
- * - **Codex / Gemini (soft enforcement):** append a "Denied tools (do
1152
- * not invoke)" prose block at the end of the skill body listing the
1153
- * full namespaced tool names. The CLI surfaces have no per-tool deny
1154
- * mechanism comparable to Claude's `allowed-tools`; the prose is the
1155
- * only guard. Documented soft-enforcement gap.
1156
- *
1157
- * Stale entries (a deniedTools name that doesn't match any tool in the
1158
- * active backend's `capabilityTools`) are silently ignored — the API
1159
- * already rejects them at PATCH time, but a delegatedBackend swap can
1160
- * leave Claude-namespaced names in a list now active for Codex.
1161
- *
1162
- * Run AFTER `renderPartialIncludes` and `stripUnconfiguredServices` so
1163
- * partial includes and service-section gating land first.
1164
- */
1165
- export function applyDeniedTools(content, integrationKey, backendId, deniedTools) {
1166
- if (deniedTools.length === 0)
1167
- return content;
1168
- const descriptor = INTEGRATION_DESCRIPTORS[integrationKey];
1169
- const connector = descriptor.backendConnectors[backendId];
1170
- if (!connector)
1171
- return content;
1172
- const { active } = filterDeniedToolsForBackend(integrationKey, backendId, deniedTools);
1173
- if (active.length === 0)
1174
- return content;
1175
- const namespacedDenied = active.map((t) => `${connector.toolNamespace}${t}`);
1176
- if (backendId === "claude") {
1177
- return filterClaudeAllowedTools(content, new Set(namespacedDenied));
1178
- }
1179
- return appendCliDenyBlock(content, namespacedDenied);
1180
- }
1181
- /**
1182
- * Strip every `allowed-tools` frontmatter entry whose name appears in
1183
- * `deniedSet`. Preserves frontmatter ordering, line breaks, and any other
1184
- * fields. Tolerates two YAML shapes:
1185
- *
1186
- * allowed-tools:
1187
- * - name1
1188
- * - name2
1189
- *
1190
- * allowed-tools: [name1, name2]
1191
- *
1192
- * The first form is what every skill in `agent-assets/skills/` uses today;
1193
- * the inline form is supported because it's valid YAML and the API + UI
1194
- * have no way to prevent a hand-edited skill from using it.
1195
- */
1196
- function filterClaudeAllowedTools(content, deniedSet) {
1197
- if (!content.startsWith("---"))
1198
- return content;
1199
- const endIdx = content.indexOf("\n---", 3);
1200
- if (endIdx < 0)
1201
- return content;
1202
- const frontmatter = content.slice(4, endIdx);
1203
- const body = content.slice(endIdx + 4);
1204
- const lines = frontmatter.split("\n");
1205
- const out = [];
1206
- let inAllowedTools = false;
1207
- for (const line of lines) {
1208
- if (/^allowed-tools:\s*\[/.test(line)) {
1209
- // Inline-array form: parse, filter, re-emit on one line.
1210
- const m = /^(allowed-tools:\s*)\[([^\]]*)\]/.exec(line);
1211
- if (m) {
1212
- const items = m[2]
1213
- .split(",")
1214
- .map((s) => s.trim().replace(/^["']|["']$/g, ""))
1215
- .filter((s) => s.length > 0 && !deniedSet.has(s));
1216
- out.push(`${m[1]}[${items.join(", ")}]`);
1217
- continue;
1218
- }
1219
- }
1220
- if (/^allowed-tools:\s*$/.test(line)) {
1221
- inAllowedTools = true;
1222
- out.push(line);
1223
- continue;
1224
- }
1225
- if (inAllowedTools) {
1226
- // Block-list form continuation. A block-list item is ` - <name>`;
1227
- // anything else (next top-level key, blank, or end of frontmatter)
1228
- // ends the section.
1229
- const itemMatch = /^\s*-\s*(.+?)\s*$/.exec(line);
1230
- if (itemMatch) {
1231
- const name = itemMatch[1].replace(/^["']|["']$/g, "");
1232
- if (!deniedSet.has(name))
1233
- out.push(line);
1234
- continue;
1235
- }
1236
- // Anything else closes the block.
1237
- inAllowedTools = false;
1238
- }
1239
- out.push(line);
1240
- }
1241
- return `---\n${out.join("\n")}\n---${body}`;
1242
- }
1243
- /**
1244
- * DELEGATED-MODE-V2-DESIGN.md §4.3.3-§4.3.4 — render a top-level prose
1245
- * deny block listing every same-backend integration tool the user has
1246
- * denied. Returns `null` when no integration is in same-backend mode for
1247
- * this backend or the deny lists are empty.
1248
- *
1249
- * Codex (γ outcome): this prose is the ONLY enforcement surface — the
1250
- * Codex CLI's connector apps have no admin-policy or per-tool deny config.
1251
- * The agent profile (`AGENTS.md`) inlines this block above the behavioral
1252
- * rules so it is impossible to miss.
1253
- *
1254
- * Gemini: duplicate intent — admin-policy already hard-denies these tools
1255
- * (§4.3.3 hard enforcement), but echoing the deny in prose saves tokens
1256
- * the model would otherwise spend drafting a doomed call.
1257
- */
1258
- export function buildSameBackendDenyBlock(integrations, sessionBackend) {
1259
- const map = collectSessionDeniedTools(integrations, sessionBackend);
1260
- if (map.size === 0)
1261
- return null;
1262
- const lines = [
1263
- "## Denied tools (per-integration)",
1264
- "",
1265
- "The user has restricted the following connector tools for this session.",
1266
- "Do NOT invoke them in any flow — including hourly check, morning routine,",
1267
- "or DM responses. If a workflow appears to require one, stop and tell the",
1268
- "user the tool is denied.",
1269
- ];
1270
- for (const [key, names] of map.entries()) {
1271
- lines.push("", `### ${key}`, "");
1272
- for (const n of names)
1273
- lines.push(`- \`${n}\``);
1274
- }
1275
- return lines.join("\n");
1276
- }
1277
- /**
1278
- * Append a soft-enforcement deny block to a CLI skill body. The block is
1279
- * idempotent — re-running with the same denied set produces identical
1280
- * output.
1281
- */
1282
- function appendCliDenyBlock(content, namespacedDenied) {
1283
- // Strip any prior deny block we wrote, so re-materialization with a
1284
- // changed list doesn't accumulate stale ones. The block starts with
1285
- // `\n## Denied tools (do not invoke)` (one preceding newline, the join
1286
- // contributes the second) and runs until either the next `## ` heading
1287
- // or end of file.
1288
- const stripped = content.replace(/\n+## Denied tools \(do not invoke\)[\s\S]*?(?=\n## (?!Denied tools)|$)/, "");
1289
- const items = namespacedDenied.map((n) => `- \`${n}\``).join("\n");
1290
- // Two leading empty strings → block begins with "\n\n## " so the heading
1291
- // sits on its own paragraph (markdown convention) regardless of what
1292
- // trailing whitespace the body carried.
1293
- const block = [
1294
- "",
1295
- "",
1296
- "## Denied tools (do not invoke)",
1297
- "",
1298
- "The user has restricted these connector tools for this integration. Do",
1299
- "NOT invoke them in any flow — including hourly check, morning routine,",
1300
- "or DM responses. If a workflow appears to require one, stop and tell",
1301
- "the user the tool is denied.",
1302
- "",
1303
- items,
1304
- "",
1305
- ].join("\n");
1306
- return stripped.replace(/\s*$/, "") + block;
1307
- }
1308
- /**
1309
- * Apply the deny pass for every integration whose `skillsTouched` OR
1310
- * `deniedToolsAppliesToSkills` includes the given skill slug. A skill that
1311
- * touches no integration leaves content unchanged. Touching multiple
1312
- * integrations runs the pass once per integration so each contributes its
1313
- * own deny list.
1314
- *
1315
- * Hard enforcement of the same deny list for cross-backend delegated
1316
- * calls lives at the `POST /api/integrations/:key/invoke` chokepoint
1317
- * (DELEGATED-MODE-V2-DESIGN.md §4.3.2). For same-backend native MCP it
1318
- * is enforced via SDK `disallowedTools` (Claude) / admin policy
1319
- * (Gemini); see `collectSessionDeniedTools` (§4.3.3).
1320
- */
1321
- export function applyAllDeniedToolsForSkill(content, skillSlug, backendId, integrations) {
1322
- let result = content;
1323
- for (const key of INTEGRATION_KEYS) {
1324
- const descriptor = INTEGRATION_DESCRIPTORS[key];
1325
- const touched = descriptor.skillsTouched.includes(skillSlug)
1326
- || (descriptor.deniedToolsAppliesToSkills?.includes(skillSlug) ?? false);
1327
- if (!touched)
1328
- continue;
1329
- const state = integrations[key];
1330
- if (!state)
1331
- continue;
1332
- if (state.mode !== "delegated")
1333
- continue;
1334
- if (!state.delegatedBackend || state.delegatedBackend !== backendId)
1335
- continue;
1336
- const denied = state.deniedTools ?? [];
1337
- if (denied.length === 0)
1338
- continue;
1339
- result = applyDeniedTools(result, key, backendId, denied);
1340
- }
1341
- return result;
1342
- }
1343
- /**
1344
- * Remove any built-in skill directory under `destRoot` whose slug is not
1345
- * in `keep`. Recognises a directory as a built-in by its presence under
1346
- * the source `agent-assets/skills/` tree — anything else (user-authored
1347
- * skill, accounts.md, etc.) is left alone, since `syncAllUserSkills` is
1348
- * the canonical writer for those.
1349
- *
1350
- * Idempotent and side-effect-free when there is nothing to prune.
1351
- * Exported for unit testing only.
1352
- */
1353
- export function pruneStaleBuiltinSkillDirs(destRoot, sourceSkillsRoot, keep) {
1354
- if (!existsSync(destRoot))
1355
- return;
1356
- if (!existsSync(sourceSkillsRoot))
1357
- return;
1358
- const keepSet = new Set(keep);
1359
- // `listBuiltinSlugs` recurses one level into category subdirs (e.g.
1360
- // WIKI_BUILDER_DESIGN.md §9.1 `wiki/`) so wiki slugs are recognised
1361
- // as built-ins for prune purposes even though their source dir is
1362
- // nested. Destination layout stays flat — `<destRoot>/<slug>/` for
1363
- // every slug regardless of source category.
1364
- const builtinSlugs = new Set(listBuiltinSlugs(sourceSkillsRoot));
1365
- for (const entry of readdirSync(destRoot, { withFileTypes: true })) {
1366
- if (!entry.isDirectory())
1367
- continue;
1368
- if (!builtinSlugs.has(entry.name))
1369
- continue;
1370
- if (keepSet.has(entry.name))
1371
- continue;
1372
- rmSync(join(destRoot, entry.name), { recursive: true, force: true });
1373
- }
1374
- }
1375
- function readTreeFiles(root) {
1376
- if (!existsSync(root)) {
1377
- return [];
1378
- }
1379
- const files = [];
1380
- for (const relPath of walkTree(root)) {
1381
- const absPath = join(root, relPath);
1382
- const stat = statSync(absPath);
1383
- files.push({
1384
- path: relPath,
1385
- content: readFileSync(absPath, "utf-8"),
1386
- updatedAt: stat.mtime.toISOString(),
1387
- });
1388
- }
1389
- return files;
1390
- }
1391
- function walkTree(root, current = root) {
1392
- if (!existsSync(current)) {
1393
- return [];
1394
- }
1395
- const entries = readdirSync(current, { withFileTypes: true });
1396
- const files = [];
1397
- for (const entry of entries) {
1398
- const absPath = join(current, entry.name);
1399
- if (entry.isDirectory()) {
1400
- files.push(...walkTree(root, absPath));
1401
- continue;
1402
- }
1403
- files.push(relative(root, absPath));
850
+ writeFileSync(join(sessionDir, cliInstructionFileName(backendId)), instruction, "utf-8");
1404
851
  }
1405
- return files.sort();
1406
852
  }
1407
- //# sourceMappingURL=skills-compiler.js.map