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
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# =============================================================================
|
|
3
|
+
# assign-ticket (TL) — assign a project ticket to one of your workers
|
|
4
|
+
#
|
|
5
|
+
# Backed by POST /api/project-tickets/:project/:id/assign
|
|
6
|
+
# (specs/2026-09-28-project-tickets.md §5). The backend checks that you lead a
|
|
7
|
+
# team on the project and that the assignee is on an eligible team. An agent
|
|
8
|
+
# assignee gets a linked WorkItem right away (dispatched to it); `--no-start`
|
|
9
|
+
# only records the assignee.
|
|
10
|
+
#
|
|
11
|
+
# Usage:
|
|
12
|
+
# bash execute.sh --project P --id APP-12 --to <worker-session> [--no-start]
|
|
13
|
+
# bash execute.sh '{"project":"P","id":"APP-12","to":"worker-session"}'
|
|
14
|
+
# =============================================================================
|
|
15
|
+
set -euo pipefail
|
|
16
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
17
|
+
source "${SCRIPT_DIR}/../_common/lib.sh"
|
|
18
|
+
|
|
19
|
+
print_usage() {
|
|
20
|
+
cat <<'EOF_USAGE'
|
|
21
|
+
Usage:
|
|
22
|
+
bash execute.sh --project P --id APP-12 --to <worker-session> [--no-start]
|
|
23
|
+
|
|
24
|
+
Options:
|
|
25
|
+
--project Project id, name or absolute path (required)
|
|
26
|
+
--id Ticket id, e.g. APP-12 (required)
|
|
27
|
+
--to Session name of the worker (or a person's name) (required)
|
|
28
|
+
--no-start Only record the assignee; do not create the WorkItem yet
|
|
29
|
+
--help | -h Show this help
|
|
30
|
+
EOF_USAGE
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
PROJECT=""; ID=""; TO=""; START="true"
|
|
34
|
+
if [[ $# -gt 0 && ${1:0:1} == '{' ]]; then
|
|
35
|
+
PROJECT=$(printf '%s' "$1" | jq -r '.project // .projectPath // .projectId // empty')
|
|
36
|
+
ID=$(printf '%s' "$1" | jq -r '.id // .ticket // empty')
|
|
37
|
+
TO=$(printf '%s' "$1" | jq -r '.to // .assignee // empty')
|
|
38
|
+
START=$(printf '%s' "$1" | jq -r 'if .start == false then "false" else "true" end')
|
|
39
|
+
shift || true
|
|
40
|
+
fi
|
|
41
|
+
while [[ $# -gt 0 ]]; do
|
|
42
|
+
case "$1" in
|
|
43
|
+
--project|-p) [ $# -ge 2 ] || error_exit "--project requires a value"; PROJECT="$2"; shift 2 ;;
|
|
44
|
+
--id|--ticket) [ $# -ge 2 ] || error_exit "--id requires a value"; ID="$2"; shift 2 ;;
|
|
45
|
+
--to|--assignee) [ $# -ge 2 ] || error_exit "--to requires a value"; TO="$2"; shift 2 ;;
|
|
46
|
+
--no-start) START="false"; shift ;;
|
|
47
|
+
--help|-h) print_usage; exit 0 ;;
|
|
48
|
+
*) error_exit "Unknown option: $1" ;;
|
|
49
|
+
esac
|
|
50
|
+
done
|
|
51
|
+
|
|
52
|
+
require_param "project" "$PROJECT"
|
|
53
|
+
require_param "id" "$ID"
|
|
54
|
+
require_param "to" "$TO"
|
|
55
|
+
|
|
56
|
+
enc() { jq -rn --arg v "$1" '$v|@uri'; }
|
|
57
|
+
BODY=$(jq -n --arg to "$TO" --argjson start "$START" '{assignee: $to, start: $start}')
|
|
58
|
+
api_call POST "/project-tickets/$(enc "$PROJECT")/$(enc "$ID")/assign" "$BODY" \
|
|
59
|
+
| jq '{success, ticket: (.data.ticket | {id, title, status, priority, assignee, workItemId}), workItemId: (.data.workItem.id // null)}'
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Tests for assign-ticket (TL) — run with: bash execute.test.sh
|
|
3
|
+
# A python HTTP stub plays the backend; asserts the call and the output.
|
|
4
|
+
set -u
|
|
5
|
+
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
EXEC="$HERE/execute.sh"
|
|
7
|
+
PASS=0; FAIL=0
|
|
8
|
+
check() {
|
|
9
|
+
local name="$1"; local got="$2"; local want="$3"
|
|
10
|
+
if [ "$got" = "$want" ]; then PASS=$((PASS+1)); else FAIL=$((FAIL+1)); echo "FAIL: $name"; echo " want: $want"; echo " got: $got"; fi
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
PORT=18842
|
|
14
|
+
STUB_LOG="$(mktemp)"; export STUB_LOG; export STUB_PORT="$PORT"
|
|
15
|
+
python3 -u <<'PY' >/dev/null 2>&1 &
|
|
16
|
+
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
17
|
+
import json, os
|
|
18
|
+
LOG = os.environ['STUB_LOG']; PORT = int(os.environ['STUB_PORT'])
|
|
19
|
+
class H(BaseHTTPRequestHandler):
|
|
20
|
+
def reply(self, code, obj):
|
|
21
|
+
self.send_response(code); self.send_header('Content-Type', 'application/json'); self.end_headers()
|
|
22
|
+
self.wfile.write(json.dumps(obj).encode())
|
|
23
|
+
def do_GET(self):
|
|
24
|
+
return self.reply(200, {'ok': True})
|
|
25
|
+
def do_POST(self):
|
|
26
|
+
n = int(self.headers.get('content-length', '0')); body = json.loads(self.rfile.read(n).decode() or '{}')
|
|
27
|
+
open(LOG, 'w').write(json.dumps({'path': self.path, 'body': body, 'agent': self.headers.get('X-Agent-Session')}))
|
|
28
|
+
if body.get('assignee') == 'outsider':
|
|
29
|
+
return self.reply(403, {'success': False, 'error': 'outsider is not on a team that works on APP-1'})
|
|
30
|
+
started = body.get('start', True)
|
|
31
|
+
t = {'id': 'APP-1', 'title': 'Export', 'status': 'in_progress' if started else 'ready', 'priority': 'P1',
|
|
32
|
+
'assignee': body['assignee'], 'workItemId': 'wi-1' if started else None}
|
|
33
|
+
data = {'ticket': t}
|
|
34
|
+
if started: data['workItem'] = {'id': 'wi-1'}
|
|
35
|
+
return self.reply(200, {'success': True, 'data': data})
|
|
36
|
+
def log_message(self, *a, **k): pass
|
|
37
|
+
HTTPServer(('127.0.0.1', PORT), H).serve_forever()
|
|
38
|
+
PY
|
|
39
|
+
STUB_PID=$!
|
|
40
|
+
disown "$STUB_PID" 2>/dev/null || true
|
|
41
|
+
trap 'kill "$STUB_PID" >/dev/null 2>&1; rm -f "$STUB_LOG"' EXIT
|
|
42
|
+
for i in $(seq 1 30); do curl -s -o /dev/null -m 0.2 "http://127.0.0.1:${PORT}/" 2>/dev/null && break; sleep 0.1; done
|
|
43
|
+
|
|
44
|
+
run() { CREWLY_SESSION_NAME=tl-sam CREWLY_API_URL="http://127.0.0.1:${PORT}" bash "$EXEC" "$@" 2>/dev/null; }
|
|
45
|
+
run_err() { CREWLY_SESSION_NAME=tl-sam CREWLY_API_URL="http://127.0.0.1:${PORT}" bash "$EXEC" "$@" 2>&1 >/dev/null; }
|
|
46
|
+
|
|
47
|
+
OUT=$(run --project /work/app --id APP-1 --to dev-ann)
|
|
48
|
+
check "path (project path encoded)" "$(jq -r .path "$STUB_LOG")" "/api/project-tickets/%2Fwork%2Fapp/APP-1/assign"
|
|
49
|
+
check "body" "$(jq -c .body "$STUB_LOG")" '{"assignee":"dev-ann","start":true}'
|
|
50
|
+
check "header" "$(jq -r .agent "$STUB_LOG")" "tl-sam"
|
|
51
|
+
check "output" "$(printf '%s' "$OUT" | jq -c '[.ticket.status, .ticket.assignee, .workItemId]')" '["in_progress","dev-ann","wi-1"]'
|
|
52
|
+
|
|
53
|
+
OUT=$(run '{"project":"p1","id":"APP-1","to":"dev-bo","start":false}')
|
|
54
|
+
check "json no-start body" "$(jq -c .body "$STUB_LOG")" '{"assignee":"dev-bo","start":false}'
|
|
55
|
+
check "no-start output" "$(printf '%s' "$OUT" | jq -c '[.ticket.status, .workItemId]')" '["ready",null]'
|
|
56
|
+
run --project p1 --id APP-1 --to dev-bo --no-start >/dev/null
|
|
57
|
+
check "flag no-start" "$(jq -c .body.start "$STUB_LOG")" "false"
|
|
58
|
+
|
|
59
|
+
check "403 surfaces" "$(run_err --project p1 --id APP-1 --to outsider | grep -c '403')" "1"
|
|
60
|
+
check "missing to" "$(run_err --project p1 --id APP-1 | grep -c 'to')" "1"
|
|
61
|
+
check "unknown option" "$(run_err --bogus | grep -c 'Unknown option')" "1"
|
|
62
|
+
|
|
63
|
+
echo "assign-ticket: ${PASS} passed, ${FAIL} failed"
|
|
64
|
+
[ "$FAIL" -eq 0 ]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Decompose Goal
|
|
3
|
-
description: "Break down a high-level objective from the Orchestrator into specific, actionable sub-tasks for workers. Creates task
|
|
3
|
+
description: "Break down a high-level objective from the Orchestrator into specific, actionable sub-tasks for workers. Creates one WorkItem per sub-task in the task pool."
|
|
4
4
|
version: 1.0.0
|
|
5
5
|
category: management
|
|
6
6
|
skillType: claude-skill
|
|
@@ -26,7 +26,7 @@ execution:
|
|
|
26
26
|
|
|
27
27
|
# Decompose Goal
|
|
28
28
|
|
|
29
|
-
Breaks down a high-level objective from the Orchestrator into specific, actionable sub-tasks for workers. Each sub-task is created as a task
|
|
29
|
+
Breaks down a high-level objective from the Orchestrator into specific, actionable sub-tasks for workers. Each sub-task is created as a WorkItem in the task pool. (For the project's own long-lived backlog use the `project-tickets` skill instead.)
|
|
30
30
|
|
|
31
31
|
## When to Use
|
|
32
32
|
|
|
@@ -89,8 +89,8 @@ Where `/tmp/decompose.json` contains:
|
|
|
89
89
|
"objective": "Build user authentication module",
|
|
90
90
|
"tasksCreated": 2,
|
|
91
91
|
"tasks": [
|
|
92
|
-
{ "title": "Implement JWT token service", "requiredRole": "backend-developer", "
|
|
93
|
-
{ "title": "Build login form component", "requiredRole": "frontend-developer", "
|
|
92
|
+
{ "title": "Implement JWT token service", "requiredRole": "backend-developer", "workItemId": "abc123", "priority": "high" },
|
|
93
|
+
{ "title": "Build login form component", "requiredRole": "frontend-developer", "workItemId": "def456", "priority": "high" }
|
|
94
94
|
],
|
|
95
95
|
"errors": []
|
|
96
96
|
}
|
|
@@ -43,7 +43,7 @@ Assigns a task to a worker within the Team Leader's subordinate scope. Validates
|
|
|
43
43
|
| `--task-file` | — | No | Read task description from a file path |
|
|
44
44
|
| `--priority` / `-P` | `priority` | No | Priority: `low`, `normal`, `high` (default: `normal`) |
|
|
45
45
|
| `--context` / `-c` | `context` | No | Additional context for the worker. Scanned for the Request Contract alongside `--task` |
|
|
46
|
-
| `--project` / `-p` | `projectPath` | No | Project path;
|
|
46
|
+
| `--project` / `-p` | `projectPath` | No | Project path; recorded on the WorkItem (`metadata.projectPath`) |
|
|
47
47
|
| `--team` / `-g` | `teamId` | No | Team ID for hierarchy validation |
|
|
48
48
|
| `--tl-member` | `tlMemberId` | No | TL's member ID for hierarchy validation |
|
|
49
49
|
| `--from` | `fromSession` | No | Delegating TL's session name (for monitoring) |
|
|
@@ -43,12 +43,12 @@ Supports two modes:
|
|
|
43
43
|
|
|
44
44
|
### With explicit checks (legacy)
|
|
45
45
|
```bash
|
|
46
|
-
bash {{SKILLS_PATH}}/team-leader/verify-output/execute.sh '{"
|
|
46
|
+
bash {{SKILLS_PATH}}/team-leader/verify-output/execute.sh '{"workItemId":"<WorkItem id>","workerId":"worker-1","teamId":"team-123","projectPath":"/path/to/project","checks":[{"name":"build","command":"npm run build"},{"name":"tests","command":"npm test"}]}'
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
### With template pipeline (recommended)
|
|
50
50
|
```bash
|
|
51
|
-
bash {{SKILLS_PATH}}/team-leader/verify-output/execute.sh '{"
|
|
51
|
+
bash {{SKILLS_PATH}}/team-leader/verify-output/execute.sh '{"workItemId":"<WorkItem id>","workerId":"worker-1","teamId":"team-123","projectPath":"/path/to/project","templateId":"dev-fullstack"}'
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
## Parameters
|
|
@@ -80,7 +80,7 @@ git worktree remove /tmp/crewly-{ticket-name}-{owner}
|
|
|
80
80
|
**Notes:**
|
|
81
81
|
- Step 4 is also done for you: the backend's worktree janitor removes a worktree under `.claude/worktrees/` or `/tmp/crewly-worktrees/` once its branch is merged (or its PR is MERGED), it is clean, and it has been idle for 2 hours. Uncommitted or untracked files keep it.
|
|
82
82
|
- `node_modules` is not installed in the worktree by default. For prompt/doc-only PRs that's fine. For backend code PRs that need `npm test` / `npm run build`, run those checks back in the main repo or `npm install` inside the worktree.
|
|
83
|
-
- `.crewly/`
|
|
83
|
+
- `.crewly/` is usually gitignored, except `.crewly/tickets/` (project tickets, tracked on purpose). Notes you write elsewhere under `.crewly/` in a worktree won't appear in the diff and other agents won't see them. Put work other agents must pick up in a project ticket (`project-tickets create`), and edit tickets only through that skill, never by hand in a worktree — the live copy is the main checkout's.
|
|
84
84
|
- Do NOT use the main repo `crewly/` directory to develop a feature branch when another agent is also active in the team. The main repo is the orchestrator's coordination surface, not a per-agent dev sandbox.
|
|
85
85
|
|
|
86
86
|
**Solo work exception:** if you are the only developer active in the team and you're not parking work for parallel review, working directly in the main repo is acceptable. The worktree pattern is required only when there is a real risk of branch-state collision.
|
|
@@ -7,6 +7,36 @@ export declare const PROCESS_EXIT_CODES: {
|
|
|
7
7
|
readonly ERROR: 1;
|
|
8
8
|
readonly RESTART_REQUESTED: 120;
|
|
9
9
|
};
|
|
10
|
+
/** Project tickets (specs/2026-09-28-project-tickets.md) — see config/constants.ts. */
|
|
11
|
+
export declare const PROJECT_TICKET_CONSTANTS: {
|
|
12
|
+
readonly DIR_NAME: "tickets";
|
|
13
|
+
readonly REPO_RELATIVE_DIR: ".crewly/tickets";
|
|
14
|
+
readonly COUNTER_FILENAME: ".counter.json";
|
|
15
|
+
readonly LOCK_FILENAME: ".lock";
|
|
16
|
+
readonly FOLDER_GITIGNORE_CONTENT: "# Crewly: transient files, never commit\n.lock\n*.tmp.*\n";
|
|
17
|
+
readonly LOCK_STALE_MS: number;
|
|
18
|
+
readonly LOCK_RETRY_MS: 25;
|
|
19
|
+
readonly LOCK_TIMEOUT_MS: number;
|
|
20
|
+
readonly STATUSES: readonly ["backlog", "ready", "in_progress", "review", "done", "cancelled"];
|
|
21
|
+
readonly PRIORITIES: readonly ["P0", "P1", "P2", "P3"];
|
|
22
|
+
readonly DEFAULT_PRIORITY: "P2";
|
|
23
|
+
readonly DEFAULT_STATUS: "backlog";
|
|
24
|
+
readonly FALLBACK_PREFIX: "T";
|
|
25
|
+
readonly MAX_PREFIX_LENGTH: 4;
|
|
26
|
+
readonly MAX_SLUG_LENGTH: 48;
|
|
27
|
+
readonly SECTIONS: {
|
|
28
|
+
readonly DESCRIPTION: "Description";
|
|
29
|
+
readonly ACCEPTANCE: "Acceptance criteria";
|
|
30
|
+
readonly LOG: "Log";
|
|
31
|
+
};
|
|
32
|
+
readonly MIGRATION_SOURCE: "v1-migration";
|
|
33
|
+
readonly MIGRATION_STATUS_FOLDERS: readonly ["open", "in_progress"];
|
|
34
|
+
readonly MIGRATION_V1_DIR: "tasks";
|
|
35
|
+
readonly GITIGNORE_BLOCK: readonly ["# Crewly project tickets are tracked (specs/2026-09-28-project-tickets.md)", "!.crewly/", ".crewly/*", "!.crewly/tickets/", "!.crewly/tickets/**"];
|
|
36
|
+
readonly WORK_ITEM_METADATA_KEY: "projectTicket";
|
|
37
|
+
readonly SYNC_SWEEP_INTERVAL_MS: number;
|
|
38
|
+
readonly MAX_SUCCESSOR_HOPS: 8;
|
|
39
|
+
};
|
|
10
40
|
/**
|
|
11
41
|
* Safe restart: drain in-flight agent turns before a shutdown kills the PTYs,
|
|
12
42
|
* and resume the ones that were cut off after the next boot.
|
|
@@ -330,7 +360,9 @@ export declare const API_SECURITY_CONSTANTS: {
|
|
|
330
360
|
readonly API_TOKEN: "CREWLY_API_TOKEN";
|
|
331
361
|
readonly TRUST_PROXY: "CREWLY_TRUST_PROXY";
|
|
332
362
|
readonly HEADLESS: "CREWLY_HEADLESS";
|
|
363
|
+
readonly PUBLIC_HEALTH: "CREWLY_PUBLIC_HEALTH";
|
|
333
364
|
};
|
|
365
|
+
readonly AGENT_ENV_DENYLIST: readonly string[];
|
|
334
366
|
readonly DEFAULT_BIND_HOST: "0.0.0.0";
|
|
335
367
|
readonly LOOPBACK_BIND_HOST: "127.0.0.1";
|
|
336
368
|
readonly TOKEN_FILE_NAME: "api-token";
|
|
@@ -595,6 +627,91 @@ export declare const PTY_CONSTANTS: {
|
|
|
595
627
|
*/
|
|
596
628
|
readonly ORPHAN_REAPER_INTERVAL_MS: number;
|
|
597
629
|
};
|
|
630
|
+
/**
|
|
631
|
+
* Control-plane guard for Claude Code agent sessions (Request 72c9427a,
|
|
632
|
+
* specs/2026-09-24-control-plane-isolation.md Part 3).
|
|
633
|
+
*
|
|
634
|
+
* The backend writes a per-session settings file (permissions.deny + a
|
|
635
|
+
* PreToolUse Bash hook) and passes it with `--settings`, so an agent cannot
|
|
636
|
+
* edit the files that stop, start and configure agents. All paths are
|
|
637
|
+
* relative to the root named by the group: CREWLY_HOME (`~/.crewly`), the
|
|
638
|
+
* install root (the Crewly package / checkout), or the agent's project path.
|
|
639
|
+
*/
|
|
640
|
+
export declare const CONTROL_PLANE_GUARD_CONSTANTS: {
|
|
641
|
+
/** Backend env var; `0` turns the guard off for every session launched by this backend. */
|
|
642
|
+
readonly KILL_SWITCH_ENV: "CREWLY_CONTROL_PLANE_GUARD";
|
|
643
|
+
/** Value of KILL_SWITCH_ENV that disables the guard. Any other value (or unset) keeps it on. */
|
|
644
|
+
readonly KILL_SWITCH_OFF_VALUE: "0";
|
|
645
|
+
/** Directory under CREWLY_HOME that holds the generated per-session files. */
|
|
646
|
+
readonly RUNTIME_DIR: "runtime/control-plane";
|
|
647
|
+
/** Suffix of the generated Claude Code settings file (`<session><suffix>`). */
|
|
648
|
+
readonly SETTINGS_FILE_SUFFIX: ".settings.json";
|
|
649
|
+
/** Suffix of the protected-paths list the Bash hook reads (`<session><suffix>`). */
|
|
650
|
+
readonly PATHS_FILE_SUFFIX: ".paths";
|
|
651
|
+
/** The PreToolUse Bash hook, relative to the install root. */
|
|
652
|
+
readonly HOOK_SCRIPT: "config/hooks/control-plane-guard/pretooluse-bash.sh";
|
|
653
|
+
/** CLI flag the settings file is passed with. */
|
|
654
|
+
readonly SETTINGS_FLAG: "--settings";
|
|
655
|
+
/** Claude Code tool the PreToolUse hook is attached to. */
|
|
656
|
+
readonly HOOK_TOOL_MATCHER: "Bash";
|
|
657
|
+
/**
|
|
658
|
+
* Write-protected directories under CREWLY_HOME (whole subtree).
|
|
659
|
+
*
|
|
660
|
+
* `teams` is deliberately NOT here (WorkItem 70e54fbc / #798 review):
|
|
661
|
+
* specs/2026-09-24-control-plane-isolation.md Part 2 protects only
|
|
662
|
+
* `teams/*\/config.json`, not the whole subtree. A team directory also
|
|
663
|
+
* holds `norms/`, `wiki/`, `prompts/`, `sops/` and `cron-tasks.json` —
|
|
664
|
+
* files agents write routinely (`remember`, `record-learning`,
|
|
665
|
+
* norm/SOP authoring, follow-up scheduling). Blanket-protecting `teams`
|
|
666
|
+
* would block all of that. See TEAM_CONFIG_FILE_NAME below for how the
|
|
667
|
+
* narrower rule is built (one entry per existing team, resolved at
|
|
668
|
+
* guard-prep time since the hook needs literal paths, not globs).
|
|
669
|
+
*/
|
|
670
|
+
readonly CREWLY_HOME_DIRS: readonly ["triggers", "runtime/control-plane"];
|
|
671
|
+
/**
|
|
672
|
+
* Directory under CREWLY_HOME holding one subdirectory per team, each
|
|
673
|
+
* expected to contain a `config.json` (see TEAM_CONFIG_FILE_NAME).
|
|
674
|
+
*/
|
|
675
|
+
readonly TEAMS_DIR_NAME: "teams";
|
|
676
|
+
/** File name, within each team's directory, that the guard protects. */
|
|
677
|
+
readonly TEAM_CONFIG_FILE_NAME: "config.json";
|
|
678
|
+
/** Write-protected files under CREWLY_HOME. */
|
|
679
|
+
readonly CREWLY_HOME_FILES: readonly ["recurring-checks.json", "one-time-checks.json", "scheduled-messages.json", "settings.json", "runtime-pids.json", "session-state.json", "api-token"];
|
|
680
|
+
/** Files under CREWLY_HOME that agents must not read with the built-in tools either. */
|
|
681
|
+
readonly CREWLY_HOME_READ_DENIED_FILES: readonly ["api-token"];
|
|
682
|
+
/** Write-protected directories under the install root (whole subtree). */
|
|
683
|
+
readonly INSTALL_DIRS: readonly ["config/skills/orchestrator/stop-agent", "config/skills/orchestrator/start-agent", "config/skills/orchestrator/terminate-agent", "config/skills/orchestrator/stop-team", "config/skills/orchestrator/start-team", "config/skills/orchestrator/restart-crewly", "config/hooks/control-plane-guard", "config/hooks/agent-status", "dist"];
|
|
684
|
+
/** Write-protected files under the install root. */
|
|
685
|
+
readonly INSTALL_FILES: readonly ["config/skills/_common/lib.sh"];
|
|
686
|
+
/** Write-protected directories under the agent's project path (whole subtree). */
|
|
687
|
+
readonly PROJECT_DIRS: readonly [".claude/agents", ".crewly/triggers"];
|
|
688
|
+
};
|
|
689
|
+
/**
|
|
690
|
+
* Agent-status hook (#815, specs/2026-09-26-agent-waiting-on-human.md): Claude
|
|
691
|
+
* Code hook events that tell the backend when an agent waits on the user.
|
|
692
|
+
* Registered in the control-plane guard's per-session settings file, never as
|
|
693
|
+
* a second settings file, and never on PreToolUse (that event is the guard's).
|
|
694
|
+
*/
|
|
695
|
+
export declare const AGENT_STATUS_HOOK_CONSTANTS: {
|
|
696
|
+
/** Hook script, relative to the install root. */
|
|
697
|
+
readonly HOOK_SCRIPT: "config/hooks/agent-status/report.sh";
|
|
698
|
+
/** Hook events the script is registered for. */
|
|
699
|
+
readonly EVENTS: readonly ["Notification", "PermissionRequest", "Stop", "UserPromptSubmit", "PostToolUse"];
|
|
700
|
+
/** Events that carry a tool matcher; they match every tool. */
|
|
701
|
+
readonly TOOL_EVENTS: readonly ["PermissionRequest", "PostToolUse"];
|
|
702
|
+
/** Matcher that selects every tool. */
|
|
703
|
+
readonly ALL_TOOLS_MATCHER: "*";
|
|
704
|
+
/** Notification types that mean "waiting on the user". */
|
|
705
|
+
readonly WAITING_NOTIFICATION_TYPES: readonly ["permission_prompt", "elicitation_dialog"];
|
|
706
|
+
/** Every notification type the endpoint accepts (others are rejected). */
|
|
707
|
+
readonly KNOWN_NOTIFICATION_TYPES: readonly ["permission_prompt", "elicitation_dialog", "idle_prompt", "auth_success"];
|
|
708
|
+
/** Max length of an accepted event or notification-type identifier. */
|
|
709
|
+
readonly MAX_IDENTIFIER_LENGTH: 64;
|
|
710
|
+
/** Sessions whose latest hook signal is kept in memory (oldest dropped past this). */
|
|
711
|
+
readonly MAX_TRACKED_SESSIONS: 500;
|
|
712
|
+
/** Accepted X-Agent-Session header value. */
|
|
713
|
+
readonly SESSION_NAME_PATTERN: RegExp;
|
|
714
|
+
};
|
|
598
715
|
/**
|
|
599
716
|
* Session recreation (Step 2 full recreation in AgentRegistrationService).
|
|
600
717
|
*
|
|
@@ -924,6 +1041,44 @@ export declare const ACTIVITY_MONITOR_CONSTANTS: {
|
|
|
924
1041
|
* (spinners, TUI re-renders). Default: 15 minutes. */
|
|
925
1042
|
readonly MAX_IN_PROGRESS_MS: 900000;
|
|
926
1043
|
};
|
|
1044
|
+
/**
|
|
1045
|
+
* Give-up recovery (#841, specs/2026-09-27-give-up-recovery.md): when a worker
|
|
1046
|
+
* stops on a feasibility give-up, queue a retry with a different approach,
|
|
1047
|
+
* bounded per root WorkItem, then one escalation to the team lead.
|
|
1048
|
+
*/
|
|
1049
|
+
export declare const GIVE_UP_RECOVERY_CONSTANTS: {
|
|
1050
|
+
/** Retries per root WorkItem when the team sets no recoveryPolicy. */
|
|
1051
|
+
readonly DEFAULT_MAX_RETRIES: 2;
|
|
1052
|
+
/** Retry WorkItem id: `${rootId}${RETRY_ID_INFIX}${attempt}`. */
|
|
1053
|
+
readonly RETRY_ID_INFIX: ":giveup:";
|
|
1054
|
+
/** Escalation review WorkItem id: `${rootId}${REVIEW_ID_SUFFIX}`. */
|
|
1055
|
+
readonly REVIEW_ID_SUFFIX: ":review:gave_up";
|
|
1056
|
+
/** WorkItem.metadata key for the recorded stop classification. */
|
|
1057
|
+
readonly STOP_METADATA_KEY: "stop";
|
|
1058
|
+
/** WorkItem.metadata key for the attempt log carried by retries. */
|
|
1059
|
+
readonly GIVE_UP_METADATA_KEY: "giveUp";
|
|
1060
|
+
/** Characters of stop text kept per attempt. */
|
|
1061
|
+
readonly MAX_REASON_CHARS: 2000;
|
|
1062
|
+
/** Audit label for transitions this feature makes. */
|
|
1063
|
+
readonly ACTOR_VIA: "give-up-recovery";
|
|
1064
|
+
};
|
|
1065
|
+
/**
|
|
1066
|
+
* Constants for the waiting_on_human attention verdict (#815).
|
|
1067
|
+
* See specs/2026-09-26-agent-waiting-on-human.md.
|
|
1068
|
+
*/
|
|
1069
|
+
export declare const AGENT_ATTENTION_CONSTANTS: {
|
|
1070
|
+
/** Non-empty lines at the bottom of the screen the dialog rules examine.
|
|
1071
|
+
* Dialogs render at the bottom; older answered dialogs sit above it. */
|
|
1072
|
+
readonly BOTTOM_LINES: 20;
|
|
1073
|
+
/** Lines captured from the terminal buffer for the verdict (more than the
|
|
1074
|
+
* 5 lines the activity diff uses, because a dialog spans ~15 lines). */
|
|
1075
|
+
readonly CAPTURE_LINES: 60;
|
|
1076
|
+
/** How long an agent must stay waiting_on_human before the reconciler moves
|
|
1077
|
+
* its running WorkItems to blocked (5 minutes). */
|
|
1078
|
+
readonly BLOCK_WORK_ITEM_AFTER_MS: 300000;
|
|
1079
|
+
/** WorkItem blockedReason / escalation reason used for this state. */
|
|
1080
|
+
readonly BLOCKED_REASON: "waiting_on_human";
|
|
1081
|
+
};
|
|
927
1082
|
/**
|
|
928
1083
|
* Event bus constants for the agent event pub/sub system.
|
|
929
1084
|
* Used by EventBusService for subscription management and notification delivery.
|
|
@@ -1045,6 +1200,94 @@ export declare const WIKI_KB_CONSTANTS: {
|
|
|
1045
1200
|
/** Frontmatter keys agents may set. */
|
|
1046
1201
|
readonly FRONTMATTER_KEYS: readonly ["title", "summary", "keep_because", "tags", "visibility", "source", "caller", "recorded", "updated", "superseded_by", "superseded_at", "superseded_reason", "proposed_by"];
|
|
1047
1202
|
};
|
|
1203
|
+
/**
|
|
1204
|
+
* Standing-answer pages (#816): a few question-anchored pages per scope,
|
|
1205
|
+
* read at boot as a plain file read (no retrieval, no LLM) and refreshed by
|
|
1206
|
+
* an agent only when the memory behind them has moved.
|
|
1207
|
+
*/
|
|
1208
|
+
export declare const STANDING_ANSWERS_CONSTANTS: {
|
|
1209
|
+
/** Project pages live here, under the project's `.crewly` data dir. */
|
|
1210
|
+
readonly PROJECT_DIR: "wiki/llm-curated/standing";
|
|
1211
|
+
/** The agent page, under `<CREWLY_HOME>/agents/<session>/`. */
|
|
1212
|
+
readonly AGENT_FILE: "standing.md";
|
|
1213
|
+
/** Page id of the agent page. */
|
|
1214
|
+
readonly AGENT_PAGE_ID: "unfinished-work";
|
|
1215
|
+
/** Hard cap on the whole Standing Answers prompt section (~2 000 tokens). */
|
|
1216
|
+
readonly PROMPT_MAX_CHARS: 8000;
|
|
1217
|
+
/** Cap on one page's body inside the prompt. */
|
|
1218
|
+
readonly PROMPT_PAGE_MAX_CHARS: 3000;
|
|
1219
|
+
/** Cap on one section body written through the API. */
|
|
1220
|
+
readonly SECTION_MAX_CHARS: 1500;
|
|
1221
|
+
/** Cap on a section heading. */
|
|
1222
|
+
readonly HEADING_MAX_CHARS: 80;
|
|
1223
|
+
/** Cap on citations per section. */
|
|
1224
|
+
readonly MAX_CITES_PER_SECTION: 20;
|
|
1225
|
+
/** Entries listed in a refresh WorkItem brief. */
|
|
1226
|
+
readonly BRIEF_MAX_ENTRIES: 30;
|
|
1227
|
+
/** Characters of each entry shown in a refresh brief. */
|
|
1228
|
+
readonly BRIEF_ENTRY_MAX_CHARS: 240;
|
|
1229
|
+
/** Refresh tick interval when CREWLY_WIKI_REFLECT_INTERVAL_MS is unset (the reflect default). */
|
|
1230
|
+
readonly REFRESH_INTERVAL_MS: number;
|
|
1231
|
+
/** Minimum time between two refresh WorkItems for the same page. */
|
|
1232
|
+
readonly REFRESH_COOLDOWN_MS: number;
|
|
1233
|
+
/** At most this many refresh WorkItems per tick (PTY paste-flood guard). */
|
|
1234
|
+
readonly REFRESH_MAX_CREATES_PER_TICK: 2;
|
|
1235
|
+
/**
|
|
1236
|
+
* A refresh WorkItem that failed or was cancelled without writing the page
|
|
1237
|
+
* is retried even though the source watermark has not moved again (it
|
|
1238
|
+
* otherwise would not be re-raised until new memory arrives). Bounded so a
|
|
1239
|
+
* page that keeps failing does not retry forever.
|
|
1240
|
+
*/
|
|
1241
|
+
readonly REFRESH_MAX_RETRIES: 2;
|
|
1242
|
+
/** Refresh bookkeeping (last raised watermark per page), under CREWLY_HOME. */
|
|
1243
|
+
readonly REFRESH_STATE_FILE: "standing-refresh-state.json";
|
|
1244
|
+
/** `metadata.kind` of refresh WorkItems. */
|
|
1245
|
+
readonly WORKITEM_KIND: "standing-refresh";
|
|
1246
|
+
/**
|
|
1247
|
+
* Decisions whose title starts with this are task-completion records that
|
|
1248
|
+
* report-status files automatically, not decisions; they are out of scope
|
|
1249
|
+
* for "decisions in force" (in this repo: 229 of 327 decision entries).
|
|
1250
|
+
*/
|
|
1251
|
+
readonly COMPLETED_DECISION_PREFIX: "[COMPLETED]";
|
|
1252
|
+
/**
|
|
1253
|
+
* Agent-memory entries starting with this are report-status completion
|
|
1254
|
+
* learnings ("Task completed: <summary>"). Done work is neither
|
|
1255
|
+
* unfinished nor blocking, so they are out of scope for the agent page
|
|
1256
|
+
* and do not move its watermark; "Task failed:"/"Task blocked:" stay in.
|
|
1257
|
+
*/
|
|
1258
|
+
readonly COMPLETED_LEARNING_PREFIX: "Task completed:";
|
|
1259
|
+
};
|
|
1260
|
+
/**
|
|
1261
|
+
* Per-WorkItem git worktrees (#814). Opt-in per project in v1
|
|
1262
|
+
* (`Project.worktrees = 'on'`); a team can opt out (`Team.worktrees =
|
|
1263
|
+
* 'off'`); `CREWLY_WORKTREES=off` disables them everywhere.
|
|
1264
|
+
*/
|
|
1265
|
+
export declare const WORKTREE_CONSTANTS: {
|
|
1266
|
+
/** Worktrees live here, relative to the repo root (gitignored via .crewly). */
|
|
1267
|
+
readonly DIR: ".crewly/worktrees";
|
|
1268
|
+
/** Per-worktree manifests (symlinks, copies, base) live here, inside DIR. */
|
|
1269
|
+
readonly META_DIR: ".meta";
|
|
1270
|
+
/** Branch name prefix: `wi/<workItemId>`. */
|
|
1271
|
+
readonly BRANCH_PREFIX: "wi/";
|
|
1272
|
+
/** Repo-root file listing gitignored-but-needed files to copy in. */
|
|
1273
|
+
readonly INCLUDE_FILE: ".worktreeinclude";
|
|
1274
|
+
/** Cap on `.worktreeinclude` entries honoured. */
|
|
1275
|
+
readonly INCLUDE_MAX_ENTRIES: 50;
|
|
1276
|
+
/** Heavy directories symlinked (not copied) from the repo root when present and untracked. */
|
|
1277
|
+
readonly DEFAULT_SHARED_DIRS: readonly string[];
|
|
1278
|
+
/** Marker line for the entries this feature adds to `.git/info/exclude`. */
|
|
1279
|
+
readonly EXCLUDE_MARKER: "# crewly worktree shared paths (#814) — never commit these";
|
|
1280
|
+
/** Timeout for local git commands (checkout of a large repo can take minutes under load). */
|
|
1281
|
+
readonly GIT_TIMEOUT_MS: number;
|
|
1282
|
+
/** Timeout for `git ls-remote` (offline must not hang the sweep). */
|
|
1283
|
+
readonly REMOTE_TIMEOUT_MS: 15000;
|
|
1284
|
+
/** Orphan sweep interval. */
|
|
1285
|
+
readonly SWEEP_INTERVAL_MS: number;
|
|
1286
|
+
/** Kill switch env var; the value `off` disables worktrees everywhere. */
|
|
1287
|
+
readonly ENV_KILL_SWITCH: "CREWLY_WORKTREES";
|
|
1288
|
+
/** WorkItem metadata key holding the worktree record. */
|
|
1289
|
+
readonly METADATA_KEY: "worktree";
|
|
1290
|
+
};
|
|
1048
1291
|
/** One of {@link WIKI_KB_CONSTANTS.KEEP_BECAUSE}. */
|
|
1049
1292
|
export type WikiKeepBecause = (typeof WIKI_KB_CONSTANTS.KEEP_BECAUSE)[number];
|
|
1050
1293
|
/** How many recent thread channels an owner notification tries before giving up when SLACK_DEFAULT_CHANNEL is unset. */
|
|
@@ -1704,7 +1947,15 @@ export declare const FRESH_TASK_CONVERSATION_CONSTANTS: {
|
|
|
1704
1947
|
readonly ENV_TOGGLE: "CREWLY_FRESH_TASK_CONVERSATION";
|
|
1705
1948
|
/** Under CREWLY_HOME: `{ [session]: lastDeliveredRootId }` */
|
|
1706
1949
|
readonly STATE_FILE: "fresh-task-conversation.json";
|
|
1707
|
-
/**
|
|
1950
|
+
/**
|
|
1951
|
+
* Id suffixes that mark follow-ups of the same task (retries, verifies,
|
|
1952
|
+
* reviews). Deliberately excludes give-up recovery's `:giveup:N` (#841,
|
|
1953
|
+
* #843): a give-up retry is meant to be a materially DIFFERENT approach,
|
|
1954
|
+
* and its WorkItem description already carries the full attempt log, so
|
|
1955
|
+
* nothing is lost by treating it as a new root — the agent starts that
|
|
1956
|
+
* retry with a fresh conversation instead of one anchored on the
|
|
1957
|
+
* reasoning that just failed. See give-up-recovery.service.ts buildRetry.
|
|
1958
|
+
*/
|
|
1708
1959
|
readonly ROOT_SUFFIX_MARKERS: readonly [":retry:", ":verify:", ":review:"];
|
|
1709
1960
|
/** The Claude Code command that starts a new conversation */
|
|
1710
1961
|
readonly CLEAR_COMMAND: "/clear";
|
|
@@ -3107,6 +3358,33 @@ export declare const SELF_IMPROVEMENT_CONSTANTS: {
|
|
|
3107
3358
|
readonly INACCURATE: readonly ["incorrect", "inaccurate", "false", "no", "wrong", "missed"];
|
|
3108
3359
|
};
|
|
3109
3360
|
};
|
|
3361
|
+
/**
|
|
3362
|
+
* Daily owner receipt (#828): one phone-readable message every evening with
|
|
3363
|
+
* every ask of the window, its outcome and link, what waits on the owner, and
|
|
3364
|
+
* what it cost. See specs/owner-receipt.md.
|
|
3365
|
+
*/
|
|
3366
|
+
export declare const OWNER_RECEIPT_CONSTANTS: {
|
|
3367
|
+
/** Default local send time (HH:MM, 24h) */
|
|
3368
|
+
readonly DEFAULT_TIME: "21:00";
|
|
3369
|
+
/** Default owner time zone (same default as team-health off-hours) */
|
|
3370
|
+
readonly DEFAULT_TIMEZONE: "America/New_York";
|
|
3371
|
+
/** How often the scheduler checks whether it is time (ms) */
|
|
3372
|
+
readonly TICK_INTERVAL_MS: number;
|
|
3373
|
+
/** Settings + last-sent state, under ~/.crewly */
|
|
3374
|
+
readonly STATE_FILENAME: "owner-receipt.json";
|
|
3375
|
+
/** An ask is shortened to this many characters (CJK count double) */
|
|
3376
|
+
readonly MAX_ASK_WEIGHTED_LENGTH: 56;
|
|
3377
|
+
/** A waiting-on-you question is shortened to this many characters */
|
|
3378
|
+
readonly MAX_QUESTION_WEIGHTED_LENGTH: 90;
|
|
3379
|
+
/** Ask lines in the Slack message before "另有 N 件" (phone length) */
|
|
3380
|
+
readonly MAX_ASK_LINES: 30;
|
|
3381
|
+
/** Waiting-on-you lines before "另有 N 件" */
|
|
3382
|
+
readonly MAX_WAITING_LINES: 12;
|
|
3383
|
+
/** 「可能漏记」 lines: appended messages that still read like a request (#828 coverage) */
|
|
3384
|
+
readonly MAX_POSSIBLY_MISSED: 5;
|
|
3385
|
+
/** Team label for a ticket nobody is assigned to */
|
|
3386
|
+
readonly UNASSIGNED_TEAM: "未分配";
|
|
3387
|
+
};
|
|
3110
3388
|
/**
|
|
3111
3389
|
* Ticket loop (specs/ticket-loop.md, Phase 1): owner messages become tickets
|
|
3112
3390
|
* (a `Request` with a TKT number), receipts go back where the owner spoke,
|
|
@@ -3119,6 +3397,13 @@ export declare const TICKET_CONSTANTS: {
|
|
|
3119
3397
|
readonly NUMBER_PAD: 3;
|
|
3120
3398
|
/** Counter file inside the requests dir (no `.json`, so listAll never reads it) */
|
|
3121
3399
|
readonly COUNTER_FILENAME: ".ticket-counter";
|
|
3400
|
+
/**
|
|
3401
|
+
* #828 coverage: one JSON line per owner message intake handled
|
|
3402
|
+
* (created / appended / ignored + reason), next to the Request files. The
|
|
3403
|
+
* first line records when counting started, so a window that begins
|
|
3404
|
+
* earlier is reported as unknown (不详), never as 0.
|
|
3405
|
+
*/
|
|
3406
|
+
readonly INTAKE_LOG_FILENAME: ".intake-outcomes.jsonl";
|
|
3122
3407
|
/** Tag every ticket carries */
|
|
3123
3408
|
readonly TAG: "ticket";
|
|
3124
3409
|
/** Tag added when the owner said "don't track" */
|
|
@@ -3129,8 +3414,81 @@ export declare const TICKET_CONSTANTS: {
|
|
|
3129
3414
|
* (7 CJK = 14), while "好的收到" (8) does not.
|
|
3130
3415
|
*/
|
|
3131
3416
|
readonly MIN_WEIGHTED_TEXT_LENGTH: 12;
|
|
3417
|
+
/** Tag on a ticket an agent split out of another (#827) */
|
|
3418
|
+
readonly SPLIT_TAG: "split";
|
|
3132
3419
|
/** A bare "don't track" reply dismisses the ticket it answers */
|
|
3133
3420
|
readonly DISMISS_PATTERN: RegExp;
|
|
3421
|
+
/**
|
|
3422
|
+
* Ask classifier (#827): is an owner message a new ask, or a follow-up on
|
|
3423
|
+
* the thread's current deliverable? Deterministic, text only. Every
|
|
3424
|
+
* pattern below was taken from real owner messages of 2026-09-25/26 — see
|
|
3425
|
+
* ticket-ask-classifier.test.ts for the labelled set. Scoring and the
|
|
3426
|
+
* tie rule live in ticket-ask-classifier.ts.
|
|
3427
|
+
*/
|
|
3428
|
+
readonly ASK: {
|
|
3429
|
+
/** A request verb: something to go and do (+2 ask) */
|
|
3430
|
+
readonly REQUEST_VERB: RegExp;
|
|
3431
|
+
/**
|
|
3432
|
+
* An explicit request construction (+3 ask instead of +2). Survives the
|
|
3433
|
+
* long-discussion damping: 「你能不能帮我…总结成一个MD文档」 inside a
|
|
3434
|
+
* voice transcript is still an ask.
|
|
3435
|
+
*/
|
|
3436
|
+
readonly STRONG_REQUEST: RegExp;
|
|
3437
|
+
/** A question that asks for information (+1 ask; on its own, a question ticket) */
|
|
3438
|
+
readonly INFO_QUESTION: RegExp;
|
|
3439
|
+
/** The message points at something to look at: a link, an image, a file path */
|
|
3440
|
+
readonly REFERENCE: RegExp;
|
|
3441
|
+
/** A bare 「看看」 (look) — an ask only when it has a reference to look at */
|
|
3442
|
+
readonly LOOK: RegExp;
|
|
3443
|
+
/** Opens a new topic, near the start (+1 ask) */
|
|
3444
|
+
readonly NEW_TOPIC: RegExp;
|
|
3445
|
+
/** Suggests something new to do (+1 ask) */
|
|
3446
|
+
readonly IDEA: RegExp;
|
|
3447
|
+
/** First line is a numbered reply to the agent's list (+3 follow) */
|
|
3448
|
+
readonly NUMBERED_REPLY: RegExp;
|
|
3449
|
+
/**
|
|
3450
|
+
* How the CURRENT deliverable should be delivered (+3 follow). Needs a
|
|
3451
|
+
* delivery verb: a bare `00-plan.md` path is not an instruction.
|
|
3452
|
+
*/
|
|
3453
|
+
readonly DELIVERY_FORMAT: RegExp;
|
|
3454
|
+
/** Clarifies or corrects the work in progress (+2 follow) */
|
|
3455
|
+
readonly CLARIFY: RegExp;
|
|
3456
|
+
/** Feedback on the current draft (+3 follow) */
|
|
3457
|
+
readonly FEEDBACK: RegExp;
|
|
3458
|
+
/** Asks the agent about its own work or plan (+2 follow) */
|
|
3459
|
+
readonly ABOUT_AGENT_WORK: RegExp;
|
|
3460
|
+
/**
|
|
3461
|
+
* Opens by correcting or choosing (+3 follow): 「不对 我要你研究的是…」,
|
|
3462
|
+
* 「不是前面…」, 「方案A」 — a reply to the agent, never a new ask.
|
|
3463
|
+
*/
|
|
3464
|
+
readonly CORRECTION_OR_CHOICE: RegExp;
|
|
3465
|
+
/** 「…给我看看吗」: show me the current thing (+3 follow) */
|
|
3466
|
+
readonly SHOW_ME_TAIL: RegExp;
|
|
3467
|
+
/** Retry / continue the current work (+3 follow): 「你再看看」「按你说的继续挖」 */
|
|
3468
|
+
readonly RETRY_CONTINUE: RegExp;
|
|
3469
|
+
/** Ends as a suggestion about the current work (+3 follow): 「…添加一些截图吧?」 */
|
|
3470
|
+
readonly SUGGEST_TAIL: RegExp;
|
|
3471
|
+
/** Asks where things stand (+3 follow; top level: not an ask) */
|
|
3472
|
+
readonly STATUS_PING: RegExp;
|
|
3473
|
+
/**
|
|
3474
|
+
* A line that approves what the agent proposed: starts with an ack and
|
|
3475
|
+
* ends in approval ("好的 开issue可以的", "好的 部署吧") (+3 follow)
|
|
3476
|
+
*/
|
|
3477
|
+
readonly APPROVAL_LINE: RegExp;
|
|
3478
|
+
/** A line that is only an acknowledgement (ignored when scoring the rest) */
|
|
3479
|
+
readonly ACK_ONLY_LINE: RegExp;
|
|
3480
|
+
/**
|
|
3481
|
+
* Weighted length above which a message reads as spoken discussion (a
|
|
3482
|
+
* voice transcript): a follow-up unless it opens a new topic (+2 follow)
|
|
3483
|
+
*/
|
|
3484
|
+
readonly LONG_DISCUSSION_WEIGHTED_LENGTH: 300;
|
|
3485
|
+
/** Ends like a question (a verb-less question in a thread needs one) */
|
|
3486
|
+
readonly QUESTION_MARK: RegExp;
|
|
3487
|
+
/** Quoted text is content, not a request: 接住“能不能帮我做” asks nothing */
|
|
3488
|
+
readonly QUOTED: RegExp;
|
|
3489
|
+
/** Minimum ask score for a new ask; it must also beat the follow score (ties append) */
|
|
3490
|
+
readonly MIN_ASK_SCORE: 2;
|
|
3491
|
+
};
|
|
3134
3492
|
/**
|
|
3135
3493
|
* A top-level "不用记" (no thread) dismisses the latest open ticket from the
|
|
3136
3494
|
* same conversation if it was opened this recently (ms).
|