crewly 1.20.152 → 1.20.154
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/README.md +21 -3
- package/config/constants.ts +78 -0
- package/config/hooks/agent-status/report.sh +78 -0
- package/config/hooks/control-plane-guard/pretooluse-bash.sh +241 -0
- package/config/orchestrator_tasks/prompts/assign-task-orchestrator-prompt-template.md +19 -49
- package/config/orchestrator_tasks/prompts/checkin-orchestrator-prompt-template.md +25 -125
- package/config/orchestrator_tasks/prompts/project-start-orchestrator-prompt-template.md +29 -100
- package/config/roles/orchestrator/prompt.md +25 -2
- package/config/roles/team-leader/prompt.md +19 -3
- package/config/roles/team-leader/role.json +1 -1
- package/config/roles/team-leader/tl-addon.md +12 -3
- package/config/skills/agent/core/complete-task/SKILL.md +1 -1
- package/config/skills/agent/core/project-tickets/SKILL.md +127 -0
- package/config/skills/agent/core/project-tickets/execute.sh +182 -0
- package/config/skills/agent/core/project-tickets/execute.test.sh +116 -0
- package/config/skills/agent/core/recall/SKILL.md +1 -1
- package/config/skills/agent/core/recall/execute.sh +7 -0
- package/config/skills/agent/core/report-status/SKILL.md +3 -2
- package/config/skills/agent/core/report-status/execute.sh +37 -15
- package/config/skills/agent/core/split-ticket/SKILL.md +62 -0
- package/config/skills/agent/core/split-ticket/execute.sh +87 -0
- package/config/skills/agent/core/split-ticket/execute.test.sh +77 -0
- package/config/skills/agent/core/standing-update/SKILL.md +96 -0
- package/config/skills/agent/core/standing-update/execute.sh +107 -0
- package/config/skills/agent/onboarding/materialize-team/SKILL.md +1 -1
- package/config/skills/agent/onboarding/recommend-team/SKILL.md +1 -1
- package/config/skills/orchestrator/delegate-task/SKILL.md +4 -3
- package/config/skills/orchestrator/render-verdict/SKILL.md +62 -0
- package/config/skills/orchestrator/render-verdict/execute.sh +47 -0
- package/config/skills/orchestrator/render-verdict/execute.test.sh +121 -0
- package/config/skills/orchestrator/wiki-migrate/SKILL.md +0 -1
- package/config/skills/team-leader/aggregate-results/SKILL.md +1 -1
- package/config/skills/team-leader/assign-ticket/SKILL.md +47 -0
- package/config/skills/team-leader/assign-ticket/execute.sh +59 -0
- package/config/skills/team-leader/assign-ticket/execute.test.sh +64 -0
- package/config/skills/team-leader/decompose-goal/SKILL.md +4 -4
- package/config/skills/team-leader/delegate-task/SKILL.md +1 -1
- package/config/skills/team-leader/verify-output/SKILL.md +2 -2
- package/config/sops/developer/git-workflow.md +2 -1
- package/dist/backend/backend/src/constants.d.ts +451 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +442 -2
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.d.ts +27 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.js +55 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.d.ts +13 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.js +19 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/api.controller.d.ts +0 -12
- package/dist/backend/backend/src/controllers/api.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/api.controller.js +0 -44
- package/dist/backend/backend/src/controllers/api.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts +27 -5
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.js +55 -15
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.js +2 -0
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/expert/expert.controller.d.ts +13 -0
- package/dist/backend/backend/src/controllers/expert/expert.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/expert/expert.controller.js +67 -9
- package/dist/backend/backend/src/controllers/expert/expert.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.d.ts +41 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js +146 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.d.ts +20 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.js +29 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/project/project.controller.d.ts +2 -2
- package/dist/backend/backend/src/controllers/project/project.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.controller.js +24 -7
- package/dist/backend/backend/src/controllers/project/project.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.routes.d.ts +2 -2
- package/dist/backend/backend/src/controllers/project/project.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.routes.js +3 -36
- package/dist/backend/backend/src/controllers/project/project.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +93 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +252 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts +34 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js +51 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/request-types.d.ts +13 -0
- package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts +49 -0
- package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/standing/standing.controller.js +100 -0
- package/dist/backend/backend/src/controllers/standing/standing.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +38 -0
- 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 +143 -8
- 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 +6 -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 +2 -0
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +26 -6
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +18 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +56 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +3 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.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/controllers/wiki/wiki.controller.d.ts +2 -3
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.js +2 -3
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/worktree-janitor/worktree-janitor.routes.d.ts +29 -0
- package/dist/backend/backend/src/controllers/worktree-janitor/worktree-janitor.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/worktree-janitor/worktree-janitor.routes.js +63 -0
- package/dist/backend/backend/src/controllers/worktree-janitor/worktree-janitor.routes.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts +7 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +214 -9
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/middleware/api-token.middleware.d.ts +29 -0
- package/dist/backend/backend/src/middleware/api-token.middleware.d.ts.map +1 -1
- package/dist/backend/backend/src/middleware/api-token.middleware.js +38 -0
- package/dist/backend/backend/src/middleware/api-token.middleware.js.map +1 -1
- package/dist/backend/backend/src/models/index.d.ts +0 -1
- package/dist/backend/backend/src/models/index.d.ts.map +1 -1
- package/dist/backend/backend/src/models/index.js +0 -1
- package/dist/backend/backend/src/models/index.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 +27 -3
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts +6 -2
- package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts.map +1 -1
- package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js +6 -2
- package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +28 -1
- 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 +93 -34
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts +169 -0
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +231 -0
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts +1 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +9 -0
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +16 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +50 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts +9 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.js +12 -2
- package/dist/backend/backend/src/services/agent/tmux-command.service.js.map +1 -1
- 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 +9 -8
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.d.ts +75 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.js +89 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +18 -3
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js +28 -4
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +3 -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 +3 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -1
- 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 +12 -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 +14 -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/recovery.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +11 -7
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts +41 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.js +44 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts +67 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.js +146 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-template.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-template.service.js +9 -7
- package/dist/backend/backend/src/services/ai/prompt-template.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +7 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/waiting-actions-inbound.service.d.ts +128 -0
- package/dist/backend/backend/src/services/cloud/waiting-actions-inbound.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/waiting-actions-inbound.service.js +279 -0
- package/dist/backend/backend/src/services/cloud/waiting-actions-inbound.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/waiting-items-sync.service.d.ts +122 -0
- package/dist/backend/backend/src/services/cloud/waiting-items-sync.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/waiting-items-sync.service.js +261 -0
- package/dist/backend/backend/src/services/cloud/waiting-items-sync.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/waiting-items.contract.d.ts +101 -0
- package/dist/backend/backend/src/services/cloud/waiting-items.contract.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/waiting-items.contract.js +113 -0
- package/dist/backend/backend/src/services/cloud/waiting-items.contract.js.map +1 -0
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts +7 -0
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js +9 -1
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
- package/dist/backend/backend/src/services/core/logger.service.d.ts +21 -0
- package/dist/backend/backend/src/services/core/logger.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/logger.service.js +42 -4
- package/dist/backend/backend/src/services/core/logger.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.d.ts +1 -5
- package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +5 -162
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +15 -9
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/index.d.ts +0 -4
- package/dist/backend/backend/src/services/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/index.js +0 -4
- package/dist/backend/backend/src/services/index.js.map +1 -1
- package/dist/backend/backend/src/services/intent-task/intent-task.service.d.ts +1 -1
- package/dist/backend/backend/src/services/intent-task/intent-task.service.js +1 -1
- package/dist/backend/backend/src/services/mcp-server.d.ts +19 -6
- package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -1
- package/dist/backend/backend/src/services/mcp-server.js +46 -16
- package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
- package/dist/backend/backend/src/services/mcp-tool-definitions.d.ts.map +1 -1
- package/dist/backend/backend/src/services/mcp-tool-definitions.js +3 -2
- package/dist/backend/backend/src/services/mcp-tool-definitions.js.map +1 -1
- package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts +247 -0
- package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/standing-answers.service.js +534 -0
- package/dist/backend/backend/src/services/memory/standing-answers.service.js.map +1 -0
- package/dist/backend/backend/src/services/memory/standing-refresh.service.d.ts +104 -0
- package/dist/backend/backend/src/services/memory/standing-refresh.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/standing-refresh.service.js +218 -0
- package/dist/backend/backend/src/services/memory/standing-refresh.service.js.map +1 -0
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts +35 -0
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +99 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/agent-attention-registry.d.ts +75 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention-registry.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention-registry.js +80 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention-registry.js.map +1 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention.d.ts +114 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention.js +165 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention.js.map +1 -0
- package/dist/backend/backend/src/services/monitoring/agent-hook-state.d.ts +76 -0
- package/dist/backend/backend/src/services/monitoring/agent-hook-state.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/agent-hook-state.js +96 -0
- package/dist/backend/backend/src/services/monitoring/agent-hook-state.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js +13 -3
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js +0 -4
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js.map +1 -1
- package/dist/backend/backend/src/services/project/project-search.service.d.ts +22 -16
- package/dist/backend/backend/src/services/project/project-search.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project/project-search.service.js +30 -53
- package/dist/backend/backend/src/services/project/project-search.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts +381 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js +839 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts +214 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js +466 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-file.d.ts +121 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-file.js +468 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-file.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.d.ts +69 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.js +194 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-tracking.d.ts +47 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-tracking.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-tracking.js +83 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-tracking.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/v1-task-migration.d.ts +97 -0
- package/dist/backend/backend/src/services/project-tickets/v1-task-migration.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/v1-task-migration.js +201 -0
- package/dist/backend/backend/src/services/project-tickets/v1-task-migration.js.map +1 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +86 -22
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +173 -28
- 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 +19 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +33 -4
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +24 -12
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +87 -19
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-adapter.d.ts +1 -1
- package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-adapter.js +5 -9
- package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +26 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +33 -2
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +5 -0
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js +8 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts +18 -0
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js +23 -0
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-backend.interface.d.ts +8 -0
- package/dist/backend/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-backend.interface.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts +12 -2
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.js +14 -2
- package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +2 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.d.ts +239 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.js +395 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.js.map +1 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.d.ts +53 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.d.ts.map +1 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.js +83 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.js.map +1 -0
- package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.d.ts +93 -0
- package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.d.ts.map +1 -0
- package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.js +244 -0
- package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.js.map +1 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +145 -19
- 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 +321 -53
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.js +11 -6
- package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +21 -4
- 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 +53 -3
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation-router.service.d.ts +85 -6
- 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 +188 -9
- package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation.service.js +1 -1
- package/dist/backend/backend/src/services/v3/escalation.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-executor.service.js +2 -2
- package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.d.ts +184 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.js +420 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.js.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts +61 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js +100 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.d.ts +36 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.js +239 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.js.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts +152 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js +209 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts +194 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.js +85 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +6 -4
- 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 +15 -6
- 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.map +1 -1
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js +14 -5
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.d.ts +19 -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 +38 -0
- package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-ask-classifier.d.ts +82 -0
- package/dist/backend/backend/src/services/v3/ticket-ask-classifier.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-ask-classifier.js +172 -0
- package/dist/backend/backend/src/services/v3/ticket-ask-classifier.js.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +2 -0
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-intake-log.d.ts +87 -0
- package/dist/backend/backend/src/services/v3/ticket-intake-log.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-intake-log.js +116 -0
- package/dist/backend/backend/src/services/v3/ticket-intake-log.js.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +133 -15
- package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-intake.service.js +263 -45
- package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts +3 -1
- package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-review.service.js +6 -2
- package/dist/backend/backend/src/services/v3/ticket-review.service.js.map +1 -1
- 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 +9 -3
- package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +41 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +51 -2
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts +13 -5
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +10 -9
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -1
- package/dist/backend/backend/src/services/worktree/workitem-worktree.service.d.ts +241 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.service.js +511 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.service.js.map +1 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.d.ts +70 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.js +121 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/worktree/worktree-git.d.ts +260 -0
- package/dist/backend/backend/src/services/worktree/worktree-git.d.ts.map +1 -0
- package/dist/backend/backend/src/services/worktree/worktree-git.js +569 -0
- package/dist/backend/backend/src/services/worktree/worktree-git.js.map +1 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.git.d.ts +131 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.git.d.ts.map +1 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.git.js +238 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.git.js.map +1 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts +241 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js +504 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js.map +1 -0
- 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 +8 -0
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +23 -18
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/intent-task.types.d.ts +1 -1
- package/dist/backend/backend/src/types/intent-task.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/project-ticket.types.d.ts +132 -0
- package/dist/backend/backend/src/types/project-ticket.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/project-ticket.types.js +120 -0
- package/dist/backend/backend/src/types/project-ticket.types.js.map +1 -0
- package/dist/backend/backend/src/types/review-reason.types.d.ts +3 -1
- package/dist/backend/backend/src/types/review-reason.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/review-reason.types.js +1 -0
- package/dist/backend/backend/src/types/review-reason.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/index.d.ts +2 -2
- package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/index.js +1 -1
- package/dist/backend/backend/src/types/v2/index.js.map +1 -1
- package/dist/backend/backend/src/types/v2/reconcile.types.d.ts +7 -0
- package/dist/backend/backend/src/types/v2/reconcile.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/reconcile.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.d.ts +18 -0
- package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.js +1 -0
- package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/ticket.types.d.ts +6 -2
- package/dist/backend/backend/src/types/v2/ticket.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/ticket.types.js +1 -1
- package/dist/backend/backend/src/types/v2/ticket.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +169 -14
- 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 +263 -44
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/backend/src/utils/agent-caller.utils.d.ts +33 -0
- package/dist/backend/backend/src/utils/agent-caller.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/agent-caller.utils.js +37 -0
- package/dist/backend/backend/src/utils/agent-caller.utils.js.map +1 -1
- package/dist/backend/backend/src/utils/secret-env.d.ts +61 -0
- package/dist/backend/backend/src/utils/secret-env.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/secret-env.js +89 -0
- package/dist/backend/backend/src/utils/secret-env.js.map +1 -0
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +71 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +77 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +451 -1
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +442 -2
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/models/index.d.ts +0 -1
- package/dist/cli/backend/src/models/index.d.ts.map +1 -1
- package/dist/cli/backend/src/models/index.js +0 -1
- package/dist/cli/backend/src/models/index.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +28 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +93 -34
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts +169 -0
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +231 -0
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +16 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +50 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js +9 -8
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.d.ts +75 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.js +89 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +18 -3
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js +28 -4
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +12 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +14 -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/ai/prompt-modules/recovery.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +11 -7
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts +41 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.js +44 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts +67 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.js +146 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.js.map +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.js +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts +7 -0
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js +9 -1
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
- package/dist/cli/backend/src/services/core/logger.service.d.ts +21 -0
- package/dist/cli/backend/src/services/core/logger.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/logger.service.js +42 -4
- package/dist/cli/backend/src/services/core/logger.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.d.ts +1 -5
- package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js +5 -162
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/services/mcp-server.d.ts +19 -6
- package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -1
- package/dist/cli/backend/src/services/mcp-server.js +46 -16
- package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
- package/dist/cli/backend/src/services/mcp-tool-definitions.d.ts.map +1 -1
- package/dist/cli/backend/src/services/mcp-tool-definitions.js +3 -2
- package/dist/cli/backend/src/services/mcp-tool-definitions.js.map +1 -1
- package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts +247 -0
- package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/standing-answers.service.js +534 -0
- package/dist/cli/backend/src/services/memory/standing-answers.service.js.map +1 -0
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts +35 -0
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js +99 -1
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/agent-attention-registry.d.ts +75 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention-registry.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention-registry.js +80 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention-registry.js.map +1 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention.d.ts +114 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention.js +165 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention.js.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts +214 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js +466 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-file.d.ts +121 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-file.js +468 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-file.js.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.d.ts +69 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.d.ts.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.js +194 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.js.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-tracking.d.ts +47 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-tracking.d.ts.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-tracking.js +83 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-tracking.js.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/v1-task-migration.d.ts +97 -0
- package/dist/cli/backend/src/services/project-tickets/v1-task-migration.d.ts.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/v1-task-migration.js +201 -0
- package/dist/cli/backend/src/services/project-tickets/v1-task-migration.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +26 -1
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +33 -2
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +5 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.js +8 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts +18 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js +23 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
- package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +8 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -1
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts +12 -2
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-command-helper.js +14 -2
- package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +145 -19
- 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 +321 -53
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/template/template.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/template/template.service.js +11 -6
- package/dist/cli/backend/src/services/template/template.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts +85 -6
- package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/escalation-router.service.js +188 -9
- package/dist/cli/backend/src/services/v3/escalation-router.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/mission-executor.service.js +2 -2
- package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts +6 -4
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +15 -6
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
- package/dist/cli/backend/src/services/v3/request.service.d.ts +19 -0
- package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/request.service.js +38 -0
- package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-ask-classifier.d.ts +82 -0
- package/dist/cli/backend/src/services/v3/ticket-ask-classifier.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-ask-classifier.js +172 -0
- package/dist/cli/backend/src/services/v3/ticket-ask-classifier.js.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +2 -0
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-intake-log.d.ts +87 -0
- package/dist/cli/backend/src/services/v3/ticket-intake-log.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-intake-log.js +116 -0
- package/dist/cli/backend/src/services/v3/ticket-intake-log.js.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +133 -15
- package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-intake.service.js +263 -45
- package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts +3 -1
- package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-review.service.js +6 -2
- package/dist/cli/backend/src/services/v3/ticket-review.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/v3-data.service.js +9 -3
- package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/cli/backend/src/services/worktree/worktree-git.d.ts +260 -0
- package/dist/cli/backend/src/services/worktree/worktree-git.d.ts.map +1 -0
- package/dist/cli/backend/src/services/worktree/worktree-git.js +569 -0
- package/dist/cli/backend/src/services/worktree/worktree-git.js.map +1 -0
- package/dist/cli/backend/src/types/event-bus.types.d.ts +1 -1
- package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/event-bus.types.js +8 -0
- package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +23 -18
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/dist/cli/backend/src/types/intent-task.types.d.ts +1 -1
- package/dist/cli/backend/src/types/intent-task.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/project-ticket.types.d.ts +132 -0
- package/dist/cli/backend/src/types/project-ticket.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/project-ticket.types.js +120 -0
- package/dist/cli/backend/src/types/project-ticket.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/index.d.ts +2 -2
- package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/index.js +1 -1
- package/dist/cli/backend/src/types/v2/index.js.map +1 -1
- package/dist/cli/backend/src/types/v2/reconcile.types.d.ts +7 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/reconcile.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.d.ts +18 -0
- package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.js +1 -0
- package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/ticket.types.d.ts +6 -2
- package/dist/cli/backend/src/types/v2/ticket.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/ticket.types.js +1 -1
- package/dist/cli/backend/src/types/v2/ticket.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +169 -14
- 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 +263 -44
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/cli/backend/src/utils/secret-env.d.ts +61 -0
- package/dist/cli/backend/src/utils/secret-env.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/secret-env.js +89 -0
- package/dist/cli/backend/src/utils/secret-env.js.map +1 -0
- package/dist/cli/cli/src/commands/onboard.d.ts +1 -1
- package/dist/cli/cli/src/commands/onboard.js +3 -3
- package/dist/cli/cli/src/commands/onboard.js.map +1 -1
- package/dist/cli/cli/src/commands/publish.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/publish.js +4 -5
- package/dist/cli/cli/src/commands/publish.js.map +1 -1
- package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/service.js +5 -2
- package/dist/cli/cli/src/commands/service.js.map +1 -1
- package/dist/cli/cli/src/commands/tickets.d.ts +60 -0
- package/dist/cli/cli/src/commands/tickets.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/tickets.js +111 -0
- package/dist/cli/cli/src/commands/tickets.js.map +1 -0
- package/dist/cli/cli/src/index.js +12 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/archive-creator.d.ts +7 -3
- package/dist/cli/cli/src/utils/archive-creator.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/archive-creator.js +17 -5
- package/dist/cli/cli/src/utils/archive-creator.js.map +1 -1
- package/dist/cli/cli/src/utils/cloud-submit.d.ts +1 -1
- package/dist/cli/cli/src/utils/cloud-submit.js +1 -1
- package/dist/cli/cli/src/utils/gh-submit.d.ts +10 -1
- package/dist/cli/cli/src/utils/gh-submit.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/gh-submit.js +20 -4
- package/dist/cli/cli/src/utils/gh-submit.js.map +1 -1
- package/dist/cli/cli/src/utils/package-validator.d.ts +29 -6
- package/dist/cli/cli/src/utils/package-validator.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/package-validator.js +88 -36
- package/dist/cli/cli/src/utils/package-validator.js.map +1 -1
- package/dist/cli/config/constants.d.ts +71 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +77 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/skills/marketplace-registry.d.ts +143 -0
- package/dist/cli/config/skills/marketplace-registry.d.ts.map +1 -0
- package/dist/cli/config/skills/marketplace-registry.js +192 -0
- package/dist/cli/config/skills/marketplace-registry.js.map +1 -0
- package/frontend/dist/assets/index-8d4b3ad2.js +4951 -0
- package/frontend/dist/assets/index-b6aded4c.css +42 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/config/task_starters/build_e2e_test_plan_prompt.json +0 -51
- package/config/task_starters/build_tasks_prompt.json +0 -55
- package/config/task_starters/prompts/build_tasks_step1_milestone_structure.md +0 -274
- package/config/task_starters/prompts/e2e_test_plan_step1_build_tests.md +0 -391
- package/config/task_starters/prompts/e2e_test_plan_step2_run_tests.md +0 -240
- package/config/templates/customer-loyalty-team.json +0 -44
- package/config/templates/dtc-viral-content-team.json +0 -58
- package/config/templates/expert-innovation-team.json +0 -60
- package/config/templates/pragmatic-mvp-dev-team.json +0 -58
- package/config/templates/pro-sops/norms/content-production-pipeline.md +0 -39
- package/config/templates/pro-sops/norms/customer-onboarding-sop.md +0 -40
- package/dist/backend/backend/src/controllers/task-management/tickets.controller.d.ts +0 -13
- package/dist/backend/backend/src/controllers/task-management/tickets.controller.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/task-management/tickets.controller.js +0 -214
- package/dist/backend/backend/src/controllers/task-management/tickets.controller.js.map +0 -1
- package/dist/backend/backend/src/models/Ticket.d.ts +0 -24
- package/dist/backend/backend/src/models/Ticket.d.ts.map +0 -1
- package/dist/backend/backend/src/models/Ticket.js +0 -102
- package/dist/backend/backend/src/models/Ticket.js.map +0 -1
- package/dist/backend/backend/src/services/agent/task-planning.service.d.ts +0 -134
- package/dist/backend/backend/src/services/agent/task-planning.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/task-planning.service.js +0 -291
- package/dist/backend/backend/src/services/agent/task-planning.service.js.map +0 -1
- package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.d.ts +0 -71
- package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.js +0 -304
- package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.js.map +0 -1
- package/dist/backend/backend/src/services/project/task-folder.service.d.ts +0 -48
- package/dist/backend/backend/src/services/project/task-folder.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/project/task-folder.service.js +0 -193
- package/dist/backend/backend/src/services/project/task-folder.service.js.map +0 -1
- package/dist/backend/backend/src/services/project/task.service.d.ts +0 -47
- package/dist/backend/backend/src/services/project/task.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/project/task.service.js +0 -253
- package/dist/backend/backend/src/services/project/task.service.js.map +0 -1
- package/dist/backend/backend/src/services/project/ticket-editor.service.d.ts +0 -130
- package/dist/backend/backend/src/services/project/ticket-editor.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/project/ticket-editor.service.js +0 -406
- package/dist/backend/backend/src/services/project/ticket-editor.service.js.map +0 -1
- package/dist/cli/backend/src/models/Ticket.d.ts +0 -24
- package/dist/cli/backend/src/models/Ticket.d.ts.map +0 -1
- package/dist/cli/backend/src/models/Ticket.js +0 -102
- package/dist/cli/backend/src/models/Ticket.js.map +0 -1
- package/frontend/dist/assets/index-2bdb57b9.css +0 -42
- package/frontend/dist/assets/index-54f1061c.js +0 -4963
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worktree Janitor Routes
|
|
3
|
+
*
|
|
4
|
+
* Debug and manual-trigger endpoints for {@link WorktreeJanitorService},
|
|
5
|
+
* mounted at `/api/worktree-janitor` behind the same API-token middleware as
|
|
6
|
+
* every other `/api` route.
|
|
7
|
+
*
|
|
8
|
+
* - `GET /api/worktree-janitor/worktrees` — dry run: every worktree of every
|
|
9
|
+
* known repo with its keep/remove verdict and reason. Removes nothing.
|
|
10
|
+
* - `POST /api/worktree-janitor/run` — one real pass now. Refused (409) while
|
|
11
|
+
* the `CREWLY_WORKTREE_JANITOR=0` kill switch is on.
|
|
12
|
+
*
|
|
13
|
+
* @module controllers/worktree-janitor/worktree-janitor.routes
|
|
14
|
+
*/
|
|
15
|
+
import { Router } from 'express';
|
|
16
|
+
import { WorktreeJanitorService } from '../../services/worktree/worktree-janitor.service.js';
|
|
17
|
+
import { WORKTREE_JANITOR_CONSTANTS } from '../../constants.js';
|
|
18
|
+
/**
|
|
19
|
+
* Create the worktree janitor router.
|
|
20
|
+
*
|
|
21
|
+
* @param getService - Service accessor (tests inject their own)
|
|
22
|
+
* @returns Express router for /api/worktree-janitor
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* router.use('/worktree-janitor', createWorktreeJanitorRouter());
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export function createWorktreeJanitorRouter(getService = () => WorktreeJanitorService.getInstance()) {
|
|
30
|
+
const router = Router();
|
|
31
|
+
router.get('/worktrees', async (_req, res) => {
|
|
32
|
+
try {
|
|
33
|
+
const service = getService();
|
|
34
|
+
const plan = await service.plan();
|
|
35
|
+
res.json({
|
|
36
|
+
success: true,
|
|
37
|
+
data: { ...plan, disabled: service.isDisabled(), lastRun: service.getLastSummary() },
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
res.status(500).json({ success: false, error: error instanceof Error ? error.message : String(error) });
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
router.post('/run', async (_req, res) => {
|
|
45
|
+
try {
|
|
46
|
+
const service = getService();
|
|
47
|
+
if (service.isDisabled()) {
|
|
48
|
+
res.status(409).json({
|
|
49
|
+
success: false,
|
|
50
|
+
error: `Worktree janitor is disabled (${WORKTREE_JANITOR_CONSTANTS.ENV_VAR}=0)`,
|
|
51
|
+
});
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const summary = await service.run();
|
|
55
|
+
res.json({ success: true, data: summary });
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
res.status(500).json({ success: false, error: error instanceof Error ? error.message : String(error) });
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return router;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=worktree-janitor.routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-janitor.routes.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/worktree-janitor/worktree-janitor.routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,2BAA2B,CAC1C,aAA2C,GAAG,EAAE,CAAC,sBAAsB,CAAC,WAAW,EAAE;IAErF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;QAC/D,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAClC,GAAG,CAAC,IAAI,CAAC;gBACR,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,EAAE;aACpF,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzG,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;QAC1D,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;gBAC1B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACpB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,iCAAiC,0BAA0B,CAAC,OAAO,KAAK;iBAC/E,CAAC,CAAC;gBACH,OAAO;YACR,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzG,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -46,6 +46,7 @@ export declare class CrewlyServer {
|
|
|
46
46
|
/** Tells the owner on Slack when this machine loses Crewly Cloud */
|
|
47
47
|
private cloudDisconnectNotice;
|
|
48
48
|
private conversationCloudSync;
|
|
49
|
+
private waitingItemsSync;
|
|
49
50
|
/** Epoch ms of the last shutdown signal acted on (dedups process-group delivery) */
|
|
50
51
|
private lastShutdownSignalAt;
|
|
51
52
|
/** Interrupted turns loaded at boot, resumed once their agents are back */
|
|
@@ -168,6 +169,12 @@ export declare class CrewlyServer {
|
|
|
168
169
|
* first time history reaches Cloud. Never throws.
|
|
169
170
|
*/
|
|
170
171
|
private startConversationCloudSync;
|
|
172
|
+
/**
|
|
173
|
+
* Start the "waiting on you" uploader: tickets in 待验收 go to Crewly Cloud
|
|
174
|
+
* as text snapshots when they change (and every 5 minutes), so the portal
|
|
175
|
+
* lists what waits on the owner across machines. Never throws.
|
|
176
|
+
*/
|
|
177
|
+
private startWaitingItemsSync;
|
|
171
178
|
/**
|
|
172
179
|
* Load interrupted turns left by the previous shutdown (fresh ones only).
|
|
173
180
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../backend/src/index.ts"],"names":[],"mappings":";AA2CA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../backend/src/index.ts"],"names":[],"mappings":";AA2CA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAmNjD,qBAAa,YAAY;IACxB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAqE;IACnF,gFAAgF;IAChF,OAAO,CAAC,iBAAiB,CAAC,CAAyD;IAEnF,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,uBAAuB,CAA2B;IAC1D,OAAO,CAAC,sBAAsB,CAA0B;IACxD,OAAO,CAAC,4BAA4B,CAAgC;IACpE,OAAO,CAAC,uBAAuB,CAA2B;IAC1D,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,qBAAqB,CAAyB;IACtD,OAAO,CAAC,wBAAwB,CAA4B;IAC5D,OAAO,CAAC,eAAe,CAAmB;IAC1C,qEAAqE;IACrE,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,sBAAsB,CAAuC;IACrE,OAAO,CAAC,sBAAsB,CAAiD;IAC/E,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,0BAA0B,CAA2C;IAC7E,kGAAkG;IAClG,OAAO,CAAC,sBAAsB,CAAuC;IAGrE,OAAO,CAAC,+BAA+B,CAAgD;IACvF,+FAA+F;IAC/F,OAAO,CAAC,oBAAoB,CAAqC;IACjE,8HAA8H;IAC9H,OAAO,CAAC,0BAA0B,CAA2C;IAC7E,OAAO,CAAC,6BAA6B,CAA8C;IACnF,OAAO,CAAC,wBAAwB,CAAyC;IACzE,OAAO,CAAC,2BAA2B,CAA+B;IAClE,OAAO,CAAC,0BAA0B,CAA8B;IAChE,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,kBAAkB,CAA0C;IAKpE,OAAO,CAAC,aAAa,CAAuE;IAC5F,OAAO,CAAC,gBAAgB,CAET;IAGf,OAAO,CAAC,cAAc,CAAS;IAC/B,oEAAoE;IACpE,OAAO,CAAC,qBAAqB,CAA6C;IAC1E,OAAO,CAAC,qBAAqB,CAA2G;IACxI,OAAO,CAAC,gBAAgB,CAAiG;IACzH,oFAAoF;IACpF,OAAO,CAAC,oBAAoB,CAAK;IACjC,2EAA2E;IAC3E,OAAO,CAAC,sBAAsB,CAA8B;IAC5D,OAAO,CAAC,wBAAwB,CAA+B;gBAEnD,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAsE3C,OAAO,CAAC,kBAAkB;IAioC1B,OAAO,CAAC,mBAAmB;IAmD3B,OAAO,CAAC,eAAe;IA+KvB,OAAO,CAAC,kBAAkB;IAwBpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwkD5B;;;OAGG;YACW,2BAA2B;IAkCzC;;;OAGG;YACW,8BAA8B;IAsB5C;;;OAGG;YACW,gCAAgC;IAsB9C;;;OAGG;YACW,8BAA8B;IAsB5C;;;;OAIG;YACW,8BAA8B;IA8M5C;;;;;;;;;;;;OAYG;YACW,6BAA6B;IAsB3C;;;;;OAKG;YACW,iCAAiC;IAoL/C;;;;OAIG;YACW,2BAA2B;YA0B3B,qBAAqB;IAsBnC;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;YA6BZ,eAAe;YAoFf,kBAAkB;IAgBhC,OAAO,CAAC,WAAW,CAAK;IAExB,OAAO,CAAC,sBAAsB;IAsC9B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAoBvB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAsDvB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAuClC;;;;;OAKG;YACW,0BAA0B;IAkExC;;;;OAIG;YACW,qBAAqB;IA6DnC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAuBlC;;;;OAIG;YACW,+BAA+B;IA0C7C;;;;;;OAMG;YACW,kBAAkB;IA0BhC,OAAO,CAAC,qBAAqB;IAoC7B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAoE1B;;;;;;;;;OASG;IACH;;;;;;;;;;;;;;OAcG;IACH,sEAAsE;IACtE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAE1D;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;YAyBd,wBAAwB;IAWtC,OAAO,CAAC,qBAAqB;IAwH7B,OAAO,CAAC,cAAc;IActB;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmWpG,SAAS,IAAI,aAAa;CAG1B;AAmCD,eAAe,YAAY,CAAC"}
|
|
@@ -55,11 +55,14 @@ import { RequestDecomposeSubscriber, setRequestDecomposeSubscriber, } from './se
|
|
|
55
55
|
import { RequestStatusUpdateSubscriber } from './services/v3/request-status-update.subscriber.js';
|
|
56
56
|
import { RequestCascadeSubscriber } from './services/v3/request-cascade.subscriber.js';
|
|
57
57
|
import { setRequestServiceEventBus, RequestService } from './services/v3/request.service.js';
|
|
58
|
+
import { OwnerReceiptService, setOwnerReceiptService } from './services/v3/owner-receipt/owner-receipt.service.js';
|
|
59
|
+
import { createSlackOwnerSender, startOwnerReceiptSchedule, teamIndexOf, teamLeadIndexOf } from './services/v3/owner-receipt/owner-receipt.boot.js';
|
|
60
|
+
import { IntakeOutcomeLog } from './services/v3/ticket-intake-log.js';
|
|
58
61
|
import { getSlackService } from './services/slack/slack.service.js';
|
|
59
62
|
import { getSlackTypingPlaceholderService } from './services/slack/slack-typing-placeholder.service.js';
|
|
60
63
|
import { sendBootAnnouncement, isFirstBoot, markBooted } from './services/boot/boot-announce.service.js';
|
|
61
64
|
import { SubAgentMessageQueue } from './services/messaging/sub-agent-message-queue.service.js';
|
|
62
|
-
import { SUB_AGENT_QUEUE_CONSTANTS, CHAT_CONTEXT_CONSTANTS, SAFE_RESTART, AUTO_UPDATE_CONSTANTS, PROCESS_EXIT_CODES, CLAUDE_STARTUP_CONSTANTS, WEB_CONSTANTS, TICKET_CONSTANTS, UNASSIGNED_ROUTE_CONSTANTS, CLOUD_TALK_CONSTANTS } from './constants.js';
|
|
65
|
+
import { SUB_AGENT_QUEUE_CONSTANTS, CHAT_CONTEXT_CONSTANTS, SAFE_RESTART, AUTO_UPDATE_CONSTANTS, PROCESS_EXIT_CODES, CLAUDE_STARTUP_CONSTANTS, WEB_CONSTANTS, TICKET_CONSTANTS, UNASSIGNED_ROUTE_CONSTANTS, CLOUD_TALK_CONSTANTS, STANDING_ANSWERS_CONSTANTS } from './constants.js';
|
|
63
66
|
import { PtyActivityTrackerService } from './services/agent/pty-activity-tracker.service.js';
|
|
64
67
|
import { InFlightTurnTracker } from './services/restart/in-flight-turn-tracker.service.js';
|
|
65
68
|
import { TicketIntakeService, setTicketIntakeService, resolveTicketIdForSession, } from './services/v3/ticket-intake.service.js';
|
|
@@ -85,7 +88,7 @@ import { setMessageQueueService as setMessagingControllerQueueService } from './
|
|
|
85
88
|
import { SystemResourceAlertService } from './services/monitoring/system-resource-alert.service.js';
|
|
86
89
|
import { TokenUsageService } from './services/monitoring/token-usage.service.js';
|
|
87
90
|
import { agentHeartbeatMiddleware } from './middleware/agent-heartbeat.middleware.js';
|
|
88
|
-
import { apiTokenMiddleware, socketIoAllowRequest, installWebSocketGate, } from './middleware/api-token.middleware.js';
|
|
91
|
+
import { apiTokenMiddleware, healthGateMiddleware, socketIoAllowRequest, installWebSocketGate, } from './middleware/api-token.middleware.js';
|
|
89
92
|
import { resolveApiToken } from './services/core/api-token.service.js';
|
|
90
93
|
import { isHeadlessEnvironment, describeNetworkExposure } from './utils/network-exposure.utils.js';
|
|
91
94
|
import { RedisCacheService } from './services/cache/redis-cache.service.js';
|
|
@@ -113,6 +116,7 @@ import { createCloudDisconnectNoticeService, } from './services/cloud/cloud-disc
|
|
|
113
116
|
import { isNoticeEnabled } from './services/cloud/cloud-disconnect-notice.utils.js';
|
|
114
117
|
import { createOwnerDirectDm } from './services/slack/slack-owner-direct-dm.js';
|
|
115
118
|
import { LogRotationService } from './services/session/log-rotation.service.js';
|
|
119
|
+
import { WorktreeJanitorService } from './services/worktree/worktree-janitor.service.js';
|
|
116
120
|
import { AuditorSchedulerService } from './services/agent/auditor-scheduler.service.js';
|
|
117
121
|
import { setAuditorSchedulerService } from './controllers/auditor/auditor.controller.js';
|
|
118
122
|
import { AddonLoaderService } from './services/addon/addon-loader.service.js';
|
|
@@ -124,6 +128,8 @@ import { FissionGuardService, createFailOpenBudgetChecker } from './services/fis
|
|
|
124
128
|
import { BudgetService } from './services/autonomous/budget.service.js';
|
|
125
129
|
import { setFissionGuardService } from './controllers/fission/fission.controller.js';
|
|
126
130
|
import { TaskPoolService } from './services/task-pool/task-pool.service.js';
|
|
131
|
+
import { WorkItemWorktreeService } from './services/worktree/workitem-worktree.service.js';
|
|
132
|
+
import { WorkItemWorktreeSubscriber, createTerminalNotifier } from './services/worktree/workitem-worktree.subscriber.js';
|
|
127
133
|
import { sessionsToRestore } from './services/agent/restore-filter.js';
|
|
128
134
|
import { ProjectMemoryService } from './services/memory/project-memory.service.js';
|
|
129
135
|
import { TaskHistorySubscriber } from './services/memory/task-history.subscriber.js';
|
|
@@ -218,6 +224,7 @@ export class CrewlyServer {
|
|
|
218
224
|
/** Tells the owner on Slack when this machine loses Crewly Cloud */
|
|
219
225
|
cloudDisconnectNotice = null;
|
|
220
226
|
conversationCloudSync = null;
|
|
227
|
+
waitingItemsSync = null;
|
|
221
228
|
/** Epoch ms of the last shutdown signal acted on (dedups process-group delivery) */
|
|
222
229
|
lastShutdownSignalAt = 0;
|
|
223
230
|
/** Interrupted turns loaded at boot, resumed once their agents are back */
|
|
@@ -383,6 +390,37 @@ export class CrewlyServer {
|
|
|
383
390
|
taskPoolService: TaskPoolService.getInstance(),
|
|
384
391
|
});
|
|
385
392
|
taskHistorySubscriber.start();
|
|
393
|
+
// Per-WorkItem git worktrees (#814): observes WorkItem events only
|
|
394
|
+
// (no status writes). Opt-in per project (Project.worktrees = 'on');
|
|
395
|
+
// Team.worktrees = 'off' and CREWLY_WORKTREES=off opt out.
|
|
396
|
+
try {
|
|
397
|
+
const pool = TaskPoolService.getInstance();
|
|
398
|
+
const worktreeService = new WorkItemWorktreeService({ pool, storage: this.storageService, notify: createTerminalNotifier() });
|
|
399
|
+
const worktreeSubscriber = new WorkItemWorktreeSubscriber({
|
|
400
|
+
service: worktreeService,
|
|
401
|
+
events: this.eventBusService,
|
|
402
|
+
pool,
|
|
403
|
+
});
|
|
404
|
+
worktreeSubscriber.start();
|
|
405
|
+
// So the FIRST [CREWLY-DISPATCH] brief can already name the workdir
|
|
406
|
+
// (git worktree add can take seconds — long enough for a separate,
|
|
407
|
+
// later "worktree ready" message to arrive after the agent has
|
|
408
|
+
// already started in the shared checkout; #829 review).
|
|
409
|
+
void import('./services/v3/workitem-dispatch.subscriber.js')
|
|
410
|
+
.then(({ WorkItemDispatchSubscriber }) => {
|
|
411
|
+
WorkItemDispatchSubscriber.getInstance().setWorktreeHintResolver(worktreeService);
|
|
412
|
+
})
|
|
413
|
+
.catch((err) => {
|
|
414
|
+
this.logger.warn('Could not wire worktree hints into WorkItemDispatchSubscriber (non-fatal)', {
|
|
415
|
+
error: err.message,
|
|
416
|
+
});
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
catch (worktreeErr) {
|
|
420
|
+
this.logger.warn('Per-WorkItem worktrees failed to start (non-fatal)', {
|
|
421
|
+
error: worktreeErr.message,
|
|
422
|
+
});
|
|
423
|
+
}
|
|
386
424
|
// P1 Bug B (Pool umbrella WI 72ca743a): Wire RequestService into the
|
|
387
425
|
// TaskPool singleton so addToPool intrinsically links new WIs into
|
|
388
426
|
// their parent Request.workItemIds[] — independent of the
|
|
@@ -407,9 +445,12 @@ export class CrewlyServer {
|
|
|
407
445
|
// Failure-isolated: tickets are an addition — messages are delivered
|
|
408
446
|
// whether or not this is wired.
|
|
409
447
|
try {
|
|
448
|
+
// #828 coverage: every owner message's fate, for the receipt's coverage line.
|
|
449
|
+
const intakeOutcomeLog = new IntakeOutcomeLog(RequestService.getInstance().getRequestsDir());
|
|
410
450
|
const ticketIntake = new TicketIntakeService({
|
|
411
451
|
requests: RequestService.getInstance(),
|
|
412
452
|
findWorkItem: (id) => TaskPoolService.getInstance().findWorkItem(id),
|
|
453
|
+
outcomeLog: intakeOutcomeLog,
|
|
413
454
|
});
|
|
414
455
|
ticketIntake.setReceiptSink('chat-v2', createChatV2ReceiptSink({
|
|
415
456
|
chat: {
|
|
@@ -430,6 +471,21 @@ export class CrewlyServer {
|
|
|
430
471
|
},
|
|
431
472
|
}));
|
|
432
473
|
setTicketIntakeService(ticketIntake);
|
|
474
|
+
// #828: the owner's nightly receipt — built from tickets + WorkItems,
|
|
475
|
+
// DMed at his local time (default 21:00, can be turned off), and the
|
|
476
|
+
// same data at GET /api/owner-receipt for the dashboard.
|
|
477
|
+
{
|
|
478
|
+
const receipt = new OwnerReceiptService({
|
|
479
|
+
listRequests: () => RequestService.getInstance().listAll(),
|
|
480
|
+
listWorkItems: () => TaskPoolService.getInstance().getAllItems(),
|
|
481
|
+
loadTeamIndex: async () => teamIndexOf(await StorageService.getInstance().getTeams()),
|
|
482
|
+
loadTeamLeadIndex: async () => teamLeadIndexOf(await StorageService.getInstance().getTeams()),
|
|
483
|
+
sender: createSlackOwnerSender(() => getSlackService()),
|
|
484
|
+
readIntakeLog: () => intakeOutcomeLog.read(),
|
|
485
|
+
});
|
|
486
|
+
setOwnerReceiptService(receipt);
|
|
487
|
+
startOwnerReceiptSchedule(receipt);
|
|
488
|
+
}
|
|
433
489
|
TaskPoolService.getInstance().setTicketResolver((sessionName) => resolveTicketIdForSession(InFlightTurnTracker.getInstance(), sessionName));
|
|
434
490
|
// Phase 2: answered → 待验收 → 验过了 / 打回 / silence accepts.
|
|
435
491
|
const ticketReview = new TicketReviewService({
|
|
@@ -690,6 +746,36 @@ export class CrewlyServer {
|
|
|
690
746
|
error: reflectErr.message,
|
|
691
747
|
});
|
|
692
748
|
}
|
|
749
|
+
try {
|
|
750
|
+
// Standing-answer refresh (#816) on the reflect cadence: raise a
|
|
751
|
+
// refresh WorkItem for a standing page only when the memory
|
|
752
|
+
// behind it has moved. No LLM here; the WorkItem's agent writes.
|
|
753
|
+
// Agent pages are only checked for members that are active, so a
|
|
754
|
+
// stopped agent is never woken for its own page.
|
|
755
|
+
// CREWLY_STANDING_REFRESH=false disables it.
|
|
756
|
+
if (process.env['CREWLY_STANDING_REFRESH'] !== 'false') {
|
|
757
|
+
const { StandingRefreshService } = await import('./services/memory/standing-refresh.service.js');
|
|
758
|
+
const { resolveWikiOwner } = await import('./services/wiki/wiki-owner.resolver.js');
|
|
759
|
+
const standingRefresh = new StandingRefreshService({
|
|
760
|
+
pool: TaskPoolService.getInstance(),
|
|
761
|
+
agentSkillsPath: path.join(findPackageRoot(__dirname), 'config', 'skills', 'agent'),
|
|
762
|
+
listProjects: async () => (await this.storageService.getProjects()).map((p) => p.path).filter(Boolean),
|
|
763
|
+
listAgents: async () => (await this.storageService.getTeams())
|
|
764
|
+
.flatMap((t) => t.members ?? [])
|
|
765
|
+
.filter((m) => m.agentStatus === CREWLY_CONSTANTS.AGENT_STATUSES.ACTIVE && m.sessionName)
|
|
766
|
+
.map((m) => m.sessionName),
|
|
767
|
+
resolveProjectTarget: (projectPath) => resolveWikiOwner(this.storageService, projectPath),
|
|
768
|
+
});
|
|
769
|
+
// Same cadence as the reflect trigger above.
|
|
770
|
+
const reflectEvery = Number(process.env['CREWLY_WIKI_REFLECT_INTERVAL_MS']);
|
|
771
|
+
standingRefresh.start(reflectEvery > 0 ? reflectEvery : STANDING_ANSWERS_CONSTANTS.REFRESH_INTERVAL_MS);
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
catch (standingErr) {
|
|
775
|
+
this.logger.warn('Standing-answer refresh failed to start (non-fatal)', {
|
|
776
|
+
error: standingErr.message,
|
|
777
|
+
});
|
|
778
|
+
}
|
|
693
779
|
// Daily memory consolidation (self-improvement wiring): the
|
|
694
780
|
// MemoryConsolidationService existed but nothing ever called
|
|
695
781
|
// consolidate(), so no agent ever had a consolidation.json. Run it
|
|
@@ -1280,15 +1366,18 @@ export class CrewlyServer {
|
|
|
1280
1366
|
}
|
|
1281
1367
|
configureRoutes() {
|
|
1282
1368
|
// API token gate — loopback callers (local skills, local dashboard)
|
|
1283
|
-
// pass; every other address must present the API token.
|
|
1284
|
-
//
|
|
1369
|
+
// pass; every other address must present the API token. Static assets
|
|
1370
|
+
// and the SPA shell are outside `/api` and stay open; `/health` has its
|
|
1371
|
+
// own gate below (#825).
|
|
1285
1372
|
this.app.use('/api', apiTokenMiddleware);
|
|
1286
1373
|
// Agent heartbeat middleware - any API call with X-Agent-Session header updates heartbeat
|
|
1287
1374
|
this.app.use('/api', agentHeartbeatMiddleware);
|
|
1288
1375
|
// API routes
|
|
1289
1376
|
this.app.use('/api', createApiRoutes(this.apiController));
|
|
1290
|
-
// Health check (enhanced with mode and agent info)
|
|
1291
|
-
|
|
1377
|
+
// Health check (enhanced with mode and agent info).
|
|
1378
|
+
// #825: non-loopback callers need the API token (or CREWLY_PUBLIC_HEALTH=1);
|
|
1379
|
+
// loopback reaches this handler exactly as before.
|
|
1380
|
+
this.app.get('/health', healthGateMiddleware, (req, res) => {
|
|
1292
1381
|
const versionService = VersionCheckService.getInstance();
|
|
1293
1382
|
const cachedCheck = versionService.getCachedCheckResult();
|
|
1294
1383
|
// Count active agents from the session backend.
|
|
@@ -1955,6 +2044,38 @@ export class CrewlyServer {
|
|
|
1955
2044
|
error: talkErr instanceof Error ? talkErr.message : String(talkErr),
|
|
1956
2045
|
});
|
|
1957
2046
|
}
|
|
2047
|
+
// "Waiting on you" (specs/unified-conversations-cloud-store.md §F):
|
|
2048
|
+
// the owner's accept / send-back from the portal arrives as a
|
|
2049
|
+
// `waiting_action` push; the handler fetches it with this
|
|
2050
|
+
// machine's token and runs it through the ticket review.
|
|
2051
|
+
// Starting it is what advertises `waiting_actions` to Cloud.
|
|
2052
|
+
try {
|
|
2053
|
+
const [{ WaitingActionsInboundService }, { CloudClientService }, { getWaitingItemsSyncService },] = await Promise.all([
|
|
2054
|
+
import('./services/cloud/waiting-actions-inbound.service.js'),
|
|
2055
|
+
import('./services/cloud/cloud-client.service.js'),
|
|
2056
|
+
import('./services/cloud/waiting-items-sync.service.js'),
|
|
2057
|
+
]);
|
|
2058
|
+
const cloudClient = CloudClientService.getInstance();
|
|
2059
|
+
new WaitingActionsInboundService({
|
|
2060
|
+
source: sync,
|
|
2061
|
+
cloud: {
|
|
2062
|
+
getToken: () => cloudClient.getToken(),
|
|
2063
|
+
getCloudUrl: () => cloudClient.getCloudUrl(),
|
|
2064
|
+
tryRefreshToken: () => cloudClient.tryRefreshToken(),
|
|
2065
|
+
},
|
|
2066
|
+
review: () => getTicketReviewService(),
|
|
2067
|
+
identity: async () => {
|
|
2068
|
+
const id = await DeviceIdentityService.getInstance().getOrCreateIdentity();
|
|
2069
|
+
return { instanceId: id.deviceId, deviceName: id.deviceName };
|
|
2070
|
+
},
|
|
2071
|
+
requestResync: () => getWaitingItemsSyncService()?.requestSync(),
|
|
2072
|
+
}).start();
|
|
2073
|
+
}
|
|
2074
|
+
catch (waitingErr) {
|
|
2075
|
+
this.logger.warn('"Waiting on you" action handler wiring skipped', {
|
|
2076
|
+
error: waitingErr instanceof Error ? waitingErr.message : String(waitingErr),
|
|
2077
|
+
});
|
|
2078
|
+
}
|
|
1958
2079
|
// Mobile app: generic allowlisted REST passthrough over the same
|
|
1959
2080
|
// relay (api_request → local HTTP → api_response). Non-fatal.
|
|
1960
2081
|
try {
|
|
@@ -2389,7 +2510,7 @@ export class CrewlyServer {
|
|
|
2389
2510
|
const taskPool = TaskPoolService.getInstance();
|
|
2390
2511
|
// Append system note to description so Agent knows why it was woken
|
|
2391
2512
|
const wakeNote = `\n\n[SYSTEM NOTE] Woken automatically by Trigger '${triggerId}' at ${new Date().toISOString()}.`;
|
|
2392
|
-
await taskPool.updateItemStatus(action.wakeWorkItemId, 'queued');
|
|
2513
|
+
await taskPool.updateItemStatus(action.wakeWorkItemId, 'queued', { role: 'system', via: 'trigger-wake' });
|
|
2393
2514
|
// Append wake reason to WorkItem description via storage
|
|
2394
2515
|
try {
|
|
2395
2516
|
const item = (await taskPool.getAllItems()).find(wi => wi.id === action.wakeWorkItemId);
|
|
@@ -2539,6 +2660,12 @@ export class CrewlyServer {
|
|
|
2539
2660
|
autoClaimService.initialize(this.eventBusService);
|
|
2540
2661
|
await autoClaimService.start();
|
|
2541
2662
|
this.logger.info('AgentAutoClaimService started — idle agents will auto-claim work');
|
|
2663
|
+
// Project tickets (specs/2026-09-28-project-tickets.md): wire the
|
|
2664
|
+
// workflow singleton (claim / assign / AutoClaim fallback) and keep
|
|
2665
|
+
// tickets in step with their WorkItems — pool events plus a sweep.
|
|
2666
|
+
const { projectTicketWorkflow } = await import('./controllers/project-tickets/project-tickets.controller.js');
|
|
2667
|
+
projectTicketWorkflow().start(this.eventBusService);
|
|
2668
|
+
this.logger.info('Project ticket workflow started — tickets follow their WorkItems');
|
|
2542
2669
|
}
|
|
2543
2670
|
catch (autoClaimErr) {
|
|
2544
2671
|
this.logger.warn('AgentAutoClaimService initialization failed (non-critical)', {
|
|
@@ -2625,6 +2752,9 @@ export class CrewlyServer {
|
|
|
2625
2752
|
// specs/unified-conversations-cloud-store.md §B). On by default for a
|
|
2626
2753
|
// signed-in machine; CREWLY_CONVERSATION_SYNC=0 turns it off.
|
|
2627
2754
|
void this.startConversationCloudSync();
|
|
2755
|
+
// "Waiting on you" (§F): tickets in 待验收 go to Crewly Cloud as text
|
|
2756
|
+
// snapshots, so the portal lists them for every machine.
|
|
2757
|
+
void this.startWaitingItemsSync();
|
|
2628
2758
|
// V3-only as of spec 2026-05-06-task-management-v1-deprecation.md.
|
|
2629
2759
|
// The legacy `TaskTrackingService.startAutoSync()` is gone — V3
|
|
2630
2760
|
// task-pool reconciler owns lifecycle cleanup now.
|
|
@@ -2829,6 +2959,22 @@ export class CrewlyServer {
|
|
|
2829
2959
|
error: error instanceof Error ? error.message : String(error),
|
|
2830
2960
|
});
|
|
2831
2961
|
}
|
|
2962
|
+
// Worktree janitor (non-critical): removes finished agent worktrees
|
|
2963
|
+
// (merged + clean + idle >2h + nobody inside). Kill switch:
|
|
2964
|
+
// CREWLY_WORKTREE_JANITOR=0.
|
|
2965
|
+
try {
|
|
2966
|
+
if (WorktreeJanitorService.getInstance().start()) {
|
|
2967
|
+
this.logger.info('WorktreeJanitorService scheduled');
|
|
2968
|
+
}
|
|
2969
|
+
else {
|
|
2970
|
+
this.logger.info('WorktreeJanitorService disabled (CREWLY_WORKTREE_JANITOR)');
|
|
2971
|
+
}
|
|
2972
|
+
}
|
|
2973
|
+
catch (error) {
|
|
2974
|
+
this.logger.warn('Failed to start WorktreeJanitorService (non-critical)', {
|
|
2975
|
+
error: error instanceof Error ? error.message : String(error),
|
|
2976
|
+
});
|
|
2977
|
+
}
|
|
2832
2978
|
// Start AuditorSchedulerService (non-critical — audit scheduling)
|
|
2833
2979
|
// Priority: env var > settings.json > ENABLED_BY_DEFAULT constant
|
|
2834
2980
|
const envValue = process.env[AUDITOR_CONSTANTS.ENV_VAR]?.toLowerCase();
|
|
@@ -3766,12 +3912,13 @@ export class CrewlyServer {
|
|
|
3766
3912
|
*/
|
|
3767
3913
|
async startConversationCloudSync() {
|
|
3768
3914
|
try {
|
|
3769
|
-
const [{ ConversationCloudSyncService, setConversationCloudSyncService }, { CloudClientService }, { VersionCheckService }, { buildAgentRoster }, { cloudTalkCapabilities },] = await Promise.all([
|
|
3915
|
+
const [{ ConversationCloudSyncService, setConversationCloudSyncService }, { CloudClientService }, { VersionCheckService }, { buildAgentRoster }, { cloudTalkCapabilities }, { waitingActionCapabilities },] = await Promise.all([
|
|
3770
3916
|
import('./services/cloud/conversation-cloud-sync.service.js'),
|
|
3771
3917
|
import('./services/cloud/cloud-client.service.js'),
|
|
3772
3918
|
import('./services/system/version-check.service.js'),
|
|
3773
3919
|
import('./services/cloud/agent-roster.utils.js'),
|
|
3774
3920
|
import('./services/cloud/cloud-talk-inbound.service.js'),
|
|
3921
|
+
import('./services/cloud/waiting-actions-inbound.service.js'),
|
|
3775
3922
|
]);
|
|
3776
3923
|
const chat = getChatV2Service();
|
|
3777
3924
|
const cloud = CloudClientService.getInstance();
|
|
@@ -3792,7 +3939,7 @@ export class CrewlyServer {
|
|
|
3792
3939
|
// whether this machine takes `talk_message` — also for machines
|
|
3793
3940
|
// without Slack, which never send the registry heartbeat.
|
|
3794
3941
|
roster: async () => buildAgentRoster(await this.storageService.getTeams()),
|
|
3795
|
-
capabilities: () => cloudTalkCapabilities(),
|
|
3942
|
+
capabilities: () => [...cloudTalkCapabilities(), ...waitingActionCapabilities()],
|
|
3796
3943
|
onNewMessage: (listener) => {
|
|
3797
3944
|
chat.on('chat_message', listener);
|
|
3798
3945
|
return () => chat.off('chat_message', listener);
|
|
@@ -3821,6 +3968,61 @@ export class CrewlyServer {
|
|
|
3821
3968
|
});
|
|
3822
3969
|
}
|
|
3823
3970
|
}
|
|
3971
|
+
/**
|
|
3972
|
+
* Start the "waiting on you" uploader: tickets in 待验收 go to Crewly Cloud
|
|
3973
|
+
* as text snapshots when they change (and every 5 minutes), so the portal
|
|
3974
|
+
* lists what waits on the owner across machines. Never throws.
|
|
3975
|
+
*/
|
|
3976
|
+
async startWaitingItemsSync() {
|
|
3977
|
+
try {
|
|
3978
|
+
const [{ WaitingItemsSyncService, setWaitingItemsSyncService }, { CloudClientService }, { VersionCheckService }, { buildAgentRoster }, { cloudTalkCapabilities }, { waitingActionCapabilities }, { getTicketIntakeService },] = await Promise.all([
|
|
3979
|
+
import('./services/cloud/waiting-items-sync.service.js'),
|
|
3980
|
+
import('./services/cloud/cloud-client.service.js'),
|
|
3981
|
+
import('./services/system/version-check.service.js'),
|
|
3982
|
+
import('./services/cloud/agent-roster.utils.js'),
|
|
3983
|
+
import('./services/cloud/cloud-talk-inbound.service.js'),
|
|
3984
|
+
import('./services/cloud/waiting-actions-inbound.service.js'),
|
|
3985
|
+
import('./services/v3/ticket-intake.service.js'),
|
|
3986
|
+
]);
|
|
3987
|
+
const cloud = CloudClientService.getInstance();
|
|
3988
|
+
const service = new WaitingItemsSyncService({
|
|
3989
|
+
listWaiting: async () => {
|
|
3990
|
+
const intake = getTicketIntakeService();
|
|
3991
|
+
// Never upload an empty set just because tickets are not wired yet.
|
|
3992
|
+
if (!intake)
|
|
3993
|
+
throw new Error('ticket service is not ready');
|
|
3994
|
+
// Only tickets that can be in 待验收 need their WorkItems looked up
|
|
3995
|
+
// (this runs every 30 s; done / cancelled / no-review tickets never are).
|
|
3996
|
+
const candidates = (await RequestService.getInstance().listAll()).filter((r) => typeof r.ticketNumber === 'number' && r.requiresConfirmation && r.status !== 'done' && r.status !== 'cancelled');
|
|
3997
|
+
const rows = await Promise.all(candidates.map((r) => intake.toListItem(r)));
|
|
3998
|
+
return rows.filter((row) => row.column === 'to_review');
|
|
3999
|
+
},
|
|
4000
|
+
cloud: {
|
|
4001
|
+
getToken: () => cloud.getToken(),
|
|
4002
|
+
getCloudUrl: () => cloud.getCloudUrl(),
|
|
4003
|
+
tryRefreshToken: () => cloud.tryRefreshToken(),
|
|
4004
|
+
},
|
|
4005
|
+
identity: async () => {
|
|
4006
|
+
const id = await DeviceIdentityService.getInstance().getOrCreateIdentity();
|
|
4007
|
+
return { instanceId: id.deviceId, deviceName: id.deviceName };
|
|
4008
|
+
},
|
|
4009
|
+
crewlyVersion: async () => VersionCheckService.getInstance().getLocalVersion(),
|
|
4010
|
+
agentNames: async () => new Map(buildAgentRoster(await this.storageService.getTeams())
|
|
4011
|
+
.filter((a) => a.displayName)
|
|
4012
|
+
.map((a) => [a.agentSession, a.displayName])),
|
|
4013
|
+
capabilities: () => [...cloudTalkCapabilities(), ...waitingActionCapabilities()],
|
|
4014
|
+
onTicketChange: (listener) => RequestService.getInstance().onChange(() => listener()),
|
|
4015
|
+
});
|
|
4016
|
+
setWaitingItemsSyncService(service);
|
|
4017
|
+
service.start();
|
|
4018
|
+
this.waitingItemsSync = service;
|
|
4019
|
+
}
|
|
4020
|
+
catch (error) {
|
|
4021
|
+
this.logger.warn('"Waiting on you" sync not started (non-fatal)', {
|
|
4022
|
+
error: error instanceof Error ? error.message : String(error),
|
|
4023
|
+
});
|
|
4024
|
+
}
|
|
4025
|
+
}
|
|
3824
4026
|
/**
|
|
3825
4027
|
* Load interrupted turns left by the previous shutdown (fresh ones only).
|
|
3826
4028
|
*/
|
|
@@ -4248,6 +4450,7 @@ export class CrewlyServer {
|
|
|
4248
4450
|
AutoUpdateService.getInstance()?.stop();
|
|
4249
4451
|
this.cloudDisconnectNotice?.stop();
|
|
4250
4452
|
this.conversationCloudSync?.stop();
|
|
4453
|
+
this.waitingItemsSync?.stop();
|
|
4251
4454
|
// Safe restart: stop delivering, wait for agents mid-turn, persist the rest.
|
|
4252
4455
|
// Runs before the force-exit timer below, which only bounds the teardown.
|
|
4253
4456
|
await this.drainInFlightTurns(options.reason ?? 'shutdown', options.drain !== false);
|
|
@@ -4482,6 +4685,8 @@ export class CrewlyServer {
|
|
|
4482
4685
|
this.teamsJsonWatcherService.stop();
|
|
4483
4686
|
// Stop log rotation service
|
|
4484
4687
|
LogRotationService.getInstance().stop();
|
|
4688
|
+
// Stop worktree janitor timers
|
|
4689
|
+
WorktreeJanitorService.getInstance().stop();
|
|
4485
4690
|
// Stop auditor scheduler
|
|
4486
4691
|
AuditorSchedulerService.getInstance().stop();
|
|
4487
4692
|
// Persist the token ledger: it flushes every 5 minutes, so a restart
|