crewly 1.20.153 → 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 +18 -2
- package/config/roles/team-leader/prompt.md +13 -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 +1 -1
- package/dist/backend/backend/src/constants.d.ts +359 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +350 -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/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +100 -7
- 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 +24 -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/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/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/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/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.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.js +2 -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/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 +359 -1
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +350 -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/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/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.map +1 -1
- package/dist/cli/backend/src/services/v3/request.service.js +2 -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
package/README.md
CHANGED
|
@@ -25,6 +25,18 @@ Under the hood, Crewly is an open-source multi-agent orchestration platform that
|
|
|
25
25
|
|
|
26
26
|
## Quick Start
|
|
27
27
|
|
|
28
|
+
```bash
|
|
29
|
+
curl -fsSL https://crewlyai.com/install.sh | bash
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The installer needs no `sudo`: if your global npm folder is not writable (a system Node on Linux), it installs Crewly under `~/.crewly/npm-global` and adds that to your PATH. Then it runs the setup wizard (the same as `crewly init`). When it finishes, open a new terminal and run:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
crewly start
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Prefer npm?** With Node from nvm, fnm or Homebrew (your user owns the global npm folder):
|
|
39
|
+
|
|
28
40
|
```bash
|
|
29
41
|
npm install -g crewly
|
|
30
42
|
crewly init
|
|
@@ -41,8 +53,6 @@ crewly init
|
|
|
41
53
|
crewly start
|
|
42
54
|
```
|
|
43
55
|
|
|
44
|
-
Node installed with nvm, fnm or Homebrew does not need this.
|
|
45
|
-
|
|
46
56
|
The `init` command walks you through provider selection, installs agent skills, and scaffolds a `.crewly/` directory. Then `crewly start` launches the backend server and opens the web dashboard. From there:
|
|
47
57
|
|
|
48
58
|
1. Create a **team** with agents assigned to roles
|
|
@@ -216,7 +226,15 @@ types into them — so the API must not be open to the network. The rules:
|
|
|
216
226
|
- **OKR approvals are owner-only.** `POST /api/missions/:id/approve|reject` require the
|
|
217
227
|
token even from loopback and refuse agent sessions (`403 owner_approval_required`);
|
|
218
228
|
agent PTYs never inherit `CREWLY_API_TOKEN`.
|
|
219
|
-
-
|
|
229
|
+
- **`/health` needs the token from other addresses too** (since #825). Loopback gets the
|
|
230
|
+
same response as before. Any other address without the token gets the same `401` as
|
|
231
|
+
`/api`, so a phone on your Wi-Fi without the token falls back to the Cloud relay instead
|
|
232
|
+
of picking a LAN connection it cannot use. **If you monitor `/health` from another
|
|
233
|
+
machine** (uptime checker, load balancer, a reverse proxy in front of Docker), either
|
|
234
|
+
send the token or set `CREWLY_PUBLIC_HEALTH=1` to keep it open. Behind Docker's port
|
|
235
|
+
mapping even `curl localhost:8787/health` *on the host* is a non-loopback call; the
|
|
236
|
+
container's own `HEALTHCHECK` runs inside the container and is unaffected.
|
|
237
|
+
- The static dashboard assets stay open. `POST /api/cloud/mobile-pair`
|
|
220
238
|
is token-gated like everything else (it hands out the Cloud session).
|
|
221
239
|
|
|
222
240
|
## Docker
|
package/config/constants.ts
CHANGED
|
@@ -295,7 +295,20 @@ export const API_SECURITY_CONSTANTS = {
|
|
|
295
295
|
TRUST_PROXY: 'CREWLY_TRUST_PROXY',
|
|
296
296
|
/** Set to `1`/`true` to force headless (no display) detection */
|
|
297
297
|
HEADLESS: 'CREWLY_HEADLESS',
|
|
298
|
+
/**
|
|
299
|
+
* Set to `1`/`true` to keep `GET /health` open to non-loopback callers
|
|
300
|
+
* without the API token (#825). For deployments that monitor /health
|
|
301
|
+
* from another machine or through a public reverse proxy.
|
|
302
|
+
*/
|
|
303
|
+
PUBLIC_HEALTH: 'CREWLY_PUBLIC_HEALTH',
|
|
298
304
|
},
|
|
305
|
+
/**
|
|
306
|
+
* Backend-only secrets that agent PTYs must not inherit from the backend's
|
|
307
|
+
* process.env. No agent, skill or runtime reads them (the Slack bridge runs
|
|
308
|
+
* in the backend), and an agent that runs `env` would print them into
|
|
309
|
+
* scrollback and its session log.
|
|
310
|
+
*/
|
|
311
|
+
AGENT_ENV_DENYLIST: ['SLACK_BOT_TOKEN', 'SLACK_APP_TOKEN', 'SLACK_SIGNING_SECRET'] as readonly string[],
|
|
299
312
|
/** Default bind host — every interface, for backward compatibility */
|
|
300
313
|
DEFAULT_BIND_HOST: '0.0.0.0',
|
|
301
314
|
/** Loopback-only bind host suggested in the startup warning */
|
|
@@ -1407,6 +1420,71 @@ export const CLOUD_DISCONNECT_NOTICE_CONSTANTS = {
|
|
|
1407
1420
|
SLACK_REQUEST_TIMEOUT_MS: 15 * 1000,
|
|
1408
1421
|
} as const;
|
|
1409
1422
|
|
|
1423
|
+
/**
|
|
1424
|
+
* Project tickets (specs/2026-09-28-project-tickets.md): a project's own
|
|
1425
|
+
* backlog, one markdown file per ticket under `<project>/.crewly/tickets/`,
|
|
1426
|
+
* tracked in git. Shared by the backend service, the CLI migration command
|
|
1427
|
+
* and (mirrored) the frontend board.
|
|
1428
|
+
*/
|
|
1429
|
+
export const PROJECT_TICKET_CONSTANTS = {
|
|
1430
|
+
/** Folder inside the project's `.crewly` data dir */
|
|
1431
|
+
DIR_NAME: 'tickets',
|
|
1432
|
+
/** Repo-relative folder, used for git tracking checks */
|
|
1433
|
+
REPO_RELATIVE_DIR: '.crewly/tickets',
|
|
1434
|
+
/** Counter file (tracked): `{ "prefix": "CRW", "next": 13 }` */
|
|
1435
|
+
COUNTER_FILENAME: '.counter.json',
|
|
1436
|
+
/** Cross-process lockfile (ignored by the folder's own .gitignore) */
|
|
1437
|
+
LOCK_FILENAME: '.lock',
|
|
1438
|
+
/** The folder's own .gitignore (keeps the lock and temp files out of version control) */
|
|
1439
|
+
FOLDER_GITIGNORE_CONTENT: '# Crewly: transient files, never commit\n.lock\n*.tmp.*\n',
|
|
1440
|
+
/** A lockfile older than this is considered left behind by a crashed writer (ms) */
|
|
1441
|
+
LOCK_STALE_MS: 30 * 1000,
|
|
1442
|
+
/** Wait between lock attempts (ms) */
|
|
1443
|
+
LOCK_RETRY_MS: 25,
|
|
1444
|
+
/** Give up acquiring the lock after this long (ms) */
|
|
1445
|
+
LOCK_TIMEOUT_MS: 10 * 1000,
|
|
1446
|
+
/** Ticket statuses, in board order */
|
|
1447
|
+
STATUSES: ['backlog', 'ready', 'in_progress', 'review', 'done', 'cancelled'] as const,
|
|
1448
|
+
/** Priorities, highest first */
|
|
1449
|
+
PRIORITIES: ['P0', 'P1', 'P2', 'P3'] as const,
|
|
1450
|
+
/** Priority of a ticket created without one */
|
|
1451
|
+
DEFAULT_PRIORITY: 'P2',
|
|
1452
|
+
/** Status of a ticket created without one (and of every worker-created ticket) */
|
|
1453
|
+
DEFAULT_STATUS: 'backlog',
|
|
1454
|
+
/** Fallback id prefix when the project name has no letters/digits */
|
|
1455
|
+
FALLBACK_PREFIX: 'T',
|
|
1456
|
+
/** Max characters of the id prefix derived from the project name */
|
|
1457
|
+
MAX_PREFIX_LENGTH: 4,
|
|
1458
|
+
/** Max characters of the slug in the file name */
|
|
1459
|
+
MAX_SLUG_LENGTH: 48,
|
|
1460
|
+
/** Section headings the service reads / writes */
|
|
1461
|
+
SECTIONS: {
|
|
1462
|
+
DESCRIPTION: 'Description',
|
|
1463
|
+
ACCEPTANCE: 'Acceptance criteria',
|
|
1464
|
+
LOG: 'Log',
|
|
1465
|
+
},
|
|
1466
|
+
/** `source` value stamped by the v1 migration */
|
|
1467
|
+
MIGRATION_SOURCE: 'v1-migration',
|
|
1468
|
+
/** v1 status folders whose files are imported (done/ and blocked/ are not) */
|
|
1469
|
+
MIGRATION_STATUS_FOLDERS: ['open', 'in_progress'] as const,
|
|
1470
|
+
/** v1 task root inside the project's `.crewly` data dir */
|
|
1471
|
+
MIGRATION_V1_DIR: 'tasks',
|
|
1472
|
+
/** Lines appended to the project's .gitignore when the tickets folder is ignored */
|
|
1473
|
+
GITIGNORE_BLOCK: [
|
|
1474
|
+
'# Crewly project tickets are tracked (specs/2026-09-28-project-tickets.md)',
|
|
1475
|
+
'!.crewly/',
|
|
1476
|
+
'.crewly/*',
|
|
1477
|
+
'!.crewly/tickets/',
|
|
1478
|
+
'!.crewly/tickets/**',
|
|
1479
|
+
] as const,
|
|
1480
|
+
/** WorkItem metadata key linking a WorkItem to its project ticket */
|
|
1481
|
+
WORK_ITEM_METADATA_KEY: 'projectTicket',
|
|
1482
|
+
/** How often the sweep reconciles tickets with their WorkItems (ms) */
|
|
1483
|
+
SYNC_SWEEP_INTERVAL_MS: 60 * 1000,
|
|
1484
|
+
/** Successor hops followed from a ticket's WorkItem before giving up */
|
|
1485
|
+
MAX_SUCCESSOR_HOPS: 8,
|
|
1486
|
+
} as const;
|
|
1487
|
+
|
|
1410
1488
|
/**
|
|
1411
1489
|
* Type helpers for extracting literal types from constants
|
|
1412
1490
|
*/
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Crewly agent-status hook — tells the backend when Claude Code is waiting on
|
|
3
|
+
# the user (a permission prompt or a question) and when it stops waiting.
|
|
4
|
+
#
|
|
5
|
+
# Spec: specs/2026-09-26-agent-waiting-on-human.md (#815, hook ingestion).
|
|
6
|
+
#
|
|
7
|
+
# Wired by the backend into the per-session settings file it already passes
|
|
8
|
+
# with `claude --settings <file>` (the control-plane guard's file) for:
|
|
9
|
+
# Notification, PermissionRequest, Stop, UserPromptSubmit, PostToolUse
|
|
10
|
+
#
|
|
11
|
+
# Usage: bash report.sh # hook JSON on stdin
|
|
12
|
+
#
|
|
13
|
+
# PRIVACY: the stdin JSON can hold tool_input, file contents, prompts and a
|
|
14
|
+
# transcript path, any of which may contain secrets. This script extracts
|
|
15
|
+
# exactly two TOP-LEVEL fields — hook_event_name and notification_type — keeps them only
|
|
16
|
+
# if they are plain identifiers ([A-Za-z_], max 64 chars), and sends those plus
|
|
17
|
+
# the session name. Nothing else from stdin is sent, printed or logged.
|
|
18
|
+
#
|
|
19
|
+
# It never blocks or slows the agent: every path exits 0, and the POST has a
|
|
20
|
+
# 2-second ceiling. A failed POST is dropped silently (the backend's screen
|
|
21
|
+
# detection still covers the state).
|
|
22
|
+
|
|
23
|
+
set -u
|
|
24
|
+
|
|
25
|
+
INPUT="$(cat)"
|
|
26
|
+
SESSION="${CREWLY_SESSION_NAME:-}"
|
|
27
|
+
API_URL="${CREWLY_API_URL:-http://localhost:${WEB_PORT:-8787}}"
|
|
28
|
+
|
|
29
|
+
# No session => nothing to attribute the event to.
|
|
30
|
+
[ -z "$SESSION" ] && exit 0
|
|
31
|
+
|
|
32
|
+
# Pull one TOP-LEVEL string field out of the JSON without echoing the rest.
|
|
33
|
+
# Only a real JSON parser can tell a top-level key from the same key nested in
|
|
34
|
+
# tool_input (a regex cannot: `"hook_event_name":"Stop"` inside a command would
|
|
35
|
+
# spoof the event). So: jq, else node's JSON.parse, else nothing — the event is
|
|
36
|
+
# dropped and the backend's screen detection still covers the state.
|
|
37
|
+
field() {
|
|
38
|
+
local name="$1" value=""
|
|
39
|
+
if command -v jq >/dev/null 2>&1; then
|
|
40
|
+
value="$(printf '%s' "$INPUT" | jq -r --arg k "$name" 'if type == "object" then (.[$k] // empty | select(type == "string")) else empty end' 2>/dev/null)"
|
|
41
|
+
elif command -v node >/dev/null 2>&1; then
|
|
42
|
+
value="$(printf '%s' "$INPUT" | node -e '
|
|
43
|
+
let s = "";
|
|
44
|
+
process.stdin.on("data", (c) => { s += c; });
|
|
45
|
+
process.stdin.on("end", () => {
|
|
46
|
+
try {
|
|
47
|
+
const o = JSON.parse(s);
|
|
48
|
+
const v = o && typeof o === "object" && !Array.isArray(o) ? o[process.argv[1]] : undefined;
|
|
49
|
+
if (typeof v === "string") process.stdout.write(v);
|
|
50
|
+
} catch { /* not JSON: send nothing */ }
|
|
51
|
+
});' "$name" 2>/dev/null)"
|
|
52
|
+
fi
|
|
53
|
+
# Keep only a plain identifier; anything else is discarded, not sanitised.
|
|
54
|
+
if printf '%s' "$value" | grep -Eq '^[A-Za-z_]{1,64}$'; then
|
|
55
|
+
printf '%s' "$value"
|
|
56
|
+
fi
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
EVENT="$(field hook_event_name)"
|
|
60
|
+
[ -z "$EVENT" ] && exit 0
|
|
61
|
+
NOTIFICATION_TYPE="$(field notification_type)"
|
|
62
|
+
|
|
63
|
+
if [ -n "$NOTIFICATION_TYPE" ]; then
|
|
64
|
+
BODY="{\"event\":\"$EVENT\",\"notificationType\":\"$NOTIFICATION_TYPE\"}"
|
|
65
|
+
else
|
|
66
|
+
BODY="{\"event\":\"$EVENT\"}"
|
|
67
|
+
fi
|
|
68
|
+
|
|
69
|
+
ARGS=(-s -o /dev/null --max-time 2 -X POST "$API_URL/api/agent-hooks"
|
|
70
|
+
-H "Content-Type: application/json"
|
|
71
|
+
-H "User-Agent: crewly-agent-status-hook/1"
|
|
72
|
+
-H "X-Agent-Session: $SESSION")
|
|
73
|
+
if [ -n "${CREWLY_AGENT_AUTHORIZATION:-}" ]; then
|
|
74
|
+
ARGS+=(-H "X-Agent-Authorization: b64:$(printf '%s' "$CREWLY_AGENT_AUTHORIZATION" | base64 | tr -d '\n')")
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
curl "${ARGS[@]}" --data "$BODY" >/dev/null 2>&1 || true
|
|
78
|
+
exit 0
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Crewly control-plane guard — Claude Code PreToolUse hook for the Bash tool.
|
|
3
|
+
#
|
|
4
|
+
# Spec: specs/2026-09-24-control-plane-isolation.md, Part 3 item 3.
|
|
5
|
+
#
|
|
6
|
+
# Usage (wired by the backend through `claude --settings <file>`):
|
|
7
|
+
# bash pretooluse-bash.sh <protected-paths-file> # PreToolUse JSON on stdin
|
|
8
|
+
#
|
|
9
|
+
# The paths file holds one absolute path per line (a file, or a directory
|
|
10
|
+
# whose whole subtree is protected). Lines starting with '#' are ignored.
|
|
11
|
+
#
|
|
12
|
+
# Blocks a Bash command that WRITES a protected path. It looks for:
|
|
13
|
+
# - redirection onto the path (>, >>, >|)
|
|
14
|
+
# - a mutating verb whose arguments name it
|
|
15
|
+
# rm rmdir unlink chmod chown chgrp truncate touch tee mv shred
|
|
16
|
+
# - in-place editors (sed -i, perl -i, gsed -i)
|
|
17
|
+
# - copy/link onto it as the destination (cp ln install rsync: last argument)
|
|
18
|
+
# - dd of=<path>
|
|
19
|
+
# - git checkout/restore/rm/mv/apply naming it
|
|
20
|
+
# Reads (cat, grep, jq, head, ls, cp FROM the path, ...) stay allowed.
|
|
21
|
+
#
|
|
22
|
+
# Exit codes follow the Claude Code hook contract:
|
|
23
|
+
# 0 allowed (stdout: what was checked)
|
|
24
|
+
# 2 blocked (stderr: the rule and path that matched, fed back to the agent)
|
|
25
|
+
# 1 guard could not check anything (no paths loaded). This is a non-blocking
|
|
26
|
+
# error, never a silent pass (team norm: a guard reports what it examined).
|
|
27
|
+
#
|
|
28
|
+
# Coverage limits, stated so a clean result is not over-read:
|
|
29
|
+
# - an interpreter one-liner (python -c, node -e) that writes the path is NOT seen
|
|
30
|
+
# - a path built at runtime (variables other than $HOME, cd + relative path
|
|
31
|
+
# from a different directory, globs, base64) is NOT seen
|
|
32
|
+
# - calls to the loopback API are NOT seen
|
|
33
|
+
|
|
34
|
+
set -u
|
|
35
|
+
|
|
36
|
+
PATHS_FILE="${1:-}"
|
|
37
|
+
PREFIX="control-plane-guard:"
|
|
38
|
+
|
|
39
|
+
INPUT="$(cat)"
|
|
40
|
+
|
|
41
|
+
if ! command -v jq >/dev/null 2>&1; then
|
|
42
|
+
echo "$PREFIX jq not found — 0 protected path(s) checked, guard inactive for this call" >&2
|
|
43
|
+
exit 1
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
TOOL_NAME="$(printf '%s' "$INPUT" | jq -r '.tool_name // empty' 2>/dev/null)"
|
|
47
|
+
COMMAND="$(printf '%s' "$INPUT" | jq -r '.tool_input.command // empty' 2>/dev/null)"
|
|
48
|
+
CWD="$(printf '%s' "$INPUT" | jq -r '.cwd // empty' 2>/dev/null)"
|
|
49
|
+
|
|
50
|
+
if [ "$TOOL_NAME" != "Bash" ]; then
|
|
51
|
+
echo "$PREFIX not a Bash call (${TOOL_NAME:-unknown}) — nothing to check"
|
|
52
|
+
exit 0
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
# ---- load protected paths -------------------------------------------------
|
|
56
|
+
PROTECTED=()
|
|
57
|
+
if [ -n "$PATHS_FILE" ] && [ -f "$PATHS_FILE" ]; then
|
|
58
|
+
while IFS= read -r line || [ -n "$line" ]; do
|
|
59
|
+
[ -z "$line" ] && continue
|
|
60
|
+
case "$line" in \#*) continue ;; esac
|
|
61
|
+
PROTECTED+=("${line%/}")
|
|
62
|
+
done < "$PATHS_FILE"
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
if [ "${#PROTECTED[@]}" -eq 0 ]; then
|
|
66
|
+
echo "$PREFIX NO PATHS CHECKED — protected-paths file missing or empty (${PATHS_FILE:-<none>}); refusing to report this command as safe" >&2
|
|
67
|
+
exit 1
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
# ---- normalise the command ------------------------------------------------
|
|
71
|
+
# Expand the home forms an agent would type, and drop quotes so a quoted
|
|
72
|
+
# path compares equal to a bare one.
|
|
73
|
+
NORM="$COMMAND"
|
|
74
|
+
HOME_DIR="${HOME:-}"
|
|
75
|
+
if [ -n "$HOME_DIR" ]; then
|
|
76
|
+
NORM="${NORM//\$\{HOME\}/$HOME_DIR}"
|
|
77
|
+
NORM="${NORM//\$HOME/$HOME_DIR}"
|
|
78
|
+
NORM="${NORM//\~\//$HOME_DIR/}"
|
|
79
|
+
fi
|
|
80
|
+
NORM="${NORM//\"/}"
|
|
81
|
+
NORM="${NORM//\'/}"
|
|
82
|
+
|
|
83
|
+
# Split into simple-command segments on ; & | and newlines. A segment keeps
|
|
84
|
+
# its own redirections, so `cat f > /tmp/x` and `echo x > f` are judged apart.
|
|
85
|
+
# Pure bash (BSD sed has no \n in replacements). The redirection operators
|
|
86
|
+
# that contain & or | (>&, &>, >|) are shielded first so they are not split.
|
|
87
|
+
NL=$'\n'
|
|
88
|
+
SPLIT="$NORM"
|
|
89
|
+
SPLIT="${SPLIT//>|/__CPG_GT_PIPE__}"
|
|
90
|
+
SPLIT="${SPLIT//>&/__CPG_GT_AMP__}"
|
|
91
|
+
SPLIT="${SPLIT//&>/__CPG_AMP_GT__}"
|
|
92
|
+
SPLIT="${SPLIT//;/$NL}"
|
|
93
|
+
SPLIT="${SPLIT//|/$NL}"
|
|
94
|
+
SPLIT="${SPLIT//&/$NL}"
|
|
95
|
+
SPLIT="${SPLIT//__CPG_GT_PIPE__/>|}"
|
|
96
|
+
SPLIT="${SPLIT//__CPG_GT_AMP__/>&}"
|
|
97
|
+
SPLIT="${SPLIT//__CPG_AMP_GT__/&>}"
|
|
98
|
+
SEGMENTS=()
|
|
99
|
+
while IFS= read -r seg; do
|
|
100
|
+
[ -n "${seg//[[:space:]]/}" ] && SEGMENTS+=("$seg")
|
|
101
|
+
done <<< "$SPLIT"
|
|
102
|
+
|
|
103
|
+
# Forms of a protected path that a command might contain: the absolute path,
|
|
104
|
+
# and when it sits under the call's cwd, the cwd-relative path (with and
|
|
105
|
+
# without a leading ./).
|
|
106
|
+
path_forms() {
|
|
107
|
+
local p="$1"
|
|
108
|
+
printf '%s\n' "$p"
|
|
109
|
+
if [ -n "$CWD" ] && [ "${p#"${CWD%/}"/}" != "$p" ]; then
|
|
110
|
+
local rel="${p#"${CWD%/}"/}"
|
|
111
|
+
printf '%s\n' "$rel"
|
|
112
|
+
printf '%s\n' "./$rel"
|
|
113
|
+
fi
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
# word_hits WORD FORM — true when WORD names FORM itself or something under it.
|
|
117
|
+
word_hits() {
|
|
118
|
+
local w="$1" f="$2"
|
|
119
|
+
[ "$w" = "$f" ] && return 0
|
|
120
|
+
case "$w" in "$f"/*) return 0 ;; esac
|
|
121
|
+
return 1
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
# segment_writes SEGMENT FORM — prints the matched rule and returns 0 when the
|
|
125
|
+
# segment writes FORM.
|
|
126
|
+
segment_writes() {
|
|
127
|
+
local seg="$1" f="$2"
|
|
128
|
+
|
|
129
|
+
# 1. redirection targets
|
|
130
|
+
local rest="$seg" t word
|
|
131
|
+
while [ "${rest#*>}" != "$rest" ]; do
|
|
132
|
+
rest="${rest#*>}"
|
|
133
|
+
t="${rest#[>|]}"
|
|
134
|
+
t="${t#"${t%%[![:space:]]*}"}"
|
|
135
|
+
word="${t%%[[:space:]]*}"
|
|
136
|
+
if [ -n "$word" ] && word_hits "$word" "$f"; then
|
|
137
|
+
echo "redirection '>' onto it"; return 0
|
|
138
|
+
fi
|
|
139
|
+
done
|
|
140
|
+
|
|
141
|
+
# 2. verbs — strip the redirections, then word-split
|
|
142
|
+
local plain
|
|
143
|
+
plain="$(printf '%s' "$seg" | sed -E 's/[0-9]*>[>|]?[[:space:]]*[^[:space:]]+//g')"
|
|
144
|
+
local -a words
|
|
145
|
+
read -r -a words <<< "$plain"
|
|
146
|
+
[ "${#words[@]}" -eq 0 ] && return 1
|
|
147
|
+
|
|
148
|
+
local i=0
|
|
149
|
+
while [ "$i" -lt "${#words[@]}" ]; do
|
|
150
|
+
case "${words[$i]}" in
|
|
151
|
+
*=*|sudo|command|env|nohup|time|xargs|exec) i=$((i+1)) ;;
|
|
152
|
+
*) break ;;
|
|
153
|
+
esac
|
|
154
|
+
done
|
|
155
|
+
[ "$i" -ge "${#words[@]}" ] && return 1
|
|
156
|
+
local verb="${words[$i]##*/}"
|
|
157
|
+
local -a args=("${words[@]:$((i+1))}")
|
|
158
|
+
[ "${#args[@]}" -eq 0 ] && return 1
|
|
159
|
+
|
|
160
|
+
local a any=1
|
|
161
|
+
for a in "${args[@]}"; do
|
|
162
|
+
if word_hits "$a" "$f"; then any=0; break; fi
|
|
163
|
+
done
|
|
164
|
+
|
|
165
|
+
case "$verb" in
|
|
166
|
+
rm|rmdir|unlink|chmod|chown|chgrp|truncate|touch|tee|mv|shred)
|
|
167
|
+
[ "$any" -eq 0 ] && { echo "'$verb' on it"; return 0; } ;;
|
|
168
|
+
sed|gsed|perl)
|
|
169
|
+
if [ "$any" -eq 0 ]; then
|
|
170
|
+
for a in "${args[@]}"; do
|
|
171
|
+
case "$a" in -i*|--in-place*|-pi*|-*i) echo "'$verb -i' (in-place edit) on it"; return 0 ;; esac
|
|
172
|
+
done
|
|
173
|
+
fi ;;
|
|
174
|
+
cp|ln|install|rsync|scp)
|
|
175
|
+
local last="${args[$((${#args[@]}-1))]}"
|
|
176
|
+
word_hits "$last" "$f" && { echo "'$verb' with it as the destination"; return 0; } ;;
|
|
177
|
+
dd)
|
|
178
|
+
for a in "${args[@]}"; do
|
|
179
|
+
case "$a" in of=*) word_hits "${a#of=}" "$f" && { echo "'dd of=' onto it"; return 0; } ;; esac
|
|
180
|
+
done ;;
|
|
181
|
+
git)
|
|
182
|
+
# Find the REAL git subcommand: the first non-option token after
|
|
183
|
+
# `git`, skipping global options that take a value (-C <dir>,
|
|
184
|
+
# -c <key>=<value>) and any other -x/--x option (assumed to take no
|
|
185
|
+
# separate value token, which covers realistic agent usage).
|
|
186
|
+
#
|
|
187
|
+
# Bug this replaces (WorkItem 70e54fbc): the old code treated ANY
|
|
188
|
+
# word among the git command's arguments as if it might be the
|
|
189
|
+
# subcommand, so `git commit -m "fix dist build and rm stale files"`
|
|
190
|
+
# was blocked — "rm" is just a word inside the commit message, not
|
|
191
|
+
# the subcommand being run. Restricting the match to the actual
|
|
192
|
+
# subcommand position, and to that subcommand's own arguments (not
|
|
193
|
+
# unrelated text like -m's message), fixes the false positive while
|
|
194
|
+
# still catching `git checkout|restore|rm|mv|apply` naming the path.
|
|
195
|
+
local gi=0
|
|
196
|
+
while [ "$gi" -lt "${#args[@]}" ]; do
|
|
197
|
+
case "${args[$gi]}" in
|
|
198
|
+
-C|-c) gi=$((gi+2)) ;;
|
|
199
|
+
-*) gi=$((gi+1)) ;;
|
|
200
|
+
*) break ;;
|
|
201
|
+
esac
|
|
202
|
+
done
|
|
203
|
+
local subcmd="${args[$gi]:-}"
|
|
204
|
+
case "$subcmd" in
|
|
205
|
+
checkout|restore|rm|mv|apply)
|
|
206
|
+
local -a subargs=("${args[@]:$((gi+1))}")
|
|
207
|
+
local sa
|
|
208
|
+
for sa in "${subargs[@]}"; do
|
|
209
|
+
if word_hits "$sa" "$f"; then
|
|
210
|
+
echo "'git $subcmd' on it"
|
|
211
|
+
return 0
|
|
212
|
+
fi
|
|
213
|
+
done
|
|
214
|
+
;;
|
|
215
|
+
esac ;;
|
|
216
|
+
esac
|
|
217
|
+
return 1
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
# ---- check every protected path -------------------------------------------
|
|
221
|
+
CHECKED=0
|
|
222
|
+
for p in "${PROTECTED[@]}"; do
|
|
223
|
+
CHECKED=$((CHECKED+1))
|
|
224
|
+
while IFS= read -r form; do
|
|
225
|
+
case "$NORM" in *"$form"*) ;; *) continue ;; esac
|
|
226
|
+
for seg in "${SEGMENTS[@]}"; do
|
|
227
|
+
case "$seg" in *"$form"*) ;; *) continue ;; esac
|
|
228
|
+
if rule="$(segment_writes "$seg" "$form")"; then
|
|
229
|
+
{
|
|
230
|
+
echo "$PREFIX BLOCKED — matched $rule: $p"
|
|
231
|
+
echo "$PREFIX checked ${#PROTECTED[@]} protected path(s); command segment: ${seg}"
|
|
232
|
+
echo "Stopping, restarting and reconfiguring agents is routine operations, and the files that do it are changed by the Crewly backend, not by agent sessions. Reading them is fine. If the owner asked for this change in the current task, tell them and ask them to make it."
|
|
233
|
+
} >&2
|
|
234
|
+
exit 2
|
|
235
|
+
fi
|
|
236
|
+
done
|
|
237
|
+
done < <(path_forms "$p")
|
|
238
|
+
done
|
|
239
|
+
|
|
240
|
+
echo "$PREFIX allowed — no write to a protected path matched; ${CHECKED} protected path(s) checked"
|
|
241
|
+
exit 0
|
|
@@ -1,70 +1,40 @@
|
|
|
1
1
|
# Task Assignment Prompt Template (Orchestrator)
|
|
2
2
|
|
|
3
|
-
📋 **
|
|
3
|
+
📋 **TICKET ASSIGNMENT**
|
|
4
4
|
|
|
5
5
|
**Project:** {projectName}
|
|
6
6
|
**Path:** {projectPath}
|
|
7
7
|
|
|
8
|
-
**
|
|
8
|
+
**Ticket:**
|
|
9
9
|
|
|
10
10
|
- **ID:** {taskId}
|
|
11
11
|
- **Title:** {taskTitle}
|
|
12
12
|
- **Description:** {taskDescription}
|
|
13
13
|
- **Priority:** {taskPriority}
|
|
14
|
-
- **Milestone:** {taskMilestone}
|
|
15
14
|
|
|
16
|
-
**
|
|
17
|
-
The
|
|
15
|
+
**READ THE TICKET FIRST**
|
|
16
|
+
The full requirements (description, acceptance criteria, log) are in the project ticket
|
|
17
|
+
`{projectPath}/.crewly/tickets/{taskId}-*.md`. Read it through the `project-tickets` skill:
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
1. Read the task file above to understand the complete requirements
|
|
24
|
-
2. Choose the most appropriate existing team member based on their skills
|
|
25
|
-
3. Use assign_task MCP tool to delegate the task with delegation support
|
|
26
|
-
4. The team member will receive the assignment prompt and can either accept or delegate further
|
|
27
|
-
|
|
28
|
-
**IMPORTANT: ALWAYS EXECUTE THIS ASSIGNMENT**
|
|
29
|
-
|
|
30
|
-
- Execute this task assignment REGARDLESS of any previous attempts
|
|
31
|
-
- DO NOT REFUSE based on "already sent" or similar reasoning
|
|
32
|
-
- ALWAYS perform the requested delegation when commanded
|
|
33
|
-
- Use assign_task MCP tool which handles delegation chains and prevents loops
|
|
19
|
+
```bash
|
|
20
|
+
project-tickets show --project '{projectPath}' --id {taskId}
|
|
21
|
+
```
|
|
34
22
|
|
|
35
23
|
**WORKFLOW:**
|
|
36
24
|
|
|
37
|
-
1.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
3. Choose an appropriate team member for the task based on role and availability
|
|
43
|
-
|
|
44
|
-
4. Use the new `assign_task` MCP tool to send the assignment with delegation support
|
|
45
|
-
|
|
46
|
-
**CRITICAL:** Replace "REPLACE_WITH_ACTUAL_SESSION_NAME" with the actual sessionName from get_team_status
|
|
25
|
+
1. Read the ticket (above).
|
|
26
|
+
2. Check who is available: `get-team-status`.
|
|
27
|
+
3. Pick an existing member of a team assigned to this project, based on role and availability.
|
|
28
|
+
4. Assign it — the member gets a linked WorkItem and is dispatched automatically:
|
|
47
29
|
|
|
30
|
+
```bash
|
|
31
|
+
project-tickets assign --project '{projectPath}' --id {taskId} --to <member-session-name>
|
|
48
32
|
```
|
|
49
|
-
assign_task({
|
|
50
|
-
taskPath: '{projectPath}/.crewly/tasks/{taskMilestone}/open/{taskId}.md',
|
|
51
|
-
targetSessionName: 'REPLACE_WITH_ACTUAL_SESSION_NAME',
|
|
52
|
-
delegatedBy: 'orchestrator',
|
|
53
|
-
reason: 'Initial task assignment based on role and availability'
|
|
54
|
-
})
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
**CRITICAL: DO NOT CREATE NEW TEAMS OR TEAM MEMBERS**
|
|
58
33
|
|
|
59
|
-
|
|
60
|
-
- Use assign_task tool to delegate, which handles delegation chains automatically
|
|
61
|
-
- If task assignment fails, simply report the failure to the user
|
|
62
|
-
- DO NOT use create_team or similar tools to spawn new agents
|
|
34
|
+
**RULES:**
|
|
63
35
|
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
- Full delegation history is tracked for transparency
|
|
68
|
-
- Agents make intelligent delegation decisions based on their expertise
|
|
36
|
+
- Use only existing team members that are already on a team of this project; do not create teams or members.
|
|
37
|
+
- A ticket that is already in progress is being worked; do not assign it twice.
|
|
38
|
+
- If the assignment fails, report the error to the user.
|
|
69
39
|
|
|
70
|
-
Please acknowledge
|
|
40
|
+
Please acknowledge and assign the ticket.
|