@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,39 @@
|
|
|
1
|
+
import type { IntelligenceStore } from "../store.js";
|
|
2
|
+
import type { IntelligenceBus } from "../bus.js";
|
|
3
|
+
import type { Logger } from "../../logging/logger.js";
|
|
4
|
+
import type { MemoryArc } from "../types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Arc lifecycle manager.
|
|
7
|
+
* Handles status transitions and provides arc context
|
|
8
|
+
* for prompt injection and proactive follow-ups.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ArcLifecycle {
|
|
11
|
+
private readonly store;
|
|
12
|
+
private readonly bus;
|
|
13
|
+
private readonly logger;
|
|
14
|
+
constructor(store: IntelligenceStore, bus: IntelligenceBus, logger: Logger);
|
|
15
|
+
/**
|
|
16
|
+
* Resolve an arc — the situation has concluded.
|
|
17
|
+
*/
|
|
18
|
+
resolve(arcId: string, summary?: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Abandon an arc — no longer relevant.
|
|
21
|
+
*/
|
|
22
|
+
abandon(arcId: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* Reactivate a stale arc — user brought it up again.
|
|
25
|
+
*/
|
|
26
|
+
reactivate(arcId: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Get active arcs formatted for prompt injection.
|
|
29
|
+
* Returns a compact string suitable for system prompt context.
|
|
30
|
+
*/
|
|
31
|
+
getArcContext(senderId: string): string | null;
|
|
32
|
+
/**
|
|
33
|
+
* Get stale arcs that might need a follow-up.
|
|
34
|
+
* Used by the proactive engine to generate check-in prompts.
|
|
35
|
+
*/
|
|
36
|
+
getStaleArcsForFollowUp(senderId: string): MemoryArc[];
|
|
37
|
+
private formatAge;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/intelligence/arcs/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,aAAa,CAAC;AAExD;;;;GAIG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,MAAM;IAGjC;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAgB9C;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5B;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAoB9C;;;OAGG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAItD,OAAO,CAAC,SAAS;CASlB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Arc lifecycle manager.
|
|
3
|
+
* Handles status transitions and provides arc context
|
|
4
|
+
* for prompt injection and proactive follow-ups.
|
|
5
|
+
*/
|
|
6
|
+
export class ArcLifecycle {
|
|
7
|
+
store;
|
|
8
|
+
bus;
|
|
9
|
+
logger;
|
|
10
|
+
constructor(store, bus, logger) {
|
|
11
|
+
this.store = store;
|
|
12
|
+
this.bus = bus;
|
|
13
|
+
this.logger = logger;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Resolve an arc — the situation has concluded.
|
|
17
|
+
*/
|
|
18
|
+
resolve(arcId, summary) {
|
|
19
|
+
if (summary) {
|
|
20
|
+
const arc = this.store.getArc(arcId);
|
|
21
|
+
if (arc) {
|
|
22
|
+
// Add a final summary entry
|
|
23
|
+
this.store.addArcEntry({
|
|
24
|
+
arcId,
|
|
25
|
+
content: `[RESOLVED] ${summary}`,
|
|
26
|
+
source: "tool",
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
this.store.updateArcStatus(arcId, "resolved");
|
|
31
|
+
this.logger.info({ arcId }, "Arc resolved");
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Abandon an arc — no longer relevant.
|
|
35
|
+
*/
|
|
36
|
+
abandon(arcId) {
|
|
37
|
+
this.store.updateArcStatus(arcId, "abandoned");
|
|
38
|
+
this.logger.info({ arcId }, "Arc abandoned");
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Reactivate a stale arc — user brought it up again.
|
|
42
|
+
*/
|
|
43
|
+
reactivate(arcId) {
|
|
44
|
+
this.store.updateArcStatus(arcId, "active");
|
|
45
|
+
this.logger.info({ arcId }, "Arc reactivated");
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get active arcs formatted for prompt injection.
|
|
49
|
+
* Returns a compact string suitable for system prompt context.
|
|
50
|
+
*/
|
|
51
|
+
getArcContext(senderId) {
|
|
52
|
+
const arcs = this.store.getActiveArcs(senderId);
|
|
53
|
+
if (arcs.length === 0)
|
|
54
|
+
return null;
|
|
55
|
+
const lines = ["[ACTIVE NARRATIVE ARCS]"];
|
|
56
|
+
for (const arc of arcs.slice(0, 5)) { // Max 5 arcs in prompt
|
|
57
|
+
const entries = this.store.getArcEntries(arc.id);
|
|
58
|
+
const age = this.formatAge(arc.createdAt);
|
|
59
|
+
const lastUpdate = this.formatAge(arc.updatedAt);
|
|
60
|
+
const entryCount = entries.length;
|
|
61
|
+
lines.push(`- "${arc.title}" (${age} old, ${entryCount} entries, updated ${lastUpdate} ago)`);
|
|
62
|
+
if (arc.summary) {
|
|
63
|
+
lines.push(` Latest: ${arc.summary.substring(0, 120)}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return lines.join("\n");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get stale arcs that might need a follow-up.
|
|
70
|
+
* Used by the proactive engine to generate check-in prompts.
|
|
71
|
+
*/
|
|
72
|
+
getStaleArcsForFollowUp(senderId) {
|
|
73
|
+
return this.store.getStaleArcs().filter((a) => a.senderId === senderId);
|
|
74
|
+
}
|
|
75
|
+
formatAge(timestamp) {
|
|
76
|
+
const ms = Date.now() - timestamp;
|
|
77
|
+
const hours = Math.floor(ms / 3_600_000);
|
|
78
|
+
if (hours < 24)
|
|
79
|
+
return `${hours}h`;
|
|
80
|
+
const days = Math.floor(hours / 24);
|
|
81
|
+
if (days < 7)
|
|
82
|
+
return `${days}d`;
|
|
83
|
+
const weeks = Math.floor(days / 7);
|
|
84
|
+
return `${weeks}w`;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/intelligence/arcs/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { VaultDB } from "../../vault/db.js";
|
|
2
|
+
import type { MemoryArc, ArcEntry, ArcStatus } from "../types.js";
|
|
3
|
+
export declare class ArcsStore {
|
|
4
|
+
private readonly db;
|
|
5
|
+
constructor(vaultDb: VaultDB);
|
|
6
|
+
createArc(params: {
|
|
7
|
+
senderId: string;
|
|
8
|
+
title: string;
|
|
9
|
+
summary?: string;
|
|
10
|
+
staleDays?: number;
|
|
11
|
+
}): MemoryArc;
|
|
12
|
+
addArcEntry(params: {
|
|
13
|
+
arcId: string;
|
|
14
|
+
content: string;
|
|
15
|
+
source?: "conversation" | "compaction" | "proactive" | "tool";
|
|
16
|
+
memoryId?: string;
|
|
17
|
+
}): ArcEntry;
|
|
18
|
+
getArc(id: string): MemoryArc | null;
|
|
19
|
+
getActiveArcs(senderId: string): MemoryArc[];
|
|
20
|
+
getArcsBySender(senderId: string): MemoryArc[];
|
|
21
|
+
getArcEntries(arcId: string): ArcEntry[];
|
|
22
|
+
getStaleArcs(defaultStaleDays?: number): MemoryArc[];
|
|
23
|
+
updateArcTitle(arcId: string, title: string): void;
|
|
24
|
+
updateArcStatus(arcId: string, status: ArcStatus): void;
|
|
25
|
+
findArcByKeywords(senderId: string, keywords: string[]): MemoryArc | null;
|
|
26
|
+
private toArc;
|
|
27
|
+
private toArcEntry;
|
|
28
|
+
private getArcEntry;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/intelligence/arcs/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAyBlE,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;gBAE3B,OAAO,EAAE,OAAO;IAO5B,SAAS,CAAC,MAAM,EAAE;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,SAAS;IAUb,WAAW,CAAC,MAAM,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;QAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,QAAQ;IAgBZ,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKpC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAO5C,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAO9C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE;IAOxC,YAAY,CAAC,gBAAgB,SAAK,GAAG,SAAS,EAAE;IAWhD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMlD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI;IASvD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI;IAUzE,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,WAAW;CAIpB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
const SCHEMA_SQL = `CREATE TABLE IF NOT EXISTS memory_arcs (
|
|
3
|
+
id TEXT PRIMARY KEY,
|
|
4
|
+
sender_id TEXT NOT NULL,
|
|
5
|
+
title TEXT NOT NULL,
|
|
6
|
+
status TEXT DEFAULT 'active',
|
|
7
|
+
summary TEXT,
|
|
8
|
+
created_at INTEGER NOT NULL,
|
|
9
|
+
updated_at INTEGER NOT NULL,
|
|
10
|
+
resolved_at INTEGER,
|
|
11
|
+
stale_after_days INTEGER DEFAULT 14
|
|
12
|
+
);
|
|
13
|
+
CREATE INDEX IF NOT EXISTS idx_arcs_sender ON memory_arcs(sender_id, status);
|
|
14
|
+
|
|
15
|
+
CREATE TABLE IF NOT EXISTS arc_entries (
|
|
16
|
+
id TEXT PRIMARY KEY,
|
|
17
|
+
arc_id TEXT NOT NULL,
|
|
18
|
+
content TEXT NOT NULL,
|
|
19
|
+
source TEXT DEFAULT 'conversation',
|
|
20
|
+
memory_id TEXT,
|
|
21
|
+
created_at INTEGER NOT NULL
|
|
22
|
+
);
|
|
23
|
+
CREATE INDEX IF NOT EXISTS idx_arc_entries ON arc_entries(arc_id, created_at);`;
|
|
24
|
+
export class ArcsStore {
|
|
25
|
+
db;
|
|
26
|
+
constructor(vaultDb) {
|
|
27
|
+
this.db = vaultDb.raw();
|
|
28
|
+
this.db.exec(SCHEMA_SQL);
|
|
29
|
+
}
|
|
30
|
+
// ── Memory Arcs ──
|
|
31
|
+
createArc(params) {
|
|
32
|
+
const id = randomUUID();
|
|
33
|
+
const now = Date.now();
|
|
34
|
+
this.db.prepare(`INSERT INTO memory_arcs (id, sender_id, title, status, summary, created_at, updated_at, stale_after_days)
|
|
35
|
+
VALUES (?, ?, ?, 'active', ?, ?, ?, ?)`).run(id, params.senderId, params.title, params.summary ?? null, now, now, params.staleDays ?? 14);
|
|
36
|
+
return this.getArc(id);
|
|
37
|
+
}
|
|
38
|
+
addArcEntry(params) {
|
|
39
|
+
const id = randomUUID();
|
|
40
|
+
const now = Date.now();
|
|
41
|
+
this.db.prepare(`INSERT INTO arc_entries (id, arc_id, content, source, memory_id, created_at)
|
|
42
|
+
VALUES (?, ?, ?, ?, ?, ?)`).run(id, params.arcId, params.content, params.source ?? "conversation", params.memoryId ?? null, now);
|
|
43
|
+
// Update arc timestamp and summary
|
|
44
|
+
this.db.prepare("UPDATE memory_arcs SET updated_at = ?, summary = ? WHERE id = ?").run(now, params.content.substring(0, 200), params.arcId);
|
|
45
|
+
return this.getArcEntry(id);
|
|
46
|
+
}
|
|
47
|
+
getArc(id) {
|
|
48
|
+
const row = this.db.prepare("SELECT * FROM memory_arcs WHERE id = ?").get(id);
|
|
49
|
+
return row ? this.toArc(row) : null;
|
|
50
|
+
}
|
|
51
|
+
getActiveArcs(senderId) {
|
|
52
|
+
const rows = this.db.prepare("SELECT * FROM memory_arcs WHERE sender_id = ? AND status = 'active' ORDER BY updated_at DESC").all(senderId);
|
|
53
|
+
return rows.map((r) => this.toArc(r));
|
|
54
|
+
}
|
|
55
|
+
getArcsBySender(senderId) {
|
|
56
|
+
const rows = this.db.prepare("SELECT * FROM memory_arcs WHERE sender_id = ? ORDER BY updated_at DESC").all(senderId);
|
|
57
|
+
return rows.map((r) => this.toArc(r));
|
|
58
|
+
}
|
|
59
|
+
getArcEntries(arcId) {
|
|
60
|
+
const rows = this.db.prepare("SELECT * FROM arc_entries WHERE arc_id = ? ORDER BY created_at ASC").all(arcId);
|
|
61
|
+
return rows.map((r) => this.toArcEntry(r));
|
|
62
|
+
}
|
|
63
|
+
getStaleArcs(defaultStaleDays = 14) {
|
|
64
|
+
const now = Date.now();
|
|
65
|
+
const rows = this.db.prepare(`SELECT * FROM memory_arcs
|
|
66
|
+
WHERE status = 'active'
|
|
67
|
+
AND updated_at < (? - stale_after_days * 86400000)
|
|
68
|
+
ORDER BY updated_at ASC`).all(now);
|
|
69
|
+
return rows.map((r) => this.toArc(r));
|
|
70
|
+
}
|
|
71
|
+
updateArcTitle(arcId, title) {
|
|
72
|
+
this.db.prepare("UPDATE memory_arcs SET title = ?, updated_at = ? WHERE id = ?").run(title, Date.now(), arcId);
|
|
73
|
+
}
|
|
74
|
+
updateArcStatus(arcId, status) {
|
|
75
|
+
const now = Date.now();
|
|
76
|
+
const resolvedAt = status === "resolved" ? now : null;
|
|
77
|
+
this.db.prepare("UPDATE memory_arcs SET status = ?, updated_at = ?, resolved_at = COALESCE(?, resolved_at) WHERE id = ?").run(status, now, resolvedAt, arcId);
|
|
78
|
+
}
|
|
79
|
+
findArcByKeywords(senderId, keywords) {
|
|
80
|
+
const arcs = this.getActiveArcs(senderId);
|
|
81
|
+
for (const arc of arcs) {
|
|
82
|
+
const titleWords = arc.title.toLowerCase().split(/[\s\-_]+/);
|
|
83
|
+
const overlap = keywords.filter((kw) => titleWords.includes(kw.toLowerCase()));
|
|
84
|
+
if (overlap.length >= 2)
|
|
85
|
+
return arc;
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
toArc(row) {
|
|
90
|
+
return {
|
|
91
|
+
id: row["id"],
|
|
92
|
+
senderId: row["sender_id"],
|
|
93
|
+
title: row["title"],
|
|
94
|
+
status: row["status"],
|
|
95
|
+
summary: row["summary"],
|
|
96
|
+
createdAt: row["created_at"],
|
|
97
|
+
updatedAt: row["updated_at"],
|
|
98
|
+
resolvedAt: row["resolved_at"],
|
|
99
|
+
staleDays: row["stale_after_days"],
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
toArcEntry(row) {
|
|
103
|
+
return {
|
|
104
|
+
id: row["id"],
|
|
105
|
+
arcId: row["arc_id"],
|
|
106
|
+
content: row["content"],
|
|
107
|
+
source: row["source"],
|
|
108
|
+
memoryId: row["memory_id"],
|
|
109
|
+
createdAt: row["created_at"],
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
getArcEntry(id) {
|
|
113
|
+
const row = this.db.prepare("SELECT * FROM arc_entries WHERE id = ?").get(id);
|
|
114
|
+
return row ? this.toArcEntry(row) : null;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/intelligence/arcs/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { IntelligenceEvent } from "./types.js";
|
|
2
|
+
type EventType = IntelligenceEvent["type"];
|
|
3
|
+
type EventOfType<T extends EventType> = Extract<IntelligenceEvent, {
|
|
4
|
+
type: T;
|
|
5
|
+
}>;
|
|
6
|
+
type Handler<T extends EventType> = (event: EventOfType<T>) => void;
|
|
7
|
+
/**
|
|
8
|
+
* Typed, synchronous, in-process event bus for the intelligence layer.
|
|
9
|
+
* Not a message queue — events are delivered synchronously within
|
|
10
|
+
* the same tick. Keeps the intelligence pipeline <5ms per message.
|
|
11
|
+
*/
|
|
12
|
+
export declare class IntelligenceBus {
|
|
13
|
+
private readonly emitter;
|
|
14
|
+
constructor();
|
|
15
|
+
emit<T extends EventType>(event: EventOfType<T>): void;
|
|
16
|
+
on<T extends EventType>(type: T, handler: Handler<T>): void;
|
|
17
|
+
off<T extends EventType>(type: T, handler: Handler<T>): void;
|
|
18
|
+
dispose(): void;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../src/intelligence/bus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,KAAK,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC3C,KAAK,WAAW,CAAC,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,iBAAiB,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAChF,KAAK,OAAO,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAEpE;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;;IAO9C,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAItD,EAAE,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3D,GAAG,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAI5D,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
/**
|
|
3
|
+
* Typed, synchronous, in-process event bus for the intelligence layer.
|
|
4
|
+
* Not a message queue — events are delivered synchronously within
|
|
5
|
+
* the same tick. Keeps the intelligence pipeline <5ms per message.
|
|
6
|
+
*/
|
|
7
|
+
export class IntelligenceBus {
|
|
8
|
+
emitter = new EventEmitter();
|
|
9
|
+
constructor() {
|
|
10
|
+
// Increase limit — we may have many listeners across subsystems
|
|
11
|
+
this.emitter.setMaxListeners(50);
|
|
12
|
+
}
|
|
13
|
+
emit(event) {
|
|
14
|
+
this.emitter.emit(event.type, event);
|
|
15
|
+
}
|
|
16
|
+
on(type, handler) {
|
|
17
|
+
this.emitter.on(type, handler);
|
|
18
|
+
}
|
|
19
|
+
off(type, handler) {
|
|
20
|
+
this.emitter.off(type, handler);
|
|
21
|
+
}
|
|
22
|
+
dispose() {
|
|
23
|
+
this.emitter.removeAllListeners();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bus.js","sourceRoot":"","sources":["../../src/intelligence/bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C;;;;GAIG;AACH,MAAM,OAAO,eAAe;IACT,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IAE9C;QACE,gEAAgE;QAChE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAsB,KAAqB;QAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,EAAE,CAAsB,IAAO,EAAE,OAAmB;QAClD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAuC,CAAC,CAAC;IACjE,CAAC;IAED,GAAG,CAAsB,IAAO,EAAE,OAAmB;QACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAuC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { VaultDB } from "../../vault/db.js";
|
|
2
|
+
import type { Logger } from "../../logging/logger.js";
|
|
3
|
+
import type { IntelligenceBus } from "../bus.js";
|
|
4
|
+
import type { CrossChannelContext } from "../types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Cross-channel intelligence resolver.
|
|
7
|
+
* Queries vault profiles and usage data to determine:
|
|
8
|
+
* - Which channels a user is active on
|
|
9
|
+
* - Where they were last active
|
|
10
|
+
* - Which channel they prefer (by recent activity)
|
|
11
|
+
*
|
|
12
|
+
* Deterministic — uses SQLite queries only.
|
|
13
|
+
*/
|
|
14
|
+
export declare class CrossChannelResolver {
|
|
15
|
+
private readonly bus;
|
|
16
|
+
private readonly logger;
|
|
17
|
+
private readonly db;
|
|
18
|
+
constructor(vaultDb: VaultDB, bus: IntelligenceBus, logger: Logger);
|
|
19
|
+
/**
|
|
20
|
+
* Build full cross-channel context for a user.
|
|
21
|
+
* Returns channel presence, preference, and online status hint.
|
|
22
|
+
*/
|
|
23
|
+
resolve(senderId: string): CrossChannelContext;
|
|
24
|
+
/**
|
|
25
|
+
* Get per-channel activity data for a user.
|
|
26
|
+
*/
|
|
27
|
+
private getChannelPresences;
|
|
28
|
+
/**
|
|
29
|
+
* Detect the user's preferred channel based on recent activity.
|
|
30
|
+
* Preference = most messages in last 7 days, with recency as tiebreaker.
|
|
31
|
+
*/
|
|
32
|
+
private detectPreference;
|
|
33
|
+
/**
|
|
34
|
+
* Determine online presence hint.
|
|
35
|
+
*/
|
|
36
|
+
private determinePresence;
|
|
37
|
+
/**
|
|
38
|
+
* Get cross-channel context formatted for prompt injection.
|
|
39
|
+
*/
|
|
40
|
+
getContextForPrompt(senderId: string): string | null;
|
|
41
|
+
private formatAge;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/intelligence/cross-channel/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAsC,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE3F;;;;;;;;GAQG;AACH,qBAAa,oBAAoB;IAK7B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAGlB,OAAO,EAAE,OAAO,EACC,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,MAAM;IAKjC;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAU9C;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAwCxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAgBpD,OAAO,CAAC,SAAS;CASlB"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-channel intelligence resolver.
|
|
3
|
+
* Queries vault profiles and usage data to determine:
|
|
4
|
+
* - Which channels a user is active on
|
|
5
|
+
* - Where they were last active
|
|
6
|
+
* - Which channel they prefer (by recent activity)
|
|
7
|
+
*
|
|
8
|
+
* Deterministic — uses SQLite queries only.
|
|
9
|
+
*/
|
|
10
|
+
export class CrossChannelResolver {
|
|
11
|
+
bus;
|
|
12
|
+
logger;
|
|
13
|
+
db;
|
|
14
|
+
constructor(vaultDb, bus, logger) {
|
|
15
|
+
this.bus = bus;
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
this.db = vaultDb.raw();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Build full cross-channel context for a user.
|
|
21
|
+
* Returns channel presence, preference, and online status hint.
|
|
22
|
+
*/
|
|
23
|
+
resolve(senderId) {
|
|
24
|
+
const channels = this.getChannelPresences(senderId);
|
|
25
|
+
const preferredChannel = this.detectPreference(channels);
|
|
26
|
+
// Determine presence hint from most recent activity
|
|
27
|
+
const presenceHint = this.determinePresence(channels);
|
|
28
|
+
return { channels, preferredChannel, presenceHint };
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get per-channel activity data for a user.
|
|
32
|
+
*/
|
|
33
|
+
getChannelPresences(senderId) {
|
|
34
|
+
const sevenDaysAgo = Date.now() - 7 * 86_400_000;
|
|
35
|
+
// Query profiles table for all channels this user is on
|
|
36
|
+
const profiles = this.db.prepare("SELECT channel_id, last_seen FROM profiles WHERE sender_id = ? AND last_seen > 0").all(senderId);
|
|
37
|
+
// Count recent messages per channel from usage_log
|
|
38
|
+
const usageCounts = this.db.prepare(`SELECT channel_id, COUNT(*) as cnt
|
|
39
|
+
FROM usage_log
|
|
40
|
+
WHERE sender_id = ? AND timestamp >= ?
|
|
41
|
+
GROUP BY channel_id`).all(senderId, sevenDaysAgo);
|
|
42
|
+
const countMap = new Map(usageCounts.map((u) => [u.channel_id, u.cnt]));
|
|
43
|
+
return profiles.map((p) => ({
|
|
44
|
+
channelId: p.channel_id,
|
|
45
|
+
lastMessageAt: p.last_seen,
|
|
46
|
+
messageCountLast7d: countMap.get(p.channel_id) ?? 0,
|
|
47
|
+
topicHint: null, // Could be derived from vault memories but kept simple for now
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Detect the user's preferred channel based on recent activity.
|
|
52
|
+
* Preference = most messages in last 7 days, with recency as tiebreaker.
|
|
53
|
+
*/
|
|
54
|
+
detectPreference(channels) {
|
|
55
|
+
if (channels.length === 0) {
|
|
56
|
+
return { channelId: "unknown", confidence: 0, reason: "no_data" };
|
|
57
|
+
}
|
|
58
|
+
if (channels.length === 1) {
|
|
59
|
+
return {
|
|
60
|
+
channelId: channels[0].channelId,
|
|
61
|
+
confidence: 0.9,
|
|
62
|
+
reason: "single_channel",
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// Score: 70% weight on message count, 30% on recency
|
|
66
|
+
const maxCount = Math.max(...channels.map((c) => c.messageCountLast7d), 1);
|
|
67
|
+
const maxRecency = Math.max(...channels.map((c) => c.lastMessageAt), 1);
|
|
68
|
+
let bestChannel = channels[0];
|
|
69
|
+
let bestScore = -1;
|
|
70
|
+
for (const ch of channels) {
|
|
71
|
+
const countScore = ch.messageCountLast7d / maxCount;
|
|
72
|
+
const recencyScore = ch.lastMessageAt / maxRecency;
|
|
73
|
+
const score = countScore * 0.7 + recencyScore * 0.3;
|
|
74
|
+
if (score > bestScore) {
|
|
75
|
+
bestScore = score;
|
|
76
|
+
bestChannel = ch;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const confidence = channels.length === 1 ? 0.9 : Math.min(0.5 + bestScore * 0.3, 0.85);
|
|
80
|
+
return {
|
|
81
|
+
channelId: bestChannel.channelId,
|
|
82
|
+
confidence,
|
|
83
|
+
reason: `activity_weighted:${bestChannel.messageCountLast7d}msgs_7d`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Determine online presence hint.
|
|
88
|
+
*/
|
|
89
|
+
determinePresence(channels) {
|
|
90
|
+
if (channels.length === 0)
|
|
91
|
+
return "unknown";
|
|
92
|
+
const now = Date.now();
|
|
93
|
+
const mostRecent = Math.max(...channels.map((c) => c.lastMessageAt));
|
|
94
|
+
const ageMs = now - mostRecent;
|
|
95
|
+
if (ageMs < 300_000)
|
|
96
|
+
return "online_now"; // < 5 minutes
|
|
97
|
+
if (ageMs < 3_600_000)
|
|
98
|
+
return "recent"; // < 1 hour
|
|
99
|
+
return "away";
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get cross-channel context formatted for prompt injection.
|
|
103
|
+
*/
|
|
104
|
+
getContextForPrompt(senderId) {
|
|
105
|
+
const ctx = this.resolve(senderId);
|
|
106
|
+
if (ctx.channels.length <= 1)
|
|
107
|
+
return null;
|
|
108
|
+
const lines = ["[CROSS-CHANNEL]"];
|
|
109
|
+
lines.push(`Preferred: ${ctx.preferredChannel.channelId} (${Math.round(ctx.preferredChannel.confidence * 100)}%)`);
|
|
110
|
+
lines.push(`Presence: ${ctx.presenceHint}`);
|
|
111
|
+
for (const ch of ctx.channels) {
|
|
112
|
+
const age = this.formatAge(ch.lastMessageAt);
|
|
113
|
+
lines.push(` ${ch.channelId}: ${ch.messageCountLast7d} msgs/7d, last ${age} ago`);
|
|
114
|
+
}
|
|
115
|
+
return lines.join("\n");
|
|
116
|
+
}
|
|
117
|
+
formatAge(timestamp) {
|
|
118
|
+
const ms = Date.now() - timestamp;
|
|
119
|
+
const minutes = Math.floor(ms / 60_000);
|
|
120
|
+
if (minutes < 60)
|
|
121
|
+
return `${minutes}m`;
|
|
122
|
+
const hours = Math.floor(minutes / 60);
|
|
123
|
+
if (hours < 24)
|
|
124
|
+
return `${hours}h`;
|
|
125
|
+
const days = Math.floor(hours / 24);
|
|
126
|
+
return `${days}d`;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/intelligence/cross-channel/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { IntelligenceStore } from "../store.js";
|
|
2
|
+
import type { IntelligenceBus } from "../bus.js";
|
|
3
|
+
import type { Logger } from "../../logging/logger.js";
|
|
4
|
+
import type { Goal, GoalStatus } from "../types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Goal lifecycle manager.
|
|
7
|
+
* Handles goal state transitions (active → paused → completed/abandoned),
|
|
8
|
+
* due-goal scanning, and prompt context generation.
|
|
9
|
+
*
|
|
10
|
+
* State machine:
|
|
11
|
+
* active → paused | completed | abandoned
|
|
12
|
+
* paused → active | abandoned
|
|
13
|
+
* completed (terminal)
|
|
14
|
+
* abandoned (terminal)
|
|
15
|
+
*/
|
|
16
|
+
export declare class GoalLifecycle {
|
|
17
|
+
private readonly store;
|
|
18
|
+
private readonly bus;
|
|
19
|
+
private readonly logger;
|
|
20
|
+
constructor(store: IntelligenceStore, bus: IntelligenceBus, logger: Logger);
|
|
21
|
+
/**
|
|
22
|
+
* Create a new goal for a user.
|
|
23
|
+
*/
|
|
24
|
+
create(params: {
|
|
25
|
+
senderId: string;
|
|
26
|
+
channelId: string;
|
|
27
|
+
description: string;
|
|
28
|
+
arcId?: string;
|
|
29
|
+
successCriteria?: string;
|
|
30
|
+
nextAction?: string;
|
|
31
|
+
nextActionDue?: number;
|
|
32
|
+
priority?: number;
|
|
33
|
+
}): Goal;
|
|
34
|
+
/**
|
|
35
|
+
* Update goal progress. Adds a progress note and optionally changes next action.
|
|
36
|
+
*/
|
|
37
|
+
progress(goalId: string, note: string, nextAction?: string, nextActionDue?: number): Goal | null;
|
|
38
|
+
/**
|
|
39
|
+
* Transition goal status with validation.
|
|
40
|
+
*/
|
|
41
|
+
transition(goalId: string, newStatus: GoalStatus): Goal | null;
|
|
42
|
+
/**
|
|
43
|
+
* Scan for goals with due next-actions.
|
|
44
|
+
* Returns goals that need attention now.
|
|
45
|
+
*/
|
|
46
|
+
scanDueGoals(): Goal[];
|
|
47
|
+
/**
|
|
48
|
+
* Scan for stale goals (no updates in 30+ days).
|
|
49
|
+
* These may need a check-in or abandonment.
|
|
50
|
+
*/
|
|
51
|
+
scanStaleGoals(): Goal[];
|
|
52
|
+
/**
|
|
53
|
+
* Get goal context formatted for prompt injection.
|
|
54
|
+
*/
|
|
55
|
+
getGoalContext(senderId: string, userLanguage?: string): string | null;
|
|
56
|
+
/**
|
|
57
|
+
* Get all goals for a user (for tool server list endpoint).
|
|
58
|
+
*/
|
|
59
|
+
listGoals(senderId: string): {
|
|
60
|
+
active: Goal[];
|
|
61
|
+
paused: Goal[];
|
|
62
|
+
};
|
|
63
|
+
private isValidTransition;
|
|
64
|
+
private formatDue;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/intelligence/goals/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,MAAM;IAGjC;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI;IAOR;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQhG;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAgB9D;;;OAGG;IACH,YAAY,IAAI,IAAI,EAAE;IAQtB;;;OAGG;IACH,cAAc,IAAI,IAAI,EAAE;IAIxB;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAoCtE;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG;QAC3B,MAAM,EAAE,IAAI,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,EAAE,CAAC;KAChB;IAOD,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,SAAS;CAQlB"}
|