crewly 1.20.153 → 1.20.155
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/delegate-task/execute.sh +17 -4
- 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 +397 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +388 -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/monitoring/terminal.controller.d.ts +32 -0
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +122 -8
- package/dist/backend/backend/src/controllers/monitoring/terminal.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 +113 -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 +43 -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 +129 -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 +154 -2
- 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 +380 -22
- 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-bus.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js +6 -0
- package/dist/backend/backend/src/services/event-bus/event-bus.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 +323 -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 +88 -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 +169 -5
- 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 +6 -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 +397 -1
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +388 -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 +43 -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 +129 -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/fresh-task-conversation.service.d.ts +409 -0
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js +961 -0
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.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/event-bus/event-bus.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/event-bus/event-bus.service.js +6 -0
- package/dist/cli/backend/src/services/event-bus/event-bus.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 +323 -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 +6 -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,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Control-plane guard for Claude Code agent sessions.
|
|
3
|
+
*
|
|
4
|
+
* Request 72c9427a, spec `specs/2026-09-24-control-plane-isolation.md` Part 3.
|
|
5
|
+
* The backend writes two files per session under
|
|
6
|
+
* `~/.crewly/runtime/control-plane/`:
|
|
7
|
+
*
|
|
8
|
+
* - `<session>.settings.json` — a Claude Code settings file with
|
|
9
|
+
* `permissions.deny` rules for the control-plane paths and a PreToolUse
|
|
10
|
+
* hook on the Bash tool. It is passed with `claude --settings <file>`.
|
|
11
|
+
* - `<session>.paths` — the protected-path list the hook script reads.
|
|
12
|
+
*
|
|
13
|
+
* Both files, and the hook script itself, are on their own deny list.
|
|
14
|
+
*
|
|
15
|
+
* Coverage (stated in the hook's output as well): this stops an agent editing
|
|
16
|
+
* the stop/start/config mechanisms with its normal tools, and accidental
|
|
17
|
+
* edits. It does NOT stop an interpreter one-liner, a runtime-built path, or a
|
|
18
|
+
* call to the loopback API. That needs OS-level isolation (spec Part 4).
|
|
19
|
+
*/
|
|
20
|
+
/** Roots the protected paths are resolved against. */
|
|
21
|
+
export interface ControlPlaneRoots {
|
|
22
|
+
/** Crewly home directory (`~/.crewly`, or `$CREWLY_HOME`). */
|
|
23
|
+
crewlyHome: string;
|
|
24
|
+
/** Crewly install root (package dir or checkout) that holds `config/` and `dist/`. */
|
|
25
|
+
installRoot: string;
|
|
26
|
+
/** The agent's working directory / project path, when known. */
|
|
27
|
+
projectPath?: string;
|
|
28
|
+
}
|
|
29
|
+
/** Protected paths, split by what is denied. */
|
|
30
|
+
export interface ControlPlanePaths {
|
|
31
|
+
/** Paths agents may not write. Directories protect their whole subtree. */
|
|
32
|
+
writeDenied: Array<{
|
|
33
|
+
path: string;
|
|
34
|
+
isDirectory: boolean;
|
|
35
|
+
}>;
|
|
36
|
+
/** Files agents may not read with the built-in Read/Grep/Glob tools. */
|
|
37
|
+
readDenied: string[];
|
|
38
|
+
}
|
|
39
|
+
/** One Claude Code hook group: an optional tool matcher and its commands. */
|
|
40
|
+
export interface HookGroup {
|
|
41
|
+
matcher?: string;
|
|
42
|
+
hooks: Array<{
|
|
43
|
+
type: 'command';
|
|
44
|
+
command: string;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
/** Shape of the generated Claude Code settings file (the subset we write). */
|
|
48
|
+
export interface ControlPlaneSettings {
|
|
49
|
+
permissions: {
|
|
50
|
+
deny: string[];
|
|
51
|
+
};
|
|
52
|
+
hooks: {
|
|
53
|
+
/** The control-plane guard's Bash hook. Nothing else is ever added here. */
|
|
54
|
+
PreToolUse: Array<HookGroup & {
|
|
55
|
+
matcher: string;
|
|
56
|
+
}>;
|
|
57
|
+
/** Agent-status hook events (#815), present only when a status hook is given. */
|
|
58
|
+
[event: string]: HookGroup[];
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/** Result of preparing the guard for one session. */
|
|
62
|
+
export type ControlPlaneGuardResult = {
|
|
63
|
+
enabled: true;
|
|
64
|
+
settingsPath: string;
|
|
65
|
+
pathsPath: string;
|
|
66
|
+
protectedCount: number;
|
|
67
|
+
} | {
|
|
68
|
+
enabled: false;
|
|
69
|
+
reason: string;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Whether the guard is on for sessions launched by this backend.
|
|
73
|
+
*
|
|
74
|
+
* Read from the backend's own environment at launch, so an agent session
|
|
75
|
+
* cannot switch it off: exporting the variable inside a session changes that
|
|
76
|
+
* shell, not the backend.
|
|
77
|
+
*
|
|
78
|
+
* @param env - Environment to read (defaults to the backend's process.env)
|
|
79
|
+
* @returns false only when `CREWLY_CONTROL_PLANE_GUARD=0`
|
|
80
|
+
*/
|
|
81
|
+
export declare function isControlPlaneGuardEnabled(env?: NodeJS.ProcessEnv): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Resolve every control-plane path (spec Part 2 table) to an absolute path.
|
|
84
|
+
*
|
|
85
|
+
* Duplicates are dropped, e.g. when the project path is the install root.
|
|
86
|
+
*
|
|
87
|
+
* @param roots - Crewly home, install root and optional project path
|
|
88
|
+
* @param existingTeamIds - Team directory names to protect `config.json` for
|
|
89
|
+
* (spec Part 2 protects `teams/*\/config.json`, not the whole `teams/`
|
|
90
|
+
* subtree — a team directory also holds `norms/`, `wiki/`, `prompts/`,
|
|
91
|
+
* `sops/` and `cron-tasks.json`, which agents write routinely). Pass the
|
|
92
|
+
* ids returned by {@link listExistingTeamIds}; defaults to none, so
|
|
93
|
+
* calling this without them protects no team config (documented, not a
|
|
94
|
+
* silent gap — `prepareControlPlaneGuard` always supplies them).
|
|
95
|
+
* @returns Write-denied paths (with a directory flag) and read-denied files
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* const { writeDenied } = resolveControlPlanePaths(
|
|
100
|
+
* { crewlyHome: '/h/.crewly', installRoot: '/opt/crewly' },
|
|
101
|
+
* ['team-0001'],
|
|
102
|
+
* );
|
|
103
|
+
* // writeDenied includes { path: '/h/.crewly/teams/team-0001/config.json', isDirectory: false }
|
|
104
|
+
* // writeDenied does NOT include '/h/.crewly/teams' itself — reads and
|
|
105
|
+
* // writes to team-0001/wiki, norms, prompts, sops, cron-tasks.json stay allowed.
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
export declare function resolveControlPlanePaths(roots: ControlPlaneRoots, existingTeamIds?: readonly string[]): ControlPlanePaths;
|
|
109
|
+
/**
|
|
110
|
+
* Format an absolute path as a Claude Code permission-rule specifier.
|
|
111
|
+
*
|
|
112
|
+
* In Claude Code rules `//x` is an absolute path, while `/x` is relative to
|
|
113
|
+
* the settings file, so an absolute path gets one extra leading slash.
|
|
114
|
+
*
|
|
115
|
+
* @param absPath - Absolute filesystem path
|
|
116
|
+
* @param isDirectory - Append `/**` to cover the subtree
|
|
117
|
+
* @returns Specifier such as `//Users/me/.crewly/teams/**`
|
|
118
|
+
*/
|
|
119
|
+
export declare function toRuleSpecifier(absPath: string, isDirectory: boolean): string;
|
|
120
|
+
/**
|
|
121
|
+
* Build the Claude Code settings object for one session.
|
|
122
|
+
*
|
|
123
|
+
* Deny rules use `Edit(...)`, which Claude Code applies to every built-in
|
|
124
|
+
* file-editing tool (Edit, Write, NotebookEdit), and `Read(...)` for the API
|
|
125
|
+
* token. Only documented rule forms are emitted: an invalid rule could get
|
|
126
|
+
* the whole settings file rejected, and the Bash hook with it.
|
|
127
|
+
*
|
|
128
|
+
* The agent-status hook (#815) is merged into the same file, because Claude
|
|
129
|
+
* Code takes one `--settings`. It is registered only on its own events
|
|
130
|
+
* (Notification, PermissionRequest, Stop, UserPromptSubmit, PostToolUse) and
|
|
131
|
+
* never on PreToolUse, so the guard's entry and the deny list are identical
|
|
132
|
+
* with or without it.
|
|
133
|
+
*
|
|
134
|
+
* @param paths - Resolved control-plane paths
|
|
135
|
+
* @param hookCommand - Shell command that runs the PreToolUse Bash hook
|
|
136
|
+
* @param statusHookCommand - Shell command that runs the agent-status hook; omit to leave it out
|
|
137
|
+
* @returns Settings object ready to serialise
|
|
138
|
+
*/
|
|
139
|
+
export declare function buildControlPlaneSettings(paths: ControlPlanePaths, hookCommand: string, statusHookCommand?: string): ControlPlaneSettings;
|
|
140
|
+
/**
|
|
141
|
+
* Make a session name safe to use as a file name.
|
|
142
|
+
*
|
|
143
|
+
* @param sessionName - Crewly session name
|
|
144
|
+
* @returns Name with anything outside `[A-Za-z0-9._-]` replaced by `_`
|
|
145
|
+
*/
|
|
146
|
+
export declare function toSafeFileStem(sessionName: string): string;
|
|
147
|
+
/**
|
|
148
|
+
* Write the per-session settings file and protected-path list.
|
|
149
|
+
*
|
|
150
|
+
* @param sessionName - Crewly session name (used for the file names)
|
|
151
|
+
* @param roots - Crewly home, install root and optional project path
|
|
152
|
+
* @param env - Environment holding the kill switch (defaults to process.env)
|
|
153
|
+
* @returns Where the files were written, or why the guard is off
|
|
154
|
+
* @throws When the files cannot be written (the caller decides whether to launch unguarded)
|
|
155
|
+
*/
|
|
156
|
+
export declare function prepareControlPlaneGuard(sessionName: string, roots: ControlPlaneRoots, env?: NodeJS.ProcessEnv): Promise<ControlPlaneGuardResult>;
|
|
157
|
+
/**
|
|
158
|
+
* Append `--settings <file>` to a Claude Code launch command.
|
|
159
|
+
*
|
|
160
|
+
* Only commands that carry `--dangerously-skip-permissions` (the Crewly agent
|
|
161
|
+
* launch line) are changed. A command that already passes `--settings` is
|
|
162
|
+
* left alone: the owner configured their own, and Claude Code takes one.
|
|
163
|
+
*
|
|
164
|
+
* @param cmd - Launch command line
|
|
165
|
+
* @param settingsPath - Generated settings file
|
|
166
|
+
* @returns The command with the flag appended, or unchanged
|
|
167
|
+
*/
|
|
168
|
+
export declare function applyControlPlaneSettingsFlag(cmd: string, settingsPath: string): string;
|
|
169
|
+
//# sourceMappingURL=control-plane-guard.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-plane-guard.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/control-plane-guard.service.ts"],"names":[],"mappings":"AA2BA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IACjC,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,gDAAgD;AAChD,MAAM,WAAW,iBAAiB;IACjC,2EAA2E;IAC3E,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3D,wEAAwE;IACxE,UAAU,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,6EAA6E;AAC7E,MAAM,WAAW,SAAS;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,8EAA8E;AAC9E,MAAM,WAAW,oBAAoB;IACpC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChC,KAAK,EAAE;QACN,4EAA4E;QAC5E,UAAU,EAAE,KAAK,CAAC,SAAS,GAAG;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACnD,iFAAiF;QACjF,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC;KAC7B,CAAC;CACF;AAED,qDAAqD;AACrD,MAAM,MAAM,uBAAuB,GAChC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAClF;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAExF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,iBAAiB,EACxB,eAAe,GAAE,SAAS,MAAM,EAAO,GACrC,iBAAiB,CAwBnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,CAG7E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,MAAM,GACxB,oBAAoB,CA4BtB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG1D;AAYD;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC7C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,iBAAiB,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,OAAO,CAAC,uBAAuB,CAAC,CAgClC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAKvF"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { CONTROL_PLANE_GUARD_CONSTANTS, AGENT_STATUS_HOOK_CONSTANTS } from '../../constants.js';
|
|
4
|
+
/**
|
|
5
|
+
* List the team directories that exist under `<crewlyHome>/teams` right now.
|
|
6
|
+
*
|
|
7
|
+
* The Bash hook needs literal paths, not globs, so protecting exactly
|
|
8
|
+
* `teams/*\/config.json` (spec Part 2) means resolving the `*` at guard-prep
|
|
9
|
+
* time against whatever teams already exist. A team created after this
|
|
10
|
+
* session launched is not yet in the list — out of scope for this fix,
|
|
11
|
+
* flagged in specs/2026-09-24-control-plane-isolation.md's coverage limits.
|
|
12
|
+
*
|
|
13
|
+
* @param crewlyHome - Crewly home directory (`~/.crewly`, or `$CREWLY_HOME`)
|
|
14
|
+
* @returns Directory names under `teams/` (team ids); empty if the directory
|
|
15
|
+
* does not exist yet (a fresh install with no teams) or cannot be read
|
|
16
|
+
*/
|
|
17
|
+
async function listExistingTeamIds(crewlyHome) {
|
|
18
|
+
const teamsDir = path.join(crewlyHome, CONTROL_PLANE_GUARD_CONSTANTS.TEAMS_DIR_NAME);
|
|
19
|
+
try {
|
|
20
|
+
const entries = await fs.readdir(teamsDir, { withFileTypes: true });
|
|
21
|
+
return entries.filter((e) => e.isDirectory()).map((e) => e.name);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Whether the guard is on for sessions launched by this backend.
|
|
29
|
+
*
|
|
30
|
+
* Read from the backend's own environment at launch, so an agent session
|
|
31
|
+
* cannot switch it off: exporting the variable inside a session changes that
|
|
32
|
+
* shell, not the backend.
|
|
33
|
+
*
|
|
34
|
+
* @param env - Environment to read (defaults to the backend's process.env)
|
|
35
|
+
* @returns false only when `CREWLY_CONTROL_PLANE_GUARD=0`
|
|
36
|
+
*/
|
|
37
|
+
export function isControlPlaneGuardEnabled(env = process.env) {
|
|
38
|
+
return env[CONTROL_PLANE_GUARD_CONSTANTS.KILL_SWITCH_ENV] !== CONTROL_PLANE_GUARD_CONSTANTS.KILL_SWITCH_OFF_VALUE;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolve every control-plane path (spec Part 2 table) to an absolute path.
|
|
42
|
+
*
|
|
43
|
+
* Duplicates are dropped, e.g. when the project path is the install root.
|
|
44
|
+
*
|
|
45
|
+
* @param roots - Crewly home, install root and optional project path
|
|
46
|
+
* @param existingTeamIds - Team directory names to protect `config.json` for
|
|
47
|
+
* (spec Part 2 protects `teams/*\/config.json`, not the whole `teams/`
|
|
48
|
+
* subtree — a team directory also holds `norms/`, `wiki/`, `prompts/`,
|
|
49
|
+
* `sops/` and `cron-tasks.json`, which agents write routinely). Pass the
|
|
50
|
+
* ids returned by {@link listExistingTeamIds}; defaults to none, so
|
|
51
|
+
* calling this without them protects no team config (documented, not a
|
|
52
|
+
* silent gap — `prepareControlPlaneGuard` always supplies them).
|
|
53
|
+
* @returns Write-denied paths (with a directory flag) and read-denied files
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* const { writeDenied } = resolveControlPlanePaths(
|
|
58
|
+
* { crewlyHome: '/h/.crewly', installRoot: '/opt/crewly' },
|
|
59
|
+
* ['team-0001'],
|
|
60
|
+
* );
|
|
61
|
+
* // writeDenied includes { path: '/h/.crewly/teams/team-0001/config.json', isDirectory: false }
|
|
62
|
+
* // writeDenied does NOT include '/h/.crewly/teams' itself — reads and
|
|
63
|
+
* // writes to team-0001/wiki, norms, prompts, sops, cron-tasks.json stay allowed.
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export function resolveControlPlanePaths(roots, existingTeamIds = []) {
|
|
67
|
+
const C = CONTROL_PLANE_GUARD_CONSTANTS;
|
|
68
|
+
const seen = new Set();
|
|
69
|
+
const writeDenied = [];
|
|
70
|
+
const add = (p, isDirectory) => {
|
|
71
|
+
const abs = path.resolve(p);
|
|
72
|
+
if (seen.has(abs))
|
|
73
|
+
return;
|
|
74
|
+
seen.add(abs);
|
|
75
|
+
writeDenied.push({ path: abs, isDirectory });
|
|
76
|
+
};
|
|
77
|
+
for (const d of C.CREWLY_HOME_DIRS)
|
|
78
|
+
add(path.join(roots.crewlyHome, d), true);
|
|
79
|
+
for (const f of C.CREWLY_HOME_FILES)
|
|
80
|
+
add(path.join(roots.crewlyHome, f), false);
|
|
81
|
+
for (const teamId of existingTeamIds) {
|
|
82
|
+
add(path.join(roots.crewlyHome, C.TEAMS_DIR_NAME, teamId, C.TEAM_CONFIG_FILE_NAME), false);
|
|
83
|
+
}
|
|
84
|
+
for (const d of C.INSTALL_DIRS)
|
|
85
|
+
add(path.join(roots.installRoot, d), true);
|
|
86
|
+
for (const f of C.INSTALL_FILES)
|
|
87
|
+
add(path.join(roots.installRoot, f), false);
|
|
88
|
+
if (roots.projectPath) {
|
|
89
|
+
for (const d of C.PROJECT_DIRS)
|
|
90
|
+
add(path.join(roots.projectPath, d), true);
|
|
91
|
+
}
|
|
92
|
+
const readDenied = C.CREWLY_HOME_READ_DENIED_FILES.map((f) => path.resolve(roots.crewlyHome, f));
|
|
93
|
+
return { writeDenied, readDenied };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Format an absolute path as a Claude Code permission-rule specifier.
|
|
97
|
+
*
|
|
98
|
+
* In Claude Code rules `//x` is an absolute path, while `/x` is relative to
|
|
99
|
+
* the settings file, so an absolute path gets one extra leading slash.
|
|
100
|
+
*
|
|
101
|
+
* @param absPath - Absolute filesystem path
|
|
102
|
+
* @param isDirectory - Append `/**` to cover the subtree
|
|
103
|
+
* @returns Specifier such as `//Users/me/.crewly/teams/**`
|
|
104
|
+
*/
|
|
105
|
+
export function toRuleSpecifier(absPath, isDirectory) {
|
|
106
|
+
const base = `/${absPath}`;
|
|
107
|
+
return isDirectory ? `${base}/**` : base;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Build the Claude Code settings object for one session.
|
|
111
|
+
*
|
|
112
|
+
* Deny rules use `Edit(...)`, which Claude Code applies to every built-in
|
|
113
|
+
* file-editing tool (Edit, Write, NotebookEdit), and `Read(...)` for the API
|
|
114
|
+
* token. Only documented rule forms are emitted: an invalid rule could get
|
|
115
|
+
* the whole settings file rejected, and the Bash hook with it.
|
|
116
|
+
*
|
|
117
|
+
* The agent-status hook (#815) is merged into the same file, because Claude
|
|
118
|
+
* Code takes one `--settings`. It is registered only on its own events
|
|
119
|
+
* (Notification, PermissionRequest, Stop, UserPromptSubmit, PostToolUse) and
|
|
120
|
+
* never on PreToolUse, so the guard's entry and the deny list are identical
|
|
121
|
+
* with or without it.
|
|
122
|
+
*
|
|
123
|
+
* @param paths - Resolved control-plane paths
|
|
124
|
+
* @param hookCommand - Shell command that runs the PreToolUse Bash hook
|
|
125
|
+
* @param statusHookCommand - Shell command that runs the agent-status hook; omit to leave it out
|
|
126
|
+
* @returns Settings object ready to serialise
|
|
127
|
+
*/
|
|
128
|
+
export function buildControlPlaneSettings(paths, hookCommand, statusHookCommand) {
|
|
129
|
+
const deny = [];
|
|
130
|
+
for (const { path: p, isDirectory } of paths.writeDenied) {
|
|
131
|
+
deny.push(`Edit(${toRuleSpecifier(p, false)})`);
|
|
132
|
+
if (isDirectory)
|
|
133
|
+
deny.push(`Edit(${toRuleSpecifier(p, true)})`);
|
|
134
|
+
}
|
|
135
|
+
for (const p of paths.readDenied)
|
|
136
|
+
deny.push(`Read(${toRuleSpecifier(p, false)})`);
|
|
137
|
+
const settings = {
|
|
138
|
+
permissions: { deny },
|
|
139
|
+
hooks: {
|
|
140
|
+
PreToolUse: [
|
|
141
|
+
{
|
|
142
|
+
matcher: CONTROL_PLANE_GUARD_CONSTANTS.HOOK_TOOL_MATCHER,
|
|
143
|
+
hooks: [{ type: 'command', command: hookCommand }],
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
if (statusHookCommand) {
|
|
149
|
+
const S = AGENT_STATUS_HOOK_CONSTANTS;
|
|
150
|
+
for (const event of S.EVENTS) {
|
|
151
|
+
const group = { hooks: [{ type: 'command', command: statusHookCommand }] };
|
|
152
|
+
if (S.TOOL_EVENTS.includes(event))
|
|
153
|
+
group.matcher = S.ALL_TOOLS_MATCHER;
|
|
154
|
+
settings.hooks[event] = [group];
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return settings;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Make a session name safe to use as a file name.
|
|
161
|
+
*
|
|
162
|
+
* @param sessionName - Crewly session name
|
|
163
|
+
* @returns Name with anything outside `[A-Za-z0-9._-]` replaced by `_`
|
|
164
|
+
*/
|
|
165
|
+
export function toSafeFileStem(sessionName) {
|
|
166
|
+
const stem = sessionName.replace(/[^A-Za-z0-9._-]/g, '_').replace(/^\.+/, '_');
|
|
167
|
+
return stem.length > 0 ? stem : '_';
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Quote a value for a POSIX shell command line.
|
|
171
|
+
*
|
|
172
|
+
* @param value - Raw string
|
|
173
|
+
* @returns Single-quoted string with embedded quotes escaped
|
|
174
|
+
*/
|
|
175
|
+
function shellQuote(value) {
|
|
176
|
+
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Write the per-session settings file and protected-path list.
|
|
180
|
+
*
|
|
181
|
+
* @param sessionName - Crewly session name (used for the file names)
|
|
182
|
+
* @param roots - Crewly home, install root and optional project path
|
|
183
|
+
* @param env - Environment holding the kill switch (defaults to process.env)
|
|
184
|
+
* @returns Where the files were written, or why the guard is off
|
|
185
|
+
* @throws When the files cannot be written (the caller decides whether to launch unguarded)
|
|
186
|
+
*/
|
|
187
|
+
export async function prepareControlPlaneGuard(sessionName, roots, env = process.env) {
|
|
188
|
+
const C = CONTROL_PLANE_GUARD_CONSTANTS;
|
|
189
|
+
if (!isControlPlaneGuardEnabled(env)) {
|
|
190
|
+
return { enabled: false, reason: `${C.KILL_SWITCH_ENV}=${C.KILL_SWITCH_OFF_VALUE}` };
|
|
191
|
+
}
|
|
192
|
+
const existingTeamIds = await listExistingTeamIds(roots.crewlyHome);
|
|
193
|
+
const paths = resolveControlPlanePaths(roots, existingTeamIds);
|
|
194
|
+
const dir = path.join(roots.crewlyHome, C.RUNTIME_DIR);
|
|
195
|
+
const stem = toSafeFileStem(sessionName);
|
|
196
|
+
const settingsPath = path.join(dir, `${stem}${C.SETTINGS_FILE_SUFFIX}`);
|
|
197
|
+
const pathsPath = path.join(dir, `${stem}${C.PATHS_FILE_SUFFIX}`);
|
|
198
|
+
const hookScript = path.join(roots.installRoot, C.HOOK_SCRIPT);
|
|
199
|
+
const hookCommand = `bash ${shellQuote(hookScript)} ${shellQuote(pathsPath)}`;
|
|
200
|
+
const statusHookCommand = `bash ${shellQuote(path.join(roots.installRoot, AGENT_STATUS_HOOK_CONSTANTS.HOOK_SCRIPT))}`;
|
|
201
|
+
const pathsBody = [
|
|
202
|
+
`# Crewly control-plane guard — protected paths for ${sessionName}`,
|
|
203
|
+
'# Generated by the backend at launch; one absolute path per line.',
|
|
204
|
+
...paths.writeDenied.map((p) => p.path),
|
|
205
|
+
'',
|
|
206
|
+
].join('\n');
|
|
207
|
+
await fs.mkdir(dir, { recursive: true });
|
|
208
|
+
await fs.writeFile(pathsPath, pathsBody, 'utf-8');
|
|
209
|
+
await fs.writeFile(settingsPath, `${JSON.stringify(buildControlPlaneSettings(paths, hookCommand, statusHookCommand), null, 2)}\n`, 'utf-8');
|
|
210
|
+
return { enabled: true, settingsPath, pathsPath, protectedCount: paths.writeDenied.length };
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Append `--settings <file>` to a Claude Code launch command.
|
|
214
|
+
*
|
|
215
|
+
* Only commands that carry `--dangerously-skip-permissions` (the Crewly agent
|
|
216
|
+
* launch line) are changed. A command that already passes `--settings` is
|
|
217
|
+
* left alone: the owner configured their own, and Claude Code takes one.
|
|
218
|
+
*
|
|
219
|
+
* @param cmd - Launch command line
|
|
220
|
+
* @param settingsPath - Generated settings file
|
|
221
|
+
* @returns The command with the flag appended, or unchanged
|
|
222
|
+
*/
|
|
223
|
+
export function applyControlPlaneSettingsFlag(cmd, settingsPath) {
|
|
224
|
+
const flag = CONTROL_PLANE_GUARD_CONSTANTS.SETTINGS_FLAG;
|
|
225
|
+
if (!cmd.includes('--dangerously-skip-permissions'))
|
|
226
|
+
return cmd;
|
|
227
|
+
if (new RegExp(`(^|\\s)${flag}(\\s|=|$)`).test(cmd))
|
|
228
|
+
return cmd;
|
|
229
|
+
return `${cmd} ${flag} "${settingsPath.replace(/["`$\\]/g, '')}"`;
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=control-plane-guard.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-plane-guard.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/control-plane-guard.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,15 @@
|
|
|
26
26
|
* idle and nobody else just wrote to it; any failure falls back to plain
|
|
27
27
|
* delivery — nothing here throws into dispatch.
|
|
28
28
|
*
|
|
29
|
+
* Idle-boundary context cap: one task can run for 1000+ turns, so a new root
|
|
30
|
+
* alone does not bound the context. A periodic sweep
|
|
31
|
+
* ({@link FreshTaskConversationService.startContextCapSweep}) saves and
|
|
32
|
+
* clears an idle Claude Code member whose last turn carried more than
|
|
33
|
+
* `CREWLY_MEMBER_CONTEXT_CAP_TOKENS` (300k by default, `0` disables), then
|
|
34
|
+
* writes one line naming its active WorkItem and the handover. Same safety
|
|
35
|
+
* rules — never the orchestrator, never mid-turn, never while a message is
|
|
36
|
+
* queued for or being delivered to it — plus at most one cap per 20 minutes.
|
|
37
|
+
*
|
|
29
38
|
* @module services/agent/fresh-task-conversation.service
|
|
30
39
|
*/
|
|
31
40
|
import type { WorkItem } from '../../types/v2/work-item.types.js';
|
|
@@ -98,6 +107,60 @@ export declare function decideFreshConversation(input: FreshTaskDecisionInput):
|
|
|
98
107
|
* @returns One line
|
|
99
108
|
*/
|
|
100
109
|
export declare function freshConversationNote(handoverPath: string): string;
|
|
110
|
+
/**
|
|
111
|
+
* The context cap for members, from the environment.
|
|
112
|
+
*
|
|
113
|
+
* @param env - Environment (tests)
|
|
114
|
+
* @returns Tokens; 0 means the cap is off. Unset or invalid → the default.
|
|
115
|
+
*/
|
|
116
|
+
export declare function memberContextCapTokens(env?: NodeJS.ProcessEnv): number;
|
|
117
|
+
/** Everything the idle-boundary context-cap decision depends on. */
|
|
118
|
+
export interface ContextCapDecisionInput {
|
|
119
|
+
/** Agent session */
|
|
120
|
+
sessionName: string;
|
|
121
|
+
/** Its runtime */
|
|
122
|
+
runtimeType?: string;
|
|
123
|
+
/** Cap in tokens (0 = off) */
|
|
124
|
+
capTokens: number;
|
|
125
|
+
/** Env + settings kill-switch of the fresh-conversation feature */
|
|
126
|
+
enabled: boolean;
|
|
127
|
+
/** Last turn's context, or null when unknown */
|
|
128
|
+
contextTokens: number | null;
|
|
129
|
+
/** Agent is mid-turn */
|
|
130
|
+
busy: boolean;
|
|
131
|
+
/** How long the PTY has been quiet (null = unknown) */
|
|
132
|
+
quietMs: number | null;
|
|
133
|
+
/** A message is being delivered, was just delivered, or a prepare/clear is running */
|
|
134
|
+
deliveryActive: boolean;
|
|
135
|
+
/** Messages are queued for the agent */
|
|
136
|
+
queuedMessages: boolean;
|
|
137
|
+
/** When the session was last capped (ms), if ever */
|
|
138
|
+
lastCapAt: number | null;
|
|
139
|
+
/** Now (ms) */
|
|
140
|
+
now: number;
|
|
141
|
+
/** Id of the WorkItem the agent is on (null = none) */
|
|
142
|
+
activeWorkItemId: string | null;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Decide whether to cap (save + clear + re-orient) a member's conversation.
|
|
146
|
+
* Pure; the order of checks is also the order of the logged reasons.
|
|
147
|
+
*
|
|
148
|
+
* @param input - Decision inputs
|
|
149
|
+
* @returns The decision
|
|
150
|
+
*/
|
|
151
|
+
export declare function decideContextCap(input: ContextCapDecisionInput): FreshTaskDecision;
|
|
152
|
+
/**
|
|
153
|
+
* The one line written after a context-cap clear. It must carry the WorkItem
|
|
154
|
+
* id: the new conversation id is found by it.
|
|
155
|
+
*
|
|
156
|
+
* @param args - WorkItem, handover file and the old context size
|
|
157
|
+
* @returns One line
|
|
158
|
+
*/
|
|
159
|
+
export declare function contextCapReorientation(args: {
|
|
160
|
+
workItem: Pick<WorkItem, 'id' | 'title'>;
|
|
161
|
+
handoverPath: string;
|
|
162
|
+
contextTokens: number;
|
|
163
|
+
}): string;
|
|
101
164
|
/** What the service needs to know about a session. */
|
|
102
165
|
export interface FreshTaskSessionInfo {
|
|
103
166
|
/** Runtime */
|
|
@@ -142,6 +205,14 @@ export interface FreshTaskDeps {
|
|
|
142
205
|
sleep: (ms: number) => Promise<void>;
|
|
143
206
|
/** Environment */
|
|
144
207
|
env: NodeJS.ProcessEnv;
|
|
208
|
+
/** Registered agent sessions (context-cap sweep) */
|
|
209
|
+
listSessions: () => string[];
|
|
210
|
+
/** Messages are queued for the session and not yet written */
|
|
211
|
+
hasQueuedMessages: (sessionName: string) => boolean;
|
|
212
|
+
/** How long the session's PTY has been quiet (ms), or null when unknown */
|
|
213
|
+
getQuietMs: (sessionName: string) => number | null;
|
|
214
|
+
/** Write one message into the session (paste + Enter); false when the session is gone */
|
|
215
|
+
sendMessage: (sessionName: string, text: string) => Promise<boolean>;
|
|
145
216
|
}
|
|
146
217
|
/** Result of {@link FreshTaskConversationService.prepareForTask}. */
|
|
147
218
|
export interface PrepareForTaskResult {
|
|
@@ -150,8 +221,20 @@ export interface PrepareForTaskResult {
|
|
|
150
221
|
/** Handover file for the old conversation (when cleared) */
|
|
151
222
|
handoverPath?: string;
|
|
152
223
|
}
|
|
224
|
+
/** Result of {@link FreshTaskConversationService.capContextIfNeeded}. */
|
|
225
|
+
export interface ContextCapResult {
|
|
226
|
+
/** The conversation was saved, cleared and the agent re-oriented */
|
|
227
|
+
capped: boolean;
|
|
228
|
+
/** Why (logged; the decision reason when not capped) */
|
|
229
|
+
reason: string;
|
|
230
|
+
/** Handover file for the old conversation (when capped) */
|
|
231
|
+
handoverPath?: string;
|
|
232
|
+
/** WorkItem the agent was re-oriented on (when capped) */
|
|
233
|
+
workItemId?: string;
|
|
234
|
+
}
|
|
153
235
|
/**
|
|
154
|
-
* Singleton that starts a fresh Claude Code conversation per new task
|
|
236
|
+
* Singleton that starts a fresh Claude Code conversation per new task, and
|
|
237
|
+
* caps a long task's conversation at idle boundaries.
|
|
155
238
|
*/
|
|
156
239
|
export declare class FreshTaskConversationService {
|
|
157
240
|
private static instance;
|
|
@@ -162,6 +245,14 @@ export declare class FreshTaskConversationService {
|
|
|
162
245
|
private readonly inFlight;
|
|
163
246
|
/** Last time a message was written to a session (terminal write / deliver) */
|
|
164
247
|
private readonly lastDelivery;
|
|
248
|
+
/** Deliveries currently being written to a session (see {@link beginDelivery}) */
|
|
249
|
+
private readonly deliveriesInFlight;
|
|
250
|
+
/** Last context-cap clear per session (rate limit) */
|
|
251
|
+
private readonly lastCapAt;
|
|
252
|
+
/** Context-cap sweep timer */
|
|
253
|
+
private capSweepTimer;
|
|
254
|
+
/** A sweep is running (sweeps never overlap) */
|
|
255
|
+
private capSweepRunning;
|
|
165
256
|
private constructor();
|
|
166
257
|
/**
|
|
167
258
|
* @returns The singleton
|
|
@@ -176,6 +267,22 @@ export declare class FreshTaskConversationService {
|
|
|
176
267
|
static createForTesting(deps: Partial<FreshTaskDeps>): FreshTaskConversationService;
|
|
177
268
|
/** Drop the singleton (tests). */
|
|
178
269
|
static resetInstance(): void;
|
|
270
|
+
/**
|
|
271
|
+
* Mark a delivery to a session as in progress until the returned function
|
|
272
|
+
* is called. Neither a new-task clear nor a context-cap clear starts while
|
|
273
|
+
* one is running: it would wipe the message before the agent reads it.
|
|
274
|
+
*
|
|
275
|
+
* @param sessionName - Session being written to
|
|
276
|
+
* @returns Call when the delivery has finished (idempotent)
|
|
277
|
+
*/
|
|
278
|
+
beginDelivery(sessionName: string): () => void;
|
|
279
|
+
/**
|
|
280
|
+
* Whether a delivery is being written to the session right now.
|
|
281
|
+
*
|
|
282
|
+
* @param sessionName - Session
|
|
283
|
+
* @returns True while a {@link beginDelivery} is open
|
|
284
|
+
*/
|
|
285
|
+
isDelivering(sessionName: string): boolean;
|
|
179
286
|
/**
|
|
180
287
|
* Record that a message is being written to a session. A clear right after
|
|
181
288
|
* would wipe it before the agent reads it, so {@link prepareForTask} skips
|
|
@@ -209,8 +316,53 @@ export declare class FreshTaskConversationService {
|
|
|
209
316
|
* @param workItem - Task being delivered
|
|
210
317
|
* @returns Whether it cleared, and the handover file when it did
|
|
211
318
|
*/
|
|
212
|
-
prepareForTask(sessionName: string, workItem: Pick<WorkItem, 'id'>): Promise<PrepareForTaskResult>;
|
|
319
|
+
prepareForTask(sessionName: string, workItem: Pick<WorkItem, 'id' | 'metadata'>): Promise<PrepareForTaskResult>;
|
|
320
|
+
/**
|
|
321
|
+
* Start the periodic context-cap sweep (idempotent). The timer is unref'd
|
|
322
|
+
* so it never keeps the process alive.
|
|
323
|
+
*
|
|
324
|
+
* @param intervalMs - Sweep interval
|
|
325
|
+
*/
|
|
326
|
+
startContextCapSweep(intervalMs?: number): void;
|
|
327
|
+
/** Stop the periodic context-cap sweep. */
|
|
328
|
+
stopContextCapSweep(): void;
|
|
329
|
+
/**
|
|
330
|
+
* Check every registered session once. Sessions are handled one after
|
|
331
|
+
* another and sweeps never overlap. Never throws.
|
|
332
|
+
*
|
|
333
|
+
* @returns Per-session results (sessions skipped cheaply are omitted)
|
|
334
|
+
*/
|
|
335
|
+
runContextCapSweep(): Promise<Record<string, ContextCapResult>>;
|
|
336
|
+
/**
|
|
337
|
+
* If the member is idle between turns and its last turn carried more than
|
|
338
|
+
* the cap, save the conversation (handover file + wiki), `/clear` it and
|
|
339
|
+
* write one line naming its WorkItem and the handover. Runs in the same
|
|
340
|
+
* per-session chain as {@link prepareForTask}, so terminal writes wait for
|
|
341
|
+
* it. Never throws.
|
|
342
|
+
*
|
|
343
|
+
* @param sessionName - Member session
|
|
344
|
+
* @returns What happened
|
|
345
|
+
*/
|
|
346
|
+
capContextIfNeeded(sessionName: string): Promise<ContextCapResult>;
|
|
347
|
+
private doCapContext;
|
|
348
|
+
/**
|
|
349
|
+
* The WorkItem a member is on: running before accepted before proposed,
|
|
350
|
+
* then the most recently started.
|
|
351
|
+
*/
|
|
352
|
+
private pickCurrentItem;
|
|
213
353
|
private doPrepare;
|
|
354
|
+
/**
|
|
355
|
+
* Save the current conversation (handover file + memory/wiki copy, no
|
|
356
|
+
* agent turn) and write `/clear`. Shared by the new-task and the
|
|
357
|
+
* context-cap paths.
|
|
358
|
+
*
|
|
359
|
+
* @param sessionName - Agent session
|
|
360
|
+
* @param conv - Its cwd and current conversation id
|
|
361
|
+
* @param handover - Task the old conversation was on, and why it closed
|
|
362
|
+
* @returns The handover file and the time `/clear` was written, or null
|
|
363
|
+
* when nothing was cleared (transcript missing, session gone)
|
|
364
|
+
*/
|
|
365
|
+
private saveAndClear;
|
|
214
366
|
/**
|
|
215
367
|
* Write the handover file (same shape as the orchestrator's restart handover).
|
|
216
368
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fresh-task-conversation.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/fresh-task-conversation.service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fresh-task-conversation.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/fresh-task-conversation.service.ts"],"names":[],"mappings":"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"}
|