crewly 1.20.191 → 1.20.193
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/config/constants.ts +11 -0
- package/config/hooks/subagent-guard/subagent.sh +113 -0
- package/config/roles/architect/prompt.md +1 -1
- package/config/roles/auditor/prompt.md +1 -1
- package/config/roles/backend-developer/prompt.md +1 -1
- package/config/roles/content-strategist/prompt.md +2 -2
- package/config/roles/designer/prompt.md +1 -1
- package/config/roles/developer/prompt.md +2 -2
- package/config/roles/frontend-developer/prompt.md +1 -1
- package/config/roles/fullstack-dev/prompt.md +1 -1
- package/config/roles/generalist/prompt.md +1 -1
- package/config/roles/ops/prompt.md +1 -1
- package/config/roles/orchestrator/prompt.md +2 -2
- package/config/roles/product-manager/prompt.md +1 -1
- package/config/roles/qa/prompt.md +1 -1
- package/config/roles/qa-engineer/prompt.md +1 -1
- package/config/roles/researcher/prompt.md +1 -1
- package/config/roles/sales/prompt.md +1 -1
- package/config/roles/support/prompt.md +1 -1
- package/config/roles/team-leader/prompt.md +1 -1
- package/config/roles/tpm/prompt.md +1 -1
- package/config/roles/ux-designer/prompt.md +1 -1
- package/config/skills/_common/complete-body-shape.test.sh +17 -0
- package/config/skills/agent/core/complete-task/SKILL.md +27 -4
- package/config/skills/agent/core/complete-task/execute.sh +23 -3
- package/config/skills/agent/core/complete-task/execute.test.sh +34 -0
- package/config/skills/agent/core/handoff-task/execute.sh +1 -1
- package/config/skills/agent/core/report-status/SKILL.md +27 -4
- package/config/skills/agent/core/report-status/execute.sh +104 -4
- package/config/skills/agent/core/send-message/SKILL.md +6 -0
- package/config/skills/agent/core/send-message/execute.sh +17 -1
- package/config/skills/agent/core/send-message/execute.test.sh +81 -0
- package/config/skills/agent/core/todo-add/SKILL.md +16 -2
- package/config/skills/agent/core/todo-add/execute.sh +21 -5
- package/config/skills/agent/core/todo-add/execute.test.sh +14 -0
- package/config/skills/agent/core/todo-tasks/SKILL.md +4 -3
- package/config/skills/agent/core/todo-update/SKILL.md +13 -2
- package/config/skills/agent/core/todo-update/execute.sh +41 -3
- package/config/skills/agent/core/todo-update/execute.test.sh +7 -0
- package/config/skills/marketplace-registry.ts +4 -4
- package/config/skills/orchestrator/complete-task/SKILL.md +13 -6
- package/config/skills/orchestrator/complete-task/execute.sh +22 -3
- package/config/skills/orchestrator/delegate-task/execute.sh +2 -2
- package/config/skills/orchestrator/harness-login/SKILL.md +9 -1
- package/config/skills/orchestrator/harness-login/execute.sh +12 -4
- package/config/skills/orchestrator/harness-login/execute.test.sh +7 -0
- package/config/skills/team-leader/delegate-task/execute.sh +1 -1
- package/config/skills/team-leader/verify-output/SKILL.md +18 -1
- package/config/skills/team-leader/verify-output/execute.sh +28 -0
- package/config/skills/team-leader/verify-output/execute.test.sh +27 -0
- package/dist/backend/backend/src/constants.d.ts +181 -2
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +183 -2
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/canva/canva.controller.d.ts +6 -0
- package/dist/backend/backend/src/controllers/canva/canva.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/canva/canva.controller.js +15 -4
- package/dist/backend/backend/src/controllers/canva/canva.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/canva/canva.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/canva/canva.routes.js +3 -1
- package/dist/backend/backend/src/controllers/canva/canva.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud-device-pairing.controller.d.ts +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud-device-pairing.controller.js +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +4 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts +4 -0
- package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/connector/connector.controller.js +32 -3
- package/dist/backend/backend/src/controllers/connector/connector.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.d.ts +41 -0
- package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js +75 -0
- package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js.map +1 -0
- package/dist/backend/backend/src/controllers/google/google.controller.d.ts +6 -0
- package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/google/google.controller.js +21 -2
- package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/google/google.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/google/google.routes.js +3 -1
- package/dist/backend/backend/src/controllers/google/google.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.js +22 -3
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts +19 -2
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js +39 -6
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js +3 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts +9 -0
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +71 -2
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/people/people.routes.d.ts +25 -0
- package/dist/backend/backend/src/controllers/people/people.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/people/people.routes.js +90 -0
- package/dist/backend/backend/src/controllers/people/people.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/request-types.d.ts +2 -0
- package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/security/approvals.controller.d.ts +26 -0
- package/dist/backend/backend/src/controllers/security/approvals.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/security/approvals.controller.js +73 -0
- package/dist/backend/backend/src/controllers/security/approvals.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.controller.js +9 -0
- package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts +22 -1
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js +143 -3
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/usage.controller.d.ts +3 -3
- package/dist/backend/backend/src/controllers/system/usage.controller.js +3 -3
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +25 -3
- 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 +125 -19
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +14 -0
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +44 -1
- package/dist/backend/backend/src/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 +3 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.js +3 -0
- package/dist/backend/backend/src/routes/modules/system.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +13 -0
- 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 +28 -3
- 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 +3 -2
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +14 -3
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts +28 -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 +48 -4
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.js +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +2 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +17 -4
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +14 -0
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +38 -0
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts +34 -0
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.js +49 -5
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +8 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts +8 -0
- package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-approval.service.js +10 -0
- package/dist/backend/backend/src/services/browser/browser-approval.service.js.map +1 -1
- package/dist/backend/backend/src/services/canva/canva-token.service.d.ts +17 -4
- package/dist/backend/backend/src/services/canva/canva-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/canva/canva-token.service.js +49 -17
- package/dist/backend/backend/src/services/canva/canva-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +55 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +80 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-device-pairing.client.d.ts +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-device-pairing.client.js +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-device-pairing.service.d.ts +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-device-pairing.service.js +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts +17 -2
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js +30 -6
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts +38 -2
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js +63 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +74 -4
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +204 -56
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +19 -0
- 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.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts +9 -0
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.js +11 -0
- package/dist/backend/backend/src/services/decisions/decision.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 +3 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts +25 -2
- package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/google/google-workspace-token.service.js +48 -7
- package/dist/backend/backend/src/services/google/google-workspace-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/harness/claude-accounts.d.ts +207 -0
- package/dist/backend/backend/src/services/harness/claude-accounts.d.ts.map +1 -0
- package/dist/backend/backend/src/services/harness/claude-accounts.js +306 -0
- package/dist/backend/backend/src/services/harness/claude-accounts.js.map +1 -0
- package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts +35 -0
- package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/harness-credentials.store.js +48 -0
- package/dist/backend/backend/src/services/harness/harness-credentials.store.js.map +1 -1
- package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts +70 -1
- package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/harness-relogin.service.js +156 -19
- package/dist/backend/backend/src/services/harness/harness-relogin.service.js.map +1 -1
- package/dist/backend/backend/src/services/harness/harness.types.d.ts +2 -0
- package/dist/backend/backend/src/services/harness/harness.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/harness.types.js.map +1 -1
- package/dist/backend/backend/src/services/harness/login-broker.service.d.ts +19 -4
- package/dist/backend/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/login-broker.service.js +46 -7
- package/dist/backend/backend/src/services/harness/login-broker.service.js.map +1 -1
- package/dist/backend/backend/src/services/harness/owner-login-request.d.ts +18 -2
- package/dist/backend/backend/src/services/harness/owner-login-request.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/owner-login-request.js +31 -7
- package/dist/backend/backend/src/services/harness/owner-login-request.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts +21 -0
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +39 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +11 -0
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +29 -0
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/spend-capped-delivery.d.ts +54 -0
- package/dist/backend/backend/src/services/messaging/spend-capped-delivery.d.ts.map +1 -0
- package/dist/backend/backend/src/services/messaging/spend-capped-delivery.js +65 -0
- package/dist/backend/backend/src/services/messaging/spend-capped-delivery.js.map +1 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +5 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +13 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts +87 -5
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js +151 -12
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts +17 -4
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js +45 -17
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.d.ts +118 -2
- package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.js +213 -45
- package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts +53 -1
- package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js +137 -60
- package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/model-pricing.d.ts +2 -1
- package/dist/backend/backend/src/services/monitoring/model-pricing.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/model-pricing.js +13 -0
- package/dist/backend/backend/src/services/monitoring/model-pricing.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +9 -0
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js +32 -3
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/backend/backend/src/services/people/acting-for.service.d.ts +151 -0
- package/dist/backend/backend/src/services/people/acting-for.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/people/acting-for.service.js +224 -0
- package/dist/backend/backend/src/services/people/acting-for.service.js.map +1 -0
- package/dist/backend/backend/src/services/people/dedicated-agent.d.ts +89 -0
- package/dist/backend/backend/src/services/people/dedicated-agent.d.ts.map +1 -0
- package/dist/backend/backend/src/services/people/dedicated-agent.js +113 -0
- package/dist/backend/backend/src/services/people/dedicated-agent.js.map +1 -0
- package/dist/backend/backend/src/services/people/grant-sharing.d.ts +79 -0
- package/dist/backend/backend/src/services/people/grant-sharing.d.ts.map +1 -0
- package/dist/backend/backend/src/services/people/grant-sharing.js +135 -0
- package/dist/backend/backend/src/services/people/grant-sharing.js.map +1 -0
- package/dist/backend/backend/src/services/people/people-directory.service.d.ts +181 -0
- package/dist/backend/backend/src/services/people/people-directory.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/people/people-directory.service.js +317 -0
- package/dist/backend/backend/src/services/people/people-directory.service.js.map +1 -0
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.d.ts +29 -1
- package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.js +40 -0
- package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts +8 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js +16 -2
- package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts +60 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js +140 -8
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.store.js +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.store.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +20 -7
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.js +24 -7
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js +12 -2
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.d.ts +7 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.js +18 -3
- package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.js.map +1 -1
- package/dist/backend/backend/src/services/security/approval-activity.service.d.ts +203 -0
- package/dist/backend/backend/src/services/security/approval-activity.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/security/approval-activity.service.js +279 -0
- package/dist/backend/backend/src/services/security/approval-activity.service.js.map +1 -0
- package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill.service.js +14 -3
- package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +3 -0
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-mention-resolver.d.ts +22 -0
- package/dist/backend/backend/src/services/slack/slack-mention-resolver.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-mention-resolver.js +50 -0
- package/dist/backend/backend/src/services/slack/slack-mention-resolver.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +10 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +51 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +54 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +260 -20
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap-command.js +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap-command.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts +48 -1
- package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.service.js +85 -2
- package/dist/backend/backend/src/services/spend/spend-cap.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/completion-evidence.service.d.ts +105 -0
- package/dist/backend/backend/src/services/task-pool/completion-evidence.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/task-pool/completion-evidence.service.js +238 -0
- package/dist/backend/backend/src/services/task-pool/completion-evidence.service.js.map +1 -0
- 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 +4 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/usage/usage-stats.service.d.ts +101 -14
- package/dist/backend/backend/src/services/usage/usage-stats.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/usage/usage-stats.service.js +183 -61
- package/dist/backend/backend/src/services/usage/usage-stats.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +2 -0
- 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 +9 -0
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +10 -0
- 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 +45 -2
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +12 -1
- 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/messaging.types.d.ts +5 -0
- package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/completion-evidence.types.d.ts +77 -0
- package/dist/backend/backend/src/types/v2/completion-evidence.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/v2/completion-evidence.types.js +119 -0
- package/dist/backend/backend/src/types/v2/completion-evidence.types.js.map +1 -0
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +13 -0
- 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.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +11 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +11 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +181 -2
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +183 -2
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +13 -0
- 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 +28 -3
- 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 +3 -2
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +14 -3
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts +28 -1
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js +48 -4
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +2 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +17 -4
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +14 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +38 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts +34 -0
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.js +49 -5
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +8 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +55 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +80 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-device-pairing.client.d.ts +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-device-pairing.client.js +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts +74 -4
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.js +204 -56
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +19 -0
- 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.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts +9 -0
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.js +11 -0
- package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/cli/backend/src/services/harness/claude-accounts.d.ts +207 -0
- package/dist/cli/backend/src/services/harness/claude-accounts.d.ts.map +1 -0
- package/dist/cli/backend/src/services/harness/claude-accounts.js +306 -0
- package/dist/cli/backend/src/services/harness/claude-accounts.js.map +1 -0
- package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts +35 -0
- package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/harness-credentials.store.js +48 -0
- package/dist/cli/backend/src/services/harness/harness-credentials.store.js.map +1 -1
- package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts +70 -1
- package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/harness-relogin.service.js +156 -19
- package/dist/cli/backend/src/services/harness/harness-relogin.service.js.map +1 -1
- package/dist/cli/backend/src/services/harness/harness.types.d.ts +2 -0
- package/dist/cli/backend/src/services/harness/harness.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/harness.types.js.map +1 -1
- package/dist/cli/backend/src/services/harness/login-broker.service.d.ts +19 -4
- package/dist/cli/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/login-broker.service.js +46 -7
- package/dist/cli/backend/src/services/harness/login-broker.service.js.map +1 -1
- package/dist/cli/backend/src/services/harness/owner-login-request.d.ts +18 -2
- package/dist/cli/backend/src/services/harness/owner-login-request.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/owner-login-request.js +31 -7
- package/dist/cli/backend/src/services/harness/owner-login-request.js.map +1 -1
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts +21 -0
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js +39 -1
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts +11 -0
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js +29 -0
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +5 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +13 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.d.ts +197 -0
- package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.js +455 -0
- package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.js.map +1 -0
- package/dist/cli/backend/src/services/monitoring/model-pricing.d.ts +2 -1
- package/dist/cli/backend/src/services/monitoring/model-pricing.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/model-pricing.js +13 -0
- package/dist/cli/backend/src/services/monitoring/model-pricing.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +9 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js +32 -3
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/cli/backend/src/services/people/acting-for.service.d.ts +151 -0
- package/dist/cli/backend/src/services/people/acting-for.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/people/acting-for.service.js +224 -0
- package/dist/cli/backend/src/services/people/acting-for.service.js.map +1 -0
- package/dist/cli/backend/src/services/people/dedicated-agent.d.ts +89 -0
- package/dist/cli/backend/src/services/people/dedicated-agent.d.ts.map +1 -0
- package/dist/cli/backend/src/services/people/dedicated-agent.js +113 -0
- package/dist/cli/backend/src/services/people/dedicated-agent.js.map +1 -0
- package/dist/cli/backend/src/services/people/people-directory.service.d.ts +181 -0
- package/dist/cli/backend/src/services/people/people-directory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/people/people-directory.service.js +317 -0
- package/dist/cli/backend/src/services/people/people-directory.service.js.map +1 -0
- package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.d.ts +29 -1
- package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.d.ts.map +1 -1
- package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.js +40 -0
- package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.js.map +1 -1
- package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +20 -7
- package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js +24 -7
- package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -1
- package/dist/cli/backend/src/services/skill/skill.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/skill/skill.service.js +14 -3
- package/dist/cli/backend/src/services/skill/skill.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +3 -0
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-mention-resolver.d.ts +22 -0
- package/dist/cli/backend/src/services/slack/slack-mention-resolver.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-mention-resolver.js +50 -0
- package/dist/cli/backend/src/services/slack/slack-mention-resolver.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +10 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +51 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +54 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +260 -20
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- 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 +4 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +12 -1
- 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/messaging.types.d.ts +5 -0
- package/dist/cli/backend/src/types/messaging.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/messaging.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +13 -0
- 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.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.d.ts +21 -0
- package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.js +35 -1
- package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
- package/dist/cli/config/constants.d.ts +11 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +11 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/skills/marketplace-registry.d.ts +4 -4
- package/dist/cli/config/skills/marketplace-registry.js +4 -4
- package/frontend/dist/assets/index-465d1f8f.js +4955 -0
- package/frontend/dist/assets/index-5e967795.css +42 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/packages/crewly-agent/src/runtime/tool-registry.test.ts +45 -0
- package/packages/crewly-agent/src/runtime/tool-registry.ts +40 -5
- package/packages/crewly-agent/src/test/isolated-home.test.ts +24 -0
- package/frontend/dist/assets/index-20a67829.css +0 -42
- package/frontend/dist/assets/index-49f50b45.js +0 -4952
|
@@ -118,10 +118,10 @@ export const SKILL_FILE_EXCLUDES: ReadonlyArray<RegExp> = [/\.test\./, /^mock-/,
|
|
|
118
118
|
* never installed.
|
|
119
119
|
*
|
|
120
120
|
* Deliberately FLAT: files in subdirectories (e.g. remotion-video/templates/)
|
|
121
|
-
* are not listed.
|
|
122
|
-
* parent directories, so a nested path
|
|
123
|
-
*
|
|
124
|
-
* the older CLIs are no longer in use.
|
|
121
|
+
* are not listed. CLIs released before #800 write each listed file without
|
|
122
|
+
* creating parent directories, so a nested path fails the whole install on
|
|
123
|
+
* them. The installers create parent dirs since #800; list nested files only
|
|
124
|
+
* once the older CLIs are no longer in use.
|
|
125
125
|
*
|
|
126
126
|
* @param skillDir - Absolute skill directory
|
|
127
127
|
* @returns File names relative to the skill directory
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Complete Task
|
|
3
|
-
description: Mark a
|
|
4
|
-
version: 1.
|
|
3
|
+
description: Mark a WorkItem complete in the V3 task pool, with evidence.
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
category: management
|
|
6
6
|
skillType: claude-skill
|
|
7
7
|
assignableRoles:
|
|
@@ -24,18 +24,25 @@ execution:
|
|
|
24
24
|
|
|
25
25
|
# Complete Task
|
|
26
26
|
|
|
27
|
-
Mark a
|
|
27
|
+
Mark a WorkItem complete via `POST /api/task-pool/complete/:id`.
|
|
28
28
|
|
|
29
29
|
## Usage
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
bash config/skills/orchestrator/complete-task/execute.sh '{"
|
|
32
|
+
bash config/skills/orchestrator/complete-task/execute.sh '{"workItemId":"wi-123","summary":"Shipped the report","evidence":[{"type":"artifact","path":"/abs/path/report.md"},{"type":"command","command":"npm test","exitCode":0}]}'
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
## Parameters
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
| Parameter | Required | Description |
|
|
38
|
+
|-----------|----------|-------------|
|
|
39
|
+
| `workItemId` (alias `taskId`) | Yes | The WorkItem to complete |
|
|
40
|
+
| `summary` (alias `result`) | Yes | What was produced |
|
|
41
|
+
| `evidence` | Yes* | Evidence array (#873): `{"type":"artifact","path":…}` (must exist, or an https URL), `{"type":"command","command":…,"exitCode":0,"outputTail":…}`, or `{"type":"blocked","step":…,"reason":…}` (records the item as blocked, not done). *Accepted without it this release with a `warning`; required from the next |
|
|
42
|
+
| `output` | No | Structured output stored on the WorkItem before completion |
|
|
43
|
+
| `agentId` / `sessionName` | No | Who completed it (defaults to `crewly-orc`) |
|
|
38
44
|
|
|
39
45
|
## Output
|
|
40
46
|
|
|
41
|
-
JSON
|
|
47
|
+
The server's JSON response. A `warning` from the server (completion without
|
|
48
|
+
evidence) is repeated on stderr.
|
|
@@ -6,7 +6,15 @@
|
|
|
6
6
|
# on the WorkItem (replaces `<taskId>.output.json`) before completion.
|
|
7
7
|
#
|
|
8
8
|
# Input shape:
|
|
9
|
-
# { "workItemId": "abc-123", "summary": "...", "output"?: { ... }
|
|
9
|
+
# { "workItemId": "abc-123", "summary": "...", "output"?: { ... },
|
|
10
|
+
# "evidence"?: [ {"type":"artifact","path":"..."} |
|
|
11
|
+
# {"type":"command","command":"...","exitCode":0,"outputTail":"..."} |
|
|
12
|
+
# {"type":"blocked","step":"...","reason":"..."} ] }
|
|
13
|
+
#
|
|
14
|
+
# `evidence` (#873) is sent as result.evidence. The server checks it: missing
|
|
15
|
+
# artifacts and non-zero exit codes are refused, a `blocked` entry records the
|
|
16
|
+
# item as blocked instead of done, and no evidence at all is accepted this
|
|
17
|
+
# release with a `warning` (refused from the next).
|
|
10
18
|
#
|
|
11
19
|
# Backwards-compat: a `taskId` field is accepted as alias for `workItemId`.
|
|
12
20
|
|
|
@@ -26,6 +34,11 @@ OUTPUT=$(printf '%s' "$INPUT" | jq -c '.output // empty')
|
|
|
26
34
|
# work — pass that session name instead).
|
|
27
35
|
AGENT_ID=$(printf '%s' "$INPUT" | jq -r '.agentId // .sessionName // "crewly-orc"')
|
|
28
36
|
|
|
37
|
+
EVIDENCE=$(printf '%s' "$INPUT" | jq -c '.evidence // empty')
|
|
38
|
+
if [ -n "$EVIDENCE" ] && [ "$(printf '%s' "$EVIDENCE" | jq -r 'type')" != "array" ]; then
|
|
39
|
+
error_exit "evidence must be a JSON array, e.g. [{\"type\":\"artifact\",\"path\":\"/abs/file\"}]"
|
|
40
|
+
fi
|
|
41
|
+
|
|
29
42
|
require_param "workItemId" "$WORK_ITEM_ID"
|
|
30
43
|
|
|
31
44
|
# Persist structured output on the WorkItem before completing, so that
|
|
@@ -47,6 +60,12 @@ fi
|
|
|
47
60
|
COMPLETE_BODY=$(jq -n \
|
|
48
61
|
--arg agentId "$AGENT_ID" \
|
|
49
62
|
--arg summary "$SUMMARY" \
|
|
50
|
-
|
|
63
|
+
--argjson evidence "${EVIDENCE:-null}" \
|
|
64
|
+
'{agentId: $agentId, result: ({summary: $summary} + (if $evidence != null then {evidence: $evidence} else {} end))}')
|
|
51
65
|
|
|
52
|
-
api_call POST "/task-pool/complete/${WORK_ITEM_ID}" "$COMPLETE_BODY"
|
|
66
|
+
COMPLETE_RESPONSE=$(api_call POST "/task-pool/complete/${WORK_ITEM_ID}" "$COMPLETE_BODY")
|
|
67
|
+
printf '%s\n' "$COMPLETE_RESPONSE"
|
|
68
|
+
EVIDENCE_WARNING=$(printf '%s' "$COMPLETE_RESPONSE" | jq -r '.warning // empty' 2>/dev/null || true)
|
|
69
|
+
if [ -n "$EVIDENCE_WARNING" ]; then
|
|
70
|
+
jq -n --arg w "$EVIDENCE_WARNING" '{warning: $w}' >&2
|
|
71
|
+
fi
|
|
@@ -255,13 +255,13 @@ if [ "$USE_STRUCTURED" = "true" ] && [ -n "$TITLE" ]; then
|
|
|
255
255
|
|
|
256
256
|
[ -n "$CONTEXT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\nAdditional context: ${CONTEXT}"
|
|
257
257
|
[ -n "$DEADLINE_HINT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\n**Deadline hint**: ${DEADLINE_HINT}"
|
|
258
|
-
TASK_MESSAGE="${TASK_MESSAGE}\n\n---\nWhen done, report back with report-status, passing the workItemId from your [CREWLY-DISPATCH] notice (or from get-my-tasks) so the right WorkItem is closed: bash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"workItemId\":\"<your WorkItem id>\",\"status\":\"done\",\"summary\":\"<brief summary>\",\"projectPath\":\"${PROJECT_PATH}\"}'"
|
|
258
|
+
TASK_MESSAGE="${TASK_MESSAGE}\n\n---\nWhen done, report back with report-status, passing the workItemId from your [CREWLY-DISPATCH] notice (or from get-my-tasks) so the right WorkItem is closed: bash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"workItemId\":\"<your WorkItem id>\",\"status\":\"done\",\"summary\":\"<brief summary>\",\"evidence\":[{\"type\":\"artifact\",\"path\":\"<file you produced>\"},{\"type\":\"command\",\"command\":\"<check you ran>\",\"exitCode\":0}],\"projectPath\":\"${PROJECT_PATH}\"}' — done needs evidence (files that exist, checks with exit code 0); if a step failed, send [{\"type\":\"blocked\",\"step\":\"<step>\",\"reason\":\"<why>\"}] instead, never done."
|
|
259
259
|
TASK_MESSAGE="${TASK_MESSAGE}\n\nBefore reporting done, persist key findings using: bash ${CREWLY_ROOT}/config/skills/agent/core/remember/execute.sh '{\"agentId\":\"${TO}\",\"content\":\"<key findings>\",\"category\":\"pattern\",\"scope\":\"project\",\"projectPath\":\"${PROJECT_PATH}\"}'"
|
|
260
260
|
else
|
|
261
261
|
# Legacy free-text format (backwards compatible)
|
|
262
262
|
TASK_MESSAGE="New task from orchestrator (priority: ${PRIORITY}):\n\n${TASK}"
|
|
263
263
|
[ -n "$CONTEXT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\nContext: ${CONTEXT}"
|
|
264
|
-
TASK_MESSAGE="${TASK_MESSAGE}\n\nWhen done, report back with report-status, passing the workItemId from your [CREWLY-DISPATCH] notice (or from get-my-tasks) so the right WorkItem is closed: bash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"workItemId\":\"<your WorkItem id>\",\"status\":\"done\",\"summary\":\"<brief summary>\",\"projectPath\":\"${PROJECT_PATH}\"}'"
|
|
264
|
+
TASK_MESSAGE="${TASK_MESSAGE}\n\nWhen done, report back with report-status, passing the workItemId from your [CREWLY-DISPATCH] notice (or from get-my-tasks) so the right WorkItem is closed: bash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"workItemId\":\"<your WorkItem id>\",\"status\":\"done\",\"summary\":\"<brief summary>\",\"evidence\":[{\"type\":\"artifact\",\"path\":\"<file you produced>\"},{\"type\":\"command\",\"command\":\"<check you ran>\",\"exitCode\":0}],\"projectPath\":\"${PROJECT_PATH}\"}' — done needs evidence (files that exist, checks with exit code 0); if a step failed, send [{\"type\":\"blocked\",\"step\":\"<step>\",\"reason\":\"<why>\"}] instead, never done."
|
|
265
265
|
TASK_MESSAGE="${TASK_MESSAGE}\n\nBefore reporting done, persist key findings using: bash ${CREWLY_ROOT}/config/skills/agent/core/remember/execute.sh '{\"agentId\":\"${TO}\",\"content\":\"<key findings>\",\"category\":\"pattern\",\"scope\":\"project\",\"projectPath\":\"${PROJECT_PATH}\"}'"
|
|
266
266
|
fi
|
|
267
267
|
|
|
@@ -38,8 +38,15 @@ account ("帮我重新登陆 claude code", "换个账号", "send me the login li
|
|
|
38
38
|
```bash
|
|
39
39
|
bash config/skills/orchestrator/harness-login/execute.sh --harness claude
|
|
40
40
|
bash config/skills/orchestrator/harness-login/execute.sh --harness codex --switch-account
|
|
41
|
+
bash config/skills/orchestrator/harness-login/execute.sh --harness claude --account work
|
|
41
42
|
```
|
|
42
43
|
|
|
44
|
+
`--account <name>` signs in another of the owner's **own** Claude Code accounts
|
|
45
|
+
("login claude work"): it gets its own config dir and login, and agents move to
|
|
46
|
+
it when an earlier runtime in their fallback order runs out (chain entry
|
|
47
|
+
`claude-code@work`). Nothing is restarted. Add only Claude Code accounts that
|
|
48
|
+
the owner owns; never use it for another person's account.
|
|
49
|
+
|
|
43
50
|
## What happens
|
|
44
51
|
|
|
45
52
|
1. Crewly starts the harness's own login command in a terminal it keeps alive
|
|
@@ -75,7 +82,7 @@ in one line to finish it in Setup).
|
|
|
75
82
|
- `antigravity` answers `no_link_login` (it uses a Gemini API key, entered in
|
|
76
83
|
Setup); Gemini CLI is enterprise-only. Pass the message on in one line.
|
|
77
84
|
- The owner can also just write 「重新登录 claude」 / 「换个账号登录 codex」 /
|
|
78
|
-
`relogin claude` in your DM — Crewly handles that without you.
|
|
85
|
+
`relogin claude` / `login claude@work` in your DM — Crewly handles that without you.
|
|
79
86
|
|
|
80
87
|
## Errors
|
|
81
88
|
|
|
@@ -86,3 +93,4 @@ in one line to finish it in Setup).
|
|
|
86
93
|
| `owner_request_unverifiable` | The owner's chat history could not be read |
|
|
87
94
|
| `unknown_harness` | Use claude, codex or antigravity |
|
|
88
95
|
| `no_link_login` | The harness has no link login (Antigravity, Gemini) |
|
|
96
|
+
| `invalid_account` | Account names are 1–32 lower-case letters, digits, `-` or `_` |
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
# Usage:
|
|
20
20
|
# bash execute.sh --harness claude
|
|
21
21
|
# bash execute.sh --harness codex --switch-account
|
|
22
|
+
# bash execute.sh --harness claude --account work # another of the owner's Claude accounts
|
|
22
23
|
# bash execute.sh '{"harness":"claude","switchAccount":true}'
|
|
23
24
|
# =============================================================================
|
|
24
25
|
set -euo pipefail
|
|
@@ -28,22 +29,25 @@ source "${SCRIPT_DIR}/../_common/lib.sh"
|
|
|
28
29
|
print_usage() {
|
|
29
30
|
cat <<'EOF_USAGE'
|
|
30
31
|
Usage:
|
|
31
|
-
bash execute.sh --harness <claude|codex|antigravity> [--switch-account]
|
|
32
|
-
bash execute.sh '{"harness":"claude","switchAccount":false}'
|
|
32
|
+
bash execute.sh --harness <claude|codex|antigravity> [--switch-account] [--account <name>]
|
|
33
|
+
bash execute.sh '{"harness":"claude","switchAccount":false,"account":"work"}'
|
|
33
34
|
|
|
34
35
|
Options:
|
|
35
36
|
--harness claude (Claude Code), codex (Codex CLI) or antigravity (agy) — required
|
|
36
37
|
--switch-account The owner wants a different account (changes the wording of the DM)
|
|
38
|
+
--account Sign in another of the owner's own Claude Code accounts (used as a
|
|
39
|
+
runtime fallback, chain entry claude-code@<name>) instead of the default login
|
|
37
40
|
--help | -h Show this help
|
|
38
41
|
EOF_USAGE
|
|
39
42
|
}
|
|
40
43
|
|
|
41
|
-
INPUT_JSON=""; HARNESS=""; SWITCH=false
|
|
44
|
+
INPUT_JSON=""; HARNESS=""; SWITCH=false; ACCOUNT=""
|
|
42
45
|
if [[ $# -gt 0 && ${1:0:1} == '{' ]]; then INPUT_JSON="$1"; shift || true; fi
|
|
43
46
|
while [[ $# -gt 0 ]]; do
|
|
44
47
|
case "$1" in
|
|
45
48
|
--harness) [ $# -ge 2 ] || error_exit "--harness requires a value"; HARNESS="$2"; shift 2 ;;
|
|
46
49
|
--switch-account) SWITCH=true; shift ;;
|
|
50
|
+
--account) [ $# -ge 2 ] || error_exit "--account requires a value"; ACCOUNT="$2"; shift 2 ;;
|
|
47
51
|
--help|-h) print_usage; exit 0 ;;
|
|
48
52
|
*) error_exit "Unknown option: $1" ;;
|
|
49
53
|
esac
|
|
@@ -52,6 +56,7 @@ if [ -n "$INPUT_JSON" ]; then
|
|
|
52
56
|
INPUT=$(read_json_input "$INPUT_JSON")
|
|
53
57
|
[ -z "$HARNESS" ] && HARNESS=$(printf '%s' "$INPUT" | jq -r '.harness // .harnessId // empty')
|
|
54
58
|
[ "$(printf '%s' "$INPUT" | jq -r '.switchAccount // false')" = "true" ] && SWITCH=true
|
|
59
|
+
[ -z "$ACCOUNT" ] && ACCOUNT=$(printf '%s' "$INPUT" | jq -r '.account // empty')
|
|
55
60
|
fi
|
|
56
61
|
require_param "harness (--harness)" "$HARNESS"
|
|
57
62
|
|
|
@@ -59,7 +64,10 @@ require_param "harness (--harness)" "$HARNESS"
|
|
|
59
64
|
HARNESS_ID=$(printf '%s' "$HARNESS" | tr '[:upper:]' '[:lower:]' | sed -E 's/[[:space:]_]+/-/g')
|
|
60
65
|
[[ "$HARNESS_ID" =~ ^[a-z0-9-]+$ ]] || error_exit "Invalid harness: $HARNESS (use claude, codex or antigravity)"
|
|
61
66
|
|
|
62
|
-
|
|
67
|
+
ACCOUNT=$(printf '%s' "$ACCOUNT" | tr '[:upper:]' '[:lower:]')
|
|
68
|
+
[ -z "$ACCOUNT" ] || [[ "$ACCOUNT" =~ ^[a-z0-9][a-z0-9_-]{0,31}$ ]] || error_exit "Invalid account: $ACCOUNT (lower-case letters, digits, - or _)"
|
|
69
|
+
|
|
70
|
+
BODY=$(jq -cn --argjson sw "$SWITCH" --arg acct "$ACCOUNT" '{switchAccount: $sw} + (if $acct != "" then {account: $acct} else {} end)')
|
|
63
71
|
|
|
64
72
|
ERR_FILE=$(mktemp); trap 'rm -f "$ERR_FILE"' EXIT
|
|
65
73
|
RESPONSE=$(api_call POST "/harness/${HARNESS_ID}/owner-login" "$BODY" 2>"$ERR_FILE") || {
|
|
@@ -54,6 +54,12 @@ check "display name → id, switch flag" "$(jq -c '{path, body}' "$STUB_LOG")" '
|
|
|
54
54
|
OUT=$(run '{"harness":"claude","switchAccount":true}')
|
|
55
55
|
check "json input" "$(jq -c .body "$STUB_LOG")" '{"switchAccount":true}'
|
|
56
56
|
|
|
57
|
+
OUT=$(run --harness claude --account Work)
|
|
58
|
+
check "account (lower-cased)" "$(jq -c .body "$STUB_LOG")" '{"switchAccount":false,"account":"work"}'
|
|
59
|
+
|
|
60
|
+
OUT=$(run '{"harness":"claude","account":"b"}')
|
|
61
|
+
check "json account" "$(jq -c .body "$STUB_LOG")" '{"switchAccount":false,"account":"b"}'
|
|
62
|
+
|
|
57
63
|
OUT=$(run --harness codex); RC=$?
|
|
58
64
|
check "no owner request: exit 1" "$RC" "1"
|
|
59
65
|
check "no owner request: reason" "$(printf '%s' "$OUT" | jq -r .reason)" "owner_request_not_found"
|
|
@@ -67,6 +73,7 @@ check "other agents refused" "$(printf '%s' "$OUT" | jq -r .reason)" "orchestrat
|
|
|
67
73
|
check "missing harness" "$(run_err)" "Missing required parameter: harness (--harness)"
|
|
68
74
|
check "path injection refused" "$(run_err --harness '../orc')" "Invalid harness: ../orc (use claude, codex or antigravity)"
|
|
69
75
|
check "unknown option" "$(run_err --yes)" "Unknown option: --yes"
|
|
76
|
+
check "invalid account" "$(run_err --harness claude --account '../x')" "Invalid account: ../x (lower-case letters, digits, - or _)"
|
|
70
77
|
|
|
71
78
|
echo "=== Results: $PASS passed, $FAIL failed ==="
|
|
72
79
|
[ "$FAIL" -eq 0 ]
|
|
@@ -170,7 +170,7 @@ if [ -n "$CONTEXT" ]; then
|
|
|
170
170
|
fi
|
|
171
171
|
|
|
172
172
|
# Build a structured task message from Team Leader
|
|
173
|
-
TASK_MESSAGE="New task from Team Leader (priority: ${PRIORITY}):\n\n**[REQUIRED] When done, you MUST:** (1) Output a text summary of your work, findings, and any issues. (2) Call report-status, passing the workItemId from your [CREWLY-DISPATCH] notice (or from get-my-tasks) so the right WorkItem is closed:\nbash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"workItemId\":\"<your WorkItem id>\",\"status\":\"done\",\"summary\":\"<brief summary>\",\"projectPath\":\"${PROJECT_PATH}\"}'\n\n---\n\n${TASK}"
|
|
173
|
+
TASK_MESSAGE="New task from Team Leader (priority: ${PRIORITY}):\n\n**[REQUIRED] When done, you MUST:** (1) Output a text summary of your work, findings, and any issues. (2) Call report-status, passing the workItemId from your [CREWLY-DISPATCH] notice (or from get-my-tasks) so the right WorkItem is closed:\nbash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"workItemId\":\"<your WorkItem id>\",\"status\":\"done\",\"summary\":\"<brief summary>\",\"evidence\":[{\"type\":\"artifact\",\"path\":\"<file you produced>\"},{\"type\":\"command\",\"command\":\"<check you ran>\",\"exitCode\":0}],\"projectPath\":\"${PROJECT_PATH}\"}' — done needs evidence (files that exist, checks with exit code 0); if a step failed, send [{\"type\":\"blocked\",\"step\":\"<step>\",\"reason\":\"<why>\"}] instead, never done.\n\n---\n\n${TASK}"
|
|
174
174
|
[ -n "$CONTEXT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\nContext: ${CONTEXT}"
|
|
175
175
|
|
|
176
176
|
# V3-only producer (spec 2026-05-06-task-management-v1-deprecation.md):
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Verify Output
|
|
3
3
|
description: "Execute the team's verification pipeline against a completed task. Reads verificationPipeline configuration from the team template and runs each verification step sequentially."
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
category: quality
|
|
6
6
|
skillType: claude-skill
|
|
7
7
|
assignableRoles:
|
|
@@ -33,6 +33,18 @@ Supports two modes:
|
|
|
33
33
|
1. **Explicit checks**: Pass `checks[]` array directly with specific verification steps
|
|
34
34
|
2. **Template pipeline**: Pass `templateId` to automatically load verification steps from the team template's `verificationPipeline`
|
|
35
35
|
|
|
36
|
+
## Evidence first (#873)
|
|
37
|
+
|
|
38
|
+
The skill reads the worker's **evidence block** (`output.evidence` on the
|
|
39
|
+
WorkItem: artifacts that exist, commands with exit codes, blocked steps) before
|
|
40
|
+
running any check, and returns it as the first field of the verdict.
|
|
41
|
+
|
|
42
|
+
- `evidenceWarning` is set when the item was marked done **without evidence**
|
|
43
|
+
(accepted only while the server is in evidence warn mode) — do not verify it
|
|
44
|
+
on its summary alone: check the work directly or send it back asking for
|
|
45
|
+
evidence. It is also set when the worker reported `blocked` steps.
|
|
46
|
+
- The warning, when present, leads `feedback`.
|
|
47
|
+
|
|
36
48
|
## When to Use
|
|
37
49
|
|
|
38
50
|
- When a worker reports a task as `done`
|
|
@@ -118,6 +130,11 @@ The template's `passPolicy` controls the overall pass/fail determination:
|
|
|
118
130
|
|
|
119
131
|
```json
|
|
120
132
|
{
|
|
133
|
+
"evidence": [
|
|
134
|
+
{ "type": "artifact", "path": "src/auth.ts" },
|
|
135
|
+
{ "type": "command", "command": "npm test", "exitCode": 0, "outputTail": "42 passed" }
|
|
136
|
+
],
|
|
137
|
+
"evidenceWarning": null,
|
|
121
138
|
"passed": false,
|
|
122
139
|
"score": 67,
|
|
123
140
|
"feedback": "Verification failed: 1/3 checks failed (policy: critical_only).",
|
|
@@ -36,6 +36,25 @@ WI_DATA=$(api_call GET "/task-pool/items/${WORK_ITEM_ID}" 2>/dev/null || echo '{
|
|
|
36
36
|
WI_BRIEF=$(echo "$WI_DATA" | jq -r '.data.briefMarkdown // empty' 2>/dev/null || true)
|
|
37
37
|
WI_OUTPUT_RAW=$(echo "$WI_DATA" | jq -c '.data.output // empty' 2>/dev/null || true)
|
|
38
38
|
|
|
39
|
+
# Evidence first (#873). The worker's completion carries an evidence block
|
|
40
|
+
# (artifacts that exist, commands with exit codes, or blocked steps), stored
|
|
41
|
+
# at output.evidence. Read it before anything else, and flag an item that was
|
|
42
|
+
# marked done WITHOUT evidence — accepted only because the server is in warn
|
|
43
|
+
# mode this release — so it is not verified on its summary alone.
|
|
44
|
+
WI_FOUND=$(echo "$WI_DATA" | jq -r 'if (.data // null) != null then "yes" else "no" end' 2>/dev/null || echo "no")
|
|
45
|
+
WI_EVIDENCE=$(echo "$WI_DATA" | jq -c 'if (.data.output.evidence | type) == "array" then .data.output.evidence else [] end' 2>/dev/null || echo '[]')
|
|
46
|
+
EVIDENCE_WARNING=""
|
|
47
|
+
if [ "$WI_FOUND" = "yes" ]; then
|
|
48
|
+
if [ "$(printf '%s' "$WI_EVIDENCE" | jq 'length')" = "0" ]; then
|
|
49
|
+
EVIDENCE_WARNING="No completion evidence: this WorkItem was marked done without artifacts or commands (accepted only in evidence warn mode). Do not verify on the summary alone — check the work directly, or send it back asking for evidence."
|
|
50
|
+
else
|
|
51
|
+
BLOCKED_STEPS=$(printf '%s' "$WI_EVIDENCE" | jq -r '[.[] | select(.type == "blocked") | "\(.step): \(.reason)"] | join("; ")')
|
|
52
|
+
if [ -n "$BLOCKED_STEPS" ]; then
|
|
53
|
+
EVIDENCE_WARNING="The worker reported blocked steps (the item is blocked, not done): ${BLOCKED_STEPS}"
|
|
54
|
+
fi
|
|
55
|
+
fi
|
|
56
|
+
fi
|
|
57
|
+
|
|
39
58
|
# Compose `TASK_OUTPUT` for content-scan checks. Prefer worker-supplied
|
|
40
59
|
# structured output, falling back to the brief if no output was set.
|
|
41
60
|
if [ -n "$WI_OUTPUT_RAW" ] && [ "$WI_OUTPUT_RAW" != "null" ] && [ "$WI_OUTPUT_RAW" != "" ]; then
|
|
@@ -316,6 +335,11 @@ else
|
|
|
316
335
|
FEEDBACK="Verification failed: ${TOTAL_FAILED}/${TOTAL_CHECKS} checks failed (policy: ${PASS_POLICY})."
|
|
317
336
|
fi
|
|
318
337
|
|
|
338
|
+
# The evidence finding leads the feedback.
|
|
339
|
+
if [ -n "$EVIDENCE_WARNING" ]; then
|
|
340
|
+
FEEDBACK="${EVIDENCE_WARNING} ${FEEDBACK}"
|
|
341
|
+
fi
|
|
342
|
+
|
|
319
343
|
# Check if any results require manual TL review
|
|
320
344
|
REQUIRES_REVIEW=$(echo "$RESULTS" | jq '[.[] | select(.requiresReview == true)] | length')
|
|
321
345
|
if [ "$REQUIRES_REVIEW" -gt 0 ]; then
|
|
@@ -323,6 +347,8 @@ if [ "$REQUIRES_REVIEW" -gt 0 ]; then
|
|
|
323
347
|
fi
|
|
324
348
|
|
|
325
349
|
jq -n \
|
|
350
|
+
--argjson evidence "$WI_EVIDENCE" \
|
|
351
|
+
--arg evidenceWarning "$EVIDENCE_WARNING" \
|
|
326
352
|
--arg passed "$PASSED" \
|
|
327
353
|
--arg score "$SCORE" \
|
|
328
354
|
--arg feedback "$FEEDBACK" \
|
|
@@ -333,6 +359,8 @@ jq -n \
|
|
|
333
359
|
--arg workerId "$WORKER_ID" \
|
|
334
360
|
--arg templateId "$TEMPLATE_ID" \
|
|
335
361
|
'{
|
|
362
|
+
evidence: $evidence,
|
|
363
|
+
evidenceWarning: (if $evidenceWarning != "" then $evidenceWarning else null end),
|
|
336
364
|
passed: ($passed == "true"),
|
|
337
365
|
score: ($score | tonumber),
|
|
338
366
|
feedback: $feedback,
|
|
@@ -25,6 +25,15 @@ cat > "$FAKE_BIN/curl" <<'CURL_EOF'
|
|
|
25
25
|
#!/bin/bash
|
|
26
26
|
url="${@: -1}"
|
|
27
27
|
case "$url" in
|
|
28
|
+
*/api/task-pool/items/wi-ev)
|
|
29
|
+
printf '%s\n200' '{"success":true,"data":{"id":"wi-ev","status":"done_by_worker","output":{"summary":"Report written","evidence":[{"type":"artifact","path":"/proj/report.md"},{"type":"command","command":"npm test","exitCode":0}]}}}'
|
|
30
|
+
;;
|
|
31
|
+
*/api/task-pool/items/wi-noev)
|
|
32
|
+
printf '%s\n200' '{"success":true,"data":{"id":"wi-noev","status":"done_by_worker","output":{"summary":"Trust me"}}}'
|
|
33
|
+
;;
|
|
34
|
+
*/api/task-pool/items/wi-blocked)
|
|
35
|
+
printf '%s\n200' '{"success":true,"data":{"id":"wi-blocked","status":"blocked","output":{"summary":"Stuck","evidence":[{"type":"blocked","step":"deploy","reason":"no creds"}]}}}'
|
|
36
|
+
;;
|
|
28
37
|
*/api/templates/tmpl-majority)
|
|
29
38
|
printf '%s\n200' '{"success":true,"data":{"verificationPipeline":{"passPolicy":"majority","maxRetries":3,"steps":[{"id":"s1","name":"Review","method":"code_review","critical":false}]}}}'
|
|
30
39
|
;;
|
|
@@ -112,6 +121,24 @@ INPUT_INLINE=$(jq -n --arg pp "$PROJECT_DIR" \
|
|
|
112
121
|
assert_json_field "inline checks with default policy: all must pass" \
|
|
113
122
|
"$INPUT_INLINE" '.passed' 'false'
|
|
114
123
|
|
|
124
|
+
echo ""
|
|
125
|
+
echo "verify-output: evidence first (#873)"
|
|
126
|
+
|
|
127
|
+
assert_json_field "evidence is the first key of the verdict" \
|
|
128
|
+
'{"workItemId":"wi-ev"}' 'keys_unsorted[0]' 'evidence'
|
|
129
|
+
assert_json_field "evidence block is surfaced from output.evidence" \
|
|
130
|
+
'{"workItemId":"wi-ev"}' '[.evidence[].type] | join(",")' 'artifact,command'
|
|
131
|
+
assert_json_field "no evidence warning when evidence is present" \
|
|
132
|
+
'{"workItemId":"wi-ev"}' '.evidenceWarning' 'null'
|
|
133
|
+
assert_json_field "done without evidence is flagged" \
|
|
134
|
+
'{"workItemId":"wi-noev"}' '.evidenceWarning | startswith("No completion evidence")' 'true'
|
|
135
|
+
assert_json_field "the evidence flag leads the feedback" \
|
|
136
|
+
'{"workItemId":"wi-noev"}' '.feedback | startswith("No completion evidence")' 'true'
|
|
137
|
+
assert_json_field "blocked evidence is surfaced with its step" \
|
|
138
|
+
'{"workItemId":"wi-blocked"}' '.evidenceWarning | contains("deploy: no creds")' 'true'
|
|
139
|
+
assert_json_field "an unreadable WorkItem gets empty evidence and no flag" \
|
|
140
|
+
'{"workItemId":"wi-missing"}' '(.evidence | length | tostring) + "/" + (.evidenceWarning | tostring)' '0/null'
|
|
141
|
+
|
|
115
142
|
echo ""
|
|
116
143
|
echo "Results: $PASS passed, $FAIL failed"
|
|
117
144
|
[ "$FAIL" -eq 0 ]
|