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,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Working Memory Service — auto-injectable "why am I awake" wake card
|
|
3
|
+
* for agent prompts.
|
|
4
|
+
*
|
|
5
|
+
* Builds a compact (≤1.5KB) markdown card that summarizes the most-
|
|
6
|
+
* recent active WorkItem assigned to an agent, the parent Request, the
|
|
7
|
+
* upstream WorkItem chain (max 5), the required next action, and any
|
|
8
|
+
* known constraints / open loops on the Request — so every agent wakes
|
|
9
|
+
* with the answer to "why am I awake right now?" without having to
|
|
10
|
+
* query the task pool manually.
|
|
11
|
+
*
|
|
12
|
+
* Per Memory Phase 1 / Fix M2: today, when an agent wakes (assigned
|
|
13
|
+
* to a WorkItem), it doesn't automatically know its parent Request,
|
|
14
|
+
* the upstream task chain, or relevant prior episodes — it receives
|
|
15
|
+
* just the WorkItem description and has to query manually. This
|
|
16
|
+
* service closes that gap by feeding a tiny wake card into prompt
|
|
17
|
+
* assembly automatically, alongside the M1 mission card.
|
|
18
|
+
*
|
|
19
|
+
* Out of scope for Phase 1 (deferred to later phases):
|
|
20
|
+
* - Narrative summarization of upstream chain (no LLM round-trip)
|
|
21
|
+
* - Episode memory / event timeline (M5 work)
|
|
22
|
+
* - Vector embedding / semantic recall
|
|
23
|
+
* - Memory review queue / supersession
|
|
24
|
+
*
|
|
25
|
+
* @module services/memory/working-memory.service
|
|
26
|
+
*/
|
|
27
|
+
import type { WorkItem, WorkItemStatus } from '../../types/v2/work-item.types.js';
|
|
28
|
+
import type { Request } from '../../types/v2/request.types.js';
|
|
29
|
+
/**
|
|
30
|
+
* Hard upper bound on the rendered wake card. Spec calls for ≤1.5KB;
|
|
31
|
+
* we cap at 1.5KB and truncate aggressively (drop optional sections
|
|
32
|
+
* first, then trim verbose sections) when over budget.
|
|
33
|
+
*/
|
|
34
|
+
export declare const WAKE_CARD_HARD_CAP_BYTES = 1536;
|
|
35
|
+
/**
|
|
36
|
+
* WorkItem statuses that count as "currently active for this agent".
|
|
37
|
+
*
|
|
38
|
+
* An agent that is `proposed` an item is about to wake on it, an
|
|
39
|
+
* `accepted` / `running` agent is mid-flight, and `blocked` /
|
|
40
|
+
* `escalated` are still the agent's open loop. Terminal statuses
|
|
41
|
+
* (done, verified, failed, cancelled) are NOT counted — the agent
|
|
42
|
+
* has nothing to wake on if its only assignment is closed.
|
|
43
|
+
*/
|
|
44
|
+
declare const ACTIVE_WORK_ITEM_STATUSES: ReadonlySet<WorkItemStatus>;
|
|
45
|
+
/**
|
|
46
|
+
* Inputs accepted by `getWakeCardForAgent`.
|
|
47
|
+
*
|
|
48
|
+
* `sessionName` is what the WorkItem.target field is set to (e.g.
|
|
49
|
+
* `crewly-product-leo-21a5477e`); the service uses this to find the
|
|
50
|
+
* agent's currently-active WorkItem. `agentId` is used for logging
|
|
51
|
+
* only (typically the same string, but we keep them separate so a
|
|
52
|
+
* caller using memberId for logging can still set sessionName for
|
|
53
|
+
* the lookup).
|
|
54
|
+
*/
|
|
55
|
+
export interface WakeCardRequest {
|
|
56
|
+
/** Agent identifier — used for logging only. */
|
|
57
|
+
agentId: string;
|
|
58
|
+
/** Agent's session name — used to filter WorkItems by target. */
|
|
59
|
+
sessionName: string;
|
|
60
|
+
/** Absolute path to the project root that owns `.crewly/`. */
|
|
61
|
+
projectPath: string;
|
|
62
|
+
/** Optional team id — currently unused, reserved for future filters. */
|
|
63
|
+
teamId?: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Internal shape used during card rendering. Captures the data points
|
|
67
|
+
* the spec calls out and lets `renderWakeCard` stay pure / testable.
|
|
68
|
+
*/
|
|
69
|
+
export interface WakeCardData {
|
|
70
|
+
/** The current active WorkItem for this agent, if any. */
|
|
71
|
+
current: WorkItem | null;
|
|
72
|
+
/** The parent Request, if linked. */
|
|
73
|
+
parentRequest: Request | null;
|
|
74
|
+
/**
|
|
75
|
+
* The upstream WorkItem chain (oldest → most-recent), up to
|
|
76
|
+
* UPSTREAM_CHAIN_MAX_ITEMS entries. Excludes `current` itself.
|
|
77
|
+
*/
|
|
78
|
+
upstreamChain: WorkItem[];
|
|
79
|
+
/**
|
|
80
|
+
* Open-loop / constraint summaries surfaced under "Known constraints".
|
|
81
|
+
* Sourced from Request metadata when present.
|
|
82
|
+
*/
|
|
83
|
+
openLoops: string[];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Service that builds the working-memory wake card injected into
|
|
87
|
+
* agent prompts.
|
|
88
|
+
*
|
|
89
|
+
* Singleton (mirrors {@link MissionContextService}). Caller side is
|
|
90
|
+
* fail-soft: any read error logs a warning and the service returns
|
|
91
|
+
* the empty string so prompt assembly never breaks.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* const svc = WorkingMemoryService.getInstance();
|
|
96
|
+
* const card = await svc.getWakeCardForAgent({
|
|
97
|
+
* agentId: 'member-uuid',
|
|
98
|
+
* sessionName: 'crewly-product-leo-21a5477e',
|
|
99
|
+
* projectPath: '/Users/me/projects/crewly',
|
|
100
|
+
* teamId: '28a4ac10-...',
|
|
101
|
+
* });
|
|
102
|
+
* if (card) prompt += `\n${card}`;
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
export declare class WorkingMemoryService {
|
|
106
|
+
private static instance;
|
|
107
|
+
private readonly logger;
|
|
108
|
+
private constructor();
|
|
109
|
+
/** Get the shared singleton instance. */
|
|
110
|
+
static getInstance(): WorkingMemoryService;
|
|
111
|
+
/** Reset for tests. */
|
|
112
|
+
static clearInstance(): void;
|
|
113
|
+
/**
|
|
114
|
+
* Build the working-memory wake card for an agent.
|
|
115
|
+
*
|
|
116
|
+
* Returns the empty string when no signals are available (no active
|
|
117
|
+
* WorkItem assigned to this agent) — callers should treat empty
|
|
118
|
+
* output as "skip the section entirely" rather than rendering an
|
|
119
|
+
* empty heading.
|
|
120
|
+
*
|
|
121
|
+
* Errors reading the task pool / request store are caught and logged
|
|
122
|
+
* as warnings; the method still returns the empty string so prompt
|
|
123
|
+
* assembly never breaks.
|
|
124
|
+
*
|
|
125
|
+
* @param req - Request inputs
|
|
126
|
+
* @returns A ≤1.5KB markdown card, or `''` when nothing is worth showing
|
|
127
|
+
*/
|
|
128
|
+
getWakeCardForAgent(req: WakeCardRequest): Promise<string>;
|
|
129
|
+
/**
|
|
130
|
+
* Gathers everything the renderer needs for one agent.
|
|
131
|
+
*
|
|
132
|
+
* Steps:
|
|
133
|
+
* 1. Find the agent's most-recent active WorkItem in the task pool.
|
|
134
|
+
* 2. If linked, load the parent Request.
|
|
135
|
+
* 3. Walk the parentWorkItemId chain (most-recent → oldest), up to
|
|
136
|
+
* UPSTREAM_CHAIN_MAX_ITEMS, and reverse for chronological order.
|
|
137
|
+
* 4. Extract open-loop / constraint summaries from Request metadata.
|
|
138
|
+
*
|
|
139
|
+
* @param req - Caller request
|
|
140
|
+
* @returns Populated WakeCardData (current may be null when nothing
|
|
141
|
+
* is awake for this agent).
|
|
142
|
+
*/
|
|
143
|
+
private collectWakeData;
|
|
144
|
+
/**
|
|
145
|
+
* Loads a Request by id, returning null on miss / error.
|
|
146
|
+
*
|
|
147
|
+
* Wraps {@link RequestService.getById} (singleton scoped to
|
|
148
|
+
* `req.projectPath`) so a missing or malformed Request file is
|
|
149
|
+
* downgraded to a debug-level warning rather than aborting the
|
|
150
|
+
* whole wake-card build.
|
|
151
|
+
*/
|
|
152
|
+
private loadRequest;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Pick the most-recent active WorkItem assigned to an agent.
|
|
156
|
+
*
|
|
157
|
+
* "Active" = status in {@link ACTIVE_WORK_ITEM_STATUSES}. "Most recent"
|
|
158
|
+
* = greatest `startedAt` (when set) else greatest `createdAt`. Ties
|
|
159
|
+
* resolve to whichever item appears later in the iteration order
|
|
160
|
+
* (effectively pool insertion order).
|
|
161
|
+
*
|
|
162
|
+
* Returns null when no item is currently active for this agent.
|
|
163
|
+
*
|
|
164
|
+
* @param items - All WorkItems in the pool
|
|
165
|
+
* @param sessionName - The agent's session name (matched against `target`)
|
|
166
|
+
*/
|
|
167
|
+
export declare function pickCurrentWorkItem(items: readonly WorkItem[], sessionName: string): WorkItem | null;
|
|
168
|
+
/**
|
|
169
|
+
* Walk the `parentWorkItemId` chain to build the upstream task
|
|
170
|
+
* sequence in chronological order (oldest → most-recent), capped at
|
|
171
|
+
* `maxItems` entries. The current WorkItem itself is NOT included in
|
|
172
|
+
* the result.
|
|
173
|
+
*
|
|
174
|
+
* Defends against cycles by tracking visited ids.
|
|
175
|
+
*
|
|
176
|
+
* @param items - All WorkItems in the pool
|
|
177
|
+
* @param current - The wake-card's current WorkItem (chain anchor)
|
|
178
|
+
* @param maxItems - Maximum number of upstream entries to surface
|
|
179
|
+
*/
|
|
180
|
+
export declare function buildUpstreamChain(items: readonly WorkItem[], current: WorkItem, maxItems: number): WorkItem[];
|
|
181
|
+
/**
|
|
182
|
+
* Extract open-loop / constraint summaries from a parent Request.
|
|
183
|
+
*
|
|
184
|
+
* Today the Request type does not have a dedicated `openLoops` field,
|
|
185
|
+
* so we derive one signal: the `confirmationReason` (when set —
|
|
186
|
+
* indicates a pending user confirmation that the agent should be
|
|
187
|
+
* aware of). When neither signal is present, returns an empty array
|
|
188
|
+
* and the renderer drops the section entirely.
|
|
189
|
+
*
|
|
190
|
+
* Phase 2 (M5 / M6) will add richer signals (decisions, lessons,
|
|
191
|
+
* outstanding sub-task statuses); this function is the extension
|
|
192
|
+
* point.
|
|
193
|
+
*
|
|
194
|
+
* @param request - Parent Request, or null
|
|
195
|
+
*/
|
|
196
|
+
export declare function collectOpenLoops(request: Request | null): string[];
|
|
197
|
+
/**
|
|
198
|
+
* Render a one-line summary for a WorkItem suitable for the
|
|
199
|
+
* upstream-chain bullet list. Format: `"<status> · <title>"` truncated
|
|
200
|
+
* at SUMMARY_LINE_MAX_CHARS.
|
|
201
|
+
*/
|
|
202
|
+
export declare function summarizeWorkItem(wi: WorkItem): string;
|
|
203
|
+
/**
|
|
204
|
+
* Compose the full wake-card markdown from collected data.
|
|
205
|
+
*
|
|
206
|
+
* Sections (in order):
|
|
207
|
+
* 1. Header — "## Why You Are Awake"
|
|
208
|
+
* 2. WorkItem — title (always present when called)
|
|
209
|
+
* 3. Parent Request — title + 1-line summary
|
|
210
|
+
* 4. Upstream chain — bullet list of prior WorkItems (max 5)
|
|
211
|
+
* 5. Required next action — from WorkItem description
|
|
212
|
+
* 6. Known constraints / open loops — from Request metadata (if any)
|
|
213
|
+
*
|
|
214
|
+
* Sections 3-6 are emitted only when they have content; an absent
|
|
215
|
+
* parent Request or empty chain simply drops the corresponding
|
|
216
|
+
* heading.
|
|
217
|
+
*/
|
|
218
|
+
export declare function renderWakeCard(data: WakeCardData): string;
|
|
219
|
+
/**
|
|
220
|
+
* Enforce the hard byte cap. Truncates the card at the last newline
|
|
221
|
+
* boundary that still fits, so we never cut a markdown bullet
|
|
222
|
+
* mid-line. If even the header exceeds the cap (shouldn't happen),
|
|
223
|
+
* the input is hard-truncated by byte length.
|
|
224
|
+
*
|
|
225
|
+
* @param content - Original rendered card
|
|
226
|
+
* @param capBytes - Hard cap in UTF-8 bytes
|
|
227
|
+
* @returns The card, possibly truncated, never exceeding `capBytes`
|
|
228
|
+
*/
|
|
229
|
+
export declare function enforceHardCap(content: string, capBytes: number): string;
|
|
230
|
+
/** Re-export for tests. */
|
|
231
|
+
export { ACTIVE_WORK_ITEM_STATUSES };
|
|
232
|
+
//# sourceMappingURL=working-memory.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"working-memory.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/memory/working-memory.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAM/D;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAK7C;;;;;;;;GAQG;AACH,QAAA,MAAM,yBAAyB,EAAE,WAAW,CAAC,cAAc,CAMzD,CAAC;AASH;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IACzB,qCAAqC;IACrC,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B;;;OAGG;IACH,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B;;;OAGG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,OAAO;IAMP,yCAAyC;WAC3B,WAAW,IAAI,oBAAoB;IAOjD,uBAAuB;WACT,aAAa,IAAI,IAAI;IAQnC;;;;;;;;;;;;;;OAcG;IACU,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAwCvE;;;;;;;;;;;;;OAaG;YACW,eAAe;IAoB7B;;;;;;;OAOG;YACW,WAAW;CAgB1B;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,WAAW,EAAE,MAAM,GAClB,QAAQ,GAAG,IAAI,CAiBjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,MAAM,GACf,QAAQ,EAAE,CAiBZ;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,EAAE,CASlE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,CAItD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAkDzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoBxE;AA8BD,2BAA2B;AAC3B,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Working Memory Service — auto-injectable "why am I awake" wake card
|
|
3
|
+
* for agent prompts.
|
|
4
|
+
*
|
|
5
|
+
* Builds a compact (≤1.5KB) markdown card that summarizes the most-
|
|
6
|
+
* recent active WorkItem assigned to an agent, the parent Request, the
|
|
7
|
+
* upstream WorkItem chain (max 5), the required next action, and any
|
|
8
|
+
* known constraints / open loops on the Request — so every agent wakes
|
|
9
|
+
* with the answer to "why am I awake right now?" without having to
|
|
10
|
+
* query the task pool manually.
|
|
11
|
+
*
|
|
12
|
+
* Per Memory Phase 1 / Fix M2: today, when an agent wakes (assigned
|
|
13
|
+
* to a WorkItem), it doesn't automatically know its parent Request,
|
|
14
|
+
* the upstream task chain, or relevant prior episodes — it receives
|
|
15
|
+
* just the WorkItem description and has to query manually. This
|
|
16
|
+
* service closes that gap by feeding a tiny wake card into prompt
|
|
17
|
+
* assembly automatically, alongside the M1 mission card.
|
|
18
|
+
*
|
|
19
|
+
* Out of scope for Phase 1 (deferred to later phases):
|
|
20
|
+
* - Narrative summarization of upstream chain (no LLM round-trip)
|
|
21
|
+
* - Episode memory / event timeline (M5 work)
|
|
22
|
+
* - Vector embedding / semantic recall
|
|
23
|
+
* - Memory review queue / supersession
|
|
24
|
+
*
|
|
25
|
+
* @module services/memory/working-memory.service
|
|
26
|
+
*/
|
|
27
|
+
import { LoggerService } from '../core/logger.service.js';
|
|
28
|
+
import { TaskPoolService } from '../task-pool/task-pool.service.js';
|
|
29
|
+
import { RequestService } from '../v3/request.service.js';
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Tunables
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
/**
|
|
34
|
+
* Hard upper bound on the rendered wake card. Spec calls for ≤1.5KB;
|
|
35
|
+
* we cap at 1.5KB and truncate aggressively (drop optional sections
|
|
36
|
+
* first, then trim verbose sections) when over budget.
|
|
37
|
+
*/
|
|
38
|
+
export const WAKE_CARD_HARD_CAP_BYTES = 1536;
|
|
39
|
+
/** Maximum WorkItems surfaced under "Upstream chain". */
|
|
40
|
+
const UPSTREAM_CHAIN_MAX_ITEMS = 5;
|
|
41
|
+
/**
|
|
42
|
+
* WorkItem statuses that count as "currently active for this agent".
|
|
43
|
+
*
|
|
44
|
+
* An agent that is `proposed` an item is about to wake on it, an
|
|
45
|
+
* `accepted` / `running` agent is mid-flight, and `blocked` /
|
|
46
|
+
* `escalated` are still the agent's open loop. Terminal statuses
|
|
47
|
+
* (done, verified, failed, cancelled) are NOT counted — the agent
|
|
48
|
+
* has nothing to wake on if its only assignment is closed.
|
|
49
|
+
*/
|
|
50
|
+
const ACTIVE_WORK_ITEM_STATUSES = new Set([
|
|
51
|
+
'proposed',
|
|
52
|
+
'accepted',
|
|
53
|
+
'running',
|
|
54
|
+
'blocked',
|
|
55
|
+
'escalated',
|
|
56
|
+
]);
|
|
57
|
+
/** Maximum description length for a single line of WorkItem summary. */
|
|
58
|
+
const SUMMARY_LINE_MAX_CHARS = 140;
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
// Service
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
/**
|
|
63
|
+
* Service that builds the working-memory wake card injected into
|
|
64
|
+
* agent prompts.
|
|
65
|
+
*
|
|
66
|
+
* Singleton (mirrors {@link MissionContextService}). Caller side is
|
|
67
|
+
* fail-soft: any read error logs a warning and the service returns
|
|
68
|
+
* the empty string so prompt assembly never breaks.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const svc = WorkingMemoryService.getInstance();
|
|
73
|
+
* const card = await svc.getWakeCardForAgent({
|
|
74
|
+
* agentId: 'member-uuid',
|
|
75
|
+
* sessionName: 'crewly-product-leo-21a5477e',
|
|
76
|
+
* projectPath: '/Users/me/projects/crewly',
|
|
77
|
+
* teamId: '28a4ac10-...',
|
|
78
|
+
* });
|
|
79
|
+
* if (card) prompt += `\n${card}`;
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export class WorkingMemoryService {
|
|
83
|
+
static instance = null;
|
|
84
|
+
logger;
|
|
85
|
+
constructor() {
|
|
86
|
+
this.logger = LoggerService.getInstance().createComponentLogger('WorkingMemoryService');
|
|
87
|
+
}
|
|
88
|
+
/** Get the shared singleton instance. */
|
|
89
|
+
static getInstance() {
|
|
90
|
+
if (!WorkingMemoryService.instance) {
|
|
91
|
+
WorkingMemoryService.instance = new WorkingMemoryService();
|
|
92
|
+
}
|
|
93
|
+
return WorkingMemoryService.instance;
|
|
94
|
+
}
|
|
95
|
+
/** Reset for tests. */
|
|
96
|
+
static clearInstance() {
|
|
97
|
+
WorkingMemoryService.instance = null;
|
|
98
|
+
}
|
|
99
|
+
// -------------------------------------------------------------------------
|
|
100
|
+
// Public API
|
|
101
|
+
// -------------------------------------------------------------------------
|
|
102
|
+
/**
|
|
103
|
+
* Build the working-memory wake card for an agent.
|
|
104
|
+
*
|
|
105
|
+
* Returns the empty string when no signals are available (no active
|
|
106
|
+
* WorkItem assigned to this agent) — callers should treat empty
|
|
107
|
+
* output as "skip the section entirely" rather than rendering an
|
|
108
|
+
* empty heading.
|
|
109
|
+
*
|
|
110
|
+
* Errors reading the task pool / request store are caught and logged
|
|
111
|
+
* as warnings; the method still returns the empty string so prompt
|
|
112
|
+
* assembly never breaks.
|
|
113
|
+
*
|
|
114
|
+
* @param req - Request inputs
|
|
115
|
+
* @returns A ≤1.5KB markdown card, or `''` when nothing is worth showing
|
|
116
|
+
*/
|
|
117
|
+
async getWakeCardForAgent(req) {
|
|
118
|
+
let data;
|
|
119
|
+
try {
|
|
120
|
+
data = await this.collectWakeData(req);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
this.logger.warn('Failed to collect wake-card data', {
|
|
124
|
+
agentId: req.agentId,
|
|
125
|
+
sessionName: req.sessionName,
|
|
126
|
+
error: error instanceof Error ? error.message : String(error),
|
|
127
|
+
});
|
|
128
|
+
return '';
|
|
129
|
+
}
|
|
130
|
+
if (!data.current) {
|
|
131
|
+
this.logger.debug('No active WorkItem — emitting empty wake card', {
|
|
132
|
+
agentId: req.agentId,
|
|
133
|
+
sessionName: req.sessionName,
|
|
134
|
+
});
|
|
135
|
+
return '';
|
|
136
|
+
}
|
|
137
|
+
const card = renderWakeCard(data);
|
|
138
|
+
const capped = enforceHardCap(card, WAKE_CARD_HARD_CAP_BYTES);
|
|
139
|
+
this.logger.debug('Wake card built', {
|
|
140
|
+
agentId: req.agentId,
|
|
141
|
+
sessionName: req.sessionName,
|
|
142
|
+
bytes: Buffer.byteLength(capped, 'utf8'),
|
|
143
|
+
currentWorkItemId: data.current.id,
|
|
144
|
+
requestId: data.current.requestId,
|
|
145
|
+
upstreamCount: data.upstreamChain.length,
|
|
146
|
+
});
|
|
147
|
+
return capped;
|
|
148
|
+
}
|
|
149
|
+
// -------------------------------------------------------------------------
|
|
150
|
+
// Data collection
|
|
151
|
+
// -------------------------------------------------------------------------
|
|
152
|
+
/**
|
|
153
|
+
* Gathers everything the renderer needs for one agent.
|
|
154
|
+
*
|
|
155
|
+
* Steps:
|
|
156
|
+
* 1. Find the agent's most-recent active WorkItem in the task pool.
|
|
157
|
+
* 2. If linked, load the parent Request.
|
|
158
|
+
* 3. Walk the parentWorkItemId chain (most-recent → oldest), up to
|
|
159
|
+
* UPSTREAM_CHAIN_MAX_ITEMS, and reverse for chronological order.
|
|
160
|
+
* 4. Extract open-loop / constraint summaries from Request metadata.
|
|
161
|
+
*
|
|
162
|
+
* @param req - Caller request
|
|
163
|
+
* @returns Populated WakeCardData (current may be null when nothing
|
|
164
|
+
* is awake for this agent).
|
|
165
|
+
*/
|
|
166
|
+
async collectWakeData(req) {
|
|
167
|
+
const pool = TaskPoolService.getInstance();
|
|
168
|
+
const all = await pool.getAllItems();
|
|
169
|
+
const current = pickCurrentWorkItem(all, req.sessionName);
|
|
170
|
+
if (!current) {
|
|
171
|
+
return { current: null, parentRequest: null, upstreamChain: [], openLoops: [] };
|
|
172
|
+
}
|
|
173
|
+
const parentRequest = current.requestId
|
|
174
|
+
? await this.loadRequest(current.requestId, req.projectPath)
|
|
175
|
+
: null;
|
|
176
|
+
const upstreamChain = buildUpstreamChain(all, current, UPSTREAM_CHAIN_MAX_ITEMS);
|
|
177
|
+
const openLoops = collectOpenLoops(parentRequest);
|
|
178
|
+
return { current, parentRequest, upstreamChain, openLoops };
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Loads a Request by id, returning null on miss / error.
|
|
182
|
+
*
|
|
183
|
+
* Wraps {@link RequestService.getById} (singleton scoped to
|
|
184
|
+
* `req.projectPath`) so a missing or malformed Request file is
|
|
185
|
+
* downgraded to a debug-level warning rather than aborting the
|
|
186
|
+
* whole wake-card build.
|
|
187
|
+
*/
|
|
188
|
+
async loadRequest(requestId, projectPath) {
|
|
189
|
+
try {
|
|
190
|
+
const svc = RequestService.getInstance(projectPath);
|
|
191
|
+
const req = await svc.getById(requestId);
|
|
192
|
+
return req ?? null;
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
this.logger.debug('Wake-card: parent Request load failed', {
|
|
196
|
+
requestId,
|
|
197
|
+
error: error instanceof Error ? error.message : String(error),
|
|
198
|
+
});
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// ---------------------------------------------------------------------------
|
|
204
|
+
// Pure helpers (exported for unit tests)
|
|
205
|
+
// ---------------------------------------------------------------------------
|
|
206
|
+
/**
|
|
207
|
+
* Pick the most-recent active WorkItem assigned to an agent.
|
|
208
|
+
*
|
|
209
|
+
* "Active" = status in {@link ACTIVE_WORK_ITEM_STATUSES}. "Most recent"
|
|
210
|
+
* = greatest `startedAt` (when set) else greatest `createdAt`. Ties
|
|
211
|
+
* resolve to whichever item appears later in the iteration order
|
|
212
|
+
* (effectively pool insertion order).
|
|
213
|
+
*
|
|
214
|
+
* Returns null when no item is currently active for this agent.
|
|
215
|
+
*
|
|
216
|
+
* @param items - All WorkItems in the pool
|
|
217
|
+
* @param sessionName - The agent's session name (matched against `target`)
|
|
218
|
+
*/
|
|
219
|
+
export function pickCurrentWorkItem(items, sessionName) {
|
|
220
|
+
if (!sessionName)
|
|
221
|
+
return null;
|
|
222
|
+
let best = null;
|
|
223
|
+
let bestTs = '';
|
|
224
|
+
for (const item of items) {
|
|
225
|
+
if (item.target !== sessionName)
|
|
226
|
+
continue;
|
|
227
|
+
if (!ACTIVE_WORK_ITEM_STATUSES.has(item.status))
|
|
228
|
+
continue;
|
|
229
|
+
const ts = item.startedAt ?? item.createdAt ?? '';
|
|
230
|
+
if (ts >= bestTs) {
|
|
231
|
+
best = item;
|
|
232
|
+
bestTs = ts;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return best;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Walk the `parentWorkItemId` chain to build the upstream task
|
|
239
|
+
* sequence in chronological order (oldest → most-recent), capped at
|
|
240
|
+
* `maxItems` entries. The current WorkItem itself is NOT included in
|
|
241
|
+
* the result.
|
|
242
|
+
*
|
|
243
|
+
* Defends against cycles by tracking visited ids.
|
|
244
|
+
*
|
|
245
|
+
* @param items - All WorkItems in the pool
|
|
246
|
+
* @param current - The wake-card's current WorkItem (chain anchor)
|
|
247
|
+
* @param maxItems - Maximum number of upstream entries to surface
|
|
248
|
+
*/
|
|
249
|
+
export function buildUpstreamChain(items, current, maxItems) {
|
|
250
|
+
const byId = new Map(items.map((wi) => [wi.id, wi]));
|
|
251
|
+
const seen = new Set([current.id]);
|
|
252
|
+
const chain = [];
|
|
253
|
+
let cursorId = current.parentWorkItemId;
|
|
254
|
+
while (cursorId && chain.length < maxItems) {
|
|
255
|
+
if (seen.has(cursorId))
|
|
256
|
+
break; // cycle guard
|
|
257
|
+
const parent = byId.get(cursorId);
|
|
258
|
+
if (!parent)
|
|
259
|
+
break;
|
|
260
|
+
chain.push(parent);
|
|
261
|
+
seen.add(cursorId);
|
|
262
|
+
cursorId = parent.parentWorkItemId;
|
|
263
|
+
}
|
|
264
|
+
// chain currently runs most-recent → oldest; reverse to chronological
|
|
265
|
+
return chain.reverse();
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Extract open-loop / constraint summaries from a parent Request.
|
|
269
|
+
*
|
|
270
|
+
* Today the Request type does not have a dedicated `openLoops` field,
|
|
271
|
+
* so we derive one signal: the `confirmationReason` (when set —
|
|
272
|
+
* indicates a pending user confirmation that the agent should be
|
|
273
|
+
* aware of). When neither signal is present, returns an empty array
|
|
274
|
+
* and the renderer drops the section entirely.
|
|
275
|
+
*
|
|
276
|
+
* Phase 2 (M5 / M6) will add richer signals (decisions, lessons,
|
|
277
|
+
* outstanding sub-task statuses); this function is the extension
|
|
278
|
+
* point.
|
|
279
|
+
*
|
|
280
|
+
* @param request - Parent Request, or null
|
|
281
|
+
*/
|
|
282
|
+
export function collectOpenLoops(request) {
|
|
283
|
+
if (!request)
|
|
284
|
+
return [];
|
|
285
|
+
const loops = [];
|
|
286
|
+
if (request.requiresConfirmation && request.confirmationReason) {
|
|
287
|
+
loops.push(`Awaiting user confirmation: ${request.confirmationReason}`);
|
|
288
|
+
}
|
|
289
|
+
return loops;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Render a one-line summary for a WorkItem suitable for the
|
|
293
|
+
* upstream-chain bullet list. Format: `"<status> · <title>"` truncated
|
|
294
|
+
* at SUMMARY_LINE_MAX_CHARS.
|
|
295
|
+
*/
|
|
296
|
+
export function summarizeWorkItem(wi) {
|
|
297
|
+
const title = (wi.title || '(untitled)').replace(/\s+/g, ' ').trim();
|
|
298
|
+
const line = `${wi.status} · ${title}`;
|
|
299
|
+
return truncate(line, SUMMARY_LINE_MAX_CHARS);
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Compose the full wake-card markdown from collected data.
|
|
303
|
+
*
|
|
304
|
+
* Sections (in order):
|
|
305
|
+
* 1. Header — "## Why You Are Awake"
|
|
306
|
+
* 2. WorkItem — title (always present when called)
|
|
307
|
+
* 3. Parent Request — title + 1-line summary
|
|
308
|
+
* 4. Upstream chain — bullet list of prior WorkItems (max 5)
|
|
309
|
+
* 5. Required next action — from WorkItem description
|
|
310
|
+
* 6. Known constraints / open loops — from Request metadata (if any)
|
|
311
|
+
*
|
|
312
|
+
* Sections 3-6 are emitted only when they have content; an absent
|
|
313
|
+
* parent Request or empty chain simply drops the corresponding
|
|
314
|
+
* heading.
|
|
315
|
+
*/
|
|
316
|
+
export function renderWakeCard(data) {
|
|
317
|
+
const { current, parentRequest, upstreamChain, openLoops } = data;
|
|
318
|
+
if (!current)
|
|
319
|
+
return '';
|
|
320
|
+
const lines = [];
|
|
321
|
+
lines.push('## Why You Are Awake');
|
|
322
|
+
lines.push('');
|
|
323
|
+
// WorkItem (always present here)
|
|
324
|
+
lines.push(`WorkItem: ${truncate((current.title || '(untitled)').replace(/\s+/g, ' ').trim(), SUMMARY_LINE_MAX_CHARS)}`);
|
|
325
|
+
// Parent Request
|
|
326
|
+
if (parentRequest) {
|
|
327
|
+
const reqTitle = truncate(parentRequest.title.replace(/\s+/g, ' ').trim(), SUMMARY_LINE_MAX_CHARS);
|
|
328
|
+
const reqSummary = parentRequest.description
|
|
329
|
+
? truncate(firstSentence(parentRequest.description), SUMMARY_LINE_MAX_CHARS)
|
|
330
|
+
: '';
|
|
331
|
+
lines.push(reqSummary
|
|
332
|
+
? `Parent Request: ${reqTitle} — ${reqSummary}`
|
|
333
|
+
: `Parent Request: ${reqTitle}`);
|
|
334
|
+
}
|
|
335
|
+
// Upstream chain
|
|
336
|
+
if (upstreamChain.length > 0) {
|
|
337
|
+
lines.push('Upstream chain:');
|
|
338
|
+
for (const wi of upstreamChain) {
|
|
339
|
+
lines.push(`- ${summarizeWorkItem(wi)}`);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
// Required next action — derived from WorkItem description.
|
|
343
|
+
// Falls back to the title when description is absent, so the agent
|
|
344
|
+
// always sees an actionable line.
|
|
345
|
+
const nextAction = current.description
|
|
346
|
+
? firstSentence(current.description)
|
|
347
|
+
: (current.title || '(untitled)');
|
|
348
|
+
lines.push(`Required next action: ${truncate(nextAction.replace(/\s+/g, ' ').trim(), SUMMARY_LINE_MAX_CHARS)}`);
|
|
349
|
+
// Known constraints / open loops
|
|
350
|
+
if (openLoops.length > 0) {
|
|
351
|
+
lines.push('');
|
|
352
|
+
lines.push('Known constraints / open loops on this Request:');
|
|
353
|
+
for (const loop of openLoops) {
|
|
354
|
+
lines.push(`- ${truncate(loop, SUMMARY_LINE_MAX_CHARS)}`);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
return lines.join('\n').trim();
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Enforce the hard byte cap. Truncates the card at the last newline
|
|
361
|
+
* boundary that still fits, so we never cut a markdown bullet
|
|
362
|
+
* mid-line. If even the header exceeds the cap (shouldn't happen),
|
|
363
|
+
* the input is hard-truncated by byte length.
|
|
364
|
+
*
|
|
365
|
+
* @param content - Original rendered card
|
|
366
|
+
* @param capBytes - Hard cap in UTF-8 bytes
|
|
367
|
+
* @returns The card, possibly truncated, never exceeding `capBytes`
|
|
368
|
+
*/
|
|
369
|
+
export function enforceHardCap(content, capBytes) {
|
|
370
|
+
if (Buffer.byteLength(content, 'utf8') <= capBytes)
|
|
371
|
+
return content;
|
|
372
|
+
const lines = content.split('\n');
|
|
373
|
+
const kept = [];
|
|
374
|
+
let runningBytes = 0;
|
|
375
|
+
for (const line of lines) {
|
|
376
|
+
const lineBytes = Buffer.byteLength(line, 'utf8') + 1; // +1 for newline
|
|
377
|
+
if (runningBytes + lineBytes > capBytes)
|
|
378
|
+
break;
|
|
379
|
+
kept.push(line);
|
|
380
|
+
runningBytes += lineBytes;
|
|
381
|
+
}
|
|
382
|
+
if (kept.length === 0) {
|
|
383
|
+
// Fallback: hard byte-truncate the first line.
|
|
384
|
+
return Buffer.from(content, 'utf8').slice(0, capBytes).toString('utf8');
|
|
385
|
+
}
|
|
386
|
+
return kept.join('\n');
|
|
387
|
+
}
|
|
388
|
+
// ---------------------------------------------------------------------------
|
|
389
|
+
// Internal string utils
|
|
390
|
+
// ---------------------------------------------------------------------------
|
|
391
|
+
/** Truncate a string at `max` chars, appending `…` when shortened. */
|
|
392
|
+
function truncate(s, max) {
|
|
393
|
+
if (s.length <= max)
|
|
394
|
+
return s;
|
|
395
|
+
return s.slice(0, Math.max(0, max - 1)) + '…';
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Return the first sentence (or first line) of a body of text. Used
|
|
399
|
+
* to compress Request/WorkItem descriptions into a one-line summary
|
|
400
|
+
* for the wake card.
|
|
401
|
+
*/
|
|
402
|
+
function firstSentence(text) {
|
|
403
|
+
const trimmed = text.trim();
|
|
404
|
+
if (!trimmed)
|
|
405
|
+
return '';
|
|
406
|
+
// Prefer first newline-terminated line if shorter than first
|
|
407
|
+
// period-terminated sentence — keeps multi-line descriptions tidy.
|
|
408
|
+
const firstLine = trimmed.split(/\r?\n/, 1)[0];
|
|
409
|
+
const periodMatch = trimmed.match(/^[^.!?]+[.!?]/);
|
|
410
|
+
if (periodMatch && periodMatch[0].length < firstLine.length) {
|
|
411
|
+
return periodMatch[0].trim();
|
|
412
|
+
}
|
|
413
|
+
return firstLine.trim();
|
|
414
|
+
}
|
|
415
|
+
/** Re-export for tests. */
|
|
416
|
+
export { ACTIVE_WORK_ITEM_STATUSES };
|
|
417
|
+
//# sourceMappingURL=working-memory.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"working-memory.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/memory/working-memory.service.ts"],"names":[],"mappings":"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"}
|