@yoda.digital/iris-gateway 1.13.3
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/CHANGELOG.md +515 -0
- package/README.md +282 -0
- package/dist/auto-reply/engine.d.ts +13 -0
- package/dist/auto-reply/engine.d.ts.map +1 -0
- package/dist/auto-reply/engine.js +70 -0
- package/dist/auto-reply/engine.js.map +1 -0
- package/dist/auto-reply/types.d.ts +37 -0
- package/dist/auto-reply/types.d.ts.map +1 -0
- package/dist/auto-reply/types.js +2 -0
- package/dist/auto-reply/types.js.map +1 -0
- package/dist/bridge/circuit-breaker.d.ts +40 -0
- package/dist/bridge/circuit-breaker.d.ts.map +1 -0
- package/dist/bridge/circuit-breaker.js +82 -0
- package/dist/bridge/circuit-breaker.js.map +1 -0
- package/dist/bridge/event-handler.d.ts +18 -0
- package/dist/bridge/event-handler.d.ts.map +1 -0
- package/dist/bridge/event-handler.js +128 -0
- package/dist/bridge/event-handler.js.map +1 -0
- package/dist/bridge/message-queue.d.ts +50 -0
- package/dist/bridge/message-queue.d.ts.map +1 -0
- package/dist/bridge/message-queue.js +110 -0
- package/dist/bridge/message-queue.js.map +1 -0
- package/dist/bridge/message-router.d.ts +37 -0
- package/dist/bridge/message-router.d.ts.map +1 -0
- package/dist/bridge/message-router.js +329 -0
- package/dist/bridge/message-router.js.map +1 -0
- package/dist/bridge/opencode-client.d.ts +55 -0
- package/dist/bridge/opencode-client.d.ts.map +1 -0
- package/dist/bridge/opencode-client.js +282 -0
- package/dist/bridge/opencode-client.js.map +1 -0
- package/dist/bridge/routers/channels.d.ts +11 -0
- package/dist/bridge/routers/channels.d.ts.map +1 -0
- package/dist/bridge/routers/channels.js +164 -0
- package/dist/bridge/routers/channels.js.map +1 -0
- package/dist/bridge/routers/cli.d.ts +11 -0
- package/dist/bridge/routers/cli.d.ts.map +1 -0
- package/dist/bridge/routers/cli.js +31 -0
- package/dist/bridge/routers/cli.js.map +1 -0
- package/dist/bridge/routers/governance.d.ts +13 -0
- package/dist/bridge/routers/governance.d.ts.map +1 -0
- package/dist/bridge/routers/governance.js +115 -0
- package/dist/bridge/routers/governance.js.map +1 -0
- package/dist/bridge/routers/intelligence.d.ts +23 -0
- package/dist/bridge/routers/intelligence.d.ts.map +1 -0
- package/dist/bridge/routers/intelligence.js +165 -0
- package/dist/bridge/routers/intelligence.js.map +1 -0
- package/dist/bridge/routers/skills-handlers.d.ts +122 -0
- package/dist/bridge/routers/skills-handlers.d.ts.map +1 -0
- package/dist/bridge/routers/skills-handlers.js +396 -0
- package/dist/bridge/routers/skills-handlers.js.map +1 -0
- package/dist/bridge/routers/skills-router.d.ts +5 -0
- package/dist/bridge/routers/skills-router.d.ts.map +1 -0
- package/dist/bridge/routers/skills-router.js +22 -0
- package/dist/bridge/routers/skills-router.js.map +1 -0
- package/dist/bridge/routers/skills.d.ts +2 -0
- package/dist/bridge/routers/skills.d.ts.map +1 -0
- package/dist/bridge/routers/skills.js +4 -0
- package/dist/bridge/routers/skills.js.map +1 -0
- package/dist/bridge/routers/system.d.ts +29 -0
- package/dist/bridge/routers/system.d.ts.map +1 -0
- package/dist/bridge/routers/system.js +132 -0
- package/dist/bridge/routers/system.js.map +1 -0
- package/dist/bridge/routers/vault.d.ts +11 -0
- package/dist/bridge/routers/vault.d.ts.map +1 -0
- package/dist/bridge/routers/vault.js +97 -0
- package/dist/bridge/routers/vault.js.map +1 -0
- package/dist/bridge/session-map.d.ts +24 -0
- package/dist/bridge/session-map.d.ts.map +1 -0
- package/dist/bridge/session-map.js +78 -0
- package/dist/bridge/session-map.js.map +1 -0
- package/dist/bridge/stream-coalescer.d.ts +26 -0
- package/dist/bridge/stream-coalescer.d.ts.map +1 -0
- package/dist/bridge/stream-coalescer.js +82 -0
- package/dist/bridge/stream-coalescer.js.map +1 -0
- package/dist/bridge/supervisor.d.ts +50 -0
- package/dist/bridge/supervisor.d.ts.map +1 -0
- package/dist/bridge/supervisor.js +139 -0
- package/dist/bridge/supervisor.js.map +1 -0
- package/dist/bridge/tool-server.d.ts +73 -0
- package/dist/bridge/tool-server.d.ts.map +1 -0
- package/dist/bridge/tool-server.js +209 -0
- package/dist/bridge/tool-server.js.map +1 -0
- package/dist/canvas/components.d.ts +71 -0
- package/dist/canvas/components.d.ts.map +1 -0
- package/dist/canvas/components.js +2 -0
- package/dist/canvas/components.js.map +1 -0
- package/dist/canvas/renderer.d.ts +2 -0
- package/dist/canvas/renderer.d.ts.map +1 -0
- package/dist/canvas/renderer.js +240 -0
- package/dist/canvas/renderer.js.map +1 -0
- package/dist/canvas/server.d.ts +24 -0
- package/dist/canvas/server.d.ts.map +1 -0
- package/dist/canvas/server.js +134 -0
- package/dist/canvas/server.js.map +1 -0
- package/dist/canvas/session.d.ts +23 -0
- package/dist/canvas/session.d.ts.map +1 -0
- package/dist/canvas/session.js +64 -0
- package/dist/canvas/session.js.map +1 -0
- package/dist/channels/adapter.d.ts +90 -0
- package/dist/channels/adapter.d.ts.map +1 -0
- package/dist/channels/adapter.js +2 -0
- package/dist/channels/adapter.js.map +1 -0
- package/dist/channels/discord/client.d.ts +3 -0
- package/dist/channels/discord/client.d.ts.map +1 -0
- package/dist/channels/discord/client.js +13 -0
- package/dist/channels/discord/client.js.map +1 -0
- package/dist/channels/discord/index.d.ts +41 -0
- package/dist/channels/discord/index.d.ts.map +1 -0
- package/dist/channels/discord/index.js +113 -0
- package/dist/channels/discord/index.js.map +1 -0
- package/dist/channels/discord/normalize.d.ts +4 -0
- package/dist/channels/discord/normalize.d.ts.map +1 -0
- package/dist/channels/discord/normalize.js +20 -0
- package/dist/channels/discord/normalize.js.map +1 -0
- package/dist/channels/discord/send.d.ts +13 -0
- package/dist/channels/discord/send.d.ts.map +1 -0
- package/dist/channels/discord/send.js +54 -0
- package/dist/channels/discord/send.js.map +1 -0
- package/dist/channels/mention-gating.d.ts +13 -0
- package/dist/channels/mention-gating.d.ts.map +1 -0
- package/dist/channels/mention-gating.js +42 -0
- package/dist/channels/mention-gating.js.map +1 -0
- package/dist/channels/message-cache.d.ts +17 -0
- package/dist/channels/message-cache.d.ts.map +1 -0
- package/dist/channels/message-cache.js +43 -0
- package/dist/channels/message-cache.js.map +1 -0
- package/dist/channels/registry.d.ts +9 -0
- package/dist/channels/registry.d.ts.map +1 -0
- package/dist/channels/registry.js +19 -0
- package/dist/channels/registry.js.map +1 -0
- package/dist/channels/slack/index.d.ts +38 -0
- package/dist/channels/slack/index.d.ts.map +1 -0
- package/dist/channels/slack/index.js +105 -0
- package/dist/channels/slack/index.js.map +1 -0
- package/dist/channels/slack/normalize.d.ts +14 -0
- package/dist/channels/slack/normalize.d.ts.map +1 -0
- package/dist/channels/slack/normalize.js +23 -0
- package/dist/channels/slack/normalize.js.map +1 -0
- package/dist/channels/slack/send.d.ts +13 -0
- package/dist/channels/slack/send.d.ts.map +1 -0
- package/dist/channels/slack/send.js +48 -0
- package/dist/channels/slack/send.js.map +1 -0
- package/dist/channels/telegram/index.d.ts +42 -0
- package/dist/channels/telegram/index.d.ts.map +1 -0
- package/dist/channels/telegram/index.js +125 -0
- package/dist/channels/telegram/index.js.map +1 -0
- package/dist/channels/telegram/normalize.d.ts +4 -0
- package/dist/channels/telegram/normalize.d.ts.map +1 -0
- package/dist/channels/telegram/normalize.js +25 -0
- package/dist/channels/telegram/normalize.js.map +1 -0
- package/dist/channels/telegram/send.d.ts +13 -0
- package/dist/channels/telegram/send.d.ts.map +1 -0
- package/dist/channels/telegram/send.js +55 -0
- package/dist/channels/telegram/send.js.map +1 -0
- package/dist/channels/webchat/index.d.ts +20 -0
- package/dist/channels/webchat/index.d.ts.map +1 -0
- package/dist/channels/webchat/index.js +42 -0
- package/dist/channels/webchat/index.js.map +1 -0
- package/dist/channels/whatsapp/connection.d.ts +43 -0
- package/dist/channels/whatsapp/connection.d.ts.map +1 -0
- package/dist/channels/whatsapp/connection.js +76 -0
- package/dist/channels/whatsapp/connection.js.map +1 -0
- package/dist/channels/whatsapp/index.d.ts +38 -0
- package/dist/channels/whatsapp/index.d.ts.map +1 -0
- package/dist/channels/whatsapp/index.js +99 -0
- package/dist/channels/whatsapp/index.js.map +1 -0
- package/dist/channels/whatsapp/normalize.d.ts +4 -0
- package/dist/channels/whatsapp/normalize.d.ts.map +1 -0
- package/dist/channels/whatsapp/normalize.js +31 -0
- package/dist/channels/whatsapp/normalize.js.map +1 -0
- package/dist/channels/whatsapp/send.d.ts +12 -0
- package/dist/channels/whatsapp/send.d.ts.map +1 -0
- package/dist/channels/whatsapp/send.js +48 -0
- package/dist/channels/whatsapp/send.js.map +1 -0
- package/dist/cli/banner.d.ts +2 -0
- package/dist/cli/banner.d.ts.map +1 -0
- package/dist/cli/banner.js +18 -0
- package/dist/cli/banner.js.map +1 -0
- package/dist/cli/commands/config-cmd.d.ts +13 -0
- package/dist/cli/commands/config-cmd.d.ts.map +1 -0
- package/dist/cli/commands/config-cmd.js +76 -0
- package/dist/cli/commands/config-cmd.js.map +1 -0
- package/dist/cli/commands/cron-cmd.d.ts +23 -0
- package/dist/cli/commands/cron-cmd.d.ts.map +1 -0
- package/dist/cli/commands/cron-cmd.js +88 -0
- package/dist/cli/commands/cron-cmd.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +7 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +88 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/gateway.d.ts +8 -0
- package/dist/cli/commands/gateway.d.ts.map +1 -0
- package/dist/cli/commands/gateway.js +33 -0
- package/dist/cli/commands/gateway.js.map +1 -0
- package/dist/cli/commands/init.d.ts +7 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +308 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/pairing.d.ts +19 -0
- package/dist/cli/commands/pairing.d.ts.map +1 -0
- package/dist/cli/commands/pairing.js +70 -0
- package/dist/cli/commands/pairing.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +8 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +39 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/security.d.ts +15 -0
- package/dist/cli/commands/security.d.ts.map +1 -0
- package/dist/cli/commands/security.js +49 -0
- package/dist/cli/commands/security.js.map +1 -0
- package/dist/cli/commands/send.d.ts +10 -0
- package/dist/cli/commands/send.d.ts.map +1 -0
- package/dist/cli/commands/send.js +64 -0
- package/dist/cli/commands/send.js.map +1 -0
- package/dist/cli/commands/session.d.ts +13 -0
- package/dist/cli/commands/session.d.ts.map +1 -0
- package/dist/cli/commands/session.js +48 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/commands/status.d.ts +7 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +43 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/executor.d.ts +19 -0
- package/dist/cli/executor.d.ts.map +1 -0
- package/dist/cli/executor.js +75 -0
- package/dist/cli/executor.js.map +1 -0
- package/dist/cli/program.d.ts +3 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +49 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/registry.d.ts +15 -0
- package/dist/cli/registry.d.ts.map +1 -0
- package/dist/cli/registry.js +64 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/cli/types.d.ts +40 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/config/loader.d.ts +4 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +31 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/paths.d.ts +4 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +14 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/schema.d.ts +1414 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +256 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/types.d.ts +176 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/cron/run-log.d.ts +14 -0
- package/dist/cron/run-log.d.ts.map +1 -0
- package/dist/cron/run-log.js +16 -0
- package/dist/cron/run-log.js.map +1 -0
- package/dist/cron/service.d.ts +29 -0
- package/dist/cron/service.d.ts.map +1 -0
- package/dist/cron/service.js +98 -0
- package/dist/cron/service.js.map +1 -0
- package/dist/cron/store.d.ts +20 -0
- package/dist/cron/store.d.ts.map +1 -0
- package/dist/cron/store.js +61 -0
- package/dist/cron/store.js.map +1 -0
- package/dist/gateway/adapters.d.ts +37 -0
- package/dist/gateway/adapters.d.ts.map +1 -0
- package/dist/gateway/adapters.js +83 -0
- package/dist/gateway/adapters.js.map +1 -0
- package/dist/gateway/health.d.ts +19 -0
- package/dist/gateway/health.d.ts.map +1 -0
- package/dist/gateway/health.js +117 -0
- package/dist/gateway/health.js.map +1 -0
- package/dist/gateway/intelligence-wiring.d.ts +38 -0
- package/dist/gateway/intelligence-wiring.d.ts.map +1 -0
- package/dist/gateway/intelligence-wiring.js +49 -0
- package/dist/gateway/intelligence-wiring.js.map +1 -0
- package/dist/gateway/lifecycle.d.ts +71 -0
- package/dist/gateway/lifecycle.d.ts.map +1 -0
- package/dist/gateway/lifecycle.js +318 -0
- package/dist/gateway/lifecycle.js.map +1 -0
- package/dist/gateway/metrics.d.ts +27 -0
- package/dist/gateway/metrics.d.ts.map +1 -0
- package/dist/gateway/metrics.js +99 -0
- package/dist/gateway/metrics.js.map +1 -0
- package/dist/gateway/security-wiring.d.ts +16 -0
- package/dist/gateway/security-wiring.d.ts.map +1 -0
- package/dist/gateway/security-wiring.js +18 -0
- package/dist/gateway/security-wiring.js.map +1 -0
- package/dist/gateway/shutdown.d.ts +37 -0
- package/dist/gateway/shutdown.d.ts.map +1 -0
- package/dist/gateway/shutdown.js +60 -0
- package/dist/gateway/shutdown.js.map +1 -0
- package/dist/governance/engine.d.ts +11 -0
- package/dist/governance/engine.d.ts.map +1 -0
- package/dist/governance/engine.js +57 -0
- package/dist/governance/engine.js.map +1 -0
- package/dist/governance/policy.d.ts +68 -0
- package/dist/governance/policy.d.ts.map +1 -0
- package/dist/governance/policy.js +300 -0
- package/dist/governance/policy.js.map +1 -0
- package/dist/governance/types.d.ts +18 -0
- package/dist/governance/types.d.ts.map +1 -0
- package/dist/governance/types.js +2 -0
- package/dist/governance/types.js.map +1 -0
- package/dist/heartbeat/active-hours.d.ts +7 -0
- package/dist/heartbeat/active-hours.d.ts.map +1 -0
- package/dist/heartbeat/active-hours.js +38 -0
- package/dist/heartbeat/active-hours.js.map +1 -0
- package/dist/heartbeat/activity.d.ts +16 -0
- package/dist/heartbeat/activity.d.ts.map +1 -0
- package/dist/heartbeat/activity.js +41 -0
- package/dist/heartbeat/activity.js.map +1 -0
- package/dist/heartbeat/checkers.d.ts +34 -0
- package/dist/heartbeat/checkers.d.ts.map +1 -0
- package/dist/heartbeat/checkers.js +161 -0
- package/dist/heartbeat/checkers.js.map +1 -0
- package/dist/heartbeat/coalesce.d.ts +16 -0
- package/dist/heartbeat/coalesce.d.ts.map +1 -0
- package/dist/heartbeat/coalesce.js +36 -0
- package/dist/heartbeat/coalesce.js.map +1 -0
- package/dist/heartbeat/empty-check.d.ts +12 -0
- package/dist/heartbeat/empty-check.d.ts.map +1 -0
- package/dist/heartbeat/empty-check.js +24 -0
- package/dist/heartbeat/empty-check.js.map +1 -0
- package/dist/heartbeat/engine.d.ts +39 -0
- package/dist/heartbeat/engine.d.ts.map +1 -0
- package/dist/heartbeat/engine.js +235 -0
- package/dist/heartbeat/engine.js.map +1 -0
- package/dist/heartbeat/store.d.ts +32 -0
- package/dist/heartbeat/store.d.ts.map +1 -0
- package/dist/heartbeat/store.js +127 -0
- package/dist/heartbeat/store.js.map +1 -0
- package/dist/heartbeat/types.d.ts +74 -0
- package/dist/heartbeat/types.d.ts.map +1 -0
- package/dist/heartbeat/types.js +2 -0
- package/dist/heartbeat/types.js.map +1 -0
- package/dist/heartbeat/visibility.d.ts +8 -0
- package/dist/heartbeat/visibility.d.ts.map +1 -0
- package/dist/heartbeat/visibility.js +13 -0
- package/dist/heartbeat/visibility.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/instance/coordinator.d.ts +30 -0
- package/dist/instance/coordinator.d.ts.map +1 -0
- package/dist/instance/coordinator.js +113 -0
- package/dist/instance/coordinator.js.map +1 -0
- package/dist/intelligence/arcs/detector.d.ts +57 -0
- package/dist/intelligence/arcs/detector.d.ts.map +1 -0
- package/dist/intelligence/arcs/detector.js +140 -0
- package/dist/intelligence/arcs/detector.js.map +1 -0
- package/dist/intelligence/arcs/lifecycle.d.ts +39 -0
- package/dist/intelligence/arcs/lifecycle.d.ts.map +1 -0
- package/dist/intelligence/arcs/lifecycle.js +87 -0
- package/dist/intelligence/arcs/lifecycle.js.map +1 -0
- package/dist/intelligence/arcs/store.d.ts +30 -0
- package/dist/intelligence/arcs/store.d.ts.map +1 -0
- package/dist/intelligence/arcs/store.js +117 -0
- package/dist/intelligence/arcs/store.js.map +1 -0
- package/dist/intelligence/bus.d.ts +21 -0
- package/dist/intelligence/bus.d.ts.map +1 -0
- package/dist/intelligence/bus.js +26 -0
- package/dist/intelligence/bus.js.map +1 -0
- package/dist/intelligence/cross-channel/resolver.d.ts +43 -0
- package/dist/intelligence/cross-channel/resolver.d.ts.map +1 -0
- package/dist/intelligence/cross-channel/resolver.js +129 -0
- package/dist/intelligence/cross-channel/resolver.js.map +1 -0
- package/dist/intelligence/goals/lifecycle.d.ts +66 -0
- package/dist/intelligence/goals/lifecycle.d.ts.map +1 -0
- package/dist/intelligence/goals/lifecycle.js +135 -0
- package/dist/intelligence/goals/lifecycle.js.map +1 -0
- package/dist/intelligence/goals/store.d.ts +30 -0
- package/dist/intelligence/goals/store.d.ts.map +1 -0
- package/dist/intelligence/goals/store.js +105 -0
- package/dist/intelligence/goals/store.js.map +1 -0
- package/dist/intelligence/health/gate.d.ts +41 -0
- package/dist/intelligence/health/gate.d.ts.map +1 -0
- package/dist/intelligence/health/gate.js +140 -0
- package/dist/intelligence/health/gate.js.map +1 -0
- package/dist/intelligence/health/trend-detector.d.ts +43 -0
- package/dist/intelligence/health/trend-detector.d.ts.map +1 -0
- package/dist/intelligence/health/trend-detector.js +160 -0
- package/dist/intelligence/health/trend-detector.js.map +1 -0
- package/dist/intelligence/inference/engine.d.ts +32 -0
- package/dist/intelligence/inference/engine.d.ts.map +1 -0
- package/dist/intelligence/inference/engine.js +98 -0
- package/dist/intelligence/inference/engine.js.map +1 -0
- package/dist/intelligence/inference/rules/engagement-trend.d.ts +9 -0
- package/dist/intelligence/inference/rules/engagement-trend.d.ts.map +1 -0
- package/dist/intelligence/inference/rules/engagement-trend.js +50 -0
- package/dist/intelligence/inference/rules/engagement-trend.js.map +1 -0
- package/dist/intelligence/inference/rules/index.d.ts +3 -0
- package/dist/intelligence/inference/rules/index.d.ts.map +1 -0
- package/dist/intelligence/inference/rules/index.js +13 -0
- package/dist/intelligence/inference/rules/index.js.map +1 -0
- package/dist/intelligence/inference/rules/language-stability.d.ts +9 -0
- package/dist/intelligence/inference/rules/language-stability.d.ts.map +1 -0
- package/dist/intelligence/inference/rules/language-stability.js +68 -0
- package/dist/intelligence/inference/rules/language-stability.js.map +1 -0
- package/dist/intelligence/inference/rules/response-cadence.d.ts +9 -0
- package/dist/intelligence/inference/rules/response-cadence.d.ts.map +1 -0
- package/dist/intelligence/inference/rules/response-cadence.js +53 -0
- package/dist/intelligence/inference/rules/response-cadence.js.map +1 -0
- package/dist/intelligence/inference/rules/session-pattern.d.ts +9 -0
- package/dist/intelligence/inference/rules/session-pattern.d.ts.map +1 -0
- package/dist/intelligence/inference/rules/session-pattern.js +53 -0
- package/dist/intelligence/inference/rules/session-pattern.js.map +1 -0
- package/dist/intelligence/inference/rules/timezone-from-hours.d.ts +3 -0
- package/dist/intelligence/inference/rules/timezone-from-hours.d.ts.map +1 -0
- package/dist/intelligence/inference/rules/timezone-from-hours.js +93 -0
- package/dist/intelligence/inference/rules/timezone-from-hours.js.map +1 -0
- package/dist/intelligence/inference/store.d.ts +21 -0
- package/dist/intelligence/inference/store.d.ts.map +1 -0
- package/dist/intelligence/inference/store.js +82 -0
- package/dist/intelligence/inference/store.js.map +1 -0
- package/dist/intelligence/outcomes/analyzer.d.ts +52 -0
- package/dist/intelligence/outcomes/analyzer.d.ts.map +1 -0
- package/dist/intelligence/outcomes/analyzer.js +103 -0
- package/dist/intelligence/outcomes/analyzer.js.map +1 -0
- package/dist/intelligence/outcomes/categorizer.d.ts +12 -0
- package/dist/intelligence/outcomes/categorizer.d.ts.map +1 -0
- package/dist/intelligence/outcomes/categorizer.js +19 -0
- package/dist/intelligence/outcomes/categorizer.js.map +1 -0
- package/dist/intelligence/outcomes/store.d.ts +21 -0
- package/dist/intelligence/outcomes/store.d.ts.map +1 -0
- package/dist/intelligence/outcomes/store.js +107 -0
- package/dist/intelligence/outcomes/store.js.map +1 -0
- package/dist/intelligence/prompt-assembler.d.ts +39 -0
- package/dist/intelligence/prompt-assembler.d.ts.map +1 -0
- package/dist/intelligence/prompt-assembler.js +99 -0
- package/dist/intelligence/prompt-assembler.js.map +1 -0
- package/dist/intelligence/store.d.ts +50 -0
- package/dist/intelligence/store.d.ts.map +1 -0
- package/dist/intelligence/store.js +102 -0
- package/dist/intelligence/store.js.map +1 -0
- package/dist/intelligence/triggers/evaluator.d.ts +27 -0
- package/dist/intelligence/triggers/evaluator.d.ts.map +1 -0
- package/dist/intelligence/triggers/evaluator.js +81 -0
- package/dist/intelligence/triggers/evaluator.js.map +1 -0
- package/dist/intelligence/triggers/rules.d.ts +10 -0
- package/dist/intelligence/triggers/rules.d.ts.map +1 -0
- package/dist/intelligence/triggers/rules.js +186 -0
- package/dist/intelligence/triggers/rules.js.map +1 -0
- package/dist/intelligence/types.d.ts +182 -0
- package/dist/intelligence/types.d.ts.map +1 -0
- package/dist/intelligence/types.js +3 -0
- package/dist/intelligence/types.js.map +1 -0
- package/dist/logging/logger.d.ts +5 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +20 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/media/compress.d.ts +13 -0
- package/dist/media/compress.d.ts.map +1 -0
- package/dist/media/compress.js +38 -0
- package/dist/media/compress.js.map +1 -0
- package/dist/media/fetch.d.ts +18 -0
- package/dist/media/fetch.d.ts.map +1 -0
- package/dist/media/fetch.js +62 -0
- package/dist/media/fetch.js.map +1 -0
- package/dist/media/mime.d.ts +11 -0
- package/dist/media/mime.d.ts.map +1 -0
- package/dist/media/mime.js +112 -0
- package/dist/media/mime.js.map +1 -0
- package/dist/media/parse.d.ts +20 -0
- package/dist/media/parse.d.ts.map +1 -0
- package/dist/media/parse.js +52 -0
- package/dist/media/parse.js.map +1 -0
- package/dist/media/server.d.ts +17 -0
- package/dist/media/server.d.ts.map +1 -0
- package/dist/media/server.js +76 -0
- package/dist/media/server.js.map +1 -0
- package/dist/media/store.d.ts +26 -0
- package/dist/media/store.d.ts.map +1 -0
- package/dist/media/store.js +100 -0
- package/dist/media/store.js.map +1 -0
- package/dist/onboarding/enricher.d.ts +25 -0
- package/dist/onboarding/enricher.d.ts.map +1 -0
- package/dist/onboarding/enricher.js +151 -0
- package/dist/onboarding/enricher.js.map +1 -0
- package/dist/onboarding/signals.d.ts +13 -0
- package/dist/onboarding/signals.d.ts.map +1 -0
- package/dist/onboarding/signals.js +79 -0
- package/dist/onboarding/signals.js.map +1 -0
- package/dist/onboarding/types.d.ts +28 -0
- package/dist/onboarding/types.d.ts.map +1 -0
- package/dist/onboarding/types.js +2 -0
- package/dist/onboarding/types.js.map +1 -0
- package/dist/plugins/hook-bus.d.ts +7 -0
- package/dist/plugins/hook-bus.d.ts.map +1 -0
- package/dist/plugins/hook-bus.js +25 -0
- package/dist/plugins/hook-bus.js.map +1 -0
- package/dist/plugins/loader.d.ts +14 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +108 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/registry.d.ts +13 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +32 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/types.d.ts +67 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/proactive/engine.d.ts +46 -0
- package/dist/proactive/engine.d.ts.map +1 -0
- package/dist/proactive/engine.js +238 -0
- package/dist/proactive/engine.js.map +1 -0
- package/dist/proactive/store.d.ts +35 -0
- package/dist/proactive/store.d.ts.map +1 -0
- package/dist/proactive/store.js +186 -0
- package/dist/proactive/store.js.map +1 -0
- package/dist/proactive/types.d.ts +91 -0
- package/dist/proactive/types.d.ts.map +1 -0
- package/dist/proactive/types.js +2 -0
- package/dist/proactive/types.js.map +1 -0
- package/dist/sdk/client.d.ts +222 -0
- package/dist/sdk/client.d.ts.map +1 -0
- package/dist/sdk/client.js +108 -0
- package/dist/sdk/client.js.map +1 -0
- package/dist/security/allowlist-store.d.ts +17 -0
- package/dist/security/allowlist-store.d.ts.map +1 -0
- package/dist/security/allowlist-store.js +52 -0
- package/dist/security/allowlist-store.js.map +1 -0
- package/dist/security/dm-policy.d.ts +32 -0
- package/dist/security/dm-policy.d.ts.map +1 -0
- package/dist/security/dm-policy.js +67 -0
- package/dist/security/dm-policy.js.map +1 -0
- package/dist/security/pairing-store.d.ts +25 -0
- package/dist/security/pairing-store.d.ts.map +1 -0
- package/dist/security/pairing-store.js +103 -0
- package/dist/security/pairing-store.js.map +1 -0
- package/dist/security/rate-limiter.d.ts +17 -0
- package/dist/security/rate-limiter.d.ts.map +1 -0
- package/dist/security/rate-limiter.js +43 -0
- package/dist/security/rate-limiter.js.map +1 -0
- package/dist/security/scan-rules.d.ts +3 -0
- package/dist/security/scan-rules.d.ts.map +1 -0
- package/dist/security/scan-rules.js +79 -0
- package/dist/security/scan-rules.js.map +1 -0
- package/dist/security/scan-types.d.ts +27 -0
- package/dist/security/scan-types.d.ts.map +1 -0
- package/dist/security/scan-types.js +2 -0
- package/dist/security/scan-types.js.map +1 -0
- package/dist/security/scanner.d.ts +8 -0
- package/dist/security/scanner.d.ts.map +1 -0
- package/dist/security/scanner.js +105 -0
- package/dist/security/scanner.js.map +1 -0
- package/dist/usage/tracker.d.ts +13 -0
- package/dist/usage/tracker.d.ts.map +1 -0
- package/dist/usage/tracker.js +66 -0
- package/dist/usage/tracker.js.map +1 -0
- package/dist/usage/types.d.ts +28 -0
- package/dist/usage/types.d.ts.map +1 -0
- package/dist/usage/types.js +2 -0
- package/dist/usage/types.js.map +1 -0
- package/dist/utils/file-lock.d.ts +2 -0
- package/dist/utils/file-lock.d.ts.map +1 -0
- package/dist/utils/file-lock.js +15 -0
- package/dist/utils/file-lock.js.map +1 -0
- package/dist/utils/retry.d.ts +8 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +35 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/text-chunker.d.ts +3 -0
- package/dist/utils/text-chunker.d.ts.map +1 -0
- package/dist/utils/text-chunker.js +58 -0
- package/dist/utils/text-chunker.js.map +1 -0
- package/dist/utils/typed-emitter.d.ts +14 -0
- package/dist/utils/typed-emitter.d.ts.map +1 -0
- package/dist/utils/typed-emitter.js +27 -0
- package/dist/utils/typed-emitter.js.map +1 -0
- package/dist/utils/types.d.ts +22 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +13 -0
- package/dist/utils/types.js.map +1 -0
- package/dist/vault/db.d.ts +19 -0
- package/dist/vault/db.d.ts.map +1 -0
- package/dist/vault/db.js +201 -0
- package/dist/vault/db.js.map +1 -0
- package/dist/vault/search.d.ts +16 -0
- package/dist/vault/search.d.ts.map +1 -0
- package/dist/vault/search.js +75 -0
- package/dist/vault/search.js.map +1 -0
- package/dist/vault/store.d.ts +68 -0
- package/dist/vault/store.d.ts.map +1 -0
- package/dist/vault/store.js +170 -0
- package/dist/vault/store.js.map +1 -0
- package/dist/vault/types.d.ts +50 -0
- package/dist/vault/types.d.ts.map +1 -0
- package/dist/vault/types.js +2 -0
- package/dist/vault/types.js.map +1 -0
- package/docs/sdk/getting-started.md +133 -0
- package/package.json +87 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { loadConfig } from "../config/loader.js";
|
|
2
|
+
import { getStateDir, ensureDir } from "../config/paths.js";
|
|
3
|
+
import { createLogger } from "../logging/logger.js";
|
|
4
|
+
import { OpenCodeBridge } from "../bridge/opencode-client.js";
|
|
5
|
+
import { SessionMap } from "../bridge/session-map.js";
|
|
6
|
+
import { MessageRouter } from "../bridge/message-router.js";
|
|
7
|
+
import { ToolServer } from "../bridge/tool-server.js";
|
|
8
|
+
import { ChannelRegistry } from "../channels/registry.js";
|
|
9
|
+
import { MessageCache } from "../channels/message-cache.js";
|
|
10
|
+
import { VaultDB } from "../vault/db.js";
|
|
11
|
+
import { VaultStore } from "../vault/store.js";
|
|
12
|
+
import { VaultSearch } from "../vault/search.js";
|
|
13
|
+
import { GovernanceEngine } from "../governance/engine.js";
|
|
14
|
+
import { PolicyEngine } from "../governance/policy.js";
|
|
15
|
+
import { PluginLoader } from "../plugins/loader.js";
|
|
16
|
+
import { TemplateEngine } from "../auto-reply/engine.js";
|
|
17
|
+
import { UsageTracker } from "../usage/tracker.js";
|
|
18
|
+
import { IntentStore } from "../proactive/store.js";
|
|
19
|
+
import { PulseEngine } from "../proactive/engine.js";
|
|
20
|
+
import { CanvasServer } from "../canvas/server.js";
|
|
21
|
+
import { HealthServer } from "./health.js";
|
|
22
|
+
import { SignalStore } from "../onboarding/signals.js";
|
|
23
|
+
import { ProfileEnricher } from "../onboarding/enricher.js";
|
|
24
|
+
import { HeartbeatStore } from "../heartbeat/store.js";
|
|
25
|
+
import { HeartbeatEngine } from "../heartbeat/engine.js";
|
|
26
|
+
import { ActivityTracker } from "../heartbeat/activity.js";
|
|
27
|
+
import { BridgeChecker, ChannelChecker, VaultChecker, SessionChecker, MemoryChecker } from "../heartbeat/checkers.js";
|
|
28
|
+
import { CliExecutor } from "../cli/executor.js";
|
|
29
|
+
import { InstanceCoordinator } from "../instance/coordinator.js";
|
|
30
|
+
import { CliToolRegistry } from "../cli/registry.js";
|
|
31
|
+
import { initSecurity } from "./security-wiring.js";
|
|
32
|
+
import { initIntelligence } from "./intelligence-wiring.js";
|
|
33
|
+
import { startChannelAdapters } from "./adapters.js";
|
|
34
|
+
import { registerShutdownHandlers } from "./shutdown.js";
|
|
35
|
+
import { join } from "node:path";
|
|
36
|
+
import { readFileSync, writeFileSync } from "node:fs";
|
|
37
|
+
const SSE_RECONNECT_DELAY_MS = 3_000;
|
|
38
|
+
const SSE_MAX_RECONNECT_DELAY_MS = 30_000;
|
|
39
|
+
export async function startGateway(configPath) {
|
|
40
|
+
// 1. Load config
|
|
41
|
+
const config = loadConfig(configPath);
|
|
42
|
+
// 2. Create logger
|
|
43
|
+
const logger = createLogger(config.logging);
|
|
44
|
+
logger.info("Starting Iris gateway...");
|
|
45
|
+
// 3. Ensure state directory
|
|
46
|
+
const stateDir = ensureDir(getStateDir());
|
|
47
|
+
// 4. Start OpenCode bridge
|
|
48
|
+
const bridge = new OpenCodeBridge(config.opencode, logger);
|
|
49
|
+
await bridge.start();
|
|
50
|
+
// 4.5 Wait for OpenCode to be fully ready (providers, plugins)
|
|
51
|
+
const READY_TIMEOUT_MS = 60_000;
|
|
52
|
+
const READY_POLL_MS = 500;
|
|
53
|
+
const readyStart = Date.now();
|
|
54
|
+
let warmupDone = false;
|
|
55
|
+
while (Date.now() - readyStart < READY_TIMEOUT_MS) {
|
|
56
|
+
try {
|
|
57
|
+
const healthy = await bridge.checkHealth();
|
|
58
|
+
if (healthy) {
|
|
59
|
+
const testSession = await bridge.createSession("__readiness_check__");
|
|
60
|
+
try {
|
|
61
|
+
await bridge.sendMessage(testSession.id, "ping");
|
|
62
|
+
warmupDone = true;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Provider init may fail on first attempt; retry after delay
|
|
66
|
+
}
|
|
67
|
+
await bridge.deleteSession(testSession.id);
|
|
68
|
+
if (warmupDone) {
|
|
69
|
+
logger.info("OpenCode ready (providers warmed up)");
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Not ready yet
|
|
76
|
+
}
|
|
77
|
+
await new Promise((r) => setTimeout(r, READY_POLL_MS));
|
|
78
|
+
}
|
|
79
|
+
if (!warmupDone) {
|
|
80
|
+
logger.warn("OpenCode warmup timed out — providers may not be ready");
|
|
81
|
+
}
|
|
82
|
+
// 5. Security subsystem
|
|
83
|
+
const { pairingStore, allowlistStore, rateLimiter, securityGate } = initSecurity(config, stateDir);
|
|
84
|
+
// 5.5 Vault
|
|
85
|
+
const vaultDb = new VaultDB(stateDir);
|
|
86
|
+
const vaultStore = new VaultStore(vaultDb);
|
|
87
|
+
const vaultSearch = new VaultSearch(vaultDb);
|
|
88
|
+
// 5.55 Usage tracker
|
|
89
|
+
const usageTracker = new UsageTracker(vaultDb);
|
|
90
|
+
// 5.55b Onboarding
|
|
91
|
+
let signalStore = null;
|
|
92
|
+
let profileEnricher = null;
|
|
93
|
+
if (config.onboarding?.enabled) {
|
|
94
|
+
signalStore = new SignalStore(vaultDb);
|
|
95
|
+
profileEnricher = new ProfileEnricher(signalStore, vaultStore, logger);
|
|
96
|
+
logger.info("Onboarding enricher initialized");
|
|
97
|
+
}
|
|
98
|
+
// 5.6 Governance
|
|
99
|
+
const governanceEngine = new GovernanceEngine(config.governance ?? { enabled: false, rules: [], directives: [] });
|
|
100
|
+
// 5.65 Master policy
|
|
101
|
+
const policyEngine = new PolicyEngine(config.policy ?? { enabled: false, tools: { allowed: [], denied: [] }, permissions: { bash: "deny", edit: "deny", read: "deny" }, agents: { allowedModes: ["subagent"], maxSteps: 0, requireDescription: true, defaultTools: ["vault_search", "skill"], allowPrimaryCreation: false }, skills: { restricted: [], requireTriggers: false }, enforcement: { blockUnknownTools: true, auditPolicyViolations: true } });
|
|
102
|
+
if (policyEngine.enabled)
|
|
103
|
+
logger.info("Master policy engine enabled");
|
|
104
|
+
// 5.7 Proactive system
|
|
105
|
+
let intentStore = null;
|
|
106
|
+
let pulseEngine = null;
|
|
107
|
+
if (config.proactive?.enabled) {
|
|
108
|
+
intentStore = new IntentStore(vaultDb);
|
|
109
|
+
logger.info("Proactive intent store initialized");
|
|
110
|
+
}
|
|
111
|
+
// 5.75 Heartbeat
|
|
112
|
+
let heartbeatStore = null;
|
|
113
|
+
let heartbeatEngine = null;
|
|
114
|
+
let activityTracker = null;
|
|
115
|
+
if (config.heartbeat?.enabled) {
|
|
116
|
+
heartbeatStore = new HeartbeatStore(vaultDb);
|
|
117
|
+
activityTracker = new ActivityTracker(vaultDb, vaultStore);
|
|
118
|
+
logger.info("Heartbeat store initialized");
|
|
119
|
+
}
|
|
120
|
+
// 5.76 Intelligence layer
|
|
121
|
+
const titleGenerator = async (keywords, content) => {
|
|
122
|
+
const session = await bridge.createSession("__arc_title_gen__");
|
|
123
|
+
try {
|
|
124
|
+
const prompt = [
|
|
125
|
+
"Generate a short, human-readable title (3-6 words) for a memory arc.",
|
|
126
|
+
"The title should be in the same language as the content.",
|
|
127
|
+
`Keywords: ${keywords.slice(0, 6).join(", ")}`,
|
|
128
|
+
`Content: ${content.substring(0, 300)}`,
|
|
129
|
+
"Reply with ONLY the title — no quotes, no punctuation, no explanation.",
|
|
130
|
+
].join("\n");
|
|
131
|
+
const title = await bridge.sendMessage(session.id, prompt);
|
|
132
|
+
return title.trim().replace(/^["']+|["']+$/g, "");
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
bridge.deleteSession(session.id).catch(() => { });
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
const intel = initIntelligence(vaultDb, signalStore, intentStore, heartbeatStore, logger, titleGenerator);
|
|
139
|
+
const { intelligenceBus, intelligenceStore, inferenceEngine, triggerEvaluator, outcomeAnalyzer, arcDetector, arcLifecycle, goalLifecycle, crossChannelResolver, healthGate, promptAssembler } = intel;
|
|
140
|
+
const trendDetector = intel.trendDetector;
|
|
141
|
+
// 5.77 CLI tools
|
|
142
|
+
let cliExecutor = null;
|
|
143
|
+
let cliRegistry = null;
|
|
144
|
+
if (config.cli?.enabled) {
|
|
145
|
+
cliRegistry = new CliToolRegistry(config.cli.tools);
|
|
146
|
+
cliExecutor = new CliExecutor({ allowedBinaries: config.cli.sandbox.allowedBinaries, timeout: config.cli.timeout, logger });
|
|
147
|
+
// Probe all tools in parallel (non-blocking, 2s timeout per check)
|
|
148
|
+
const probeResults = await Promise.all(cliRegistry.listTools().map(async (toolName) => {
|
|
149
|
+
const def = cliRegistry.getToolDef(toolName);
|
|
150
|
+
const result = await cliExecutor.probe(def.binary, def.healthCheck);
|
|
151
|
+
return { toolName, binary: def.binary, ...result };
|
|
152
|
+
}));
|
|
153
|
+
const unavailable = probeResults.filter((r) => !r.available);
|
|
154
|
+
if (unavailable.length > 0) {
|
|
155
|
+
for (const r of unavailable) {
|
|
156
|
+
logger.warn({ tool: r.toolName, binary: r.binary, reason: r.reason }, "CLI tool unavailable — removed from manifest");
|
|
157
|
+
}
|
|
158
|
+
cliRegistry.removeTools(unavailable.map((r) => r.toolName));
|
|
159
|
+
}
|
|
160
|
+
const manifestPath = join(stateDir, "cli-tools.json");
|
|
161
|
+
writeFileSync(manifestPath, JSON.stringify(cliRegistry.getManifest(), null, 2));
|
|
162
|
+
logger.info({ tools: cliRegistry.listTools(), unavailable: unavailable.length }, "CLI tool registry initialized");
|
|
163
|
+
}
|
|
164
|
+
// 5.8 Load plugins
|
|
165
|
+
const pluginRegistry = await new PluginLoader(logger).loadAll(config, stateDir);
|
|
166
|
+
// 6. Session map
|
|
167
|
+
const sessionMap = new SessionMap(stateDir);
|
|
168
|
+
// 7. Channel registry and message cache
|
|
169
|
+
const registry = new ChannelRegistry();
|
|
170
|
+
const messageCache = new MessageCache();
|
|
171
|
+
// 7.5 Auto-reply template engine
|
|
172
|
+
let templateEngine = null;
|
|
173
|
+
if (config.autoReply?.enabled && config.autoReply.templates.length > 0) {
|
|
174
|
+
const templates = config.autoReply.templates.map((t) => ({
|
|
175
|
+
id: t.id,
|
|
176
|
+
trigger: t.trigger,
|
|
177
|
+
response: t.response,
|
|
178
|
+
priority: t.priority,
|
|
179
|
+
cooldown: t.cooldown,
|
|
180
|
+
once: t.once,
|
|
181
|
+
channels: t.channels,
|
|
182
|
+
chatTypes: t.chatTypes,
|
|
183
|
+
forwardToAi: t.forwardToAi,
|
|
184
|
+
}));
|
|
185
|
+
templateEngine = new TemplateEngine(templates);
|
|
186
|
+
logger.info({ count: templates.length }, "Auto-reply templates loaded");
|
|
187
|
+
}
|
|
188
|
+
// 8. Message router
|
|
189
|
+
const router = new MessageRouter(bridge, sessionMap, securityGate, registry, logger, config.channels, templateEngine, profileEnricher, vaultStore);
|
|
190
|
+
// 8.5 Canvas server
|
|
191
|
+
let canvasServer = null;
|
|
192
|
+
if (config.canvas?.enabled) {
|
|
193
|
+
canvasServer = new CanvasServer({
|
|
194
|
+
port: config.canvas.port,
|
|
195
|
+
hostname: config.canvas.hostname,
|
|
196
|
+
logger,
|
|
197
|
+
onMessage: (sessionId, text) => {
|
|
198
|
+
const webchatAdapter = registry.get("webchat");
|
|
199
|
+
if (webchatAdapter) {
|
|
200
|
+
webchatAdapter.events.emit("message", {
|
|
201
|
+
id: `wc-${Date.now()}`,
|
|
202
|
+
channelId: "webchat",
|
|
203
|
+
senderId: `webchat:${sessionId}`,
|
|
204
|
+
senderName: "Web User",
|
|
205
|
+
chatId: sessionId,
|
|
206
|
+
chatType: "dm",
|
|
207
|
+
text,
|
|
208
|
+
timestamp: Date.now(),
|
|
209
|
+
raw: null,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
});
|
|
214
|
+
await canvasServer.start();
|
|
215
|
+
logger.info({ port: config.canvas.port }, "Canvas server started");
|
|
216
|
+
}
|
|
217
|
+
// 9. Tool server
|
|
218
|
+
const toolServer = new ToolServer({
|
|
219
|
+
registry, logger, vaultStore, vaultSearch, governanceEngine, policyEngine,
|
|
220
|
+
sessionMap, pluginTools: pluginRegistry.tools, usageTracker, canvasServer,
|
|
221
|
+
intentStore, signalStore, cliExecutor, cliRegistry, intelligenceStore,
|
|
222
|
+
goalLifecycle, arcLifecycle, arcDetector, outcomeAnalyzer, promptAssembler,
|
|
223
|
+
});
|
|
224
|
+
await toolServer.start();
|
|
225
|
+
// 10. Health server
|
|
226
|
+
const coordinator = new InstanceCoordinator(vaultDb.raw());
|
|
227
|
+
coordinator.start();
|
|
228
|
+
const healthServer = new HealthServer(registry, bridge, config.gateway.port, config.gateway.hostname, coordinator);
|
|
229
|
+
await healthServer.start();
|
|
230
|
+
logger.info({ port: config.gateway.port }, "Health server started");
|
|
231
|
+
// 11. Abort controller
|
|
232
|
+
const abortController = new AbortController();
|
|
233
|
+
// 12. Channel adapters
|
|
234
|
+
await startChannelAdapters({
|
|
235
|
+
config, logger, registry, messageCache, canvasServer, vaultStore, router,
|
|
236
|
+
activityTracker, inferenceEngine, outcomeAnalyzer, arcDetector, profileEnricher,
|
|
237
|
+
signalStore,
|
|
238
|
+
pluginRegistry, abortController,
|
|
239
|
+
});
|
|
240
|
+
// 12.5 Plugin services
|
|
241
|
+
for (const [name, service] of pluginRegistry.services) {
|
|
242
|
+
try {
|
|
243
|
+
await service.start({ config, logger, stateDir, signal: abortController.signal });
|
|
244
|
+
logger.info({ service: name }, "Plugin service started");
|
|
245
|
+
}
|
|
246
|
+
catch (err) {
|
|
247
|
+
logger.error({ err, service: name }, "Failed to start plugin service");
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// 12.6 Proactive pulse engine
|
|
251
|
+
if (config.proactive?.enabled && intentStore) {
|
|
252
|
+
pulseEngine = new PulseEngine({ store: intentStore, bridge, router, sessionMap, vaultStore, registry, logger, config: config.proactive, coordinator });
|
|
253
|
+
pulseEngine.start();
|
|
254
|
+
logger.info("Proactive pulse engine started");
|
|
255
|
+
}
|
|
256
|
+
// 12.7 Heartbeat engine
|
|
257
|
+
if (config.heartbeat?.enabled && heartbeatStore) {
|
|
258
|
+
heartbeatEngine = new HeartbeatEngine({
|
|
259
|
+
store: heartbeatStore,
|
|
260
|
+
checkers: [new BridgeChecker(bridge), new ChannelChecker(registry), new VaultChecker(vaultDb), new SessionChecker(sessionMap), new MemoryChecker()],
|
|
261
|
+
logger,
|
|
262
|
+
config: config.heartbeat,
|
|
263
|
+
getInFlightCount: () => bridge.getInFlightCount(),
|
|
264
|
+
});
|
|
265
|
+
heartbeatEngine.start();
|
|
266
|
+
toolServer.setHeartbeatEngine(heartbeatEngine);
|
|
267
|
+
logger.info("Heartbeat engine started");
|
|
268
|
+
}
|
|
269
|
+
// 12.8 Onboarding consolidation timer
|
|
270
|
+
if (config.onboarding?.enabled && profileEnricher && signalStore) {
|
|
271
|
+
const consolidateTimer = setInterval(() => { logger.debug("Running signal consolidation"); }, config.onboarding.enricher.consolidateIntervalMs);
|
|
272
|
+
consolidateTimer.unref();
|
|
273
|
+
}
|
|
274
|
+
// Emit gateway.ready hook
|
|
275
|
+
await pluginRegistry.hookBus.emit("gateway.ready", undefined);
|
|
276
|
+
// 13. SSE subscription disabled (see original for reason)
|
|
277
|
+
// 14. Graceful shutdown
|
|
278
|
+
registerShutdownHandlers({
|
|
279
|
+
logger, registry, router, messageCache, canvasServer, toolServer, healthServer,
|
|
280
|
+
bridge, vaultDb, pulseEngine, heartbeatEngine, intelligenceBus, pluginRegistry, abortController, coordinator,
|
|
281
|
+
});
|
|
282
|
+
// Startup summary
|
|
283
|
+
try {
|
|
284
|
+
const ocPath = join(config.opencode.projectDir ?? process.cwd(), ".opencode", "opencode.json");
|
|
285
|
+
const ocConfig = JSON.parse(readFileSync(ocPath, "utf-8"));
|
|
286
|
+
const primaryModel = ocConfig.model ?? "unknown";
|
|
287
|
+
const smallModel = ocConfig.small_model ?? "none";
|
|
288
|
+
const channels = Object.keys(config.channels);
|
|
289
|
+
const securityMode = config.security?.defaultDmPolicy ?? "open";
|
|
290
|
+
const governanceRules = governanceEngine?.getRules?.()?.length ?? 0;
|
|
291
|
+
console.log("");
|
|
292
|
+
console.log(" ┌─────────────────────────────────────────┐");
|
|
293
|
+
console.log(" │ Gateway Ready │");
|
|
294
|
+
console.log(" ├─────────────────────────────────────────┤");
|
|
295
|
+
console.log(` │ Model: ${primaryModel.padEnd(28)}│`);
|
|
296
|
+
console.log(` │ Small: ${smallModel.padEnd(28)}│`);
|
|
297
|
+
console.log(` │ Channels: ${channels.join(", ").padEnd(28)}│`);
|
|
298
|
+
console.log(` │ Security: ${securityMode.padEnd(28)}│`);
|
|
299
|
+
console.log(` │ Rules: ${String(governanceRules).padEnd(28)}│`);
|
|
300
|
+
console.log(` │ OpenCode: :${config.opencode.port}${"".padEnd(23)}│`);
|
|
301
|
+
console.log(` │ Tools: :19877${"".padEnd(22)}│`);
|
|
302
|
+
console.log(` │ Health: :19876${"".padEnd(22)}│`);
|
|
303
|
+
console.log(" └─────────────────────────────────────────┘");
|
|
304
|
+
console.log("");
|
|
305
|
+
}
|
|
306
|
+
catch { /* Best-effort */ }
|
|
307
|
+
logger.info("Iris gateway started");
|
|
308
|
+
return {
|
|
309
|
+
config, logger, bridge, sessionMap, router, toolServer, healthServer,
|
|
310
|
+
registry, messageCache, abortController, vaultDb, vaultStore, vaultSearch,
|
|
311
|
+
governanceEngine, usageTracker, pluginRegistry, intentStore, pulseEngine, coordinator,
|
|
312
|
+
signalStore, profileEnricher, heartbeatEngine, activityTracker,
|
|
313
|
+
intelligenceBus, intelligenceStore, inferenceEngine, triggerEvaluator,
|
|
314
|
+
outcomeAnalyzer, arcDetector, arcLifecycle, goalLifecycle,
|
|
315
|
+
crossChannelResolver, healthGate, promptAssembler,
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/gateway/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAe,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAYzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAuCtD,MAAM,sBAAsB,GAAG,KAAK,CAAC;AACrC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAmB;IACpD,iBAAiB;IACjB,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAEtC,mBAAmB;IACnB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAExC,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAE1C,2BAA2B;IAC3B,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAErB,+DAA+D;IAC/D,MAAM,gBAAgB,GAAG,MAAM,CAAC;IAChC,MAAM,aAAa,GAAG,GAAG,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,gBAAgB,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;gBACtE,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;oBACjD,UAAU,GAAG,IAAI,CAAC;gBACpB,CAAC;gBAAC,MAAM,CAAC;oBACP,6DAA6D;gBAC/D,CAAC;gBACD,MAAM,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;oBACpD,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACxE,CAAC;IAED,wBAAwB;IACxB,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEnG,YAAY;IACZ,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAE7C,qBAAqB;IACrB,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IAE/C,mBAAmB;IACnB,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,IAAI,eAAe,GAA2B,IAAI,CAAC;IACnD,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC/B,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QACvC,eAAe,GAAG,IAAI,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;IAED,iBAAiB;IACjB,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAC3C,MAAM,CAAC,UAAU,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CACnE,CAAC;IAEF,qBAAqB;IACrB,MAAM,YAAY,GAAG,IAAI,YAAY,CACnC,MAAM,CAAC,MAAM,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,CACnZ,CAAC;IACF,IAAI,YAAY,CAAC,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAEtE,uBAAuB;IACvB,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;QAC9B,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAED,iBAAiB;IACjB,IAAI,cAAc,GAA0B,IAAI,CAAC;IACjD,IAAI,eAAe,GAA2B,IAAI,CAAC;IACnD,IAAI,eAAe,GAA2B,IAAI,CAAC;IACnD,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;QAC9B,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,eAAe,GAAG,IAAI,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAED,0BAA0B;IAC1B,MAAM,cAAc,GAAqB,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QACnE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG;gBACb,sEAAsE;gBACtE,0DAA0D;gBAC1D,aAAa,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC9C,YAAY,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;gBACvC,wEAAwE;aACzE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAC3D,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1G,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAC3E,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EACzD,oBAAoB,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAC9D,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAE1C,iBAAiB;IACjB,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,IAAI,WAAW,GAA2B,IAAI,CAAC;IAC/C,IAAI,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QACxB,WAAW,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpD,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAE5H,mEAAmE;QACnE,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,WAAW,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC7C,MAAM,GAAG,GAAG,WAAY,CAAC,UAAU,CAAC,QAAQ,CAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,WAAY,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;YACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACrD,CAAC,CAAC,CACH,CAAC;QACF,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,8CAA8C,CAAC,CAAC;YACxH,CAAC;YACD,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACtD,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,+BAA+B,CAAC,CAAC;IACpH,CAAC;IAED,mBAAmB;IACnB,MAAM,cAAc,GAAG,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEhF,iBAAiB;IACjB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE5C,wCAAwC;IACxC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IAExC,iCAAiC;IACjC,IAAI,cAAc,GAA0B,IAAI,CAAC;IACjD,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,SAAS,GAAwB,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5E,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAuC;YAClD,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC,CAAC;QACJ,cAAc,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,EAAE,6BAA6B,CAAC,CAAC;IAC1E,CAAC;IAED,oBAAoB;IACpB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IAEnJ,oBAAoB;IACpB,IAAI,YAAY,GAAwB,IAAI,CAAC;IAC7C,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC3B,YAAY,GAAG,IAAI,YAAY,CAAC;YAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;YACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;YAChC,MAAM;YACN,SAAS,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE;gBAC7B,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC/C,IAAI,cAAc,EAAE,CAAC;oBACnB,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;wBACpC,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;wBACtB,SAAS,EAAE,SAAS;wBACpB,QAAQ,EAAE,WAAW,SAAS,EAAE;wBAChC,UAAU,EAAE,UAAU;wBACtB,MAAM,EAAE,SAAS;wBACjB,QAAQ,EAAE,IAAa;wBACvB,IAAI;wBACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;wBACrB,GAAG,EAAE,IAAI;qBACV,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACrE,CAAC;IAED,iBAAiB;IACjB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAChC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY;QACzE,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY;QACzE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB;QACrE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe;KAC3E,CAAC,CAAC;IACH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IAEzB,oBAAoB;IACpB,MAAM,WAAW,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3D,WAAW,CAAC,KAAK,EAAE,CAAC;IAEpB,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACnH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,uBAAuB,CAAC,CAAC;IAEpE,uBAAuB;IACvB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAE9C,uBAAuB;IACvB,MAAM,oBAAoB,CAAC;QACzB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM;QACxE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe;QAC/E,WAAW;QACX,cAAc,EAAE,eAAe;KAChC,CAAC,CAAC;IAEH,uBAAuB;IACvB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;YAClF,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,gCAAgC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC;QAC7C,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QACvJ,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAED,wBAAwB;IACxB,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,cAAc,EAAE,CAAC;QAChD,eAAe,GAAG,IAAI,eAAe,CAAC;YACpC,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,IAAI,aAAa,EAAE,CAAC;YACnJ,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,SAAS;YACxB,gBAAgB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE;SAClD,CAAC,CAAC;QACH,eAAe,CAAC,KAAK,EAAE,CAAC;QACxB,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAED,sCAAsC;IACtC,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;QACjE,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QAChJ,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,0BAA0B;IAC1B,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,SAAkB,CAAC,CAAC;IAEvE,0DAA0D;IAE1D,wBAAwB;IACxB,wBAAwB,CAAC;QACvB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY;QAC9E,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW;KAC7G,CAAC,CAAC;IAEH,kBAAkB;IAClB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QAC/F,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,IAAI,SAAS,CAAC;QACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,eAAe,IAAI,MAAM,CAAC;QAChE,MAAM,eAAe,GAAG,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,IAAI,CAAC,CAAC;QAEpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,mBAAmB,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,mBAAmB,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAE7B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpC,OAAO;QACL,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY;QACpE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW;QACzE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;QACrF,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;QAC9D,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB;QACrE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa;QACzD,oBAAoB,EAAE,UAAU,EAAE,eAAe;KAClD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Registry, Counter, Histogram, Gauge } from "prom-client";
|
|
2
|
+
/**
|
|
3
|
+
* Prometheus metrics registry for iris-gateway.
|
|
4
|
+
* Tracks message throughput, latency, errors, and system health.
|
|
5
|
+
*/
|
|
6
|
+
declare class MetricsRegistry {
|
|
7
|
+
private readonly registry;
|
|
8
|
+
readonly messagesReceived: Counter<"channel">;
|
|
9
|
+
readonly messagesSent: Counter<"channel">;
|
|
10
|
+
readonly messagesErrors: Counter<"channel" | "error_type">;
|
|
11
|
+
readonly messageProcessingLatency: Histogram<"channel" | "stage">;
|
|
12
|
+
readonly intelligencePipelineLatency: Histogram<"stage">;
|
|
13
|
+
readonly activeConnections: Gauge<"channel">;
|
|
14
|
+
readonly queueDepth: Gauge<string>;
|
|
15
|
+
readonly systemHealth: Gauge<"component">;
|
|
16
|
+
readonly uptime: Gauge<string>;
|
|
17
|
+
readonly arcsDetected: Counter<string>;
|
|
18
|
+
readonly outcomesLogged: Counter<"type">;
|
|
19
|
+
readonly intentsTriggered: Counter<"intent_id">;
|
|
20
|
+
constructor();
|
|
21
|
+
getRegistry(): Registry;
|
|
22
|
+
metrics(): Promise<string>;
|
|
23
|
+
metricsAsJson(): Promise<unknown>;
|
|
24
|
+
}
|
|
25
|
+
export declare const metrics: MetricsRegistry;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/gateway/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,KAAK,EAEN,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,cAAM,eAAe;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAG3C,QAAQ,CAAC,gBAAgB,qBAKtB;IAEH,QAAQ,CAAC,YAAY,qBAKlB;IAEH,QAAQ,CAAC,cAAc,oCAKpB;IAGH,QAAQ,CAAC,wBAAwB,iCAM9B;IAEH,QAAQ,CAAC,2BAA2B,qBAMjC;IAGH,QAAQ,CAAC,iBAAiB,mBAKvB;IAEH,QAAQ,CAAC,UAAU,gBAIhB;IAEH,QAAQ,CAAC,YAAY,qBAKlB;IAEH,QAAQ,CAAC,MAAM,gBAIZ;IAGH,QAAQ,CAAC,YAAY,kBAIlB;IAEH,QAAQ,CAAC,cAAc,kBAKpB;IAEH,QAAQ,CAAC,gBAAgB,uBAKtB;;IAOH,WAAW,IAAI,QAAQ;IAIjB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1B,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;CAGxC;AAGD,eAAO,MAAM,OAAO,iBAAwB,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { Registry, Counter, Histogram, Gauge, collectDefaultMetrics, } from "prom-client";
|
|
2
|
+
/**
|
|
3
|
+
* Prometheus metrics registry for iris-gateway.
|
|
4
|
+
* Tracks message throughput, latency, errors, and system health.
|
|
5
|
+
*/
|
|
6
|
+
class MetricsRegistry {
|
|
7
|
+
registry = new Registry();
|
|
8
|
+
// Message counters
|
|
9
|
+
messagesReceived = new Counter({
|
|
10
|
+
name: "iris_messages_received_total",
|
|
11
|
+
help: "Total number of messages received",
|
|
12
|
+
labelNames: ["channel"],
|
|
13
|
+
registers: [this.registry],
|
|
14
|
+
});
|
|
15
|
+
messagesSent = new Counter({
|
|
16
|
+
name: "iris_messages_sent_total",
|
|
17
|
+
help: "Total number of messages sent",
|
|
18
|
+
labelNames: ["channel"],
|
|
19
|
+
registers: [this.registry],
|
|
20
|
+
});
|
|
21
|
+
messagesErrors = new Counter({
|
|
22
|
+
name: "iris_messages_errors_total",
|
|
23
|
+
help: "Total number of message processing errors",
|
|
24
|
+
labelNames: ["channel", "error_type"],
|
|
25
|
+
registers: [this.registry],
|
|
26
|
+
});
|
|
27
|
+
// Latency histograms
|
|
28
|
+
messageProcessingLatency = new Histogram({
|
|
29
|
+
name: "iris_message_processing_seconds",
|
|
30
|
+
help: "Message processing latency in seconds",
|
|
31
|
+
labelNames: ["channel", "stage"],
|
|
32
|
+
buckets: [0.01, 0.05, 0.1, 0.5, 1, 2, 5, 10],
|
|
33
|
+
registers: [this.registry],
|
|
34
|
+
});
|
|
35
|
+
intelligencePipelineLatency = new Histogram({
|
|
36
|
+
name: "iris_intelligence_pipeline_seconds",
|
|
37
|
+
help: "Intelligence pipeline processing latency in seconds",
|
|
38
|
+
labelNames: ["stage"],
|
|
39
|
+
buckets: [0.001, 0.005, 0.01, 0.05, 0.1, 0.5],
|
|
40
|
+
registers: [this.registry],
|
|
41
|
+
});
|
|
42
|
+
// Gauge metrics
|
|
43
|
+
activeConnections = new Gauge({
|
|
44
|
+
name: "iris_active_connections",
|
|
45
|
+
help: "Number of active channel connections",
|
|
46
|
+
labelNames: ["channel"],
|
|
47
|
+
registers: [this.registry],
|
|
48
|
+
});
|
|
49
|
+
queueDepth = new Gauge({
|
|
50
|
+
name: "iris_queue_depth",
|
|
51
|
+
help: "Current depth of the message queue",
|
|
52
|
+
registers: [this.registry],
|
|
53
|
+
});
|
|
54
|
+
systemHealth = new Gauge({
|
|
55
|
+
name: "iris_system_health",
|
|
56
|
+
help: "System health status (1=healthy, 0.5=degraded, 0=unhealthy)",
|
|
57
|
+
labelNames: ["component"],
|
|
58
|
+
registers: [this.registry],
|
|
59
|
+
});
|
|
60
|
+
uptime = new Gauge({
|
|
61
|
+
name: "iris_uptime_seconds",
|
|
62
|
+
help: "System uptime in seconds",
|
|
63
|
+
registers: [this.registry],
|
|
64
|
+
});
|
|
65
|
+
// Intelligence metrics
|
|
66
|
+
arcsDetected = new Counter({
|
|
67
|
+
name: "iris_arcs_detected_total",
|
|
68
|
+
help: "Total number of detected behavioral arcs",
|
|
69
|
+
registers: [this.registry],
|
|
70
|
+
});
|
|
71
|
+
outcomesLogged = new Counter({
|
|
72
|
+
name: "iris_outcomes_logged_total",
|
|
73
|
+
help: "Total number of logged outcomes",
|
|
74
|
+
labelNames: ["type"],
|
|
75
|
+
registers: [this.registry],
|
|
76
|
+
});
|
|
77
|
+
intentsTriggered = new Counter({
|
|
78
|
+
name: "iris_intents_triggered_total",
|
|
79
|
+
help: "Total number of triggered intents",
|
|
80
|
+
labelNames: ["intent_id"],
|
|
81
|
+
registers: [this.registry],
|
|
82
|
+
});
|
|
83
|
+
constructor() {
|
|
84
|
+
// Collect default Node.js metrics (memory, CPU, etc.)
|
|
85
|
+
collectDefaultMetrics({ register: this.registry });
|
|
86
|
+
}
|
|
87
|
+
getRegistry() {
|
|
88
|
+
return this.registry;
|
|
89
|
+
}
|
|
90
|
+
async metrics() {
|
|
91
|
+
return this.registry.metrics();
|
|
92
|
+
}
|
|
93
|
+
async metricsAsJson() {
|
|
94
|
+
return this.registry.getMetricsAsJSON();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Singleton instance
|
|
98
|
+
export const metrics = new MetricsRegistry();
|
|
99
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/gateway/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { IrisConfig } from "../config/types.js";
|
|
2
|
+
import { SecurityGate } from "../security/dm-policy.js";
|
|
3
|
+
import { PairingStore } from "../security/pairing-store.js";
|
|
4
|
+
import { AllowlistStore } from "../security/allowlist-store.js";
|
|
5
|
+
import { RateLimiter } from "../security/rate-limiter.js";
|
|
6
|
+
export interface SecurityComponents {
|
|
7
|
+
pairingStore: PairingStore;
|
|
8
|
+
allowlistStore: AllowlistStore;
|
|
9
|
+
rateLimiter: RateLimiter;
|
|
10
|
+
securityGate: SecurityGate;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Initialize security gate, pairing store, allowlist, and rate limiter.
|
|
14
|
+
*/
|
|
15
|
+
export declare function initSecurity(config: IrisConfig, stateDir: string): SecurityComponents;
|
|
16
|
+
//# sourceMappingURL=security-wiring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-wiring.d.ts","sourceRoot":"","sources":["../../src/gateway/security-wiring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAcrF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SecurityGate } from "../security/dm-policy.js";
|
|
2
|
+
import { PairingStore } from "../security/pairing-store.js";
|
|
3
|
+
import { AllowlistStore } from "../security/allowlist-store.js";
|
|
4
|
+
import { RateLimiter } from "../security/rate-limiter.js";
|
|
5
|
+
/**
|
|
6
|
+
* Initialize security gate, pairing store, allowlist, and rate limiter.
|
|
7
|
+
*/
|
|
8
|
+
export function initSecurity(config, stateDir) {
|
|
9
|
+
const pairingStore = new PairingStore(stateDir, config.security.pairingCodeTtlMs, config.security.pairingCodeLength);
|
|
10
|
+
const allowlistStore = new AllowlistStore(stateDir);
|
|
11
|
+
const rateLimiter = new RateLimiter({
|
|
12
|
+
perMinute: config.security.rateLimitPerMinute,
|
|
13
|
+
perHour: config.security.rateLimitPerHour,
|
|
14
|
+
});
|
|
15
|
+
const securityGate = new SecurityGate(pairingStore, allowlistStore, rateLimiter, config.security);
|
|
16
|
+
return { pairingStore, allowlistStore, rateLimiter, securityGate };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=security-wiring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-wiring.js","sourceRoot":"","sources":["../../src/gateway/security-wiring.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAS1D;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAkB,EAAE,QAAgB;IAC/D,MAAM,YAAY,GAAG,IAAI,YAAY,CACnC,QAAQ,EACR,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAChC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAClC,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,kBAAkB;QAC7C,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,gBAAgB;KAC1C,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAElG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Logger } from "../logging/logger.js";
|
|
2
|
+
import type { ChannelRegistry } from "../channels/registry.js";
|
|
3
|
+
import type { MessageRouter } from "../bridge/message-router.js";
|
|
4
|
+
import type { MessageCache } from "../channels/message-cache.js";
|
|
5
|
+
import type { CanvasServer } from "../canvas/server.js";
|
|
6
|
+
import type { ToolServer } from "../bridge/tool-server.js";
|
|
7
|
+
import type { HealthServer } from "./health.js";
|
|
8
|
+
import type { OpenCodeBridge } from "../bridge/opencode-client.js";
|
|
9
|
+
import type { VaultDB } from "../vault/db.js";
|
|
10
|
+
import type { PulseEngine } from "../proactive/engine.js";
|
|
11
|
+
import type { HeartbeatEngine } from "../heartbeat/engine.js";
|
|
12
|
+
import type { IntelligenceBus } from "../intelligence/bus.js";
|
|
13
|
+
import type { PluginRegistry as IrisPluginRegistry } from "../plugins/registry.js";
|
|
14
|
+
import type { InstanceCoordinator } from "../instance/coordinator.js";
|
|
15
|
+
export interface ShutdownDeps {
|
|
16
|
+
logger: Logger;
|
|
17
|
+
registry: ChannelRegistry;
|
|
18
|
+
router: MessageRouter;
|
|
19
|
+
messageCache: MessageCache;
|
|
20
|
+
canvasServer: CanvasServer | null;
|
|
21
|
+
toolServer: ToolServer;
|
|
22
|
+
healthServer: HealthServer;
|
|
23
|
+
bridge: OpenCodeBridge;
|
|
24
|
+
vaultDb: VaultDB;
|
|
25
|
+
pulseEngine: PulseEngine | null;
|
|
26
|
+
heartbeatEngine: HeartbeatEngine | null;
|
|
27
|
+
intelligenceBus: IntelligenceBus | null;
|
|
28
|
+
pluginRegistry: IrisPluginRegistry;
|
|
29
|
+
abortController: AbortController;
|
|
30
|
+
coordinator?: InstanceCoordinator;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Register SIGTERM/SIGINT handlers and perform graceful shutdown.
|
|
34
|
+
* Stops adapters, servers, and closes the vault DB.
|
|
35
|
+
*/
|
|
36
|
+
export declare function registerShutdownHandlers(deps: ShutdownDeps): void;
|
|
37
|
+
//# sourceMappingURL=shutdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../../src/gateway/shutdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,cAAc,EAAE,kBAAkB,CAAC;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAID;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAuDjE"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
const SHUTDOWN_TIMEOUT_MS = 15_000;
|
|
2
|
+
/**
|
|
3
|
+
* Register SIGTERM/SIGINT handlers and perform graceful shutdown.
|
|
4
|
+
* Stops adapters, servers, and closes the vault DB.
|
|
5
|
+
*/
|
|
6
|
+
export function registerShutdownHandlers(deps) {
|
|
7
|
+
let shutdownInProgress = false;
|
|
8
|
+
const shutdown = async () => {
|
|
9
|
+
if (shutdownInProgress)
|
|
10
|
+
return;
|
|
11
|
+
shutdownInProgress = true;
|
|
12
|
+
const { logger, registry, router, messageCache, canvasServer, toolServer, healthServer, bridge, vaultDb, pulseEngine, heartbeatEngine, intelligenceBus, pluginRegistry, abortController } = deps;
|
|
13
|
+
logger.info("Shutting down gracefully...");
|
|
14
|
+
const forceExit = setTimeout(() => {
|
|
15
|
+
logger.warn("Shutdown timeout reached, forcing exit");
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}, SHUTDOWN_TIMEOUT_MS);
|
|
18
|
+
forceExit.unref();
|
|
19
|
+
deps.coordinator?.stop();
|
|
20
|
+
abortController.abort();
|
|
21
|
+
if (pulseEngine)
|
|
22
|
+
pulseEngine.stop();
|
|
23
|
+
if (heartbeatEngine)
|
|
24
|
+
heartbeatEngine.stop();
|
|
25
|
+
if (intelligenceBus)
|
|
26
|
+
intelligenceBus.dispose();
|
|
27
|
+
// Stop channel adapters
|
|
28
|
+
for (const adapter of registry.list()) {
|
|
29
|
+
try {
|
|
30
|
+
await adapter.stop();
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
logger.error({ err, channel: adapter.id }, "Error stopping channel");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Emit shutdown hook and stop plugin services
|
|
37
|
+
await pluginRegistry.hookBus.emit("gateway.shutdown", undefined);
|
|
38
|
+
for (const [name, service] of pluginRegistry.services) {
|
|
39
|
+
try {
|
|
40
|
+
await service.stop();
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
logger.error({ err, service: name }, "Error stopping plugin service");
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
router.dispose();
|
|
47
|
+
messageCache.dispose();
|
|
48
|
+
if (canvasServer)
|
|
49
|
+
await canvasServer.stop();
|
|
50
|
+
await toolServer.stop();
|
|
51
|
+
await healthServer.stop();
|
|
52
|
+
await bridge.stop();
|
|
53
|
+
vaultDb.close();
|
|
54
|
+
clearTimeout(forceExit);
|
|
55
|
+
logger.info("Shutdown complete");
|
|
56
|
+
};
|
|
57
|
+
process.once("SIGTERM", shutdown);
|
|
58
|
+
process.once("SIGINT", shutdown);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=shutdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../../src/gateway/shutdown.ts"],"names":[],"mappings":"AAiCA,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAkB;IACzD,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAE/B,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,IAAI,kBAAkB;YAAE,OAAO;QAC/B,kBAAkB,GAAG,IAAI,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EACtE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAC3D,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAE5D,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAE3C,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACxB,SAAS,CAAC,KAAK,EAAE,CAAC;QAElB,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;QACzB,eAAe,CAAC,KAAK,EAAE,CAAC;QAExB,IAAI,WAAW;YAAE,WAAW,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,eAAe;YAAE,eAAe,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,eAAe;YAAE,eAAe,CAAC,OAAO,EAAE,CAAC;QAE/C,wBAAwB;QACxB,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC;gBAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACzC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAkB,CAAC,CAAC;QAC1E,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC;YACtD,IAAI,CAAC;gBAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACzC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,+BAA+B,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,YAAY,CAAC,OAAO,EAAE,CAAC;QAEvB,IAAI,YAAY;YAAE,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC"}
|