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
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connector grant ownership and sharing (issue #968) — the shapes the
|
|
3
|
+
* backend exchanges with Cloud, their validation, and the message an agent
|
|
4
|
+
* gets when the person it acts for may not use a grant.
|
|
5
|
+
*
|
|
6
|
+
* Cloud holds each grant's `authorizedBy` (the person who connected it) and
|
|
7
|
+
* `sharing`, and decides on every credential request. A grant with neither is
|
|
8
|
+
* the owner's alone.
|
|
9
|
+
*
|
|
10
|
+
* specs/per-person-access.md
|
|
11
|
+
*
|
|
12
|
+
* @module services/people/grant-sharing
|
|
13
|
+
*/
|
|
14
|
+
import type { Actor } from './acting-for.service.js';
|
|
15
|
+
/** Who may use a grant besides the person who authorized it. */
|
|
16
|
+
export interface GrantSharing {
|
|
17
|
+
/** `owner`: only the person who authorized it; `people`: also the named people; `members`: every member (not guests) */
|
|
18
|
+
mode: 'owner' | 'people' | 'members';
|
|
19
|
+
/** For `people`: person ids (Slack user ids) */
|
|
20
|
+
people?: string[];
|
|
21
|
+
}
|
|
22
|
+
/** A grant's ownership, as Cloud reports it. */
|
|
23
|
+
export interface GrantOwnership {
|
|
24
|
+
/** Person who authorized it (Slack user id, or `owner`); absent = the owner */
|
|
25
|
+
authorizedBy?: string;
|
|
26
|
+
/** Absent = owner only */
|
|
27
|
+
sharing?: GrantSharing;
|
|
28
|
+
}
|
|
29
|
+
/** A sharing/ownership edit is invalid. */
|
|
30
|
+
export declare class GrantSharingError extends Error {
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate a sharing setting from the dashboard.
|
|
34
|
+
*
|
|
35
|
+
* @param raw - Candidate (untrusted)
|
|
36
|
+
* @returns Clean sharing
|
|
37
|
+
* @throws GrantSharingError when invalid
|
|
38
|
+
*/
|
|
39
|
+
export declare function validateSharing(raw: unknown): GrantSharing;
|
|
40
|
+
/**
|
|
41
|
+
* Validate an owner change (a person id).
|
|
42
|
+
*
|
|
43
|
+
* @param raw - Candidate
|
|
44
|
+
* @returns The person id
|
|
45
|
+
* @throws GrantSharingError when invalid
|
|
46
|
+
*/
|
|
47
|
+
export declare function validateAuthorizedBy(raw: unknown): string;
|
|
48
|
+
/**
|
|
49
|
+
* Whether a person may use a grant — the same rule Cloud applies (used for
|
|
50
|
+
* the dashboard's preview and tests).
|
|
51
|
+
*
|
|
52
|
+
* @param grant - Ownership (missing fields = the owner's alone)
|
|
53
|
+
* @param actor - The person
|
|
54
|
+
* @param isOwner - Whether a person id is the instance owner
|
|
55
|
+
* @returns True when allowed
|
|
56
|
+
*/
|
|
57
|
+
export declare function mayUseGrant(grant: GrantOwnership, actor: Pick<Actor, 'id' | 'role'>, isOwner: (id: string) => boolean): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* The message an agent gets when the person it acts for may not use a grant,
|
|
60
|
+
* e.g. "Info's Google Calendar isn't shared with you. Ask Info for what you
|
|
61
|
+
* need, or ask the Crewly owner to share it in Connections."
|
|
62
|
+
*
|
|
63
|
+
* @param what - What was asked for ("Google Calendar", "Canva")
|
|
64
|
+
* @param authorizedBy - Person who owns the grant, when Cloud said
|
|
65
|
+
* @returns English message
|
|
66
|
+
*/
|
|
67
|
+
export declare function notPermittedMessage(what: string, authorizedBy?: string | null): string;
|
|
68
|
+
/** Display names of Google products, for refusals. */
|
|
69
|
+
export declare const GOOGLE_PRODUCT_LABELS: Readonly<Record<string, string>>;
|
|
70
|
+
/**
|
|
71
|
+
* Read Cloud's refusal from a failed response body.
|
|
72
|
+
*
|
|
73
|
+
* @param body - Parsed body (untrusted)
|
|
74
|
+
* @returns `{ authorizedBy }` when it is a `not_permitted` refusal, else null
|
|
75
|
+
*/
|
|
76
|
+
export declare function readNotPermitted(body: unknown): {
|
|
77
|
+
authorizedBy?: string;
|
|
78
|
+
} | null;
|
|
79
|
+
//# sourceMappingURL=grant-sharing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grant-sharing.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/people/grant-sharing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAGrD,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC5B,wHAAwH;IACxH,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACrC,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC9B,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,2CAA2C;AAC3C,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAE/C;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAc1D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAGzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAQ/H;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAmBtF;AAED,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOlE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMhF"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connector grant ownership and sharing (issue #968) — the shapes the
|
|
3
|
+
* backend exchanges with Cloud, their validation, and the message an agent
|
|
4
|
+
* gets when the person it acts for may not use a grant.
|
|
5
|
+
*
|
|
6
|
+
* Cloud holds each grant's `authorizedBy` (the person who connected it) and
|
|
7
|
+
* `sharing`, and decides on every credential request. A grant with neither is
|
|
8
|
+
* the owner's alone.
|
|
9
|
+
*
|
|
10
|
+
* specs/per-person-access.md
|
|
11
|
+
*
|
|
12
|
+
* @module services/people/grant-sharing
|
|
13
|
+
*/
|
|
14
|
+
import { PEOPLE_CONSTANTS } from '../../constants.js';
|
|
15
|
+
import { getPeopleDirectory, isPersonId } from './people-directory.service.js';
|
|
16
|
+
/** A sharing/ownership edit is invalid. */
|
|
17
|
+
export class GrantSharingError extends Error {
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Validate a sharing setting from the dashboard.
|
|
21
|
+
*
|
|
22
|
+
* @param raw - Candidate (untrusted)
|
|
23
|
+
* @returns Clean sharing
|
|
24
|
+
* @throws GrantSharingError when invalid
|
|
25
|
+
*/
|
|
26
|
+
export function validateSharing(raw) {
|
|
27
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
28
|
+
throw new GrantSharingError('sharing must be an object');
|
|
29
|
+
const r = raw;
|
|
30
|
+
if (typeof r.mode !== 'string' || !PEOPLE_CONSTANTS.SHARING_MODES.includes(r.mode)) {
|
|
31
|
+
throw new GrantSharingError('sharing.mode must be owner, people or members');
|
|
32
|
+
}
|
|
33
|
+
if (r.mode !== 'people')
|
|
34
|
+
return { mode: r.mode };
|
|
35
|
+
if (!Array.isArray(r.people))
|
|
36
|
+
throw new GrantSharingError('sharing.people must be a list of people');
|
|
37
|
+
const people = [];
|
|
38
|
+
for (const id of r.people) {
|
|
39
|
+
if (!isPersonId(id))
|
|
40
|
+
throw new GrantSharingError(`Not a person: ${String(id)}`);
|
|
41
|
+
if (!people.includes(id))
|
|
42
|
+
people.push(id);
|
|
43
|
+
}
|
|
44
|
+
return { mode: 'people', people };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validate an owner change (a person id).
|
|
48
|
+
*
|
|
49
|
+
* @param raw - Candidate
|
|
50
|
+
* @returns The person id
|
|
51
|
+
* @throws GrantSharingError when invalid
|
|
52
|
+
*/
|
|
53
|
+
export function validateAuthorizedBy(raw) {
|
|
54
|
+
if (!isPersonId(raw))
|
|
55
|
+
throw new GrantSharingError('authorizedBy must be a person (a Slack user id, or owner)');
|
|
56
|
+
return raw;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Whether a person may use a grant — the same rule Cloud applies (used for
|
|
60
|
+
* the dashboard's preview and tests).
|
|
61
|
+
*
|
|
62
|
+
* @param grant - Ownership (missing fields = the owner's alone)
|
|
63
|
+
* @param actor - The person
|
|
64
|
+
* @param isOwner - Whether a person id is the instance owner
|
|
65
|
+
* @returns True when allowed
|
|
66
|
+
*/
|
|
67
|
+
export function mayUseGrant(grant, actor, isOwner) {
|
|
68
|
+
const authorizedBy = grant.authorizedBy ?? PEOPLE_CONSTANTS.OWNER_ID;
|
|
69
|
+
if (actor.id === authorizedBy)
|
|
70
|
+
return true;
|
|
71
|
+
if (isOwner(authorizedBy) && (actor.role === 'owner' || isOwner(actor.id)))
|
|
72
|
+
return true;
|
|
73
|
+
const sharing = grant.sharing ?? { mode: 'owner' };
|
|
74
|
+
if (sharing.mode === 'members')
|
|
75
|
+
return actor.role === 'owner' || actor.role === 'member';
|
|
76
|
+
if (sharing.mode === 'people')
|
|
77
|
+
return (sharing.people ?? []).includes(actor.id);
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The message an agent gets when the person it acts for may not use a grant,
|
|
82
|
+
* e.g. "Info's Google Calendar isn't shared with you. Ask Info for what you
|
|
83
|
+
* need, or ask the Crewly owner to share it in Connections."
|
|
84
|
+
*
|
|
85
|
+
* @param what - What was asked for ("Google Calendar", "Canva")
|
|
86
|
+
* @param authorizedBy - Person who owns the grant, when Cloud said
|
|
87
|
+
* @returns English message
|
|
88
|
+
*/
|
|
89
|
+
export function notPermittedMessage(what, authorizedBy) {
|
|
90
|
+
let name = null;
|
|
91
|
+
let ownerGrant = false;
|
|
92
|
+
if (authorizedBy) {
|
|
93
|
+
try {
|
|
94
|
+
const people = getPeopleDirectory();
|
|
95
|
+
ownerGrant = people.isOwner(authorizedBy);
|
|
96
|
+
const display = people.displayName(authorizedBy);
|
|
97
|
+
name = display === 'the owner' ? null : display;
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
name = null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (ownerGrant) {
|
|
104
|
+
const who = name ?? 'the owner';
|
|
105
|
+
return `${name ? `${name}'s` : "The owner's"} ${what} isn't shared with you. Ask ${who} to share it in Connections.`;
|
|
106
|
+
}
|
|
107
|
+
if (name)
|
|
108
|
+
return `${name}'s ${what} isn't shared with you. Ask ${name} for what you need, or ask the Crewly owner to share it in Connections.`;
|
|
109
|
+
return `This ${what} isn't shared with you. Ask the Crewly owner to share it in Connections.`;
|
|
110
|
+
}
|
|
111
|
+
/** Display names of Google products, for refusals. */
|
|
112
|
+
export const GOOGLE_PRODUCT_LABELS = {
|
|
113
|
+
gmail: 'Gmail',
|
|
114
|
+
calendar: 'Google Calendar',
|
|
115
|
+
drive: 'Google Drive',
|
|
116
|
+
docs: 'Google Docs',
|
|
117
|
+
sheets: 'Google Sheets',
|
|
118
|
+
slides: 'Google Slides',
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Read Cloud's refusal from a failed response body.
|
|
122
|
+
*
|
|
123
|
+
* @param body - Parsed body (untrusted)
|
|
124
|
+
* @returns `{ authorizedBy }` when it is a `not_permitted` refusal, else null
|
|
125
|
+
*/
|
|
126
|
+
export function readNotPermitted(body) {
|
|
127
|
+
if (!body || typeof body !== 'object')
|
|
128
|
+
return null;
|
|
129
|
+
const b = body;
|
|
130
|
+
if (b.code !== PEOPLE_CONSTANTS.NOT_PERMITTED_CODE && b.error !== PEOPLE_CONSTANTS.NOT_PERMITTED_CODE)
|
|
131
|
+
return null;
|
|
132
|
+
const details = b.details && typeof b.details === 'object' ? b.details : {};
|
|
133
|
+
return typeof details.authorizedBy === 'string' ? { authorizedBy: details.authorizedBy } : {};
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=grant-sharing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grant-sharing.js","sourceRoot":"","sources":["../../../../../../backend/src/services/people/grant-sharing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* People directory — the humans who use this Crewly instance, keyed by their
|
|
3
|
+
* Slack user id, with a role (issue #968).
|
|
4
|
+
*
|
|
5
|
+
* - **owner**: the instance owner (the Slack user who installed Crewly's
|
|
6
|
+
* Slack app). Always shown, always `owner`, never removable. When their
|
|
7
|
+
* Slack id is not known the owner is the id `owner` (dashboard, terminal).
|
|
8
|
+
* - **member**: a person in the workspace. A Slack user who messages an agent
|
|
9
|
+
* is added as a member automatically.
|
|
10
|
+
* - **guest**: someone the owner marked as a guest. Guests are not included
|
|
11
|
+
* when a connector is shared with "all members".
|
|
12
|
+
*
|
|
13
|
+
* Stored in `<CREWLY_HOME>/people.json`. Writes are atomic.
|
|
14
|
+
*
|
|
15
|
+
* specs/per-person-access.md
|
|
16
|
+
*
|
|
17
|
+
* @module services/people/people-directory.service
|
|
18
|
+
*/
|
|
19
|
+
/** A person's role on this instance. */
|
|
20
|
+
export type PersonRole = 'owner' | 'member' | 'guest';
|
|
21
|
+
/** One person. */
|
|
22
|
+
export interface Person {
|
|
23
|
+
/** Slack user id (`U0123…`), or `owner` for an owner whose Slack id is unknown */
|
|
24
|
+
id: string;
|
|
25
|
+
/** Display name */
|
|
26
|
+
name?: string;
|
|
27
|
+
role: PersonRole;
|
|
28
|
+
/** `auto`: added when they first messaged an agent; `owner`: added or edited by the owner */
|
|
29
|
+
source: 'auto' | 'owner';
|
|
30
|
+
createdAt: string;
|
|
31
|
+
updatedAt: string;
|
|
32
|
+
}
|
|
33
|
+
/** An invalid edit. */
|
|
34
|
+
export declare class PeopleDirectoryError extends Error {
|
|
35
|
+
}
|
|
36
|
+
/** Injectable dependencies. */
|
|
37
|
+
export interface PeopleDirectoryDeps {
|
|
38
|
+
/** Store file (default `<CREWLY_HOME>/people.json`) */
|
|
39
|
+
filePath?: string;
|
|
40
|
+
/** The instance owner's Slack user id, when known */
|
|
41
|
+
getOwnerSlackUserId?: () => string | null | undefined;
|
|
42
|
+
now?: () => number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Whether a value is a valid role.
|
|
46
|
+
*
|
|
47
|
+
* @param value - Candidate
|
|
48
|
+
* @returns True for owner / member / guest
|
|
49
|
+
*/
|
|
50
|
+
export declare function isPersonRole(value: unknown): value is PersonRole;
|
|
51
|
+
/**
|
|
52
|
+
* Whether a value is a person id this directory accepts: a Slack user id, or
|
|
53
|
+
* the owner placeholder.
|
|
54
|
+
*
|
|
55
|
+
* @param value - Candidate
|
|
56
|
+
* @returns True when valid
|
|
57
|
+
*/
|
|
58
|
+
export declare function isPersonId(value: unknown): value is string;
|
|
59
|
+
/** The people directory. */
|
|
60
|
+
export declare class PeopleDirectoryService {
|
|
61
|
+
private readonly filePathOverride?;
|
|
62
|
+
private readonly ownerSlackUserId;
|
|
63
|
+
private readonly now;
|
|
64
|
+
/**
|
|
65
|
+
* @param deps - Store path, owner lookup, clock
|
|
66
|
+
*/
|
|
67
|
+
constructor(deps?: PeopleDirectoryDeps);
|
|
68
|
+
/** @returns Store path (resolved per call so CREWLY_HOME changes apply) */
|
|
69
|
+
private filePath;
|
|
70
|
+
/**
|
|
71
|
+
* The owner's person id: their Slack user id when known, else `owner`.
|
|
72
|
+
*
|
|
73
|
+
* @returns Person id
|
|
74
|
+
*/
|
|
75
|
+
ownerId(): string;
|
|
76
|
+
/**
|
|
77
|
+
* Whether a person id is the instance owner.
|
|
78
|
+
*
|
|
79
|
+
* @param id - Person id
|
|
80
|
+
* @returns True for the owner's Slack id or the `owner` placeholder
|
|
81
|
+
*/
|
|
82
|
+
isOwner(id: string | null | undefined): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Everyone, owner first, then by name.
|
|
85
|
+
*
|
|
86
|
+
* @returns People (copies)
|
|
87
|
+
*/
|
|
88
|
+
list(): Person[];
|
|
89
|
+
/**
|
|
90
|
+
* One person.
|
|
91
|
+
*
|
|
92
|
+
* @param id - Person id
|
|
93
|
+
* @returns The person, or null when unknown
|
|
94
|
+
*/
|
|
95
|
+
get(id: string): Person | null;
|
|
96
|
+
/**
|
|
97
|
+
* A person's role. Unknown people are members (the default for a Slack
|
|
98
|
+
* user in the workspace).
|
|
99
|
+
*
|
|
100
|
+
* @param id - Person id
|
|
101
|
+
* @returns Role
|
|
102
|
+
*/
|
|
103
|
+
roleOf(id: string): PersonRole;
|
|
104
|
+
/**
|
|
105
|
+
* How to name a person to others.
|
|
106
|
+
*
|
|
107
|
+
* @param id - Person id
|
|
108
|
+
* @returns Their name, "the owner" for an owner without one, else the id
|
|
109
|
+
*/
|
|
110
|
+
displayName(id: string): string;
|
|
111
|
+
/**
|
|
112
|
+
* Record a Slack user who messaged an agent (added as a member the first
|
|
113
|
+
* time; a missing name is filled in). Never changes a role.
|
|
114
|
+
*
|
|
115
|
+
* @param id - Slack user id
|
|
116
|
+
* @param name - Their display name, when known
|
|
117
|
+
*/
|
|
118
|
+
noteSeen(id: string, name?: string): void;
|
|
119
|
+
/**
|
|
120
|
+
* Add or edit a person (owner action).
|
|
121
|
+
*
|
|
122
|
+
* @param id - Slack user id
|
|
123
|
+
* @param patch - Name and/or role
|
|
124
|
+
* @returns The person
|
|
125
|
+
* @throws PeopleDirectoryError on an invalid id or role, or when changing the owner's role
|
|
126
|
+
*/
|
|
127
|
+
upsert(id: string, patch: {
|
|
128
|
+
name?: unknown;
|
|
129
|
+
role?: unknown;
|
|
130
|
+
}): Person;
|
|
131
|
+
/**
|
|
132
|
+
* Remove a person (they come back as a member if they message an agent again).
|
|
133
|
+
*
|
|
134
|
+
* @param id - Person id
|
|
135
|
+
* @returns True when removed
|
|
136
|
+
* @throws PeopleDirectoryError for the owner
|
|
137
|
+
*/
|
|
138
|
+
remove(id: string): boolean;
|
|
139
|
+
/** @returns The stored file (empty when missing or unreadable) */
|
|
140
|
+
private read;
|
|
141
|
+
/**
|
|
142
|
+
* Write atomically.
|
|
143
|
+
*
|
|
144
|
+
* @param file - Contents
|
|
145
|
+
*/
|
|
146
|
+
private write;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Trim and bound a display name.
|
|
150
|
+
*
|
|
151
|
+
* @param name - Raw name
|
|
152
|
+
* @returns Clean name, or undefined when empty
|
|
153
|
+
*/
|
|
154
|
+
export declare function cleanPersonName(name: string | null | undefined): string | undefined;
|
|
155
|
+
/**
|
|
156
|
+
* Record a Slack user who messaged an agent, with their name (best effort,
|
|
157
|
+
* never throws).
|
|
158
|
+
*
|
|
159
|
+
* @param slackUserId - Slack user id
|
|
160
|
+
* @param name - Display name, when known
|
|
161
|
+
*/
|
|
162
|
+
export declare function notePerson(slackUserId: string, name?: string | null): void;
|
|
163
|
+
/**
|
|
164
|
+
* Tell the directory how to find the owner's Slack id (wired once Slack is up).
|
|
165
|
+
*
|
|
166
|
+
* @param lookup - Lookup, or null
|
|
167
|
+
*/
|
|
168
|
+
export declare function setPeopleOwnerLookup(lookup: (() => string | null | undefined) | null): void;
|
|
169
|
+
/**
|
|
170
|
+
* The backend's people directory.
|
|
171
|
+
*
|
|
172
|
+
* @returns Singleton
|
|
173
|
+
*/
|
|
174
|
+
export declare function getPeopleDirectory(): PeopleDirectoryService;
|
|
175
|
+
/**
|
|
176
|
+
* Replace the singleton (tests).
|
|
177
|
+
*
|
|
178
|
+
* @param service - Instance, or null to reset
|
|
179
|
+
*/
|
|
180
|
+
export declare function setPeopleDirectoryForTesting(service: PeopleDirectoryService | null): void;
|
|
181
|
+
//# sourceMappingURL=people-directory.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"people-directory.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/people/people-directory.service.ts"],"names":[],"mappings":"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"}
|