crewly 1.20.152 → 1.20.154
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -3
- package/config/constants.ts +78 -0
- package/config/hooks/agent-status/report.sh +78 -0
- package/config/hooks/control-plane-guard/pretooluse-bash.sh +241 -0
- package/config/orchestrator_tasks/prompts/assign-task-orchestrator-prompt-template.md +19 -49
- package/config/orchestrator_tasks/prompts/checkin-orchestrator-prompt-template.md +25 -125
- package/config/orchestrator_tasks/prompts/project-start-orchestrator-prompt-template.md +29 -100
- package/config/roles/orchestrator/prompt.md +25 -2
- package/config/roles/team-leader/prompt.md +19 -3
- package/config/roles/team-leader/role.json +1 -1
- package/config/roles/team-leader/tl-addon.md +12 -3
- package/config/skills/agent/core/complete-task/SKILL.md +1 -1
- package/config/skills/agent/core/project-tickets/SKILL.md +127 -0
- package/config/skills/agent/core/project-tickets/execute.sh +182 -0
- package/config/skills/agent/core/project-tickets/execute.test.sh +116 -0
- package/config/skills/agent/core/recall/SKILL.md +1 -1
- package/config/skills/agent/core/recall/execute.sh +7 -0
- package/config/skills/agent/core/report-status/SKILL.md +3 -2
- package/config/skills/agent/core/report-status/execute.sh +37 -15
- package/config/skills/agent/core/split-ticket/SKILL.md +62 -0
- package/config/skills/agent/core/split-ticket/execute.sh +87 -0
- package/config/skills/agent/core/split-ticket/execute.test.sh +77 -0
- package/config/skills/agent/core/standing-update/SKILL.md +96 -0
- package/config/skills/agent/core/standing-update/execute.sh +107 -0
- package/config/skills/agent/onboarding/materialize-team/SKILL.md +1 -1
- package/config/skills/agent/onboarding/recommend-team/SKILL.md +1 -1
- package/config/skills/orchestrator/delegate-task/SKILL.md +4 -3
- package/config/skills/orchestrator/render-verdict/SKILL.md +62 -0
- package/config/skills/orchestrator/render-verdict/execute.sh +47 -0
- package/config/skills/orchestrator/render-verdict/execute.test.sh +121 -0
- package/config/skills/orchestrator/wiki-migrate/SKILL.md +0 -1
- package/config/skills/team-leader/aggregate-results/SKILL.md +1 -1
- package/config/skills/team-leader/assign-ticket/SKILL.md +47 -0
- package/config/skills/team-leader/assign-ticket/execute.sh +59 -0
- package/config/skills/team-leader/assign-ticket/execute.test.sh +64 -0
- package/config/skills/team-leader/decompose-goal/SKILL.md +4 -4
- package/config/skills/team-leader/delegate-task/SKILL.md +1 -1
- package/config/skills/team-leader/verify-output/SKILL.md +2 -2
- package/config/sops/developer/git-workflow.md +2 -1
- package/dist/backend/backend/src/constants.d.ts +451 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +442 -2
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.d.ts +27 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.js +55 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.d.ts +13 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.js +19 -0
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/api.controller.d.ts +0 -12
- package/dist/backend/backend/src/controllers/api.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/api.controller.js +0 -44
- package/dist/backend/backend/src/controllers/api.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts +27 -5
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.js +55 -15
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.js +2 -0
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/expert/expert.controller.d.ts +13 -0
- package/dist/backend/backend/src/controllers/expert/expert.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/expert/expert.controller.js +67 -9
- package/dist/backend/backend/src/controllers/expert/expert.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.d.ts +41 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js +146 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.d.ts +20 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.js +29 -0
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/project/project.controller.d.ts +2 -2
- package/dist/backend/backend/src/controllers/project/project.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.controller.js +24 -7
- package/dist/backend/backend/src/controllers/project/project.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.routes.d.ts +2 -2
- package/dist/backend/backend/src/controllers/project/project.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.routes.js +3 -36
- package/dist/backend/backend/src/controllers/project/project.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +93 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +252 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts +34 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js +51 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/request-types.d.ts +13 -0
- package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts +49 -0
- package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/standing/standing.controller.js +100 -0
- package/dist/backend/backend/src/controllers/standing/standing.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +38 -0
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +143 -8
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js +6 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts +2 -0
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +26 -6
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +18 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +56 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +3 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/types.d.ts +1 -2
- package/dist/backend/backend/src/controllers/types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts +2 -3
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.js +2 -3
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/worktree-janitor/worktree-janitor.routes.d.ts +29 -0
- package/dist/backend/backend/src/controllers/worktree-janitor/worktree-janitor.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/worktree-janitor/worktree-janitor.routes.js +63 -0
- package/dist/backend/backend/src/controllers/worktree-janitor/worktree-janitor.routes.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts +7 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +214 -9
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/middleware/api-token.middleware.d.ts +29 -0
- package/dist/backend/backend/src/middleware/api-token.middleware.d.ts.map +1 -1
- package/dist/backend/backend/src/middleware/api-token.middleware.js +38 -0
- package/dist/backend/backend/src/middleware/api-token.middleware.js.map +1 -1
- package/dist/backend/backend/src/models/index.d.ts +0 -1
- package/dist/backend/backend/src/models/index.d.ts.map +1 -1
- package/dist/backend/backend/src/models/index.js +0 -1
- package/dist/backend/backend/src/models/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +27 -3
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts +6 -2
- package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts.map +1 -1
- package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js +6 -2
- package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +28 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +93 -34
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts +169 -0
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +231 -0
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts +1 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +9 -0
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +16 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +50 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts +9 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.js +12 -2
- package/dist/backend/backend/src/services/agent/tmux-command.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js +9 -8
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.d.ts +75 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.js +89 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +18 -3
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js +28 -4
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +3 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js +3 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +12 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +14 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +11 -7
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts +41 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.js +44 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts +67 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.js +146 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-template.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-template.service.js +9 -7
- package/dist/backend/backend/src/services/ai/prompt-template.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +7 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/waiting-actions-inbound.service.d.ts +128 -0
- package/dist/backend/backend/src/services/cloud/waiting-actions-inbound.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/waiting-actions-inbound.service.js +279 -0
- package/dist/backend/backend/src/services/cloud/waiting-actions-inbound.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/waiting-items-sync.service.d.ts +122 -0
- package/dist/backend/backend/src/services/cloud/waiting-items-sync.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/waiting-items-sync.service.js +261 -0
- package/dist/backend/backend/src/services/cloud/waiting-items-sync.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/waiting-items.contract.d.ts +101 -0
- package/dist/backend/backend/src/services/cloud/waiting-items.contract.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/waiting-items.contract.js +113 -0
- package/dist/backend/backend/src/services/cloud/waiting-items.contract.js.map +1 -0
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts +7 -0
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js +9 -1
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
- package/dist/backend/backend/src/services/core/logger.service.d.ts +21 -0
- package/dist/backend/backend/src/services/core/logger.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/logger.service.js +42 -4
- package/dist/backend/backend/src/services/core/logger.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.d.ts +1 -5
- package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +5 -162
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +15 -9
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/index.d.ts +0 -4
- package/dist/backend/backend/src/services/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/index.js +0 -4
- package/dist/backend/backend/src/services/index.js.map +1 -1
- package/dist/backend/backend/src/services/intent-task/intent-task.service.d.ts +1 -1
- package/dist/backend/backend/src/services/intent-task/intent-task.service.js +1 -1
- package/dist/backend/backend/src/services/mcp-server.d.ts +19 -6
- package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -1
- package/dist/backend/backend/src/services/mcp-server.js +46 -16
- package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
- package/dist/backend/backend/src/services/mcp-tool-definitions.d.ts.map +1 -1
- package/dist/backend/backend/src/services/mcp-tool-definitions.js +3 -2
- package/dist/backend/backend/src/services/mcp-tool-definitions.js.map +1 -1
- package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts +247 -0
- package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/standing-answers.service.js +534 -0
- package/dist/backend/backend/src/services/memory/standing-answers.service.js.map +1 -0
- package/dist/backend/backend/src/services/memory/standing-refresh.service.d.ts +104 -0
- package/dist/backend/backend/src/services/memory/standing-refresh.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/standing-refresh.service.js +218 -0
- package/dist/backend/backend/src/services/memory/standing-refresh.service.js.map +1 -0
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts +35 -0
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +99 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/agent-attention-registry.d.ts +75 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention-registry.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention-registry.js +80 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention-registry.js.map +1 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention.d.ts +114 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention.js +165 -0
- package/dist/backend/backend/src/services/monitoring/agent-attention.js.map +1 -0
- package/dist/backend/backend/src/services/monitoring/agent-hook-state.d.ts +76 -0
- package/dist/backend/backend/src/services/monitoring/agent-hook-state.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/agent-hook-state.js +96 -0
- package/dist/backend/backend/src/services/monitoring/agent-hook-state.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js +13 -3
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js +0 -4
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js.map +1 -1
- package/dist/backend/backend/src/services/project/project-search.service.d.ts +22 -16
- package/dist/backend/backend/src/services/project/project-search.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project/project-search.service.js +30 -53
- package/dist/backend/backend/src/services/project/project-search.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts +381 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js +839 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts +214 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js +466 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-file.d.ts +121 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-file.js +468 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-file.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.d.ts +69 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.js +194 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-tracking.d.ts +47 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-tracking.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-tracking.js +83 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-tracking.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/v1-task-migration.d.ts +97 -0
- package/dist/backend/backend/src/services/project-tickets/v1-task-migration.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/v1-task-migration.js +201 -0
- package/dist/backend/backend/src/services/project-tickets/v1-task-migration.js.map +1 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +86 -22
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +173 -28
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +19 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +33 -4
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +24 -12
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +87 -19
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-adapter.d.ts +1 -1
- package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-adapter.js +5 -9
- package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +26 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +33 -2
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +5 -0
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js +8 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts +18 -0
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js +23 -0
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-backend.interface.d.ts +8 -0
- package/dist/backend/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-backend.interface.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts +12 -2
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.js +14 -2
- package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +2 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.d.ts +239 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.js +395 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.js.map +1 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.d.ts +53 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.d.ts.map +1 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.js +83 -0
- package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.js.map +1 -0
- package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.d.ts +93 -0
- package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.d.ts.map +1 -0
- package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.js +244 -0
- package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.js.map +1 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +145 -19
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +321 -53
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.js +11 -6
- package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +21 -4
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +53 -3
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation-router.service.d.ts +85 -6
- package/dist/backend/backend/src/services/v3/escalation-router.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation-router.service.js +188 -9
- package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation.service.js +1 -1
- package/dist/backend/backend/src/services/v3/escalation.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-executor.service.js +2 -2
- package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.d.ts +184 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.js +420 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.js.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts +61 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js +100 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.d.ts +36 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.js +239 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.js.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts +152 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js +209 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts +194 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.js +85 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +6 -4
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +15 -6
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js +14 -5
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.d.ts +19 -0
- package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.js +38 -0
- package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-ask-classifier.d.ts +82 -0
- package/dist/backend/backend/src/services/v3/ticket-ask-classifier.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-ask-classifier.js +172 -0
- package/dist/backend/backend/src/services/v3/ticket-ask-classifier.js.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +2 -0
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-intake-log.d.ts +87 -0
- package/dist/backend/backend/src/services/v3/ticket-intake-log.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-intake-log.js +116 -0
- package/dist/backend/backend/src/services/v3/ticket-intake-log.js.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +133 -15
- package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-intake.service.js +263 -45
- package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts +3 -1
- package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-review.service.js +6 -2
- package/dist/backend/backend/src/services/v3/ticket-review.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.js +9 -3
- package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +41 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +51 -2
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts +13 -5
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +10 -9
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -1
- package/dist/backend/backend/src/services/worktree/workitem-worktree.service.d.ts +241 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.service.js +511 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.service.js.map +1 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.d.ts +70 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.js +121 -0
- package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/worktree/worktree-git.d.ts +260 -0
- package/dist/backend/backend/src/services/worktree/worktree-git.d.ts.map +1 -0
- package/dist/backend/backend/src/services/worktree/worktree-git.js +569 -0
- package/dist/backend/backend/src/services/worktree/worktree-git.js.map +1 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.git.d.ts +131 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.git.d.ts.map +1 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.git.js +238 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.git.js.map +1 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts +241 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js +504 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js.map +1 -0
- package/dist/backend/backend/src/types/event-bus.types.d.ts +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js +8 -0
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +23 -18
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/intent-task.types.d.ts +1 -1
- package/dist/backend/backend/src/types/intent-task.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/project-ticket.types.d.ts +132 -0
- package/dist/backend/backend/src/types/project-ticket.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/project-ticket.types.js +120 -0
- package/dist/backend/backend/src/types/project-ticket.types.js.map +1 -0
- package/dist/backend/backend/src/types/review-reason.types.d.ts +3 -1
- package/dist/backend/backend/src/types/review-reason.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/review-reason.types.js +1 -0
- package/dist/backend/backend/src/types/review-reason.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/index.d.ts +2 -2
- package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/index.js +1 -1
- package/dist/backend/backend/src/types/v2/index.js.map +1 -1
- package/dist/backend/backend/src/types/v2/reconcile.types.d.ts +7 -0
- package/dist/backend/backend/src/types/v2/reconcile.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/reconcile.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.d.ts +18 -0
- package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.js +1 -0
- package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/ticket.types.d.ts +6 -2
- package/dist/backend/backend/src/types/v2/ticket.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/ticket.types.js +1 -1
- package/dist/backend/backend/src/types/v2/ticket.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +169 -14
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.js +263 -44
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/backend/src/utils/agent-caller.utils.d.ts +33 -0
- package/dist/backend/backend/src/utils/agent-caller.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/agent-caller.utils.js +37 -0
- package/dist/backend/backend/src/utils/agent-caller.utils.js.map +1 -1
- package/dist/backend/backend/src/utils/secret-env.d.ts +61 -0
- package/dist/backend/backend/src/utils/secret-env.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/secret-env.js +89 -0
- package/dist/backend/backend/src/utils/secret-env.js.map +1 -0
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +71 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +77 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +451 -1
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +442 -2
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/models/index.d.ts +0 -1
- package/dist/cli/backend/src/models/index.d.ts.map +1 -1
- package/dist/cli/backend/src/models/index.js +0 -1
- package/dist/cli/backend/src/models/index.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +28 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +93 -34
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts +169 -0
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +231 -0
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +16 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +50 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js +9 -8
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.d.ts +75 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.js +89 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +18 -3
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js +28 -4
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +12 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +14 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +11 -7
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts +41 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.js +44 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts +67 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.js +146 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.js.map +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.js +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts +7 -0
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js +9 -1
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
- package/dist/cli/backend/src/services/core/logger.service.d.ts +21 -0
- package/dist/cli/backend/src/services/core/logger.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/logger.service.js +42 -4
- package/dist/cli/backend/src/services/core/logger.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.d.ts +1 -5
- package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js +5 -162
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/services/mcp-server.d.ts +19 -6
- package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -1
- package/dist/cli/backend/src/services/mcp-server.js +46 -16
- package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
- package/dist/cli/backend/src/services/mcp-tool-definitions.d.ts.map +1 -1
- package/dist/cli/backend/src/services/mcp-tool-definitions.js +3 -2
- package/dist/cli/backend/src/services/mcp-tool-definitions.js.map +1 -1
- package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts +247 -0
- package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/standing-answers.service.js +534 -0
- package/dist/cli/backend/src/services/memory/standing-answers.service.js.map +1 -0
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts +35 -0
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js +99 -1
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/agent-attention-registry.d.ts +75 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention-registry.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention-registry.js +80 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention-registry.js.map +1 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention.d.ts +114 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention.js +165 -0
- package/dist/cli/backend/src/services/monitoring/agent-attention.js.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts +214 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js +466 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-file.d.ts +121 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-file.js +468 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-file.js.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.d.ts +69 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.d.ts.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.js +194 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.js.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-tracking.d.ts +47 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-tracking.d.ts.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-tracking.js +83 -0
- package/dist/cli/backend/src/services/project-tickets/ticket-tracking.js.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/v1-task-migration.d.ts +97 -0
- package/dist/cli/backend/src/services/project-tickets/v1-task-migration.d.ts.map +1 -0
- package/dist/cli/backend/src/services/project-tickets/v1-task-migration.js +201 -0
- package/dist/cli/backend/src/services/project-tickets/v1-task-migration.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +26 -1
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +33 -2
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +5 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.js +8 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts +18 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js +23 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
- package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +8 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -1
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts +12 -2
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-command-helper.js +14 -2
- package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +145 -19
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +321 -53
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/template/template.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/template/template.service.js +11 -6
- package/dist/cli/backend/src/services/template/template.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts +85 -6
- package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/escalation-router.service.js +188 -9
- package/dist/cli/backend/src/services/v3/escalation-router.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/mission-executor.service.js +2 -2
- package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts +6 -4
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +15 -6
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
- package/dist/cli/backend/src/services/v3/request.service.d.ts +19 -0
- package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/request.service.js +38 -0
- package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-ask-classifier.d.ts +82 -0
- package/dist/cli/backend/src/services/v3/ticket-ask-classifier.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-ask-classifier.js +172 -0
- package/dist/cli/backend/src/services/v3/ticket-ask-classifier.js.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +2 -0
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-intake-log.d.ts +87 -0
- package/dist/cli/backend/src/services/v3/ticket-intake-log.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-intake-log.js +116 -0
- package/dist/cli/backend/src/services/v3/ticket-intake-log.js.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +133 -15
- package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-intake.service.js +263 -45
- package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts +3 -1
- package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-review.service.js +6 -2
- package/dist/cli/backend/src/services/v3/ticket-review.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/v3-data.service.js +9 -3
- package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/cli/backend/src/services/worktree/worktree-git.d.ts +260 -0
- package/dist/cli/backend/src/services/worktree/worktree-git.d.ts.map +1 -0
- package/dist/cli/backend/src/services/worktree/worktree-git.js +569 -0
- package/dist/cli/backend/src/services/worktree/worktree-git.js.map +1 -0
- package/dist/cli/backend/src/types/event-bus.types.d.ts +1 -1
- package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/event-bus.types.js +8 -0
- package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +23 -18
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/dist/cli/backend/src/types/intent-task.types.d.ts +1 -1
- package/dist/cli/backend/src/types/intent-task.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/project-ticket.types.d.ts +132 -0
- package/dist/cli/backend/src/types/project-ticket.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/project-ticket.types.js +120 -0
- package/dist/cli/backend/src/types/project-ticket.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/index.d.ts +2 -2
- package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/index.js +1 -1
- package/dist/cli/backend/src/types/v2/index.js.map +1 -1
- package/dist/cli/backend/src/types/v2/reconcile.types.d.ts +7 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/reconcile.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.d.ts +18 -0
- package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.js +1 -0
- package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/ticket.types.d.ts +6 -2
- package/dist/cli/backend/src/types/v2/ticket.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/ticket.types.js +1 -1
- package/dist/cli/backend/src/types/v2/ticket.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +169 -14
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.js +263 -44
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/cli/backend/src/utils/secret-env.d.ts +61 -0
- package/dist/cli/backend/src/utils/secret-env.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/secret-env.js +89 -0
- package/dist/cli/backend/src/utils/secret-env.js.map +1 -0
- package/dist/cli/cli/src/commands/onboard.d.ts +1 -1
- package/dist/cli/cli/src/commands/onboard.js +3 -3
- package/dist/cli/cli/src/commands/onboard.js.map +1 -1
- package/dist/cli/cli/src/commands/publish.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/publish.js +4 -5
- package/dist/cli/cli/src/commands/publish.js.map +1 -1
- package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/service.js +5 -2
- package/dist/cli/cli/src/commands/service.js.map +1 -1
- package/dist/cli/cli/src/commands/tickets.d.ts +60 -0
- package/dist/cli/cli/src/commands/tickets.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/tickets.js +111 -0
- package/dist/cli/cli/src/commands/tickets.js.map +1 -0
- package/dist/cli/cli/src/index.js +12 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/archive-creator.d.ts +7 -3
- package/dist/cli/cli/src/utils/archive-creator.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/archive-creator.js +17 -5
- package/dist/cli/cli/src/utils/archive-creator.js.map +1 -1
- package/dist/cli/cli/src/utils/cloud-submit.d.ts +1 -1
- package/dist/cli/cli/src/utils/cloud-submit.js +1 -1
- package/dist/cli/cli/src/utils/gh-submit.d.ts +10 -1
- package/dist/cli/cli/src/utils/gh-submit.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/gh-submit.js +20 -4
- package/dist/cli/cli/src/utils/gh-submit.js.map +1 -1
- package/dist/cli/cli/src/utils/package-validator.d.ts +29 -6
- package/dist/cli/cli/src/utils/package-validator.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/package-validator.js +88 -36
- package/dist/cli/cli/src/utils/package-validator.js.map +1 -1
- package/dist/cli/config/constants.d.ts +71 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +77 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/skills/marketplace-registry.d.ts +143 -0
- package/dist/cli/config/skills/marketplace-registry.d.ts.map +1 -0
- package/dist/cli/config/skills/marketplace-registry.js +192 -0
- package/dist/cli/config/skills/marketplace-registry.js.map +1 -0
- package/frontend/dist/assets/index-8d4b3ad2.js +4951 -0
- package/frontend/dist/assets/index-b6aded4c.css +42 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/config/task_starters/build_e2e_test_plan_prompt.json +0 -51
- package/config/task_starters/build_tasks_prompt.json +0 -55
- package/config/task_starters/prompts/build_tasks_step1_milestone_structure.md +0 -274
- package/config/task_starters/prompts/e2e_test_plan_step1_build_tests.md +0 -391
- package/config/task_starters/prompts/e2e_test_plan_step2_run_tests.md +0 -240
- package/config/templates/customer-loyalty-team.json +0 -44
- package/config/templates/dtc-viral-content-team.json +0 -58
- package/config/templates/expert-innovation-team.json +0 -60
- package/config/templates/pragmatic-mvp-dev-team.json +0 -58
- package/config/templates/pro-sops/norms/content-production-pipeline.md +0 -39
- package/config/templates/pro-sops/norms/customer-onboarding-sop.md +0 -40
- package/dist/backend/backend/src/controllers/task-management/tickets.controller.d.ts +0 -13
- package/dist/backend/backend/src/controllers/task-management/tickets.controller.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/task-management/tickets.controller.js +0 -214
- package/dist/backend/backend/src/controllers/task-management/tickets.controller.js.map +0 -1
- package/dist/backend/backend/src/models/Ticket.d.ts +0 -24
- package/dist/backend/backend/src/models/Ticket.d.ts.map +0 -1
- package/dist/backend/backend/src/models/Ticket.js +0 -102
- package/dist/backend/backend/src/models/Ticket.js.map +0 -1
- package/dist/backend/backend/src/services/agent/task-planning.service.d.ts +0 -134
- package/dist/backend/backend/src/services/agent/task-planning.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/task-planning.service.js +0 -291
- package/dist/backend/backend/src/services/agent/task-planning.service.js.map +0 -1
- package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.d.ts +0 -71
- package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.js +0 -304
- package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.js.map +0 -1
- package/dist/backend/backend/src/services/project/task-folder.service.d.ts +0 -48
- package/dist/backend/backend/src/services/project/task-folder.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/project/task-folder.service.js +0 -193
- package/dist/backend/backend/src/services/project/task-folder.service.js.map +0 -1
- package/dist/backend/backend/src/services/project/task.service.d.ts +0 -47
- package/dist/backend/backend/src/services/project/task.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/project/task.service.js +0 -253
- package/dist/backend/backend/src/services/project/task.service.js.map +0 -1
- package/dist/backend/backend/src/services/project/ticket-editor.service.d.ts +0 -130
- package/dist/backend/backend/src/services/project/ticket-editor.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/project/ticket-editor.service.js +0 -406
- package/dist/backend/backend/src/services/project/ticket-editor.service.js.map +0 -1
- package/dist/cli/backend/src/models/Ticket.d.ts +0 -24
- package/dist/cli/backend/src/models/Ticket.d.ts.map +0 -1
- package/dist/cli/backend/src/models/Ticket.js +0 -102
- package/dist/cli/backend/src/models/Ticket.js.map +0 -1
- package/frontend/dist/assets/index-2bdb57b9.css +0 -42
- package/frontend/dist/assets/index-54f1061c.js +0 -4963
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Attention Registry
|
|
3
|
+
*
|
|
4
|
+
* In-process record of which agent sessions are currently blocked on a human
|
|
5
|
+
* (waiting_on_human, #815). The ActivityMonitor writes it on every poll; the
|
|
6
|
+
* reconciler reads it to build AgentHealth.waitingOnHumanSince.
|
|
7
|
+
*
|
|
8
|
+
* Kept separate from both services so neither has to import the other's
|
|
9
|
+
* singleton. State is in memory on purpose: after a backend restart the
|
|
10
|
+
* first monitor poll (≤30s) re-detects a prompt that is still on screen.
|
|
11
|
+
*
|
|
12
|
+
* KNOWN GAP (#820, filed as #851): the other direction is not yet handled —
|
|
13
|
+
* if the owner answers the prompt WHILE the backend is down, this registry
|
|
14
|
+
* comes back up empty and never learns the session was waiting. The durable
|
|
15
|
+
* `agent_waiting_on_human` escalation opened before the restart
|
|
16
|
+
* (EscalationRouterService.recordAgentWaitingOnHuman) is then never closed,
|
|
17
|
+
* because ActivityMonitorService.clearAttention only calls
|
|
18
|
+
* `resolveAgentWaitingOnHuman` when `clearWaiting()` here finds a matching
|
|
19
|
+
* entry. The affected WorkItem itself is unaffected — its blocked->running
|
|
20
|
+
* transition self-heals independently via the reconciler's next poll — only
|
|
21
|
+
* the owner-facing escalation record can go stale. See #851 for why this
|
|
22
|
+
* was documented rather than fixed inline (a correct fix costs a
|
|
23
|
+
* listPending() read on every poll of every non-waiting agent unless done
|
|
24
|
+
* as a one-time startup reconciliation instead).
|
|
25
|
+
*
|
|
26
|
+
* @module services/monitoring/agent-attention-registry
|
|
27
|
+
*/
|
|
28
|
+
const entries = new Map();
|
|
29
|
+
/**
|
|
30
|
+
* Record that a session is waiting. Keeps the original `since` (and kind)
|
|
31
|
+
* when the session was already waiting, so the wait duration is not reset by
|
|
32
|
+
* each poll.
|
|
33
|
+
*
|
|
34
|
+
* @param entry - The waiting state; `since` is used only for a new wait
|
|
35
|
+
* @returns True when this starts a new wait, false when it continues one
|
|
36
|
+
*/
|
|
37
|
+
export function markWaiting(entry) {
|
|
38
|
+
const existing = entries.get(entry.sessionName);
|
|
39
|
+
if (existing) {
|
|
40
|
+
entries.set(entry.sessionName, { ...entry, since: existing.since });
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
entries.set(entry.sessionName, entry);
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Record that a session is no longer waiting.
|
|
48
|
+
*
|
|
49
|
+
* @param sessionName - The session
|
|
50
|
+
* @returns The entry that was cleared, or undefined when it was not waiting
|
|
51
|
+
*/
|
|
52
|
+
export function clearWaiting(sessionName) {
|
|
53
|
+
const existing = entries.get(sessionName);
|
|
54
|
+
entries.delete(sessionName);
|
|
55
|
+
return existing;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get a session's current waiting state.
|
|
59
|
+
*
|
|
60
|
+
* @param sessionName - The session
|
|
61
|
+
* @returns The entry, or undefined when the session is not waiting
|
|
62
|
+
*/
|
|
63
|
+
export function getWaiting(sessionName) {
|
|
64
|
+
return entries.get(sessionName);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* List every session currently waiting.
|
|
68
|
+
*
|
|
69
|
+
* @returns Snapshot of all waiting entries
|
|
70
|
+
*/
|
|
71
|
+
export function listWaiting() {
|
|
72
|
+
return [...entries.values()];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Forget all state (tests only).
|
|
76
|
+
*/
|
|
77
|
+
export function resetWaitingRegistry() {
|
|
78
|
+
entries.clear();
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=agent-attention-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-attention-registry.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/agent-attention-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAkBH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5B,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IACnC,OAAO,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Attention Verdict
|
|
3
|
+
*
|
|
4
|
+
* Decides, from what an agent's terminal shows, whether the agent is blocked
|
|
5
|
+
* on a human (an approval prompt, a trust dialog, a plan-mode menu, any
|
|
6
|
+
* selection dialog) rather than working or idle. See
|
|
7
|
+
* `specs/2026-09-26-agent-waiting-on-human.md`.
|
|
8
|
+
*
|
|
9
|
+
* Pure functions only: the caller supplies the rendered screen text and the
|
|
10
|
+
* latest OSC terminal title. The rules are pinned by fixture files of real
|
|
11
|
+
* captured screens in `__fixtures__/agent-screens/`.
|
|
12
|
+
*
|
|
13
|
+
* Signals and what each one is worth (verified 2026-09-26 on Claude Code
|
|
14
|
+
* 2.1.283 and Codex 0.157.1):
|
|
15
|
+
* - Screen text: the primary signal. A blocking dialog renders a selector
|
|
16
|
+
* (`❯` / `›`) plus dialog-specific text or a confirm footer.
|
|
17
|
+
* - OSC title: Codex writes `[ ! ] Action Required | …` while it waits and a
|
|
18
|
+
* braille spinner while it works, so its title votes. Claude Code writes
|
|
19
|
+
* `✳ <task label>` in every state, so a Claude title is a label only.
|
|
20
|
+
*
|
|
21
|
+
* @module services/monitoring/agent-attention
|
|
22
|
+
*/
|
|
23
|
+
/** Overall verdict for one agent at one moment. */
|
|
24
|
+
export type AttentionVerdict = 'waiting_on_human' | 'busy' | 'idle';
|
|
25
|
+
/**
|
|
26
|
+
* What the agent is waiting on.
|
|
27
|
+
* - `permission`: a tool or command approval
|
|
28
|
+
* - `trust`: a folder / workspace trust dialog
|
|
29
|
+
* - `plan`: Claude Code's plan-approval menu
|
|
30
|
+
* - `menu`: some other selection dialog (onboarding, opt-in, …)
|
|
31
|
+
* - `unspecified`: only the terminal title said so
|
|
32
|
+
*/
|
|
33
|
+
export type WaitingKind = 'permission' | 'trust' | 'plan' | 'menu' | 'unspecified';
|
|
34
|
+
/** What the OSC terminal title says on its own. */
|
|
35
|
+
export type TitleSignal = 'waiting' | 'busy' | 'none';
|
|
36
|
+
/** Input to {@link computeAgentAttention}. */
|
|
37
|
+
export interface AttentionInput {
|
|
38
|
+
/** Rendered screen text (ANSI allowed; it is stripped). */
|
|
39
|
+
screen: string;
|
|
40
|
+
/** Latest OSC 0/2 terminal title, if known. */
|
|
41
|
+
title?: string | null;
|
|
42
|
+
}
|
|
43
|
+
/** Result of {@link computeAgentAttention}. */
|
|
44
|
+
export interface AttentionResult {
|
|
45
|
+
/** The fused verdict. */
|
|
46
|
+
verdict: AttentionVerdict;
|
|
47
|
+
/** Set only when `verdict` is `waiting_on_human`. */
|
|
48
|
+
kind?: WaitingKind;
|
|
49
|
+
/** Names of the rules that fired, for logs and escalation text. */
|
|
50
|
+
evidence: string[];
|
|
51
|
+
/** Non-empty screen lines the rules examined (0 means nothing was examined). */
|
|
52
|
+
linesExamined: number;
|
|
53
|
+
/** Human-readable task label taken from the title, without status glyphs. */
|
|
54
|
+
titleLabel?: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Keep the bottom of the screen: the last N non-empty lines.
|
|
58
|
+
*
|
|
59
|
+
* Dialogs render at the bottom. Restricting to the bottom region keeps a
|
|
60
|
+
* dialog that was answered minutes ago (still in scrollback) from counting.
|
|
61
|
+
*
|
|
62
|
+
* @param screen - Rendered screen text, ANSI allowed
|
|
63
|
+
* @returns The bottom non-empty lines, joined with newlines, and their count
|
|
64
|
+
*/
|
|
65
|
+
export declare function bottomRegion(screen: string): {
|
|
66
|
+
text: string;
|
|
67
|
+
lines: number;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Read the OSC terminal title.
|
|
71
|
+
*
|
|
72
|
+
* @param title - Latest OSC title, or null/undefined when unknown
|
|
73
|
+
* @returns The title's own signal and its label without status glyphs
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* classifyTitle('[ ! ] Action Required | ⠸ | repo'); // { signal: 'waiting', label: 'repo' }
|
|
78
|
+
* classifyTitle('✳ Fix login bug'); // { signal: 'none', label: 'Fix login bug' }
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export declare function classifyTitle(title: string | null | undefined): {
|
|
82
|
+
signal: TitleSignal;
|
|
83
|
+
label: string;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Find a blocking dialog at the bottom of the screen.
|
|
87
|
+
*
|
|
88
|
+
* @param screen - Rendered screen text, ANSI allowed
|
|
89
|
+
* @returns The dialog kind (undefined when none), rule evidence, whether a
|
|
90
|
+
* busy marker is visible, and how many lines were examined
|
|
91
|
+
*/
|
|
92
|
+
export declare function detectPromptOnScreen(screen: string): {
|
|
93
|
+
kind?: WaitingKind;
|
|
94
|
+
evidence: string[];
|
|
95
|
+
busy: boolean;
|
|
96
|
+
linesExamined: number;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Fuse screen and title into one attention verdict.
|
|
100
|
+
*
|
|
101
|
+
* Precedence: a dialog on screen wins (it is explicit), then a waiting title,
|
|
102
|
+
* then any busy signal, else idle.
|
|
103
|
+
*
|
|
104
|
+
* @param input - Rendered screen and latest title
|
|
105
|
+
* @returns The verdict with its evidence and the number of lines examined
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* const r = computeAgentAttention({ screen: backend.captureOutput(s, 40), title });
|
|
110
|
+
* if (r.verdict === 'waiting_on_human') routeToOwner(r.kind);
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export declare function computeAgentAttention(input: AttentionInput): AttentionResult;
|
|
114
|
+
//# sourceMappingURL=agent-attention.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-attention.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/agent-attention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,mDAAmD;AACnD,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;AAEnF,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC9B,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC/B,yBAAyB;IACzB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,qDAAqD;IACrD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAiCD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAO5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAYtG;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG;IACrD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACtB,CA8BA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAuB5E"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Attention Verdict
|
|
3
|
+
*
|
|
4
|
+
* Decides, from what an agent's terminal shows, whether the agent is blocked
|
|
5
|
+
* on a human (an approval prompt, a trust dialog, a plan-mode menu, any
|
|
6
|
+
* selection dialog) rather than working or idle. See
|
|
7
|
+
* `specs/2026-09-26-agent-waiting-on-human.md`.
|
|
8
|
+
*
|
|
9
|
+
* Pure functions only: the caller supplies the rendered screen text and the
|
|
10
|
+
* latest OSC terminal title. The rules are pinned by fixture files of real
|
|
11
|
+
* captured screens in `__fixtures__/agent-screens/`.
|
|
12
|
+
*
|
|
13
|
+
* Signals and what each one is worth (verified 2026-09-26 on Claude Code
|
|
14
|
+
* 2.1.283 and Codex 0.157.1):
|
|
15
|
+
* - Screen text: the primary signal. A blocking dialog renders a selector
|
|
16
|
+
* (`❯` / `›`) plus dialog-specific text or a confirm footer.
|
|
17
|
+
* - OSC title: Codex writes `[ ! ] Action Required | …` while it waits and a
|
|
18
|
+
* braille spinner while it works, so its title votes. Claude Code writes
|
|
19
|
+
* `✳ <task label>` in every state, so a Claude title is a label only.
|
|
20
|
+
*
|
|
21
|
+
* @module services/monitoring/agent-attention
|
|
22
|
+
*/
|
|
23
|
+
import { stripAnsiCodes } from '../../utils/terminal-output.utils.js';
|
|
24
|
+
import { AGENT_ATTENTION_CONSTANTS } from '../../constants.js';
|
|
25
|
+
/** A selector cursor at the start of a line (Claude `❯`, Codex `›`). */
|
|
26
|
+
const SELECTOR_LINE = /^\s*[❯›]\s*\S/m;
|
|
27
|
+
/** A selector cursor on a numbered option, e.g. `❯ 1. Yes`. */
|
|
28
|
+
const NUMBERED_SELECTOR_LINE = /^\s*[❯›]\s*\d+\.\s+\S/m;
|
|
29
|
+
/** Footer lines that only selection dialogs render. */
|
|
30
|
+
const CONFIRM_FOOTER = /(Esc to cancel|Enter to confirm|Press enter to confirm|enter continue\s*·\s*esc back)/i;
|
|
31
|
+
/** Work-in-progress markers (Claude and Codex both show "esc to interrupt"). */
|
|
32
|
+
const BUSY_MARKER = /esc to interrupt/i;
|
|
33
|
+
/** Claude Code's plan-approval menu. */
|
|
34
|
+
const PLAN_MENU_HEADER = /(Claude has written up a plan|Ready to code\?)/i;
|
|
35
|
+
const PLAN_MENU_QUESTION = /Would you like to proceed\?/i;
|
|
36
|
+
/** Folder / workspace trust dialogs (Claude, Codex, Gemini wording). */
|
|
37
|
+
const TRUST_TEXT = /(trust this folder|Do you trust the files|Is this a project you (created or one you )?trust|Accessing workspace)/i;
|
|
38
|
+
/** Tool / command approval questions. */
|
|
39
|
+
const PERMISSION_TEXT = /(Do you want to proceed\?|Do you want to (make this edit|create|allow|run)|Would you like to run the following command\?|Would you like to make the following edits\?)/i;
|
|
40
|
+
/** Codex (and similar) title while waiting on the user. */
|
|
41
|
+
const TITLE_WAITING = /Action Required/i;
|
|
42
|
+
/** A braille spinner glyph (U+2800–U+28FF) leading the title means work in progress. */
|
|
43
|
+
const TITLE_SPINNER = /^\s*[⠀-⣿]/;
|
|
44
|
+
/** Status glyphs and markers stripped from a title to get its label. */
|
|
45
|
+
const TITLE_DECORATION = /^\s*(\[\s*!\s*\]\s*Action Required\s*\|\s*)?([⠀-⣿]\s*\|?\s*)?([✳✻✽✶✢·*]\s*)?/i;
|
|
46
|
+
/**
|
|
47
|
+
* Keep the bottom of the screen: the last N non-empty lines.
|
|
48
|
+
*
|
|
49
|
+
* Dialogs render at the bottom. Restricting to the bottom region keeps a
|
|
50
|
+
* dialog that was answered minutes ago (still in scrollback) from counting.
|
|
51
|
+
*
|
|
52
|
+
* @param screen - Rendered screen text, ANSI allowed
|
|
53
|
+
* @returns The bottom non-empty lines, joined with newlines, and their count
|
|
54
|
+
*/
|
|
55
|
+
export function bottomRegion(screen) {
|
|
56
|
+
const nonEmpty = stripAnsiCodes(screen)
|
|
57
|
+
.split('\n')
|
|
58
|
+
.map((line) => line.replace(/\s+$/, ''))
|
|
59
|
+
.filter((line) => line.trim() !== '');
|
|
60
|
+
const kept = nonEmpty.slice(-AGENT_ATTENTION_CONSTANTS.BOTTOM_LINES);
|
|
61
|
+
return { text: kept.join('\n'), lines: kept.length };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Read the OSC terminal title.
|
|
65
|
+
*
|
|
66
|
+
* @param title - Latest OSC title, or null/undefined when unknown
|
|
67
|
+
* @returns The title's own signal and its label without status glyphs
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* classifyTitle('[ ! ] Action Required | ⠸ | repo'); // { signal: 'waiting', label: 'repo' }
|
|
72
|
+
* classifyTitle('✳ Fix login bug'); // { signal: 'none', label: 'Fix login bug' }
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export function classifyTitle(title) {
|
|
76
|
+
if (!title || title.trim() === '') {
|
|
77
|
+
return { signal: 'none', label: '' };
|
|
78
|
+
}
|
|
79
|
+
const label = title.replace(TITLE_DECORATION, '').trim();
|
|
80
|
+
if (TITLE_WAITING.test(title)) {
|
|
81
|
+
return { signal: 'waiting', label };
|
|
82
|
+
}
|
|
83
|
+
if (TITLE_SPINNER.test(title)) {
|
|
84
|
+
return { signal: 'busy', label };
|
|
85
|
+
}
|
|
86
|
+
return { signal: 'none', label };
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Find a blocking dialog at the bottom of the screen.
|
|
90
|
+
*
|
|
91
|
+
* @param screen - Rendered screen text, ANSI allowed
|
|
92
|
+
* @returns The dialog kind (undefined when none), rule evidence, whether a
|
|
93
|
+
* busy marker is visible, and how many lines were examined
|
|
94
|
+
*/
|
|
95
|
+
export function detectPromptOnScreen(screen) {
|
|
96
|
+
const { text, lines } = bottomRegion(screen);
|
|
97
|
+
const evidence = [];
|
|
98
|
+
const busy = BUSY_MARKER.test(text);
|
|
99
|
+
const selector = SELECTOR_LINE.test(text);
|
|
100
|
+
const numbered = NUMBERED_SELECTOR_LINE.test(text);
|
|
101
|
+
const footer = CONFIRM_FOOTER.test(text);
|
|
102
|
+
// A selector alone is not enough: Claude renders user messages and the
|
|
103
|
+
// input box with `❯`, and Codex its input box with `›`.
|
|
104
|
+
const menuPresent = numbered || (selector && footer);
|
|
105
|
+
let kind;
|
|
106
|
+
if (PLAN_MENU_HEADER.test(text) && PLAN_MENU_QUESTION.test(text)) {
|
|
107
|
+
kind = 'plan';
|
|
108
|
+
evidence.push('screen:plan-menu');
|
|
109
|
+
}
|
|
110
|
+
else if (menuPresent && TRUST_TEXT.test(text)) {
|
|
111
|
+
kind = 'trust';
|
|
112
|
+
evidence.push('screen:trust-dialog');
|
|
113
|
+
}
|
|
114
|
+
else if (menuPresent && PERMISSION_TEXT.test(text)) {
|
|
115
|
+
kind = 'permission';
|
|
116
|
+
evidence.push('screen:permission-prompt');
|
|
117
|
+
}
|
|
118
|
+
else if (selector && footer) {
|
|
119
|
+
kind = 'menu';
|
|
120
|
+
evidence.push('screen:selection-dialog');
|
|
121
|
+
}
|
|
122
|
+
if (busy) {
|
|
123
|
+
evidence.push('screen:busy-marker');
|
|
124
|
+
}
|
|
125
|
+
return { kind, evidence, busy, linesExamined: lines };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Fuse screen and title into one attention verdict.
|
|
129
|
+
*
|
|
130
|
+
* Precedence: a dialog on screen wins (it is explicit), then a waiting title,
|
|
131
|
+
* then any busy signal, else idle.
|
|
132
|
+
*
|
|
133
|
+
* @param input - Rendered screen and latest title
|
|
134
|
+
* @returns The verdict with its evidence and the number of lines examined
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```typescript
|
|
138
|
+
* const r = computeAgentAttention({ screen: backend.captureOutput(s, 40), title });
|
|
139
|
+
* if (r.verdict === 'waiting_on_human') routeToOwner(r.kind);
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export function computeAgentAttention(input) {
|
|
143
|
+
const screen = detectPromptOnScreen(input.screen);
|
|
144
|
+
const title = classifyTitle(input.title);
|
|
145
|
+
const evidence = [...screen.evidence];
|
|
146
|
+
if (title.signal !== 'none') {
|
|
147
|
+
evidence.push(`title:${title.signal}`);
|
|
148
|
+
}
|
|
149
|
+
const base = {
|
|
150
|
+
evidence,
|
|
151
|
+
linesExamined: screen.linesExamined,
|
|
152
|
+
...(title.label ? { titleLabel: title.label } : {}),
|
|
153
|
+
};
|
|
154
|
+
if (screen.kind) {
|
|
155
|
+
return { verdict: 'waiting_on_human', kind: screen.kind, ...base };
|
|
156
|
+
}
|
|
157
|
+
if (title.signal === 'waiting') {
|
|
158
|
+
return { verdict: 'waiting_on_human', kind: 'unspecified', ...base };
|
|
159
|
+
}
|
|
160
|
+
if (screen.busy || title.signal === 'busy') {
|
|
161
|
+
return { verdict: 'busy', ...base };
|
|
162
|
+
}
|
|
163
|
+
return { verdict: 'idle', ...base };
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=agent-attention.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-attention.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/agent-attention.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Hook State
|
|
3
|
+
*
|
|
4
|
+
* Latest "waiting on the user" signal per agent session, as reported by the
|
|
5
|
+
* Claude Code agent-status hook (`config/hooks/agent-status/report.sh`,
|
|
6
|
+
* POST /api/agent-hooks). #815, specs/2026-09-26-agent-status-hooks.md.
|
|
7
|
+
*
|
|
8
|
+
* This is the hook half of the waiting_on_human verdict: the activity
|
|
9
|
+
* monitor combines it with screen and title detection. Only identifiers are
|
|
10
|
+
* ever stored (event name, notification type) — never hook payload content.
|
|
11
|
+
*
|
|
12
|
+
* @module services/monitoring/agent-hook-state
|
|
13
|
+
*/
|
|
14
|
+
/** What a hook event says about waiting. */
|
|
15
|
+
export type HookSignalState = 'waiting' | 'cleared';
|
|
16
|
+
/** What the agent waits on, from the hook's point of view. */
|
|
17
|
+
export type HookWaitingKind = 'permission' | 'menu';
|
|
18
|
+
/** The latest signal for one session. */
|
|
19
|
+
export interface HookSignal {
|
|
20
|
+
/** Session that reported it. */
|
|
21
|
+
sessionName: string;
|
|
22
|
+
/** Waiting or cleared. */
|
|
23
|
+
state: HookSignalState;
|
|
24
|
+
/** Set when `state` is `waiting`. */
|
|
25
|
+
kind?: HookWaitingKind;
|
|
26
|
+
/** The hook event that produced it. */
|
|
27
|
+
event: string;
|
|
28
|
+
/** The notification type, for Notification events. */
|
|
29
|
+
notificationType?: string;
|
|
30
|
+
/** ISO time it was received. */
|
|
31
|
+
at: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Map a hook event to a signal.
|
|
35
|
+
*
|
|
36
|
+
* - `PermissionRequest`, or `Notification` of type `permission_prompt` → waiting (permission)
|
|
37
|
+
* - `Notification` of type `elicitation_dialog` → waiting (menu: a question for the user)
|
|
38
|
+
* - `Stop`, `UserPromptSubmit`, `PostToolUse` → cleared (the prompt was answered or the turn ended)
|
|
39
|
+
* - anything else (e.g. `idle_prompt`: the agent is idle at its input box) → no signal
|
|
40
|
+
*
|
|
41
|
+
* @param event - Hook event name
|
|
42
|
+
* @param notificationType - Notification type, for Notification events
|
|
43
|
+
* @returns The signal state and kind, or null when the event says nothing about waiting
|
|
44
|
+
*/
|
|
45
|
+
export declare function hookEventToSignal(event: string, notificationType?: string): {
|
|
46
|
+
state: HookSignalState;
|
|
47
|
+
kind?: HookWaitingKind;
|
|
48
|
+
} | null;
|
|
49
|
+
/**
|
|
50
|
+
* Record a hook event for a session.
|
|
51
|
+
*
|
|
52
|
+
* @param sessionName - Reporting session
|
|
53
|
+
* @param event - Hook event name (already validated by the caller)
|
|
54
|
+
* @param notificationType - Notification type, if any
|
|
55
|
+
* @param now - Clock (injectable for tests)
|
|
56
|
+
* @returns The stored signal, or null when the event carries no waiting information
|
|
57
|
+
*/
|
|
58
|
+
export declare function recordHookEvent(sessionName: string, event: string, notificationType?: string, now?: Date): HookSignal | null;
|
|
59
|
+
/**
|
|
60
|
+
* Latest hook signal for a session.
|
|
61
|
+
*
|
|
62
|
+
* @param sessionName - Session
|
|
63
|
+
* @returns The signal, or undefined when the session never reported one
|
|
64
|
+
*/
|
|
65
|
+
export declare function getHookSignal(sessionName: string): HookSignal | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Forget a session's signal (e.g. when its session ends).
|
|
68
|
+
*
|
|
69
|
+
* @param sessionName - Session
|
|
70
|
+
*/
|
|
71
|
+
export declare function clearHookSignal(sessionName: string): void;
|
|
72
|
+
/**
|
|
73
|
+
* Forget everything (tests only).
|
|
74
|
+
*/
|
|
75
|
+
export declare function resetHookState(): void;
|
|
76
|
+
//# sourceMappingURL=agent-hook-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-hook-state.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/agent-hook-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,4CAA4C;AAC5C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,MAAM,CAAC;AAEpD,yCAAyC;AACzC,MAAM,WAAW,UAAU;IAC1B,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,qCAAqC;IACrC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;CACX;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,MAAM,EACb,gBAAgB,CAAC,EAAE,MAAM,GACvB;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAS3D;AAID;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,gBAAgB,CAAC,EAAE,MAAM,EACzB,GAAG,GAAE,IAAiB,GACpB,UAAU,GAAG,IAAI,CAmBnB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEzE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Hook State
|
|
3
|
+
*
|
|
4
|
+
* Latest "waiting on the user" signal per agent session, as reported by the
|
|
5
|
+
* Claude Code agent-status hook (`config/hooks/agent-status/report.sh`,
|
|
6
|
+
* POST /api/agent-hooks). #815, specs/2026-09-26-agent-status-hooks.md.
|
|
7
|
+
*
|
|
8
|
+
* This is the hook half of the waiting_on_human verdict: the activity
|
|
9
|
+
* monitor combines it with screen and title detection. Only identifiers are
|
|
10
|
+
* ever stored (event name, notification type) — never hook payload content.
|
|
11
|
+
*
|
|
12
|
+
* @module services/monitoring/agent-hook-state
|
|
13
|
+
*/
|
|
14
|
+
import { AGENT_STATUS_HOOK_CONSTANTS } from '../../constants.js';
|
|
15
|
+
/**
|
|
16
|
+
* Map a hook event to a signal.
|
|
17
|
+
*
|
|
18
|
+
* - `PermissionRequest`, or `Notification` of type `permission_prompt` → waiting (permission)
|
|
19
|
+
* - `Notification` of type `elicitation_dialog` → waiting (menu: a question for the user)
|
|
20
|
+
* - `Stop`, `UserPromptSubmit`, `PostToolUse` → cleared (the prompt was answered or the turn ended)
|
|
21
|
+
* - anything else (e.g. `idle_prompt`: the agent is idle at its input box) → no signal
|
|
22
|
+
*
|
|
23
|
+
* @param event - Hook event name
|
|
24
|
+
* @param notificationType - Notification type, for Notification events
|
|
25
|
+
* @returns The signal state and kind, or null when the event says nothing about waiting
|
|
26
|
+
*/
|
|
27
|
+
export function hookEventToSignal(event, notificationType) {
|
|
28
|
+
if (event === 'PermissionRequest')
|
|
29
|
+
return { state: 'waiting', kind: 'permission' };
|
|
30
|
+
if (event === 'Notification') {
|
|
31
|
+
if (notificationType === 'permission_prompt')
|
|
32
|
+
return { state: 'waiting', kind: 'permission' };
|
|
33
|
+
if (notificationType === 'elicitation_dialog')
|
|
34
|
+
return { state: 'waiting', kind: 'menu' };
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
if (event === 'Stop' || event === 'UserPromptSubmit' || event === 'PostToolUse')
|
|
38
|
+
return { state: 'cleared' };
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const signals = new Map();
|
|
42
|
+
/**
|
|
43
|
+
* Record a hook event for a session.
|
|
44
|
+
*
|
|
45
|
+
* @param sessionName - Reporting session
|
|
46
|
+
* @param event - Hook event name (already validated by the caller)
|
|
47
|
+
* @param notificationType - Notification type, if any
|
|
48
|
+
* @param now - Clock (injectable for tests)
|
|
49
|
+
* @returns The stored signal, or null when the event carries no waiting information
|
|
50
|
+
*/
|
|
51
|
+
export function recordHookEvent(sessionName, event, notificationType, now = new Date()) {
|
|
52
|
+
const mapped = hookEventToSignal(event, notificationType);
|
|
53
|
+
if (!mapped)
|
|
54
|
+
return null;
|
|
55
|
+
if (!signals.has(sessionName) && signals.size >= AGENT_STATUS_HOOK_CONSTANTS.MAX_TRACKED_SESSIONS) {
|
|
56
|
+
// Bounded memory: drop the oldest entry (Map keeps insertion order).
|
|
57
|
+
const oldest = signals.keys().next().value;
|
|
58
|
+
if (oldest !== undefined)
|
|
59
|
+
signals.delete(oldest);
|
|
60
|
+
}
|
|
61
|
+
const signal = {
|
|
62
|
+
sessionName,
|
|
63
|
+
state: mapped.state,
|
|
64
|
+
...(mapped.kind ? { kind: mapped.kind } : {}),
|
|
65
|
+
event,
|
|
66
|
+
...(notificationType ? { notificationType } : {}),
|
|
67
|
+
at: now.toISOString(),
|
|
68
|
+
};
|
|
69
|
+
signals.delete(sessionName);
|
|
70
|
+
signals.set(sessionName, signal);
|
|
71
|
+
return signal;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Latest hook signal for a session.
|
|
75
|
+
*
|
|
76
|
+
* @param sessionName - Session
|
|
77
|
+
* @returns The signal, or undefined when the session never reported one
|
|
78
|
+
*/
|
|
79
|
+
export function getHookSignal(sessionName) {
|
|
80
|
+
return signals.get(sessionName);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Forget a session's signal (e.g. when its session ends).
|
|
84
|
+
*
|
|
85
|
+
* @param sessionName - Session
|
|
86
|
+
*/
|
|
87
|
+
export function clearHookSignal(sessionName) {
|
|
88
|
+
signals.delete(sessionName);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Forget everything (tests only).
|
|
92
|
+
*/
|
|
93
|
+
export function resetHookState() {
|
|
94
|
+
signals.clear();
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=agent-hook-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-hook-state.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/agent-hook-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAwBjE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAChC,KAAa,EACb,gBAAyB;IAEzB,IAAI,KAAK,KAAK,mBAAmB;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IACnF,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;QAC9B,IAAI,gBAAgB,KAAK,mBAAmB;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAC9F,IAAI,gBAAgB,KAAK,oBAAoB;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzF,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,aAAa;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC7G,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC9B,WAAmB,EACnB,KAAa,EACb,gBAAyB,EACzB,MAAY,IAAI,IAAI,EAAE;IAEtB,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,2BAA2B,CAAC,oBAAoB,EAAE,CAAC;QACnG,qEAAqE;QACrE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,MAAM,GAAe;QAC1B,WAAW;QACX,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,KAAK;QACL,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE;KACrB,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAChD,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IAClD,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC7B,OAAO,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
|
|
@@ -215,7 +215,7 @@ function buildTeamConfig(rec, teamId, createdAt) {
|
|
|
215
215
|
}
|
|
216
216
|
/**
|
|
217
217
|
* Convert a kebab-case template id → human team name
|
|
218
|
-
* (`"
|
|
218
|
+
* (`"growth-marketing-team"` → `"Growth Marketing Team"`).
|
|
219
219
|
*
|
|
220
220
|
* @param templateId - The kebab-case template id.
|
|
221
221
|
* @returns A title-cased, space-separated name.
|
|
@@ -97,7 +97,7 @@ export interface TeamRecommendation {
|
|
|
97
97
|
* { name: 'customer support replies', tier: 'yes-today' },
|
|
98
98
|
* ],
|
|
99
99
|
* });
|
|
100
|
-
* // → templateId: '
|
|
100
|
+
* // → templateId: 'growth-marketing-team', 2 agents, …
|
|
101
101
|
* ```
|
|
102
102
|
*/
|
|
103
103
|
export declare function recommendTeam(ctx: BusinessContext): TeamRecommendation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommend-team.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/orchestrator/onboarding/recommend-team.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,eAAe,GACf,SAAS,GACT,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"recommend-team.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/orchestrator/onboarding/recommend-team.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,eAAe,GACf,SAAS,GACT,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAoPD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,kBAAkB,CAmBtE;AAoED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAA4B,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAEnD,CAAC"}
|
|
@@ -50,7 +50,13 @@ const HARDCODED_MAPPINGS = [
|
|
|
50
50
|
'support',
|
|
51
51
|
'content',
|
|
52
52
|
],
|
|
53
|
-
build: (ctx) => build('ecommerce-content-support',
|
|
53
|
+
build: (ctx) => build('ecommerce-content-support',
|
|
54
|
+
// dtc-viral-content-team was a paid template, moved to crewly-pro
|
|
55
|
+
// (2026-09-28, #816). growth-marketing-team is the closest free
|
|
56
|
+
// substitute (it has a content-drafter role); materialize-team.ts
|
|
57
|
+
// provisions the team from THIS template's own roles, not from the
|
|
58
|
+
// RecommendedAgent[] below (that list is preview/fallback-stub only).
|
|
59
|
+
'growth-marketing-team', [
|
|
54
60
|
{
|
|
55
61
|
role: 'content-drafter',
|
|
56
62
|
responsibilities: 'Drafts weekly blog + social content tuned to your storefront and audience.',
|
|
@@ -105,7 +111,11 @@ const HARDCODED_MAPPINGS = [
|
|
|
105
111
|
'platform',
|
|
106
112
|
'mvp',
|
|
107
113
|
],
|
|
108
|
-
build: (ctx) => build('engineering',
|
|
114
|
+
build: (ctx) => build('engineering',
|
|
115
|
+
// pragmatic-mvp-dev-team (the solo case) was a paid template, moved
|
|
116
|
+
// to crewly-pro (2026-09-28, #816). web-dev-team is free and already
|
|
117
|
+
// covers the non-solo case, so it now covers both.
|
|
118
|
+
'web-dev-team', [
|
|
109
119
|
{
|
|
110
120
|
role: 'code-reviewer',
|
|
111
121
|
responsibilities: 'Reviews pull requests for style, obvious bugs, and missing tests.',
|
|
@@ -207,7 +217,7 @@ const HARDCODED_MAPPINGS = [
|
|
|
207
217
|
* { name: 'customer support replies', tier: 'yes-today' },
|
|
208
218
|
* ],
|
|
209
219
|
* });
|
|
210
|
-
* // → templateId: '
|
|
220
|
+
* // → templateId: 'growth-marketing-team', 2 agents, …
|
|
211
221
|
* ```
|
|
212
222
|
*/
|
|
213
223
|
export function recommendTeam(ctx) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommend-team.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/orchestrator/onboarding/recommend-team.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA2FH;;;GAGG;AACH,SAAS,KAAK,CACZ,GAAW,EACX,UAAkB,EAClB,MAAmC,EACnC,SAAiB;IAEjB,OAAO;QACL,UAAU;QACV,MAAM;QACN,SAAS;QACT,MAAM,EAAE,aAAa,GAAG,EAAE;KAC3B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,kBAAkB,GAAgC;IACtD,uEAAuE;IACvE;QACE,GAAG,EAAE,2BAA2B;QAChC,QAAQ,EAAE;YACR,SAAS;YACT,YAAY;YACZ,WAAW;YACX,KAAK;YACL,UAAU;YACV,SAAS;YACT,QAAQ;YACR,YAAY;YACZ,SAAS;YACT,SAAS;SACV;QACD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CACb,KAAK,CACH,2BAA2B,
|
|
1
|
+
{"version":3,"file":"recommend-team.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/orchestrator/onboarding/recommend-team.ts"],"names":[],"mappings":"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"}
|