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
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ESM/CJS-dual-mode helpers for the lazy `nodeRequire` pattern.
|
|
3
|
+
*
|
|
4
|
+
* Background
|
|
5
|
+
* ----------
|
|
6
|
+
* Several services in this codebase use the canonical `nodeRequire` pattern
|
|
7
|
+
* (commit `070cd3e5` — `fix(esm): anchor createRequire to process.argv[1]`)
|
|
8
|
+
* to lazily load modules without forcing every test that transitively imports
|
|
9
|
+
* them to mock the dependency. The pattern looks like:
|
|
10
|
+
*
|
|
11
|
+
* const nodeRequire: NodeRequire =
|
|
12
|
+
* typeof require === 'function'
|
|
13
|
+
* ? require
|
|
14
|
+
* : createRequire(pathToFileURL(process.argv[1] || process.cwd()).href);
|
|
15
|
+
*
|
|
16
|
+
* That pattern works **only** for npm-package targets (e.g.
|
|
17
|
+
* `nodeRequire('better-sqlite3')`) — Node's resolver walks UP from the anchor
|
|
18
|
+
* (`process.argv[1]`) to find `node_modules`, so the anchor's exact location
|
|
19
|
+
* does not matter for package resolution.
|
|
20
|
+
*
|
|
21
|
+
* It silently breaks for **relative project paths** like
|
|
22
|
+
* `nodeRequire('../v3/request.service.js')`. In production ESM, the relative
|
|
23
|
+
* spec is resolved against `process.argv[1]` (the entry script) — NOT against
|
|
24
|
+
* the calling module — so the require fails with `Cannot find module …`. In
|
|
25
|
+
* tests (ts-jest CJS transpile) the per-module `require` parameter is used
|
|
26
|
+
* instead, so the relative spec resolves correctly against the calling file
|
|
27
|
+
* and the bug stays hidden.
|
|
28
|
+
*
|
|
29
|
+
* Symptom that motivated this helper: `core/get-my-active-work` returned 500
|
|
30
|
+
* with "Cannot find module '../v3/request.service.js'" because
|
|
31
|
+
* `ActiveWorkBriefingService.getInstance()` called
|
|
32
|
+
* `nodeRequire('../v3/request.service.js')` from
|
|
33
|
+
* `services/agent/active-work-briefing.service.js` while `nodeRequire` was
|
|
34
|
+
* anchored to `dist/backend/backend/src/index.js`.
|
|
35
|
+
*
|
|
36
|
+
* What this helper does
|
|
37
|
+
* ---------------------
|
|
38
|
+
* `resolveProjectModulePath(testRelativePath, prodPathFromEntryDir)` returns:
|
|
39
|
+
*
|
|
40
|
+
* 1. In test mode (`typeof require === 'function'` — ts-jest CJS) — the
|
|
41
|
+
* `testRelativePath` unchanged, so the per-module CJS require resolves it
|
|
42
|
+
* relative to the calling file (its existing, working behavior).
|
|
43
|
+
* 2. In production ESM — an absolute path computed by joining
|
|
44
|
+
* `path.dirname(process.argv[1])` with `prodPathFromEntryDir`.
|
|
45
|
+
* Absolute paths are accepted by `nodeRequire` regardless of anchor.
|
|
46
|
+
*
|
|
47
|
+
* Why this is two-arg rather than one
|
|
48
|
+
* -----------------------------------
|
|
49
|
+
* We considered single-arg variants:
|
|
50
|
+
* • `import.meta.url` — triggers TS1343 under ts-jest's CJS target. Even with
|
|
51
|
+
* `// @ts-expect-error`, ts-jest's transpile may still fail at parse.
|
|
52
|
+
* • `new Function('return import.meta.url')()` — was tried (PR #323) and is
|
|
53
|
+
* forbidden — `new Function` evaluates in non-module scope where
|
|
54
|
+
* `import.meta` is a SyntaxError. Crashed production at startup.
|
|
55
|
+
* • `eval('import.meta.url')` — works at runtime via direct-eval scope
|
|
56
|
+
* inheritance, but trips ESLint `no-eval` and is fragile across engines.
|
|
57
|
+
* • Stack-trace introspection — gross and slow.
|
|
58
|
+
*
|
|
59
|
+
* Asking the caller to spell out **two** equivalent paths (one usable from the
|
|
60
|
+
* caller's perspective, one usable from the entry script's perspective) is
|
|
61
|
+
* verbose but unambiguous, parse-clean under both TS targets, and free of any
|
|
62
|
+
* runtime tricks.
|
|
63
|
+
*
|
|
64
|
+
* Usage
|
|
65
|
+
* -----
|
|
66
|
+
* // Caller is at `backend/src/services/agent/active-work-briefing.service.ts`
|
|
67
|
+
* // Target is at `backend/src/services/v3/request.service.ts`
|
|
68
|
+
* // Entry script (process.argv[1]) is `dist/backend/backend/src/index.js`
|
|
69
|
+
* // → from the caller's perspective: `../v3/request.service.js`
|
|
70
|
+
* // → from the entry-script-dir's perspective: `services/v3/request.service.js`
|
|
71
|
+
*
|
|
72
|
+
* const spec = resolveProjectModulePath(
|
|
73
|
+
* '../v3/request.service.js',
|
|
74
|
+
* 'services/v3/request.service.js',
|
|
75
|
+
* );
|
|
76
|
+
* const { RequestService } = nodeRequire(spec);
|
|
77
|
+
*
|
|
78
|
+
* Test guard
|
|
79
|
+
* ----------
|
|
80
|
+
* `esm-require.utils.test.ts` exercises both branches and locks the contract
|
|
81
|
+
* (test branch ↔ untouched relative path; prod branch ↔ absolute path joined
|
|
82
|
+
* to `process.argv[1]`'s dirname).
|
|
83
|
+
*
|
|
84
|
+
* @module utils/esm-require.utils
|
|
85
|
+
*/
|
|
86
|
+
import path from 'path';
|
|
87
|
+
/**
|
|
88
|
+
* Resolves a project-relative require spec to a string safe to pass to
|
|
89
|
+
* `nodeRequire` in both ts-jest CJS test mode and production ESM mode.
|
|
90
|
+
*
|
|
91
|
+
* @param testRelativePath - The require spec written from the calling file's
|
|
92
|
+
* perspective. Used verbatim in test mode (ts-jest CJS) where each module
|
|
93
|
+
* gets its own `require` and relative resolution Just Works. Example:
|
|
94
|
+
* `'../v3/request.service.js'`.
|
|
95
|
+
* @param prodPathFromEntryDir - The require spec rewritten as a path under
|
|
96
|
+
* `path.dirname(process.argv[1])`. Used in production ESM where
|
|
97
|
+
* `nodeRequire` is anchored to the entry script. Example:
|
|
98
|
+
* `'services/v3/request.service.js'` (under `dist/backend/backend/src/`).
|
|
99
|
+
* @returns A string suitable for `nodeRequire(...)`.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const { RequestService } = nodeRequire(
|
|
104
|
+
* resolveProjectModulePath(
|
|
105
|
+
* '../v3/request.service.js',
|
|
106
|
+
* 'services/v3/request.service.js',
|
|
107
|
+
* ),
|
|
108
|
+
* );
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export function resolveProjectModulePath(testRelativePath, prodPathFromEntryDir) {
|
|
112
|
+
// The same `typeof require` probe the canonical `nodeRequire` pattern uses.
|
|
113
|
+
// Under ts-jest's CJS transpile, the per-module `require` parameter is
|
|
114
|
+
// defined and is the correct anchor for relative resolution. Under
|
|
115
|
+
// production ESM, `require` is undefined globally and we must hand
|
|
116
|
+
// `nodeRequire` an absolute path.
|
|
117
|
+
if (typeof require === 'function') {
|
|
118
|
+
return testRelativePath;
|
|
119
|
+
}
|
|
120
|
+
const entryScript = process.argv[1] || process.cwd();
|
|
121
|
+
const entryDir = path.dirname(entryScript);
|
|
122
|
+
return path.join(entryDir, prodPathFromEntryDir);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=esm-require.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esm-require.utils.js","sourceRoot":"","sources":["../../../../../backend/src/utils/esm-require.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,wBAAwB,CACtC,gBAAwB,EACxB,oBAA4B;IAE5B,4EAA4E;IAC5E,uEAAuE;IACvE,mEAAmE;IACnE,mEAAmE;IACnE,kCAAkC;IAClC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integrity-Guarded Atomic Write Utilities
|
|
3
|
+
*
|
|
4
|
+
* Wraps {@link atomicWriteJson} with a write-time integrity invariant
|
|
5
|
+
* (a "decrease-guard"): rejects suspicious writes that would persist a
|
|
6
|
+
* collection that has shrunk too aggressively versus the on-disk state.
|
|
7
|
+
*
|
|
8
|
+
* **Why this exists**
|
|
9
|
+
*
|
|
10
|
+
* On 2026-05-03, a backend restart corrupted `~/.crewly/teams.json` and
|
|
11
|
+
* every per-project `teams/{id}/config.json` to `teams: []`. Atomic writes
|
|
12
|
+
* already covered the *transactional* side of the persistence layer, but
|
|
13
|
+
* the gap was at the *semantic* level — any code path that emitted
|
|
14
|
+
* `teams: []` (whether via race during shutdown, destructive migration, or
|
|
15
|
+
* cache nuke + flush) would happily atomic-write the empty state and
|
|
16
|
+
* overwrite the single-snapshot backup as well.
|
|
17
|
+
*
|
|
18
|
+
* This utility closes that gap by reading the existing on-disk count
|
|
19
|
+
* before every aggregate write and aborting if the count would drop from
|
|
20
|
+
* N>0 to 0 (or by an unacceptable percentage) without explicit operator
|
|
21
|
+
* intent. Callers who legitimately want to clear a collection pass
|
|
22
|
+
* `allowExplicitDelete: true`.
|
|
23
|
+
*
|
|
24
|
+
* **Design contract**
|
|
25
|
+
*
|
|
26
|
+
* - **Failure mode**: integrity violations throw {@link IntegrityViolationError}
|
|
27
|
+
* so the failure surfaces loudly instead of being silently swallowed.
|
|
28
|
+
* Callers that prefer "log + continue" semantics should wrap with their
|
|
29
|
+
* own try/catch.
|
|
30
|
+
* - **First-ever write** (no prior file) is always allowed — `prevCount = 0`,
|
|
31
|
+
* no decrease.
|
|
32
|
+
* - **Read failure**: if the prior file exists but cannot be read or parsed,
|
|
33
|
+
* the guard treats `prevCount` as `null` and proceeds with the write
|
|
34
|
+
* (a corrupted prior file should not block recovery).
|
|
35
|
+
*
|
|
36
|
+
* @module utils/integrity-guarded-write.utils
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* Thrown when a guarded write is rejected because it would shrink the
|
|
40
|
+
* persisted collection past the decrease threshold without explicit
|
|
41
|
+
* operator opt-in.
|
|
42
|
+
*
|
|
43
|
+
* Carries diagnostic metadata (path, prevCount, nextCount, reason) for
|
|
44
|
+
* structured logging and debugging.
|
|
45
|
+
*/
|
|
46
|
+
export declare class IntegrityViolationError extends Error {
|
|
47
|
+
/** Absolute path of the file the rejected write targeted */
|
|
48
|
+
readonly path: string;
|
|
49
|
+
/** Item count read from the prior on-disk state */
|
|
50
|
+
readonly prevCount: number;
|
|
51
|
+
/** Item count of the rejected next state */
|
|
52
|
+
readonly nextCount: number;
|
|
53
|
+
/** Machine-readable reason code */
|
|
54
|
+
readonly reason: 'collapse-to-empty' | 'decrease-exceeds-threshold';
|
|
55
|
+
/**
|
|
56
|
+
* @param message - Human-readable error message
|
|
57
|
+
* @param details - Diagnostic metadata
|
|
58
|
+
*/
|
|
59
|
+
constructor(message: string, details: {
|
|
60
|
+
path: string;
|
|
61
|
+
prevCount: number;
|
|
62
|
+
nextCount: number;
|
|
63
|
+
reason: IntegrityViolationError['reason'];
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Options for {@link atomicWriteJsonWithGuard}.
|
|
68
|
+
*/
|
|
69
|
+
export interface IntegrityGuardOptions<T> {
|
|
70
|
+
/**
|
|
71
|
+
* Function that extracts the "item count" from a value (parsed prior
|
|
72
|
+
* state or proposed next state). Defaults to `(d) => Array.isArray(d) ? d.length : 0`,
|
|
73
|
+
* suitable for plain array-shaped collections.
|
|
74
|
+
*/
|
|
75
|
+
countOf?: (data: T) => number;
|
|
76
|
+
/**
|
|
77
|
+
* Maximum allowed decrease as a percentage of the prior count.
|
|
78
|
+
* Default 50 — i.e., next count must be ≥ ceil(prevCount / 2).
|
|
79
|
+
* Pass 100 to allow any decrease (effectively only the
|
|
80
|
+
* collapse-to-empty branch fires).
|
|
81
|
+
*/
|
|
82
|
+
maxDecreasePct?: number;
|
|
83
|
+
/**
|
|
84
|
+
* If true, bypass the decrease and collapse-to-empty guards. Use this
|
|
85
|
+
* for legitimate "clear all" or "delete N" operations where the caller
|
|
86
|
+
* has confirmed operator intent.
|
|
87
|
+
*/
|
|
88
|
+
allowExplicitDelete?: boolean;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Atomically write a JSON file, rejecting writes that would shrink an
|
|
92
|
+
* existing collection past the decrease threshold without explicit opt-in.
|
|
93
|
+
*
|
|
94
|
+
* **Behavior**:
|
|
95
|
+
* 1. If the destination file does not exist → first-ever write → proceed.
|
|
96
|
+
* 2. If the prior file exists but cannot be read/parsed → log warning,
|
|
97
|
+
* proceed (corrupted prior should not block recovery).
|
|
98
|
+
* 3. If `prevCount > 0 && nextCount === 0 && !allowExplicitDelete`
|
|
99
|
+
* → throw {@link IntegrityViolationError} with `reason: 'collapse-to-empty'`.
|
|
100
|
+
* 4. If `nextCount < prevCount * (1 - maxDecreasePct/100) && !allowExplicitDelete`
|
|
101
|
+
* → throw {@link IntegrityViolationError} with `reason: 'decrease-exceeds-threshold'`.
|
|
102
|
+
* 5. Otherwise → call {@link atomicWriteJson}.
|
|
103
|
+
*
|
|
104
|
+
* @param filePath - Destination JSON file path
|
|
105
|
+
* @param next - Value to serialize and write
|
|
106
|
+
* @param opts - Guard configuration
|
|
107
|
+
* @throws {IntegrityViolationError} if the guard rejects the write
|
|
108
|
+
* @throws The underlying fs error if the atomic write itself fails
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* await atomicWriteJsonWithGuard(teamsPath, teams, {
|
|
113
|
+
* countOf: (t) => t.length,
|
|
114
|
+
* maxDecreasePct: 50,
|
|
115
|
+
* });
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
export declare function atomicWriteJsonWithGuard<T>(filePath: string, next: T, opts?: IntegrityGuardOptions<T>): Promise<void>;
|
|
119
|
+
//# sourceMappingURL=integrity-guarded-write.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrity-guarded-write.utils.d.ts","sourceRoot":"","sources":["../../../../../backend/src/utils/integrity-guarded-write.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AA4BH;;;;;;;GAOG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,4BAA4B,CAAC;IAEpE;;;OAGG;gBAED,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAA;KAAE;CAS7G;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,CAAC,EACP,IAAI,GAAE,qBAAqB,CAAC,CAAC,CAAM,GAClC,OAAO,CAAC,IAAI,CAAC,CAgEf"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integrity-Guarded Atomic Write Utilities
|
|
3
|
+
*
|
|
4
|
+
* Wraps {@link atomicWriteJson} with a write-time integrity invariant
|
|
5
|
+
* (a "decrease-guard"): rejects suspicious writes that would persist a
|
|
6
|
+
* collection that has shrunk too aggressively versus the on-disk state.
|
|
7
|
+
*
|
|
8
|
+
* **Why this exists**
|
|
9
|
+
*
|
|
10
|
+
* On 2026-05-03, a backend restart corrupted `~/.crewly/teams.json` and
|
|
11
|
+
* every per-project `teams/{id}/config.json` to `teams: []`. Atomic writes
|
|
12
|
+
* already covered the *transactional* side of the persistence layer, but
|
|
13
|
+
* the gap was at the *semantic* level — any code path that emitted
|
|
14
|
+
* `teams: []` (whether via race during shutdown, destructive migration, or
|
|
15
|
+
* cache nuke + flush) would happily atomic-write the empty state and
|
|
16
|
+
* overwrite the single-snapshot backup as well.
|
|
17
|
+
*
|
|
18
|
+
* This utility closes that gap by reading the existing on-disk count
|
|
19
|
+
* before every aggregate write and aborting if the count would drop from
|
|
20
|
+
* N>0 to 0 (or by an unacceptable percentage) without explicit operator
|
|
21
|
+
* intent. Callers who legitimately want to clear a collection pass
|
|
22
|
+
* `allowExplicitDelete: true`.
|
|
23
|
+
*
|
|
24
|
+
* **Design contract**
|
|
25
|
+
*
|
|
26
|
+
* - **Failure mode**: integrity violations throw {@link IntegrityViolationError}
|
|
27
|
+
* so the failure surfaces loudly instead of being silently swallowed.
|
|
28
|
+
* Callers that prefer "log + continue" semantics should wrap with their
|
|
29
|
+
* own try/catch.
|
|
30
|
+
* - **First-ever write** (no prior file) is always allowed — `prevCount = 0`,
|
|
31
|
+
* no decrease.
|
|
32
|
+
* - **Read failure**: if the prior file exists but cannot be read or parsed,
|
|
33
|
+
* the guard treats `prevCount` as `null` and proceeds with the write
|
|
34
|
+
* (a corrupted prior file should not block recovery).
|
|
35
|
+
*
|
|
36
|
+
* @module utils/integrity-guarded-write.utils
|
|
37
|
+
*/
|
|
38
|
+
import * as fs from 'fs/promises';
|
|
39
|
+
import { existsSync } from 'fs';
|
|
40
|
+
import { atomicWriteJson } from './file-io.utils.js';
|
|
41
|
+
import { LoggerService } from '../services/core/logger.service.js';
|
|
42
|
+
/**
|
|
43
|
+
* Default maximum decrease percentage (compared to prior on-disk count)
|
|
44
|
+
* tolerated before the guard rejects a write.
|
|
45
|
+
*
|
|
46
|
+
* 50% means: if prior had N items, next must have at least ceil(N/2) items
|
|
47
|
+
* unless `allowExplicitDelete: true` is set.
|
|
48
|
+
*/
|
|
49
|
+
const DEFAULT_MAX_DECREASE_PCT = 50;
|
|
50
|
+
/**
|
|
51
|
+
* Logger lazily acquired so this module can be imported by tests that
|
|
52
|
+
* mock the logger service before initialization.
|
|
53
|
+
*/
|
|
54
|
+
let logger = null;
|
|
55
|
+
function getLogger() {
|
|
56
|
+
if (!logger) {
|
|
57
|
+
logger = LoggerService.getInstance().createComponentLogger('IntegrityGuardedWrite');
|
|
58
|
+
}
|
|
59
|
+
return logger;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Thrown when a guarded write is rejected because it would shrink the
|
|
63
|
+
* persisted collection past the decrease threshold without explicit
|
|
64
|
+
* operator opt-in.
|
|
65
|
+
*
|
|
66
|
+
* Carries diagnostic metadata (path, prevCount, nextCount, reason) for
|
|
67
|
+
* structured logging and debugging.
|
|
68
|
+
*/
|
|
69
|
+
export class IntegrityViolationError extends Error {
|
|
70
|
+
/** Absolute path of the file the rejected write targeted */
|
|
71
|
+
path;
|
|
72
|
+
/** Item count read from the prior on-disk state */
|
|
73
|
+
prevCount;
|
|
74
|
+
/** Item count of the rejected next state */
|
|
75
|
+
nextCount;
|
|
76
|
+
/** Machine-readable reason code */
|
|
77
|
+
reason;
|
|
78
|
+
/**
|
|
79
|
+
* @param message - Human-readable error message
|
|
80
|
+
* @param details - Diagnostic metadata
|
|
81
|
+
*/
|
|
82
|
+
constructor(message, details) {
|
|
83
|
+
super(message);
|
|
84
|
+
this.name = 'IntegrityViolationError';
|
|
85
|
+
this.path = details.path;
|
|
86
|
+
this.prevCount = details.prevCount;
|
|
87
|
+
this.nextCount = details.nextCount;
|
|
88
|
+
this.reason = details.reason;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Atomically write a JSON file, rejecting writes that would shrink an
|
|
93
|
+
* existing collection past the decrease threshold without explicit opt-in.
|
|
94
|
+
*
|
|
95
|
+
* **Behavior**:
|
|
96
|
+
* 1. If the destination file does not exist → first-ever write → proceed.
|
|
97
|
+
* 2. If the prior file exists but cannot be read/parsed → log warning,
|
|
98
|
+
* proceed (corrupted prior should not block recovery).
|
|
99
|
+
* 3. If `prevCount > 0 && nextCount === 0 && !allowExplicitDelete`
|
|
100
|
+
* → throw {@link IntegrityViolationError} with `reason: 'collapse-to-empty'`.
|
|
101
|
+
* 4. If `nextCount < prevCount * (1 - maxDecreasePct/100) && !allowExplicitDelete`
|
|
102
|
+
* → throw {@link IntegrityViolationError} with `reason: 'decrease-exceeds-threshold'`.
|
|
103
|
+
* 5. Otherwise → call {@link atomicWriteJson}.
|
|
104
|
+
*
|
|
105
|
+
* @param filePath - Destination JSON file path
|
|
106
|
+
* @param next - Value to serialize and write
|
|
107
|
+
* @param opts - Guard configuration
|
|
108
|
+
* @throws {IntegrityViolationError} if the guard rejects the write
|
|
109
|
+
* @throws The underlying fs error if the atomic write itself fails
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* await atomicWriteJsonWithGuard(teamsPath, teams, {
|
|
114
|
+
* countOf: (t) => t.length,
|
|
115
|
+
* maxDecreasePct: 50,
|
|
116
|
+
* });
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export async function atomicWriteJsonWithGuard(filePath, next, opts = {}) {
|
|
120
|
+
const countOf = opts.countOf ?? defaultCountOf;
|
|
121
|
+
const maxDecreasePct = opts.maxDecreasePct ?? DEFAULT_MAX_DECREASE_PCT;
|
|
122
|
+
const allowExplicitDelete = opts.allowExplicitDelete ?? false;
|
|
123
|
+
const nextCount = countOf(next);
|
|
124
|
+
const prevCount = await readPriorCount(filePath, countOf);
|
|
125
|
+
if (prevCount === null) {
|
|
126
|
+
// No prior file or unreadable — proceed without guard.
|
|
127
|
+
await atomicWriteJson(filePath, next);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (!allowExplicitDelete) {
|
|
131
|
+
// Branch 3: collapse-to-empty
|
|
132
|
+
if (prevCount > 0 && nextCount === 0) {
|
|
133
|
+
const message = `Refusing to write empty collection: prior had ${prevCount} item(s), next would have 0. ` +
|
|
134
|
+
`If this is intentional, pass allowExplicitDelete: true. Path: ${filePath}`;
|
|
135
|
+
getLogger().error('integrity:write-rejected', {
|
|
136
|
+
path: filePath,
|
|
137
|
+
prevCount,
|
|
138
|
+
nextCount,
|
|
139
|
+
reason: 'collapse-to-empty',
|
|
140
|
+
stack: new Error('decrease-guard trace').stack,
|
|
141
|
+
});
|
|
142
|
+
throw new IntegrityViolationError(message, {
|
|
143
|
+
path: filePath,
|
|
144
|
+
prevCount,
|
|
145
|
+
nextCount,
|
|
146
|
+
reason: 'collapse-to-empty',
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
// Branch 4: decrease exceeds threshold
|
|
150
|
+
if (prevCount > 0 && maxDecreasePct < 100) {
|
|
151
|
+
const minAllowed = Math.ceil(prevCount * (1 - maxDecreasePct / 100));
|
|
152
|
+
if (nextCount < minAllowed) {
|
|
153
|
+
const message = `Refusing to write shrunken collection: prior had ${prevCount} item(s), next would have ` +
|
|
154
|
+
`${nextCount} (below ${maxDecreasePct}%-decrease threshold of ${minAllowed}). ` +
|
|
155
|
+
`If this is intentional, pass allowExplicitDelete: true. Path: ${filePath}`;
|
|
156
|
+
getLogger().error('integrity:write-rejected', {
|
|
157
|
+
path: filePath,
|
|
158
|
+
prevCount,
|
|
159
|
+
nextCount,
|
|
160
|
+
maxDecreasePct,
|
|
161
|
+
minAllowed,
|
|
162
|
+
reason: 'decrease-exceeds-threshold',
|
|
163
|
+
stack: new Error('decrease-guard trace').stack,
|
|
164
|
+
});
|
|
165
|
+
throw new IntegrityViolationError(message, {
|
|
166
|
+
path: filePath,
|
|
167
|
+
prevCount,
|
|
168
|
+
nextCount,
|
|
169
|
+
reason: 'decrease-exceeds-threshold',
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Guard passed (or bypassed). Proceed with the atomic write.
|
|
175
|
+
await atomicWriteJson(filePath, next);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Default countOf implementation: returns array length, or 0 for non-arrays.
|
|
179
|
+
*
|
|
180
|
+
* @param data - Parsed prior state or proposed next state
|
|
181
|
+
* @returns Item count
|
|
182
|
+
*/
|
|
183
|
+
function defaultCountOf(data) {
|
|
184
|
+
return Array.isArray(data) ? data.length : 0;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Read the prior on-disk JSON file and apply countOf.
|
|
188
|
+
*
|
|
189
|
+
* @param filePath - File to read
|
|
190
|
+
* @param countOf - Counter function
|
|
191
|
+
* @returns The prior count, or null if the file does not exist or cannot be parsed
|
|
192
|
+
*/
|
|
193
|
+
async function readPriorCount(filePath, countOf) {
|
|
194
|
+
if (!existsSync(filePath)) {
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
const raw = await fs.readFile(filePath, 'utf-8');
|
|
199
|
+
if (!raw.trim())
|
|
200
|
+
return null;
|
|
201
|
+
const parsed = JSON.parse(raw);
|
|
202
|
+
return countOf(parsed);
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
getLogger().warn('integrity:prior-read-failed', {
|
|
206
|
+
path: filePath,
|
|
207
|
+
error: error instanceof Error ? error.message : String(error),
|
|
208
|
+
});
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=integrity-guarded-write.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrity-guarded-write.utils.js","sourceRoot":"","sources":["../../../../../backend/src/utils/integrity-guarded-write.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAwB,MAAM,oCAAoC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC;;;GAGG;AACH,IAAI,MAAM,GAA2B,IAAI,CAAC;AAC1C,SAAS,SAAS;IAChB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,4DAA4D;IACnD,IAAI,CAAS;IACtB,mDAAmD;IAC1C,SAAS,CAAS;IAC3B,4CAA4C;IACnC,SAAS,CAAS;IAC3B,mCAAmC;IAC1B,MAAM,CAAqD;IAEpE;;;OAGG;IACH,YACE,OAAe,EACf,OAA0G;QAE1G,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;CACF;AA2BD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,QAAgB,EAChB,IAAO,EACP,OAAiC,EAAE;IAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,wBAAwB,CAAC;IACvE,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC;IAE9D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE1D,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,uDAAuD;QACvD,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,8BAA8B;QAC9B,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,OAAO,GACX,iDAAiD,SAAS,+BAA+B;gBACzF,iEAAiE,QAAQ,EAAE,CAAC;YAC9E,SAAS,EAAE,CAAC,KAAK,CAAC,0BAA0B,EAAE;gBAC5C,IAAI,EAAE,QAAQ;gBACd,SAAS;gBACT,SAAS;gBACT,MAAM,EAAE,mBAAmB;gBAC3B,KAAK,EAAE,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,KAAK;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,uBAAuB,CAAC,OAAO,EAAE;gBACzC,IAAI,EAAE,QAAQ;gBACd,SAAS;gBACT,SAAS;gBACT,MAAM,EAAE,mBAAmB;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,uCAAuC;QACvC,IAAI,SAAS,GAAG,CAAC,IAAI,cAAc,GAAG,GAAG,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC;YACrE,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;gBAC3B,MAAM,OAAO,GACX,oDAAoD,SAAS,4BAA4B;oBACzF,GAAG,SAAS,WAAW,cAAc,2BAA2B,UAAU,KAAK;oBAC/E,iEAAiE,QAAQ,EAAE,CAAC;gBAC9E,SAAS,EAAE,CAAC,KAAK,CAAC,0BAA0B,EAAE;oBAC5C,IAAI,EAAE,QAAQ;oBACd,SAAS;oBACT,SAAS;oBACT,cAAc;oBACd,UAAU;oBACV,MAAM,EAAE,4BAA4B;oBACpC,KAAK,EAAE,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,KAAK;iBAC/C,CAAC,CAAC;gBACH,MAAM,IAAI,uBAAuB,CAAC,OAAO,EAAE;oBACzC,IAAI,EAAE,QAAQ;oBACd,SAAS;oBACT,SAAS;oBACT,MAAM,EAAE,4BAA4B;iBACrC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAI,IAAO;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,cAAc,CAAI,QAAgB,EAAE,OAAyB;IAC1E,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;QACpC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE;YAC9C,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native-binding fail-fast helpers.
|
|
3
|
+
*
|
|
4
|
+
* When a native Node addon (e.g. `better-sqlite3`, `node-pty`,
|
|
5
|
+
* `sqlite-vec-darwin-*`) is built for the wrong CPU/ABI and Node tries
|
|
6
|
+
* to `dlopen` it, the loader emits a recognisable error pattern:
|
|
7
|
+
*
|
|
8
|
+
* ```
|
|
9
|
+
* dlopen .../foo.node, 0x0001
|
|
10
|
+
* mach-o file, but is an incompatible architecture
|
|
11
|
+
* (have 'x86_64', need 'arm64e' or 'arm64')
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* This module exists for one reason: those errors must NEVER be
|
|
15
|
+
* silently swallowed by a try/catch wrapper at the gateway layer
|
|
16
|
+
* (which used to downgrade chat-v2 to a JSON-file fallback while
|
|
17
|
+
* `chat.db` quietly went stale — F-CYCLE7-1, audit 2026-05-07 §2.1).
|
|
18
|
+
*
|
|
19
|
+
* The contract:
|
|
20
|
+
*
|
|
21
|
+
* 1. {@link loadNativeAddonOrFatal} wraps `require(name)`.
|
|
22
|
+
* 2. If the require throws and the error matches a known native-arch
|
|
23
|
+
* / dlopen pattern, we rethrow as {@link NativeBindingFatalError},
|
|
24
|
+
* which carries `fatal: true`.
|
|
25
|
+
* 3. The boot-time wiring (`backend/src/index.ts`, the chat-v2 init
|
|
26
|
+
* try/catch) inspects caught errors with {@link isNativeBindingFatalError}
|
|
27
|
+
* and **rethrows fatal errors** rather than logging them as
|
|
28
|
+
* "non-critical". This crashes the process at boot — which is the
|
|
29
|
+
* desired behaviour: an arch-mismatched binary can be fixed by
|
|
30
|
+
* `npm rebuild <pkg> --build-from-source`, but only if the operator
|
|
31
|
+
* sees the failure.
|
|
32
|
+
*
|
|
33
|
+
* @module utils/native-binding.utils
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Marker class for native-binding failures that MUST crash the
|
|
37
|
+
* process at boot rather than be downgraded to a runtime fallback.
|
|
38
|
+
*
|
|
39
|
+
* Holds the original underlying error in `cause` so logs surface
|
|
40
|
+
* the full dlopen trace.
|
|
41
|
+
*/
|
|
42
|
+
export declare class NativeBindingFatalError extends Error {
|
|
43
|
+
/** Discriminator readable by `instanceof` and structural callers. */
|
|
44
|
+
readonly fatal: true;
|
|
45
|
+
/**
|
|
46
|
+
* The npm package name that failed to load (`'better-sqlite3'`,
|
|
47
|
+
* `'node-pty'`, etc.). Used in the boot-failure log line and the
|
|
48
|
+
* remediation hint that follows it.
|
|
49
|
+
*/
|
|
50
|
+
readonly moduleName: string;
|
|
51
|
+
/**
|
|
52
|
+
* The original error thrown by `require(name)`. Preserved for log
|
|
53
|
+
* fidelity — the dlopen line itself is the most useful piece of
|
|
54
|
+
* context for whoever has to run the rebuild.
|
|
55
|
+
*/
|
|
56
|
+
readonly cause: unknown;
|
|
57
|
+
/**
|
|
58
|
+
* Build a fatal-error wrapper.
|
|
59
|
+
*
|
|
60
|
+
* @param moduleName - The npm package that failed to load
|
|
61
|
+
* @param cause - The underlying error from the failed require
|
|
62
|
+
* @param remediation - One-line remediation hint shown in the message
|
|
63
|
+
* (default: `npm rebuild <moduleName> --build-from-source`)
|
|
64
|
+
*/
|
|
65
|
+
constructor(moduleName: string, cause: unknown, remediation?: string);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Type guard for {@link NativeBindingFatalError}. Survives realm
|
|
69
|
+
* boundaries (unlike a bare `instanceof`) by also checking the
|
|
70
|
+
* structural `fatal === true` + `name === 'NativeBindingFatalError'`
|
|
71
|
+
* shape — useful when the same module is loaded via two different
|
|
72
|
+
* resolver paths (ts-jest vs. native ESM) and `instanceof` would
|
|
73
|
+
* unexpectedly miss.
|
|
74
|
+
*
|
|
75
|
+
* @param err - Any thrown value
|
|
76
|
+
* @returns True iff the error is a fatal native-binding load failure
|
|
77
|
+
*/
|
|
78
|
+
export declare function isNativeBindingFatalError(err: unknown): err is NativeBindingFatalError;
|
|
79
|
+
/**
|
|
80
|
+
* Decide whether the given error indicates a native-addon arch / ABI
|
|
81
|
+
* mismatch (vs. a benign "package not installed" error or a runtime
|
|
82
|
+
* SQL bug from inside the addon).
|
|
83
|
+
*
|
|
84
|
+
* Stable, narrow behaviour — only matches the patterns in
|
|
85
|
+
* {@link FATAL_NATIVE_PATTERNS}. Callers can refine further by
|
|
86
|
+
* inspecting `err.code === 'ERR_DLOPEN_FAILED'` (Node ≥ 16 emits this
|
|
87
|
+
* for any failed `dlopen`, including arch mismatches) before calling
|
|
88
|
+
* this helper if they want a broader net.
|
|
89
|
+
*
|
|
90
|
+
* @param err - Any thrown value
|
|
91
|
+
* @returns True iff the error message matches a known native-mismatch pattern
|
|
92
|
+
*/
|
|
93
|
+
export declare function isNativeArchMismatchError(err: unknown): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Load a native Node addon by name, escalating arch / ABI mismatches
|
|
96
|
+
* to {@link NativeBindingFatalError}.
|
|
97
|
+
*
|
|
98
|
+
* Behaviour:
|
|
99
|
+
* - On success: returns the require'd module unchanged.
|
|
100
|
+
* - On failure that matches {@link isNativeArchMismatchError}:
|
|
101
|
+
* throws {@link NativeBindingFatalError}.
|
|
102
|
+
* - On any other failure (e.g. `Cannot find module 'foo'` because
|
|
103
|
+
* the package isn't installed at all): rethrows the original
|
|
104
|
+
* error unchanged, so callers can keep their existing
|
|
105
|
+
* "package missing → soft error" semantics.
|
|
106
|
+
*
|
|
107
|
+
* @param moduleName - Package name (`'better-sqlite3'`, `'node-pty'`)
|
|
108
|
+
* @param requireFn - The CJS-style require to use (typically the result
|
|
109
|
+
* of `createBareModuleRequire(...)` from `node-require.utils.ts`)
|
|
110
|
+
* @param remediation - Optional override for the remediation hint shown
|
|
111
|
+
* in the wrapped error message
|
|
112
|
+
* @returns The loaded module
|
|
113
|
+
*
|
|
114
|
+
* @throws {NativeBindingFatalError} when the require fails with a
|
|
115
|
+
* recognised native-arch / ABI / dlopen pattern.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* import { loadNativeAddonOrFatal } from '../../utils/native-binding.utils.js';
|
|
120
|
+
*
|
|
121
|
+
* const Database = loadNativeAddonOrFatal<typeof import('better-sqlite3')>(
|
|
122
|
+
* 'better-sqlite3',
|
|
123
|
+
* nodeRequire,
|
|
124
|
+
* );
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export declare function loadNativeAddonOrFatal<T = unknown>(moduleName: string, requireFn: NodeRequire, remediation?: string): T;
|
|
128
|
+
//# sourceMappingURL=native-binding.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-binding.utils.d.ts","sourceRoot":"","sources":["../../../../../backend/src/utils/native-binding.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IACjD,qEAAqE;IACrE,SAAgB,KAAK,EAAG,IAAI,CAAU;IAEtC;;;;OAIG;IACH,SAAgB,UAAU,EAAE,MAAM,CAAC;IAEnC;;;;OAIG;IACH,SAAyB,KAAK,EAAE,OAAO,CAAC;IAExC;;;;;;;OAOG;gBACS,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM;CAiBpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACxC,GAAG,EAAE,OAAO,GACV,GAAG,IAAI,uBAAuB,CAWhC;AAqCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAQ/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,GAAG,OAAO,EACjD,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,WAAW,EACtB,WAAW,CAAC,EAAE,MAAM,GAClB,CAAC,CASH"}
|