crewly 1.12.1 → 1.13.1
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/config/skills/_common/complete-body-shape.test.sh +113 -0
- package/config/skills/_common/no-dangling-symlinks.test.sh +63 -0
- package/config/skills/_common/task-pool-body-shape.test.sh +471 -0
- package/config/skills/agent/core/accept-task/execute.sh +30 -5
- package/config/skills/agent/core/block-task/execute.sh +59 -6
- package/config/skills/agent/core/complete-task/SKILL.md +37 -5
- package/config/skills/agent/core/complete-task/execute.sh +40 -9
- package/config/skills/agent/core/complete-task/execute.test.sh +213 -0
- package/config/skills/agent/core/create-task/SKILL.md +33 -0
- package/config/skills/agent/core/create-task/execute.sh +82 -23
- package/config/skills/agent/core/delegate-task/execute.sh +46 -0
- package/config/skills/agent/core/get-team-norms/SKILL.md +1 -1
- package/config/skills/agent/core/get-team-norms/execute.sh +73 -2
- package/config/skills/agent/core/handoff-task/execute.sh +8 -1
- package/config/skills/agent/core/report-status/SKILL.md +26 -0
- package/config/skills/agent/core/report-status/execute.sh +40 -5
- package/config/skills/orchestrator/delegate-task/SKILL.md +1 -1
- package/config/skills/orchestrator/delegate-task/execute.sh +45 -11
- package/config/skills/orchestrator/delegate-task/execute.test.sh +153 -1
- package/config/skills/team-leader/aggregate-results/SKILL.md +1 -1
- package/config/skills/team-leader/decompose-goal/execute.sh +11 -16
- package/config/skills/team-leader/delegate-task/SKILL.md +14 -1
- package/config/skills/team-leader/delegate-task/execute.sh +132 -43
- package/config/skills/team-leader/delegate-task/execute.test.sh +180 -27
- package/config/vitest-exclude.constants.ts +56 -0
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +29 -7
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +18 -3
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +18 -15
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +6 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +19 -10
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +20 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/scripts/stamp-build.d.ts +25 -0
- package/dist/backend/backend/src/scripts/stamp-build.d.ts.map +1 -0
- package/dist/backend/backend/src/scripts/stamp-build.js +48 -0
- package/dist/backend/backend/src/scripts/stamp-build.js.map +1 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +33 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +78 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +248 -44
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +51 -3
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js +31 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +5 -0
- package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-client.service.js +7 -0
- package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +15 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +40 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.js +26 -0
- package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +19 -3
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts +28 -3
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +65 -8
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +214 -4
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +330 -48
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +13 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +84 -5
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +14 -0
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +77 -3
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +152 -7
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +268 -36
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation-router.service.js +2 -2
- package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +39 -2
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts +3 -0
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +21 -10
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -1
- package/dist/backend/backend/src/types/v2/index.d.ts +1 -1
- package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/index.js +1 -1
- package/dist/backend/backend/src/types/v2/index.js.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +181 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.js +104 -17
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/backend/src/utils/build-provenance.d.ts +150 -0
- package/dist/backend/backend/src/utils/build-provenance.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/build-provenance.js +211 -0
- package/dist/backend/backend/src/utils/build-provenance.js.map +1 -0
- package/dist/backend/backend/src/websocket/chat.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/chat.gateway.js +7 -1
- package/dist/backend/backend/src/websocket/chat.gateway.js.map +1 -1
- package/dist/backend/build-info.json +4 -0
- package/dist/backend/config/vitest-exclude.constants.d.ts +53 -0
- package/dist/backend/config/vitest-exclude.constants.d.ts.map +1 -0
- package/dist/backend/config/vitest-exclude.constants.js +55 -0
- package/dist/backend/config/vitest-exclude.constants.js.map +1 -0
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts +538 -0
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.js +802 -0
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-heartbeat.service.d.ts +240 -0
- package/dist/cli/backend/src/services/agent/agent-heartbeat.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-heartbeat.service.js +524 -0
- package/dist/cli/backend/src/services/agent/agent-heartbeat.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +629 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +4548 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts +118 -0
- package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-suspend.service.js +304 -0
- package/dist/cli/backend/src/services/agent/agent-suspend.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts +196 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js +504 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +97 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.js +334 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +47 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js +112 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts +323 -0
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.js +1056 -0
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +198 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +816 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +155 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +272 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts +91 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js +120 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts +536 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/types.js +282 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/types.js.map +1 -0
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts +100 -0
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.js +149 -0
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +130 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +758 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +216 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +508 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts +113 -0
- package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js +161 -0
- package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +156 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +641 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +295 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +1166 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts +71 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.js +174 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts +435 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js +1331 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.d.ts +33 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.js +70 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts +100 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +296 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +59 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js +87 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts +67 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.js +84 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.d.ts +35 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.js +50 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.d.ts +41 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.js +95 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.d.ts +28 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.js +47 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts +65 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +79 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts +28 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.js +55 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts +44 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.js +120 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.d.ts +46 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.js +44 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +28 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js +46 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.d.ts +60 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.js +104 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.d.ts +29 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js +50 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +103 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +383 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts +34 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +96 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.d.ts +106 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.js +167 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.d.ts +35 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.js +50 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts +91 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.js +411 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +62 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +199 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +79 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +118 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.d.ts +102 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.js +229 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.d.ts +61 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.js +197 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.d.ts +54 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.js +149 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts +32 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.js +69 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.d.ts +91 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.js +136 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.d.ts +81 -0
- package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.js +135 -0
- package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +737 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +1213 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts +27 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js +57 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/config.d.ts +100 -0
- package/dist/cli/backend/src/services/chat-v2/config.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/config.js +174 -0
- package/dist/cli/backend/src/services/chat-v2/config.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.d.ts +118 -0
- package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.js +171 -0
- package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts +188 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js +317 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts +119 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js +551 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +208 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +405 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/types.d.ts +341 -0
- package/dist/cli/backend/src/services/chat-v2/types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/types.js +61 -0
- package/dist/cli/backend/src/services/chat-v2/types.js.map +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-client.service.d.ts +5 -0
- package/dist/cli/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-client.service.js +7 -0
- package/dist/cli/backend/src/services/cloud/cloud-client.service.js.map +1 -1
- package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.d.ts +37 -0
- package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.d.ts.map +1 -0
- package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.js +63 -0
- package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.js.map +1 -0
- package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.d.ts +335 -0
- package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.d.ts.map +1 -0
- package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.js +421 -0
- package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.js.map +1 -0
- package/dist/cli/backend/src/services/mcp-client.d.ts +233 -0
- package/dist/cli/backend/src/services/mcp-client.d.ts.map +1 -0
- package/dist/cli/backend/src/services/mcp-client.js +302 -0
- package/dist/cli/backend/src/services/mcp-client.js.map +1 -0
- package/dist/cli/backend/src/services/memory/mission-context.service.d.ts +168 -0
- package/dist/cli/backend/src/services/memory/mission-context.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/mission-context.service.js +365 -0
- package/dist/cli/backend/src/services/memory/mission-context.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/session-memory.service.d.ts +197 -0
- package/dist/cli/backend/src/services/memory/session-memory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/session-memory.service.js +369 -0
- package/dist/cli/backend/src/services/memory/session-memory.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/user-profile.service.d.ts +77 -0
- package/dist/cli/backend/src/services/memory/user-profile.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/user-profile.service.js +171 -0
- package/dist/cli/backend/src/services/memory/user-profile.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/working-memory.service.d.ts +232 -0
- package/dist/cli/backend/src/services/memory/working-memory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/working-memory.service.js +417 -0
- package/dist/cli/backend/src/services/memory/working-memory.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +84 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +136 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts +358 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js +755 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js.map +1 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +269 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js +391 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.service.d.ts +132 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.service.js +284 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.service.js.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.d.ts +70 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.d.ts.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.js +121 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.js.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.types.d.ts +130 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.types.js +48 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.types.js.map +1 -0
- package/dist/cli/backend/src/services/observability/observability-db.d.ts +84 -0
- package/dist/cli/backend/src/services/observability/observability-db.d.ts.map +1 -0
- package/dist/cli/backend/src/services/observability/observability-db.js +165 -0
- package/dist/cli/backend/src/services/observability/observability-db.js.map +1 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.service.d.ts +124 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.service.js +256 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.service.js.map +1 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.types.d.ts +80 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.types.js +16 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.types.js.map +1 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +142 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +265 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.d.ts +231 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.js +353 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.d.ts +157 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.js +483 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/index.d.ts +16 -0
- package/dist/cli/backend/src/services/orchestrator/index.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/index.js +16 -0
- package/dist/cli/backend/src/services/orchestrator/index.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.d.ts +117 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.js +300 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.d.ts +114 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.js +195 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.d.ts +94 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.js +279 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/safe-restart.service.d.ts +192 -0
- package/dist/cli/backend/src/services/orchestrator/safe-restart.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/safe-restart.service.js +395 -0
- package/dist/cli/backend/src/services/orchestrator/safe-restart.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/self-improvement.service.d.ts +201 -0
- package/dist/cli/backend/src/services/orchestrator/self-improvement.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/self-improvement.service.js +396 -0
- package/dist/cli/backend/src/services/orchestrator/self-improvement.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.d.ts +17 -0
- package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.js +30 -0
- package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/state-persistence.service.d.ts +249 -0
- package/dist/cli/backend/src/services/orchestrator/state-persistence.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/state-persistence.service.js +569 -0
- package/dist/cli/backend/src/services/orchestrator/state-persistence.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/index.d.ts +47 -0
- package/dist/cli/backend/src/services/session/index.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/index.js +50 -0
- package/dist/cli/backend/src/services/session/index.js.map +1 -0
- package/dist/cli/backend/src/services/session/log-rotation.service.d.ts +163 -0
- package/dist/cli/backend/src/services/session/log-rotation.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/log-rotation.service.js +362 -0
- package/dist/cli/backend/src/services/session/log-rotation.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/index.d.ts +11 -0
- package/dist/cli/backend/src/services/session/pty/index.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/index.js +11 -0
- package/dist/cli/backend/src/services/session/pty/index.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +445 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +804 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +252 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.js +611 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts +275 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js +403 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -0
- package/dist/cli/backend/src/services/session/runtime-pid-registry.service.d.ts +86 -0
- package/dist/cli/backend/src/services/session/runtime-pid-registry.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/runtime-pid-registry.service.js +214 -0
- package/dist/cli/backend/src/services/session/runtime-pid-registry.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-backend.factory.d.ts +127 -0
- package/dist/cli/backend/src/services/session/session-backend.factory.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-backend.factory.js +226 -0
- package/dist/cli/backend/src/services/session/session-backend.factory.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +390 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.js +19 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts +350 -0
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-command-helper.js +810 -0
- package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.d.ts +307 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.js +742 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.d.ts +231 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.js +407 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.js.map +1 -0
- package/dist/cli/backend/src/services/settings/role.service.d.ts +277 -0
- package/dist/cli/backend/src/services/settings/role.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/settings/role.service.js +728 -0
- package/dist/cli/backend/src/services/settings/role.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/cross-machine-message.service.d.ts +152 -0
- package/dist/cli/backend/src/services/slack/cross-machine-message.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/cross-machine-message.service.js +354 -0
- package/dist/cli/backend/src/services/slack/cross-machine-message.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-image.service.d.ts +114 -0
- package/dist/cli/backend/src/services/slack/slack-image.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-image.service.js +331 -0
- package/dist/cli/backend/src/services/slack/slack-image.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +499 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +1928 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack.service.d.ts +315 -0
- package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack.service.js +1094 -0
- package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -0
- package/dist/cli/backend/src/services/sop/sop.service.d.ts +364 -0
- package/dist/cli/backend/src/services/sop/sop.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/sop/sop.service.js +734 -0
- package/dist/cli/backend/src/services/sop/sop.service.js.map +1 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +152 -7
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +268 -36
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts +178 -0
- package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/escalation-router.service.js +692 -0
- package/dist/cli/backend/src/services/v3/escalation-router.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts +200 -0
- package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/kr-tracking.service.js +482 -0
- package/dist/cli/backend/src/services/v3/kr-tracking.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts +117 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.js +321 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts +610 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +1529 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -0
- package/dist/cli/backend/src/services/v3/request-tracker.service.d.ts +78 -0
- package/dist/cli/backend/src/services/v3/request-tracker.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/request-tracker.service.js +108 -0
- package/dist/cli/backend/src/services/v3/request-tracker.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/request.service.d.ts +295 -0
- package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/request.service.js +534 -0
- package/dist/cli/backend/src/services/v3/request.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts +340 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.js +1113 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -0
- package/dist/cli/backend/src/types/cross-machine.types.d.ts +103 -0
- package/dist/cli/backend/src/types/cross-machine.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/cross-machine.types.js +47 -0
- package/dist/cli/backend/src/types/cross-machine.types.js.map +1 -0
- package/dist/cli/backend/src/types/intent-task.types.d.ts +402 -0
- package/dist/cli/backend/src/types/intent-task.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/intent-task.types.js +403 -0
- package/dist/cli/backend/src/types/intent-task.types.js.map +1 -0
- package/dist/cli/backend/src/types/orchestrator-state.types.d.ts +531 -0
- package/dist/cli/backend/src/types/orchestrator-state.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/orchestrator-state.types.js +110 -0
- package/dist/cli/backend/src/types/orchestrator-state.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/index.d.ts +30 -0
- package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/index.js +22 -0
- package/dist/cli/backend/src/types/v2/index.js.map +1 -0
- package/dist/cli/backend/src/types/v2/key-result.types.d.ts +279 -0
- package/dist/cli/backend/src/types/v2/key-result.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/key-result.types.js +264 -0
- package/dist/cli/backend/src/types/v2/key-result.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/mission.types.d.ts +661 -0
- package/dist/cli/backend/src/types/v2/mission.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/mission.types.js +713 -0
- package/dist/cli/backend/src/types/v2/mission.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.d.ts +204 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.js +121 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/request.types.d.ts +192 -0
- package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/request.types.js +179 -0
- package/dist/cli/backend/src/types/v2/request.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +181 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.js +104 -17
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/workspace.types.d.ts +157 -0
- package/dist/cli/backend/src/types/v2/workspace.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/workspace.types.js +173 -0
- package/dist/cli/backend/src/types/v2/workspace.types.js.map +1 -0
- package/dist/cli/backend/src/utils/async.utils.d.ts +68 -0
- package/dist/cli/backend/src/utils/async.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/async.utils.js +80 -0
- package/dist/cli/backend/src/utils/async.utils.js.map +1 -0
- package/dist/cli/backend/src/utils/native-binding.utils.d.ts +128 -0
- package/dist/cli/backend/src/utils/native-binding.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/native-binding.utils.js +206 -0
- package/dist/cli/backend/src/utils/native-binding.utils.js.map +1 -0
- package/dist/cli/backend/src/websocket/chat.gateway.d.ts +142 -0
- package/dist/cli/backend/src/websocket/chat.gateway.d.ts.map +1 -0
- package/dist/cli/backend/src/websocket/chat.gateway.js +327 -0
- package/dist/cli/backend/src/websocket/chat.gateway.js.map +1 -0
- package/dist/cli/backend/src/websocket/terminal.gateway.d.ts +341 -0
- package/dist/cli/backend/src/websocket/terminal.gateway.d.ts.map +1 -0
- package/dist/cli/backend/src/websocket/terminal.gateway.js +933 -0
- package/dist/cli/backend/src/websocket/terminal.gateway.js.map +1 -0
- package/dist/cli/config/vitest-exclude.constants.d.ts +53 -0
- package/dist/cli/config/vitest-exclude.constants.d.ts.map +1 -0
- package/dist/cli/config/vitest-exclude.constants.js +55 -0
- package/dist/cli/config/vitest-exclude.constants.js.map +1 -0
- package/package.json +2 -2
- package/packages/crewly-agent/src/cli.ts +16 -6
- package/packages/crewly-agent/src/runtime/agent-runner.service.test.ts +311 -33
- package/packages/crewly-agent/src/runtime/agent-runner.service.ts +221 -12
- package/packages/crewly-agent/src/runtime/tool-registry.test.ts +19 -0
- package/packages/crewly-agent/src/runtime/tool-registry.ts +4 -1
- package/packages/crewly-agent/src/runtime/types.ts +65 -5
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native-binding fail-fast helpers.
|
|
3
|
+
*
|
|
4
|
+
* When a native Node addon (e.g. `better-sqlite3`, `node-pty`,
|
|
5
|
+
* `sqlite-vec-darwin-*`) is built for the wrong CPU/ABI and Node tries
|
|
6
|
+
* to `dlopen` it, the loader emits a recognisable error pattern:
|
|
7
|
+
*
|
|
8
|
+
* ```
|
|
9
|
+
* dlopen .../foo.node, 0x0001
|
|
10
|
+
* mach-o file, but is an incompatible architecture
|
|
11
|
+
* (have 'x86_64', need 'arm64e' or 'arm64')
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* This module exists for one reason: those errors must NEVER be
|
|
15
|
+
* silently swallowed by a try/catch wrapper at the gateway layer
|
|
16
|
+
* (which used to downgrade chat-v2 to a JSON-file fallback while
|
|
17
|
+
* `chat.db` quietly went stale — F-CYCLE7-1, audit 2026-05-07 §2.1).
|
|
18
|
+
*
|
|
19
|
+
* The contract:
|
|
20
|
+
*
|
|
21
|
+
* 1. {@link loadNativeAddonOrFatal} wraps `require(name)`.
|
|
22
|
+
* 2. If the require throws and the error matches a known native-arch
|
|
23
|
+
* / dlopen pattern, we rethrow as {@link NativeBindingFatalError},
|
|
24
|
+
* which carries `fatal: true`.
|
|
25
|
+
* 3. The boot-time wiring (`backend/src/index.ts`, the chat-v2 init
|
|
26
|
+
* try/catch) inspects caught errors with {@link isNativeBindingFatalError}
|
|
27
|
+
* and **rethrows fatal errors** rather than logging them as
|
|
28
|
+
* "non-critical". This crashes the process at boot — which is the
|
|
29
|
+
* desired behaviour: an arch-mismatched binary can be fixed by
|
|
30
|
+
* `npm rebuild <pkg> --build-from-source`, but only if the operator
|
|
31
|
+
* sees the failure.
|
|
32
|
+
*
|
|
33
|
+
* @module utils/native-binding.utils
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Marker class for native-binding failures that MUST crash the
|
|
37
|
+
* process at boot rather than be downgraded to a runtime fallback.
|
|
38
|
+
*
|
|
39
|
+
* Holds the original underlying error in `cause` so logs surface
|
|
40
|
+
* the full dlopen trace.
|
|
41
|
+
*/
|
|
42
|
+
export class NativeBindingFatalError extends Error {
|
|
43
|
+
/** Discriminator readable by `instanceof` and structural callers. */
|
|
44
|
+
fatal = true;
|
|
45
|
+
/**
|
|
46
|
+
* The npm package name that failed to load (`'better-sqlite3'`,
|
|
47
|
+
* `'node-pty'`, etc.). Used in the boot-failure log line and the
|
|
48
|
+
* remediation hint that follows it.
|
|
49
|
+
*/
|
|
50
|
+
moduleName;
|
|
51
|
+
/**
|
|
52
|
+
* The original error thrown by `require(name)`. Preserved for log
|
|
53
|
+
* fidelity — the dlopen line itself is the most useful piece of
|
|
54
|
+
* context for whoever has to run the rebuild.
|
|
55
|
+
*/
|
|
56
|
+
cause;
|
|
57
|
+
/**
|
|
58
|
+
* Build a fatal-error wrapper.
|
|
59
|
+
*
|
|
60
|
+
* @param moduleName - The npm package that failed to load
|
|
61
|
+
* @param cause - The underlying error from the failed require
|
|
62
|
+
* @param remediation - One-line remediation hint shown in the message
|
|
63
|
+
* (default: `npm rebuild <moduleName> --build-from-source`)
|
|
64
|
+
*/
|
|
65
|
+
constructor(moduleName, cause, remediation) {
|
|
66
|
+
const fix = remediation ??
|
|
67
|
+
`Run \`npm rebuild ${moduleName} --build-from-source\` (or delete node_modules/${moduleName}/build and reinstall) to recompile for this host's arch.`;
|
|
68
|
+
const causeMessage = cause instanceof Error ? cause.message : String(cause);
|
|
69
|
+
super(`FATAL: native binding "${moduleName}" failed to load. ${fix} Original error: ${causeMessage}`);
|
|
70
|
+
this.name = 'NativeBindingFatalError';
|
|
71
|
+
this.moduleName = moduleName;
|
|
72
|
+
this.cause = cause;
|
|
73
|
+
// Preserve the original stack chain when available so debuggers
|
|
74
|
+
// can walk back to the dlopen frame.
|
|
75
|
+
if (cause instanceof Error && cause.stack) {
|
|
76
|
+
this.stack = `${this.stack}\nCaused by: ${cause.stack}`;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Type guard for {@link NativeBindingFatalError}. Survives realm
|
|
82
|
+
* boundaries (unlike a bare `instanceof`) by also checking the
|
|
83
|
+
* structural `fatal === true` + `name === 'NativeBindingFatalError'`
|
|
84
|
+
* shape — useful when the same module is loaded via two different
|
|
85
|
+
* resolver paths (ts-jest vs. native ESM) and `instanceof` would
|
|
86
|
+
* unexpectedly miss.
|
|
87
|
+
*
|
|
88
|
+
* @param err - Any thrown value
|
|
89
|
+
* @returns True iff the error is a fatal native-binding load failure
|
|
90
|
+
*/
|
|
91
|
+
export function isNativeBindingFatalError(err) {
|
|
92
|
+
if (err instanceof NativeBindingFatalError)
|
|
93
|
+
return true;
|
|
94
|
+
if (err !== null &&
|
|
95
|
+
typeof err === 'object' &&
|
|
96
|
+
err.name === 'NativeBindingFatalError' &&
|
|
97
|
+
err.fatal === true) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Patterns that identify a dlopen / arch-mismatch / ABI-version
|
|
104
|
+
* failure. Match any one and we treat the require failure as a fatal
|
|
105
|
+
* native-binding error.
|
|
106
|
+
*
|
|
107
|
+
* Sourced from real Node.js loader output across:
|
|
108
|
+
* - macOS Mach-O (`mach-o file, but is an incompatible architecture`,
|
|
109
|
+
* `have 'x86_64', need 'arm64'`, `dlopen` prefix)
|
|
110
|
+
* - glibc Linux (`wrong ELF class`, `cannot open shared object file`)
|
|
111
|
+
* - Node ABI mismatch (`NODE_MODULE_VERSION` mismatch after Node
|
|
112
|
+
* upgrade, `was compiled against a different Node.js version`)
|
|
113
|
+
* - Windows (`is not a valid Win32 application`)
|
|
114
|
+
* - Generic native-addon loader (`Module did not self-register`,
|
|
115
|
+
* which happens when a `.node` file is loaded by a Node ABI it
|
|
116
|
+
* does not match)
|
|
117
|
+
*
|
|
118
|
+
* Each pattern is anchored case-insensitively against the error
|
|
119
|
+
* message string. Tested in `native-binding.utils.test.ts`.
|
|
120
|
+
*/
|
|
121
|
+
const FATAL_NATIVE_PATTERNS = [
|
|
122
|
+
// macOS Mach-O dlopen + arch mismatch ----------------------------
|
|
123
|
+
/dlopen[\s\S]*incompatible architecture/i,
|
|
124
|
+
/mach-o file, but is an incompatible architecture/i,
|
|
125
|
+
/have '[^']+', need '[^']+'/i,
|
|
126
|
+
// glibc Linux ELF mismatch ---------------------------------------
|
|
127
|
+
/wrong ELF class/i,
|
|
128
|
+
/cannot open shared object file/i,
|
|
129
|
+
// Node ABI mismatch ----------------------------------------------
|
|
130
|
+
/NODE_MODULE_VERSION/i,
|
|
131
|
+
/was compiled against a different Node\.js version/i,
|
|
132
|
+
/Module did not self-register/i,
|
|
133
|
+
// Windows --------------------------------------------------------
|
|
134
|
+
/is not a valid Win32 application/i,
|
|
135
|
+
];
|
|
136
|
+
/**
|
|
137
|
+
* Decide whether the given error indicates a native-addon arch / ABI
|
|
138
|
+
* mismatch (vs. a benign "package not installed" error or a runtime
|
|
139
|
+
* SQL bug from inside the addon).
|
|
140
|
+
*
|
|
141
|
+
* Stable, narrow behaviour — only matches the patterns in
|
|
142
|
+
* {@link FATAL_NATIVE_PATTERNS}. Callers can refine further by
|
|
143
|
+
* inspecting `err.code === 'ERR_DLOPEN_FAILED'` (Node ≥ 16 emits this
|
|
144
|
+
* for any failed `dlopen`, including arch mismatches) before calling
|
|
145
|
+
* this helper if they want a broader net.
|
|
146
|
+
*
|
|
147
|
+
* @param err - Any thrown value
|
|
148
|
+
* @returns True iff the error message matches a known native-mismatch pattern
|
|
149
|
+
*/
|
|
150
|
+
export function isNativeArchMismatchError(err) {
|
|
151
|
+
if (err === null || err === undefined)
|
|
152
|
+
return false;
|
|
153
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
154
|
+
if (typeof message !== 'string' || message.length === 0)
|
|
155
|
+
return false;
|
|
156
|
+
// `code` is a stronger signal than message-pattern when present.
|
|
157
|
+
const code = err.code;
|
|
158
|
+
if (code === 'ERR_DLOPEN_FAILED')
|
|
159
|
+
return true;
|
|
160
|
+
return FATAL_NATIVE_PATTERNS.some((re) => re.test(message));
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Load a native Node addon by name, escalating arch / ABI mismatches
|
|
164
|
+
* to {@link NativeBindingFatalError}.
|
|
165
|
+
*
|
|
166
|
+
* Behaviour:
|
|
167
|
+
* - On success: returns the require'd module unchanged.
|
|
168
|
+
* - On failure that matches {@link isNativeArchMismatchError}:
|
|
169
|
+
* throws {@link NativeBindingFatalError}.
|
|
170
|
+
* - On any other failure (e.g. `Cannot find module 'foo'` because
|
|
171
|
+
* the package isn't installed at all): rethrows the original
|
|
172
|
+
* error unchanged, so callers can keep their existing
|
|
173
|
+
* "package missing → soft error" semantics.
|
|
174
|
+
*
|
|
175
|
+
* @param moduleName - Package name (`'better-sqlite3'`, `'node-pty'`)
|
|
176
|
+
* @param requireFn - The CJS-style require to use (typically the result
|
|
177
|
+
* of `createBareModuleRequire(...)` from `node-require.utils.ts`)
|
|
178
|
+
* @param remediation - Optional override for the remediation hint shown
|
|
179
|
+
* in the wrapped error message
|
|
180
|
+
* @returns The loaded module
|
|
181
|
+
*
|
|
182
|
+
* @throws {NativeBindingFatalError} when the require fails with a
|
|
183
|
+
* recognised native-arch / ABI / dlopen pattern.
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```ts
|
|
187
|
+
* import { loadNativeAddonOrFatal } from '../../utils/native-binding.utils.js';
|
|
188
|
+
*
|
|
189
|
+
* const Database = loadNativeAddonOrFatal<typeof import('better-sqlite3')>(
|
|
190
|
+
* 'better-sqlite3',
|
|
191
|
+
* nodeRequire,
|
|
192
|
+
* );
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
export function loadNativeAddonOrFatal(moduleName, requireFn, remediation) {
|
|
196
|
+
try {
|
|
197
|
+
return requireFn(moduleName);
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
if (isNativeArchMismatchError(err)) {
|
|
201
|
+
throw new NativeBindingFatalError(moduleName, err, remediation);
|
|
202
|
+
}
|
|
203
|
+
throw err;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=native-binding.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-binding.utils.js","sourceRoot":"","sources":["../../../../../backend/src/utils/native-binding.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH;;;;;;GAMG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACjD,qEAAqE;IACrD,KAAK,GAAG,IAAa,CAAC;IAEtC;;;;OAIG;IACa,UAAU,CAAS;IAEnC;;;;OAIG;IACsB,KAAK,CAAU;IAExC;;;;;;;OAOG;IACH,YAAY,UAAkB,EAAE,KAAc,EAAE,WAAoB;QACnE,MAAM,GAAG,GACR,WAAW;YACX,qBAAqB,UAAU,kDAAkD,UAAU,0DAA0D,CAAC;QACvJ,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,KAAK,CACJ,0BAA0B,UAAU,qBAAqB,GAAG,oBAAoB,YAAY,EAAE,CAC9F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,gEAAgE;QAChE,qCAAqC;QACrC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,gBAAgB,KAAK,CAAC,KAAK,EAAE,CAAC;QACzD,CAAC;IACF,CAAC;CACD;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CACxC,GAAY;IAEZ,IAAI,GAAG,YAAY,uBAAuB;QAAE,OAAO,IAAI,CAAC;IACxD,IACC,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACtB,GAA0B,CAAC,IAAI,KAAK,yBAAyB;QAC7D,GAA2B,CAAC,KAAK,KAAK,IAAI,EAC1C,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,qBAAqB,GAAsB;IAChD,mEAAmE;IACnE,yCAAyC;IACzC,mDAAmD;IACnD,6BAA6B;IAC7B,mEAAmE;IACnE,kBAAkB;IAClB,iCAAiC;IACjC,mEAAmE;IACnE,sBAAsB;IACtB,oDAAoD;IACpD,+BAA+B;IAC/B,mEAAmE;IACnE,mCAAmC;CACnC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAY;IACrD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,iEAAiE;IACjE,MAAM,IAAI,GAAI,GAA0B,CAAC,IAAI,CAAC;IAC9C,IAAI,IAAI,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,sBAAsB,CACrC,UAAkB,EAClB,SAAsB,EACtB,WAAoB;IAEpB,IAAI,CAAC;QACJ,OAAO,SAAS,CAAC,UAAU,CAAM,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,uBAAuB,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,GAAG,CAAC;IACX,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat Gateway Module
|
|
3
|
+
*
|
|
4
|
+
* Integrates chat functionality with the WebSocket infrastructure.
|
|
5
|
+
* Forwards chat events from ChatService to connected clients.
|
|
6
|
+
*
|
|
7
|
+
* @module websocket/chat.gateway
|
|
8
|
+
*/
|
|
9
|
+
import { Server as SocketIOServer } from 'socket.io';
|
|
10
|
+
import type { ChatMessage, ChatSender } from '../types/chat.types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Chat Gateway class for WebSocket-based chat messaging.
|
|
13
|
+
*
|
|
14
|
+
* Provides:
|
|
15
|
+
* - Real-time chat message broadcasting
|
|
16
|
+
* - Typing indicator support
|
|
17
|
+
* - Conversation update notifications
|
|
18
|
+
* - Terminal output to chat message processing
|
|
19
|
+
*/
|
|
20
|
+
export declare class ChatGateway {
|
|
21
|
+
private io;
|
|
22
|
+
private logger;
|
|
23
|
+
private chatV2;
|
|
24
|
+
private initialized;
|
|
25
|
+
/**
|
|
26
|
+
* Create a new ChatGateway.
|
|
27
|
+
*
|
|
28
|
+
* @param io - Socket.IO server instance
|
|
29
|
+
*/
|
|
30
|
+
constructor(io: SocketIOServer);
|
|
31
|
+
/**
|
|
32
|
+
* Initialize the chat gateway.
|
|
33
|
+
*
|
|
34
|
+
* Subscribes to chat-v2 message events and wires the
|
|
35
|
+
* client-facing WebSocket handlers.
|
|
36
|
+
*/
|
|
37
|
+
initialize(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Subscribe to ChatV2Service events and broadcast to WebSocket clients.
|
|
40
|
+
* Phase 6c of the unified-chat-message-store spec — replaces the
|
|
41
|
+
* legacy ChatService EventEmitter wiring.
|
|
42
|
+
*/
|
|
43
|
+
private setupChatV2Listeners;
|
|
44
|
+
/**
|
|
45
|
+
* Set up WebSocket event handlers for chat-specific events.
|
|
46
|
+
*/
|
|
47
|
+
private setupWebSocketHandlers;
|
|
48
|
+
/**
|
|
49
|
+
* Broadcast a message to all clients in the chat room.
|
|
50
|
+
*
|
|
51
|
+
* @param event - Event name
|
|
52
|
+
* @param message - Message to broadcast
|
|
53
|
+
*/
|
|
54
|
+
private broadcast;
|
|
55
|
+
/**
|
|
56
|
+
* Broadcast a message to a specific conversation room.
|
|
57
|
+
*
|
|
58
|
+
* @param conversationId - Conversation ID
|
|
59
|
+
* @param event - Event name
|
|
60
|
+
* @param message - Message to broadcast
|
|
61
|
+
*/
|
|
62
|
+
private broadcastToConversation;
|
|
63
|
+
/**
|
|
64
|
+
* Process terminal output and convert to chat message if applicable.
|
|
65
|
+
*
|
|
66
|
+
* Checks for response markers in terminal output and creates
|
|
67
|
+
* chat messages from extracted content.
|
|
68
|
+
*
|
|
69
|
+
* @param sessionId - The session/agent ID that produced the output
|
|
70
|
+
* @param output - Raw terminal output
|
|
71
|
+
* @param conversationId - Target conversation ID
|
|
72
|
+
* @returns The created chat message, or null if no response marker found
|
|
73
|
+
*/
|
|
74
|
+
processTerminalOutput(sessionId: string, output: string, conversationId?: string): Promise<ChatMessage | null>;
|
|
75
|
+
/**
|
|
76
|
+
* Process a unified [NOTIFY] message and add it directly to a conversation.
|
|
77
|
+
*
|
|
78
|
+
* Unlike `processTerminalOutput`, this method takes pre-extracted content
|
|
79
|
+
* from a [NOTIFY] payload — no regex extraction needed. Optional metadata
|
|
80
|
+
* (e.g. Slack delivery tracking fields) is merged into the message metadata.
|
|
81
|
+
*
|
|
82
|
+
* @param sessionId - The session/agent ID that produced the output
|
|
83
|
+
* @param content - Pre-extracted markdown content from NotifyPayload.message
|
|
84
|
+
* @param conversationId - Target conversation ID
|
|
85
|
+
* @param metadata - Optional additional metadata to attach to the message
|
|
86
|
+
* @returns The created chat message, or null on failure
|
|
87
|
+
*/
|
|
88
|
+
processNotifyMessage(sessionId: string, content: string, conversationId: string, metadata?: Record<string, unknown>): Promise<ChatMessage | null>;
|
|
89
|
+
/**
|
|
90
|
+
* Emit a typing indicator for the orchestrator.
|
|
91
|
+
*
|
|
92
|
+
* Call this when the orchestrator starts/stops processing a message.
|
|
93
|
+
*
|
|
94
|
+
* @param conversationId - Conversation ID
|
|
95
|
+
* @param isTyping - Whether the orchestrator is typing
|
|
96
|
+
*/
|
|
97
|
+
emitOrchestratorTyping(conversationId: string, isTyping: boolean): void;
|
|
98
|
+
/**
|
|
99
|
+
* Emit a typing indicator for an agent.
|
|
100
|
+
*
|
|
101
|
+
* @param conversationId - Conversation ID
|
|
102
|
+
* @param sender - Agent sender information
|
|
103
|
+
* @param isTyping - Whether the agent is typing
|
|
104
|
+
*/
|
|
105
|
+
emitAgentTyping(conversationId: string, sender: ChatSender, isTyping: boolean): void;
|
|
106
|
+
/**
|
|
107
|
+
* Emit a typing indicator via the WebSocket broadcast channel.
|
|
108
|
+
* Phase 6c: typing indicators were previously emitted on the
|
|
109
|
+
* legacy ChatService EventEmitter; with that retired, the gateway
|
|
110
|
+
* sources them directly. Typing is transient and never persisted,
|
|
111
|
+
* so no chat-v2 write is involved.
|
|
112
|
+
*
|
|
113
|
+
* @param conversationId - Conversation ID
|
|
114
|
+
* @param sender - Sender descriptor
|
|
115
|
+
* @param isTyping - Whether the sender is typing
|
|
116
|
+
*/
|
|
117
|
+
private broadcastTyping;
|
|
118
|
+
/**
|
|
119
|
+
* Check if the gateway is initialized.
|
|
120
|
+
*
|
|
121
|
+
* @returns True if initialized
|
|
122
|
+
*/
|
|
123
|
+
isInitialized(): boolean;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Initialize the ChatGateway with a Socket.IO server.
|
|
127
|
+
*
|
|
128
|
+
* @param io - Socket.IO server instance
|
|
129
|
+
* @returns The ChatGateway instance
|
|
130
|
+
*/
|
|
131
|
+
export declare function initializeChatGateway(io: SocketIOServer): Promise<ChatGateway>;
|
|
132
|
+
/**
|
|
133
|
+
* Get the ChatGateway instance.
|
|
134
|
+
*
|
|
135
|
+
* @returns The ChatGateway instance or null if not initialized
|
|
136
|
+
*/
|
|
137
|
+
export declare function getChatGateway(): ChatGateway | null;
|
|
138
|
+
/**
|
|
139
|
+
* Reset the ChatGateway instance (for testing).
|
|
140
|
+
*/
|
|
141
|
+
export declare function resetChatGateway(): void;
|
|
142
|
+
//# sourceMappingURL=chat.gateway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.gateway.d.ts","sourceRoot":"","sources":["../../../../../backend/src/websocket/chat.gateway.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,IAAI,cAAc,EAAU,MAAM,WAAW,CAAC;AAW7D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEtE;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;OAIG;gBACS,EAAE,EAAE,cAAc;IAM9B;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+D9B;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;;;;;;;;;OAUG;IACG,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAyC9B;;;;;;;;;;;;OAYG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAyC9B;;;;;;;OAOG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIvE;;;;;;OAMG;IACH,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIpF;;;;;;;;;;OAUG;IACH,OAAO,CAAC,eAAe;IAevB;;;;OAIG;IACH,aAAa,IAAI,OAAO;CAGzB;AAQD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAMpF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat Gateway Module
|
|
3
|
+
*
|
|
4
|
+
* Integrates chat functionality with the WebSocket infrastructure.
|
|
5
|
+
* Forwards chat events from ChatService to connected clients.
|
|
6
|
+
*
|
|
7
|
+
* @module websocket/chat.gateway
|
|
8
|
+
*/
|
|
9
|
+
import { getChatV2Service } from '../services/chat-v2/chat-v2.singleton.js';
|
|
10
|
+
import { SYSTEM_PRINCIPAL, v2MessageToLegacy, v2ChannelToLegacy, senderToV2, } from '../services/chat-v2/legacy-dto.utils.js';
|
|
11
|
+
import { LoggerService } from '../services/core/logger.service.js';
|
|
12
|
+
/**
|
|
13
|
+
* Chat Gateway class for WebSocket-based chat messaging.
|
|
14
|
+
*
|
|
15
|
+
* Provides:
|
|
16
|
+
* - Real-time chat message broadcasting
|
|
17
|
+
* - Typing indicator support
|
|
18
|
+
* - Conversation update notifications
|
|
19
|
+
* - Terminal output to chat message processing
|
|
20
|
+
*/
|
|
21
|
+
export class ChatGateway {
|
|
22
|
+
io;
|
|
23
|
+
logger;
|
|
24
|
+
chatV2;
|
|
25
|
+
initialized = false;
|
|
26
|
+
/**
|
|
27
|
+
* Create a new ChatGateway.
|
|
28
|
+
*
|
|
29
|
+
* @param io - Socket.IO server instance
|
|
30
|
+
*/
|
|
31
|
+
constructor(io) {
|
|
32
|
+
this.io = io;
|
|
33
|
+
this.logger = LoggerService.getInstance().createComponentLogger('ChatGateway');
|
|
34
|
+
this.chatV2 = getChatV2Service();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Initialize the chat gateway.
|
|
38
|
+
*
|
|
39
|
+
* Subscribes to chat-v2 message events and wires the
|
|
40
|
+
* client-facing WebSocket handlers.
|
|
41
|
+
*/
|
|
42
|
+
async initialize() {
|
|
43
|
+
if (this.initialized)
|
|
44
|
+
return;
|
|
45
|
+
this.setupChatV2Listeners();
|
|
46
|
+
this.setupWebSocketHandlers();
|
|
47
|
+
this.initialized = true;
|
|
48
|
+
this.logger.info('ChatGateway initialized');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Subscribe to ChatV2Service events and broadcast to WebSocket clients.
|
|
52
|
+
* Phase 6c of the unified-chat-message-store spec — replaces the
|
|
53
|
+
* legacy ChatService EventEmitter wiring.
|
|
54
|
+
*/
|
|
55
|
+
setupChatV2Listeners() {
|
|
56
|
+
this.chatV2.on('chat_message', (dto) => {
|
|
57
|
+
const legacy = v2MessageToLegacy(dto);
|
|
58
|
+
this.logger.debug('Broadcasting chat_message', { messageId: legacy.id });
|
|
59
|
+
this.broadcast('chat_message', {
|
|
60
|
+
type: 'chat_message',
|
|
61
|
+
data: legacy,
|
|
62
|
+
timestamp: new Date().toISOString(),
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Set up WebSocket event handlers for chat-specific events.
|
|
68
|
+
*/
|
|
69
|
+
setupWebSocketHandlers() {
|
|
70
|
+
this.io.on('connection', (socket) => {
|
|
71
|
+
// Handle chat conversation subscription
|
|
72
|
+
socket.on('subscribe_to_chat', async (conversationId) => {
|
|
73
|
+
this.logger.debug('Client subscribing to chat', {
|
|
74
|
+
socketId: socket.id,
|
|
75
|
+
conversationId,
|
|
76
|
+
});
|
|
77
|
+
// Join chat room
|
|
78
|
+
socket.join('chat');
|
|
79
|
+
if (conversationId) {
|
|
80
|
+
socket.join(`chat_${conversationId}`);
|
|
81
|
+
}
|
|
82
|
+
// Send current conversation if requested
|
|
83
|
+
if (conversationId) {
|
|
84
|
+
try {
|
|
85
|
+
const channel = this.chatV2.getChannel(conversationId, SYSTEM_PRINCIPAL);
|
|
86
|
+
const messageCount = this.chatV2.countChannelMessages(conversationId, SYSTEM_PRINCIPAL);
|
|
87
|
+
socket.emit('chat_conversation', {
|
|
88
|
+
type: 'chat_conversation',
|
|
89
|
+
data: v2ChannelToLegacy(channel, messageCount),
|
|
90
|
+
timestamp: new Date().toISOString(),
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// Channel not found / unauthorized — silently skip; the
|
|
95
|
+
// client will see no chat_conversation event.
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
socket.emit('chat_subscribed', {
|
|
99
|
+
type: 'chat_subscribed',
|
|
100
|
+
data: { conversationId },
|
|
101
|
+
timestamp: new Date().toISOString(),
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
// Handle unsubscription from chat
|
|
105
|
+
socket.on('unsubscribe_from_chat', (conversationId) => {
|
|
106
|
+
socket.leave('chat');
|
|
107
|
+
if (conversationId) {
|
|
108
|
+
socket.leave(`chat_${conversationId}`);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
// Handle typing indicator from client
|
|
112
|
+
socket.on('chat_typing', (data) => {
|
|
113
|
+
// User typing indicators are just echoed to other clients
|
|
114
|
+
socket.to(`chat_${data.conversationId}`).emit('chat_typing', {
|
|
115
|
+
type: 'chat_typing',
|
|
116
|
+
data: {
|
|
117
|
+
conversationId: data.conversationId,
|
|
118
|
+
sender: { type: 'user' },
|
|
119
|
+
isTyping: data.isTyping,
|
|
120
|
+
},
|
|
121
|
+
timestamp: new Date().toISOString(),
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Broadcast a message to all clients in the chat room.
|
|
128
|
+
*
|
|
129
|
+
* @param event - Event name
|
|
130
|
+
* @param message - Message to broadcast
|
|
131
|
+
*/
|
|
132
|
+
broadcast(event, message) {
|
|
133
|
+
this.io.to('chat').emit(event, message);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Broadcast a message to a specific conversation room.
|
|
137
|
+
*
|
|
138
|
+
* @param conversationId - Conversation ID
|
|
139
|
+
* @param event - Event name
|
|
140
|
+
* @param message - Message to broadcast
|
|
141
|
+
*/
|
|
142
|
+
broadcastToConversation(conversationId, event, message) {
|
|
143
|
+
this.io.to(`chat_${conversationId}`).emit(event, message);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Process terminal output and convert to chat message if applicable.
|
|
147
|
+
*
|
|
148
|
+
* Checks for response markers in terminal output and creates
|
|
149
|
+
* chat messages from extracted content.
|
|
150
|
+
*
|
|
151
|
+
* @param sessionId - The session/agent ID that produced the output
|
|
152
|
+
* @param output - Raw terminal output
|
|
153
|
+
* @param conversationId - Target conversation ID
|
|
154
|
+
* @returns The created chat message, or null if no response marker found
|
|
155
|
+
*/
|
|
156
|
+
async processTerminalOutput(sessionId, output, conversationId) {
|
|
157
|
+
// Only process if there's an active conversation
|
|
158
|
+
if (!conversationId)
|
|
159
|
+
return null;
|
|
160
|
+
// Check if output contains response markers
|
|
161
|
+
const hasResponseMarker = output.includes('[RESPONSE]') ||
|
|
162
|
+
output.includes('[CHAT_RESPONSE]') ||
|
|
163
|
+
output.includes('```response');
|
|
164
|
+
if (!hasResponseMarker)
|
|
165
|
+
return null;
|
|
166
|
+
try {
|
|
167
|
+
const channel = this.chatV2.ensureChannelForLegacyConversation({
|
|
168
|
+
conversationId,
|
|
169
|
+
agentSession: 'crewly-orc',
|
|
170
|
+
});
|
|
171
|
+
const { message } = this.chatV2.recordTurn({
|
|
172
|
+
channelId: channel.id,
|
|
173
|
+
senderType: 'agent',
|
|
174
|
+
senderId: sessionId,
|
|
175
|
+
content: output,
|
|
176
|
+
metadata: { source: 'pty-runtime', sessionId },
|
|
177
|
+
});
|
|
178
|
+
const legacyMessage = v2MessageToLegacy(message);
|
|
179
|
+
this.logger.debug('Added agent message to chat', {
|
|
180
|
+
messageId: legacyMessage.id,
|
|
181
|
+
conversationId,
|
|
182
|
+
});
|
|
183
|
+
return legacyMessage;
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
this.logger.error('Failed to process terminal output for chat', {
|
|
187
|
+
sessionId,
|
|
188
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
189
|
+
});
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Process a unified [NOTIFY] message and add it directly to a conversation.
|
|
195
|
+
*
|
|
196
|
+
* Unlike `processTerminalOutput`, this method takes pre-extracted content
|
|
197
|
+
* from a [NOTIFY] payload — no regex extraction needed. Optional metadata
|
|
198
|
+
* (e.g. Slack delivery tracking fields) is merged into the message metadata.
|
|
199
|
+
*
|
|
200
|
+
* @param sessionId - The session/agent ID that produced the output
|
|
201
|
+
* @param content - Pre-extracted markdown content from NotifyPayload.message
|
|
202
|
+
* @param conversationId - Target conversation ID
|
|
203
|
+
* @param metadata - Optional additional metadata to attach to the message
|
|
204
|
+
* @returns The created chat message, or null on failure
|
|
205
|
+
*/
|
|
206
|
+
async processNotifyMessage(sessionId, content, conversationId, metadata) {
|
|
207
|
+
try {
|
|
208
|
+
const channel = this.chatV2.ensureChannelForLegacyConversation({
|
|
209
|
+
conversationId,
|
|
210
|
+
agentSession: 'crewly-orc',
|
|
211
|
+
});
|
|
212
|
+
const { message } = this.chatV2.recordTurn({
|
|
213
|
+
channelId: channel.id,
|
|
214
|
+
senderType: 'agent',
|
|
215
|
+
senderId: sessionId,
|
|
216
|
+
content,
|
|
217
|
+
metadata: {
|
|
218
|
+
sessionId,
|
|
219
|
+
...(metadata ?? {}),
|
|
220
|
+
// `source` is set LAST so a caller cannot clobber the audit
|
|
221
|
+
// discriminator. It is a closed enum (RECORD_TURN_SOURCES) owned by
|
|
222
|
+
// this path; when a caller spread an out-of-enum value over it, the
|
|
223
|
+
// write failed validation and the agent's reply was dropped after the
|
|
224
|
+
// work was already done. Callers may add metadata, not redefine
|
|
225
|
+
// where the turn came from.
|
|
226
|
+
source: 'in-process-runtime',
|
|
227
|
+
},
|
|
228
|
+
});
|
|
229
|
+
const legacyMessage = v2MessageToLegacy(message);
|
|
230
|
+
this.logger.debug('Added notify message to chat', {
|
|
231
|
+
messageId: legacyMessage.id,
|
|
232
|
+
conversationId,
|
|
233
|
+
});
|
|
234
|
+
return legacyMessage;
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
this.logger.error('Failed to process notify message for chat', {
|
|
238
|
+
sessionId,
|
|
239
|
+
conversationId,
|
|
240
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
241
|
+
});
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Emit a typing indicator for the orchestrator.
|
|
247
|
+
*
|
|
248
|
+
* Call this when the orchestrator starts/stops processing a message.
|
|
249
|
+
*
|
|
250
|
+
* @param conversationId - Conversation ID
|
|
251
|
+
* @param isTyping - Whether the orchestrator is typing
|
|
252
|
+
*/
|
|
253
|
+
emitOrchestratorTyping(conversationId, isTyping) {
|
|
254
|
+
this.broadcastTyping(conversationId, { type: 'orchestrator', name: 'Orchestrator' }, isTyping);
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Emit a typing indicator for an agent.
|
|
258
|
+
*
|
|
259
|
+
* @param conversationId - Conversation ID
|
|
260
|
+
* @param sender - Agent sender information
|
|
261
|
+
* @param isTyping - Whether the agent is typing
|
|
262
|
+
*/
|
|
263
|
+
emitAgentTyping(conversationId, sender, isTyping) {
|
|
264
|
+
this.broadcastTyping(conversationId, sender, isTyping);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Emit a typing indicator via the WebSocket broadcast channel.
|
|
268
|
+
* Phase 6c: typing indicators were previously emitted on the
|
|
269
|
+
* legacy ChatService EventEmitter; with that retired, the gateway
|
|
270
|
+
* sources them directly. Typing is transient and never persisted,
|
|
271
|
+
* so no chat-v2 write is involved.
|
|
272
|
+
*
|
|
273
|
+
* @param conversationId - Conversation ID
|
|
274
|
+
* @param sender - Sender descriptor
|
|
275
|
+
* @param isTyping - Whether the sender is typing
|
|
276
|
+
*/
|
|
277
|
+
broadcastTyping(conversationId, sender, isTyping) {
|
|
278
|
+
// Resolve sender type via the shared mapper so the wire shape
|
|
279
|
+
// matches what existing subscribers expect.
|
|
280
|
+
senderToV2(sender);
|
|
281
|
+
this.broadcast('chat_typing', {
|
|
282
|
+
type: 'chat_typing',
|
|
283
|
+
data: { conversationId, sender, isTyping },
|
|
284
|
+
timestamp: new Date().toISOString(),
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Check if the gateway is initialized.
|
|
289
|
+
*
|
|
290
|
+
* @returns True if initialized
|
|
291
|
+
*/
|
|
292
|
+
isInitialized() {
|
|
293
|
+
return this.initialized;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// =============================================================================
|
|
297
|
+
// Singleton Instance
|
|
298
|
+
// =============================================================================
|
|
299
|
+
let chatGatewayInstance = null;
|
|
300
|
+
/**
|
|
301
|
+
* Initialize the ChatGateway with a Socket.IO server.
|
|
302
|
+
*
|
|
303
|
+
* @param io - Socket.IO server instance
|
|
304
|
+
* @returns The ChatGateway instance
|
|
305
|
+
*/
|
|
306
|
+
export async function initializeChatGateway(io) {
|
|
307
|
+
if (!chatGatewayInstance) {
|
|
308
|
+
chatGatewayInstance = new ChatGateway(io);
|
|
309
|
+
await chatGatewayInstance.initialize();
|
|
310
|
+
}
|
|
311
|
+
return chatGatewayInstance;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Get the ChatGateway instance.
|
|
315
|
+
*
|
|
316
|
+
* @returns The ChatGateway instance or null if not initialized
|
|
317
|
+
*/
|
|
318
|
+
export function getChatGateway() {
|
|
319
|
+
return chatGatewayInstance;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Reset the ChatGateway instance (for testing).
|
|
323
|
+
*/
|
|
324
|
+
export function resetChatGateway() {
|
|
325
|
+
chatGatewayInstance = null;
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=chat.gateway.js.map
|