crewly 1.20.192 → 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/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 +135 -2
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +136 -1
- 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 +13 -2
- 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.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 +19 -0
- 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 +37 -4
- 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 +26 -0
- 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/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/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/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/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 +24 -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 +52 -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-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/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/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 +53 -7
- 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 +77 -14
- 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 +130 -29
- package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.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/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-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 +9 -0
- 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 +46 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.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 +39 -12
- 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 +61 -20
- 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 +135 -2
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +136 -1
- 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 +24 -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 +52 -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-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/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/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/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-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 +9 -0
- 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 +46 -0
- 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-5b7af029.js → index-465d1f8f.js} +293 -293
- package/frontend/dist/assets/{index-fc715ec3.css → index-5e967795.css} +1 -1
- 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
|
@@ -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 ]
|
|
@@ -348,6 +348,8 @@ export declare const CLOUD_DISCONNECT_NOTICE_CONSTANTS: {
|
|
|
348
348
|
readonly DISCONNECT_THRESHOLD_MS: number;
|
|
349
349
|
readonly CHECK_INTERVAL_MS: number;
|
|
350
350
|
readonly REPEAT_INTERVAL_MS: number;
|
|
351
|
+
readonly QUEUE_FAILURE_THRESHOLD_MS: number;
|
|
352
|
+
readonly RELAY_QUEUE_NOTICE_FILE: "cloud/relay-queue-notice.json";
|
|
351
353
|
readonly STATE_FILE: "cloud/disconnect-notice.json";
|
|
352
354
|
readonly CLI_LOGIN_ARGS: readonly ["cloud", "login", "--no-browser"];
|
|
353
355
|
readonly CLI_ENTRY: "dist/cli/cli/src/index.js";
|
|
@@ -778,7 +780,7 @@ export declare const CONTROL_PLANE_GUARD_CONSTANTS: {
|
|
|
778
780
|
/** Files under CREWLY_HOME that agents must not read with the built-in tools either. */
|
|
779
781
|
readonly CREWLY_HOME_READ_DENIED_FILES: readonly ["api-token"];
|
|
780
782
|
/** Write-protected directories under the install root (whole subtree). */
|
|
781
|
-
readonly INSTALL_DIRS: readonly ["config/skills/orchestrator/stop-agent", "config/skills/orchestrator/start-agent", "config/skills/orchestrator/terminate-agent", "config/skills/orchestrator/stop-team", "config/skills/orchestrator/start-team", "config/skills/orchestrator/restart-crewly", "config/hooks/control-plane-guard", "config/hooks/agent-status", "dist"];
|
|
783
|
+
readonly INSTALL_DIRS: readonly ["config/skills/orchestrator/stop-agent", "config/skills/orchestrator/start-agent", "config/skills/orchestrator/terminate-agent", "config/skills/orchestrator/stop-team", "config/skills/orchestrator/start-team", "config/skills/orchestrator/restart-crewly", "config/hooks/control-plane-guard", "config/hooks/agent-status", "config/hooks/subagent-guard", "dist"];
|
|
782
784
|
/** Write-protected files under the install root. */
|
|
783
785
|
readonly INSTALL_FILES: readonly ["config/skills/_common/lib.sh"];
|
|
784
786
|
/** Write-protected directories under the agent's project path (whole subtree). */
|
|
@@ -810,6 +812,23 @@ export declare const AGENT_STATUS_HOOK_CONSTANTS: {
|
|
|
810
812
|
/** Accepted X-Agent-Session header value. */
|
|
811
813
|
readonly SESSION_NAME_PATTERN: RegExp;
|
|
812
814
|
};
|
|
815
|
+
/**
|
|
816
|
+
* Subagent guard (#852, specs/2026-10-03-subagent-guard.md): a Claude Code
|
|
817
|
+
* SubagentStart / SubagentStop hook. It injects Crewly's subagent rules when a
|
|
818
|
+
* subagent starts, and sends back, once, a subagent that stops without having
|
|
819
|
+
* made any tool call. Registered in the control-plane guard's per-session
|
|
820
|
+
* settings file, like the agent-status hook.
|
|
821
|
+
*/
|
|
822
|
+
export declare const SUBAGENT_GUARD_CONSTANTS: {
|
|
823
|
+
/** Hook script, relative to the install root. */
|
|
824
|
+
readonly HOOK_SCRIPT: "config/hooks/subagent-guard/subagent.sh";
|
|
825
|
+
/** Hook events the script is registered for. */
|
|
826
|
+
readonly EVENTS: readonly ["SubagentStart", "SubagentStop"];
|
|
827
|
+
/** Environment variable that turns the subagent guard off when set to KILL_SWITCH_OFF_VALUE. */
|
|
828
|
+
readonly KILL_SWITCH_ENV: "CREWLY_SUBAGENT_GUARD";
|
|
829
|
+
/** Value of KILL_SWITCH_ENV that disables the subagent guard. */
|
|
830
|
+
readonly KILL_SWITCH_OFF_VALUE: "0";
|
|
831
|
+
};
|
|
813
832
|
/**
|
|
814
833
|
* Session recreation (Step 2 full recreation in AgentRegistrationService).
|
|
815
834
|
*
|
|
@@ -1162,6 +1181,42 @@ export declare const GIVE_UP_RECOVERY_CONSTANTS: {
|
|
|
1162
1181
|
/** Audit label for transitions this feature makes. */
|
|
1163
1182
|
readonly ACTOR_VIA: "give-up-recovery";
|
|
1164
1183
|
};
|
|
1184
|
+
/**
|
|
1185
|
+
* Completion evidence contract (#873, specs/2026-10-03-completion-evidence.md):
|
|
1186
|
+
* a WorkItem is marked done only with evidence — artifacts that exist,
|
|
1187
|
+
* commands with their exit codes — and a worker that could not finish reports
|
|
1188
|
+
* `blocked` evidence instead.
|
|
1189
|
+
*/
|
|
1190
|
+
export declare const COMPLETION_EVIDENCE_CONSTANTS: {
|
|
1191
|
+
/** The two rollout modes for a completion that carries no evidence. */
|
|
1192
|
+
readonly MODES: readonly string[];
|
|
1193
|
+
/**
|
|
1194
|
+
* Default mode for a completion with no evidence. `warn` (this release):
|
|
1195
|
+
* accepted, logged, and the response carries a `warning`. `enforce` (next
|
|
1196
|
+
* release): 400. Malformed evidence, missing artifacts, failing commands and
|
|
1197
|
+
* `blocked` entries are handled the same in both modes.
|
|
1198
|
+
*/
|
|
1199
|
+
readonly EVIDENCE_ENFORCEMENT_MODE: "warn" | "enforce";
|
|
1200
|
+
/** Env var that overrides {@link EVIDENCE_ENFORCEMENT_MODE} (`warn` | `enforce`). */
|
|
1201
|
+
readonly ENV_MODE: "CREWLY_EVIDENCE_MODE";
|
|
1202
|
+
/** Most evidence entries accepted on one completion. */
|
|
1203
|
+
readonly MAX_ENTRIES: 50;
|
|
1204
|
+
/** Longest string accepted in any evidence field. */
|
|
1205
|
+
readonly MAX_FIELD_CHARS: 8000;
|
|
1206
|
+
/** URL schemes accepted for an artifact without checking it exists. */
|
|
1207
|
+
readonly URL_SCHEMES: readonly string[];
|
|
1208
|
+
/** Response codes for each rejection. */
|
|
1209
|
+
readonly CODES: {
|
|
1210
|
+
readonly MALFORMED: "evidence_malformed";
|
|
1211
|
+
readonly MISPLACED: "evidence_misplaced";
|
|
1212
|
+
readonly MISSING: "evidence_required";
|
|
1213
|
+
readonly ARTIFACT_NOT_FOUND: "evidence_artifact_not_found";
|
|
1214
|
+
readonly ARTIFACT_UNRESOLVABLE: "evidence_artifact_relative_path";
|
|
1215
|
+
readonly COMMAND_FAILED: "evidence_command_failed";
|
|
1216
|
+
};
|
|
1217
|
+
/** The shape a worker must send, quoted in every rejection and warning. */
|
|
1218
|
+
readonly SHAPE_HINT: string;
|
|
1219
|
+
};
|
|
1165
1220
|
/**
|
|
1166
1221
|
* Constants for the waiting_on_human attention verdict (#815).
|
|
1167
1222
|
* See specs/2026-09-26-agent-waiting-on-human.md.
|
|
@@ -2344,6 +2399,14 @@ export declare const RUNTIME_EXIT_CONSTANTS: {
|
|
|
2344
2399
|
* spawned yet.
|
|
2345
2400
|
*/
|
|
2346
2401
|
readonly PROCESS_POLL_GRACE_PERIOD_MS: 30000;
|
|
2402
|
+
/**
|
|
2403
|
+
* An exit with no recognised cause this soon after monitoring started is
|
|
2404
|
+
* recorded as `startup_exit`, not `idle_exit` (#791): no runtime idles
|
|
2405
|
+
* out in its first minute, so calling it idle hides the real cause.
|
|
2406
|
+
*/
|
|
2407
|
+
readonly EARLY_EXIT_WINDOW_MS: 60000;
|
|
2408
|
+
/** Characters of cleaned terminal output logged with an unexplained exit (#791) */
|
|
2409
|
+
readonly EXIT_DIAGNOSTIC_TAIL_CHARS: 1500;
|
|
2347
2410
|
};
|
|
2348
2411
|
/**
|
|
2349
2412
|
* Constants for context window monitoring and auto-recovery.
|
|
@@ -2668,6 +2731,13 @@ export declare const CLAUDE_TRANSCRIPT_SYNC_CONSTANTS: {
|
|
|
2668
2731
|
* so a small window is enough and keeps the cursor file small.
|
|
2669
2732
|
*/
|
|
2670
2733
|
readonly MAX_DEDUPE_IDS: 200;
|
|
2734
|
+
/**
|
|
2735
|
+
* How many earlier transcripts of a session keep their read offset.
|
|
2736
|
+
* A session that switches between the owner's Claude Code accounts, or
|
|
2737
|
+
* gets a new conversation, can come back to a transcript it already
|
|
2738
|
+
* read; the remembered offset keeps it from being counted twice.
|
|
2739
|
+
*/
|
|
2740
|
+
readonly MAX_REMEMBERED_TRANSCRIPTS: 8;
|
|
2671
2741
|
/**
|
|
2672
2742
|
* Context size, in tokens, above which a claude-code agent is asked to
|
|
2673
2743
|
* compact.
|
|
@@ -3542,8 +3612,10 @@ export declare const GOOGLE_WORKSPACE_CONSTANTS: {
|
|
|
3542
3612
|
readonly STATUS: "/status";
|
|
3543
3613
|
/** GET ?email=&product= → { accessToken, expiresAt, scopes, email, products } */
|
|
3544
3614
|
readonly TOKEN: "/token";
|
|
3545
|
-
/** GET ?token=&returnUrl=&products=&loginHint= → 302 to Google consent */
|
|
3615
|
+
/** GET ?token=&returnUrl=&products=&loginHint=&authorizedBy= → 302 to Google consent */
|
|
3546
3616
|
readonly START: "/start";
|
|
3617
|
+
/** POST { email, authorizedBy?, sharing? } → { authorizedBy, sharing } — who owns a grant and who it is shared with (issue #968) */
|
|
3618
|
+
readonly SHARING: "/sharing";
|
|
3547
3619
|
/**
|
|
3548
3620
|
* POST { products, slackUserId, slackChannelId, slackThreadTs } →
|
|
3549
3621
|
* `{ url, expiresAt }`.
|
|
@@ -3636,6 +3708,8 @@ export declare const CANVA_CONSTANTS: {
|
|
|
3636
3708
|
readonly START: "/start";
|
|
3637
3709
|
/** DELETE CLOUD_PATH itself → { removed } */
|
|
3638
3710
|
readonly DISCONNECT: "";
|
|
3711
|
+
/** POST { authorizedBy?, sharing? } → { authorizedBy, sharing } — who owns the grant and who it is shared with (issue #968) */
|
|
3712
|
+
readonly SHARING: "/sharing";
|
|
3639
3713
|
};
|
|
3640
3714
|
/** Canva Connect REST base */
|
|
3641
3715
|
readonly API_BASE: "https://api.canva.com/rest/v1";
|
|
@@ -3685,6 +3759,8 @@ export declare const MICROSOFT_TODO_CONSTANTS: {
|
|
|
3685
3759
|
readonly START: "/start";
|
|
3686
3760
|
/** DELETE CLOUD_PATH itself → { removed } */
|
|
3687
3761
|
readonly DISCONNECT: "";
|
|
3762
|
+
/** POST { authorizedBy?, sharing? } → { authorizedBy, sharing } — who owns the grant and who it is shared with (issue #968) */
|
|
3763
|
+
readonly SHARING: "/sharing";
|
|
3688
3764
|
};
|
|
3689
3765
|
/** Microsoft Graph v1.0 base */
|
|
3690
3766
|
readonly GRAPH_BASE: "https://graph.microsoft.com/v1.0";
|
|
@@ -3703,6 +3779,8 @@ export declare const MICROSOFT_TODO_CONSTANTS: {
|
|
|
3703
3779
|
readonly NOTE_PREVIEW_LENGTH: 200;
|
|
3704
3780
|
/** Accepted `importance` values */
|
|
3705
3781
|
readonly IMPORTANCE_VALUES: readonly string[];
|
|
3782
|
+
/** Most steps (Graph `checklistItems`) one call may add to a task (#835) */
|
|
3783
|
+
readonly STEPS_MAX_PER_CALL: 50;
|
|
3706
3784
|
/**
|
|
3707
3785
|
* Time zone written with a due date. To Do stores due *dates*; midnight
|
|
3708
3786
|
* in UTC is what Microsoft's own samples send and reads back unchanged.
|
|
@@ -3835,6 +3913,13 @@ export declare const CLOUD_SYNC_CONSTANTS: {
|
|
|
3835
3913
|
* register. We re-register on this interval so recovery is bounded.
|
|
3836
3914
|
*/
|
|
3837
3915
|
readonly REGISTER_INTERVAL_MS: 60000;
|
|
3916
|
+
/**
|
|
3917
|
+
* Retry gaps (ms) after a failed queue registration: 30 s, 1 min, 2 min,
|
|
3918
|
+
* 5 min, then the last value forever. Without a queue this machine
|
|
3919
|
+
* receives no Cloud or Slack messages, so it never gives up — but it
|
|
3920
|
+
* backs off so a relay that is refusing (quota, outage) is not hammered.
|
|
3921
|
+
*/
|
|
3922
|
+
readonly REGISTER_RETRY_BACKOFF_MS: readonly number[];
|
|
3838
3923
|
/** Device considered offline after this threshold (ms) */
|
|
3839
3924
|
readonly OFFLINE_THRESHOLD_MS: 60000;
|
|
3840
3925
|
/** HTTP request timeout for sync API calls (ms) */
|
|
@@ -4570,6 +4655,25 @@ export declare const HARNESS_CONSTANTS: {
|
|
|
4570
4655
|
* when the login is gone. No session file is written.
|
|
4571
4656
|
*/
|
|
4572
4657
|
readonly PROBE_ARGS: readonly string[];
|
|
4658
|
+
/**
|
|
4659
|
+
* More of the owner's own Claude Code accounts on this machine, each
|
|
4660
|
+
* with its own config dir (`CLAUDE_CONFIG_DIR`) and login, used as
|
|
4661
|
+
* runtime fallbacks (`claude-code@<name>`). Issue #942.
|
|
4662
|
+
*/
|
|
4663
|
+
readonly ACCOUNTS: {
|
|
4664
|
+
/** Directory under CREWLY_HOME holding one config dir per account */
|
|
4665
|
+
readonly DIR: "claude-accounts";
|
|
4666
|
+
/** Separator of a fallback chain entry: `claude-code@work` */
|
|
4667
|
+
readonly TARGET_SEPARATOR: "@";
|
|
4668
|
+
/** Account names: lower-case letters, digits, `-`, `_` */
|
|
4669
|
+
readonly NAME_PATTERN: RegExp;
|
|
4670
|
+
/** Words that cannot be account names (they read as part of "claude code account …") */
|
|
4671
|
+
readonly RESERVED_NAMES: readonly string[];
|
|
4672
|
+
/** Claude's user settings file, copied from the default login when an account is created */
|
|
4673
|
+
readonly SETTINGS_FILE: "settings.json";
|
|
4674
|
+
/** `.claude.json` keys copied from the default login (the owner's own earlier answers) */
|
|
4675
|
+
readonly COPIED_CONFIG_KEYS: readonly string[];
|
|
4676
|
+
};
|
|
4573
4677
|
};
|
|
4574
4678
|
/** Codex CLI facts */
|
|
4575
4679
|
readonly CODEX: {
|
|
@@ -5443,4 +5547,33 @@ export declare const RUNTIME_FALLBACK_CONSTANTS: {
|
|
|
5443
5547
|
/** Short names for "(Claude limit)" */
|
|
5444
5548
|
readonly SHORT_LABELS: Readonly<Record<string, string>>;
|
|
5445
5549
|
};
|
|
5550
|
+
/**
|
|
5551
|
+
* Per-person access (issue #968, epic #967): the people directory, the person
|
|
5552
|
+
* each agent turn acts for, and grant sharing. specs/per-person-access.md
|
|
5553
|
+
*/
|
|
5554
|
+
export declare const PEOPLE_CONSTANTS: {
|
|
5555
|
+
/** People directory under CREWLY_HOME */
|
|
5556
|
+
readonly STORE_FILE: "people.json";
|
|
5557
|
+
/** Who each agent session acts for, under CREWLY_HOME */
|
|
5558
|
+
readonly ACTING_FOR_FILE: "acting-for.json";
|
|
5559
|
+
/** Person id of the instance owner when their Slack user id is not known (dashboard, terminal) */
|
|
5560
|
+
readonly OWNER_ID: "owner";
|
|
5561
|
+
/** Roles a person can have */
|
|
5562
|
+
readonly ROLES: readonly string[];
|
|
5563
|
+
/** Role a newly seen Slack user gets */
|
|
5564
|
+
readonly DEFAULT_ROLE: "member";
|
|
5565
|
+
/** Headers the backend sends Cloud with each credential request (never taken from an agent) */
|
|
5566
|
+
readonly ACTING_FOR_HEADER: "X-Crewly-Acting-For";
|
|
5567
|
+
readonly ACTING_FOR_ROLE_HEADER: "X-Crewly-Acting-For-Role";
|
|
5568
|
+
/** Cloud's refusal code when the person may not use a grant */
|
|
5569
|
+
readonly NOT_PERMITTED_CODE: "not_permitted";
|
|
5570
|
+
/** What an agent is told to do with that refusal */
|
|
5571
|
+
readonly NOT_PERMITTED_HINT: "Tell the person you are working for exactly this, in one line. Do not retry, and do not use another account or connector to get around it.";
|
|
5572
|
+
/** Grant sharing modes: only the person who authorized it, named people, or every member (not guests) */
|
|
5573
|
+
readonly SHARING_MODES: readonly string[];
|
|
5574
|
+
/** Longest display name kept */
|
|
5575
|
+
readonly MAX_NAME_LENGTH: 80;
|
|
5576
|
+
/** Slack user ids (`U…` / `W…`) */
|
|
5577
|
+
readonly SLACK_USER_ID_PATTERN: RegExp;
|
|
5578
|
+
};
|
|
5446
5579
|
//# sourceMappingURL=constants.d.ts.map
|