@aitne/daemon 0.1.6 → 0.1.8
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.
- package/dist/adapters/dashboard-adapter.d.ts +18 -2
- package/dist/adapters/dashboard-adapter.d.ts.map +1 -1
- package/dist/adapters/dashboard-adapter.js +101 -51
- package/dist/adapters/dashboard-adapter.js.map +1 -1
- package/dist/adapters/discord.d.ts +8 -0
- package/dist/adapters/discord.d.ts.map +1 -1
- package/dist/adapters/discord.js +100 -21
- package/dist/adapters/discord.js.map +1 -1
- package/dist/adapters/message-hub.d.ts.map +1 -1
- package/dist/adapters/message-hub.js +7 -1
- package/dist/adapters/message-hub.js.map +1 -1
- package/dist/adapters/notification-manager.d.ts +102 -2
- package/dist/adapters/notification-manager.d.ts.map +1 -1
- package/dist/adapters/notification-manager.js +228 -8
- package/dist/adapters/notification-manager.js.map +1 -1
- package/dist/adapters/outbound-text.d.ts +16 -0
- package/dist/adapters/outbound-text.d.ts.map +1 -1
- package/dist/adapters/outbound-text.js +118 -1
- package/dist/adapters/outbound-text.js.map +1 -1
- package/dist/adapters/primary-platform-resolver.d.ts +69 -0
- package/dist/adapters/primary-platform-resolver.d.ts.map +1 -0
- package/dist/adapters/primary-platform-resolver.js +55 -0
- package/dist/adapters/primary-platform-resolver.js.map +1 -0
- package/dist/adapters/slack-adapter.d.ts +28 -0
- package/dist/adapters/slack-adapter.d.ts.map +1 -1
- package/dist/adapters/slack-adapter.js +134 -35
- package/dist/adapters/slack-adapter.js.map +1 -1
- package/dist/adapters/telegram-adapter.d.ts +7 -1
- package/dist/adapters/telegram-adapter.d.ts.map +1 -1
- package/dist/adapters/telegram-adapter.js +49 -18
- package/dist/adapters/telegram-adapter.js.map +1 -1
- package/dist/adapters/whatsapp-adapter.d.ts +33 -0
- package/dist/adapters/whatsapp-adapter.d.ts.map +1 -1
- package/dist/adapters/whatsapp-adapter.js +84 -0
- package/dist/adapters/whatsapp-adapter.js.map +1 -1
- package/dist/api/directory-picker.d.ts.map +1 -1
- package/dist/api/directory-picker.js +14 -0
- package/dist/api/directory-picker.js.map +1 -1
- package/dist/api/env-writer.d.ts.map +1 -1
- package/dist/api/env-writer.js +6 -1
- package/dist/api/env-writer.js.map +1 -1
- package/dist/api/helpers/agent-errors.d.ts +2600 -0
- package/dist/api/helpers/agent-errors.d.ts.map +1 -0
- package/dist/api/helpers/agent-errors.js +2506 -0
- package/dist/api/helpers/agent-errors.js.map +1 -0
- package/dist/api/integration-route-gate.d.ts.map +1 -1
- package/dist/api/integration-route-gate.js +10 -3
- package/dist/api/integration-route-gate.js.map +1 -1
- package/dist/api/routes/agent-schedule-plan-match.d.ts +5 -0
- package/dist/api/routes/agent-schedule-plan-match.d.ts.map +1 -0
- package/dist/api/routes/agent-schedule-plan-match.js +101 -0
- package/dist/api/routes/agent-schedule-plan-match.js.map +1 -0
- package/dist/api/routes/agent-schedule.d.ts +4 -0
- package/dist/api/routes/agent-schedule.d.ts.map +1 -0
- package/dist/api/routes/agent-schedule.js +750 -0
- package/dist/api/routes/agent-schedule.js.map +1 -0
- package/dist/api/routes/agent.d.ts.map +1 -1
- package/dist/api/routes/agent.js +209 -366
- package/dist/api/routes/agent.js.map +1 -1
- package/dist/api/routes/apple-calendar.d.ts.map +1 -1
- package/dist/api/routes/apple-calendar.js +109 -27
- package/dist/api/routes/apple-calendar.js.map +1 -1
- package/dist/api/routes/attachments.d.ts.map +1 -1
- package/dist/api/routes/attachments.js +113 -21
- package/dist/api/routes/attachments.js.map +1 -1
- package/dist/api/routes/backends.d.ts.map +1 -1
- package/dist/api/routes/backends.js +100 -4
- package/dist/api/routes/backends.js.map +1 -1
- package/dist/api/routes/books.d.ts.map +1 -1
- package/dist/api/routes/books.js +58 -18
- package/dist/api/routes/books.js.map +1 -1
- package/dist/api/routes/calendar.d.ts +3 -2
- package/dist/api/routes/calendar.d.ts.map +1 -1
- package/dist/api/routes/calendar.js +330 -55
- package/dist/api/routes/calendar.js.map +1 -1
- package/dist/api/routes/commands.d.ts.map +1 -1
- package/dist/api/routes/commands.js +20 -1
- package/dist/api/routes/commands.js.map +1 -1
- package/dist/api/routes/context/index.d.ts +33 -0
- package/dist/api/routes/context/index.d.ts.map +1 -0
- package/dist/api/routes/context/index.js +193 -0
- package/dist/api/routes/context/index.js.map +1 -0
- package/dist/api/routes/context/locks.d.ts +4 -0
- package/dist/api/routes/context/locks.d.ts.map +1 -0
- package/dist/api/routes/context/locks.js +136 -0
- package/dist/api/routes/context/locks.js.map +1 -0
- package/dist/api/routes/context/path-resolve.d.ts +15 -0
- package/dist/api/routes/context/path-resolve.d.ts.map +1 -0
- package/dist/api/routes/context/path-resolve.js +109 -0
- package/dist/api/routes/context/path-resolve.js.map +1 -0
- package/dist/api/routes/context/permissions.d.ts +35 -0
- package/dist/api/routes/context/permissions.d.ts.map +1 -0
- package/dist/api/routes/context/permissions.js +192 -0
- package/dist/api/routes/context/permissions.js.map +1 -0
- package/dist/api/routes/context/read.d.ts +4 -0
- package/dist/api/routes/context/read.d.ts.map +1 -0
- package/dist/api/routes/context/read.js +295 -0
- package/dist/api/routes/context/read.js.map +1 -0
- package/dist/api/routes/context/repair.d.ts +4 -0
- package/dist/api/routes/context/repair.d.ts.map +1 -0
- package/dist/api/routes/context/repair.js +114 -0
- package/dist/api/routes/context/repair.js.map +1 -0
- package/dist/api/routes/context/snapshots.d.ts +4 -0
- package/dist/api/routes/context/snapshots.d.ts.map +1 -0
- package/dist/api/routes/context/snapshots.js +177 -0
- package/dist/api/routes/context/snapshots.js.map +1 -0
- package/dist/api/routes/context/write.d.ts +4 -0
- package/dist/api/routes/context/write.d.ts.map +1 -0
- package/dist/api/routes/context/write.js +570 -0
- package/dist/api/routes/context/write.js.map +1 -0
- package/dist/api/routes/context.d.ts +2 -43
- package/dist/api/routes/context.d.ts.map +1 -1
- package/dist/api/routes/context.js +415 -558
- package/dist/api/routes/context.js.map +1 -1
- package/dist/api/routes/dashboard/config.d.ts +4 -0
- package/dist/api/routes/dashboard/config.d.ts.map +1 -0
- package/dist/api/routes/dashboard/config.js +499 -0
- package/dist/api/routes/dashboard/config.js.map +1 -0
- package/dist/api/routes/dashboard/conversations.d.ts +4 -0
- package/dist/api/routes/dashboard/conversations.d.ts.map +1 -0
- package/dist/api/routes/dashboard/conversations.js +309 -0
- package/dist/api/routes/dashboard/conversations.js.map +1 -0
- package/dist/api/routes/dashboard/cost-approvals.d.ts +29 -0
- package/dist/api/routes/dashboard/cost-approvals.d.ts.map +1 -0
- package/dist/api/routes/dashboard/cost-approvals.js +259 -0
- package/dist/api/routes/dashboard/cost-approvals.js.map +1 -0
- package/dist/api/routes/dashboard/index.d.ts +27 -0
- package/dist/api/routes/dashboard/index.d.ts.map +1 -0
- package/dist/api/routes/dashboard/index.js +47 -0
- package/dist/api/routes/dashboard/index.js.map +1 -0
- package/dist/api/routes/dashboard/messaging.d.ts +4 -0
- package/dist/api/routes/dashboard/messaging.d.ts.map +1 -0
- package/dist/api/routes/dashboard/messaging.js +351 -0
- package/dist/api/routes/dashboard/messaging.js.map +1 -0
- package/dist/api/routes/dashboard/notifications.d.ts +4 -0
- package/dist/api/routes/dashboard/notifications.d.ts.map +1 -0
- package/dist/api/routes/dashboard/notifications.js +109 -0
- package/dist/api/routes/dashboard/notifications.js.map +1 -0
- package/dist/api/routes/dashboard/oauth-google.d.ts +4 -0
- package/dist/api/routes/dashboard/oauth-google.d.ts.map +1 -0
- package/dist/api/routes/dashboard/oauth-google.js +293 -0
- package/dist/api/routes/dashboard/oauth-google.js.map +1 -0
- package/dist/api/routes/dashboard/schedule-readonly.d.ts +4 -0
- package/dist/api/routes/dashboard/schedule-readonly.d.ts.map +1 -0
- package/dist/api/routes/dashboard/schedule-readonly.js +46 -0
- package/dist/api/routes/dashboard/schedule-readonly.js.map +1 -0
- package/dist/api/routes/dashboard/secrets.d.ts +24 -0
- package/dist/api/routes/dashboard/secrets.d.ts.map +1 -0
- package/dist/api/routes/dashboard/secrets.js +307 -0
- package/dist/api/routes/dashboard/secrets.js.map +1 -0
- package/dist/api/routes/dashboard/snapshots.d.ts +4 -0
- package/dist/api/routes/dashboard/snapshots.d.ts.map +1 -0
- package/dist/api/routes/dashboard/snapshots.js +33 -0
- package/dist/api/routes/dashboard/snapshots.js.map +1 -0
- package/dist/api/routes/dashboard.d.ts.map +1 -1
- package/dist/api/routes/dashboard.js +20 -12
- package/dist/api/routes/dashboard.js.map +1 -1
- package/dist/api/routes/delegated.d.ts +5 -4
- package/dist/api/routes/delegated.d.ts.map +1 -1
- package/dist/api/routes/delegated.js +6 -5
- package/dist/api/routes/delegated.js.map +1 -1
- package/dist/api/routes/docs.d.ts.map +1 -1
- package/dist/api/routes/docs.js +72 -9
- package/dist/api/routes/docs.js.map +1 -1
- package/dist/api/routes/entities.d.ts.map +1 -1
- package/dist/api/routes/entities.js +112 -43
- package/dist/api/routes/entities.js.map +1 -1
- package/dist/api/routes/fs.d.ts.map +1 -1
- package/dist/api/routes/fs.js +27 -12
- package/dist/api/routes/fs.js.map +1 -1
- package/dist/api/routes/git-templates.d.ts.map +1 -1
- package/dist/api/routes/git-templates.js +107 -27
- package/dist/api/routes/git-templates.js.map +1 -1
- package/dist/api/routes/git.d.ts.map +1 -1
- package/dist/api/routes/git.js +55 -11
- package/dist/api/routes/git.js.map +1 -1
- package/dist/api/routes/github.d.ts.map +1 -1
- package/dist/api/routes/github.js +110 -17
- package/dist/api/routes/github.js.map +1 -1
- package/dist/api/routes/integrations/crud-patch.d.ts +17 -0
- package/dist/api/routes/integrations/crud-patch.d.ts.map +1 -0
- package/dist/api/routes/integrations/crud-patch.js +600 -0
- package/dist/api/routes/integrations/crud-patch.js.map +1 -0
- package/dist/api/routes/integrations/crud.d.ts +16 -0
- package/dist/api/routes/integrations/crud.d.ts.map +1 -0
- package/dist/api/routes/integrations/crud.js +158 -0
- package/dist/api/routes/integrations/crud.js.map +1 -0
- package/dist/api/routes/integrations/exec.d.ts +23 -0
- package/dist/api/routes/integrations/exec.d.ts.map +1 -0
- package/dist/api/routes/integrations/exec.js +356 -0
- package/dist/api/routes/integrations/exec.js.map +1 -0
- package/dist/api/routes/integrations/index.d.ts +62 -0
- package/dist/api/routes/integrations/index.d.ts.map +1 -0
- package/dist/api/routes/integrations/index.js +70 -0
- package/dist/api/routes/integrations/index.js.map +1 -0
- package/dist/api/routes/integrations/integrations/crud.d.ts +16 -0
- package/dist/api/routes/integrations/integrations/crud.d.ts.map +1 -0
- package/dist/api/routes/integrations/integrations/crud.js +158 -0
- package/dist/api/routes/integrations/integrations/crud.js.map +1 -0
- package/dist/api/routes/integrations/integrations/index.d.ts +55 -0
- package/dist/api/routes/integrations/integrations/index.d.ts.map +1 -0
- package/dist/api/routes/integrations/integrations/index.js +65 -0
- package/dist/api/routes/integrations/integrations/index.js.map +1 -0
- package/dist/api/routes/integrations/integrations/invoke.d.ts +38 -0
- package/dist/api/routes/integrations/integrations/invoke.d.ts.map +1 -0
- package/dist/api/routes/integrations/integrations/invoke.js +320 -0
- package/dist/api/routes/integrations/integrations/invoke.js.map +1 -0
- package/dist/api/routes/integrations/integrations/probe.d.ts +21 -0
- package/dist/api/routes/integrations/integrations/probe.d.ts.map +1 -0
- package/dist/api/routes/integrations/integrations/probe.js +247 -0
- package/dist/api/routes/integrations/integrations/probe.js.map +1 -0
- package/dist/api/routes/integrations/invoke.d.ts +38 -0
- package/dist/api/routes/integrations/invoke.d.ts.map +1 -0
- package/dist/api/routes/integrations/invoke.js +320 -0
- package/dist/api/routes/integrations/invoke.js.map +1 -0
- package/dist/api/routes/integrations/probe.d.ts +21 -0
- package/dist/api/routes/integrations/probe.d.ts.map +1 -0
- package/dist/api/routes/integrations/probe.js +247 -0
- package/dist/api/routes/integrations/probe.js.map +1 -0
- package/dist/api/routes/integrations.d.ts.map +1 -1
- package/dist/api/routes/integrations.js +65 -13
- package/dist/api/routes/integrations.js.map +1 -1
- package/dist/api/routes/knowledge.d.ts.map +1 -1
- package/dist/api/routes/knowledge.js +13 -2
- package/dist/api/routes/knowledge.js.map +1 -1
- package/dist/api/routes/mail/_pa_wip_mail/app-password.d.ts +4 -0
- package/dist/api/routes/mail/_pa_wip_mail/app-password.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/app-password.js +192 -0
- package/dist/api/routes/mail/_pa_wip_mail/app-password.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/body-helpers.d.ts +55 -0
- package/dist/api/routes/mail/_pa_wip_mail/body-helpers.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/body-helpers.js +91 -0
- package/dist/api/routes/mail/_pa_wip_mail/body-helpers.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/dependencies.d.ts +36 -0
- package/dist/api/routes/mail/_pa_wip_mail/dependencies.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/dependencies.js +2 -0
- package/dist/api/routes/mail/_pa_wip_mail/dependencies.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/gating.d.ts +45 -0
- package/dist/api/routes/mail/_pa_wip_mail/gating.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/gating.js +98 -0
- package/dist/api/routes/mail/_pa_wip_mail/gating.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.d.ts +4 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.js +289 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.d.ts +4 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.js +192 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.d.ts +55 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.js +91 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.d.ts +36 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.js +2 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.d.ts +5 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.js +139 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/gating.d.ts +45 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/gating.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/gating.js +98 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/gating.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/index.d.ts +18 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/index.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/index.js +40 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/index.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/messages.d.ts +15 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/messages.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/messages.js +239 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/messages.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.d.ts +4 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.js +73 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.d.ts +64 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.js +286 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/providers.d.ts +4 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/providers.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/providers.js +73 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/providers.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.d.ts +5 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.js +35 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/validators.d.ts +23 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/validators.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/validators.js +131 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/validators.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.d.ts +64 -0
- package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.js +286 -0
- package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/search-health.d.ts +4 -0
- package/dist/api/routes/mail/_pa_wip_mail/search-health.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/search-health.js +131 -0
- package/dist/api/routes/mail/_pa_wip_mail/search-health.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/validators.d.ts +23 -0
- package/dist/api/routes/mail/_pa_wip_mail/validators.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/validators.js +131 -0
- package/dist/api/routes/mail/_pa_wip_mail/validators.js.map +1 -0
- package/dist/api/routes/mail/accounts.d.ts +4 -0
- package/dist/api/routes/mail/accounts.d.ts.map +1 -0
- package/dist/api/routes/mail/accounts.js +289 -0
- package/dist/api/routes/mail/accounts.js.map +1 -0
- package/dist/api/routes/mail/app-password.d.ts +4 -0
- package/dist/api/routes/mail/app-password.d.ts.map +1 -0
- package/dist/api/routes/mail/app-password.js +192 -0
- package/dist/api/routes/mail/app-password.js.map +1 -0
- package/dist/api/routes/mail/body-helpers.d.ts +56 -0
- package/dist/api/routes/mail/body-helpers.d.ts.map +1 -0
- package/dist/api/routes/mail/body-helpers.js +91 -0
- package/dist/api/routes/mail/body-helpers.js.map +1 -0
- package/dist/api/routes/mail/dependencies.d.ts +36 -0
- package/dist/api/routes/mail/dependencies.d.ts.map +1 -0
- package/dist/api/routes/mail/dependencies.js +2 -0
- package/dist/api/routes/mail/dependencies.js.map +1 -0
- package/dist/api/routes/mail/drafts.d.ts +5 -0
- package/dist/api/routes/mail/drafts.d.ts.map +1 -0
- package/dist/api/routes/mail/drafts.js +139 -0
- package/dist/api/routes/mail/drafts.js.map +1 -0
- package/dist/api/routes/mail/gating.d.ts +45 -0
- package/dist/api/routes/mail/gating.d.ts.map +1 -0
- package/dist/api/routes/mail/gating.js +99 -0
- package/dist/api/routes/mail/gating.js.map +1 -0
- package/dist/api/routes/mail/index.d.ts +18 -0
- package/dist/api/routes/mail/index.d.ts.map +1 -0
- package/dist/api/routes/mail/index.js +40 -0
- package/dist/api/routes/mail/index.js.map +1 -0
- package/dist/api/routes/mail/messages.d.ts +15 -0
- package/dist/api/routes/mail/messages.d.ts.map +1 -0
- package/dist/api/routes/mail/messages.js +239 -0
- package/dist/api/routes/mail/messages.js.map +1 -0
- package/dist/api/routes/mail/outlook-config.d.ts +4 -0
- package/dist/api/routes/mail/outlook-config.d.ts.map +1 -0
- package/dist/api/routes/mail/outlook-config.js +73 -0
- package/dist/api/routes/mail/outlook-config.js.map +1 -0
- package/dist/api/routes/mail/provider-resolver.d.ts +64 -0
- package/dist/api/routes/mail/provider-resolver.d.ts.map +1 -0
- package/dist/api/routes/mail/provider-resolver.js +286 -0
- package/dist/api/routes/mail/provider-resolver.js.map +1 -0
- package/dist/api/routes/mail/providers.d.ts +4 -0
- package/dist/api/routes/mail/providers.d.ts.map +1 -0
- package/dist/api/routes/mail/providers.js +73 -0
- package/dist/api/routes/mail/providers.js.map +1 -0
- package/dist/api/routes/mail/search-health.d.ts +4 -0
- package/dist/api/routes/mail/search-health.d.ts.map +1 -0
- package/dist/api/routes/mail/search-health.js +131 -0
- package/dist/api/routes/mail/search-health.js.map +1 -0
- package/dist/api/routes/mail/tags-folders.d.ts +5 -0
- package/dist/api/routes/mail/tags-folders.d.ts.map +1 -0
- package/dist/api/routes/mail/tags-folders.js +35 -0
- package/dist/api/routes/mail/tags-folders.js.map +1 -0
- package/dist/api/routes/mail/validators.d.ts +23 -0
- package/dist/api/routes/mail/validators.d.ts.map +1 -0
- package/dist/api/routes/mail/validators.js +131 -0
- package/dist/api/routes/mail/validators.js.map +1 -0
- package/dist/api/routes/mail.d.ts.map +1 -1
- package/dist/api/routes/mail.js +259 -67
- package/dist/api/routes/mail.js.map +1 -1
- package/dist/api/routes/managed-tasks.d.ts.map +1 -1
- package/dist/api/routes/managed-tasks.js +142 -54
- package/dist/api/routes/managed-tasks.js.map +1 -1
- package/dist/api/routes/mcp.d.ts.map +1 -1
- package/dist/api/routes/mcp.js +115 -47
- package/dist/api/routes/mcp.js.map +1 -1
- package/dist/api/routes/metrics.d.ts +1 -1
- package/dist/api/routes/metrics.js +2 -2
- package/dist/api/routes/notion.d.ts.map +1 -1
- package/dist/api/routes/notion.js +230 -54
- package/dist/api/routes/notion.js.map +1 -1
- package/dist/api/routes/observations.d.ts.map +1 -1
- package/dist/api/routes/observations.js +40 -169
- package/dist/api/routes/observations.js.map +1 -1
- package/dist/api/routes/obsidian.d.ts.map +1 -1
- package/dist/api/routes/obsidian.js +193 -32
- package/dist/api/routes/obsidian.js.map +1 -1
- package/dist/api/routes/profile-questions.d.ts.map +1 -1
- package/dist/api/routes/profile-questions.js +19 -3
- package/dist/api/routes/profile-questions.js.map +1 -1
- package/dist/api/routes/receipts.d.ts.map +1 -1
- package/dist/api/routes/receipts.js +64 -24
- package/dist/api/routes/receipts.js.map +1 -1
- package/dist/api/routes/recurring-schedules.d.ts.map +1 -1
- package/dist/api/routes/recurring-schedules.js +243 -13
- package/dist/api/routes/recurring-schedules.js.map +1 -1
- package/dist/api/routes/repositories.d.ts.map +1 -1
- package/dist/api/routes/repositories.js +278 -104
- package/dist/api/routes/repositories.js.map +1 -1
- package/dist/api/routes/schedule-model-resolver.d.ts +153 -0
- package/dist/api/routes/schedule-model-resolver.d.ts.map +1 -0
- package/dist/api/routes/schedule-model-resolver.js +282 -0
- package/dist/api/routes/schedule-model-resolver.js.map +1 -0
- package/dist/api/routes/schedule-options.d.ts +25 -0
- package/dist/api/routes/schedule-options.d.ts.map +1 -0
- package/dist/api/routes/schedule-options.js +77 -0
- package/dist/api/routes/schedule-options.js.map +1 -0
- package/dist/api/routes/schedule-validation.d.ts +146 -0
- package/dist/api/routes/schedule-validation.d.ts.map +1 -0
- package/dist/api/routes/schedule-validation.js +153 -0
- package/dist/api/routes/schedule-validation.js.map +1 -0
- package/dist/api/routes/setup.d.ts.map +1 -1
- package/dist/api/routes/setup.js +100 -26
- package/dist/api/routes/setup.js.map +1 -1
- package/dist/api/routes/skills.d.ts.map +1 -1
- package/dist/api/routes/skills.js +81 -30
- package/dist/api/routes/skills.js.map +1 -1
- package/dist/api/routes/sot-bindings.d.ts.map +1 -1
- package/dist/api/routes/sot-bindings.js +46 -11
- package/dist/api/routes/sot-bindings.js.map +1 -1
- package/dist/api/routes/sse.d.ts.map +1 -1
- package/dist/api/routes/sse.js +6 -1
- package/dist/api/routes/sse.js.map +1 -1
- package/dist/api/routes/system.d.ts.map +1 -1
- package/dist/api/routes/system.js +15 -2
- package/dist/api/routes/system.js.map +1 -1
- package/dist/api/routes/travel-bookings.d.ts.map +1 -1
- package/dist/api/routes/travel-bookings.js +26 -9
- package/dist/api/routes/travel-bookings.js.map +1 -1
- package/dist/api/routes/travel-time.d.ts.map +1 -1
- package/dist/api/routes/travel-time.js +50 -10
- package/dist/api/routes/travel-time.js.map +1 -1
- package/dist/api/routes/wiki.d.ts.map +1 -1
- package/dist/api/routes/wiki.js +49 -8
- package/dist/api/routes/wiki.js.map +1 -1
- package/dist/api/server.d.ts +15 -3
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +32 -10
- package/dist/api/server.js.map +1 -1
- package/dist/bootstrap/adapters.d.ts.map +1 -1
- package/dist/bootstrap/adapters.js +7 -4
- package/dist/bootstrap/adapters.js.map +1 -1
- package/dist/bootstrap/api.d.ts +205 -0
- package/dist/bootstrap/api.d.ts.map +1 -0
- package/dist/bootstrap/api.js +443 -0
- package/dist/bootstrap/api.js.map +1 -0
- package/dist/bootstrap/db.d.ts +119 -0
- package/dist/bootstrap/db.d.ts.map +1 -0
- package/dist/bootstrap/db.js +294 -0
- package/dist/bootstrap/db.js.map +1 -0
- package/dist/bootstrap/event-pipeline.d.ts +308 -0
- package/dist/bootstrap/event-pipeline.d.ts.map +1 -0
- package/dist/bootstrap/event-pipeline.js +704 -0
- package/dist/bootstrap/event-pipeline.js.map +1 -0
- package/dist/bootstrap/observers.d.ts +148 -0
- package/dist/bootstrap/observers.d.ts.map +1 -0
- package/dist/bootstrap/observers.js +558 -0
- package/dist/bootstrap/observers.js.map +1 -0
- package/dist/bootstrap/schedule-helpers.d.ts +122 -0
- package/dist/bootstrap/schedule-helpers.d.ts.map +1 -1
- package/dist/bootstrap/schedule-helpers.js +202 -4
- package/dist/bootstrap/schedule-helpers.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -3
- package/dist/config.js.map +1 -1
- package/dist/core/abort-utils.d.ts +14 -0
- package/dist/core/abort-utils.d.ts.map +1 -0
- package/dist/core/abort-utils.js +36 -0
- package/dist/core/abort-utils.js.map +1 -0
- package/dist/core/agent-core.d.ts +22 -3
- package/dist/core/agent-core.d.ts.map +1 -1
- package/dist/core/agent-core.js +3 -1
- package/dist/core/agent-core.js.map +1 -1
- package/dist/core/backends/auth-health-monitor.js +2 -3
- package/dist/core/backends/auth-health-monitor.js.map +1 -1
- package/dist/core/backends/backend-router.d.ts +11 -1
- package/dist/core/backends/backend-router.d.ts.map +1 -1
- package/dist/core/backends/backend-router.js +97 -2
- package/dist/core/backends/backend-router.js.map +1 -1
- package/dist/core/backends/claude-code-core.d.ts +51 -0
- package/dist/core/backends/claude-code-core.d.ts.map +1 -1
- package/dist/core/backends/claude-code-core.js +134 -11
- package/dist/core/backends/claude-code-core.js.map +1 -1
- package/dist/core/backends/claude-tool-collection.js +1 -1
- package/dist/core/backends/codex-core.d.ts +13 -1
- package/dist/core/backends/codex-core.d.ts.map +1 -1
- package/dist/core/backends/codex-core.js +436 -22
- package/dist/core/backends/codex-core.js.map +1 -1
- package/dist/core/backends/gemini-cli-core.d.ts +5 -1
- package/dist/core/backends/gemini-cli-core.d.ts.map +1 -1
- package/dist/core/backends/gemini-cli-core.js +298 -15
- package/dist/core/backends/gemini-cli-core.js.map +1 -1
- package/dist/core/backends/install-methods.d.ts.map +1 -1
- package/dist/core/backends/install-methods.js +22 -0
- package/dist/core/backends/install-methods.js.map +1 -1
- package/dist/core/backends/model-registry.d.ts +9 -4
- package/dist/core/backends/model-registry.d.ts.map +1 -1
- package/dist/core/backends/model-registry.js +153 -23
- package/dist/core/backends/model-registry.js.map +1 -1
- package/dist/core/backends/native-skill-discovery-probe.d.ts +80 -0
- package/dist/core/backends/native-skill-discovery-probe.d.ts.map +1 -0
- package/dist/core/backends/native-skill-discovery-probe.js +175 -0
- package/dist/core/backends/native-skill-discovery-probe.js.map +1 -0
- package/dist/core/backends/opencode-basic-auth-fetch.d.ts +27 -0
- package/dist/core/backends/opencode-basic-auth-fetch.d.ts.map +1 -0
- package/dist/core/backends/opencode-basic-auth-fetch.js +40 -0
- package/dist/core/backends/opencode-basic-auth-fetch.js.map +1 -0
- package/dist/core/backends/opencode-config-builder.d.ts +86 -0
- package/dist/core/backends/opencode-config-builder.d.ts.map +1 -0
- package/dist/core/backends/opencode-config-builder.js +172 -0
- package/dist/core/backends/opencode-config-builder.js.map +1 -0
- package/dist/core/backends/opencode-core.d.ts +316 -0
- package/dist/core/backends/opencode-core.d.ts.map +1 -0
- package/dist/core/backends/opencode-core.js +1502 -0
- package/dist/core/backends/opencode-core.js.map +1 -0
- package/dist/core/backends/opencode-event-mapper.d.ts +133 -0
- package/dist/core/backends/opencode-event-mapper.d.ts.map +1 -0
- package/dist/core/backends/opencode-event-mapper.js +198 -0
- package/dist/core/backends/opencode-event-mapper.js.map +1 -0
- package/dist/core/backends/opencode-mcp.d.ts +82 -0
- package/dist/core/backends/opencode-mcp.d.ts.map +1 -0
- package/dist/core/backends/opencode-mcp.js +165 -0
- package/dist/core/backends/opencode-mcp.js.map +1 -0
- package/dist/core/backends/opencode-server-manager.d.ts +114 -0
- package/dist/core/backends/opencode-server-manager.d.ts.map +1 -0
- package/dist/core/backends/opencode-server-manager.js +222 -0
- package/dist/core/backends/opencode-server-manager.js.map +1 -0
- package/dist/core/backends/opencode-types.d.ts +46 -0
- package/dist/core/backends/opencode-types.d.ts.map +1 -0
- package/dist/core/backends/opencode-types.js +14 -0
- package/dist/core/backends/opencode-types.js.map +1 -0
- package/dist/core/backends/plan-presets.d.ts +18 -5
- package/dist/core/backends/plan-presets.d.ts.map +1 -1
- package/dist/core/backends/plan-presets.js +144 -23
- package/dist/core/backends/plan-presets.js.map +1 -1
- package/dist/core/backends/process-config-cascade.d.ts +35 -0
- package/dist/core/backends/process-config-cascade.d.ts.map +1 -1
- package/dist/core/backends/process-config-cascade.js +35 -1
- package/dist/core/backends/process-config-cascade.js.map +1 -1
- package/dist/core/backends/prompt-utils.d.ts.map +1 -1
- package/dist/core/backends/prompt-utils.js +0 -2
- package/dist/core/backends/prompt-utils.js.map +1 -1
- package/dist/core/backends/quota-reset-hints.d.ts +44 -0
- package/dist/core/backends/quota-reset-hints.d.ts.map +1 -0
- package/dist/core/backends/quota-reset-hints.js +117 -0
- package/dist/core/backends/quota-reset-hints.js.map +1 -0
- package/dist/core/bang-commands/commands-close.d.ts +24 -0
- package/dist/core/bang-commands/commands-close.d.ts.map +1 -0
- package/dist/core/bang-commands/commands-close.js +24 -0
- package/dist/core/bang-commands/commands-close.js.map +1 -0
- package/dist/core/bang-commands/commands-cost.d.ts.map +1 -1
- package/dist/core/bang-commands/commands-cost.js +13 -0
- package/dist/core/bang-commands/commands-cost.js.map +1 -1
- package/dist/core/bang-commands/commands-help.d.ts.map +1 -1
- package/dist/core/bang-commands/commands-help.js +44 -5
- package/dist/core/bang-commands/commands-help.js.map +1 -1
- package/dist/core/bang-commands/commands-report.d.ts.map +1 -1
- package/dist/core/bang-commands/commands-report.js +1 -0
- package/dist/core/bang-commands/commands-report.js.map +1 -1
- package/dist/core/bang-commands/commands-stop-start.d.ts.map +1 -1
- package/dist/core/bang-commands/commands-stop-start.js +2 -0
- package/dist/core/bang-commands/commands-stop-start.js.map +1 -1
- package/dist/core/bang-commands/commands-wiki.d.ts.map +1 -1
- package/dist/core/bang-commands/commands-wiki.js +12 -1
- package/dist/core/bang-commands/commands-wiki.js.map +1 -1
- package/dist/core/bang-commands/format-utils.d.ts +13 -1
- package/dist/core/bang-commands/format-utils.d.ts.map +1 -1
- package/dist/core/bang-commands/format-utils.js +21 -2
- package/dist/core/bang-commands/format-utils.js.map +1 -1
- package/dist/core/bang-commands/index.d.ts +1 -0
- package/dist/core/bang-commands/index.d.ts.map +1 -1
- package/dist/core/bang-commands/index.js +3 -0
- package/dist/core/bang-commands/index.js.map +1 -1
- package/dist/core/bang-commands/registry.d.ts +50 -0
- package/dist/core/bang-commands/registry.d.ts.map +1 -1
- package/dist/core/bang-commands/registry.js +164 -19
- package/dist/core/bang-commands/registry.js.map +1 -1
- package/dist/core/channel-timeline.d.ts +18 -1
- package/dist/core/channel-timeline.d.ts.map +1 -1
- package/dist/core/channel-timeline.js +44 -0
- package/dist/core/channel-timeline.js.map +1 -1
- package/dist/core/context/activity-view-runner.js +9 -1
- package/dist/core/context/activity-view-runner.js.map +1 -1
- package/dist/core/context/default-schedules-runner.js +44 -4
- package/dist/core/context/default-schedules-runner.js.map +1 -1
- package/dist/core/context/domain-index-runner.js +9 -1
- package/dist/core/context/domain-index-runner.js.map +1 -1
- package/dist/core/context/entity-source-rename.d.ts.map +1 -1
- package/dist/core/context/entity-source-rename.js +9 -1
- package/dist/core/context/entity-source-rename.js.map +1 -1
- package/dist/core/context/policy-index-runner.js +9 -1
- package/dist/core/context/policy-index-runner.js.map +1 -1
- package/dist/core/context/reconciler-runner.js +9 -1
- package/dist/core/context/reconciler-runner.js.map +1 -1
- package/dist/core/context-builder.d.ts +97 -2
- package/dist/core/context-builder.d.ts.map +1 -1
- package/dist/core/context-builder.js +303 -30
- package/dist/core/context-builder.js.map +1 -1
- package/dist/core/context-frontmatter.d.ts +6 -0
- package/dist/core/context-frontmatter.d.ts.map +1 -1
- package/dist/core/context-frontmatter.js +120 -8
- package/dist/core/context-frontmatter.js.map +1 -1
- package/dist/core/context-health.js +21 -9
- package/dist/core/context-health.js.map +1 -1
- package/dist/core/context-validation/_pa_wip_context_validation/index.d.ts +19 -0
- package/dist/core/context-validation/_pa_wip_context_validation/index.d.ts.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/index.js +19 -0
- package/dist/core/context-validation/_pa_wip_context_validation/index.js.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.d.ts +94 -0
- package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.d.ts.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.js +130 -0
- package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.js.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.d.ts +60 -0
- package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.d.ts.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.js +156 -0
- package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.js.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/section.d.ts +41 -0
- package/dist/core/context-validation/_pa_wip_context_validation/section.d.ts.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/section.js +82 -0
- package/dist/core/context-validation/_pa_wip_context_validation/section.js.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.d.ts +52 -0
- package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.d.ts.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.js +110 -0
- package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.js.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/today.d.ts +85 -0
- package/dist/core/context-validation/_pa_wip_context_validation/today.d.ts.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/today.js +162 -0
- package/dist/core/context-validation/_pa_wip_context_validation/today.js.map +1 -0
- package/dist/core/context-validation/index.d.ts +19 -0
- package/dist/core/context-validation/index.d.ts.map +1 -0
- package/dist/core/context-validation/index.js +19 -0
- package/dist/core/context-validation/index.js.map +1 -0
- package/dist/core/context-validation/prepare-write.d.ts +95 -0
- package/dist/core/context-validation/prepare-write.d.ts.map +1 -0
- package/dist/core/context-validation/prepare-write.js +135 -0
- package/dist/core/context-validation/prepare-write.js.map +1 -0
- package/dist/core/context-validation/routine-rulebook.d.ts +60 -0
- package/dist/core/context-validation/routine-rulebook.d.ts.map +1 -0
- package/dist/core/context-validation/routine-rulebook.js +156 -0
- package/dist/core/context-validation/routine-rulebook.js.map +1 -0
- package/dist/core/context-validation/section.d.ts +41 -0
- package/dist/core/context-validation/section.d.ts.map +1 -0
- package/dist/core/context-validation/section.js +82 -0
- package/dist/core/context-validation/section.js.map +1 -0
- package/dist/core/context-validation/snapshot-debounce.d.ts +52 -0
- package/dist/core/context-validation/snapshot-debounce.d.ts.map +1 -0
- package/dist/core/context-validation/snapshot-debounce.js +110 -0
- package/dist/core/context-validation/snapshot-debounce.js.map +1 -0
- package/dist/core/context-validation/today.d.ts +85 -0
- package/dist/core/context-validation/today.d.ts.map +1 -0
- package/dist/core/context-validation/today.js +168 -0
- package/dist/core/context-validation/today.js.map +1 -0
- package/dist/core/daemon-api-cli.d.ts +6 -5
- package/dist/core/daemon-api-cli.d.ts.map +1 -1
- package/dist/core/daemon-api-cli.js +73 -32
- package/dist/core/daemon-api-cli.js.map +1 -1
- package/dist/core/dispatcher-error-handling.d.ts +13 -0
- package/dist/core/dispatcher-error-handling.d.ts.map +1 -1
- package/dist/core/dispatcher-error-handling.js +69 -0
- package/dist/core/dispatcher-error-handling.js.map +1 -1
- package/dist/core/dispatcher-hourly-check.d.ts +73 -1
- package/dist/core/dispatcher-hourly-check.d.ts.map +1 -1
- package/dist/core/dispatcher-hourly-check.js +249 -151
- package/dist/core/dispatcher-hourly-check.js.map +1 -1
- package/dist/core/dispatcher-message-handler.d.ts +11 -1
- package/dist/core/dispatcher-message-handler.d.ts.map +1 -1
- package/dist/core/dispatcher-message-handler.js +165 -47
- package/dist/core/dispatcher-message-handler.js.map +1 -1
- package/dist/core/dispatcher-morning-routine.d.ts +38 -30
- package/dist/core/dispatcher-morning-routine.d.ts.map +1 -1
- package/dist/core/dispatcher-morning-routine.js +162 -104
- package/dist/core/dispatcher-morning-routine.js.map +1 -1
- package/dist/core/dispatcher-prompt.d.ts +4 -1
- package/dist/core/dispatcher-prompt.d.ts.map +1 -1
- package/dist/core/dispatcher-prompt.js +18 -2
- package/dist/core/dispatcher-prompt.js.map +1 -1
- package/dist/core/dispatcher-repository-helpers.d.ts.map +1 -1
- package/dist/core/dispatcher-repository-helpers.js +5 -1
- package/dist/core/dispatcher-repository-helpers.js.map +1 -1
- package/dist/core/dispatcher-result-processor.d.ts.map +1 -1
- package/dist/core/dispatcher-result-processor.js +9 -4
- package/dist/core/dispatcher-result-processor.js.map +1 -1
- package/dist/core/dispatcher-scheduled-tasks.d.ts +1 -1
- package/dist/core/dispatcher-scheduled-tasks.d.ts.map +1 -1
- package/dist/core/dispatcher-scheduled-tasks.js +79 -16
- package/dist/core/dispatcher-scheduled-tasks.js.map +1 -1
- package/dist/core/dispatcher-types.d.ts +84 -12
- package/dist/core/dispatcher-types.d.ts.map +1 -1
- package/dist/core/dispatcher-types.js.map +1 -1
- package/dist/core/dispatcher.d.ts +50 -1
- package/dist/core/dispatcher.d.ts.map +1 -1
- package/dist/core/dispatcher.js +143 -8
- package/dist/core/dispatcher.js.map +1 -1
- package/dist/core/dm-freshness-metrics.d.ts +6 -5
- package/dist/core/dm-freshness-metrics.d.ts.map +1 -1
- package/dist/core/dm-freshness-metrics.js +7 -6
- package/dist/core/dm-freshness-metrics.js.map +1 -1
- package/dist/core/evening-review-verify.d.ts +164 -0
- package/dist/core/evening-review-verify.d.ts.map +1 -0
- package/dist/core/evening-review-verify.js +637 -0
- package/dist/core/evening-review-verify.js.map +1 -0
- package/dist/core/fetch-window-prompt-loader.d.ts +47 -0
- package/dist/core/fetch-window-prompt-loader.d.ts.map +1 -0
- package/dist/core/fetch-window-prompt-loader.js +72 -0
- package/dist/core/fetch-window-prompt-loader.js.map +1 -0
- package/dist/core/management-md.d.ts.map +1 -1
- package/dist/core/management-md.js +23 -9
- package/dist/core/management-md.js.map +1 -1
- package/dist/core/management-registry.d.ts +13 -21
- package/dist/core/management-registry.d.ts.map +1 -1
- package/dist/core/management-registry.js +27 -48
- package/dist/core/management-registry.js.map +1 -1
- package/dist/core/metrics.d.ts +88 -1
- package/dist/core/metrics.d.ts.map +1 -1
- package/dist/core/metrics.js +78 -2
- package/dist/core/metrics.js.map +1 -1
- package/dist/core/morning/agent-journal-appender.d.ts +197 -0
- package/dist/core/morning/agent-journal-appender.d.ts.map +1 -0
- package/dist/core/morning/agent-journal-appender.js +458 -0
- package/dist/core/morning/agent-journal-appender.js.map +1 -0
- package/dist/core/morning/handoff-parser.d.ts +45 -0
- package/dist/core/morning/handoff-parser.d.ts.map +1 -0
- package/dist/core/morning/handoff-parser.js +117 -0
- package/dist/core/morning/handoff-parser.js.map +1 -0
- package/dist/core/morning/journal-skeleton-builder.d.ts +157 -0
- package/dist/core/morning/journal-skeleton-builder.d.ts.map +1 -0
- package/dist/core/morning/journal-skeleton-builder.js +303 -0
- package/dist/core/morning/journal-skeleton-builder.js.map +1 -0
- package/dist/core/morning/orchestrator.d.ts +312 -0
- package/dist/core/morning/orchestrator.d.ts.map +1 -0
- package/dist/core/morning/orchestrator.js +827 -0
- package/dist/core/morning/orchestrator.js.map +1 -0
- package/dist/core/morning/parent-audit-emitter.d.ts +82 -0
- package/dist/core/morning/parent-audit-emitter.d.ts.map +1 -0
- package/dist/core/morning/parent-audit-emitter.js +120 -0
- package/dist/core/morning/parent-audit-emitter.js.map +1 -0
- package/dist/core/morning/roadmap-skeleton-builder.d.ts +159 -0
- package/dist/core/morning/roadmap-skeleton-builder.d.ts.map +1 -0
- package/dist/core/morning/roadmap-skeleton-builder.js +338 -0
- package/dist/core/morning/roadmap-skeleton-builder.js.map +1 -0
- package/dist/core/output-language-policy.js +1 -1
- package/dist/core/output-language-policy.js.map +1 -1
- package/dist/core/policy-files.d.ts +19 -2
- package/dist/core/policy-files.d.ts.map +1 -1
- package/dist/core/policy-files.js +65 -7
- package/dist/core/policy-files.js.map +1 -1
- package/dist/core/pre-pass-freshness.d.ts +28 -0
- package/dist/core/pre-pass-freshness.d.ts.map +1 -0
- package/dist/core/pre-pass-freshness.js +10 -0
- package/dist/core/pre-pass-freshness.js.map +1 -0
- package/dist/core/previous-week-digest.d.ts +130 -0
- package/dist/core/previous-week-digest.d.ts.map +1 -0
- package/dist/core/previous-week-digest.js +257 -0
- package/dist/core/previous-week-digest.js.map +1 -0
- package/dist/core/prompts.js +3 -3
- package/dist/core/prompts.js.map +1 -1
- package/dist/core/quiet-hours-sync.d.ts.map +1 -1
- package/dist/core/quiet-hours-sync.js +7 -0
- package/dist/core/quiet-hours-sync.js.map +1 -1
- package/dist/core/recurrence.d.ts +13 -0
- package/dist/core/recurrence.d.ts.map +1 -1
- package/dist/core/recurrence.js +108 -13
- package/dist/core/recurrence.js.map +1 -1
- package/dist/core/release-assets.d.ts +21 -1
- package/dist/core/release-assets.d.ts.map +1 -1
- package/dist/core/release-assets.js +58 -3
- package/dist/core/release-assets.js.map +1 -1
- package/dist/core/repository-management-docs.d.ts.map +1 -1
- package/dist/core/repository-management-docs.js +14 -4
- package/dist/core/repository-management-docs.js.map +1 -1
- package/dist/core/review-context.d.ts.map +1 -1
- package/dist/core/review-context.js +29 -1
- package/dist/core/review-context.js.map +1 -1
- package/dist/core/roadmap-maintenance.d.ts +213 -0
- package/dist/core/roadmap-maintenance.d.ts.map +1 -0
- package/dist/core/roadmap-maintenance.js +706 -0
- package/dist/core/roadmap-maintenance.js.map +1 -0
- package/dist/core/roadmap-validate.d.ts +5 -0
- package/dist/core/roadmap-validate.d.ts.map +1 -1
- package/dist/core/roadmap-validate.js +6 -69
- package/dist/core/roadmap-validate.js.map +1 -1
- package/dist/core/routine-acquisition-plan.d.ts +43 -7
- package/dist/core/routine-acquisition-plan.d.ts.map +1 -1
- package/dist/core/routine-acquisition-plan.js +99 -8
- package/dist/core/routine-acquisition-plan.js.map +1 -1
- package/dist/core/routine-fetch-window-retry.d.ts +41 -2
- package/dist/core/routine-fetch-window-retry.d.ts.map +1 -1
- package/dist/core/routine-fetch-window-retry.js +91 -8
- package/dist/core/routine-fetch-window-retry.js.map +1 -1
- package/dist/core/routine-fetch-window-runner.d.ts +55 -21
- package/dist/core/routine-fetch-window-runner.d.ts.map +1 -1
- package/dist/core/routine-fetch-window-runner.js +258 -35
- package/dist/core/routine-fetch-window-runner.js.map +1 -1
- package/dist/core/routine-windows.d.ts +17 -13
- package/dist/core/routine-windows.d.ts.map +1 -1
- package/dist/core/routine-windows.js +78 -36
- package/dist/core/routine-windows.js.map +1 -1
- package/dist/core/scheduler.d.ts +121 -37
- package/dist/core/scheduler.d.ts.map +1 -1
- package/dist/core/scheduler.js +359 -80
- package/dist/core/scheduler.js.map +1 -1
- package/dist/core/session-manager.d.ts +25 -6
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +32 -15
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/skeleton.d.ts.map +1 -1
- package/dist/core/skeleton.js +23 -23
- package/dist/core/skeleton.js.map +1 -1
- package/dist/core/skills-compiler.d.ts +275 -25
- package/dist/core/skills-compiler.d.ts.map +1 -1
- package/dist/core/skills-compiler.js +844 -205
- package/dist/core/skills-compiler.js.map +1 -1
- package/dist/core/skills-manifest.d.ts +104 -0
- package/dist/core/skills-manifest.d.ts.map +1 -1
- package/dist/core/skills-manifest.js +350 -39
- package/dist/core/skills-manifest.js.map +1 -1
- package/dist/core/wiki/git-precompile.d.ts +9 -0
- package/dist/core/wiki/git-precompile.d.ts.map +1 -1
- package/dist/core/wiki/git-precompile.js +7 -1
- package/dist/core/wiki/git-precompile.js.map +1 -1
- package/dist/core/workdir.d.ts +30 -1
- package/dist/core/workdir.d.ts.map +1 -1
- package/dist/core/workdir.js +140 -15
- package/dist/core/workdir.js.map +1 -1
- package/dist/db/entities-store.d.ts +5 -5
- package/dist/db/entities-store.js +5 -5
- package/dist/db/hourly-check-signals.d.ts.map +1 -1
- package/dist/db/hourly-check-signals.js +121 -35
- package/dist/db/hourly-check-signals.js.map +1 -1
- package/dist/db/observations.d.ts +1 -1
- package/dist/db/observations.js +1 -1
- package/dist/db/observations.js.map +1 -1
- package/dist/db/recurring-schedules.d.ts +32 -1
- package/dist/db/recurring-schedules.d.ts.map +1 -1
- package/dist/db/recurring-schedules.js +29 -10
- package/dist/db/recurring-schedules.js.map +1 -1
- package/dist/db/repositories-store.d.ts +2 -1
- package/dist/db/repositories-store.d.ts.map +1 -1
- package/dist/db/repositories-store.js +38 -3
- package/dist/db/repositories-store.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +157 -51
- package/dist/db/schema.js.map +1 -1
- package/dist/db/wiki-store.d.ts.map +1 -1
- package/dist/db/wiki-store.js +3 -0
- package/dist/db/wiki-store.js.map +1 -1
- package/dist/index.js +308 -1473
- package/dist/index.js.map +1 -1
- package/dist/messaging/magic-phrase.d.ts +16 -0
- package/dist/messaging/magic-phrase.d.ts.map +1 -1
- package/dist/messaging/magic-phrase.js +53 -0
- package/dist/messaging/magic-phrase.js.map +1 -1
- package/dist/messaging/owner-channels.d.ts +24 -0
- package/dist/messaging/owner-channels.d.ts.map +1 -1
- package/dist/messaging/owner-channels.js +38 -0
- package/dist/messaging/owner-channels.js.map +1 -1
- package/dist/messaging/setup-welcome-dm.d.ts +30 -0
- package/dist/messaging/setup-welcome-dm.d.ts.map +1 -0
- package/dist/messaging/setup-welcome-dm.js +86 -0
- package/dist/messaging/setup-welcome-dm.js.map +1 -0
- package/dist/observers/calendar-poller.d.ts +2 -0
- package/dist/observers/calendar-poller.d.ts.map +1 -1
- package/dist/observers/calendar-poller.js +76 -54
- package/dist/observers/calendar-poller.js.map +1 -1
- package/dist/observers/delegated-sync-worker.d.ts +62 -0
- package/dist/observers/delegated-sync-worker.d.ts.map +1 -1
- package/dist/observers/delegated-sync-worker.js +128 -1
- package/dist/observers/delegated-sync-worker.js.map +1 -1
- package/dist/observers/git-watcher.d.ts +22 -0
- package/dist/observers/git-watcher.d.ts.map +1 -1
- package/dist/observers/git-watcher.js +31 -7
- package/dist/observers/git-watcher.js.map +1 -1
- package/dist/observers/imminent-event-scheduler.d.ts +2 -0
- package/dist/observers/imminent-event-scheduler.d.ts.map +1 -1
- package/dist/observers/imminent-event-scheduler.js +29 -0
- package/dist/observers/imminent-event-scheduler.js.map +1 -1
- package/dist/observers/notion-poller.d.ts +2 -0
- package/dist/observers/notion-poller.d.ts.map +1 -1
- package/dist/observers/notion-poller.js +44 -6
- package/dist/observers/notion-poller.js.map +1 -1
- package/dist/observers/poll-guard.d.ts +63 -0
- package/dist/observers/poll-guard.d.ts.map +1 -0
- package/dist/observers/poll-guard.js +89 -0
- package/dist/observers/poll-guard.js.map +1 -0
- package/dist/safety/absolute-block-audit.d.ts +17 -0
- package/dist/safety/absolute-block-audit.d.ts.map +1 -1
- package/dist/safety/absolute-block-audit.js +28 -2
- package/dist/safety/absolute-block-audit.js.map +1 -1
- package/dist/safety/agent-write-tracker.d.ts +42 -1
- package/dist/safety/agent-write-tracker.d.ts.map +1 -1
- package/dist/safety/agent-write-tracker.js +81 -1
- package/dist/safety/agent-write-tracker.js.map +1 -1
- package/dist/safety/always-disallowed.d.ts +34 -0
- package/dist/safety/always-disallowed.d.ts.map +1 -1
- package/dist/safety/always-disallowed.js +114 -7
- package/dist/safety/always-disallowed.js.map +1 -1
- package/dist/safety/audit.d.ts +20 -0
- package/dist/safety/audit.d.ts.map +1 -1
- package/dist/safety/audit.js +126 -0
- package/dist/safety/audit.js.map +1 -1
- package/dist/safety/risk-classifier.d.ts +17 -1
- package/dist/safety/risk-classifier.d.ts.map +1 -1
- package/dist/safety/risk-classifier.js +75 -7
- package/dist/safety/risk-classifier.js.map +1 -1
- package/dist/safety/subprocess-block-scanner.d.ts +89 -0
- package/dist/safety/subprocess-block-scanner.d.ts.map +1 -0
- package/dist/safety/subprocess-block-scanner.js +177 -0
- package/dist/safety/subprocess-block-scanner.js.map +1 -0
- package/dist/scheduler/hourly-check-gate.d.ts +23 -9
- package/dist/scheduler/hourly-check-gate.d.ts.map +1 -1
- package/dist/scheduler/hourly-check-gate.js +11 -6
- package/dist/scheduler/hourly-check-gate.js.map +1 -1
- package/dist/secrets/backend-api-key-env.d.ts.map +1 -1
- package/dist/secrets/backend-api-key-env.js +1 -0
- package/dist/secrets/backend-api-key-env.js.map +1 -1
- package/dist/services/delegated-backend-invoker.d.ts.map +1 -1
- package/dist/services/delegated-backend-invoker.js +8 -1
- package/dist/services/delegated-backend-invoker.js.map +1 -1
- package/dist/services/delegated-invoker-audit.d.ts.map +1 -1
- package/dist/services/delegated-invoker-audit.js +5 -1
- package/dist/services/delegated-invoker-audit.js.map +1 -1
- package/dist/services/delegated-proxy-config.d.ts +3 -2
- package/dist/services/delegated-proxy-config.d.ts.map +1 -1
- package/dist/services/delegated-proxy-config.js.map +1 -1
- package/dist/services/integrations/extract-write-item-id.d.ts +5 -2
- package/dist/services/integrations/extract-write-item-id.d.ts.map +1 -1
- package/dist/services/integrations/extract-write-item-id.js.map +1 -1
- package/dist/services/mcp/generators/index.d.ts +1 -0
- package/dist/services/mcp/generators/index.d.ts.map +1 -1
- package/dist/services/mcp/generators/index.js +3 -0
- package/dist/services/mcp/generators/index.js.map +1 -1
- package/dist/services/mcp/sdk-observations-server.d.ts +60 -0
- package/dist/services/mcp/sdk-observations-server.d.ts.map +1 -0
- package/dist/services/mcp/sdk-observations-server.js +161 -0
- package/dist/services/mcp/sdk-observations-server.js.map +1 -0
- package/dist/services/mcp/session-materializer.d.ts.map +1 -1
- package/dist/services/mcp/session-materializer.js +13 -9
- package/dist/services/mcp/session-materializer.js.map +1 -1
- package/dist/services/mcp/types.d.ts +1 -0
- package/dist/services/mcp/types.d.ts.map +1 -1
- package/dist/services/notion.d.ts +19 -1
- package/dist/services/notion.d.ts.map +1 -1
- package/dist/services/notion.js +41 -2
- package/dist/services/notion.js.map +1 -1
- package/dist/services/observations-batch.d.ts +100 -0
- package/dist/services/observations-batch.d.ts.map +1 -0
- package/dist/services/observations-batch.js +258 -0
- package/dist/services/observations-batch.js.map +1 -0
- package/dist/services/voice/transcriber.d.ts +23 -0
- package/dist/services/voice/transcriber.d.ts.map +1 -1
- package/dist/services/voice/transcriber.js +55 -0
- package/dist/services/voice/transcriber.js.map +1 -1
- package/dist/settings/runtime-settings.d.ts +9 -6
- package/dist/settings/runtime-settings.d.ts.map +1 -1
- package/dist/settings/runtime-settings.js +50 -17
- package/dist/settings/runtime-settings.js.map +1 -1
- package/package.json +3 -2
- package/dist/api/delegated-proxy-helper.d.ts +0 -33
- package/dist/api/delegated-proxy-helper.d.ts.map +0 -1
- package/dist/api/delegated-proxy-helper.js +0 -54
- package/dist/api/delegated-proxy-helper.js.map +0 -1
- package/dist/core/roadmap-merge.d.ts +0 -7
- package/dist/core/roadmap-merge.d.ts.map +0 -1
- package/dist/core/roadmap-merge.js +0 -187
- package/dist/core/roadmap-merge.js.map +0 -1
- package/dist/db/test-schemas.d.ts +0 -23
- package/dist/db/test-schemas.d.ts.map +0 -1
- package/dist/db/test-schemas.js +0 -111
- package/dist/db/test-schemas.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
-
import { INTEGRATION_DESCRIPTORS, INTEGRATION_KEYS, isAutonomousProcessKey, isPlausibleOpenAiApiKey, matchRunAllowedToolPattern, } from "@aitne/shared";
|
|
4
|
+
import { INTEGRATION_DESCRIPTORS, INTEGRATION_KEYS, isAutonomousProcessKey, isMessageEvent, isPlausibleOpenAiApiKey, matchRunAllowedToolPattern, } from "@aitne/shared";
|
|
5
5
|
import { getContextDir } from "../../config.js";
|
|
6
6
|
import { cleanupSessionWorkdir, createSessionWorkdir } from "../workdir.js";
|
|
7
7
|
import { BackendDecisiveFailure, BackendQuotaError, DelegatedProxyTimeoutError, classifyAbortReason, } from "../agent-core.js";
|
|
@@ -12,8 +12,11 @@ import { materializeMcpForSession } from "../../services/mcp/session-materialize
|
|
|
12
12
|
import { parseMcpToolName } from "../../services/mcp/risk.js";
|
|
13
13
|
import { logMcpToolCall } from "../../services/mcp/tool-audit.js";
|
|
14
14
|
import { buildDaemonApiCliEnv } from "../daemon-api-cli.js";
|
|
15
|
+
import { noteNativeSkillToolIfPresent, probeCliNativeSkillSubcommand, } from "./native-skill-discovery-probe.js";
|
|
15
16
|
import { createOutputCapturePath, CliPathCache, parseJsonLine, readFileIfExists, removeFileIfExists, runLineCommand, } from "./cli-utils.js";
|
|
16
17
|
import { probeApiKeyServerSide } from "./api-key-probe.js";
|
|
18
|
+
import { extractGenericQuotaResetHint } from "./quota-reset-hints.js";
|
|
19
|
+
import { auditStreamObservation, extractCodexShellCall, } from "../../safety/subprocess-block-scanner.js";
|
|
17
20
|
import { extractSilentApiErrors, logSilentApiErrors, } from "./silent-api-error-detector.js";
|
|
18
21
|
import { estimateTextInputTokens, findRegisteredModel, getModelsForBackend, latestLiteFor, } from "./model-registry.js";
|
|
19
22
|
import { PriceFetcher } from "./price-fetcher.js";
|
|
@@ -26,6 +29,23 @@ const EMPTY_USAGE = {
|
|
|
26
29
|
cacheCreationInputTokens: 0,
|
|
27
30
|
cacheReadInputTokens: 0,
|
|
28
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Per-event stream-idle threshold for reactive `runTurn` execution
|
|
34
|
+
* (DMs, routines, scheduled tasks). Distinct from the delegated-path
|
|
35
|
+
* `DELEGATED_PROXY_DEFAULTS.idleTimeoutMsByBackend.codex` (60s) because
|
|
36
|
+
* reactive turns can include longer silences during legitimate work —
|
|
37
|
+
* extended thinking, MCP cold-starts, server-side tools (`web_search`,
|
|
38
|
+
* file reads). The threshold catches a fully hung CLI subprocess (zero
|
|
39
|
+
* stream events) well before `executeTimeoutMinutes` (default 30 min)
|
|
40
|
+
* fires; healthy turns rarely go 5 min silent end-to-end.
|
|
41
|
+
*
|
|
42
|
+
* Audit 2026-05-17: the delegated path already had this guard (see the
|
|
43
|
+
* `runDelegatedTool` wiring lower in this file); the reactive path was
|
|
44
|
+
* unprotected and a single hung subprocess could pin a session for the
|
|
45
|
+
* full 30-min wall-clock, blocking morning-routine / hourly-check
|
|
46
|
+
* dispatch downstream.
|
|
47
|
+
*/
|
|
48
|
+
const REACTIVE_IDLE_TIMEOUT_MS = 5 * 60 * 1000;
|
|
29
49
|
// Probe prompt is derived from `INTEGRATION_DESCRIPTORS.backendConnectors.codex`
|
|
30
50
|
// so adding a new delegated integration (Slack, GitHub, …) requires only the
|
|
31
51
|
// registry update. The line-based filter below (`l.startsWith("mcp__")`) is
|
|
@@ -87,6 +107,10 @@ export class CodexCore {
|
|
|
87
107
|
backendId = "codex";
|
|
88
108
|
// Lazily re-resolved with a 60 s TTL — see ClaudeCodeCore for rationale (§9.4).
|
|
89
109
|
cliPathCache;
|
|
110
|
+
/** Legacy shared read token injected into the Codex subprocess env. */
|
|
111
|
+
readToken;
|
|
112
|
+
/** Scoped token manager preferred over the legacy shared read token. */
|
|
113
|
+
readTokenManager;
|
|
90
114
|
get cliPath() {
|
|
91
115
|
return this.cliPathCache.get();
|
|
92
116
|
}
|
|
@@ -95,6 +119,20 @@ export class CodexCore {
|
|
|
95
119
|
this.priceFetcher = priceFetcher;
|
|
96
120
|
this.cliPathCache = new CliPathCache("codex");
|
|
97
121
|
}
|
|
122
|
+
/** Set the per-daemon-boot read token for subprocess-local daemon API auth. */
|
|
123
|
+
setReadToken(token) {
|
|
124
|
+
this.readToken = token;
|
|
125
|
+
}
|
|
126
|
+
setReadTokenManager(manager) {
|
|
127
|
+
this.readTokenManager = manager;
|
|
128
|
+
}
|
|
129
|
+
/** Resolve the env-injected read token: per-scope token if a manager is wired,
|
|
130
|
+
* otherwise the legacy shared token. Returns `undefined` when neither is set
|
|
131
|
+
* (production wires both at startup via index.ts; tests typically wire neither).
|
|
132
|
+
*/
|
|
133
|
+
issueReadToken(scope) {
|
|
134
|
+
return this.readTokenManager?.issue(scope) ?? this.readToken;
|
|
135
|
+
}
|
|
98
136
|
mcpContext;
|
|
99
137
|
setMcpContext(context) {
|
|
100
138
|
this.mcpContext = context;
|
|
@@ -157,6 +195,7 @@ export class CodexCore {
|
|
|
157
195
|
sessionDbId: params.sessionDbId,
|
|
158
196
|
eventCorrelationId: params.event.correlationId,
|
|
159
197
|
webSearchEnabled: params.webSearchEnabled ?? false,
|
|
198
|
+
...(isMessageEvent(params.event) ? { messageText: params.event.content } : {}),
|
|
160
199
|
}, streamCallbacks);
|
|
161
200
|
}
|
|
162
201
|
async executeResume(params, streamCallbacks) {
|
|
@@ -173,6 +212,9 @@ export class CodexCore {
|
|
|
173
212
|
sessionDbId: params.sessionDbId,
|
|
174
213
|
eventCorrelationId: params.eventCorrelationId,
|
|
175
214
|
webSearchEnabled: params.webSearchEnabled ?? false,
|
|
215
|
+
// Resume turns carry the user's reply text in `params.message`;
|
|
216
|
+
// forward it as the predicate's messageText signal.
|
|
217
|
+
messageText: params.message,
|
|
176
218
|
}, streamCallbacks);
|
|
177
219
|
}
|
|
178
220
|
async summarize(conversationText) {
|
|
@@ -316,12 +358,16 @@ export class CodexCore {
|
|
|
316
358
|
prompt,
|
|
317
359
|
];
|
|
318
360
|
const lines = [];
|
|
361
|
+
const daemonReadToken = this.issueReadToken(sessionDir);
|
|
319
362
|
try {
|
|
320
363
|
const result = await runLineCommand({
|
|
321
364
|
command: this.cliPath,
|
|
322
365
|
args,
|
|
323
366
|
cwd: sessionDir,
|
|
324
|
-
env: buildDaemonApiCliEnv(sessionDir, this.config.apiPort, {
|
|
367
|
+
env: buildDaemonApiCliEnv(sessionDir, this.config.apiPort, {
|
|
368
|
+
...(daemonReadToken ? { readToken: daemonReadToken } : {}),
|
|
369
|
+
sessionBackend: "codex",
|
|
370
|
+
}),
|
|
325
371
|
timeoutMs: 60_000,
|
|
326
372
|
onStdoutLine: (line) => {
|
|
327
373
|
const event = parseJsonLine(line);
|
|
@@ -345,9 +391,21 @@ export class CodexCore {
|
|
|
345
391
|
.filter((l) => l.startsWith("mcp__"));
|
|
346
392
|
const deduped = Array.from(new Set(tools));
|
|
347
393
|
logger.info({ toolCount: deduped.length }, "Live probe collected tool manifest via codex exec");
|
|
394
|
+
// docs/design/appendices/skills-unification.md Phase 1 item 13 — forward-compat
|
|
395
|
+
// signals. Two probes run side by side:
|
|
396
|
+
// - Name-pattern scan over `deduped` (mcp__-filtered). Cheap
|
|
397
|
+
// defence-in-depth; will not fire on a non-MCP native surface
|
|
398
|
+
// but is harmless when present.
|
|
399
|
+
// - `codex --help` scan for a top-level `skill`/`skills`
|
|
400
|
+
// subcommand. This is the ground-truth detector — Codex's
|
|
401
|
+
// hypothetical future form (`codex skill <command>`) trips
|
|
402
|
+
// here regardless of how its tool inventory is shaped.
|
|
403
|
+
noteNativeSkillToolIfPresent("codex", deduped);
|
|
404
|
+
void probeCliNativeSkillSubcommand(this.cliPath, "codex");
|
|
348
405
|
return deduped;
|
|
349
406
|
}
|
|
350
407
|
finally {
|
|
408
|
+
this.readTokenManager?.revoke(sessionDir);
|
|
351
409
|
removeFileIfExists(outputPath);
|
|
352
410
|
cleanupSessionWorkdir(sessionDir);
|
|
353
411
|
}
|
|
@@ -372,14 +430,52 @@ export class CodexCore {
|
|
|
372
430
|
backendId: this.backendId,
|
|
373
431
|
processKey: params.processKey,
|
|
374
432
|
character: this.config.character,
|
|
433
|
+
contextDir: getContextDir(this.config),
|
|
434
|
+
// docs/design/appendices/skills-unification.md Phase 4 — feed the conditional
|
|
435
|
+
// manifest predicates. `db` is the same handle threaded through
|
|
436
|
+
// `setMcpContext`; `messageText` is the inbound DM text (resume
|
|
437
|
+
// turns send the user's reply, fresh executes send the original
|
|
438
|
+
// event content). Both fields are optional — a `summarize` /
|
|
439
|
+
// probe path without either still resolves to the conservative
|
|
440
|
+
// include branch.
|
|
441
|
+
...(this.mcpContext?.db ? { db: this.mcpContext.db } : {}),
|
|
442
|
+
...(typeof params.messageText === "string" ? { messageText: params.messageText } : {}),
|
|
375
443
|
...(params.wikiWorkspaceName ? { wikiWorkspaceName: params.wikiWorkspaceName } : {}),
|
|
376
444
|
});
|
|
377
445
|
const ownsSessionDir = !params.sessionDir;
|
|
378
446
|
const outputPath = createOutputCapturePath(sessionDir, "codex-last-message");
|
|
447
|
+
const daemonReadToken = this.issueReadToken(sessionDir);
|
|
379
448
|
const mcp = await this.materializeMcp(sessionDir, params.processKey);
|
|
380
449
|
logger.info({ eventType: params.eventType, model: params.modelId, promptLen: params.prompt.length, mcpServers: mcp.servers.map((s) => s.id) }, "Codex execute started");
|
|
450
|
+
// Stream text deltas live as they arrive — mirrors ClaudeCodeCore so
|
|
451
|
+
// owner-facing surfaces (dashboard chat, owner DM) get the same
|
|
452
|
+
// incremental-output UX regardless of which backend serves the turn.
|
|
453
|
+
// The post-completion `assertWithinMaxBudget` still enforces the budget
|
|
454
|
+
// cap; an exceeded turn surfaces as `BackendQuotaError` AFTER text has
|
|
455
|
+
// streamed, exactly as Claude behaves. The earlier "defer until budget
|
|
456
|
+
// check" guard buffered the entire turn — which made interactive flows
|
|
457
|
+
// like `setup.initial` look frozen for minutes when the model finally
|
|
458
|
+
// returned a single multi-block response in one chunk.
|
|
381
459
|
let streamed = false;
|
|
382
|
-
|
|
460
|
+
// Reactive idle watchdog (audit 2026-05-17 C1). Declared outside the
|
|
461
|
+
// outer try so the outer finally below can always call stop() — even
|
|
462
|
+
// if a setup line between here and runLineCommand throws. Mirrors the
|
|
463
|
+
// delegated-path wiring in `runDelegatedTool` (~line 1350): each
|
|
464
|
+
// arrived stream event resets the timer, and when the gap exceeds
|
|
465
|
+
// REACTIVE_IDLE_TIMEOUT_MS the aborter fires — runLineCommand reaps
|
|
466
|
+
// the subprocess via its existing kill-tree path. Distinct from
|
|
467
|
+
// `runResult.timedOut` so the post-await classifier surfaces idle
|
|
468
|
+
// hangs with a distinct message.
|
|
469
|
+
let idleTimedOut = false;
|
|
470
|
+
const idleAborter = new AbortController();
|
|
471
|
+
const idleWatchdog = new IdleWatchdog({
|
|
472
|
+
idleTimeoutMs: REACTIVE_IDLE_TIMEOUT_MS,
|
|
473
|
+
onTimeout: (idleMs) => {
|
|
474
|
+
idleTimedOut = true;
|
|
475
|
+
logger.warn({ idleMs, idleTimeoutMs: REACTIVE_IDLE_TIMEOUT_MS, eventType: params.eventType }, "codex reactive idle watchdog tripped — aborting");
|
|
476
|
+
idleAborter.abort(new Error(`codex reactive stream idle for ${idleMs}ms (limit ${REACTIVE_IDLE_TIMEOUT_MS}ms)`));
|
|
477
|
+
},
|
|
478
|
+
});
|
|
383
479
|
try {
|
|
384
480
|
let sessionId = params.resumeSessionId ?? null;
|
|
385
481
|
let actualModelId = params.modelId;
|
|
@@ -394,12 +490,29 @@ export class CodexCore {
|
|
|
394
490
|
// the run. Collecting up front — rather than scanning per-line — keeps
|
|
395
491
|
// each occurrence logged exactly once across multi-line payloads.
|
|
396
492
|
const apiOutputBuffer = [];
|
|
493
|
+
// Per-turn set of item IDs whose `item.started` / `item.completed`
|
|
494
|
+
// declared a reasoning type. Used to filter follow-on `item.updated`
|
|
495
|
+
// deltas, which usually omit the type and carry only `id + delta`
|
|
496
|
+
// — `shouldDropAsReasoning` consults this on every event.
|
|
497
|
+
const reasoningItemIds = new Set();
|
|
498
|
+
// Per-turn flag tripped whenever any event is dropped by the
|
|
499
|
+
// reasoning gate. The `--output-last-message` file written by
|
|
500
|
+
// codex CLI is NOT covered by the stream-level filter — when
|
|
501
|
+
// reasoning was observed but the stream produced no final
|
|
502
|
+
// assistant text, the file may itself contain a reasoning
|
|
503
|
+
// summary (codex CLI's GPT-5 behavior under tool-only turns
|
|
504
|
+
// and certain Responses-API relay shapes). Consulting this
|
|
505
|
+
// flag below makes the file-fallback path refuse such content
|
|
506
|
+
// instead of writing it verbatim to the chat bubble / DB.
|
|
507
|
+
let observedReasoning = false;
|
|
508
|
+
idleWatchdog.start();
|
|
397
509
|
const runResult = await runLineCommand({
|
|
398
510
|
command: "codex",
|
|
399
511
|
args: this.buildArgs(params, outputPath),
|
|
400
512
|
cwd: sessionDir,
|
|
401
513
|
env: {
|
|
402
514
|
...buildDaemonApiCliEnv(sessionDir, this.config.apiPort, {
|
|
515
|
+
...(daemonReadToken ? { readToken: daemonReadToken } : {}),
|
|
403
516
|
sessionBackend: "codex",
|
|
404
517
|
sessionId: params.sessionDbId,
|
|
405
518
|
eventCorrelationId: params.eventCorrelationId,
|
|
@@ -408,7 +521,9 @@ export class CodexCore {
|
|
|
408
521
|
...(params.turnToken ? { PA_TURN_TOKEN: params.turnToken } : {}),
|
|
409
522
|
},
|
|
410
523
|
timeoutMs: this.config.executeTimeoutMinutes * 60 * 1000,
|
|
524
|
+
abortSignal: idleAborter.signal,
|
|
411
525
|
onStdoutLine: (line) => {
|
|
526
|
+
idleWatchdog.beat();
|
|
412
527
|
const event = parseJsonLine(line);
|
|
413
528
|
if (!event?.type) {
|
|
414
529
|
return;
|
|
@@ -439,7 +554,45 @@ export class CodexCore {
|
|
|
439
554
|
}
|
|
440
555
|
return;
|
|
441
556
|
}
|
|
557
|
+
// Reasoning filter — must run BEFORE every text-bearing path
|
|
558
|
+
// below (`extractCodexText`, `collectCodexItemText`, the tool
|
|
559
|
+
// / shell-call audits). Two steps:
|
|
560
|
+
//
|
|
561
|
+
// 1. Record reasoning item IDs from any event that declares
|
|
562
|
+
// the item type (`item.started` and `item.completed` are
|
|
563
|
+
// the canonical carriers; `item.updated` typically omits
|
|
564
|
+
// it — that's why ID tracking is necessary, not optional).
|
|
565
|
+
// 2. Drop the event entirely when it is reasoning by any
|
|
566
|
+
// signal: outer event type, declared item type, OR an
|
|
567
|
+
// `item.updated` delta whose `item.id` was previously
|
|
568
|
+
// recorded as reasoning.
|
|
569
|
+
//
|
|
570
|
+
// The two-step ordering matters: a single `item.completed`
|
|
571
|
+
// with `{id, type: "reasoning", text: "..."}` must first
|
|
572
|
+
// register the ID (so any straggling deltas for the same ID
|
|
573
|
+
// are still filtered) and THEN be dropped.
|
|
574
|
+
rememberReasoningItem(event, reasoningItemIds);
|
|
575
|
+
if (shouldDropAsReasoning(event, reasoningItemIds)) {
|
|
576
|
+
observedReasoning = true;
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
442
579
|
collectCodexItemText(event, apiOutputBuffer);
|
|
580
|
+
// EXECUTION-MODE-DESIGN.md §6.3 — stream-side absolute-block
|
|
581
|
+
// observability. Codex has no PreToolUse hook, so we classify
|
|
582
|
+
// each shell-call item the moment it surfaces and write a
|
|
583
|
+
// `blocked_absolute` audit row with `result='partial'` on a hit.
|
|
584
|
+
// The actual rejection (if any) happens in the workspace-write
|
|
585
|
+
// sandbox out-of-band; the row tells operators the agent
|
|
586
|
+
// *attempted* an absolute-block-listed pattern.
|
|
587
|
+
const codexShellCall = extractCodexShellCall(event.item);
|
|
588
|
+
if (codexShellCall) {
|
|
589
|
+
auditStreamObservation(codexShellCall, {
|
|
590
|
+
db: this.mcpContext?.db,
|
|
591
|
+
backend: this.backendId,
|
|
592
|
+
mode: this.config.codexExecutionPermissionMode,
|
|
593
|
+
sessionId: params.sessionDbId,
|
|
594
|
+
});
|
|
595
|
+
}
|
|
443
596
|
// B-003 Phase 4.4 — persist MCP tool call to `mcp_tool_calls`.
|
|
444
597
|
const mcpCall = extractMcpToolCall(event);
|
|
445
598
|
if (mcpCall) {
|
|
@@ -468,12 +621,11 @@ export class CodexCore {
|
|
|
468
621
|
return;
|
|
469
622
|
}
|
|
470
623
|
outputChunks.push(delta);
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
streamed = true;
|
|
474
|
-
}
|
|
624
|
+
streamCallbacks?.onText?.(delta);
|
|
625
|
+
streamed = true;
|
|
475
626
|
},
|
|
476
627
|
onStderrLine: (line) => {
|
|
628
|
+
idleWatchdog.beat();
|
|
477
629
|
apiOutputBuffer.push(line);
|
|
478
630
|
if (isLikelyCodexFailure(line)) {
|
|
479
631
|
lastError = line.trim();
|
|
@@ -488,15 +640,61 @@ export class CodexCore {
|
|
|
488
640
|
eventType: params.eventType,
|
|
489
641
|
});
|
|
490
642
|
}
|
|
643
|
+
// Order matters: idle-trip is checked before wall-clock timeout so
|
|
644
|
+
// the post-await classifier surfaces the precise reason. The
|
|
645
|
+
// idle-aborter trips runResult.timedOut=false (an external abort
|
|
646
|
+
// is reported via non-zero exit per cli-utils.ts contract), but
|
|
647
|
+
// we still throw a `timeout` failure here because that matches
|
|
648
|
+
// the dispatcher's retry semantics.
|
|
649
|
+
if (idleTimedOut) {
|
|
650
|
+
const err = new BackendDecisiveFailure(this.backendId, "timeout", new Error(`Codex reactive stream went idle for ${REACTIVE_IDLE_TIMEOUT_MS}ms (no events from CLI subprocess)`));
|
|
651
|
+
logger.error({ err, eventType: params.eventType, model: params.modelId, durationMs: Date.now() - startMs }, "Codex execute idle-timed-out");
|
|
652
|
+
throw err;
|
|
653
|
+
}
|
|
491
654
|
if (runResult.timedOut) {
|
|
492
655
|
const err = new BackendDecisiveFailure(this.backendId, "timeout", new Error(`Codex execution exceeded timeout of ${this.config.executeTimeoutMinutes} minutes`));
|
|
493
656
|
logger.error({ err, eventType: params.eventType, model: params.modelId, durationMs: Date.now() - startMs }, "Codex execute timed out");
|
|
494
657
|
throw err;
|
|
495
658
|
}
|
|
496
659
|
const capturedOutput = readFileIfExists(outputPath);
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
660
|
+
// File-vs-stream precedence — minimal change from the original.
|
|
661
|
+
//
|
|
662
|
+
// Original semantics (preserved): the `--output-last-message`
|
|
663
|
+
// file is the authoritative final assistant text; the stream
|
|
664
|
+
// chunks are the fallback. Codex CLI writes the file at turn
|
|
665
|
+
// close after assembling the full agent_message, so it is more
|
|
666
|
+
// resilient than chunk replay against mid-stream truncation or
|
|
667
|
+
// transport hiccups.
|
|
668
|
+
//
|
|
669
|
+
// Safety amendment (new): when reasoning items appeared on the
|
|
670
|
+
// wire during the turn, the file is untrustworthy. Codex's
|
|
671
|
+
// GPT-5 path can write a reasoning summary to the same file
|
|
672
|
+
// when no agent_message item was produced, and the
|
|
673
|
+
// stream-level `shouldDropAsReasoning` gate cannot see that
|
|
674
|
+
// path. Suppress the file in that case and fall back to the
|
|
675
|
+
// (already filtered) stream chunks — which means an empty
|
|
676
|
+
// bubble for reasoning-only turns, but never reasoning
|
|
677
|
+
// narration surfacing as the assistant message.
|
|
678
|
+
const streamJoined = outputChunks.join("");
|
|
679
|
+
let outputSource;
|
|
680
|
+
if (capturedOutput !== null
|
|
681
|
+
&& capturedOutput.trim().length > 0
|
|
682
|
+
&& !observedReasoning) {
|
|
683
|
+
outputSource = capturedOutput;
|
|
684
|
+
}
|
|
685
|
+
else {
|
|
686
|
+
if (observedReasoning
|
|
687
|
+
&& capturedOutput !== null
|
|
688
|
+
&& capturedOutput.trim().length > 0) {
|
|
689
|
+
logger.warn({
|
|
690
|
+
eventType: params.eventType,
|
|
691
|
+
sessionId,
|
|
692
|
+
fileBytes: capturedOutput.trim().length,
|
|
693
|
+
streamBytes: streamJoined.trim().length,
|
|
694
|
+
}, "Codex --output-last-message suppressed: reasoning was observed during the turn; the file may carry a reasoning summary instead of an agent_message. Falling back to filtered stream chunks.");
|
|
695
|
+
}
|
|
696
|
+
outputSource = streamJoined;
|
|
697
|
+
}
|
|
500
698
|
const output = outputSource.trim();
|
|
501
699
|
const combinedFailure = lastError
|
|
502
700
|
?? firstFailureLine(runResult.stderrLines)
|
|
@@ -513,7 +711,12 @@ export class CodexCore {
|
|
|
513
711
|
usage,
|
|
514
712
|
fallbackModel: findRegisteredModel(this.backendId, actualModelId),
|
|
515
713
|
});
|
|
516
|
-
this.assertWithinMaxBudget(costUsd, params.maxBudgetUsd, actualModelId
|
|
714
|
+
this.assertWithinMaxBudget(costUsd, params.maxBudgetUsd, actualModelId, {
|
|
715
|
+
usage,
|
|
716
|
+
costSource,
|
|
717
|
+
numTurns: numTurns || 1,
|
|
718
|
+
durationMs: Date.now() - startMs,
|
|
719
|
+
});
|
|
517
720
|
if (output && !streamed) {
|
|
518
721
|
streamCallbacks?.onText?.(output);
|
|
519
722
|
}
|
|
@@ -548,9 +751,17 @@ export class CodexCore {
|
|
|
548
751
|
};
|
|
549
752
|
}
|
|
550
753
|
finally {
|
|
754
|
+
// Stop the reactive idle watchdog first — idempotent if start()
|
|
755
|
+
// was never reached, but always safe.
|
|
756
|
+
idleWatchdog.stop();
|
|
551
757
|
removeFileIfExists(outputPath);
|
|
552
758
|
streamCallbacks?.onEnd?.();
|
|
553
759
|
if (ownsSessionDir) {
|
|
760
|
+
// Mirror ClaudeCodeCore: only revoke when we own the temp dir.
|
|
761
|
+
// Caller-owned (persistent) dirs survive across turns and reuse the
|
|
762
|
+
// same scope, so revoking here would invalidate a token still in use
|
|
763
|
+
// by a subsequent resume on the same session.
|
|
764
|
+
this.readTokenManager?.revoke(sessionDir);
|
|
554
765
|
cleanupSessionWorkdir(sessionDir);
|
|
555
766
|
}
|
|
556
767
|
}
|
|
@@ -634,8 +845,9 @@ export class CodexCore {
|
|
|
634
845
|
// (per-integration)` block in AGENTS.md (rendered by
|
|
635
846
|
// `skills-compiler.buildSameBackendDenyBlock`). Cross-backend
|
|
636
847
|
// delegation provides hard enforcement at the
|
|
637
|
-
// `/api/integrations/:key/
|
|
638
|
-
//
|
|
848
|
+
// `/api/integrations/:key/exec` task-mode chokepoint (the legacy
|
|
849
|
+
// `/invoke` RPC was retired 2026-05-01), so users requiring strict
|
|
850
|
+
// deny should pick a non-Codex DM backend.
|
|
639
851
|
//
|
|
640
852
|
const sandboxArgs = allowMode
|
|
641
853
|
? ["--dangerously-bypass-approvals-and-sandbox"]
|
|
@@ -712,7 +924,12 @@ export class CodexCore {
|
|
|
712
924
|
return new BackendQuotaError(this.backendId, "max_budget_usd", null, message);
|
|
713
925
|
}
|
|
714
926
|
if (/rate limit|usage limit|quota/i.test(message)) {
|
|
715
|
-
|
|
927
|
+
// Best-effort reset-time extraction so the dashboard can surface
|
|
928
|
+
// "quota resets at HH:MM (TZ)" instead of a bare "rate_limited" tag.
|
|
929
|
+
// OpenAI rate-limit messages typically carry "try again in Xm" or
|
|
930
|
+
// an ISO retry-after; the helper falls through to null when neither
|
|
931
|
+
// pattern matches, preserving the original behaviour.
|
|
932
|
+
return new BackendQuotaError(this.backendId, "rate_limited", extractGenericQuotaResetHint(message), message);
|
|
716
933
|
}
|
|
717
934
|
if (/unauthorized|forbidden|api key|login/i.test(message)) {
|
|
718
935
|
return new BackendDecisiveFailure(this.backendId, "auth", new Error(message));
|
|
@@ -722,11 +939,20 @@ export class CodexCore {
|
|
|
722
939
|
}
|
|
723
940
|
return new BackendDecisiveFailure(this.backendId, "other_non_retryable", new Error(message));
|
|
724
941
|
}
|
|
725
|
-
assertWithinMaxBudget(costUsd, maxBudgetUsd, modelId
|
|
942
|
+
assertWithinMaxBudget(costUsd, maxBudgetUsd, modelId,
|
|
943
|
+
/**
|
|
944
|
+
* Spend metadata for the just-completed turn. Codex enforces
|
|
945
|
+
* `max_budget_usd` post-hoc — by the time we reject here OpenAI has
|
|
946
|
+
* already consumed tokens — so we hand the actual usage to the
|
|
947
|
+
* BackendQuotaError so the dispatcher's error path can write a
|
|
948
|
+
* `result='failed'` agent_actions row with `cost_usd` populated.
|
|
949
|
+
* Without this the dashboard silently misses budget-rejected spend.
|
|
950
|
+
*/
|
|
951
|
+
spend) {
|
|
726
952
|
if (maxBudgetUsd === undefined || costUsd <= maxBudgetUsd) {
|
|
727
953
|
return;
|
|
728
954
|
}
|
|
729
|
-
throw new BackendQuotaError(this.backendId, "max_budget_usd", null, `Codex estimated cost $${costUsd.toFixed(4)} exceeded the per-turn budget limit $${maxBudgetUsd.toFixed(2)} for ${modelId}
|
|
955
|
+
throw new BackendQuotaError(this.backendId, "max_budget_usd", null, `Codex estimated cost $${costUsd.toFixed(4)} exceeded the per-turn budget limit $${maxBudgetUsd.toFixed(2)} for ${modelId}.`, spend ? { ...spend, modelId, costUsd } : null);
|
|
730
956
|
}
|
|
731
957
|
assertPromptWithinMaxBudget(prompt, maxBudgetUsd, modelId) {
|
|
732
958
|
if (maxBudgetUsd === undefined) {
|
|
@@ -830,6 +1056,16 @@ export class CodexCore {
|
|
|
830
1056
|
let lastError = null;
|
|
831
1057
|
let sawTurnCompleted = false;
|
|
832
1058
|
const stderrBuffer = [];
|
|
1059
|
+
// Reasoning-gate state — same shape as the main executeTurn path.
|
|
1060
|
+
// The delegated proxy expects exactly one tool result; if codex
|
|
1061
|
+
// emitted reasoning summaries during the turn AND structured
|
|
1062
|
+
// pairing yielded nothing, the `--output-last-message` fallback
|
|
1063
|
+
// below would otherwise hand the reasoning text to
|
|
1064
|
+
// `tryParseToolResult` and surface it as a fake "tool result"
|
|
1065
|
+
// string. Tracking reasoning observation lets that fallback
|
|
1066
|
+
// refuse such content.
|
|
1067
|
+
const reasoningItemIds = new Set();
|
|
1068
|
+
let observedReasoning = false;
|
|
833
1069
|
// Local aborter bridged from the caller's signal so we can also
|
|
834
1070
|
// trigger an early abort on wrong-tool detection. See gemini-cli-core
|
|
835
1071
|
// for the full rationale: this caps wrong_tool failures at ~5s
|
|
@@ -864,13 +1100,17 @@ export class CodexCore {
|
|
|
864
1100
|
proxyAborter.abort(new DelegatedProxyTimeoutError(`codex stream idle for ${idleMs}ms (limit ${idleTimeoutMs}ms)`));
|
|
865
1101
|
},
|
|
866
1102
|
});
|
|
1103
|
+
const daemonReadToken = this.issueReadToken(sessionDir);
|
|
867
1104
|
try {
|
|
868
1105
|
idleWatchdog.start();
|
|
869
1106
|
const runResult = await runLineCommand({
|
|
870
1107
|
command: this.cliPath,
|
|
871
1108
|
args,
|
|
872
1109
|
cwd: sessionDir,
|
|
873
|
-
env: buildDaemonApiCliEnv(sessionDir, this.config.apiPort, {
|
|
1110
|
+
env: buildDaemonApiCliEnv(sessionDir, this.config.apiPort, {
|
|
1111
|
+
...(daemonReadToken ? { readToken: daemonReadToken } : {}),
|
|
1112
|
+
sessionBackend: "codex",
|
|
1113
|
+
}),
|
|
874
1114
|
// Wall-clock is enforced by the invoker via abortSignal — we still
|
|
875
1115
|
// pass a generous local timeout as a safety net (callers can
|
|
876
1116
|
// disable it by setting their own abortSignal).
|
|
@@ -902,6 +1142,14 @@ export class CodexCore {
|
|
|
902
1142
|
}
|
|
903
1143
|
return;
|
|
904
1144
|
}
|
|
1145
|
+
// Reasoning gate — must run before tool-call matching so a
|
|
1146
|
+
// reasoning item never accidentally feeds into the pairing
|
|
1147
|
+
// logic and never poisons the file fallback below.
|
|
1148
|
+
rememberReasoningItem(event, reasoningItemIds);
|
|
1149
|
+
if (shouldDropAsReasoning(event, reasoningItemIds)) {
|
|
1150
|
+
observedReasoning = true;
|
|
1151
|
+
return;
|
|
1152
|
+
}
|
|
905
1153
|
// Match MCP tool calls by item.name / item.tool. We accept the
|
|
906
1154
|
// first item that resolves to the requested tool name; any
|
|
907
1155
|
// earlier item resolving to a different MCP tool flips the
|
|
@@ -980,9 +1228,18 @@ export class CodexCore {
|
|
|
980
1228
|
// tool output (less reliable than structured matching, but a
|
|
981
1229
|
// graceful degradation when pairing semantics drift across
|
|
982
1230
|
// Codex versions).
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
1231
|
+
//
|
|
1232
|
+
// Reasoning gate — when reasoning was observed during the turn
|
|
1233
|
+
// the file may itself contain a reasoning summary (codex 0.121+
|
|
1234
|
+
// GPT-5 behavior). Surfacing it as a fake "tool result" would
|
|
1235
|
+
// poison the downstream `tryParseToolResult` walker. Skip the
|
|
1236
|
+
// fallback in that case and let the caller classify the run
|
|
1237
|
+
// as no-result.
|
|
1238
|
+
if (!observedReasoning) {
|
|
1239
|
+
const lastMessage = readFileIfExists(outputPath);
|
|
1240
|
+
if (lastMessage && lastMessage.trim().length > 0) {
|
|
1241
|
+
capturedResultRaw = lastMessage.trim();
|
|
1242
|
+
}
|
|
986
1243
|
}
|
|
987
1244
|
}
|
|
988
1245
|
const cost = withDurationMs({
|
|
@@ -1107,6 +1364,10 @@ export class CodexCore {
|
|
|
1107
1364
|
finally {
|
|
1108
1365
|
idleWatchdog.stop();
|
|
1109
1366
|
removeFileIfExists(outputPath);
|
|
1367
|
+
// Invoker owns sessionDir lifecycle, but the readToken scope is keyed
|
|
1368
|
+
// on the same path — revoke here so a leaked token cannot outlive the
|
|
1369
|
+
// delegated proxy run.
|
|
1370
|
+
this.readTokenManager?.revoke(sessionDir);
|
|
1110
1371
|
if (abortSignal && !abortSignal.aborted) {
|
|
1111
1372
|
abortSignal.removeEventListener("abort", callerAbortListener);
|
|
1112
1373
|
}
|
|
@@ -1225,12 +1486,24 @@ export class CodexCore {
|
|
|
1225
1486
|
let lastError = null;
|
|
1226
1487
|
let sawTurnCompleted = false;
|
|
1227
1488
|
const stderrBuffer = [];
|
|
1489
|
+
// Reasoning-gate state — mirrors executeTurn / runDelegatedTool.
|
|
1490
|
+
// Delegated tasks pull `rawAssistantText` from the file written by
|
|
1491
|
+
// `--output-last-message`; if reasoning was observed and that file
|
|
1492
|
+
// is the only text source, the dispatcher's structured-output
|
|
1493
|
+
// validator would receive reasoning narration in place of the
|
|
1494
|
+
// expected JSON envelope, leaking GPT-5's internal deliberation
|
|
1495
|
+
// into delegated-task traces and surfacing as a parse_error
|
|
1496
|
+
// wrapped around reasoning content.
|
|
1497
|
+
const reasoningItemIds = new Set();
|
|
1498
|
+
let observedReasoning = false;
|
|
1499
|
+
const daemonReadToken = this.issueReadToken(sessionDir);
|
|
1228
1500
|
try {
|
|
1229
1501
|
const runResult = await runLineCommand({
|
|
1230
1502
|
command: this.cliPath,
|
|
1231
1503
|
args,
|
|
1232
1504
|
cwd: sessionDir,
|
|
1233
1505
|
env: buildDaemonApiCliEnv(sessionDir, this.config.apiPort, {
|
|
1506
|
+
...(daemonReadToken ? { readToken: daemonReadToken } : {}),
|
|
1234
1507
|
sessionBackend: "codex",
|
|
1235
1508
|
}),
|
|
1236
1509
|
// Wall-clock is enforced by the caller's abortSignal (the route
|
|
@@ -1265,6 +1538,15 @@ export class CodexCore {
|
|
|
1265
1538
|
}
|
|
1266
1539
|
return;
|
|
1267
1540
|
}
|
|
1541
|
+
// Reasoning gate — must precede tool-call matching and the
|
|
1542
|
+
// pairing logic so reasoning items are excluded from both,
|
|
1543
|
+
// and so `observedReasoning` is set in time to suppress the
|
|
1544
|
+
// file fallback after the run completes.
|
|
1545
|
+
rememberReasoningItem(event, reasoningItemIds);
|
|
1546
|
+
if (shouldDropAsReasoning(event, reasoningItemIds)) {
|
|
1547
|
+
observedReasoning = true;
|
|
1548
|
+
return;
|
|
1549
|
+
}
|
|
1268
1550
|
const item = event.item;
|
|
1269
1551
|
if (!item || typeof item !== "object")
|
|
1270
1552
|
return;
|
|
@@ -1433,7 +1715,18 @@ export class CodexCore {
|
|
|
1433
1715
|
writeClassToolFired,
|
|
1434
1716
|
};
|
|
1435
1717
|
}
|
|
1436
|
-
|
|
1718
|
+
// Reasoning gate on the file fallback. The delegated task path
|
|
1719
|
+
// has no stream-side text accumulator (unlike executeTurn's
|
|
1720
|
+
// `outputChunks`), so the file IS the only text source. When
|
|
1721
|
+
// reasoning was observed during the run, codex CLI may have
|
|
1722
|
+
// written a reasoning summary to `--output-last-message` —
|
|
1723
|
+
// returning that as `rawAssistantText` would feed reasoning
|
|
1724
|
+
// narration into the dispatcher's structured-output validator.
|
|
1725
|
+
// Treat it as no-output instead and let the standard
|
|
1726
|
+
// parse_error path surface a clean failure.
|
|
1727
|
+
const lastMessage = observedReasoning
|
|
1728
|
+
? null
|
|
1729
|
+
: readFileIfExists(outputPath);
|
|
1437
1730
|
const finalText = lastMessage?.trim() ?? "";
|
|
1438
1731
|
if (finalText.length === 0) {
|
|
1439
1732
|
const failure = lastError ?? firstFailureLine(stderrBuffer);
|
|
@@ -1452,7 +1745,9 @@ export class CodexCore {
|
|
|
1452
1745
|
ok: false,
|
|
1453
1746
|
errorClass: "parse_error",
|
|
1454
1747
|
message: failure
|
|
1455
|
-
??
|
|
1748
|
+
?? (observedReasoning
|
|
1749
|
+
? `codex emitted only reasoning summaries; no final assistant message (sawTurnCompleted=${sawTurnCompleted})`
|
|
1750
|
+
: `codex emitted no final assistant message (sawTurnCompleted=${sawTurnCompleted})`),
|
|
1456
1751
|
cost,
|
|
1457
1752
|
trace,
|
|
1458
1753
|
writeClassToolFired,
|
|
@@ -1490,6 +1785,9 @@ export class CodexCore {
|
|
|
1490
1785
|
}
|
|
1491
1786
|
finally {
|
|
1492
1787
|
removeFileIfExists(outputPath);
|
|
1788
|
+
// See runDelegatedTool — invoker owns the dir, but the readToken scope
|
|
1789
|
+
// matches the dir path and must not outlive the run.
|
|
1790
|
+
this.readTokenManager?.revoke(sessionDir);
|
|
1493
1791
|
if (abortSignal) {
|
|
1494
1792
|
abortSignal.removeEventListener("abort", callerListener);
|
|
1495
1793
|
}
|
|
@@ -1630,6 +1928,122 @@ function extractCodexUsage(event) {
|
|
|
1630
1928
|
function nonCachedInputTokens(totalInputTokens, cacheReadInputTokens, cacheCreationInputTokens = 0) {
|
|
1631
1929
|
return Math.max(totalInputTokens - cacheReadInputTokens - cacheCreationInputTokens, 0);
|
|
1632
1930
|
}
|
|
1931
|
+
/**
|
|
1932
|
+
* Codex reasoning detection — schema-defensive across naming variants.
|
|
1933
|
+
*
|
|
1934
|
+
* Reasoning summaries (GPT-5 family, codex 0.121+) surface in three
|
|
1935
|
+
* shapes we must drop before they reach `outputChunks` or
|
|
1936
|
+
* `streamCallbacks.onText`:
|
|
1937
|
+
*
|
|
1938
|
+
* 1. Outer event-level reasoning types from older codex builds —
|
|
1939
|
+
* `agent_reasoning`, `agent_reasoning_delta`, …
|
|
1940
|
+
* 2. `item.completed` (or `item.started`) carrying the item type
|
|
1941
|
+
* directly. The field name varies across codex versions: `type`,
|
|
1942
|
+
* `item_type`, `kind` — all three are accepted defensively, same
|
|
1943
|
+
* pattern as `extractCodexShellCall`'s multi-shape probe.
|
|
1944
|
+
* 3. `item.updated` deltas. The item type is usually only declared on
|
|
1945
|
+
* `item.started` / `item.completed`; the streaming updates carry
|
|
1946
|
+
* only `id` + `delta`. The caller must remember which item IDs are
|
|
1947
|
+
* reasoning (`rememberReasoningItem`) and check IDs on every
|
|
1948
|
+
* event (`shouldDropAsReasoning`).
|
|
1949
|
+
*
|
|
1950
|
+
* Keeping (2) and (3) separate from the shell-call audit guarantees
|
|
1951
|
+
* a reasoning event never reaches `extractMcpToolCall` /
|
|
1952
|
+
* `extractCodexShellCall` either — those helpers don't false-match on
|
|
1953
|
+
* reasoning shapes today, but the early return makes the contract
|
|
1954
|
+
* explicit.
|
|
1955
|
+
*/
|
|
1956
|
+
// Item types carried inside `event.item.type` / `item.item_type` /
|
|
1957
|
+
// `item.kind` for events that wrap a reasoning summary.
|
|
1958
|
+
//
|
|
1959
|
+
// **Verified shapes** (covered by existing tests, observed in the
|
|
1960
|
+
// wild): `reasoning` (codex 0.121+), `agent_reasoning` (older builds).
|
|
1961
|
+
//
|
|
1962
|
+
// **Defensive entries** (added by the file-fallback hardening,
|
|
1963
|
+
// 2026-05-16, not yet confirmed from codex-rs source — additions are
|
|
1964
|
+
// safe because the names are reasoning-specific enough that a false
|
|
1965
|
+
// positive is implausible): `reasoning_summary` — plausible naming if
|
|
1966
|
+
// codex-rs ever differentiates the summary item from the in-progress
|
|
1967
|
+
// reasoning stream. Drop this entry if a future codex release
|
|
1968
|
+
// repurposes the name for something else.
|
|
1969
|
+
const CODEX_REASONING_ITEM_TYPES = new Set([
|
|
1970
|
+
"reasoning",
|
|
1971
|
+
"agent_reasoning",
|
|
1972
|
+
"reasoning_summary",
|
|
1973
|
+
]);
|
|
1974
|
+
// Outer-level `event.type` values that ALWAYS carry reasoning content
|
|
1975
|
+
// (typically in `event.delta` / `event.text`, with no `event.item`
|
|
1976
|
+
// wrapper, so item-id tracking does not catch them).
|
|
1977
|
+
//
|
|
1978
|
+
// **Verified shapes**: `agent_reasoning`, `agent_reasoning_delta`,
|
|
1979
|
+
// `agent_reasoning_section_break` — emitted by older codex builds and
|
|
1980
|
+
// covered by the existing reasoning-filter regression tests.
|
|
1981
|
+
//
|
|
1982
|
+
// **Defensive entries** (added 2026-05-16 — NOT confirmed against
|
|
1983
|
+
// codex-rs source, included because the bug surface is real and the
|
|
1984
|
+
// false-positive risk is near-zero given how reasoning-specific the
|
|
1985
|
+
// names are): the `response.reasoning_summary_*` family follows
|
|
1986
|
+
// OpenAI's Responses API streaming schema, which codex CLI is known
|
|
1987
|
+
// to relay verbatim in some configurations (GPT-5 / o-series models
|
|
1988
|
+
// against certain backends). The bare `reasoning_*` short forms hedge
|
|
1989
|
+
// against codex pre-release variants. If any of these conflict with a
|
|
1990
|
+
// future non-reasoning event type, remove only the conflicting entry
|
|
1991
|
+
// — the verified set above is the load-bearing minimum.
|
|
1992
|
+
const CODEX_REASONING_OUTER_EVENT_TYPES = new Set([
|
|
1993
|
+
"agent_reasoning",
|
|
1994
|
+
"agent_reasoning_delta",
|
|
1995
|
+
"agent_reasoning_section_break",
|
|
1996
|
+
"response.reasoning_summary_text.delta",
|
|
1997
|
+
"response.reasoning_summary_text.done",
|
|
1998
|
+
"response.reasoning_summary_part.added",
|
|
1999
|
+
"response.reasoning_summary_part.done",
|
|
2000
|
+
"response.reasoning.delta",
|
|
2001
|
+
"response.reasoning.done",
|
|
2002
|
+
"reasoning_delta",
|
|
2003
|
+
"reasoning_section_break",
|
|
2004
|
+
]);
|
|
2005
|
+
function readCodexItemId(event) {
|
|
2006
|
+
const item = event.item;
|
|
2007
|
+
if (!item || typeof item !== "object")
|
|
2008
|
+
return null;
|
|
2009
|
+
const id = item.id;
|
|
2010
|
+
return typeof id === "string" && id.length > 0 ? id : null;
|
|
2011
|
+
}
|
|
2012
|
+
function readCodexItemTypeName(event) {
|
|
2013
|
+
const item = event.item;
|
|
2014
|
+
if (!item || typeof item !== "object")
|
|
2015
|
+
return null;
|
|
2016
|
+
const bag = item;
|
|
2017
|
+
for (const key of ["type", "item_type", "kind"]) {
|
|
2018
|
+
const value = bag[key];
|
|
2019
|
+
if (typeof value === "string" && value.length > 0)
|
|
2020
|
+
return value;
|
|
2021
|
+
}
|
|
2022
|
+
return null;
|
|
2023
|
+
}
|
|
2024
|
+
function rememberReasoningItem(event, reasoningItemIds) {
|
|
2025
|
+
const id = readCodexItemId(event);
|
|
2026
|
+
if (!id)
|
|
2027
|
+
return;
|
|
2028
|
+
const typeName = readCodexItemTypeName(event);
|
|
2029
|
+
if (typeName && CODEX_REASONING_ITEM_TYPES.has(typeName)) {
|
|
2030
|
+
reasoningItemIds.add(id);
|
|
2031
|
+
}
|
|
2032
|
+
}
|
|
2033
|
+
function shouldDropAsReasoning(event, reasoningItemIds) {
|
|
2034
|
+
if (event.type && CODEX_REASONING_OUTER_EVENT_TYPES.has(event.type)) {
|
|
2035
|
+
return true;
|
|
2036
|
+
}
|
|
2037
|
+
const typeName = readCodexItemTypeName(event);
|
|
2038
|
+
if (typeName && CODEX_REASONING_ITEM_TYPES.has(typeName)) {
|
|
2039
|
+
return true;
|
|
2040
|
+
}
|
|
2041
|
+
const id = readCodexItemId(event);
|
|
2042
|
+
if (id && reasoningItemIds.has(id)) {
|
|
2043
|
+
return true;
|
|
2044
|
+
}
|
|
2045
|
+
return false;
|
|
2046
|
+
}
|
|
1633
2047
|
function extractCodexText(event) {
|
|
1634
2048
|
if (typeof event.output_text === "string") {
|
|
1635
2049
|
return event.output_text;
|