crewly 1.2.3 → 1.2.4
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/LICENSE +1 -1
- package/README.md +1 -1
- package/config/constants.ts +44 -1
- package/config/index.ts +4 -0
- package/config/roles/orchestrator/prompt.md +30 -2
- package/config/roles/team-leader/prompt.md +169 -0
- package/config/roles/team-leader/role.json +13 -0
- package/config/roles/team-leader/tl-addon.md +142 -0
- package/config/runtime_scripts/runtime-config.json +7 -0
- package/config/skills/_common/lib.sh +37 -0
- package/config/skills/agent/computer-use/execute.sh +228 -0
- package/config/skills/agent/computer-use/instructions.md +103 -0
- package/config/skills/agent/computer-use/lib/accessibility.sh +292 -0
- package/config/skills/agent/computer-use/lib/applescript.sh +117 -0
- package/config/skills/agent/computer-use/lib/discover.sh +122 -0
- package/config/skills/agent/computer-use/lib/playwright.sh +153 -0
- package/config/skills/agent/computer-use/lib/screenshot.sh +61 -0
- package/config/skills/agent/computer-use/skill.json +29 -0
- package/config/skills/agent/core/accept-task/execute.sh +7 -1
- package/config/skills/agent/core/complete-task/execute.sh +38 -1
- package/config/skills/agent/core/report-status/execute.sh +51 -2
- package/config/skills/agent/desktop-app-control/execute.sh +561 -0
- package/config/skills/agent/desktop-app-control/instructions.md +102 -0
- package/config/skills/agent/desktop-app-control/skill.json +33 -0
- package/config/skills/orchestrator/broadcast-to-org/execute.sh +88 -0
- package/config/skills/orchestrator/broadcast-to-org/instructions.md +51 -0
- package/config/skills/orchestrator/broadcast-to-org/skill.json +20 -0
- package/config/skills/orchestrator/delegate-task/execute.sh +75 -10
- package/config/skills/orchestrator/delegate-task/instructions.md +11 -1
- package/config/skills/orchestrator/handle-agent-failure/execute.sh +45 -0
- package/config/skills/orchestrator/handle-agent-failure/instructions.md +29 -0
- package/config/skills/orchestrator/handle-agent-failure/skill.json +20 -0
- package/config/skills/orchestrator/restart-crewly/instructions.md +9 -2
- package/config/skills/team-leader/_common/lib.sh +4 -0
- package/config/skills/team-leader/aggregate-results/execute.sh +168 -0
- package/config/skills/team-leader/aggregate-results/instructions.md +89 -0
- package/config/skills/team-leader/aggregate-results/skill.json +20 -0
- package/config/skills/team-leader/decompose-goal/execute.sh +86 -0
- package/config/skills/team-leader/decompose-goal/instructions.md +84 -0
- package/config/skills/team-leader/decompose-goal/skill.json +20 -0
- package/config/skills/team-leader/delegate-task/execute.sh +142 -0
- package/config/skills/team-leader/delegate-task/instructions.md +55 -0
- package/config/skills/team-leader/delegate-task/skill.json +20 -0
- package/config/skills/team-leader/handle-failure/execute.sh +119 -0
- package/config/skills/team-leader/handle-failure/instructions.md +93 -0
- package/config/skills/team-leader/handle-failure/skill.json +20 -0
- package/config/skills/team-leader/schedule-check/execute.sh +65 -0
- package/config/skills/team-leader/schedule-check/execute.test.sh +247 -0
- package/config/skills/team-leader/schedule-check/instructions.md +49 -0
- package/config/skills/team-leader/schedule-check/skill.json +20 -0
- package/config/skills/team-leader/start-agent/execute.sh +39 -0
- package/config/skills/team-leader/start-agent/instructions.md +48 -0
- package/config/skills/team-leader/start-agent/skill.json +20 -0
- package/config/skills/team-leader/stop-agent/execute.sh +39 -0
- package/config/skills/team-leader/stop-agent/instructions.md +49 -0
- package/config/skills/team-leader/stop-agent/skill.json +20 -0
- package/config/skills/team-leader/verify-output/execute.sh +296 -0
- package/config/skills/team-leader/verify-output/instructions.md +122 -0
- package/config/skills/team-leader/verify-output/skill.json +20 -0
- package/config/templates/core-team/demo-script.md +41 -0
- package/config/templates/core-team/goals.md +20 -0
- package/config/templates/core-team/team.json +22 -0
- package/config/templates/dev-fullstack/template.json +115 -0
- package/config/templates/education-smb/README.md +27 -0
- package/config/templates/education-smb/goals.md +16 -0
- package/config/templates/education-smb/knowledge/docs/content-standards.md +24 -0
- package/config/templates/education-smb/knowledge/docs/education-industry-context.md +13 -0
- package/config/templates/education-smb/knowledge/index.json +24 -0
- package/config/templates/education-smb/learned-patterns.json +16 -0
- package/config/templates/education-smb/quality-gates.yaml +66 -0
- package/config/templates/education-smb/roles/analytics-specialist.md +6 -0
- package/config/templates/education-smb/roles/content-creator.md +6 -0
- package/config/templates/education-smb/roles/curriculum-designer.md +6 -0
- package/config/templates/education-smb/roles/engagement-manager.md +6 -0
- package/config/templates/education-smb/team.json +40 -0
- package/config/templates/education-smb/template.json +26 -0
- package/config/templates/education-smb/workflows/course-content-generation.yaml +44 -0
- package/config/templates/education-smb/workflows/reporting.yaml +31 -0
- package/config/templates/education-smb/workflows/student-communication.yaml +44 -0
- package/config/templates/education-smb/workflows.yaml +40 -0
- package/config/templates/insurance-smb/README.md +28 -0
- package/config/templates/insurance-smb/goals.md +21 -0
- package/config/templates/insurance-smb/knowledge/docs/compliance-checklist.md +28 -0
- package/config/templates/insurance-smb/knowledge/docs/insurance-industry-context.md +23 -0
- package/config/templates/insurance-smb/knowledge/index.json +24 -0
- package/config/templates/insurance-smb/learned-patterns.json +16 -0
- package/config/templates/insurance-smb/quality-gates.yaml +54 -0
- package/config/templates/insurance-smb/roles/claims-processor.md +6 -0
- package/config/templates/insurance-smb/roles/client-manager.md +6 -0
- package/config/templates/insurance-smb/roles/compliance-officer.md +6 -0
- package/config/templates/insurance-smb/roles/marketing-specialist.md +6 -0
- package/config/templates/insurance-smb/roles/policy-analyst.md +6 -0
- package/config/templates/insurance-smb/team.json +48 -0
- package/config/templates/insurance-smb/template.json +26 -0
- package/config/templates/insurance-smb/workflows/claims-processing.yaml +48 -0
- package/config/templates/insurance-smb/workflows.yaml +43 -0
- package/config/templates/research-analysis/template.json +88 -0
- package/config/templates/social-media-ops/template.json +85 -0
- package/config/templates/video-production/template.json +123 -0
- package/dist/backend/backend/src/constants.d.ts +303 -15
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +296 -15
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +69 -48
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.d.ts +81 -0
- package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.js +234 -0
- package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.d.ts +25 -0
- package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js +38 -0
- package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.d.ts +69 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.js +165 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.d.ts +23 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.js +32 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts +52 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +122 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts +21 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.js +32 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.d.ts +42 -0
- package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.js +138 -0
- package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.d.ts +23 -0
- package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.js +34 -0
- package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.d.ts +43 -0
- package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.js +9 -0
- package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/files/index.d.ts +7 -0
- package/dist/backend/backend/src/controllers/cloud/files/index.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/files/index.js +7 -0
- package/dist/backend/backend/src/controllers/cloud/files/index.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.d.ts +47 -0
- package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.js +131 -0
- package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.d.ts +23 -0
- package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.js +30 -0
- package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.d.ts +81 -0
- package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.js +85 -0
- package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/h5/index.d.ts +7 -0
- package/dist/backend/backend/src/controllers/cloud/h5/index.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/h5/index.js +7 -0
- package/dist/backend/backend/src/controllers/cloud/h5/index.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/index.d.ts +14 -0
- package/dist/backend/backend/src/controllers/cloud/index.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/index.js +14 -0
- package/dist/backend/backend/src/controllers/cloud/index.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/magic-moment/index.d.ts +7 -0
- package/dist/backend/backend/src/controllers/cloud/magic-moment/index.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/magic-moment/index.js +7 -0
- package/dist/backend/backend/src/controllers/cloud/magic-moment/index.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.d.ts +45 -0
- package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.js +155 -0
- package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.d.ts +25 -0
- package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.js +32 -0
- package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts +101 -0
- package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/relay.controller.js +343 -0
- package/dist/backend/backend/src/controllers/cloud/relay.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts +29 -0
- package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/relay.routes.js +44 -0
- package/dist/backend/backend/src/controllers/cloud/relay.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.d.ts +49 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.js +152 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.d.ts +24 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.js +34 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.d.ts +90 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.js +48 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts +7 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/index.js +7 -0
- package/dist/backend/backend/src/controllers/cloud/tasks/index.js.map +1 -0
- package/dist/backend/backend/src/controllers/marketplace/index.d.ts +2 -0
- package/dist/backend/backend/src/controllers/marketplace/index.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/index.js +3 -0
- package/dist/backend/backend/src/controllers/marketplace/index.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts +12 -12
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +1 -18
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +3 -0
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.d.ts +111 -0
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.js +220 -0
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts +33 -0
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js +50 -0
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +4 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +18 -2
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/payment/index.d.ts +7 -0
- package/dist/backend/backend/src/controllers/payment/index.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/payment/index.js +7 -0
- package/dist/backend/backend/src/controllers/payment/index.js.map +1 -0
- package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts +57 -0
- package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/payment/payment.controller.js +136 -0
- package/dist/backend/backend/src/controllers/payment/payment.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts +27 -0
- package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/payment/payment.routes.js +38 -0
- package/dist/backend/backend/src/controllers/payment/payment.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/payment/payment.types.d.ts +109 -0
- package/dist/backend/backend/src/controllers/payment/payment.types.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/payment/payment.types.js +54 -0
- package/dist/backend/backend/src/controllers/payment/payment.types.js.map +1 -0
- package/dist/backend/backend/src/controllers/request-types.d.ts +34 -5
- package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.controller.d.ts +14 -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 +48 -0
- package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.routes.js +3 -1
- package/dist/backend/backend/src/controllers/session/session.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/scheduler.controller.js +4 -3
- package/dist/backend/backend/src/controllers/system/scheduler.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.controller.js +13 -15
- package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/assignments.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/assignments.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +40 -4
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/tasks.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 +259 -13
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/template/index.d.ts +8 -0
- package/dist/backend/backend/src/controllers/template/index.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/template/index.js +8 -0
- package/dist/backend/backend/src/controllers/template/index.js.map +1 -0
- package/dist/backend/backend/src/controllers/template/template.controller.d.ts +63 -0
- package/dist/backend/backend/src/controllers/template/template.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/template/template.controller.js +112 -0
- package/dist/backend/backend/src/controllers/template/template.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/template/template.routes.d.ts +24 -0
- package/dist/backend/backend/src/controllers/template/template.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/template/template.routes.js +33 -0
- package/dist/backend/backend/src/controllers/template/template.routes.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +105 -13
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.js +3 -3
- package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.js.map +1 -1
- package/dist/backend/backend/src/models/Team.d.ts +5 -0
- package/dist/backend/backend/src/models/Team.d.ts.map +1 -1
- package/dist/backend/backend/src/models/Team.js +24 -0
- package/dist/backend/backend/src/models/Team.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 +21 -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 +1 -6
- 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 +211 -287
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +7 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js +11 -2
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +1 -0
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +30 -43
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +216 -0
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +496 -0
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/openhands-runtime.service.d.ts +70 -0
- package/dist/backend/backend/src/services/agent/openhands-runtime.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/openhands-runtime.service.js +131 -0
- package/dist/backend/backend/src/services/agent/openhands-runtime.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts +21 -1
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js +32 -1
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +77 -3
- 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 +281 -30
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-service.factory.js +9 -0
- package/dist/backend/backend/src/services/agent/runtime-service.factory.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +49 -2
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js +124 -2
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.d.ts +10 -2
- package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.js +49 -8
- package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/auth/auth.service.d.ts +174 -0
- package/dist/backend/backend/src/services/cloud/auth/auth.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/auth/auth.service.js +402 -0
- package/dist/backend/backend/src/services/cloud/auth/auth.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/auth/auth.types.d.ts +110 -0
- package/dist/backend/backend/src/services/cloud/auth/auth.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/auth/auth.types.js +54 -0
- package/dist/backend/backend/src/services/cloud/auth/auth.types.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/auth/auth.utils.d.ts +36 -0
- package/dist/backend/backend/src/services/cloud/auth/auth.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/auth/auth.utils.js +31 -0
- package/dist/backend/backend/src/services/cloud/auth/auth.utils.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.d.ts +47 -0
- package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.js +116 -0
- package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.d.ts +61 -0
- package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.js +203 -0
- package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts +46 -0
- package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js +95 -0
- package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-auth.service.d.ts +136 -0
- package/dist/backend/backend/src/services/cloud/cloud-auth.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-auth.service.js +204 -0
- package/dist/backend/backend/src/services/cloud/cloud-auth.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +179 -0
- package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-client.service.js +237 -0
- package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-file.service.d.ts +97 -0
- package/dist/backend/backend/src/services/cloud/cloud-file.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-file.service.js +184 -0
- package/dist/backend/backend/src/services/cloud/cloud-file.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.d.ts +114 -0
- package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.js +196 -0
- package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts +118 -0
- package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js +322 -0
- package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-task.service.d.ts +115 -0
- package/dist/backend/backend/src/services/cloud/cloud-task.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-task.service.js +265 -0
- package/dist/backend/backend/src/services/cloud/cloud-task.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/relay-client.service.d.ts +175 -0
- package/dist/backend/backend/src/services/cloud/relay-client.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/relay-client.service.js +392 -0
- package/dist/backend/backend/src/services/cloud/relay-client.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/relay-crypto.service.d.ts +87 -0
- package/dist/backend/backend/src/services/cloud/relay-crypto.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/relay-crypto.service.js +140 -0
- package/dist/backend/backend/src/services/cloud/relay-crypto.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts +183 -0
- package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/relay-server.service.js +523 -0
- package/dist/backend/backend/src/services/cloud/relay-server.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/relay.types.d.ts +170 -0
- package/dist/backend/backend/src/services/cloud/relay.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/relay.types.js +69 -0
- package/dist/backend/backend/src/services/cloud/relay.types.js.map +1 -0
- package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.d.ts +9 -1
- package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.d.ts.map +1 -1
- package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.js +18 -4
- package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.js.map +1 -1
- package/dist/backend/backend/src/services/core/env.config.d.ts +147 -0
- package/dist/backend/backend/src/services/core/env.config.d.ts.map +1 -0
- package/dist/backend/backend/src/services/core/env.config.js +226 -0
- package/dist/backend/backend/src/services/core/env.config.js.map +1 -0
- package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +5 -0
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +20 -0
- package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js +35 -0
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
- package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.d.ts +160 -0
- package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.js +261 -0
- package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.js.map +1 -0
- package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.d.ts +161 -0
- package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.js +276 -0
- package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.js.map +1 -0
- package/dist/backend/backend/src/services/marketplace/index.d.ts +1 -0
- package/dist/backend/backend/src/services/marketplace/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/index.js +2 -0
- package/dist/backend/backend/src/services/marketplace/index.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace.service.js +2 -2
- package/dist/backend/backend/src/services/marketplace/template-marketplace.service.d.ts +149 -0
- package/dist/backend/backend/src/services/marketplace/template-marketplace.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/marketplace/template-marketplace.service.js +500 -0
- package/dist/backend/backend/src/services/marketplace/template-marketplace.service.js.map +1 -0
- package/dist/backend/backend/src/services/mcp-server.js +1 -1
- package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts +90 -0
- package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts.map +1 -0
- package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js +233 -0
- package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js.map +1 -0
- package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts +1 -1
- package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +3 -3
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +29 -5
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/payment/magic-moment.service.d.ts +69 -0
- package/dist/backend/backend/src/services/payment/magic-moment.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/payment/magic-moment.service.js +158 -0
- package/dist/backend/backend/src/services/payment/magic-moment.service.js.map +1 -0
- package/dist/backend/backend/src/services/payment/magic-moment.types.d.ts +95 -0
- package/dist/backend/backend/src/services/payment/magic-moment.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/payment/magic-moment.types.js +91 -0
- package/dist/backend/backend/src/services/payment/magic-moment.types.js.map +1 -0
- package/dist/backend/backend/src/services/payment/stripe.service.d.ts +122 -0
- package/dist/backend/backend/src/services/payment/stripe.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/payment/stripe.service.js +403 -0
- package/dist/backend/backend/src/services/payment/stripe.service.js.map +1 -0
- package/dist/backend/backend/src/services/plugin/index.d.ts +9 -0
- package/dist/backend/backend/src/services/plugin/index.d.ts.map +1 -0
- package/dist/backend/backend/src/services/plugin/index.js +8 -0
- package/dist/backend/backend/src/services/plugin/index.js.map +1 -0
- package/dist/backend/backend/src/services/plugin/plugin.service.d.ts +102 -0
- package/dist/backend/backend/src/services/plugin/plugin.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/plugin/plugin.service.js +179 -0
- package/dist/backend/backend/src/services/plugin/plugin.service.js.map +1 -0
- package/dist/backend/backend/src/services/plugin/plugin.types.d.ts +88 -0
- package/dist/backend/backend/src/services/plugin/plugin.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/plugin/plugin.types.js +17 -0
- package/dist/backend/backend/src/services/plugin/plugin.types.js.map +1 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +17 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.js +63 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts +14 -0
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.js +54 -0
- package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/backend/backend/src/services/settings/settings.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/settings/settings.service.js +1 -0
- package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
- 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 +15 -5
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.d.ts +153 -0
- package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/template/template.service.js +372 -0
- package/dist/backend/backend/src/services/template/template.service.js.map +1 -0
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +51 -0
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.js +118 -2
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/types/chat.types.d.ts +39 -1
- package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/chat.types.js +45 -2
- package/dist/backend/backend/src/types/chat.types.js.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts +14 -2
- package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js +15 -0
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/hierarchy-message.types.d.ts +101 -0
- package/dist/backend/backend/src/types/hierarchy-message.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/hierarchy-message.types.js +15 -0
- package/dist/backend/backend/src/types/hierarchy-message.types.js.map +1 -0
- package/dist/backend/backend/src/types/index.d.ts +54 -4
- 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/marketplace.types.d.ts +99 -0
- package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/settings.types.d.ts +1 -1
- package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/settings.types.js +4 -0
- package/dist/backend/backend/src/types/settings.types.js.map +1 -1
- package/dist/backend/backend/src/types/task-tracking.types.d.ts +79 -1
- package/dist/backend/backend/src/types/task-tracking.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/task-tracking.types.js.map +1 -1
- package/dist/backend/backend/src/types/team-template.types.d.ts +166 -0
- package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/team-template.types.js +139 -0
- package/dist/backend/backend/src/types/team-template.types.js.map +1 -0
- package/dist/backend/backend/src/utils/async-handler.d.ts +20 -0
- package/dist/backend/backend/src/utils/async-handler.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/async-handler.js +29 -0
- package/dist/backend/backend/src/utils/async-handler.js.map +1 -0
- package/dist/backend/backend/src/utils/defaultPrompts.d.ts +4 -4
- package/dist/backend/backend/src/utils/defaultPrompts.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/defaultPrompts.js +16 -0
- package/dist/backend/backend/src/utils/defaultPrompts.js.map +1 -1
- package/dist/backend/backend/src/utils/gemini-trusted-folders.d.ts +43 -0
- package/dist/backend/backend/src/utils/gemini-trusted-folders.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/gemini-trusted-folders.js +94 -0
- package/dist/backend/backend/src/utils/gemini-trusted-folders.js.map +1 -0
- package/dist/backend/backend/src/utils/message-serializer.d.ts +74 -0
- package/dist/backend/backend/src/utils/message-serializer.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/message-serializer.js +380 -0
- package/dist/backend/backend/src/utils/message-serializer.js.map +1 -0
- package/dist/backend/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/terminal-string-ops.js +20 -11
- package/dist/backend/backend/src/utils/terminal-string-ops.js.map +1 -1
- package/dist/backend/config/constants.d.ts +40 -1
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +41 -1
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/backend/config/index.d.ts +2 -2
- package/dist/backend/config/index.d.ts.map +1 -1
- package/dist/backend/config/index.js +2 -2
- package/dist/backend/config/index.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +303 -15
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +296 -15
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/models/Team.d.ts +5 -0
- package/dist/cli/backend/src/models/Team.d.ts.map +1 -1
- package/dist/cli/backend/src/models/Team.js +24 -0
- package/dist/cli/backend/src/models/Team.js.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js +5 -0
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/services/mcp-server.js +1 -1
- package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
- package/dist/cli/backend/src/types/chat.types.d.ts +39 -1
- package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/chat.types.js +45 -2
- package/dist/cli/backend/src/types/chat.types.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +54 -4
- 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/settings.types.d.ts +1 -1
- package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/settings.types.js +4 -0
- package/dist/cli/backend/src/types/settings.types.js.map +1 -1
- package/dist/cli/backend/src/utils/gemini-trusted-folders.d.ts +43 -0
- package/dist/cli/backend/src/utils/gemini-trusted-folders.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/gemini-trusted-folders.js +94 -0
- package/dist/cli/backend/src/utils/gemini-trusted-folders.js.map +1 -0
- package/dist/cli/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
- package/dist/cli/backend/src/utils/terminal-string-ops.js +20 -11
- package/dist/cli/backend/src/utils/terminal-string-ops.js.map +1 -1
- package/dist/cli/cli/src/commands/onboard.d.ts +2 -1
- package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/onboard.js +21 -8
- package/dist/cli/cli/src/commands/onboard.js.map +1 -1
- package/dist/cli/cli/src/commands/start.d.ts +1 -0
- package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/start.js +71 -23
- package/dist/cli/cli/src/commands/start.js.map +1 -1
- package/dist/cli/cli/src/constants.d.ts +1 -1
- package/dist/cli/cli/src/constants.d.ts.map +1 -1
- package/dist/cli/cli/src/constants.js +1 -1
- package/dist/cli/cli/src/constants.js.map +1 -1
- package/dist/cli/cli/src/index.js +1 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/project-scaffold.d.ts +109 -0
- package/dist/cli/cli/src/utils/project-scaffold.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/project-scaffold.js +346 -0
- package/dist/cli/cli/src/utils/project-scaffold.js.map +1 -0
- package/dist/cli/cli/src/utils/templates.d.ts +7 -2
- package/dist/cli/cli/src/utils/templates.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/templates.js +76 -7
- package/dist/cli/cli/src/utils/templates.js.map +1 -1
- package/dist/cli/config/constants.d.ts +40 -1
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +41 -1
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/index.d.ts +2 -2
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/config/index.js +2 -2
- package/dist/cli/config/index.js.map +1 -1
- package/frontend/dist/assets/index-510ab719.css +33 -0
- package/frontend/dist/assets/index-935cd846.js +4961 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +9 -4
- package/frontend/dist/assets/index-a23214ae.js +0 -4919
- package/frontend/dist/assets/index-c407fe13.css +0 -33
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Broadcast a message to all Team Leaders within an organization (parent team's child teams).
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
source "${SCRIPT_DIR}/../_common/lib.sh"
|
|
6
|
+
|
|
7
|
+
INPUT="${1:-}"
|
|
8
|
+
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"parentTeamId\":\"org-team-id\",\"message\":\"Please submit status reports\"}'"
|
|
9
|
+
|
|
10
|
+
PARENT_TEAM_ID=$(echo "$INPUT" | jq -r '.parentTeamId // empty')
|
|
11
|
+
MESSAGE=$(echo "$INPUT" | jq -r '.message // empty')
|
|
12
|
+
require_param "parentTeamId" "$PARENT_TEAM_ID"
|
|
13
|
+
require_param "message" "$MESSAGE"
|
|
14
|
+
|
|
15
|
+
# Fetch all teams
|
|
16
|
+
ALL_TEAMS=$(api_call GET "/teams" 2>/dev/null) || error_exit "Failed to fetch teams"
|
|
17
|
+
|
|
18
|
+
# Verify parent team exists
|
|
19
|
+
PARENT_EXISTS=$(echo "$ALL_TEAMS" | jq -r --arg pid "$PARENT_TEAM_ID" \
|
|
20
|
+
'[.data // . | if type == "array" then .[] else empty end | select(.id == $pid)] | length' 2>/dev/null || echo "0")
|
|
21
|
+
|
|
22
|
+
if [ "$PARENT_EXISTS" = "0" ]; then
|
|
23
|
+
error_exit "Parent team '${PARENT_TEAM_ID}' not found"
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# Find child teams whose parentTeamId matches
|
|
27
|
+
CHILD_TEAMS=$(echo "$ALL_TEAMS" | jq -c --arg pid "$PARENT_TEAM_ID" \
|
|
28
|
+
'[.data // . | if type == "array" then .[] else empty end | select(.parentTeamId == $pid)]' 2>/dev/null || echo "[]")
|
|
29
|
+
|
|
30
|
+
CHILD_COUNT=$(echo "$CHILD_TEAMS" | jq 'length')
|
|
31
|
+
|
|
32
|
+
if [ "$CHILD_COUNT" = "0" ]; then
|
|
33
|
+
echo "{\"sent\":0,\"failed\":0,\"skipped\":0,\"message\":\"No child teams found under parent ${PARENT_TEAM_ID}\"}"
|
|
34
|
+
exit 0
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
SENT=0
|
|
38
|
+
FAILED=0
|
|
39
|
+
SKIPPED=0
|
|
40
|
+
DETAILS="[]"
|
|
41
|
+
|
|
42
|
+
# Iterate through child teams and find their leaders
|
|
43
|
+
for i in $(seq 0 $((CHILD_COUNT - 1))); do
|
|
44
|
+
TEAM=$(echo "$CHILD_TEAMS" | jq -c ".[$i]")
|
|
45
|
+
TEAM_NAME=$(echo "$TEAM" | jq -r '.name // "unknown"')
|
|
46
|
+
|
|
47
|
+
# Find leader sessions: use leaderIds first, fallback to hierarchyLevel==1
|
|
48
|
+
LEADER_SESSIONS=$(echo "$TEAM" | jq -r '
|
|
49
|
+
if (.leaderIds // []) | length > 0 then
|
|
50
|
+
.members[] | select(.id as $id | any(.leaderIds[]; . == $id)) | .sessionName // empty
|
|
51
|
+
else
|
|
52
|
+
.members[] | select(.hierarchyLevel == 1) | .sessionName // empty
|
|
53
|
+
end
|
|
54
|
+
' 2>/dev/null || true)
|
|
55
|
+
|
|
56
|
+
# Fallback: look for team-leader role
|
|
57
|
+
if [ -z "$LEADER_SESSIONS" ]; then
|
|
58
|
+
LEADER_SESSIONS=$(echo "$TEAM" | jq -r '.members[] | select(.role == "team-leader") | .sessionName // empty' 2>/dev/null || true)
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
if [ -z "$LEADER_SESSIONS" ]; then
|
|
62
|
+
SKIPPED=$((SKIPPED + 1))
|
|
63
|
+
DETAILS=$(echo "$DETAILS" | jq --arg team "$TEAM_NAME" '. + [{"team": $team, "status": "skipped", "reason": "no leader found"}]')
|
|
64
|
+
continue
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
for SESSION in $LEADER_SESSIONS; do
|
|
68
|
+
[ -z "$SESSION" ] && continue
|
|
69
|
+
BODY=$(jq -n --arg message "$MESSAGE" '{message: $message}')
|
|
70
|
+
if api_call POST "/terminal/${SESSION}/deliver" "$BODY" >/dev/null 2>&1; then
|
|
71
|
+
SENT=$((SENT + 1))
|
|
72
|
+
DETAILS=$(echo "$DETAILS" | jq --arg team "$TEAM_NAME" --arg session "$SESSION" \
|
|
73
|
+
'. + [{"team": $team, "session": $session, "status": "sent"}]')
|
|
74
|
+
else
|
|
75
|
+
FAILED=$((FAILED + 1))
|
|
76
|
+
DETAILS=$(echo "$DETAILS" | jq --arg team "$TEAM_NAME" --arg session "$SESSION" \
|
|
77
|
+
'. + [{"team": $team, "session": $session, "status": "failed"}]')
|
|
78
|
+
fi
|
|
79
|
+
done
|
|
80
|
+
done
|
|
81
|
+
|
|
82
|
+
jq -n \
|
|
83
|
+
--argjson sent "$SENT" \
|
|
84
|
+
--argjson failed "$FAILED" \
|
|
85
|
+
--argjson skipped "$SKIPPED" \
|
|
86
|
+
--argjson childTeams "$CHILD_COUNT" \
|
|
87
|
+
--argjson details "$DETAILS" \
|
|
88
|
+
'{sent: $sent, failed: $failed, skipped: $skipped, childTeams: $childTeams, details: $details, message: "Broadcast to organization complete"}'
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Broadcast to Organization
|
|
2
|
+
|
|
3
|
+
Send a message to all Team Leaders within a specific organization. Given a parent team ID, this skill finds all child teams, identifies their leaders, and delivers the message to each leader's session.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
bash config/skills/orchestrator/broadcast-to-org/execute.sh '{"parentTeamId":"org-team-id","message":"Please submit your weekly status reports by EOD"}'
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Parameters
|
|
12
|
+
|
|
13
|
+
| Parameter | Required | Description |
|
|
14
|
+
|-----------|----------|-------------|
|
|
15
|
+
| `parentTeamId` | Yes | The ID of the parent/organization team |
|
|
16
|
+
| `message` | Yes | The message to send to all TLs in the organization |
|
|
17
|
+
|
|
18
|
+
## How It Works
|
|
19
|
+
|
|
20
|
+
1. Fetches all teams from the API
|
|
21
|
+
2. Filters child teams whose `parentTeamId` matches the given ID
|
|
22
|
+
3. For each child team, finds leaders using (in priority order):
|
|
23
|
+
- `leaderIds` array on the team
|
|
24
|
+
- Members with `hierarchyLevel == 1`
|
|
25
|
+
- Members with `role == "team-leader"` (fallback)
|
|
26
|
+
4. Delivers the message to each leader's session via `/terminal/{session}/deliver`
|
|
27
|
+
|
|
28
|
+
## Output
|
|
29
|
+
|
|
30
|
+
JSON with delivery summary:
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"sent": 3,
|
|
35
|
+
"failed": 0,
|
|
36
|
+
"skipped": 1,
|
|
37
|
+
"childTeams": 4,
|
|
38
|
+
"details": [
|
|
39
|
+
{"team": "Frontend", "session": "crewly-frontend-tl", "status": "sent"},
|
|
40
|
+
{"team": "Backend", "session": "crewly-backend-tl", "status": "sent"},
|
|
41
|
+
{"team": "QA", "status": "skipped", "reason": "no leader found"}
|
|
42
|
+
],
|
|
43
|
+
"message": "Broadcast to organization complete"
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Best Practices
|
|
48
|
+
|
|
49
|
+
- Use this for organization-wide announcements like deadlines, priority changes, or standup reminders
|
|
50
|
+
- For individual team communication, use `send-message` or `delegate-task` instead
|
|
51
|
+
- Check the `skipped` count — teams without leaders won't receive the message
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "orc-broadcast-to-org",
|
|
3
|
+
"name": "Broadcast to Organization",
|
|
4
|
+
"description": "Send a message to all Team Leaders within a specific organization (parent team and its child teams).",
|
|
5
|
+
"category": "communication",
|
|
6
|
+
"skillType": "claude-skill",
|
|
7
|
+
"promptFile": "instructions.md",
|
|
8
|
+
"execution": {
|
|
9
|
+
"type": "script",
|
|
10
|
+
"script": {
|
|
11
|
+
"file": "execute.sh",
|
|
12
|
+
"interpreter": "bash",
|
|
13
|
+
"timeoutMs": 60000
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"assignableRoles": ["orchestrator"],
|
|
17
|
+
"triggers": ["broadcast to org", "message org leaders", "notify organization"],
|
|
18
|
+
"tags": ["communication", "broadcast", "organization", "hierarchy"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -17,6 +17,14 @@ PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
|
|
|
17
17
|
require_param "to" "$TO"
|
|
18
18
|
require_param "task" "$TASK"
|
|
19
19
|
|
|
20
|
+
# Structured message parameters (for hierarchical teams)
|
|
21
|
+
TITLE=$(echo "$INPUT" | jq -r '.title // empty')
|
|
22
|
+
PARENT_TASK_ID=$(echo "$INPUT" | jq -r '.parentTaskId // empty')
|
|
23
|
+
EXPECTED_ARTIFACTS=$(echo "$INPUT" | jq -c '.expectedArtifacts // empty')
|
|
24
|
+
CONTEXT_FILES=$(echo "$INPUT" | jq -c '.contextFiles // empty')
|
|
25
|
+
DEADLINE_HINT=$(echo "$INPUT" | jq -r '.deadlineHint // empty')
|
|
26
|
+
USE_STRUCTURED=$(echo "$INPUT" | jq -r '.structured // "false"')
|
|
27
|
+
|
|
20
28
|
# Monitor parameters — enabled by default to ensure proactive progress notifications.
|
|
21
29
|
# Use explicit null-check so that `false` / `0` are respected as opt-out values,
|
|
22
30
|
# while omitted fields default to enabled (idleEvent=true, fallbackCheckMinutes=5).
|
|
@@ -43,18 +51,65 @@ if [ -n "$CONTEXT" ]; then
|
|
|
43
51
|
CONTEXT="$(CREWLY_ROOT="$CREWLY_ROOT" resolve_skill_paths "$CONTEXT")"
|
|
44
52
|
fi
|
|
45
53
|
|
|
46
|
-
# Build
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
54
|
+
# Build the task message
|
|
55
|
+
# If structured=true and title is provided, use the [TASK ASSIGNMENT] format
|
|
56
|
+
# Otherwise, use the legacy free-text format for backwards compatibility
|
|
57
|
+
DELEGATOR="${CREWLY_SESSION_NAME:-crewly-orc}"
|
|
58
|
+
|
|
59
|
+
if [ "$USE_STRUCTURED" = "true" ] && [ -n "$TITLE" ]; then
|
|
60
|
+
# Structured TaskAssignment format for hierarchical teams
|
|
61
|
+
TASK_MESSAGE="---\n[TASK ASSIGNMENT]\nTask ID: ${TASK_ID:-pending}\nTitle: ${TITLE}\nPriority: ${PRIORITY}\nDelegated by: ${DELEGATOR}\nParent Task: ${PARENT_TASK_ID:-none}\n---\n\n## Instructions\n${TASK}"
|
|
62
|
+
|
|
63
|
+
# Add expected artifacts if provided
|
|
64
|
+
if [ -n "$EXPECTED_ARTIFACTS" ] && [ "$EXPECTED_ARTIFACTS" != "" ]; then
|
|
65
|
+
ARTIFACT_LIST=$(echo "$EXPECTED_ARTIFACTS" | jq -r '.[]? // empty' 2>/dev/null | while read -r a; do echo "- ${a}"; done)
|
|
66
|
+
if [ -n "$ARTIFACT_LIST" ]; then
|
|
67
|
+
TASK_MESSAGE="${TASK_MESSAGE}\n\n## Expected Deliverables\n${ARTIFACT_LIST}"
|
|
68
|
+
fi
|
|
69
|
+
fi
|
|
50
70
|
|
|
51
|
-
#
|
|
52
|
-
|
|
71
|
+
# Add context files if provided
|
|
72
|
+
if [ -n "$CONTEXT_FILES" ] && [ "$CONTEXT_FILES" != "" ]; then
|
|
73
|
+
FILE_LIST=$(echo "$CONTEXT_FILES" | jq -r '.[]? // empty' 2>/dev/null | while read -r f; do echo "- ${f}"; done)
|
|
74
|
+
if [ -n "$FILE_LIST" ]; then
|
|
75
|
+
TASK_MESSAGE="${TASK_MESSAGE}\n\n## Context\nRead these files first:\n${FILE_LIST}"
|
|
76
|
+
fi
|
|
77
|
+
fi
|
|
53
78
|
|
|
54
|
-
|
|
79
|
+
[ -n "$CONTEXT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\nAdditional context: ${CONTEXT}"
|
|
80
|
+
[ -n "$DEADLINE_HINT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\n**Deadline hint**: ${DEADLINE_HINT}"
|
|
81
|
+
TASK_MESSAGE="${TASK_MESSAGE}\n\n---\nWhen done, report back using: bash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"status\":\"done\",\"summary\":\"<brief summary>\",\"projectPath\":\"${PROJECT_PATH}\"}'"
|
|
82
|
+
TASK_MESSAGE="${TASK_MESSAGE}\n\nBefore reporting done, persist key findings using: bash ${CREWLY_ROOT}/config/skills/agent/core/remember/execute.sh '{\"agentId\":\"${TO}\",\"content\":\"<key findings>\",\"category\":\"pattern\",\"scope\":\"project\"}'"
|
|
83
|
+
else
|
|
84
|
+
# Legacy free-text format (backwards compatible)
|
|
85
|
+
TASK_MESSAGE="New task from orchestrator (priority: ${PRIORITY}):\n\n${TASK}"
|
|
86
|
+
[ -n "$CONTEXT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\nContext: ${CONTEXT}"
|
|
87
|
+
TASK_MESSAGE="${TASK_MESSAGE}\n\nWhen done, report back using: bash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"status\":\"done\",\"summary\":\"<brief summary>\",\"projectPath\":\"${PROJECT_PATH}\"}'"
|
|
88
|
+
TASK_MESSAGE="${TASK_MESSAGE}\n\nBefore reporting done, persist key findings using: bash ${CREWLY_ROOT}/config/skills/agent/core/remember/execute.sh '{\"agentId\":\"${TO}\",\"content\":\"<key findings>\",\"category\":\"pattern\",\"scope\":\"project\"}'"
|
|
89
|
+
fi
|
|
55
90
|
|
|
56
|
-
#
|
|
91
|
+
# Deliver the task message with fallback strategy:
|
|
92
|
+
# 1. Try reliable delivery with waitForReady (15s timeout)
|
|
93
|
+
# 2. If agent not ready, fall back to force mode (direct PTY write)
|
|
94
|
+
# 3. If both fail, output error to stdout (so orchestrator can see it) and exit 1
|
|
95
|
+
BODY=$(jq -n --arg message "$TASK_MESSAGE" '{message: $message, waitForReady: true, waitTimeout: 15000}')
|
|
96
|
+
|
|
97
|
+
DELIVER_OK=true
|
|
98
|
+
api_call POST "/terminal/${TO}/deliver" "$BODY" || DELIVER_OK=false
|
|
99
|
+
|
|
100
|
+
if [ "$DELIVER_OK" = "false" ]; then
|
|
101
|
+
# Agent not ready or session not found — retry with force mode (direct PTY write)
|
|
102
|
+
FORCE_BODY=$(jq -n --arg message "$TASK_MESSAGE" '{message: $message, force: true}')
|
|
103
|
+
api_call POST "/terminal/${TO}/deliver" "$FORCE_BODY" || {
|
|
104
|
+
# Both delivery attempts failed — output error to stdout for orchestrator visibility
|
|
105
|
+
echo '{"error":"Failed to deliver task to '"$TO"'. Session may not exist or agent is not running."}'
|
|
106
|
+
exit 1
|
|
107
|
+
}
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
# Track the task file path and task ID from create response for monitoring linkage
|
|
57
111
|
TASK_FILE_PATH=""
|
|
112
|
+
TASK_ID=""
|
|
58
113
|
|
|
59
114
|
# Create task file in project's .crewly/tasks/ directory
|
|
60
115
|
if [ -n "$PROJECT_PATH" ]; then
|
|
@@ -67,6 +122,15 @@ if [ -n "$PROJECT_PATH" ]; then
|
|
|
67
122
|
'{projectPath: $projectPath, task: $task, priority: $priority, sessionName: $sessionName, milestone: $milestone}')
|
|
68
123
|
CREATE_RESULT=$(api_call POST "/task-management/create" "$CREATE_BODY" 2>/dev/null || true)
|
|
69
124
|
TASK_FILE_PATH=$(echo "$CREATE_RESULT" | jq -r '.taskPath // empty' 2>/dev/null || true)
|
|
125
|
+
TASK_ID=$(echo "$CREATE_RESULT" | jq -r '.taskId // empty' 2>/dev/null || true)
|
|
126
|
+
|
|
127
|
+
# Deliver a follow-up message with complete-task instructions now that taskPath is known (#137).
|
|
128
|
+
# This ensures agents call complete-task with the exact path, not just report-status.
|
|
129
|
+
if [ -n "$TASK_FILE_PATH" ]; then
|
|
130
|
+
COMPLETE_INSTR="After finishing and calling report-status, also run: bash ${CREWLY_ROOT}/config/skills/agent/core/complete-task/execute.sh '{\"absoluteTaskPath\":\"${TASK_FILE_PATH}\",\"sessionName\":\"${TO}\",\"summary\":\"<brief summary>\"}'"
|
|
131
|
+
FOLLOWUP_BODY=$(jq -n --arg message "$COMPLETE_INSTR" '{message: $message, force: true}')
|
|
132
|
+
api_call POST "/terminal/${TO}/deliver" "$FOLLOWUP_BODY" 2>/dev/null || true
|
|
133
|
+
fi
|
|
70
134
|
fi
|
|
71
135
|
|
|
72
136
|
# --- Auto-monitoring setup ---
|
|
@@ -96,8 +160,9 @@ if [ "$MONITOR_FALLBACK_MINUTES" != "0" ] && [ -n "$MONITOR_FALLBACK_MINUTES" ];
|
|
|
96
160
|
--arg target "$SCHEDULE_TARGET" \
|
|
97
161
|
--arg minutes "$MONITOR_FALLBACK_MINUTES" \
|
|
98
162
|
--arg message "Progress check: review ${TO} status — task: ${TASK:0:100}" \
|
|
99
|
-
|
|
100
|
-
|
|
163
|
+
--arg taskId "$TASK_ID" \
|
|
164
|
+
'{targetSession: $target, minutes: ($minutes | tonumber), intervalMinutes: ($minutes | tonumber), message: $message, isRecurring: true} + (if $taskId != "" then {taskId: $taskId} else {} end)' 2>/dev/null) || true
|
|
165
|
+
[ -n "$SCHED_BODY" ] && SCHED_RESULT=$(api_call POST "/schedule" "$SCHED_BODY" 2>/dev/null || true)
|
|
101
166
|
SCHED_ID=$(echo "$SCHED_RESULT" | jq -r '.checkId // .data.checkId // empty' 2>/dev/null || true)
|
|
102
167
|
if [ -n "$SCHED_ID" ]; then
|
|
103
168
|
COLLECTED_SCHEDULE_IDS=$(echo "$COLLECTED_SCHEDULE_IDS" | jq --arg id "$SCHED_ID" '. + [$id]')
|
|
@@ -70,15 +70,25 @@ When the agent completes the task (via `report-status` with `status: done` or `c
|
|
|
70
70
|
|
|
71
71
|
No manual cleanup needed.
|
|
72
72
|
|
|
73
|
+
## Delivery Strategy
|
|
74
|
+
|
|
75
|
+
The script uses a two-stage delivery strategy:
|
|
76
|
+
|
|
77
|
+
1. **Reliable delivery** (15s timeout) — Waits for the agent to be at a prompt, then delivers with verification. This is the preferred path.
|
|
78
|
+
2. **Force fallback** — If the agent is busy or not ready within 15 seconds, the message is written directly to the PTY session without waiting. The task is still delivered, but may appear mid-output.
|
|
79
|
+
|
|
80
|
+
This ensures tasks are always delivered even when agents are busy processing previous work.
|
|
81
|
+
|
|
73
82
|
## Error Handling
|
|
74
83
|
|
|
75
84
|
| Error | Cause | Solution |
|
|
76
85
|
|-------|-------|----------|
|
|
77
86
|
| `Missing required parameter: to` | `to` not provided | Include target session name |
|
|
78
87
|
| `Missing required parameter: task` | `task` not provided | Include task description |
|
|
88
|
+
| `Failed to deliver task to X` | Session doesn't exist or agent crashed | Check agent status, restart if needed |
|
|
79
89
|
| `curl failed with exit code N` | Backend not running | Start the Crewly backend |
|
|
80
90
|
|
|
81
|
-
Monitoring setup failures are non-fatal — if subscribe-event or schedule-check fails, the task is still delegated successfully.
|
|
91
|
+
Error messages are output to **stdout** (JSON format) so the orchestrator can read them. Monitoring setup failures are non-fatal — if subscribe-event or schedule-check fails, the task is still delegated successfully.
|
|
82
92
|
|
|
83
93
|
## Related Skills
|
|
84
94
|
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Notify the orchestrator about an agent failure so it can take recovery actions (#129)
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
source "${SCRIPT_DIR}/../_common/lib.sh"
|
|
6
|
+
|
|
7
|
+
INPUT="${1:-}"
|
|
8
|
+
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"agentSession\":\"agent-dev-1\",\"reason\":\"runtime_exited\",\"hadActiveTasks\":true}'"
|
|
9
|
+
|
|
10
|
+
AGENT_SESSION=$(echo "$INPUT" | jq -r '.agentSession // empty')
|
|
11
|
+
REASON=$(echo "$INPUT" | jq -r '.reason // "unknown"')
|
|
12
|
+
HAD_ACTIVE_TASKS=$(echo "$INPUT" | jq -r '.hadActiveTasks // false')
|
|
13
|
+
TASK_SUMMARY=$(echo "$INPUT" | jq -r '.taskSummary // empty')
|
|
14
|
+
RESTART_ATTEMPTED=$(echo "$INPUT" | jq -r '.restartAttempted // false')
|
|
15
|
+
RESTART_SUCCEEDED=$(echo "$INPUT" | jq -r '.restartSucceeded // false')
|
|
16
|
+
require_param "agentSession" "$AGENT_SESSION"
|
|
17
|
+
|
|
18
|
+
# Build a structured notification message for the orchestrator
|
|
19
|
+
MESSAGE="Agent failure notification: ${AGENT_SESSION} became inactive.\nReason: ${REASON}"
|
|
20
|
+
|
|
21
|
+
if [ "$HAD_ACTIVE_TASKS" = "true" ]; then
|
|
22
|
+
MESSAGE="${MESSAGE}\nThe agent had active tasks in progress."
|
|
23
|
+
[ -n "$TASK_SUMMARY" ] && MESSAGE="${MESSAGE}\nTask: ${TASK_SUMMARY}"
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
if [ "$RESTART_ATTEMPTED" = "true" ]; then
|
|
27
|
+
if [ "$RESTART_SUCCEEDED" = "true" ]; then
|
|
28
|
+
MESSAGE="${MESSAGE}\nAutomatic restart succeeded — agent is recovering."
|
|
29
|
+
else
|
|
30
|
+
MESSAGE="${MESSAGE}\nAutomatic restart FAILED — manual intervention needed."
|
|
31
|
+
MESSAGE="${MESSAGE}\n\nPlease take one of the following actions:"
|
|
32
|
+
MESSAGE="${MESSAGE}\n1. Restart the agent and re-delegate the task"
|
|
33
|
+
MESSAGE="${MESSAGE}\n2. Reassign the task to another available agent"
|
|
34
|
+
MESSAGE="${MESSAGE}\n3. Inform the user about the failure"
|
|
35
|
+
fi
|
|
36
|
+
else
|
|
37
|
+
MESSAGE="${MESSAGE}\nNo automatic restart was attempted."
|
|
38
|
+
MESSAGE="${MESSAGE}\n\nPlease decide whether to restart the agent or reassign its tasks."
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
# Send the notification to the orchestrator via the chat API
|
|
42
|
+
BODY=$(jq -n --arg content "$MESSAGE" --arg senderName "system" \
|
|
43
|
+
'{content: $content, senderName: $senderName, senderType: "system"}')
|
|
44
|
+
|
|
45
|
+
api_call POST "/chat/agent-response" "$BODY"
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Handle Agent Failure
|
|
2
|
+
|
|
3
|
+
Sends a failure notification to the orchestrator when an agent becomes inactive unexpectedly (runtime exit, API failure, crash). The orchestrator can then decide to restart the agent, reassign the task, or inform the user.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
bash config/skills/orchestrator/handle-agent-failure/execute.sh '{"agentSession":"agent-dev-1","reason":"runtime_exited","hadActiveTasks":true,"taskSummary":"Implementing login form","restartAttempted":true,"restartSucceeded":false}'
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Parameters
|
|
12
|
+
|
|
13
|
+
| Parameter | Required | Description |
|
|
14
|
+
|-----------|----------|-------------|
|
|
15
|
+
| `agentSession` | Yes | The failed agent's PTY session name |
|
|
16
|
+
| `reason` | Yes | Failure reason: `runtime_exited`, `api_failure`, `connectivity_stuck`, `update_interrupted` |
|
|
17
|
+
| `hadActiveTasks` | No | Whether the agent had in-progress tasks (default: false) |
|
|
18
|
+
| `taskSummary` | No | Brief description of what the agent was working on |
|
|
19
|
+
| `restartAttempted` | No | Whether an automatic restart was attempted |
|
|
20
|
+
| `restartSucceeded` | No | Whether the automatic restart succeeded |
|
|
21
|
+
|
|
22
|
+
## Behavior
|
|
23
|
+
|
|
24
|
+
The script sends a structured failure notification to the orchestrator via the chat API. The orchestrator receives the message and can:
|
|
25
|
+
|
|
26
|
+
1. **Restart the agent** if the failure was transient
|
|
27
|
+
2. **Reassign the task** to another available agent
|
|
28
|
+
3. **Notify the user** about the failure and ask for guidance
|
|
29
|
+
4. **Record the failure** for future prevention
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "orc-handle-agent-failure",
|
|
3
|
+
"name": "Handle Agent Failure",
|
|
4
|
+
"description": "Notify the orchestrator when an agent fails or becomes inactive unexpectedly, so recovery actions can be taken.",
|
|
5
|
+
"category": "monitoring",
|
|
6
|
+
"skillType": "claude-skill",
|
|
7
|
+
"promptFile": "instructions.md",
|
|
8
|
+
"execution": {
|
|
9
|
+
"type": "script",
|
|
10
|
+
"script": {
|
|
11
|
+
"file": "execute.sh",
|
|
12
|
+
"interpreter": "bash",
|
|
13
|
+
"timeoutMs": 15000
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"assignableRoles": ["orchestrator"],
|
|
17
|
+
"triggers": ["agent failed", "agent crashed", "agent inactive", "handle failure", "recovery"],
|
|
18
|
+
"tags": ["monitoring", "failure", "recovery", "agent-lifecycle"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -16,8 +16,15 @@ None required.
|
|
|
16
16
|
|
|
17
17
|
JSON confirming the restart was initiated and how many sessions were saved.
|
|
18
18
|
|
|
19
|
+
## How It Works
|
|
20
|
+
|
|
21
|
+
1. The backend saves all PTY session state to disk
|
|
22
|
+
2. The backend exits with a special restart exit code (120)
|
|
23
|
+
3. The CLI parent process detects this code and automatically respawns the backend
|
|
24
|
+
4. The new backend instance restores saved sessions and resumes normal operation
|
|
25
|
+
|
|
19
26
|
## Notes
|
|
20
27
|
|
|
21
|
-
- The
|
|
22
|
-
-
|
|
28
|
+
- The restart is fully automatic when launched via `crewly start` — no external process manager needed
|
|
29
|
+
- In development mode (`npm run dev`), the tsx file watcher handles restarts
|
|
23
30
|
- Agents will auto-resume their previous sessions on restart if the "Auto-Resume on Restart" setting is enabled
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Aggregate results from worker sub-tasks into a structured markdown report.
|
|
3
|
+
# Fetches task data from the task-management API and compiles a report.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
source "${SCRIPT_DIR}/../_common/lib.sh"
|
|
7
|
+
|
|
8
|
+
INPUT="${1:-}"
|
|
9
|
+
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"teamId\":\"team-123\",\"objective\":\"Build auth module\",\"reportType\":\"final\",\"taskPaths\":[\"/path/to/task1.md\",\"/path/to/task2.md\"],\"projectPath\":\"/path/to/project\"}'"
|
|
10
|
+
|
|
11
|
+
TEAM_ID=$(echo "$INPUT" | jq -r '.teamId // empty')
|
|
12
|
+
OBJECTIVE=$(echo "$INPUT" | jq -r '.objective // "Objective not specified"')
|
|
13
|
+
REPORT_TYPE=$(echo "$INPUT" | jq -r '.reportType // "final"')
|
|
14
|
+
TASK_PATHS=$(echo "$INPUT" | jq -c '.taskPaths // []')
|
|
15
|
+
PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
|
|
16
|
+
INCLUDE_VERIFICATION=$(echo "$INPUT" | jq -r '.includeVerification // "true"')
|
|
17
|
+
|
|
18
|
+
# Collect task data
|
|
19
|
+
TASK_RESULTS="[]"
|
|
20
|
+
SUCCESS_COUNT=0
|
|
21
|
+
FAILURE_COUNT=0
|
|
22
|
+
BLOCKED_COUNT=0
|
|
23
|
+
PENDING_COUNT=0
|
|
24
|
+
|
|
25
|
+
TASK_COUNT=$(echo "$TASK_PATHS" | jq 'length')
|
|
26
|
+
|
|
27
|
+
# If task paths provided, read each task
|
|
28
|
+
if [ "$TASK_COUNT" -gt 0 ]; then
|
|
29
|
+
for i in $(seq 0 $((TASK_COUNT - 1))); do
|
|
30
|
+
TASK_PATH=$(echo "$TASK_PATHS" | jq -r ".[$i]")
|
|
31
|
+
READ_BODY=$(jq -n --arg taskPath "$TASK_PATH" '{taskPath: $taskPath}')
|
|
32
|
+
TASK_DATA=$(api_call POST "/task-management/read-task" "$READ_BODY" 2>/dev/null || echo '{}')
|
|
33
|
+
|
|
34
|
+
TASK_STATUS=$(echo "$TASK_DATA" | jq -r '.data.metadata.status // "unknown"' 2>/dev/null || echo "unknown")
|
|
35
|
+
TASK_TITLE=$(echo "$TASK_DATA" | jq -r '.data.metadata.title // .data.metadata.task // "Untitled"' 2>/dev/null || echo "Untitled")
|
|
36
|
+
TASK_ASSIGNEE=$(echo "$TASK_DATA" | jq -r '.data.metadata.assignedTo // "unassigned"' 2>/dev/null || echo "unassigned")
|
|
37
|
+
TASK_SUMMARY=$(echo "$TASK_DATA" | jq -r '.data.metadata.summary // ""' 2>/dev/null || true)
|
|
38
|
+
|
|
39
|
+
case "$TASK_STATUS" in
|
|
40
|
+
done|completed) SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) ;;
|
|
41
|
+
blocked) BLOCKED_COUNT=$((BLOCKED_COUNT + 1)) ;;
|
|
42
|
+
failed) FAILURE_COUNT=$((FAILURE_COUNT + 1)) ;;
|
|
43
|
+
*) PENDING_COUNT=$((PENDING_COUNT + 1)) ;;
|
|
44
|
+
esac
|
|
45
|
+
|
|
46
|
+
TASK_RESULTS=$(echo "$TASK_RESULTS" | jq \
|
|
47
|
+
--arg title "$TASK_TITLE" \
|
|
48
|
+
--arg status "$TASK_STATUS" \
|
|
49
|
+
--arg assignee "$TASK_ASSIGNEE" \
|
|
50
|
+
--arg summary "$TASK_SUMMARY" \
|
|
51
|
+
--arg path "$TASK_PATH" \
|
|
52
|
+
'. + [{title: $title, status: $status, assignee: $assignee, summary: $summary, path: $path}]')
|
|
53
|
+
done
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
# If no task paths but teamId provided, get team progress
|
|
57
|
+
if [ "$TASK_COUNT" = "0" ] && [ -n "$PROJECT_PATH" ]; then
|
|
58
|
+
PROGRESS_DATA=$(api_call GET "/task-management/team-progress?projectPath=${PROJECT_PATH}" 2>/dev/null || echo '{}')
|
|
59
|
+
# Extract counts from team progress if available
|
|
60
|
+
SUCCESS_COUNT=$(echo "$PROGRESS_DATA" | jq -r '.data.done // 0' 2>/dev/null || echo "0")
|
|
61
|
+
FAILURE_COUNT=$(echo "$PROGRESS_DATA" | jq -r '.data.failed // 0' 2>/dev/null || echo "0")
|
|
62
|
+
BLOCKED_COUNT=$(echo "$PROGRESS_DATA" | jq -r '.data.blocked // 0' 2>/dev/null || echo "0")
|
|
63
|
+
PENDING_COUNT=$(echo "$PROGRESS_DATA" | jq -r '.data.open // 0' 2>/dev/null || echo "0")
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
TOTAL=$((SUCCESS_COUNT + FAILURE_COUNT + BLOCKED_COUNT + PENDING_COUNT))
|
|
67
|
+
|
|
68
|
+
# Generate the report
|
|
69
|
+
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
70
|
+
REPORT_TITLE=""
|
|
71
|
+
case "$REPORT_TYPE" in
|
|
72
|
+
milestone) REPORT_TITLE="Milestone Report" ;;
|
|
73
|
+
daily) REPORT_TITLE="Daily Progress Report" ;;
|
|
74
|
+
final) REPORT_TITLE="Final Completion Report" ;;
|
|
75
|
+
*) REPORT_TITLE="Progress Report" ;;
|
|
76
|
+
esac
|
|
77
|
+
|
|
78
|
+
# Build markdown report
|
|
79
|
+
REPORT="[TL_REPORT]
|
|
80
|
+
|
|
81
|
+
# ${REPORT_TITLE}
|
|
82
|
+
|
|
83
|
+
**Objective**: ${OBJECTIVE}
|
|
84
|
+
**Report Type**: ${REPORT_TYPE}
|
|
85
|
+
**Generated**: ${TIMESTAMP}
|
|
86
|
+
**Team**: ${TEAM_ID:-N/A}
|
|
87
|
+
|
|
88
|
+
## Summary
|
|
89
|
+
|
|
90
|
+
| Metric | Count |
|
|
91
|
+
|--------|-------|
|
|
92
|
+
| Total Tasks | ${TOTAL} |
|
|
93
|
+
| Completed | ${SUCCESS_COUNT} |
|
|
94
|
+
| Failed | ${FAILURE_COUNT} |
|
|
95
|
+
| Blocked | ${BLOCKED_COUNT} |
|
|
96
|
+
| Pending | ${PENDING_COUNT} |
|
|
97
|
+
|
|
98
|
+
**Completion Rate**: $([ "$TOTAL" -gt 0 ] && echo "$((SUCCESS_COUNT * 100 / TOTAL))%" || echo "N/A")
|
|
99
|
+
"
|
|
100
|
+
|
|
101
|
+
# Add individual task details if available
|
|
102
|
+
RESULT_COUNT=$(echo "$TASK_RESULTS" | jq 'length')
|
|
103
|
+
if [ "$RESULT_COUNT" -gt 0 ]; then
|
|
104
|
+
REPORT="${REPORT}
|
|
105
|
+
## Task Details
|
|
106
|
+
"
|
|
107
|
+
for i in $(seq 0 $((RESULT_COUNT - 1))); do
|
|
108
|
+
T_TITLE=$(echo "$TASK_RESULTS" | jq -r ".[$i].title")
|
|
109
|
+
T_STATUS=$(echo "$TASK_RESULTS" | jq -r ".[$i].status")
|
|
110
|
+
T_ASSIGNEE=$(echo "$TASK_RESULTS" | jq -r ".[$i].assignee")
|
|
111
|
+
T_SUMMARY=$(echo "$TASK_RESULTS" | jq -r ".[$i].summary")
|
|
112
|
+
|
|
113
|
+
# Status emoji
|
|
114
|
+
case "$T_STATUS" in
|
|
115
|
+
done|completed) STATUS_MARK="DONE" ;;
|
|
116
|
+
blocked) STATUS_MARK="BLOCKED" ;;
|
|
117
|
+
failed) STATUS_MARK="FAILED" ;;
|
|
118
|
+
*) STATUS_MARK="PENDING" ;;
|
|
119
|
+
esac
|
|
120
|
+
|
|
121
|
+
REPORT="${REPORT}
|
|
122
|
+
### [${STATUS_MARK}] ${T_TITLE}
|
|
123
|
+
- **Assignee**: ${T_ASSIGNEE}
|
|
124
|
+
- **Status**: ${T_STATUS}
|
|
125
|
+
$([ -n "$T_SUMMARY" ] && echo "- **Summary**: ${T_SUMMARY}" || true)
|
|
126
|
+
"
|
|
127
|
+
done
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
# Add action items for non-complete items
|
|
131
|
+
if [ "$FAILURE_COUNT" -gt 0 ] || [ "$BLOCKED_COUNT" -gt 0 ]; then
|
|
132
|
+
REPORT="${REPORT}
|
|
133
|
+
## Action Items
|
|
134
|
+
|
|
135
|
+
$([ "$FAILURE_COUNT" -gt 0 ] && echo "- ${FAILURE_COUNT} task(s) failed — review via handle-failure skill" || true)
|
|
136
|
+
$([ "$BLOCKED_COUNT" -gt 0 ] && echo "- ${BLOCKED_COUNT} task(s) blocked — escalate to Orchestrator if unresolvable" || true)
|
|
137
|
+
"
|
|
138
|
+
fi
|
|
139
|
+
|
|
140
|
+
# Write report to temp file for reliable output
|
|
141
|
+
REPORT_FILE="/tmp/tl-report-${TEAM_ID:-unknown}-$(date +%s).md"
|
|
142
|
+
echo "$REPORT" > "$REPORT_FILE"
|
|
143
|
+
|
|
144
|
+
# Output JSON result
|
|
145
|
+
jq -n \
|
|
146
|
+
--arg reportType "$REPORT_TYPE" \
|
|
147
|
+
--arg objective "$OBJECTIVE" \
|
|
148
|
+
--arg reportFile "$REPORT_FILE" \
|
|
149
|
+
--arg timestamp "$TIMESTAMP" \
|
|
150
|
+
--arg total "$TOTAL" \
|
|
151
|
+
--arg success "$SUCCESS_COUNT" \
|
|
152
|
+
--arg failed "$FAILURE_COUNT" \
|
|
153
|
+
--arg blocked "$BLOCKED_COUNT" \
|
|
154
|
+
--arg pending "$PENDING_COUNT" \
|
|
155
|
+
'{
|
|
156
|
+
success: true,
|
|
157
|
+
reportType: $reportType,
|
|
158
|
+
objective: $objective,
|
|
159
|
+
reportFile: $reportFile,
|
|
160
|
+
timestamp: $timestamp,
|
|
161
|
+
stats: {
|
|
162
|
+
total: ($total | tonumber),
|
|
163
|
+
completed: ($success | tonumber),
|
|
164
|
+
failed: ($failed | tonumber),
|
|
165
|
+
blocked: ($blocked | tonumber),
|
|
166
|
+
pending: ($pending | tonumber)
|
|
167
|
+
}
|
|
168
|
+
}'
|