crewly 1.6.3 → 1.6.5
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/roles/architect/prompt.md +68 -2
- package/config/roles/auditor/prompt.md +68 -0
- package/config/roles/backend-developer/prompt.md +68 -2
- package/config/roles/content-strategist/prompt.md +73 -5
- package/config/roles/designer/prompt.md +69 -4
- package/config/roles/developer/prompt.md +231 -4
- package/config/roles/frontend-developer/prompt.md +68 -2
- package/config/roles/fullstack-dev/prompt.md +68 -2
- package/config/roles/generalist/prompt.md +68 -2
- package/config/roles/ops/prompt.md +69 -3
- package/config/roles/orchestrator/fragments/communication.md +27 -0
- package/config/roles/orchestrator/fragments/role-boundary.md +1 -1
- package/config/roles/orchestrator/prompt.md +215 -72
- package/config/roles/product-manager/prompt.md +140 -7
- package/config/roles/qa/prompt.md +70 -5
- package/config/roles/qa-engineer/prompt.md +70 -5
- package/config/roles/researcher/prompt.md +68 -2
- package/config/roles/sales/prompt.md +70 -5
- package/config/roles/support/prompt.md +69 -4
- package/config/roles/team-leader/prompt.md +87 -6
- package/config/roles/team-leader/role-boundaries.md +26 -0
- package/config/roles/team-leader/tl-addon.md +153 -1
- package/config/roles/tpm/prompt.md +68 -2
- package/config/roles/ux-designer/prompt.md +70 -5
- package/config/skills/_common/complete-body-shape.test.sh +249 -0
- package/config/skills/agent/core/accept-task/execute.sh +18 -15
- package/config/skills/agent/core/block-task/execute.sh +27 -9
- package/config/skills/agent/core/cancel-followup/SKILL.md +18 -0
- package/config/skills/agent/core/complete-task/execute.sh +45 -7
- package/config/skills/agent/core/create-task/execute.sh +40 -12
- package/config/skills/agent/core/get-my-active-work/SKILL.md +3 -1
- package/config/skills/agent/core/get-my-tasks/execute.sh +7 -5
- package/config/skills/agent/core/handoff-task/execute.sh +34 -48
- package/config/skills/agent/core/list-my-followups/SKILL.md +18 -0
- package/config/skills/agent/core/read-task/execute.sh +21 -8
- package/config/skills/agent/core/recall/SKILL.md +7 -0
- package/config/skills/agent/core/remember/SKILL.md +17 -1
- package/config/skills/agent/core/remember/execute.sh +5 -1
- package/config/skills/agent/core/reply-channel/SKILL.md +19 -0
- package/config/skills/agent/core/report-progress/execute.sh +39 -16
- package/config/skills/agent/core/report-status/execute.sh +36 -12
- package/config/skills/agent/core/save-working-state/execute.sh +17 -6
- package/config/skills/agent/core/schedule-followup/SKILL.md +19 -0
- package/config/skills/agent/core/send-message/SKILL.md +6 -0
- package/config/skills/agent/core/supersede-memory/SKILL.md +76 -0
- package/config/skills/agent/core/supersede-memory/execute.sh +108 -0
- package/config/skills/agent/core/watch-for-event/SKILL.md +19 -0
- package/config/skills/agent/onboarding/materialize-team/SKILL.md +94 -0
- package/config/skills/agent/onboarding/materialize-team/execute.sh +98 -0
- package/config/skills/agent/onboarding/recommend-team/SKILL.md +90 -0
- package/config/skills/agent/onboarding/recommend-team/execute.sh +96 -0
- package/config/skills/agent/xhs-article-to-image/SKILL.md +20 -0
- package/config/skills/auditor/score-task/SKILL.md +15 -0
- package/config/skills/orchestrator/assign-task/execute.sh +28 -4
- package/config/skills/orchestrator/cancel-all-schedules/SKILL.md +15 -1
- package/config/skills/orchestrator/complete-task/execute.sh +45 -4
- package/config/skills/orchestrator/delegate-task/SKILL.md +1 -0
- package/config/skills/orchestrator/delegate-task/execute.sh +41 -2
- package/config/skills/orchestrator/get-tasks/execute.sh +22 -18
- package/config/skills/orchestrator/list-schedules/SKILL.md +15 -1
- package/config/skills/orchestrator/update-team-member/SKILL.md +20 -0
- package/config/skills/team-leader/decompose-goal/execute.sh +51 -20
- package/config/skills/team-leader/delegate-task/execute.sh +67 -26
- package/config/skills/team-leader/delegate-task/execute.test.sh +117 -0
- package/config/skills/team-leader/verify-output/execute.sh +19 -20
- package/config/sops/common/dev-process-tiers.md +181 -0
- package/config/sops/common/owner-facing-communication.md +131 -0
- package/config/souls/orchestrator.md +8 -0
- package/config/souls/team-leader.md +77 -0
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.js +4 -1
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.d.ts +8 -1
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js +30 -26
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/api.controller.d.ts +0 -9
- package/dist/backend/backend/src/controllers/api.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/api.controller.js +4 -32
- package/dist/backend/backend/src/controllers/api.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +5 -2
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +5 -2
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/checklist/checklist.controller.d.ts +45 -0
- package/dist/backend/backend/src/controllers/checklist/checklist.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/checklist/checklist.controller.js +122 -0
- package/dist/backend/backend/src/controllers/checklist/checklist.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/memory/memory.controller.d.ts +24 -0
- package/dist/backend/backend/src/controllers/memory/memory.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/memory/memory.controller.js +69 -1
- package/dist/backend/backend/src/controllers/memory/memory.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/memory/memory.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/memory/memory.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/memory/memory.routes.js +3 -1
- package/dist/backend/backend/src/controllers/memory/memory.routes.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 +80 -5
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js +30 -0
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.d.ts +41 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.js +213 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.d.ts +21 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.js +27 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +97 -0
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.d.ts +13 -3
- package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.js +29 -24
- package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.js +61 -13
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +159 -7
- 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 +421 -37
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js +15 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +221 -10
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.controller.d.ts +22 -0
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.controller.js +92 -0
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.routes.js +6 -2
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/types.d.ts +1 -2
- package/dist/backend/backend/src/controllers/types.d.ts.map +1 -1
- package/dist/backend/backend/src/index.d.ts +4 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +307 -64
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/models/Project.d.ts +2 -0
- package/dist/backend/backend/src/models/Project.d.ts.map +1 -1
- package/dist/backend/backend/src/models/Project.js +10 -1
- package/dist/backend/backend/src/models/Project.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +4 -1
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/task-management.routes.d.ts +15 -0
- package/dist/backend/backend/src/routes/modules/task-management.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/task-management.routes.js +23 -43
- package/dist/backend/backend/src/routes/modules/task-management.routes.js.map +1 -1
- package/dist/backend/backend/src/scripts/cleanup-stale-pool.lib.d.ts +87 -0
- package/dist/backend/backend/src/scripts/cleanup-stale-pool.lib.d.ts.map +1 -0
- package/dist/backend/backend/src/scripts/cleanup-stale-pool.lib.js +116 -0
- package/dist/backend/backend/src/scripts/cleanup-stale-pool.lib.js.map +1 -0
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts +46 -6
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.js +56 -13
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +9 -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 +58 -11
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +31 -5
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +69 -29
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +113 -75
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +5 -3
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +35 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +127 -3
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts +79 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js +145 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts +91 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js +120 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +64 -9
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +125 -15
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +101 -33
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +76 -1
- 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 +73 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +5 -5
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +22 -8
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +10 -0
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js +160 -4
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts +37 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +77 -3
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +59 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js +87 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts +67 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/default-execution-loop.module.js +84 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/default-execution-loop.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +4 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js +4 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts +65 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +79 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/mission-context.module.d.ts +60 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/mission-context.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/mission-context.module.js +104 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/mission-context.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +45 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +16 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/request-contract.module.d.ts +106 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/request-contract.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/request-contract.module.js +167 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/request-contract.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.js +28 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts +38 -6
- package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js +73 -10
- package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/working-memory.module.d.ts +91 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/working-memory.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/working-memory.module.js +136 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/working-memory.module.js.map +1 -0
- package/dist/backend/backend/src/services/autonomous/index.d.ts +7 -3
- package/dist/backend/backend/src/services/autonomous/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/autonomous/index.js +7 -3
- package/dist/backend/backend/src/services/autonomous/index.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js +16 -22
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +13 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +15 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts +11 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +51 -19
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +18 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +23 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/backend/backend/src/services/core/config.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/config.service.js +8 -1
- package/dist/backend/backend/src/services/core/config.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/crewly-home.utils.d.ts +51 -0
- package/dist/backend/backend/src/services/core/crewly-home.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/services/core/crewly-home.utils.js +59 -0
- package/dist/backend/backend/src/services/core/crewly-home.utils.js.map +1 -0
- package/dist/backend/backend/src/services/core/state-invariant.types.d.ts +53 -0
- package/dist/backend/backend/src/services/core/state-invariant.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/core/state-invariant.types.js +61 -0
- package/dist/backend/backend/src/services/core/state-invariant.types.js.map +1 -0
- package/dist/backend/backend/src/services/core/storage.service.d.ts +20 -0
- package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +96 -8
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/teams-backup.service.d.ts +94 -4
- package/dist/backend/backend/src/services/core/teams-backup.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/teams-backup.service.js +172 -10
- package/dist/backend/backend/src/services/core/teams-backup.service.js.map +1 -1
- package/dist/backend/backend/src/services/index.d.ts +0 -2
- package/dist/backend/backend/src/services/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/index.js +0 -2
- package/dist/backend/backend/src/services/index.js.map +1 -1
- package/dist/backend/backend/src/services/intent-task/intent-classifier.fixture.d.ts +78 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.fixture.d.ts.map +1 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.fixture.js +209 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.fixture.js.map +1 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.d.ts +331 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.d.ts.map +1 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.js +413 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.js.map +1 -0
- package/dist/backend/backend/src/services/intent-task/intent-task.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/intent-task/intent-task.service.js +13 -4
- package/dist/backend/backend/src/services/intent-task/intent-task.service.js.map +1 -1
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.js +18 -13
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
- package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.d.ts +102 -0
- package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.d.ts.map +1 -0
- package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.js +118 -0
- package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.js.map +1 -0
- package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/knowledge/vector-store.service.js +11 -15
- package/dist/backend/backend/src/services/knowledge/vector-store.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/agent-memory.service.d.ts +20 -0
- package/dist/backend/backend/src/services/memory/agent-memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/agent-memory.service.js +27 -2
- package/dist/backend/backend/src/services/memory/agent-memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/memory-supersession.service.d.ts +104 -0
- package/dist/backend/backend/src/services/memory/memory-supersession.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/memory-supersession.service.js +127 -0
- package/dist/backend/backend/src/services/memory/memory-supersession.service.js.map +1 -0
- package/dist/backend/backend/src/services/memory/memory.service.d.ts +48 -17
- package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.js +65 -35
- package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/mission-context.service.d.ts +168 -0
- package/dist/backend/backend/src/services/memory/mission-context.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/mission-context.service.js +365 -0
- package/dist/backend/backend/src/services/memory/mission-context.service.js.map +1 -0
- package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.d.ts +138 -0
- package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.js +183 -0
- package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.js.map +1 -0
- package/dist/backend/backend/src/services/memory/vector-store.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/vector-store.service.js +7 -11
- package/dist/backend/backend/src/services/memory/vector-store.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/working-memory.service.d.ts +232 -0
- package/dist/backend/backend/src/services/memory/working-memory.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/working-memory.service.js +417 -0
- package/dist/backend/backend/src/services/memory/working-memory.service.js.map +1 -0
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +23 -2
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +2 -2
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.d.ts +27 -7
- package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.js +66 -27
- package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/teams-json-watcher.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/teams-json-watcher.service.js +2 -2
- package/dist/backend/backend/src/services/monitoring/teams-json-watcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/observability/agent-behavior-log.service.d.ts +132 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.service.js +284 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.service.js.map +1 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.singleton.d.ts +70 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.singleton.d.ts.map +1 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.singleton.js +121 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.singleton.js.map +1 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.types.d.ts +130 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.types.js +48 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.types.js.map +1 -0
- package/dist/backend/backend/src/services/observability/observability-db.d.ts +84 -0
- package/dist/backend/backend/src/services/observability/observability-db.d.ts.map +1 -0
- package/dist/backend/backend/src/services/observability/observability-db.js +165 -0
- package/dist/backend/backend/src/services/observability/observability-db.js.map +1 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts +22 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding.service.js +36 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.service.js.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts +21 -2
- package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/improvement-marker.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/improvement-marker.service.js +12 -3
- package/dist/backend/backend/src/services/orchestrator/improvement-marker.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/index.d.ts +1 -0
- package/dist/backend/backend/src/services/orchestrator/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/index.js +1 -0
- package/dist/backend/backend/src/services/orchestrator/index.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.d.ts +108 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +165 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts +114 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js +299 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-bootstrap.service.d.ts +128 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-bootstrap.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-bootstrap.service.js +195 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-bootstrap.service.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.d.ts +66 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.js +145 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.d.ts +59 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.js +68 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-setup.service.d.ts +114 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-setup.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-setup.service.js +195 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-setup.service.js.map +1 -0
- 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 +18 -6
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.d.ts +67 -0
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js +290 -0
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/state-persistence.service.d.ts +23 -1
- package/dist/backend/backend/src/services/orchestrator/state-persistence.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/state-persistence.service.js +64 -1
- package/dist/backend/backend/src/services/orchestrator/state-persistence.service.js.map +1 -1
- package/dist/backend/backend/src/services/project/active-projects.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project/active-projects.service.js +2 -2
- package/dist/backend/backend/src/services/project/active-projects.service.js.map +1 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.js +2 -2
- package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
- package/dist/backend/backend/src/services/prompt/prompt-generator.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/prompt/prompt-generator.service.js +2 -2
- package/dist/backend/backend/src/services/prompt/prompt-generator.service.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +51 -5
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +162 -15
- 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 +15 -2
- 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 +153 -11
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-handoff.service.d.ts +31 -18
- package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-handoff.service.js +73 -80
- package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-state-persistence.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-state-persistence.js +15 -4
- package/dist/backend/backend/src/services/session/session-state-persistence.js.map +1 -1
- package/dist/backend/backend/src/services/settings/settings.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/settings/settings.service.js +25 -0
- package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +14 -3
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js +28 -3
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/cross-machine-message.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/cross-machine-message.service.js +13 -18
- package/dist/backend/backend/src/services/slack/cross-machine-message.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +68 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +281 -21
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +21 -0
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts +15 -1
- package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/pool-storage.js +31 -8
- package/dist/backend/backend/src/services/task-pool/pool-storage.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +183 -0
- 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 +404 -8
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +14 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +128 -17
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts +95 -0
- package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/cascade-request-status.js +147 -0
- package/dist/backend/backend/src/services/v3/cascade-request-status.js.map +1 -0
- package/dist/backend/backend/src/services/v3/escalation-router.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation-router.service.js +42 -0
- package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-executor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-executor.service.js +16 -4
- package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-cascade.subscriber.d.ts +87 -0
- package/dist/backend/backend/src/services/v3/request-cascade.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/request-cascade.subscriber.js +152 -0
- package/dist/backend/backend/src/services/v3/request-cascade.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts +253 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +476 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +55 -0
- 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 +257 -20
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts +204 -0
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js +575 -0
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request.service.d.ts +107 -0
- package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.js +155 -2
- package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +69 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.js +157 -4
- package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts +50 -26
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.js +126 -161
- package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/work-item-projection.d.ts +40 -0
- package/dist/backend/backend/src/services/v3/work-item-projection.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/work-item-projection.js +115 -0
- package/dist/backend/backend/src/services/v3/work-item-projection.js.map +1 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +121 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +268 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp.service.js +11 -2
- package/dist/backend/backend/src/services/whatsapp/whatsapp.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.js +68 -14
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js +12 -0
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +11 -1
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js +0 -2
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/intent-task.types.d.ts +22 -3
- package/dist/backend/backend/src/types/intent-task.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/intent-task.types.js +201 -40
- package/dist/backend/backend/src/types/intent-task.types.js.map +1 -1
- package/dist/backend/backend/src/types/memory.types.d.ts +53 -0
- package/dist/backend/backend/src/types/memory.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/memory.types.js.map +1 -1
- package/dist/backend/backend/src/types/orchestrator-state.types.d.ts +49 -0
- package/dist/backend/backend/src/types/orchestrator-state.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/orchestrator-state.types.js +27 -0
- package/dist/backend/backend/src/types/orchestrator-state.types.js.map +1 -1
- package/dist/backend/backend/src/types/settings.types.d.ts +38 -2
- package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/settings.types.js +16 -2
- package/dist/backend/backend/src/types/settings.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.d.ts +5 -1
- package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.js +2 -2
- package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +40 -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 +20 -0
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/backend/src/utils/esm-require.utils.d.ts +111 -0
- package/dist/backend/backend/src/utils/esm-require.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/esm-require.utils.js +124 -0
- package/dist/backend/backend/src/utils/esm-require.utils.js.map +1 -0
- package/dist/backend/backend/src/utils/integrity-guarded-write.utils.d.ts +119 -0
- package/dist/backend/backend/src/utils/integrity-guarded-write.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/integrity-guarded-write.utils.js +212 -0
- package/dist/backend/backend/src/utils/integrity-guarded-write.utils.js.map +1 -0
- package/dist/backend/backend/src/utils/native-binding.utils.d.ts +128 -0
- package/dist/backend/backend/src/utils/native-binding.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/native-binding.utils.js +206 -0
- package/dist/backend/backend/src/utils/native-binding.utils.js.map +1 -0
- package/dist/backend/backend/src/utils/node-require.utils.d.ts +104 -0
- package/dist/backend/backend/src/utils/node-require.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/node-require.utils.js +111 -0
- package/dist/backend/backend/src/utils/node-require.utils.js.map +1 -0
- package/dist/cli/backend/src/models/Project.d.ts +2 -0
- package/dist/cli/backend/src/models/Project.d.ts.map +1 -1
- package/dist/cli/backend/src/models/Project.js +10 -1
- package/dist/cli/backend/src/models/Project.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +16 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
- package/dist/cli/backend/src/services/core/config.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/config.service.js +8 -1
- package/dist/cli/backend/src/services/core/config.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/crewly-home.utils.d.ts +51 -0
- package/dist/cli/backend/src/services/core/crewly-home.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/crewly-home.utils.js +59 -0
- package/dist/cli/backend/src/services/core/crewly-home.utils.js.map +1 -0
- package/dist/cli/backend/src/services/core/state-invariant.types.d.ts +53 -0
- package/dist/cli/backend/src/services/core/state-invariant.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/state-invariant.types.js +61 -0
- package/dist/cli/backend/src/services/core/state-invariant.types.js.map +1 -0
- package/dist/cli/backend/src/services/core/storage.service.d.ts +20 -0
- package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js +96 -8
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/teams-backup.service.d.ts +94 -4
- package/dist/cli/backend/src/services/core/teams-backup.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/teams-backup.service.js +172 -10
- package/dist/cli/backend/src/services/core/teams-backup.service.js.map +1 -1
- package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts +245 -0
- package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/event-bus/event-bus.service.js +639 -0
- package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.js +18 -13
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
- package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.d.ts +102 -0
- package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.js +118 -0
- package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/knowledge/vector-store.service.js +11 -15
- package/dist/cli/backend/src/services/knowledge/vector-store.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts +20 -0
- package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/agent-memory.service.js +27 -2
- package/dist/cli/backend/src/services/memory/agent-memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.d.ts +48 -17
- package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.js +65 -35
- package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.d.ts +138 -0
- package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.js +183 -0
- package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/message-queue.service.d.ts +236 -0
- package/dist/cli/backend/src/services/messaging/message-queue.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/message-queue.service.js +581 -0
- package/dist/cli/backend/src/services/messaging/message-queue.service.js.map +1 -0
- package/dist/cli/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/project/task-tracking.service.js +2 -2
- package/dist/cli/backend/src/services/project/task-tracking.service.js.map +1 -1
- package/dist/cli/backend/src/services/settings/settings.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/settings/settings.service.js +25 -0
- package/dist/cli/backend/src/services/settings/settings.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-thread-store.service.d.ts +147 -0
- package/dist/cli/backend/src/services/slack/slack-thread-store.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-thread-store.service.js +258 -0
- package/dist/cli/backend/src/services/slack/slack-thread-store.service.js.map +1 -0
- package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts +15 -1
- package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/pool-storage.js +31 -8
- package/dist/cli/backend/src/services/task-pool/pool-storage.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +459 -9
- 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 +1050 -126
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/work-item-projection.d.ts +40 -0
- package/dist/cli/backend/src/services/v3/work-item-projection.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/work-item-projection.js +115 -0
- package/dist/cli/backend/src/services/v3/work-item-projection.js.map +1 -0
- package/dist/cli/backend/src/types/event-bus.types.d.ts +173 -0
- package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/event-bus.types.js +218 -0
- package/dist/cli/backend/src/types/event-bus.types.js.map +1 -0
- package/dist/cli/backend/src/types/index.d.ts +11 -1
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js +0 -2
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/dist/cli/backend/src/types/memory.types.d.ts +53 -0
- package/dist/cli/backend/src/types/memory.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/memory.types.js.map +1 -1
- package/dist/cli/backend/src/types/messaging.types.d.ts +223 -0
- package/dist/cli/backend/src/types/messaging.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/messaging.types.js +231 -0
- package/dist/cli/backend/src/types/messaging.types.js.map +1 -0
- package/dist/cli/backend/src/types/settings.types.d.ts +38 -2
- package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/settings.types.js +16 -2
- package/dist/cli/backend/src/types/settings.types.js.map +1 -1
- package/dist/cli/backend/src/types/slack.types.d.ts +356 -0
- package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/slack.types.js +66 -0
- package/dist/cli/backend/src/types/slack.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/claim.types.d.ts +2 -5
- package/dist/cli/backend/src/types/v2/claim.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/claim.types.js +2 -5
- package/dist/cli/backend/src/types/v2/claim.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +40 -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 +20 -0
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/cli/backend/src/utils/format-error.d.ts +8 -0
- package/dist/cli/backend/src/utils/format-error.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/format-error.js +10 -0
- package/dist/cli/backend/src/utils/format-error.js.map +1 -0
- package/dist/cli/backend/src/utils/integrity-guarded-write.utils.d.ts +119 -0
- package/dist/cli/backend/src/utils/integrity-guarded-write.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/integrity-guarded-write.utils.js +212 -0
- package/dist/cli/backend/src/utils/integrity-guarded-write.utils.js.map +1 -0
- package/dist/cli/backend/src/utils/node-require.utils.d.ts +104 -0
- package/dist/cli/backend/src/utils/node-require.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/node-require.utils.js +111 -0
- package/dist/cli/backend/src/utils/node-require.utils.js.map +1 -0
- package/frontend/dist/assets/{index-7a4e7df5.js → index-698305f3.js} +337 -337
- package/frontend/dist/index.html +1 -1
- package/package.json +6 -2
- package/dist/backend/backend/src/controllers/eval/eval.controller.d.ts +0 -63
- package/dist/backend/backend/src/controllers/eval/eval.controller.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/eval/eval.controller.js +0 -228
- package/dist/backend/backend/src/controllers/eval/eval.controller.js.map +0 -1
- package/dist/backend/backend/src/controllers/eval/eval.routes.d.ts +0 -23
- package/dist/backend/backend/src/controllers/eval/eval.routes.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/eval/eval.routes.js +0 -37
- package/dist/backend/backend/src/controllers/eval/eval.routes.js.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge-v3/index.d.ts +0 -8
- package/dist/backend/backend/src/controllers/knowledge-v3/index.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge-v3/index.js +0 -8
- package/dist/backend/backend/src/controllers/knowledge-v3/index.js.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.controller.d.ts +0 -63
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.controller.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.controller.js +0 -179
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.controller.js.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.routes.d.ts +0 -22
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.routes.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.routes.js +0 -34
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.routes.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/cli-adapter.d.ts +0 -130
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/cli-adapter.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/cli-adapter.js +0 -406
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/cli-adapter.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/crewly-agent-adapter.d.ts +0 -68
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/crewly-agent-adapter.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/crewly-agent-adapter.js +0 -206
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/crewly-agent-adapter.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/index.d.ts +0 -32
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/index.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/index.js +0 -46
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/index.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/context-generator.d.ts +0 -87
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/context-generator.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/context-generator.js +0 -299
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/context-generator.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-runner.d.ts +0 -59
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-runner.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-runner.js +0 -218
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-runner.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-scorer.d.ts +0 -203
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-scorer.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-scorer.js +0 -467
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-scorer.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-types.d.ts +0 -313
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-types.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-types.js +0 -45
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-types.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/index.d.ts +0 -21
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/index.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/index.js +0 -21
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/index.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-cli.d.ts +0 -15
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-cli.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-cli.js +0 -349
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-cli.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-l4.d.ts +0 -97
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-l4.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-l4.js +0 -414
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-l4.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-standalone.d.ts +0 -42
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-standalone.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-standalone.js +0 -403
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-standalone.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/index.d.ts +0 -41
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/index.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/index.js +0 -58
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/index.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l1-tasks.d.ts +0 -15
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l1-tasks.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l1-tasks.js +0 -396
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l1-tasks.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l2-tasks.d.ts +0 -14
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l2-tasks.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l2-tasks.js +0 -564
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l2-tasks.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l3-tasks.d.ts +0 -13
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l3-tasks.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l3-tasks.js +0 -634
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l3-tasks.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l4-tasks.d.ts +0 -21
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l4-tasks.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l4-tasks.js +0 -1036
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l4-tasks.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tool-log-parser.d.ts +0 -100
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tool-log-parser.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tool-log-parser.js +0 -187
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tool-log-parser.js.map +0 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +0 -79
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +0 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +0 -118
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +0 -1
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts +0 -113
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js +0 -179
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js.map +0 -1
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts +0 -131
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js +0 -227
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js.map +0 -1
- package/dist/backend/backend/src/services/knowledge/fts5-search-strategy.d.ts +0 -56
- package/dist/backend/backend/src/services/knowledge/fts5-search-strategy.d.ts.map +0 -1
- package/dist/backend/backend/src/services/knowledge/fts5-search-strategy.js +0 -91
- package/dist/backend/backend/src/services/knowledge/fts5-search-strategy.js.map +0 -1
- package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts +0 -97
- package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts.map +0 -1
- package/dist/backend/backend/src/services/memory/learning-format.validator.js +0 -209
- package/dist/backend/backend/src/services/memory/learning-format.validator.js.map +0 -1
- /package/dist/{backend → cli}/backend/src/services/knowledge/learnings-index.service.d.ts +0 -0
- /package/dist/{backend → cli}/backend/src/services/knowledge/learnings-index.service.d.ts.map +0 -0
- /package/dist/{backend → cli}/backend/src/services/knowledge/learnings-index.service.js +0 -0
- /package/dist/{backend → cli}/backend/src/services/knowledge/learnings-index.service.js.map +0 -0
|
@@ -1,1036 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* L4 Evaluation Tasks — Runtime-Agnostic Collaboration & Self-Healing
|
|
3
|
-
*
|
|
4
|
-
* Redesigned to be runtime-agnostic: every runtime (Crewly Agent, Claude Code,
|
|
5
|
-
* Codex CLI, Gemini CLI) receives the same CONTEXT.md, the same bash skill
|
|
6
|
-
* shims, and the same fixtures. No Crewly-specific API calls in prompts.
|
|
7
|
-
*
|
|
8
|
-
* Task series:
|
|
9
|
-
* - **L4-C1..C5** — Collaboration tasks testing team coordination judgment
|
|
10
|
-
* - **L4-T1..T3** — Trap/resilience tasks testing self-healing ability
|
|
11
|
-
*
|
|
12
|
-
* Verification uses both native tool call records AND the tool log parser
|
|
13
|
-
* (`.crewly/.tool-log.jsonl`) written by skill shims, enabling universal
|
|
14
|
-
* scoring regardless of runtime.
|
|
15
|
-
*
|
|
16
|
-
* @module eval/tasks/l4-tasks
|
|
17
|
-
*/
|
|
18
|
-
import * as fs from 'node:fs';
|
|
19
|
-
import * as path from 'node:path';
|
|
20
|
-
import { DEFAULT_TASK_TIMEOUT_MS, MAX_TASK_STEPS } from '../eval-types.js';
|
|
21
|
-
import { setupEvalWorkspace, DEFAULT_EVAL_TEAM, } from '../context-generator.js';
|
|
22
|
-
import { parseToolLog, getDelegationTargets, getMessageRecipients, mergeToolCallRecords, } from '../tool-log-parser.js';
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
24
|
-
// Helpers
|
|
25
|
-
// ---------------------------------------------------------------------------
|
|
26
|
-
/**
|
|
27
|
-
* Build an {@link EvalVerification} from standard and collaboration checks.
|
|
28
|
-
*
|
|
29
|
-
* @param checks - standard verification checks
|
|
30
|
-
* @param collaborationChecks - checks for D5 scoring
|
|
31
|
-
* @returns assembled verification result
|
|
32
|
-
*/
|
|
33
|
-
function buildVerification(checks, collaborationChecks) {
|
|
34
|
-
const allChecks = [...checks, ...(collaborationChecks ?? [])];
|
|
35
|
-
return {
|
|
36
|
-
passed: allChecks.every((c) => c.passed),
|
|
37
|
-
checks,
|
|
38
|
-
collaborationChecks,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Check whether any tool call read a specific file (by substring match).
|
|
43
|
-
*
|
|
44
|
-
* Searches both native tool calls and skill log for file read activity.
|
|
45
|
-
*
|
|
46
|
-
* @param toolCalls - all recorded tool calls
|
|
47
|
-
* @param filePath - substring to match in tool args
|
|
48
|
-
* @returns true if any read-like tool call targeted the path
|
|
49
|
-
*/
|
|
50
|
-
function readFile(toolCalls, filePath) {
|
|
51
|
-
return toolCalls.some((tc) => {
|
|
52
|
-
const name = tc.toolName.toLowerCase();
|
|
53
|
-
if (!name.includes('read') && !name.includes('cat') && !name.includes('bash'))
|
|
54
|
-
return false;
|
|
55
|
-
const argsStr = JSON.stringify(tc.args ?? {});
|
|
56
|
-
return argsStr.includes(filePath);
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Check whether any tool call invoked a skill — via bash shim, skill log,
|
|
61
|
-
* OR native Crewly Agent API tool (e.g. `delegate_task` for "delegate-task").
|
|
62
|
-
*
|
|
63
|
-
* @param toolCalls - all recorded tool calls
|
|
64
|
-
* @param skillName - skill name (e.g. "delegate-task")
|
|
65
|
-
* @returns true if the skill was invoked by any method
|
|
66
|
-
*/
|
|
67
|
-
function usedSkill(toolCalls, skillName) {
|
|
68
|
-
// Check skill log entries (prefixed with "skill:")
|
|
69
|
-
if (toolCalls.some((tc) => tc.toolName === `skill:${skillName}`))
|
|
70
|
-
return true;
|
|
71
|
-
// Check native API tool name (underscore variant: delegate-task → delegate_task)
|
|
72
|
-
const nativeName = skillName.replace(/-/g, '_');
|
|
73
|
-
if (toolCalls.some((tc) => tc.toolName === nativeName))
|
|
74
|
-
return true;
|
|
75
|
-
// Check native bash calls containing the skill script name
|
|
76
|
-
return toolCalls.some((tc) => {
|
|
77
|
-
if (!tc.toolName.toLowerCase().includes('bash'))
|
|
78
|
-
return false;
|
|
79
|
-
const argsStr = JSON.stringify(tc.args ?? {});
|
|
80
|
-
return argsStr.includes(`${skillName}.sh`) || argsStr.includes(skillName);
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Merge native tool call records with skill log records from the workspace.
|
|
85
|
-
*
|
|
86
|
-
* @param workDir - eval workspace path
|
|
87
|
-
* @param toolCalls - native tool calls from the runtime adapter
|
|
88
|
-
* @returns combined tool call array
|
|
89
|
-
*/
|
|
90
|
-
function getAllToolCalls(workDir, toolCalls) {
|
|
91
|
-
const skillRecords = parseToolLog(workDir);
|
|
92
|
-
return mergeToolCallRecords(toolCalls, skillRecords);
|
|
93
|
-
}
|
|
94
|
-
// ---------------------------------------------------------------------------
|
|
95
|
-
// L4-C1: Triage & Delegate Incoming Work
|
|
96
|
-
// ---------------------------------------------------------------------------
|
|
97
|
-
/**
|
|
98
|
-
* L4-C1: Analyze 3 pending tasks and delegate to available workers.
|
|
99
|
-
*
|
|
100
|
-
* Tests: reading team state, workload-aware delegation, handling
|
|
101
|
-
* inactive workers, multi-task triage decisions.
|
|
102
|
-
*/
|
|
103
|
-
const L4_C1_TRIAGE_DELEGATE = {
|
|
104
|
-
id: 'L4-C1',
|
|
105
|
-
level: 'L4',
|
|
106
|
-
title: 'Triage & delegate incoming work',
|
|
107
|
-
prompt: 'Read CONTEXT.md for your team info and available skills. ' +
|
|
108
|
-
'There are 3 new tasks in `.crewly/tasks/` (open status). ' +
|
|
109
|
-
'Analyze each task, decide which team member should handle it based on ' +
|
|
110
|
-
'their availability and role, and delegate using the delegate-task skill. ' +
|
|
111
|
-
'One of your workers (Max) is inactive — handle that appropriately. ' +
|
|
112
|
-
'Report your triage decisions via report-status.',
|
|
113
|
-
maxSteps: MAX_TASK_STEPS,
|
|
114
|
-
timeoutMs: DEFAULT_TASK_TIMEOUT_MS,
|
|
115
|
-
expectedTools: ['read_file', 'bash', 'write_file'],
|
|
116
|
-
tags: ['delegation', 'triage', 'collaboration'],
|
|
117
|
-
multiAgent: true,
|
|
118
|
-
async setup(workDir) {
|
|
119
|
-
await setupEvalWorkspace(workDir);
|
|
120
|
-
// 3 tasks with varying complexity
|
|
121
|
-
const tasks = [
|
|
122
|
-
{
|
|
123
|
-
id: 'task-frontend-bug',
|
|
124
|
-
title: 'Fix button alignment on dashboard',
|
|
125
|
-
priority: 'high',
|
|
126
|
-
description: 'The submit button is misaligned on mobile view. Fix CSS in Dashboard.tsx.',
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
id: 'task-backend-feature',
|
|
130
|
-
title: 'Add pagination to users API',
|
|
131
|
-
priority: 'medium',
|
|
132
|
-
description: 'Add limit/offset query params to GET /api/users. Update user.service.ts.',
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
id: 'task-write-tests',
|
|
136
|
-
title: 'Write tests for data.service.ts',
|
|
137
|
-
priority: 'low',
|
|
138
|
-
description: 'Add unit tests for createRecord and validateRecord in data.service.test.ts.',
|
|
139
|
-
},
|
|
140
|
-
];
|
|
141
|
-
for (const t of tasks) {
|
|
142
|
-
fs.writeFileSync(path.join(workDir, '.crewly', 'tasks', `${t.id}.md`), `---\nid: ${t.id}\ntitle: ${t.title}\nstatus: open\nassignee: null\npriority: ${t.priority}\n---\n\n# ${t.title}\n\n${t.description}\n`);
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
async verify(workDir, toolCalls) {
|
|
146
|
-
const all = getAllToolCalls(workDir, toolCalls);
|
|
147
|
-
// Check delegation files exist
|
|
148
|
-
const taskDir = path.join(workDir, '.crewly', 'tasks');
|
|
149
|
-
const delegationFiles = fs.readdirSync(taskDir).filter((f) => f.includes('delegation'));
|
|
150
|
-
const hasDelegations = delegationFiles.length > 0;
|
|
151
|
-
// Check delegation targets — should be Leo (active), not Max (inactive)
|
|
152
|
-
const targets = getDelegationTargets(all);
|
|
153
|
-
const delegatedToActive = targets.length > 0 &&
|
|
154
|
-
targets.every((t) => !t.toLowerCase().includes('max'));
|
|
155
|
-
const delegatedToLeo = targets.some((t) => t.toLowerCase().includes('leo'));
|
|
156
|
-
// Check reports
|
|
157
|
-
const reportsDir = path.join(workDir, '.crewly', 'reports');
|
|
158
|
-
const hasReports = fs.existsSync(reportsDir) &&
|
|
159
|
-
fs.readdirSync(reportsDir).length > 0;
|
|
160
|
-
const checks = [
|
|
161
|
-
{
|
|
162
|
-
name: 'read_context',
|
|
163
|
-
passed: readFile(all, 'CONTEXT.md'),
|
|
164
|
-
message: 'Should read CONTEXT.md first',
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
name: 'read_task_files',
|
|
168
|
-
passed: readFile(all, 'task-'),
|
|
169
|
-
message: 'Should read task files',
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
name: 'used_delegate_skill',
|
|
173
|
-
passed: usedSkill(all, 'delegate-task'),
|
|
174
|
-
message: 'Should use delegate-task skill',
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
name: 'delegations_created',
|
|
178
|
-
passed: hasDelegations,
|
|
179
|
-
message: 'Should create delegation JSON files',
|
|
180
|
-
},
|
|
181
|
-
];
|
|
182
|
-
const collaborationChecks = [
|
|
183
|
-
{
|
|
184
|
-
name: 'delegated_to_active_worker',
|
|
185
|
-
passed: delegatedToActive,
|
|
186
|
-
message: 'Should only delegate to active workers (not Max)',
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
name: 'delegated_to_leo',
|
|
190
|
-
passed: delegatedToLeo,
|
|
191
|
-
message: 'Should delegate to Leo (the active developer)',
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
name: 'report_status_called',
|
|
195
|
-
passed: hasReports || usedSkill(all, 'report-status'),
|
|
196
|
-
message: 'Should report triage decisions via report-status',
|
|
197
|
-
},
|
|
198
|
-
{
|
|
199
|
-
name: 'handled_inactive_worker',
|
|
200
|
-
passed: delegatedToActive,
|
|
201
|
-
message: 'Should handle Max being inactive (not assign to him)',
|
|
202
|
-
},
|
|
203
|
-
];
|
|
204
|
-
return buildVerification(checks, collaborationChecks);
|
|
205
|
-
},
|
|
206
|
-
};
|
|
207
|
-
// ---------------------------------------------------------------------------
|
|
208
|
-
// L4-C2: Knowledge-Driven Implementation
|
|
209
|
-
// ---------------------------------------------------------------------------
|
|
210
|
-
/**
|
|
211
|
-
* L4-C2: Read project knowledge, apply patterns, record learnings.
|
|
212
|
-
*
|
|
213
|
-
* Tests: knowledge retrieval, pattern application, memory persistence.
|
|
214
|
-
*/
|
|
215
|
-
const L4_C2_KNOWLEDGE_DRIVEN = {
|
|
216
|
-
id: 'L4-C2',
|
|
217
|
-
level: 'L4',
|
|
218
|
-
title: 'Knowledge-driven implementation',
|
|
219
|
-
prompt: 'Read CONTEXT.md. Check `.crewly/knowledge/project-patterns.md` for coding standards. ' +
|
|
220
|
-
'Implement the task described in `.crewly/tasks/task-health-endpoint.md` following ' +
|
|
221
|
-
'the documented patterns. After implementation, record what you learned in ' +
|
|
222
|
-
'`.crewly/knowledge/learnings.md`.',
|
|
223
|
-
maxSteps: MAX_TASK_STEPS,
|
|
224
|
-
timeoutMs: DEFAULT_TASK_TIMEOUT_MS,
|
|
225
|
-
expectedTools: ['read_file', 'write_file'],
|
|
226
|
-
tags: ['knowledge', 'pattern-application', 'collaboration'],
|
|
227
|
-
multiAgent: true,
|
|
228
|
-
async setup(workDir) {
|
|
229
|
-
await setupEvalWorkspace(workDir);
|
|
230
|
-
// Task file requesting a health endpoint
|
|
231
|
-
fs.writeFileSync(path.join(workDir, '.crewly', 'tasks', 'task-health-endpoint.md'), `---\nid: task-health\ntitle: Implement health endpoint\nstatus: open\nassignee: eval-tl-sam\npriority: high\n---\n\n# Implement Health Endpoint\n\nCreate a GET /health endpoint in \`src/controllers/health.controller.ts\`.\n\n## Requirements\n- Export a named function \`healthCheck\`\n- Accept (req, res) parameters\n- Return JSON: \`{ status: "ok", timestamp: Date.now() }\`\n- Follow patterns in \`.crewly/knowledge/project-patterns.md\`\n`);
|
|
232
|
-
},
|
|
233
|
-
async verify(workDir, toolCalls) {
|
|
234
|
-
const all = getAllToolCalls(workDir, toolCalls);
|
|
235
|
-
const controllerPath = path.join(workDir, 'src', 'controllers', 'health.controller.ts');
|
|
236
|
-
const controllerExists = fs.existsSync(controllerPath);
|
|
237
|
-
let hasNamedExport = false;
|
|
238
|
-
let hasReqRes = false;
|
|
239
|
-
let hasTryCatch = false;
|
|
240
|
-
let hasJsonResponse = false;
|
|
241
|
-
if (controllerExists) {
|
|
242
|
-
const content = fs.readFileSync(controllerPath, 'utf-8');
|
|
243
|
-
hasNamedExport = /export\s+(async\s+)?function/.test(content);
|
|
244
|
-
hasReqRes = content.includes('req') && content.includes('res');
|
|
245
|
-
hasTryCatch = content.includes('try') && content.includes('catch');
|
|
246
|
-
hasJsonResponse = content.includes('.json(') || content.includes('json');
|
|
247
|
-
}
|
|
248
|
-
const learningsPath = path.join(workDir, '.crewly', 'knowledge', 'learnings.md');
|
|
249
|
-
const learningsExists = fs.existsSync(learningsPath);
|
|
250
|
-
let learningsHasContent = false;
|
|
251
|
-
if (learningsExists) {
|
|
252
|
-
const content = fs.readFileSync(learningsPath, 'utf-8');
|
|
253
|
-
learningsHasContent = content.length > 50;
|
|
254
|
-
}
|
|
255
|
-
const checks = [
|
|
256
|
-
{
|
|
257
|
-
name: 'read_patterns',
|
|
258
|
-
passed: readFile(all, 'project-patterns'),
|
|
259
|
-
message: 'Should read patterns documentation before coding',
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
name: 'controller_created',
|
|
263
|
-
passed: controllerExists,
|
|
264
|
-
message: 'health.controller.ts should be created',
|
|
265
|
-
},
|
|
266
|
-
{
|
|
267
|
-
name: 'follows_named_export',
|
|
268
|
-
passed: hasNamedExport,
|
|
269
|
-
message: 'Should use named function export per pattern',
|
|
270
|
-
},
|
|
271
|
-
{
|
|
272
|
-
name: 'follows_req_res',
|
|
273
|
-
passed: hasReqRes,
|
|
274
|
-
message: 'Should accept req/res parameters per pattern',
|
|
275
|
-
},
|
|
276
|
-
];
|
|
277
|
-
const collaborationChecks = [
|
|
278
|
-
{
|
|
279
|
-
name: 'follows_try_catch',
|
|
280
|
-
passed: hasTryCatch,
|
|
281
|
-
message: 'Should use try/catch per documented pattern',
|
|
282
|
-
},
|
|
283
|
-
{
|
|
284
|
-
name: 'follows_json_response',
|
|
285
|
-
passed: hasJsonResponse,
|
|
286
|
-
message: 'Should return JSON response per pattern',
|
|
287
|
-
},
|
|
288
|
-
{
|
|
289
|
-
name: 'persisted_learnings',
|
|
290
|
-
passed: learningsExists && learningsHasContent,
|
|
291
|
-
message: 'Should create learnings.md with meaningful content (>50 chars)',
|
|
292
|
-
},
|
|
293
|
-
];
|
|
294
|
-
return buildVerification(checks, collaborationChecks);
|
|
295
|
-
},
|
|
296
|
-
};
|
|
297
|
-
// ---------------------------------------------------------------------------
|
|
298
|
-
// L4-C3: Fault Detection & Recovery
|
|
299
|
-
// ---------------------------------------------------------------------------
|
|
300
|
-
/**
|
|
301
|
-
* L4-C3: Detect an inactive worker with an in-progress task, recover.
|
|
302
|
-
*
|
|
303
|
-
* Tests: state reading, failure detection, reassignment, communication.
|
|
304
|
-
*/
|
|
305
|
-
const L4_C3_FAULT_RECOVERY = {
|
|
306
|
-
id: 'L4-C3',
|
|
307
|
-
level: 'L4',
|
|
308
|
-
title: 'Fault detection & recovery',
|
|
309
|
-
prompt: 'Read CONTEXT.md. Worker Max was assigned to task-001 but has gone inactive. ' +
|
|
310
|
-
'Investigate the situation: check team status, read the stuck task, and execute ' +
|
|
311
|
-
'a recovery plan using the available skills. Ensure the work is not lost.',
|
|
312
|
-
maxSteps: MAX_TASK_STEPS,
|
|
313
|
-
timeoutMs: DEFAULT_TASK_TIMEOUT_MS,
|
|
314
|
-
expectedTools: ['read_file', 'bash', 'write_file'],
|
|
315
|
-
tags: ['fault-recovery', 'resilience', 'collaboration'],
|
|
316
|
-
multiAgent: true,
|
|
317
|
-
async setup(workDir) {
|
|
318
|
-
await setupEvalWorkspace(workDir);
|
|
319
|
-
// task-001 assigned to Max (inactive), status: in_progress
|
|
320
|
-
fs.writeFileSync(path.join(workDir, '.crewly', 'tasks', 'task-001.md'), `---\nid: task-001\ntitle: Implement user authentication\nstatus: in_progress\nassignee: eval-dev-max\npriority: high\n---\n\n# Implement User Authentication\n\nAdd JWT-based auth to the API. Max started this but went inactive.\n\n## Partial Progress\n- Created auth.service.ts skeleton\n- JWT token generation function stubbed\n`);
|
|
321
|
-
// Max's partial work
|
|
322
|
-
fs.writeFileSync(path.join(workDir, 'src', 'services', 'auth.service.ts'), `/**\n * Authentication service — PARTIAL IMPLEMENTATION by Max\n * Status: incomplete, worker went inactive\n */\n\nexport interface AuthToken {\n token: string;\n expiresAt: number;\n}\n\n// TODO: implement JWT signing\nexport function generateToken(userId: string): AuthToken {\n throw new Error('Not implemented');\n}\n`);
|
|
323
|
-
},
|
|
324
|
-
async verify(workDir, toolCalls) {
|
|
325
|
-
const all = getAllToolCalls(workDir, toolCalls);
|
|
326
|
-
// Check if agent detected Max is inactive
|
|
327
|
-
const readTeamConfig = readFile(all, 'team-config') ||
|
|
328
|
-
usedSkill(all, 'get-team-status');
|
|
329
|
-
// Check recovery actions
|
|
330
|
-
const usedHandleFailure = usedSkill(all, 'handle-failure');
|
|
331
|
-
const usedDelegate = usedSkill(all, 'delegate-task');
|
|
332
|
-
const recoveryAction = usedHandleFailure || usedDelegate;
|
|
333
|
-
// Check reassignment — should go to Leo
|
|
334
|
-
const targets = getDelegationTargets(all);
|
|
335
|
-
const reassignedToLeo = targets.some((t) => t.toLowerCase().includes('leo'));
|
|
336
|
-
// Check communication
|
|
337
|
-
const sentMessage = usedSkill(all, 'send-message');
|
|
338
|
-
const recipients = getMessageRecipients(all);
|
|
339
|
-
const messagedLeo = recipients.some((r) => r.toLowerCase().includes('leo'));
|
|
340
|
-
// Check partial work preserved
|
|
341
|
-
const authServicePath = path.join(workDir, 'src', 'services', 'auth.service.ts');
|
|
342
|
-
const partialWorkPreserved = fs.existsSync(authServicePath);
|
|
343
|
-
const checks = [
|
|
344
|
-
{
|
|
345
|
-
name: 'read_context',
|
|
346
|
-
passed: readFile(all, 'CONTEXT.md'),
|
|
347
|
-
message: 'Should read CONTEXT.md',
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
name: 'detected_inactive_worker',
|
|
351
|
-
passed: readTeamConfig,
|
|
352
|
-
message: 'Should check team status to detect Max is inactive',
|
|
353
|
-
},
|
|
354
|
-
{
|
|
355
|
-
name: 'read_stuck_task',
|
|
356
|
-
passed: readFile(all, 'task-001'),
|
|
357
|
-
message: 'Should read the stuck task',
|
|
358
|
-
},
|
|
359
|
-
];
|
|
360
|
-
const collaborationChecks = [
|
|
361
|
-
{
|
|
362
|
-
name: 'recovery_action_taken',
|
|
363
|
-
passed: recoveryAction,
|
|
364
|
-
message: 'Should use handle-failure or delegate-task for recovery',
|
|
365
|
-
},
|
|
366
|
-
{
|
|
367
|
-
name: 'reassigned_to_leo',
|
|
368
|
-
passed: reassignedToLeo,
|
|
369
|
-
message: 'Should reassign to Leo (the active worker)',
|
|
370
|
-
},
|
|
371
|
-
{
|
|
372
|
-
name: 'preserved_partial_work',
|
|
373
|
-
passed: partialWorkPreserved,
|
|
374
|
-
message: 'Should not delete Max\'s partial implementation',
|
|
375
|
-
},
|
|
376
|
-
{
|
|
377
|
-
name: 'communicated_with_leo',
|
|
378
|
-
passed: sentMessage || messagedLeo,
|
|
379
|
-
message: 'Should send message to Leo about the reassignment',
|
|
380
|
-
},
|
|
381
|
-
];
|
|
382
|
-
return buildVerification(checks, collaborationChecks);
|
|
383
|
-
},
|
|
384
|
-
};
|
|
385
|
-
// ---------------------------------------------------------------------------
|
|
386
|
-
// L4-C4: Multi-File Coordinated Feature
|
|
387
|
-
// ---------------------------------------------------------------------------
|
|
388
|
-
/**
|
|
389
|
-
* L4-C4: Implement a complete feature across service, controller, and test,
|
|
390
|
-
* then delegate a code review.
|
|
391
|
-
*
|
|
392
|
-
* Tests: pattern reading, multi-file consistency, cross-file imports, delegation.
|
|
393
|
-
*/
|
|
394
|
-
const L4_C4_COORDINATED_FEATURE = {
|
|
395
|
-
id: 'L4-C4',
|
|
396
|
-
level: 'L4',
|
|
397
|
-
title: 'Multi-file coordinated feature',
|
|
398
|
-
prompt: 'Read CONTEXT.md. Read the existing `src/services/data.service.ts` to understand code patterns. ' +
|
|
399
|
-
'Implement a complete "user" feature following the same patterns: ' +
|
|
400
|
-
'1. Create src/services/user.service.ts with UserRecord interface, createUser, and validateUser functions. ' +
|
|
401
|
-
'2. Create src/controllers/user.controller.ts that imports and uses the user service. ' +
|
|
402
|
-
'3. Create src/services/user.service.test.ts with tests for both functions. ' +
|
|
403
|
-
'All files must be consistent with each other (imports match exports, types align). ' +
|
|
404
|
-
'Then delegate a code review of your work to Leo using the delegate-task skill.',
|
|
405
|
-
maxSteps: MAX_TASK_STEPS,
|
|
406
|
-
timeoutMs: DEFAULT_TASK_TIMEOUT_MS,
|
|
407
|
-
expectedTools: ['read_file', 'write_file', 'bash'],
|
|
408
|
-
tags: ['multi-file', 'feature', 'coordination', 'collaboration'],
|
|
409
|
-
multiAgent: true,
|
|
410
|
-
async setup(workDir) {
|
|
411
|
-
await setupEvalWorkspace(workDir);
|
|
412
|
-
},
|
|
413
|
-
async verify(workDir, toolCalls) {
|
|
414
|
-
const all = getAllToolCalls(workDir, toolCalls);
|
|
415
|
-
const servicePath = path.join(workDir, 'src', 'services', 'user.service.ts');
|
|
416
|
-
const controllerPath = path.join(workDir, 'src', 'controllers', 'user.controller.ts');
|
|
417
|
-
const testPath = path.join(workDir, 'src', 'services', 'user.service.test.ts');
|
|
418
|
-
const serviceExists = fs.existsSync(servicePath);
|
|
419
|
-
const controllerExists = fs.existsSync(controllerPath);
|
|
420
|
-
const testExists = fs.existsSync(testPath);
|
|
421
|
-
let hasInterface = false;
|
|
422
|
-
let hasCreate = false;
|
|
423
|
-
let hasValidate = false;
|
|
424
|
-
let controllerImportsService = false;
|
|
425
|
-
let testImportsService = false;
|
|
426
|
-
if (serviceExists) {
|
|
427
|
-
const content = fs.readFileSync(servicePath, 'utf-8');
|
|
428
|
-
hasInterface = content.includes('UserRecord') || content.includes('interface');
|
|
429
|
-
hasCreate = content.includes('createUser');
|
|
430
|
-
hasValidate = content.includes('validateUser') || content.includes('validate');
|
|
431
|
-
}
|
|
432
|
-
if (controllerExists) {
|
|
433
|
-
const content = fs.readFileSync(controllerPath, 'utf-8');
|
|
434
|
-
controllerImportsService = content.includes('user.service') || content.includes('user-service');
|
|
435
|
-
}
|
|
436
|
-
if (testExists) {
|
|
437
|
-
const content = fs.readFileSync(testPath, 'utf-8');
|
|
438
|
-
testImportsService = content.includes('user.service') ||
|
|
439
|
-
content.includes('createUser') ||
|
|
440
|
-
content.includes('validateUser');
|
|
441
|
-
}
|
|
442
|
-
// Check delegation for code review
|
|
443
|
-
const delegatedReview = usedSkill(all, 'delegate-task');
|
|
444
|
-
const targets = getDelegationTargets(all);
|
|
445
|
-
const delegatedToLeo = targets.some((t) => t.toLowerCase().includes('leo'));
|
|
446
|
-
const checks = [
|
|
447
|
-
{
|
|
448
|
-
name: 'read_existing_pattern',
|
|
449
|
-
passed: readFile(all, 'data.service'),
|
|
450
|
-
message: 'Should read data.service.ts for patterns',
|
|
451
|
-
},
|
|
452
|
-
{
|
|
453
|
-
name: 'service_created',
|
|
454
|
-
passed: serviceExists,
|
|
455
|
-
message: 'user.service.ts should be created',
|
|
456
|
-
},
|
|
457
|
-
{
|
|
458
|
-
name: 'controller_created',
|
|
459
|
-
passed: controllerExists,
|
|
460
|
-
message: 'user.controller.ts should be created',
|
|
461
|
-
},
|
|
462
|
-
{
|
|
463
|
-
name: 'test_created',
|
|
464
|
-
passed: testExists,
|
|
465
|
-
message: 'user.service.test.ts should be created',
|
|
466
|
-
},
|
|
467
|
-
];
|
|
468
|
-
const collaborationChecks = [
|
|
469
|
-
{
|
|
470
|
-
name: 'has_interface',
|
|
471
|
-
passed: hasInterface,
|
|
472
|
-
message: 'Service should define UserRecord interface',
|
|
473
|
-
},
|
|
474
|
-
{
|
|
475
|
-
name: 'has_create_function',
|
|
476
|
-
passed: hasCreate,
|
|
477
|
-
message: 'Service should export createUser function',
|
|
478
|
-
},
|
|
479
|
-
{
|
|
480
|
-
name: 'has_validate_function',
|
|
481
|
-
passed: hasValidate,
|
|
482
|
-
message: 'Service should export validateUser function',
|
|
483
|
-
},
|
|
484
|
-
{
|
|
485
|
-
name: 'cross_file_consistency',
|
|
486
|
-
passed: controllerImportsService && testImportsService,
|
|
487
|
-
message: 'Controller and test should import from user service',
|
|
488
|
-
},
|
|
489
|
-
{
|
|
490
|
-
name: 'delegated_review_to_leo',
|
|
491
|
-
passed: delegatedReview && delegatedToLeo,
|
|
492
|
-
message: 'Should delegate code review to Leo via delegate-task',
|
|
493
|
-
},
|
|
494
|
-
];
|
|
495
|
-
return buildVerification(checks, collaborationChecks);
|
|
496
|
-
},
|
|
497
|
-
};
|
|
498
|
-
// ---------------------------------------------------------------------------
|
|
499
|
-
// L4-C5: Team Health Assessment & Reporting
|
|
500
|
-
// ---------------------------------------------------------------------------
|
|
501
|
-
/**
|
|
502
|
-
* L4-C5: Analyze team health, identify problems, produce structured report.
|
|
503
|
-
*
|
|
504
|
-
* Tests: status reading, analytical reasoning, structured output, recommendations.
|
|
505
|
-
*/
|
|
506
|
-
const L4_C5_TEAM_HEALTH = {
|
|
507
|
-
id: 'L4-C5',
|
|
508
|
-
level: 'L4',
|
|
509
|
-
title: 'Team health assessment & reporting',
|
|
510
|
-
prompt: 'Read CONTEXT.md. Analyze the current state of your team and project. ' +
|
|
511
|
-
'Check team member statuses, review all pending tasks, and produce a ' +
|
|
512
|
-
'comprehensive health report at `.crewly/reports/team-health.json`. ' +
|
|
513
|
-
'Use get-team-status to confirm live statuses. Make actionable recommendations.',
|
|
514
|
-
maxSteps: MAX_TASK_STEPS,
|
|
515
|
-
timeoutMs: DEFAULT_TASK_TIMEOUT_MS,
|
|
516
|
-
expectedTools: ['read_file', 'write_file', 'bash'],
|
|
517
|
-
tags: ['health-check', 'monitoring', 'reporting', 'collaboration'],
|
|
518
|
-
multiAgent: true,
|
|
519
|
-
async setup(workDir) {
|
|
520
|
-
await setupEvalWorkspace(workDir);
|
|
521
|
-
// Add a mix of tasks — one stale
|
|
522
|
-
const staleTime = new Date(Date.now() - 3 * 60 * 60 * 1000).toISOString();
|
|
523
|
-
fs.writeFileSync(path.join(workDir, '.crewly', 'tasks', 'task-stale.md'), `---\nid: task-stale\ntitle: Fix login bug\nstatus: in_progress\nassignee: eval-dev-max\npriority: high\nupdatedAt: ${staleTime}\n---\n\n# Fix Login Bug\n\nStarted 3 hours ago but no progress. Assigned to Max who is now inactive.\n`);
|
|
524
|
-
fs.writeFileSync(path.join(workDir, '.crewly', 'tasks', 'task-open-1.md'), `---\nid: task-open-1\ntitle: Add search feature\nstatus: open\nassignee: null\npriority: medium\n---\n\n# Add Search Feature\n\nUnassigned task waiting for delegation.\n`);
|
|
525
|
-
},
|
|
526
|
-
async verify(workDir, toolCalls) {
|
|
527
|
-
const all = getAllToolCalls(workDir, toolCalls);
|
|
528
|
-
// Check get-team-status was used
|
|
529
|
-
const usedGetStatus = usedSkill(all, 'get-team-status');
|
|
530
|
-
// Check report file
|
|
531
|
-
const reportPath = path.join(workDir, '.crewly', 'reports', 'team-health.json');
|
|
532
|
-
const reportExists = fs.existsSync(reportPath);
|
|
533
|
-
let validJson = false;
|
|
534
|
-
let hasActiveList = false;
|
|
535
|
-
let hasInactiveList = false;
|
|
536
|
-
let identifiedMaxInactive = false;
|
|
537
|
-
let hasRecommendations = false;
|
|
538
|
-
let hasHealthStatus = false;
|
|
539
|
-
let identifiedStaleTasks = false;
|
|
540
|
-
if (reportExists) {
|
|
541
|
-
try {
|
|
542
|
-
const report = JSON.parse(fs.readFileSync(reportPath, 'utf-8'));
|
|
543
|
-
validJson = true;
|
|
544
|
-
hasActiveList = Array.isArray(report.activeAgents) && report.activeAgents.length > 0;
|
|
545
|
-
hasInactiveList = Array.isArray(report.inactiveAgents) && report.inactiveAgents.length > 0;
|
|
546
|
-
identifiedMaxInactive = JSON.stringify(report.inactiveAgents ?? []).toLowerCase().includes('max');
|
|
547
|
-
hasRecommendations = Array.isArray(report.recommendations) && report.recommendations.length > 0;
|
|
548
|
-
hasHealthStatus = typeof report.overallHealth === 'string' && report.overallHealth.length > 0;
|
|
549
|
-
// Check if stale tasks identified
|
|
550
|
-
const reportStr = JSON.stringify(report).toLowerCase();
|
|
551
|
-
identifiedStaleTasks = reportStr.includes('stale') || reportStr.includes('stuck') ||
|
|
552
|
-
reportStr.includes('3 hour') || reportStr.includes('login');
|
|
553
|
-
}
|
|
554
|
-
catch { /* invalid JSON */ }
|
|
555
|
-
}
|
|
556
|
-
const checks = [
|
|
557
|
-
{
|
|
558
|
-
name: 'read_context',
|
|
559
|
-
passed: readFile(all, 'CONTEXT.md'),
|
|
560
|
-
message: 'Should read CONTEXT.md',
|
|
561
|
-
},
|
|
562
|
-
{
|
|
563
|
-
name: 'used_get_team_status',
|
|
564
|
-
passed: usedGetStatus,
|
|
565
|
-
message: 'Should use get-team-status skill',
|
|
566
|
-
},
|
|
567
|
-
{
|
|
568
|
-
name: 'report_created',
|
|
569
|
-
passed: reportExists,
|
|
570
|
-
message: 'team-health.json should be created',
|
|
571
|
-
},
|
|
572
|
-
{
|
|
573
|
-
name: 'valid_json_report',
|
|
574
|
-
passed: validJson,
|
|
575
|
-
message: 'Report should be valid JSON',
|
|
576
|
-
},
|
|
577
|
-
];
|
|
578
|
-
const collaborationChecks = [
|
|
579
|
-
{
|
|
580
|
-
name: 'identified_inactive_member',
|
|
581
|
-
passed: identifiedMaxInactive,
|
|
582
|
-
message: 'Should identify Max as inactive',
|
|
583
|
-
},
|
|
584
|
-
{
|
|
585
|
-
name: 'identified_stale_tasks',
|
|
586
|
-
passed: identifiedStaleTasks,
|
|
587
|
-
message: 'Should identify stale/stuck tasks',
|
|
588
|
-
},
|
|
589
|
-
{
|
|
590
|
-
name: 'actionable_recommendations',
|
|
591
|
-
passed: hasRecommendations,
|
|
592
|
-
message: 'Should provide actionable recommendations',
|
|
593
|
-
},
|
|
594
|
-
{
|
|
595
|
-
name: 'overall_health_assessment',
|
|
596
|
-
passed: hasHealthStatus,
|
|
597
|
-
message: 'Should include overall health assessment',
|
|
598
|
-
},
|
|
599
|
-
];
|
|
600
|
-
return buildVerification(checks, collaborationChecks);
|
|
601
|
-
},
|
|
602
|
-
};
|
|
603
|
-
// ---------------------------------------------------------------------------
|
|
604
|
-
// L4-T1: Broken Project Structure (Trap)
|
|
605
|
-
// ---------------------------------------------------------------------------
|
|
606
|
-
/**
|
|
607
|
-
* L4-T1: The prompt says `src/` but the actual code is in `source/`.
|
|
608
|
-
*
|
|
609
|
-
* The agent must discover the non-standard structure and adapt.
|
|
610
|
-
* This is NOT mentioned in the prompt — it's a trap.
|
|
611
|
-
*/
|
|
612
|
-
const L4_T1_BROKEN_STRUCTURE = {
|
|
613
|
-
id: 'L4-T1',
|
|
614
|
-
level: 'L4',
|
|
615
|
-
title: 'Broken project structure (trap)',
|
|
616
|
-
prompt: 'Read CONTEXT.md. The team needs you to add a logging utility to this project. ' +
|
|
617
|
-
'Create `src/utils/logger.ts` with a structured logger (log, warn, error methods), ' +
|
|
618
|
-
'and `src/utils/logger.test.ts` with tests. Then run `npm test` to verify.',
|
|
619
|
-
maxSteps: MAX_TASK_STEPS,
|
|
620
|
-
timeoutMs: DEFAULT_TASK_TIMEOUT_MS,
|
|
621
|
-
expectedTools: ['read_file', 'write_file', 'bash'],
|
|
622
|
-
tags: ['trap', 'self-healing', 'resilience'],
|
|
623
|
-
multiAgent: true,
|
|
624
|
-
async setup(workDir) {
|
|
625
|
-
// Use custom setup — the trap is `source/` instead of `src/`
|
|
626
|
-
await setupEvalWorkspace(workDir, DEFAULT_EVAL_TEAM, { skipProjectFiles: true });
|
|
627
|
-
// Create `source/` directory (not `src/`)
|
|
628
|
-
fs.mkdirSync(path.join(workDir, 'source', 'services'), { recursive: true });
|
|
629
|
-
fs.mkdirSync(path.join(workDir, 'source', 'utils'), { recursive: true });
|
|
630
|
-
// Existing code in source/ (not src/)
|
|
631
|
-
fs.writeFileSync(path.join(workDir, 'source', 'services', 'data.service.ts'), `export function getData(): string[] {\n return ['item1', 'item2'];\n}\n`);
|
|
632
|
-
fs.writeFileSync(path.join(workDir, 'source', 'index.ts'), `export { getData } from './services/data.service.js';\n`);
|
|
633
|
-
// package.json references source/ not src/
|
|
634
|
-
fs.writeFileSync(path.join(workDir, 'package.json'), JSON.stringify({
|
|
635
|
-
name: 'eval-project',
|
|
636
|
-
version: '1.0.0',
|
|
637
|
-
type: 'module',
|
|
638
|
-
main: 'dist/index.js',
|
|
639
|
-
scripts: {
|
|
640
|
-
build: 'tsc --noEmit',
|
|
641
|
-
test: 'find source -name "*.test.ts" -exec echo "PASS:" {} \\; && echo "All tests passed" && exit 0',
|
|
642
|
-
},
|
|
643
|
-
}, null, 2));
|
|
644
|
-
// tsconfig points to source/
|
|
645
|
-
fs.writeFileSync(path.join(workDir, 'tsconfig.json'), JSON.stringify({
|
|
646
|
-
compilerOptions: {
|
|
647
|
-
target: 'ES2022',
|
|
648
|
-
module: 'ESNext',
|
|
649
|
-
moduleResolution: 'bundler',
|
|
650
|
-
strict: true,
|
|
651
|
-
outDir: './dist',
|
|
652
|
-
rootDir: './source',
|
|
653
|
-
},
|
|
654
|
-
include: ['source/**/*.ts'],
|
|
655
|
-
}, null, 2));
|
|
656
|
-
},
|
|
657
|
-
async verify(workDir, toolCalls) {
|
|
658
|
-
const all = getAllToolCalls(workDir, toolCalls);
|
|
659
|
-
// The agent should discover source/ instead of src/
|
|
660
|
-
// Either: (a) created in source/ to match project, or (b) fixed project to use src/
|
|
661
|
-
const loggerInSource = fs.existsSync(path.join(workDir, 'source', 'utils', 'logger.ts'));
|
|
662
|
-
const loggerInSrc = fs.existsSync(path.join(workDir, 'src', 'utils', 'logger.ts'));
|
|
663
|
-
const loggerCreated = loggerInSource || loggerInSrc;
|
|
664
|
-
const testInSource = fs.existsSync(path.join(workDir, 'source', 'utils', 'logger.test.ts'));
|
|
665
|
-
const testInSrc = fs.existsSync(path.join(workDir, 'src', 'utils', 'logger.test.ts'));
|
|
666
|
-
const testCreated = testInSource || testInSrc;
|
|
667
|
-
// Did agent discover the discrepancy?
|
|
668
|
-
const discoveredStructure = readFile(all, 'package.json') ||
|
|
669
|
-
readFile(all, 'tsconfig.json') ||
|
|
670
|
-
readFile(all, 'source/');
|
|
671
|
-
// If created in src/, check if project was fixed too
|
|
672
|
-
let adaptedCorrectly = false;
|
|
673
|
-
if (loggerInSource) {
|
|
674
|
-
// Adapted to existing structure — correct
|
|
675
|
-
adaptedCorrectly = true;
|
|
676
|
-
}
|
|
677
|
-
else if (loggerInSrc) {
|
|
678
|
-
// Created in src/ — only correct if tsconfig was updated too
|
|
679
|
-
const tsconfig = JSON.parse(fs.readFileSync(path.join(workDir, 'tsconfig.json'), 'utf-8'));
|
|
680
|
-
adaptedCorrectly = tsconfig.include?.some((p) => p.includes('src'));
|
|
681
|
-
}
|
|
682
|
-
// Check logger has required methods
|
|
683
|
-
let hasLogMethods = false;
|
|
684
|
-
const loggerPath = loggerInSource
|
|
685
|
-
? path.join(workDir, 'source', 'utils', 'logger.ts')
|
|
686
|
-
: path.join(workDir, 'src', 'utils', 'logger.ts');
|
|
687
|
-
if (fs.existsSync(loggerPath)) {
|
|
688
|
-
const content = fs.readFileSync(loggerPath, 'utf-8');
|
|
689
|
-
hasLogMethods = content.includes('log') && content.includes('error');
|
|
690
|
-
}
|
|
691
|
-
// Check if npm test was attempted
|
|
692
|
-
const attemptedTest = all.some((tc) => {
|
|
693
|
-
const argsStr = JSON.stringify(tc.args ?? {});
|
|
694
|
-
return argsStr.includes('npm test') || argsStr.includes('npm run test');
|
|
695
|
-
});
|
|
696
|
-
const checks = [
|
|
697
|
-
{
|
|
698
|
-
name: 'logger_created',
|
|
699
|
-
passed: loggerCreated,
|
|
700
|
-
message: 'Logger file should be created',
|
|
701
|
-
},
|
|
702
|
-
{
|
|
703
|
-
name: 'test_created',
|
|
704
|
-
passed: testCreated,
|
|
705
|
-
message: 'Logger test file should be created',
|
|
706
|
-
},
|
|
707
|
-
{
|
|
708
|
-
name: 'has_log_methods',
|
|
709
|
-
passed: hasLogMethods,
|
|
710
|
-
message: 'Logger should have log and error methods',
|
|
711
|
-
},
|
|
712
|
-
];
|
|
713
|
-
// Self-healing checks go into collaborationChecks — scored via D5/D6
|
|
714
|
-
const collaborationChecks = [
|
|
715
|
-
{
|
|
716
|
-
name: 'discovered_structure_discrepancy',
|
|
717
|
-
passed: discoveredStructure,
|
|
718
|
-
message: 'Should discover source/ vs src/ discrepancy (self-healing)',
|
|
719
|
-
},
|
|
720
|
-
{
|
|
721
|
-
name: 'adapted_to_correct_location',
|
|
722
|
-
passed: adaptedCorrectly,
|
|
723
|
-
message: 'Should place files in correct location or fix project config',
|
|
724
|
-
},
|
|
725
|
-
{
|
|
726
|
-
name: 'attempted_npm_test',
|
|
727
|
-
passed: attemptedTest,
|
|
728
|
-
message: 'Should attempt to run npm test to verify',
|
|
729
|
-
},
|
|
730
|
-
];
|
|
731
|
-
return buildVerification(checks, collaborationChecks);
|
|
732
|
-
},
|
|
733
|
-
};
|
|
734
|
-
// ---------------------------------------------------------------------------
|
|
735
|
-
// L4-T2: Missing Dependencies & Broken Build (Trap)
|
|
736
|
-
// ---------------------------------------------------------------------------
|
|
737
|
-
/**
|
|
738
|
-
* L4-T2: Build is broken with multiple hidden issues.
|
|
739
|
-
*
|
|
740
|
-
* The agent must investigate, diagnose, and fix without being told what's wrong.
|
|
741
|
-
*/
|
|
742
|
-
const L4_T2_BROKEN_BUILD = {
|
|
743
|
-
id: 'L4-T2',
|
|
744
|
-
level: 'L4',
|
|
745
|
-
title: 'Missing dependencies & broken build (trap)',
|
|
746
|
-
prompt: 'Read CONTEXT.md. A worker reported that the build is broken. ' +
|
|
747
|
-
'Investigate, fix the issues, and verify the build passes. ' +
|
|
748
|
-
'Then report the root causes via report-status.',
|
|
749
|
-
maxSteps: MAX_TASK_STEPS,
|
|
750
|
-
timeoutMs: DEFAULT_TASK_TIMEOUT_MS,
|
|
751
|
-
expectedTools: ['read_file', 'write_file', 'bash', 'edit_file'],
|
|
752
|
-
tags: ['trap', 'self-healing', 'debugging'],
|
|
753
|
-
multiAgent: true,
|
|
754
|
-
async setup(workDir) {
|
|
755
|
-
await setupEvalWorkspace(workDir, DEFAULT_EVAL_TEAM, { skipProjectFiles: true });
|
|
756
|
-
// Source files with intentional problems
|
|
757
|
-
fs.mkdirSync(path.join(workDir, 'src', 'services'), { recursive: true });
|
|
758
|
-
fs.mkdirSync(path.join(workDir, 'src', 'controllers'), { recursive: true });
|
|
759
|
-
// Problem 1: file imports from non-existent module
|
|
760
|
-
fs.writeFileSync(path.join(workDir, 'src', 'services', 'user.service.ts'), `import { hashPassword } from './missing-module.js';\n\nexport interface User {\n id: string;\n name: string;\n email: string;\n}\n\nexport function createUser(name: string, email: string): User {\n return { id: String(Date.now()), name, email };\n}\n\nexport function validateEmail(email: any): boolean {\n return email.includes('@');\n}\n`);
|
|
761
|
-
// Problem 2: uses `any` with strict mode on
|
|
762
|
-
fs.writeFileSync(path.join(workDir, 'src', 'controllers', 'user.controller.ts'), `import { createUser, validateEmail } from '../services/user.service.js';\n\nexport function handleCreateUser(req: any, res: any): void {\n try {\n const { name, email } = req.body;\n if (!validateEmail(email)) {\n res.status(400).json({ error: 'Invalid email' });\n return;\n }\n const user = createUser(name, email);\n res.json(user);\n } catch (err) {\n res.status(500).json({ error: 'Internal error' });\n }\n}\n`);
|
|
763
|
-
// Problem 3: circular import
|
|
764
|
-
fs.writeFileSync(path.join(workDir, 'src', 'index.ts'), `import { handleCreateUser } from './controllers/user.controller.js';\nimport { createUser } from './services/user.service.js';\n\nexport { handleCreateUser, createUser };\n`);
|
|
765
|
-
// package.json — no node_modules
|
|
766
|
-
fs.writeFileSync(path.join(workDir, 'package.json'), JSON.stringify({
|
|
767
|
-
name: 'eval-broken-build',
|
|
768
|
-
version: '1.0.0',
|
|
769
|
-
type: 'module',
|
|
770
|
-
dependencies: {
|
|
771
|
-
'express': '4.21.0',
|
|
772
|
-
'zod': '3.24.0',
|
|
773
|
-
},
|
|
774
|
-
scripts: {
|
|
775
|
-
build: 'tsc --noEmit',
|
|
776
|
-
test: 'echo "tests pass" && exit 0',
|
|
777
|
-
},
|
|
778
|
-
}, null, 2));
|
|
779
|
-
// tsconfig with strict: true
|
|
780
|
-
fs.writeFileSync(path.join(workDir, 'tsconfig.json'), JSON.stringify({
|
|
781
|
-
compilerOptions: {
|
|
782
|
-
target: 'ES2022',
|
|
783
|
-
module: 'ESNext',
|
|
784
|
-
moduleResolution: 'bundler',
|
|
785
|
-
strict: true,
|
|
786
|
-
noEmit: true,
|
|
787
|
-
esModuleInterop: true,
|
|
788
|
-
skipLibCheck: true,
|
|
789
|
-
},
|
|
790
|
-
include: ['src/**/*.ts'],
|
|
791
|
-
}, null, 2));
|
|
792
|
-
},
|
|
793
|
-
async verify(workDir, toolCalls) {
|
|
794
|
-
const all = getAllToolCalls(workDir, toolCalls);
|
|
795
|
-
// Check if agent attempted the build
|
|
796
|
-
const attemptedBuild = all.some((tc) => {
|
|
797
|
-
const argsStr = JSON.stringify(tc.args ?? {});
|
|
798
|
-
return argsStr.includes('npm run build') || argsStr.includes('tsc');
|
|
799
|
-
});
|
|
800
|
-
// Check fixes
|
|
801
|
-
const userServicePath = path.join(workDir, 'src', 'services', 'user.service.ts');
|
|
802
|
-
const userControllerPath = path.join(workDir, 'src', 'controllers', 'user.controller.ts');
|
|
803
|
-
let fixedMissingImport = false;
|
|
804
|
-
let fixedAnyTypes = false;
|
|
805
|
-
if (fs.existsSync(userServicePath)) {
|
|
806
|
-
const content = fs.readFileSync(userServicePath, 'utf-8');
|
|
807
|
-
// Either removed the import, created the missing file, or changed the import
|
|
808
|
-
fixedMissingImport = !content.includes('missing-module') ||
|
|
809
|
-
fs.existsSync(path.join(workDir, 'src', 'services', 'missing-module.ts'));
|
|
810
|
-
// Check if `any` was replaced in validateEmail
|
|
811
|
-
fixedAnyTypes = !content.includes(': any');
|
|
812
|
-
}
|
|
813
|
-
if (fs.existsSync(userControllerPath)) {
|
|
814
|
-
const controllerContent = fs.readFileSync(userControllerPath, 'utf-8');
|
|
815
|
-
if (!controllerContent.includes(': any')) {
|
|
816
|
-
fixedAnyTypes = true;
|
|
817
|
-
}
|
|
818
|
-
}
|
|
819
|
-
// Check if npm install was attempted (for missing node_modules)
|
|
820
|
-
const attemptedInstall = all.some((tc) => {
|
|
821
|
-
const argsStr = JSON.stringify(tc.args ?? {});
|
|
822
|
-
return argsStr.includes('npm install') || argsStr.includes('npm i');
|
|
823
|
-
});
|
|
824
|
-
// Check report
|
|
825
|
-
const usedReport = usedSkill(all, 'report-status');
|
|
826
|
-
const reportsDir = path.join(workDir, '.crewly', 'reports');
|
|
827
|
-
const hasReport = usedReport || (fs.existsSync(reportsDir) &&
|
|
828
|
-
fs.readdirSync(reportsDir).length > 0);
|
|
829
|
-
// Count issues identified (at least 2 of 4)
|
|
830
|
-
let issuesFound = 0;
|
|
831
|
-
if (fixedMissingImport)
|
|
832
|
-
issuesFound++;
|
|
833
|
-
if (fixedAnyTypes)
|
|
834
|
-
issuesFound++;
|
|
835
|
-
if (attemptedInstall)
|
|
836
|
-
issuesFound++;
|
|
837
|
-
// Check if circular import was noticed (harder to detect)
|
|
838
|
-
const checks = [
|
|
839
|
-
{
|
|
840
|
-
name: 'attempted_build',
|
|
841
|
-
passed: attemptedBuild,
|
|
842
|
-
message: 'Should run or attempt the build to discover failures',
|
|
843
|
-
},
|
|
844
|
-
{
|
|
845
|
-
name: 'fixed_missing_import',
|
|
846
|
-
passed: fixedMissingImport,
|
|
847
|
-
message: 'Should fix the missing-module import',
|
|
848
|
-
},
|
|
849
|
-
{
|
|
850
|
-
name: 'fixed_any_types',
|
|
851
|
-
passed: fixedAnyTypes,
|
|
852
|
-
message: 'Should fix `any` types (strict mode)',
|
|
853
|
-
},
|
|
854
|
-
];
|
|
855
|
-
const collaborationChecks = [
|
|
856
|
-
{
|
|
857
|
-
name: 'identified_multiple_issues',
|
|
858
|
-
passed: issuesFound >= 2,
|
|
859
|
-
message: 'Should identify at least 2 of the 4 issues',
|
|
860
|
-
},
|
|
861
|
-
{
|
|
862
|
-
name: 'attempted_npm_install',
|
|
863
|
-
passed: attemptedInstall,
|
|
864
|
-
message: 'Should run npm install for missing node_modules',
|
|
865
|
-
},
|
|
866
|
-
{
|
|
867
|
-
name: 'reported_root_causes',
|
|
868
|
-
passed: hasReport,
|
|
869
|
-
message: 'Should report root causes via report-status',
|
|
870
|
-
},
|
|
871
|
-
{
|
|
872
|
-
name: 'did_not_ignore_errors',
|
|
873
|
-
passed: attemptedBuild && issuesFound > 0,
|
|
874
|
-
message: 'Should not silently ignore build errors',
|
|
875
|
-
},
|
|
876
|
-
];
|
|
877
|
-
return buildVerification(checks, collaborationChecks);
|
|
878
|
-
},
|
|
879
|
-
};
|
|
880
|
-
// ---------------------------------------------------------------------------
|
|
881
|
-
// L4-T3: Conflicting State & Data Integrity (Trap)
|
|
882
|
-
// ---------------------------------------------------------------------------
|
|
883
|
-
/**
|
|
884
|
-
* L4-T3: Contradictory task state and malformed config.
|
|
885
|
-
*
|
|
886
|
-
* The agent must handle conflicting data, parse errors, and make
|
|
887
|
-
* reasonable decisions despite inconsistencies.
|
|
888
|
-
*/
|
|
889
|
-
const L4_T3_CONFLICTING_STATE = {
|
|
890
|
-
id: 'L4-T3',
|
|
891
|
-
level: 'L4',
|
|
892
|
-
title: 'Conflicting state & data integrity (trap)',
|
|
893
|
-
prompt: 'Read CONTEXT.md. Your orchestrator has asked you to assign task-007 to an ' +
|
|
894
|
-
'available developer. Use delegate-task to make the assignment and update the task status.',
|
|
895
|
-
maxSteps: MAX_TASK_STEPS,
|
|
896
|
-
timeoutMs: DEFAULT_TASK_TIMEOUT_MS,
|
|
897
|
-
expectedTools: ['read_file', 'bash', 'write_file'],
|
|
898
|
-
tags: ['trap', 'self-healing', 'data-integrity'],
|
|
899
|
-
multiAgent: true,
|
|
900
|
-
async setup(workDir) {
|
|
901
|
-
// Custom team config with traps
|
|
902
|
-
const trapTeam = {
|
|
903
|
-
agentName: 'Sam',
|
|
904
|
-
agentRole: 'Team Lead',
|
|
905
|
-
teamName: 'Eval Product Team',
|
|
906
|
-
teamId: 'eval-team-001',
|
|
907
|
-
members: [
|
|
908
|
-
{
|
|
909
|
-
name: 'Sam',
|
|
910
|
-
role: 'Team Lead',
|
|
911
|
-
sessionName: 'eval-tl-sam',
|
|
912
|
-
agentStatus: 'active',
|
|
913
|
-
workingStatus: 'idle',
|
|
914
|
-
},
|
|
915
|
-
{
|
|
916
|
-
name: 'Leo',
|
|
917
|
-
role: 'Developer',
|
|
918
|
-
sessionName: 'eval-dev-leo',
|
|
919
|
-
agentStatus: 'active',
|
|
920
|
-
workingStatus: 'overloaded',
|
|
921
|
-
},
|
|
922
|
-
{
|
|
923
|
-
name: 'Max',
|
|
924
|
-
role: 'Developer',
|
|
925
|
-
sessionName: 'eval-dev-max',
|
|
926
|
-
agentStatus: 'inactive',
|
|
927
|
-
workingStatus: 'idle',
|
|
928
|
-
},
|
|
929
|
-
],
|
|
930
|
-
};
|
|
931
|
-
await setupEvalWorkspace(workDir, trapTeam);
|
|
932
|
-
// TRAP 1: task-007.md says "open" but a delegation already exists
|
|
933
|
-
fs.writeFileSync(path.join(workDir, '.crewly', 'tasks', 'task-007.md'), `---\nid: task-007\ntitle: Implement caching layer\nstatus: open\nassignee: null\npriority: high\n---\n\n# Implement Caching Layer\n\nAdd Redis caching to frequently accessed endpoints.\n`);
|
|
934
|
-
// Previous delegation to Max (who is now inactive) — contradicts "open" status
|
|
935
|
-
fs.writeFileSync(path.join(workDir, '.crewly', 'tasks', 'task-007-delegation.json'), JSON.stringify({
|
|
936
|
-
taskId: 'task-007',
|
|
937
|
-
delegatedTo: 'eval-dev-max',
|
|
938
|
-
task: 'Implement caching layer',
|
|
939
|
-
priority: 'high',
|
|
940
|
-
delegatedAt: new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString(),
|
|
941
|
-
delegatedBy: 'eval-tl-sam',
|
|
942
|
-
}, null, 2));
|
|
943
|
-
// TRAP 2: Duplicate task file with different description
|
|
944
|
-
fs.writeFileSync(path.join(workDir, '.crewly', 'tasks', 'task-007-duplicate.md'), `---\nid: task-007\ntitle: Implement caching layer v2\nstatus: open\nassignee: null\npriority: medium\n---\n\n# Implement Caching Layer (V2)\n\nUse in-memory cache instead of Redis. Different requirements from task-007.md.\n`);
|
|
945
|
-
// TRAP 3: Malformed team-config.json (trailing comma = invalid JSON)
|
|
946
|
-
const configPath = path.join(workDir, '.crewly', 'teams', 'team-config.json');
|
|
947
|
-
const validConfig = fs.readFileSync(configPath, 'utf-8');
|
|
948
|
-
// Insert trailing comma before the closing brace of the last member
|
|
949
|
-
const malformed = validConfig.replace(/("workingStatus":\s*"idle"\s*)\n(\s*}\s*\n\s*\]\s*\n\s*})/, '$1,\n$2');
|
|
950
|
-
fs.writeFileSync(configPath, malformed);
|
|
951
|
-
},
|
|
952
|
-
async verify(workDir, toolCalls) {
|
|
953
|
-
const all = getAllToolCalls(workDir, toolCalls);
|
|
954
|
-
// Check if agent discovered the conflicting state
|
|
955
|
-
const readTask007 = readFile(all, 'task-007');
|
|
956
|
-
const readTeamConfig = readFile(all, 'team-config') || usedSkill(all, 'get-team-status');
|
|
957
|
-
// Check delegation — should pick an appropriate worker
|
|
958
|
-
const usedDelegate = usedSkill(all, 'delegate-task');
|
|
959
|
-
const targets = getDelegationTargets(all);
|
|
960
|
-
// Should NOT delegate to Max (inactive) or blindly to overloaded Leo
|
|
961
|
-
const avoidedInactive = !targets.some((t) => t.toLowerCase().includes('max'));
|
|
962
|
-
// Leo is overloaded but is the only active dev — agent should either
|
|
963
|
-
// delegate to Leo with acknowledgment, or note the constraint
|
|
964
|
-
const madeReasonableDecision = usedDelegate || targets.length > 0;
|
|
965
|
-
// Check if agent handled the malformed JSON
|
|
966
|
-
// Evidence: agent read the file and either fixed it, worked around it,
|
|
967
|
-
// or noted the error
|
|
968
|
-
const handledMalformedJson = readTeamConfig; // At minimum tried to read it
|
|
969
|
-
// Check if agent noted the conflicting state
|
|
970
|
-
const reportsDir = path.join(workDir, '.crewly', 'reports');
|
|
971
|
-
const hasReport = (fs.existsSync(reportsDir) && fs.readdirSync(reportsDir).length > 0) ||
|
|
972
|
-
usedSkill(all, 'report-status');
|
|
973
|
-
// Check for evidence of addressing duplicates
|
|
974
|
-
const readDuplicate = readFile(all, 'task-007-duplicate') || readFile(all, 'duplicate');
|
|
975
|
-
const checks = [
|
|
976
|
-
{
|
|
977
|
-
name: 'read_context',
|
|
978
|
-
passed: readFile(all, 'CONTEXT.md'),
|
|
979
|
-
message: 'Should read CONTEXT.md',
|
|
980
|
-
},
|
|
981
|
-
{
|
|
982
|
-
name: 'read_task',
|
|
983
|
-
passed: readTask007,
|
|
984
|
-
message: 'Should read task-007 file(s)',
|
|
985
|
-
},
|
|
986
|
-
{
|
|
987
|
-
name: 'used_delegate_task',
|
|
988
|
-
passed: usedDelegate,
|
|
989
|
-
message: 'Should use delegate-task skill',
|
|
990
|
-
},
|
|
991
|
-
];
|
|
992
|
-
const collaborationChecks = [
|
|
993
|
-
{
|
|
994
|
-
name: 'handled_conflicting_state',
|
|
995
|
-
passed: readTask007 && readTeamConfig,
|
|
996
|
-
message: 'Should discover conflicting state (open status vs existing delegation)',
|
|
997
|
-
},
|
|
998
|
-
{
|
|
999
|
-
name: 'handled_malformed_json',
|
|
1000
|
-
passed: handledMalformedJson,
|
|
1001
|
-
message: 'Should handle malformed team-config.json',
|
|
1002
|
-
},
|
|
1003
|
-
{
|
|
1004
|
-
name: 'avoided_inactive_worker',
|
|
1005
|
-
passed: avoidedInactive,
|
|
1006
|
-
message: 'Should not delegate to Max (inactive)',
|
|
1007
|
-
},
|
|
1008
|
-
{
|
|
1009
|
-
name: 'made_reasonable_decision',
|
|
1010
|
-
passed: madeReasonableDecision,
|
|
1011
|
-
message: 'Should make a reasonable delegation despite contradictions',
|
|
1012
|
-
},
|
|
1013
|
-
{
|
|
1014
|
-
name: 'reported_inconsistencies',
|
|
1015
|
-
passed: hasReport,
|
|
1016
|
-
message: 'Should report what inconsistencies were found',
|
|
1017
|
-
},
|
|
1018
|
-
];
|
|
1019
|
-
return buildVerification(checks, collaborationChecks);
|
|
1020
|
-
},
|
|
1021
|
-
};
|
|
1022
|
-
// ---------------------------------------------------------------------------
|
|
1023
|
-
// Export
|
|
1024
|
-
// ---------------------------------------------------------------------------
|
|
1025
|
-
/** All L4 evaluation tasks (5 collaboration + 3 trap/resilience) */
|
|
1026
|
-
export const L4_TASKS = [
|
|
1027
|
-
L4_C1_TRIAGE_DELEGATE,
|
|
1028
|
-
L4_C2_KNOWLEDGE_DRIVEN,
|
|
1029
|
-
L4_C3_FAULT_RECOVERY,
|
|
1030
|
-
L4_C4_COORDINATED_FEATURE,
|
|
1031
|
-
L4_C5_TEAM_HEALTH,
|
|
1032
|
-
L4_T1_BROKEN_STRUCTURE,
|
|
1033
|
-
L4_T2_BROKEN_BUILD,
|
|
1034
|
-
L4_T3_CONFLICTING_STATE,
|
|
1035
|
-
];
|
|
1036
|
-
//# sourceMappingURL=l4-tasks.js.map
|