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
|
@@ -82,30 +82,49 @@ require_param "task (--task)" "$TASK"
|
|
|
82
82
|
# entitled to push back per the Brief Reception Protocol when these are
|
|
83
83
|
# absent. Spec: .crewly/specs/2026-05-03-agent-improvement-p0-execution.md
|
|
84
84
|
# §"Fix P0-3".
|
|
85
|
+
#
|
|
86
|
+
# Scans the WHOLE delegated brief, not just `--task`. The Request Contract
|
|
87
|
+
# can legitimately live in `--task`, in `--context`, or be split across the
|
|
88
|
+
# two, and delegators routinely put the long-form G/O/E in `--context` while
|
|
89
|
+
# `--task` carries the one-line ask. Scanning only `--task` warned
|
|
90
|
+
# "Request Contract incomplete" at briefs whose contract was fully present,
|
|
91
|
+
# just in the other field. That false positive is corrosive: this warning is
|
|
92
|
+
# the signal workers use to decide whether to push back under the Brief
|
|
93
|
+
# Reception Protocol, so crying wolf trains them to ignore a real one.
|
|
94
|
+
#
|
|
95
|
+
# The check is NOT weakened — a marker genuinely absent from BOTH fields
|
|
96
|
+
# still warns, and the missing-field list is still per-marker.
|
|
97
|
+
#
|
|
98
|
+
# $1 = task, $2 = context (either may be empty).
|
|
85
99
|
warn_missing_request_contract() {
|
|
86
|
-
|
|
100
|
+
# Join with a newline rather than concatenating: the patterns below anchor
|
|
101
|
+
# on `^`, which grep evaluates per line, and a seam newline also prevents a
|
|
102
|
+
# task ending in "go" plus a context starting "al:" from fabricating a
|
|
103
|
+
# spurious "goal:" match across the boundary.
|
|
104
|
+
local brief
|
|
105
|
+
brief="$(printf '%s\n%s' "${1:-}" "${2:-}")"
|
|
87
106
|
local missing=()
|
|
88
107
|
# Goal: the standalone word "Goal" (with optional ** markdown). Also
|
|
89
108
|
# accept "Objective" as a synonym some upstream callers use.
|
|
90
|
-
if ! echo "$
|
|
109
|
+
if ! echo "$brief" | grep -qiE '(^|[^a-zA-Z])(\*\*)?(goal|objective)(:|s?\b)'; then
|
|
91
110
|
missing+=("Goal")
|
|
92
111
|
fi
|
|
93
112
|
# Outcome: "Outcome" or "Expected Outcome".
|
|
94
|
-
if ! echo "$
|
|
113
|
+
if ! echo "$brief" | grep -qiE '(^|[^a-zA-Z])(\*\*)?(expected )?outcome(:|s?\b)'; then
|
|
95
114
|
missing+=("Outcome")
|
|
96
115
|
fi
|
|
97
116
|
# Eval: "Eval", "Eval Criteria", "Acceptance Criteria", "Evaluation Criteria".
|
|
98
|
-
if ! echo "$
|
|
117
|
+
if ! echo "$brief" | grep -qiE '(^|[^a-zA-Z])(\*\*)?(eval|evaluation criteria|acceptance criteria)(:|s?\b)'; then
|
|
99
118
|
missing+=("Eval")
|
|
100
119
|
fi
|
|
101
120
|
if [ ${#missing[@]} -gt 0 ]; then
|
|
102
121
|
local list
|
|
103
122
|
list=$(IFS=, ; echo "${missing[*]}")
|
|
104
|
-
echo "{\"warning\":\"Request Contract incomplete: brief is missing markers for: ${list}. Per P0-3 spec, every delegated subtask MUST include Goal + Expected Outcome + Eval Criteria. Workers may push back via the Brief Reception Protocol. Source: .crewly/specs/2026-05-03-agent-improvement-p0-execution.md §Fix P0-3.\"}" >&2
|
|
123
|
+
echo "{\"warning\":\"Request Contract incomplete: brief is missing markers for: ${list}. Neither the task nor the context field carries them. Per P0-3 spec, every delegated subtask MUST include Goal + Expected Outcome + Eval Criteria. Workers may push back via the Brief Reception Protocol. Source: .crewly/specs/2026-05-03-agent-improvement-p0-execution.md §Fix P0-3.\"}" >&2
|
|
105
124
|
fi
|
|
106
125
|
}
|
|
107
126
|
|
|
108
|
-
warn_missing_request_contract "$TASK"
|
|
127
|
+
warn_missing_request_contract "$TASK" "$CONTEXT"
|
|
109
128
|
|
|
110
129
|
# Resolve Crewly root from this script path:
|
|
111
130
|
# config/skills/team-leader/delegate-task/execute.sh -> project root
|
|
@@ -144,13 +163,80 @@ if [ -n "$CONTEXT" ]; then
|
|
|
144
163
|
fi
|
|
145
164
|
|
|
146
165
|
# Build a structured task message from Team Leader
|
|
147
|
-
TASK_MESSAGE="New task from Team Leader (priority: ${PRIORITY}):\n\n**[REQUIRED] When done, you MUST:** (1) Output a text summary of your work, findings, and any issues. (2) Call report-status:\nbash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"status\":\"done\",\"summary\":\"<brief summary>\",\"projectPath\":\"${PROJECT_PATH}\"}'\n\n---\n\n${TASK}"
|
|
166
|
+
TASK_MESSAGE="New task from Team Leader (priority: ${PRIORITY}):\n\n**[REQUIRED] When done, you MUST:** (1) Output a text summary of your work, findings, and any issues. (2) Call report-status, passing the workItemId from your [CREWLY-DISPATCH] notice (or from get-my-tasks) so the right WorkItem is closed:\nbash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"workItemId\":\"<your WorkItem id>\",\"status\":\"done\",\"summary\":\"<brief summary>\",\"projectPath\":\"${PROJECT_PATH}\"}'\n\n---\n\n${TASK}"
|
|
148
167
|
[ -n "$CONTEXT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\nContext: ${CONTEXT}"
|
|
149
168
|
|
|
169
|
+
# V3-only producer (spec 2026-05-06-task-management-v1-deprecation.md):
|
|
170
|
+
# We no longer write a `.crewly/tasks/delegated/*.md` file via the legacy
|
|
171
|
+
# `/task-management/create` endpoint. Instead the long-form brief travels
|
|
172
|
+
# on the WorkItem itself (`briefMarkdown` field) and the WI is the sole
|
|
173
|
+
# durable record of this delegation.
|
|
174
|
+
#
|
|
175
|
+
# ORDERING (WI 65578471): the WorkItem is created BEFORE delivery is
|
|
176
|
+
# attempted, and that order is load-bearing. Previously the pool-add ran
|
|
177
|
+
# only after delivery succeeded, so a delivery failure exited the script
|
|
178
|
+
# with NO RECORD ANYWHERE — not in the pool, not targeted, nothing for a
|
|
179
|
+
# reconciler or a human to find. Every other orphan class in this system
|
|
180
|
+
# at least left a WorkItem behind; this one left the intent with no system
|
|
181
|
+
# of record at all.
|
|
182
|
+
#
|
|
183
|
+
# On a delivery failure the WI is deliberately left `queued` with its
|
|
184
|
+
# `target` set, plus an explicit `[UNDELIVERED]` note (see below). That
|
|
185
|
+
# state is chosen, not incidental:
|
|
186
|
+
# - `queued` + `target` is recoverable — the wake gate admits a worker
|
|
187
|
+
# for a queued WI targeting them, so the task can still be delivered.
|
|
188
|
+
# - `queued` is NOT `running`, so it never masquerades as in-flight work.
|
|
189
|
+
# - the note makes an undelivered item distinguishable from a normally
|
|
190
|
+
# queued one, so a silent nothing is not traded for a silent something.
|
|
191
|
+
TASK_ID=""
|
|
192
|
+
|
|
193
|
+
case "$PRIORITY" in
|
|
194
|
+
critical|urgent) WI_PRIORITY="critical" ;;
|
|
195
|
+
high) WI_PRIORITY="high" ;;
|
|
196
|
+
low) WI_PRIORITY="low" ;;
|
|
197
|
+
*) WI_PRIORITY="medium" ;;
|
|
198
|
+
esac
|
|
199
|
+
|
|
200
|
+
WI_TITLE="$(echo "$TASK" | head -c 200)"
|
|
201
|
+
|
|
202
|
+
POOL_BODY=$(jq -n \
|
|
203
|
+
--arg type "delegate" \
|
|
204
|
+
--arg owner "team_lead" \
|
|
205
|
+
--arg target "$TO" \
|
|
206
|
+
--arg title "$WI_TITLE" \
|
|
207
|
+
--arg description "$TASK_MESSAGE" \
|
|
208
|
+
--arg briefMarkdown "$TASK" \
|
|
209
|
+
--arg priority "$WI_PRIORITY" \
|
|
210
|
+
--arg projectPath "${PROJECT_PATH:-}" \
|
|
211
|
+
'{type: $type, owner: $owner, target: $target, title: $title, description: $description, briefMarkdown: $briefMarkdown, metadata: ({priority: $priority} + (if $projectPath != "" then {projectPath: $projectPath} else {} end))}')
|
|
212
|
+
|
|
213
|
+
POOL_RESULT=$(api_call POST "/task-pool/add" "$POOL_BODY" 2>/dev/null || echo '{"success":false}')
|
|
214
|
+
POOL_OK=$(echo "$POOL_RESULT" | jq -r '.success // "false"' 2>/dev/null)
|
|
215
|
+
TASK_ID=$(echo "$POOL_RESULT" | jq -r '.data.id // .workItemId // empty' 2>/dev/null || true)
|
|
216
|
+
|
|
217
|
+
if [ "$POOL_OK" != "true" ]; then
|
|
218
|
+
# Unchanged from before the reorder: warn and still attempt delivery.
|
|
219
|
+
# Aborting here instead would be a behavioural change beyond this WI's
|
|
220
|
+
# scope, so it is deliberately NOT made. The residual gap (record
|
|
221
|
+
# creation fails, task delivered anyway) is reported, not silently
|
|
222
|
+
# fixed — it is the mirror of the bug fixed here and wants its own call.
|
|
223
|
+
echo "{\"warning\":\"Failed to create WorkItem in TaskPool — delivering anyway, so this task will have no durable record\",\"details\":$(echo "$POOL_RESULT" | jq -c . 2>/dev/null || echo '{}')}" >&2
|
|
224
|
+
fi
|
|
225
|
+
|
|
150
226
|
# Deliver the task message with fallback strategy:
|
|
151
227
|
# 1. Try normal delivery (waitForReady)
|
|
152
228
|
# 2. If fails, try force delivery
|
|
153
229
|
# 3. If still fails, auto-start the worker then retry
|
|
230
|
+
# waitTimeout 15000: the INITIAL attempt against a worker expected to be
|
|
231
|
+
# already running, so it fails fast and lets the fallback ladder below take
|
|
232
|
+
# over. The retry after auto-start uses 30000 — see the note there; the two
|
|
233
|
+
# values differ deliberately and must not be normalised to one number.
|
|
234
|
+
#
|
|
235
|
+
# ORIGIN NOT ESTABLISHED (WI dae79289): 15000 matches no delivery-related
|
|
236
|
+
# constant. Seven constants share the value, none of them about terminal
|
|
237
|
+
# delivery, so there is nothing here that this literal can honestly be said
|
|
238
|
+
# to mirror. Left exactly as-is rather than attached to a plausible-looking
|
|
239
|
+
# constant that does not actually govern it.
|
|
154
240
|
BODY=$(jq -n --arg message "$TASK_MESSAGE" '{message: $message, waitForReady: true, waitTimeout: 15000}')
|
|
155
241
|
|
|
156
242
|
DELIVER_OK=true
|
|
@@ -183,6 +269,16 @@ if [ "$DELIVER_OK" = "false" ]; then
|
|
|
183
269
|
echo '{"info":"Worker '"$TO"' start triggered — retrying delivery in 10s..."}' >&2
|
|
184
270
|
sleep 10
|
|
185
271
|
# Retry delivery after agent boots
|
|
272
|
+
# waitTimeout 30000, double the initial 15000 above. This retry
|
|
273
|
+
# follows an auto-start, so the worker is booting from cold and
|
|
274
|
+
# legitimately needs longer to reach a prompt than one that was
|
|
275
|
+
# expected to be up already. The asymmetry is the point: it is not
|
|
276
|
+
# drift between two copies of the same call.
|
|
277
|
+
#
|
|
278
|
+
# ORIGIN NOT ESTABLISHED (WI dae79289): the value coincides with
|
|
279
|
+
# EVENT_DELIVERY_CONSTANTS.TOTAL_DELIVERY_TIMEOUT, but coincidence
|
|
280
|
+
# of value is not evidence of relationship — eleven constants share
|
|
281
|
+
# 30000. Not claimed as a mirror.
|
|
186
282
|
RETRY_BODY=$(jq -n --arg message "$TASK_MESSAGE" '{message: $message, waitForReady: true, waitTimeout: 30000}')
|
|
187
283
|
api_call POST "/terminal/${TO}/deliver" "$RETRY_BODY" && STARTED=true || {
|
|
188
284
|
# Final fallback: force deliver
|
|
@@ -193,46 +289,27 @@ if [ "$DELIVER_OK" = "false" ]; then
|
|
|
193
289
|
fi
|
|
194
290
|
|
|
195
291
|
if [ "$STARTED" = "false" ]; then
|
|
196
|
-
|
|
292
|
+
# WI 65578471 — delivery failed, but the WorkItem already exists
|
|
293
|
+
# (created above, deliberately, before delivery was attempted). Mark
|
|
294
|
+
# it explicitly so an undelivered item is never mistaken for a
|
|
295
|
+
# normally queued one, then fail loudly. The WI stays `queued` with
|
|
296
|
+
# its `target`, which is the recoverable state: the worker can still
|
|
297
|
+
# be woken for it and re-delivery can be retried.
|
|
298
|
+
#
|
|
299
|
+
# Best-effort: a failure to annotate must not swallow the delivery
|
|
300
|
+
# error, which is the more important signal.
|
|
301
|
+
if [ -n "$TASK_ID" ]; then
|
|
302
|
+
NOTE_AUTHOR="${CREWLY_SESSION_NAME:-${FROM_SESSION:-team-leader}}"
|
|
303
|
+
NOTE_BODY=$(jq -n --arg author "$NOTE_AUTHOR" --arg note "[UNDELIVERED] Delivery to ${TO} failed — worker offline and could not be auto-started. WorkItem left queued and targeted for re-delivery." \
|
|
304
|
+
'{author: $author, note: $note}')
|
|
305
|
+
api_call POST "/task-pool/items/${TASK_ID}/notes" "$NOTE_BODY" >/dev/null 2>&1 || true
|
|
306
|
+
fi
|
|
307
|
+
echo '{"error":"Failed to deliver task to '"$TO"'. Worker is offline and could not be auto-started. Ensure the worker is a team member with a valid session.","to":"'"$TO"'","teamId":"'"$TEAM_ID"'","workItemId":"'"$TASK_ID"'","workItemState":"queued+targeted, marked [UNDELIVERED] — re-delivery can be retried"}'
|
|
197
308
|
exit 1
|
|
198
309
|
fi
|
|
199
310
|
}
|
|
200
311
|
fi
|
|
201
312
|
|
|
202
|
-
# V3-only producer (spec 2026-05-06-task-management-v1-deprecation.md):
|
|
203
|
-
# We no longer write a `.crewly/tasks/delegated/*.md` file via the legacy
|
|
204
|
-
# `/task-management/create` endpoint. Instead the long-form brief travels
|
|
205
|
-
# on the WorkItem itself (`briefMarkdown` field) and the WI is the sole
|
|
206
|
-
# durable record of this delegation.
|
|
207
|
-
TASK_ID=""
|
|
208
|
-
|
|
209
|
-
case "$PRIORITY" in
|
|
210
|
-
critical|urgent) WI_PRIORITY="critical" ;;
|
|
211
|
-
high) WI_PRIORITY="high" ;;
|
|
212
|
-
low) WI_PRIORITY="low" ;;
|
|
213
|
-
*) WI_PRIORITY="medium" ;;
|
|
214
|
-
esac
|
|
215
|
-
|
|
216
|
-
WI_TITLE="$(echo "$TASK" | head -c 200)"
|
|
217
|
-
|
|
218
|
-
POOL_BODY=$(jq -n \
|
|
219
|
-
--arg type "delegate" \
|
|
220
|
-
--arg owner "team_lead" \
|
|
221
|
-
--arg target "$TO" \
|
|
222
|
-
--arg title "$WI_TITLE" \
|
|
223
|
-
--arg description "$TASK_MESSAGE" \
|
|
224
|
-
--arg briefMarkdown "$TASK" \
|
|
225
|
-
--arg priority "$WI_PRIORITY" \
|
|
226
|
-
--arg projectPath "${PROJECT_PATH:-}" \
|
|
227
|
-
'{type: $type, owner: $owner, target: $target, title: $title, description: $description, briefMarkdown: $briefMarkdown, priority: $priority} + (if $projectPath != "" then {projectPath: $projectPath} else {} end)')
|
|
228
|
-
|
|
229
|
-
POOL_RESULT=$(api_call POST "/task-pool/add" "$POOL_BODY" 2>/dev/null || echo '{"success":false}')
|
|
230
|
-
POOL_OK=$(echo "$POOL_RESULT" | jq -r '.success // "false"' 2>/dev/null)
|
|
231
|
-
TASK_ID=$(echo "$POOL_RESULT" | jq -r '.data.id // .workItemId // empty' 2>/dev/null || true)
|
|
232
|
-
|
|
233
|
-
if [ "$POOL_OK" != "true" ]; then
|
|
234
|
-
echo "{\"warning\":\"Failed to create WorkItem in TaskPool — task delivered to terminal but no durable record\",\"details\":$(echo "$POOL_RESULT" | jq -c . 2>/dev/null || echo '{}')}" >&2
|
|
235
|
-
fi
|
|
236
313
|
|
|
237
314
|
# Set up idle event subscription for TL monitoring
|
|
238
315
|
MONITOR_IDLE=$(printf '%s' "$INPUT" | jq -r 'if .monitor.idleEvent == null then true else .monitor.idleEvent end')
|
|
@@ -251,11 +328,23 @@ if [ -z "$RESOLVED_SESSION" ]; then
|
|
|
251
328
|
fi
|
|
252
329
|
|
|
253
330
|
if [ "$MONITOR_IDLE" = "true" ] && [ -n "$RESOLVED_SESSION" ]; then
|
|
331
|
+
# ttlMinutes is deliberately OMITTED so the server default applies.
|
|
332
|
+
#
|
|
333
|
+
# This used to hardcode `ttlMinutes: 120`, silently capping every delegation
|
|
334
|
+
# subscription at 2h against a system default of 8h
|
|
335
|
+
# (EVENT_BUS_CONSTANTS.DEFAULT_SUBSCRIPTION_TTL_MINUTES = 480, applied by
|
|
336
|
+
# event-bus.service.ts via `input.ttlMinutes ?? DEFAULT`). A subscription
|
|
337
|
+
# that expires 6h early stops the TL ever being woken for a long-running
|
|
338
|
+
# delegation — the same failure shape as a lease lapsing under an agent that
|
|
339
|
+
# is simply heads-down.
|
|
340
|
+
#
|
|
341
|
+
# Omitting beats re-hardcoding 480: the constant stays the single source of
|
|
342
|
+
# truth and the skill cannot drift from it again.
|
|
254
343
|
SUB_BODY=$(jq -n \
|
|
255
344
|
--arg eventType "agent:idle" \
|
|
256
345
|
--arg sessionName "$TO" \
|
|
257
346
|
--arg subscriber "$RESOLVED_SESSION" \
|
|
258
|
-
'{eventType: $eventType, filter: {sessionName: $sessionName}, subscriberSession: $subscriber, oneShot: true
|
|
347
|
+
'{eventType: $eventType, filter: {sessionName: $sessionName}, subscriberSession: $subscriber, oneShot: true}')
|
|
259
348
|
SUB_RESULT=$(api_call POST "/events/subscribe" "$SUB_BODY" 2>/dev/null || true)
|
|
260
349
|
SUB_ID=$(echo "$SUB_RESULT" | jq -r '.data.id // empty' 2>/dev/null || true)
|
|
261
350
|
if [ -n "$SUB_ID" ]; then
|
|
@@ -1,12 +1,34 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# Tests for TL delegate-task execute.sh
|
|
3
3
|
# Covers: CREWLY_SESSION_NAME resolution, fromSession fallback,
|
|
4
|
-
# graceful monitoring skip, delegation success
|
|
4
|
+
# graceful monitoring skip, delegation success, and the Request
|
|
5
|
+
# Contract checker (which scans BOTH `task` and `context`).
|
|
5
6
|
set -euo pipefail
|
|
6
7
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
8
|
PASS=0
|
|
8
9
|
FAIL=0
|
|
9
10
|
|
|
11
|
+
# ---------------------------------------------------------------------------
|
|
12
|
+
# Extract the REAL warn_missing_request_contract out of execute.sh.
|
|
13
|
+
#
|
|
14
|
+
# This file used to keep a hand-copied duplicate of that function inside the
|
|
15
|
+
# mock, with a comment asking future editors to keep it "byte-equivalent".
|
|
16
|
+
# It did not stay byte-equivalent, and worse, nothing could detect that:
|
|
17
|
+
# changing the function in execute.sh left all 16 assertions green, because
|
|
18
|
+
# they were exercising the copy. Pulling the function straight out of the
|
|
19
|
+
# shipped script means production edits are felt here immediately, and makes
|
|
20
|
+
# the mutation test in the commit message meaningful.
|
|
21
|
+
# ---------------------------------------------------------------------------
|
|
22
|
+
REAL_FN_FILE="$(mktemp)"
|
|
23
|
+
export REAL_FN_FILE
|
|
24
|
+
sed -n '/^warn_missing_request_contract() {$/,/^}$/p' "$SCRIPT_DIR/execute.sh" > "$REAL_FN_FILE"
|
|
25
|
+
if ! grep -q 'Request Contract incomplete' "$REAL_FN_FILE"; then
|
|
26
|
+
echo "FATAL: could not extract warn_missing_request_contract() from execute.sh" >&2
|
|
27
|
+
exit 1
|
|
28
|
+
fi
|
|
29
|
+
# shellcheck source=/dev/null
|
|
30
|
+
source "$REAL_FN_FILE"
|
|
31
|
+
|
|
10
32
|
assert_succeeds() {
|
|
11
33
|
local desc="$1"
|
|
12
34
|
shift
|
|
@@ -74,27 +96,11 @@ shift
|
|
|
74
96
|
# Load the real shared lib first
|
|
75
97
|
source "${REAL_SKILL_DIR}/../_common/lib.sh"
|
|
76
98
|
|
|
77
|
-
#
|
|
78
|
-
#
|
|
79
|
-
#
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
local missing=()
|
|
83
|
-
if ! echo "$task" | grep -qiE '(^|[^a-zA-Z])(\*\*)?(goal|objective)(:|s?\b)'; then
|
|
84
|
-
missing+=("Goal")
|
|
85
|
-
fi
|
|
86
|
-
if ! echo "$task" | grep -qiE '(^|[^a-zA-Z])(\*\*)?(expected )?outcome(:|s?\b)'; then
|
|
87
|
-
missing+=("Outcome")
|
|
88
|
-
fi
|
|
89
|
-
if ! echo "$task" | grep -qiE '(^|[^a-zA-Z])(\*\*)?(eval|evaluation criteria|acceptance criteria)(:|s?\b)'; then
|
|
90
|
-
missing+=("Eval")
|
|
91
|
-
fi
|
|
92
|
-
if [ ${#missing[@]} -gt 0 ]; then
|
|
93
|
-
local list
|
|
94
|
-
list=$(IFS=, ; echo "${missing[*]}")
|
|
95
|
-
echo "{\"warning\":\"Request Contract incomplete: brief is missing markers for: ${list}. Per P0-3 spec, every delegated subtask MUST include Goal + Expected Outcome + Eval Criteria. Workers may push back via the Brief Reception Protocol. Source: .crewly/specs/2026-05-03-agent-improvement-p0-execution.md §Fix P0-3.\"}" >&2
|
|
96
|
-
fi
|
|
97
|
-
}
|
|
99
|
+
# Load the REAL warn_missing_request_contract, extracted from execute.sh by
|
|
100
|
+
# the harness above. Do NOT re-declare it here — a hand-copy silently
|
|
101
|
+
# decouples these scenarios from the code that actually ships.
|
|
102
|
+
# shellcheck source=/dev/null
|
|
103
|
+
source "$REAL_FN_FILE"
|
|
98
104
|
|
|
99
105
|
# Track API calls for verification
|
|
100
106
|
API_CALLS_LOG=$(mktemp)
|
|
@@ -158,9 +164,14 @@ FROM_SESSION=$(echo "$INPUT" | jq -r '.fromSession // empty')
|
|
|
158
164
|
require_param "to" "$TO"
|
|
159
165
|
require_param "task" "$TASK"
|
|
160
166
|
|
|
161
|
-
# Request Contract warning (P0-3): emit non-fatal warning when brief
|
|
162
|
-
# missing Goal / Expected Outcome / Eval markers.
|
|
163
|
-
|
|
167
|
+
# Request Contract warning (P0-3): emit the non-fatal warning when the brief
|
|
168
|
+
# is missing Goal / Expected Outcome / Eval markers.
|
|
169
|
+
#
|
|
170
|
+
# Run the PRODUCTION call line verbatim, with this mock's $TASK / $CONTEXT
|
|
171
|
+
# bound. Hardcoding the arguments here would let a regression at the real
|
|
172
|
+
# call site — dropping $CONTEXT, say — slip past every scenario below, which
|
|
173
|
+
# is exactly how the earlier hand-copied version of this mock went blind.
|
|
174
|
+
eval "$(grep -E '^warn_missing_request_contract "' "${REAL_SKILL_DIR}/execute.sh")"
|
|
164
175
|
|
|
165
176
|
# Validate hierarchy
|
|
166
177
|
if [ -n "$TEAM_ID" ] && [ -n "$TL_MEMBER_ID" ]; then
|
|
@@ -192,7 +203,7 @@ fi
|
|
|
192
203
|
|
|
193
204
|
TASK_MESSAGE="New task from Team Leader (priority: ${PRIORITY}):\n\n${TASK}"
|
|
194
205
|
[ -n "$CONTEXT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\nContext: ${CONTEXT}"
|
|
195
|
-
TASK_MESSAGE="${TASK_MESSAGE}\n\nWhen done, report back
|
|
206
|
+
TASK_MESSAGE="${TASK_MESSAGE}\n\nWhen done, report back with report-status, passing the workItemId from your [CREWLY-DISPATCH] notice: bash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"workItemId\":\"<your WorkItem id>\",\"status\":\"done\",\"summary\":\"<brief summary>\"}'"
|
|
196
207
|
|
|
197
208
|
BODY=$(jq -n --arg message "$TASK_MESSAGE" '{message: $message, waitForReady: true, waitTimeout: 15000}')
|
|
198
209
|
api_call POST "/terminal/${TO}/deliver" "$BODY"
|
|
@@ -231,7 +242,7 @@ if [ "$MONITOR_IDLE" = "true" ] && [ -n "$RESOLVED_SESSION" ]; then
|
|
|
231
242
|
--arg eventType "agent:idle" \
|
|
232
243
|
--arg sessionName "$TO" \
|
|
233
244
|
--arg subscriber "$RESOLVED_SESSION" \
|
|
234
|
-
'{eventType: $eventType, filter: {sessionName: $sessionName}, subscriberSession: $subscriber, oneShot: true
|
|
245
|
+
'{eventType: $eventType, filter: {sessionName: $sessionName}, subscriberSession: $subscriber, oneShot: true}')
|
|
235
246
|
SUB_RESULT=$(api_call POST "/events/subscribe" "$SUB_BODY" 2>/dev/null || true)
|
|
236
247
|
SUB_ID=$(echo "$SUB_RESULT" | jq -r '.data.id // empty' 2>/dev/null || true)
|
|
237
248
|
if [ -n "$SUB_ID" ]; then
|
|
@@ -510,7 +521,149 @@ else
|
|
|
510
521
|
PASS=$((PASS + 1))
|
|
511
522
|
fi
|
|
512
523
|
|
|
524
|
+
# -----------------------------------------------------------------------
|
|
525
|
+
# Scenario 15: Contract lives ENTIRELY in `context` — must NOT warn
|
|
526
|
+
#
|
|
527
|
+
# This is the reported bug. A delegator whose `task` is the one-line ask and
|
|
528
|
+
# whose full Goal / Expected Outcome / Eval Criteria sit in `context` was
|
|
529
|
+
# told the contract was "incomplete" even though every marker was present.
|
|
530
|
+
# -----------------------------------------------------------------------
|
|
531
|
+
echo "Scenario 15: full contract in context field only — no warning"
|
|
532
|
+
CTX_FULL="**Goal:** Ship the importer. **Expected Outcome:** CSVs land in prod. **Eval Criteria:** all tests green."
|
|
533
|
+
RAW_OUTPUT=$(env CREWLY_SESSION_NAME="sam-tl" bash "$MOCK_SCRIPT" "$SKILL_DIR" \
|
|
534
|
+
"{\"to\":\"crewly-product-leo-dev\",\"task\":\"build the importer\",\"context\":\"$CTX_FULL\"}" 2>&1)
|
|
535
|
+
if echo "$RAW_OUTPUT" | grep -q "Request Contract incomplete"; then
|
|
536
|
+
echo " FAIL: contract present in context was still reported incomplete: $RAW_OUTPUT"
|
|
537
|
+
FAIL=$((FAIL + 1))
|
|
538
|
+
else
|
|
539
|
+
echo " PASS: contract in context suppresses the warning"
|
|
540
|
+
PASS=$((PASS + 1))
|
|
541
|
+
fi
|
|
542
|
+
|
|
543
|
+
# -----------------------------------------------------------------------
|
|
544
|
+
# Scenario 16: Contract SPLIT across task and context — must NOT warn
|
|
545
|
+
# -----------------------------------------------------------------------
|
|
546
|
+
echo "Scenario 16: contract split across task and context — no warning"
|
|
547
|
+
RAW_OUTPUT=$(env CREWLY_SESSION_NAME="sam-tl" bash "$MOCK_SCRIPT" "$SKILL_DIR" \
|
|
548
|
+
'{"to":"crewly-product-leo-dev","task":"**Goal:** ship the importer","context":"**Expected Outcome:** CSVs land in prod. **Eval Criteria:** all tests green."}' 2>&1)
|
|
549
|
+
if echo "$RAW_OUTPUT" | grep -q "Request Contract incomplete"; then
|
|
550
|
+
echo " FAIL: split contract was reported incomplete: $RAW_OUTPUT"
|
|
551
|
+
FAIL=$((FAIL + 1))
|
|
552
|
+
else
|
|
553
|
+
echo " PASS: split contract suppresses the warning"
|
|
554
|
+
PASS=$((PASS + 1))
|
|
555
|
+
fi
|
|
556
|
+
|
|
557
|
+
# -----------------------------------------------------------------------
|
|
558
|
+
# Scenario 17: Check is NOT weakened — a field absent from BOTH still warns
|
|
559
|
+
# -----------------------------------------------------------------------
|
|
560
|
+
echo "Scenario 17: field missing from both fields still warns (check not weakened)"
|
|
561
|
+
RAW_OUTPUT=$(env CREWLY_SESSION_NAME="sam-tl" bash "$MOCK_SCRIPT" "$SKILL_DIR" \
|
|
562
|
+
'{"to":"crewly-product-leo-dev","task":"**Goal:** ship it","context":"**Expected Outcome:** it ships."}' 2>&1)
|
|
563
|
+
if echo "$RAW_OUTPUT" | grep -q "Request Contract incomplete" && \
|
|
564
|
+
echo "$RAW_OUTPUT" | grep -q "Eval"; then
|
|
565
|
+
echo " PASS: still warns for the one marker absent from both fields"
|
|
566
|
+
PASS=$((PASS + 1))
|
|
567
|
+
else
|
|
568
|
+
echo " FAIL: expected an Eval-missing warning, got: $RAW_OUTPUT"
|
|
569
|
+
FAIL=$((FAIL + 1))
|
|
570
|
+
fi
|
|
571
|
+
|
|
572
|
+
# -----------------------------------------------------------------------
|
|
573
|
+
# Scenario 18: Nothing anywhere — all three still named
|
|
574
|
+
# -----------------------------------------------------------------------
|
|
575
|
+
echo "Scenario 18: empty contract in both fields names Goal+Outcome+Eval"
|
|
576
|
+
RAW_OUTPUT=$(env CREWLY_SESSION_NAME="sam-tl" bash "$MOCK_SCRIPT" "$SKILL_DIR" \
|
|
577
|
+
'{"to":"crewly-product-leo-dev","task":"just do the thing","context":"here is some background prose"}' 2>&1)
|
|
578
|
+
if echo "$RAW_OUTPUT" | grep -q "Request Contract incomplete" && \
|
|
579
|
+
echo "$RAW_OUTPUT" | grep -q "Goal" && \
|
|
580
|
+
echo "$RAW_OUTPUT" | grep -q "Outcome" && \
|
|
581
|
+
echo "$RAW_OUTPUT" | grep -q "Eval"; then
|
|
582
|
+
echo " PASS: all three markers reported missing"
|
|
583
|
+
PASS=$((PASS + 1))
|
|
584
|
+
else
|
|
585
|
+
echo " FAIL: expected all three named, got: $RAW_OUTPUT"
|
|
586
|
+
FAIL=$((FAIL + 1))
|
|
587
|
+
fi
|
|
588
|
+
|
|
589
|
+
# -----------------------------------------------------------------------
|
|
590
|
+
# Scenarios 19-22: direct unit tests against the REAL extracted function.
|
|
591
|
+
#
|
|
592
|
+
# These call warn_missing_request_contract() itself (sourced from
|
|
593
|
+
# execute.sh at the top of this file), so they pin the two-argument
|
|
594
|
+
# signature and the scan surface with no mock in between.
|
|
595
|
+
# -----------------------------------------------------------------------
|
|
596
|
+
echo "Scenario 19: function scans arg 2 (context) for markers"
|
|
597
|
+
FN_OUT=$(warn_missing_request_contract "bare ask" \
|
|
598
|
+
"Goal: x. Expected Outcome: y. Eval Criteria: z." 2>&1 || true)
|
|
599
|
+
if [ -z "$FN_OUT" ]; then
|
|
600
|
+
echo " PASS: no warning when all markers are in the context argument"
|
|
601
|
+
PASS=$((PASS + 1))
|
|
602
|
+
else
|
|
603
|
+
echo " FAIL: expected silence, got: $FN_OUT"
|
|
604
|
+
FAIL=$((FAIL + 1))
|
|
605
|
+
fi
|
|
606
|
+
|
|
607
|
+
echo "Scenario 20: function still scans arg 1 (task) on its own"
|
|
608
|
+
FN_OUT=$(warn_missing_request_contract \
|
|
609
|
+
"Goal: x. Expected Outcome: y. Eval Criteria: z." "" 2>&1 || true)
|
|
610
|
+
if [ -z "$FN_OUT" ]; then
|
|
611
|
+
echo " PASS: no warning when all markers are in the task argument"
|
|
612
|
+
PASS=$((PASS + 1))
|
|
613
|
+
else
|
|
614
|
+
echo " FAIL: expected silence, got: $FN_OUT"
|
|
615
|
+
FAIL=$((FAIL + 1))
|
|
616
|
+
fi
|
|
617
|
+
|
|
618
|
+
echo "Scenario 21: function warns when a marker is in neither argument"
|
|
619
|
+
FN_OUT=$(warn_missing_request_contract "Goal: x." "Expected Outcome: y." 2>&1 || true)
|
|
620
|
+
if echo "$FN_OUT" | grep -q "Request Contract incomplete" && echo "$FN_OUT" | grep -q "Eval"; then
|
|
621
|
+
echo " PASS: names Eval as missing from both arguments"
|
|
622
|
+
PASS=$((PASS + 1))
|
|
623
|
+
else
|
|
624
|
+
echo " FAIL: expected Eval-missing warning, got: $FN_OUT"
|
|
625
|
+
FAIL=$((FAIL + 1))
|
|
626
|
+
fi
|
|
627
|
+
|
|
628
|
+
echo "Scenario 22: markers are not fabricated across the task/context seam"
|
|
629
|
+
# "go" + "al: ..." must not join into "goal:" — the newline join prevents it.
|
|
630
|
+
FN_OUT=$(warn_missing_request_contract "please go" \
|
|
631
|
+
"al: nothing here. Expected Outcome: y. Eval Criteria: z." 2>&1 || true)
|
|
632
|
+
if echo "$FN_OUT" | grep -q "Goal"; then
|
|
633
|
+
echo " PASS: seam does not fabricate a Goal marker"
|
|
634
|
+
PASS=$((PASS + 1))
|
|
635
|
+
else
|
|
636
|
+
echo " FAIL: 'go'+'al:' across the seam was accepted as a Goal marker: $FN_OUT"
|
|
637
|
+
FAIL=$((FAIL + 1))
|
|
638
|
+
fi
|
|
639
|
+
|
|
640
|
+
# -----------------------------------------------------------------------
|
|
641
|
+
# Scenario 23: source-level guard on the production call site.
|
|
642
|
+
#
|
|
643
|
+
# The unit tests above cannot see which arguments execute.sh actually
|
|
644
|
+
# passes. This asserts the call site itself, so reverting it to the
|
|
645
|
+
# task-only form fails here even though the function stays correct.
|
|
646
|
+
# -----------------------------------------------------------------------
|
|
647
|
+
echo "Scenario 23: execute.sh calls the checker with BOTH task and context"
|
|
648
|
+
SRC=$(cat "$SKILL_DIR/execute.sh")
|
|
649
|
+
if printf '%s' "$SRC" | grep -q -- 'warn_missing_request_contract "$TASK" "$CONTEXT"'; then
|
|
650
|
+
echo " PASS: call site passes \$TASK and \$CONTEXT"
|
|
651
|
+
PASS=$((PASS + 1))
|
|
652
|
+
else
|
|
653
|
+
echo " FAIL: execute.sh does not call warn_missing_request_contract with both fields"
|
|
654
|
+
FAIL=$((FAIL + 1))
|
|
655
|
+
fi
|
|
656
|
+
|
|
657
|
+
if printf '%s' "$SRC" | grep -qE '^warn_missing_request_contract "\$TASK"$'; then
|
|
658
|
+
echo " FAIL: execute.sh still has a task-only call to the contract checker"
|
|
659
|
+
FAIL=$((FAIL + 1))
|
|
660
|
+
else
|
|
661
|
+
echo " PASS: no task-only call to the contract checker remains"
|
|
662
|
+
PASS=$((PASS + 1))
|
|
663
|
+
fi
|
|
664
|
+
|
|
513
665
|
# Cleanup
|
|
666
|
+
rm -f "$REAL_FN_FILE"
|
|
514
667
|
rm -rf "$MOCK_DIR"
|
|
515
668
|
|
|
516
669
|
echo ""
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test-collection exclusion patterns for root-level vitest runs.
|
|
3
|
+
*
|
|
4
|
+
* The repository root has no vitest project of its own — the real vitest
|
|
5
|
+
* suites live in `frontend/` and `packages/chat-ui/`, each with their own
|
|
6
|
+
* config. A bare `npx vitest` at the root therefore falls back to vitest's
|
|
7
|
+
* built-in defaults, whose exclude list covers only `node_modules`, `dist`,
|
|
8
|
+
* `cypress` and a handful of dotfolders (`.idea`, `.git`, `.cache`,
|
|
9
|
+
* `.output`, `.temp`).
|
|
10
|
+
*
|
|
11
|
+
* `.claude/` is NOT in that list. It is agent scratch space and holds full
|
|
12
|
+
* git worktree copies of this repository, so a root-level run collects
|
|
13
|
+
* thousands of stale duplicate test files — files that belong to other
|
|
14
|
+
* agents' in-flight branches and are frequently written in jest syntax.
|
|
15
|
+
* Collecting them produces a wall of import errors that has nothing to do
|
|
16
|
+
* with the working tree under review.
|
|
17
|
+
*
|
|
18
|
+
* These patterns are kept here, rather than inline in `vitest.config.ts`,
|
|
19
|
+
* so the exclusion is a named, testable contract: `vitest-exclude.constants.test.ts`
|
|
20
|
+
* fails if the pattern is changed or the config stops applying it.
|
|
21
|
+
*
|
|
22
|
+
* @see vitest.config.ts — the sole consumer, which spreads these on top of
|
|
23
|
+
* vitest's `defaultExclude` (never replacing it).
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Glob matching everything inside the `.claude/` agent scratch directory, at
|
|
28
|
+
* any depth. Covers `.claude/worktrees/<branch>/**` (full repo copies) and
|
|
29
|
+
* `.claude/agents/**`.
|
|
30
|
+
*
|
|
31
|
+
* Deliberately matches `**\/.claude/**` rather than `.claude/**` so that a
|
|
32
|
+
* nested checkout cannot smuggle the directory back into collection.
|
|
33
|
+
*/
|
|
34
|
+
export const AGENT_SCRATCH_EXCLUDE_PATTERN = '**/.claude/**';
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Exclusion globs applied to root-level vitest runs, on top of vitest's own
|
|
38
|
+
* `defaultExclude`.
|
|
39
|
+
*
|
|
40
|
+
* IMPORTANT: consumers must SPREAD vitest's `defaultExclude` alongside these.
|
|
41
|
+
* Assigning `test.exclude` replaces the built-in list outright, which would
|
|
42
|
+
* silently re-enable collection of `node_modules` and `dist`.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* import { defineConfig, defaultExclude } from 'vitest/config';
|
|
47
|
+
* import { ROOT_VITEST_EXCLUDE_PATTERNS } from './config/vitest-exclude.constants.js';
|
|
48
|
+
*
|
|
49
|
+
* export default defineConfig({
|
|
50
|
+
* test: { exclude: [...defaultExclude, ...ROOT_VITEST_EXCLUDE_PATTERNS] },
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export const ROOT_VITEST_EXCLUDE_PATTERNS: readonly string[] = [
|
|
55
|
+
AGENT_SCRATCH_EXCLUDE_PATTERN,
|
|
56
|
+
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.controller.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/chat/chat.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAiB/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAoB7F;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,yDAAyD,EAAE,wBAAwB,GAClG,IAAI,CAEN;AAMD;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAwIf;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"chat.controller.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/chat/chat.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAiB/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAoB7F;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,yDAAyD,EAAE,wBAAwB,GAClG,IAAI,CAEN;AAMD;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAwIf;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAqLf;AAMD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAcf;AAMD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAYf;AAMD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,IAAI,CAwBN;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,IAAI,CAmBN;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,IAAI,CA4BN;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
|
@@ -313,7 +313,13 @@ export async function agentResponse(req, res, next) {
|
|
|
313
313
|
return;
|
|
314
314
|
}
|
|
315
315
|
const chatService = getChatService();
|
|
316
|
-
// Resolve conversation: use provided ID or get/create the current one
|
|
316
|
+
// Resolve conversation: use provided ID or get/create the current one.
|
|
317
|
+
//
|
|
318
|
+
// Whether the caller NAMED the conversation matters downstream: the
|
|
319
|
+
// fallback below picks the globally-current conversation, which is a fine
|
|
320
|
+
// default for storing a message but is NOT evidence that this message
|
|
321
|
+
// belongs to that thread (issue #731).
|
|
322
|
+
const conversationIdWasExplicit = Boolean(conversationId);
|
|
317
323
|
let resolvedConversationId = conversationId;
|
|
318
324
|
if (!resolvedConversationId) {
|
|
319
325
|
const current = await chatService.getCurrentConversation();
|
|
@@ -363,13 +369,29 @@ export async function agentResponse(req, res, next) {
|
|
|
363
369
|
// within the cadence, the enforcer will nudge it with
|
|
364
370
|
// [DELIVER_REQUIRED]. The service no-ops on non-slack conversations
|
|
365
371
|
// and on non-delivery markers (e.g. [IN_PROGRESS]).
|
|
372
|
+
//
|
|
373
|
+
// Only when the caller NAMED the thread (issue #731): a cron-driven
|
|
374
|
+
// daily task reports completion with no conversationId, so the fallback
|
|
375
|
+
// above hands back whatever thread happens to be globally current —
|
|
376
|
+
// typically some long-resolved thread. Tracking that as a pending
|
|
377
|
+
// delivery made the watchdog demand a deliverable in an unrelated thread
|
|
378
|
+
// every single day, and because markPendingDelivery re-arms the reminder
|
|
379
|
+
// counter, the nudges never aged out.
|
|
366
380
|
try {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
381
|
+
if (conversationIdWasExplicit) {
|
|
382
|
+
const { OrcDeliveryEnforcerService } = await import('../../services/orc/orc-delivery-enforcer.service.js');
|
|
383
|
+
OrcDeliveryEnforcerService.getInstance()?.markPendingDelivery({
|
|
384
|
+
conversationId: resolvedConversationId,
|
|
385
|
+
agentSender: senderName,
|
|
386
|
+
text: content,
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
logger.debug('Skipping delivery tracking — conversation was inferred, not named', {
|
|
391
|
+
senderName,
|
|
392
|
+
conversationId: resolvedConversationId,
|
|
393
|
+
});
|
|
394
|
+
}
|
|
373
395
|
}
|
|
374
396
|
catch (enforcerErr) {
|
|
375
397
|
logger.warn('OrcDeliveryEnforcer.markPendingDelivery threw (swallowed)', {
|