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,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Task Processor Service
|
|
3
|
+
*
|
|
4
|
+
* Polls the cloud task queue and processes tasks using the Anthropic API.
|
|
5
|
+
* Handles text, image_analysis, and document task types.
|
|
6
|
+
*
|
|
7
|
+
* MVP implementation: direct Anthropic Messages API calls.
|
|
8
|
+
* Future: pluggable runtime backends (OpenHands, Gemini, etc.).
|
|
9
|
+
*
|
|
10
|
+
* @module services/cloud/cloud-task-processor.service
|
|
11
|
+
*/
|
|
12
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
13
|
+
import { type CloudTask } from '../../controllers/cloud/tasks/cloud-task.types.js';
|
|
14
|
+
/** Task processor configuration. */
|
|
15
|
+
export declare const TASK_PROCESSOR_CONSTANTS: {
|
|
16
|
+
/** Polling interval in ms (5 seconds) */
|
|
17
|
+
readonly POLL_INTERVAL_MS: 5000;
|
|
18
|
+
/** Maximum concurrent task processing (MVP: sequential) */
|
|
19
|
+
readonly MAX_CONCURRENT: 1;
|
|
20
|
+
/** Anthropic model for task processing */
|
|
21
|
+
readonly DEFAULT_MODEL: "claude-sonnet-4-5-20250929";
|
|
22
|
+
/** Maximum tokens in AI response */
|
|
23
|
+
readonly MAX_TOKENS: 4096;
|
|
24
|
+
/** Task processing timeout in ms (5 minutes) */
|
|
25
|
+
readonly PROCESSING_TIMEOUT_MS: 300000;
|
|
26
|
+
/** Supported image MIME types for base64 encoding */
|
|
27
|
+
readonly IMAGE_MEDIA_TYPES: readonly ["image/png", "image/jpeg", "image/gif", "image/webp"];
|
|
28
|
+
};
|
|
29
|
+
/** Anthropic API media type union. */
|
|
30
|
+
type AnthropicMediaType = 'image/png' | 'image/jpeg' | 'image/gif' | 'image/webp';
|
|
31
|
+
/**
|
|
32
|
+
* Processes cloud tasks by polling the queue and invoking the Anthropic API.
|
|
33
|
+
*
|
|
34
|
+
* Singleton — access via `CloudTaskProcessorService.getInstance()`.
|
|
35
|
+
*/
|
|
36
|
+
export declare class CloudTaskProcessorService {
|
|
37
|
+
private static instance;
|
|
38
|
+
private readonly logger;
|
|
39
|
+
private pollTimer;
|
|
40
|
+
private processing;
|
|
41
|
+
private running;
|
|
42
|
+
private constructor();
|
|
43
|
+
/** Get singleton instance. */
|
|
44
|
+
static getInstance(): CloudTaskProcessorService;
|
|
45
|
+
/** Reset singleton (for testing). */
|
|
46
|
+
static resetInstance(): void;
|
|
47
|
+
/** Whether the processor is currently running. */
|
|
48
|
+
isRunning(): boolean;
|
|
49
|
+
/** Whether a task is currently being processed. */
|
|
50
|
+
isProcessing(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Start the task processor polling loop.
|
|
53
|
+
* Idempotent — safe to call multiple times.
|
|
54
|
+
*/
|
|
55
|
+
start(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Stop the task processor.
|
|
58
|
+
* Waits for current processing to finish before returning.
|
|
59
|
+
*/
|
|
60
|
+
stop(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Poll for the next pending task and process it.
|
|
63
|
+
* Skips if already processing a task (sequential MVP).
|
|
64
|
+
*/
|
|
65
|
+
pollAndProcess(): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Process a single cloud task by type.
|
|
68
|
+
*
|
|
69
|
+
* @param task - The dequeued task to process
|
|
70
|
+
*/
|
|
71
|
+
processTask(task: CloudTask): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Process a text-only task using the Anthropic Messages API.
|
|
74
|
+
*
|
|
75
|
+
* @param task - Text task with prompt
|
|
76
|
+
* @returns AI-generated response text
|
|
77
|
+
*/
|
|
78
|
+
processTextTask(task: CloudTask): Promise<string>;
|
|
79
|
+
/**
|
|
80
|
+
* Process an image analysis task.
|
|
81
|
+
* Loads attached image files and sends them with the prompt to the AI.
|
|
82
|
+
*
|
|
83
|
+
* @param task - Image analysis task with file attachments
|
|
84
|
+
* @returns AI-generated analysis result
|
|
85
|
+
*/
|
|
86
|
+
processImageTask(task: CloudTask): Promise<string>;
|
|
87
|
+
/**
|
|
88
|
+
* Process a document task.
|
|
89
|
+
* Reads document files and sends their content with the prompt.
|
|
90
|
+
*
|
|
91
|
+
* @param task - Document task with file attachments
|
|
92
|
+
* @returns AI-generated response
|
|
93
|
+
*/
|
|
94
|
+
processDocumentTask(task: CloudTask): Promise<string>;
|
|
95
|
+
/**
|
|
96
|
+
* Create an Anthropic API client.
|
|
97
|
+
*
|
|
98
|
+
* @returns Configured Anthropic client
|
|
99
|
+
* @throws Error if ANTHROPIC_API_KEY is not set
|
|
100
|
+
*/
|
|
101
|
+
createClient(): Anthropic;
|
|
102
|
+
/**
|
|
103
|
+
* Extract text content from an Anthropic message response.
|
|
104
|
+
*
|
|
105
|
+
* @param message - Anthropic API message response
|
|
106
|
+
* @returns Concatenated text from all text content blocks
|
|
107
|
+
*/
|
|
108
|
+
extractTextFromResponse(message: Anthropic.Message): string;
|
|
109
|
+
/**
|
|
110
|
+
* Map a file extension to an Anthropic-compatible media type.
|
|
111
|
+
*
|
|
112
|
+
* @param ext - File extension (without dot)
|
|
113
|
+
* @returns Media type string or null if unsupported
|
|
114
|
+
*/
|
|
115
|
+
extensionToMediaType(ext: string): AnthropicMediaType | null;
|
|
116
|
+
}
|
|
117
|
+
export {};
|
|
118
|
+
//# sourceMappingURL=cloud-task-processor.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-task-processor.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-task-processor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAM1C,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,mDAAmD,CAAC;AAMrG,oCAAoC;AACpC,eAAO,MAAM,wBAAwB;IACpC,yCAAyC;;IAEzC,2DAA2D;;IAE3D,0CAA0C;;IAE1C,oCAAoC;;IAEpC,gDAAgD;;IAEhD,qDAAqD;;CAE5C,CAAC;AAEX,sCAAsC;AACtC,KAAK,kBAAkB,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;AAMlF;;;;GAIG;AACH,qBAAa,yBAAyB;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0C;IAEjE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;IAIP,8BAA8B;IAC9B,MAAM,CAAC,WAAW,IAAI,yBAAyB;IAO/C,qCAAqC;IACrC,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B,kDAAkD;IAClD,SAAS,IAAI,OAAO;IAIpB,mDAAmD;IACnD,YAAY,IAAI,OAAO;IAQvB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAgBb;;;OAGG;IACH,IAAI,IAAI,IAAI;IAeZ;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBrC;;;;OAIG;IACG,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCjD;;;;;OAKG;IACG,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBvD;;;;;;OAMG;IACG,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAoDxD;;;;;;OAMG;IACG,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAqC3D;;;;;OAKG;IACH,YAAY,IAAI,SAAS;IAQzB;;;;;OAKG;IACH,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,GAAG,MAAM;IAO3D;;;;;OAKG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;CAU5D"}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Task Processor Service
|
|
3
|
+
*
|
|
4
|
+
* Polls the cloud task queue and processes tasks using the Anthropic API.
|
|
5
|
+
* Handles text, image_analysis, and document task types.
|
|
6
|
+
*
|
|
7
|
+
* MVP implementation: direct Anthropic Messages API calls.
|
|
8
|
+
* Future: pluggable runtime backends (OpenHands, Gemini, etc.).
|
|
9
|
+
*
|
|
10
|
+
* @module services/cloud/cloud-task-processor.service
|
|
11
|
+
*/
|
|
12
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
13
|
+
import { LoggerService } from '../core/logger.service.js';
|
|
14
|
+
import { CloudTaskService } from './cloud-task.service.js';
|
|
15
|
+
import { CloudFileService } from './cloud-file.service.js';
|
|
16
|
+
import { CloudImageAnalysisService } from './cloud-image-analysis.service.js';
|
|
17
|
+
import { CLOUD_TASK_TYPES } from '../../controllers/cloud/tasks/cloud-task.types.js';
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Constants
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
/** Task processor configuration. */
|
|
22
|
+
export const TASK_PROCESSOR_CONSTANTS = {
|
|
23
|
+
/** Polling interval in ms (5 seconds) */
|
|
24
|
+
POLL_INTERVAL_MS: 5_000,
|
|
25
|
+
/** Maximum concurrent task processing (MVP: sequential) */
|
|
26
|
+
MAX_CONCURRENT: 1,
|
|
27
|
+
/** Anthropic model for task processing */
|
|
28
|
+
DEFAULT_MODEL: 'claude-sonnet-4-5-20250929',
|
|
29
|
+
/** Maximum tokens in AI response */
|
|
30
|
+
MAX_TOKENS: 4096,
|
|
31
|
+
/** Task processing timeout in ms (5 minutes) */
|
|
32
|
+
PROCESSING_TIMEOUT_MS: 300_000,
|
|
33
|
+
/** Supported image MIME types for base64 encoding */
|
|
34
|
+
IMAGE_MEDIA_TYPES: ['image/png', 'image/jpeg', 'image/gif', 'image/webp'],
|
|
35
|
+
};
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
// Service
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
/**
|
|
40
|
+
* Processes cloud tasks by polling the queue and invoking the Anthropic API.
|
|
41
|
+
*
|
|
42
|
+
* Singleton — access via `CloudTaskProcessorService.getInstance()`.
|
|
43
|
+
*/
|
|
44
|
+
export class CloudTaskProcessorService {
|
|
45
|
+
static instance = null;
|
|
46
|
+
logger;
|
|
47
|
+
pollTimer = null;
|
|
48
|
+
processing = false;
|
|
49
|
+
running = false;
|
|
50
|
+
constructor() {
|
|
51
|
+
this.logger = LoggerService.getInstance().createComponentLogger('CloudTaskProcessor');
|
|
52
|
+
}
|
|
53
|
+
/** Get singleton instance. */
|
|
54
|
+
static getInstance() {
|
|
55
|
+
if (!CloudTaskProcessorService.instance) {
|
|
56
|
+
CloudTaskProcessorService.instance = new CloudTaskProcessorService();
|
|
57
|
+
}
|
|
58
|
+
return CloudTaskProcessorService.instance;
|
|
59
|
+
}
|
|
60
|
+
/** Reset singleton (for testing). */
|
|
61
|
+
static resetInstance() {
|
|
62
|
+
CloudTaskProcessorService.instance = null;
|
|
63
|
+
}
|
|
64
|
+
/** Whether the processor is currently running. */
|
|
65
|
+
isRunning() {
|
|
66
|
+
return this.running;
|
|
67
|
+
}
|
|
68
|
+
/** Whether a task is currently being processed. */
|
|
69
|
+
isProcessing() {
|
|
70
|
+
return this.processing;
|
|
71
|
+
}
|
|
72
|
+
// -----------------------------------------------------------------------
|
|
73
|
+
// Lifecycle
|
|
74
|
+
// -----------------------------------------------------------------------
|
|
75
|
+
/**
|
|
76
|
+
* Start the task processor polling loop.
|
|
77
|
+
* Idempotent — safe to call multiple times.
|
|
78
|
+
*/
|
|
79
|
+
start() {
|
|
80
|
+
if (this.running)
|
|
81
|
+
return;
|
|
82
|
+
if (!process.env.ANTHROPIC_API_KEY) {
|
|
83
|
+
this.logger.warn('ANTHROPIC_API_KEY not set — task processor disabled');
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
this.running = true;
|
|
87
|
+
this.pollTimer = setInterval(() => this.pollAndProcess(), TASK_PROCESSOR_CONSTANTS.POLL_INTERVAL_MS);
|
|
88
|
+
this.logger.info('Task processor started', {
|
|
89
|
+
pollIntervalMs: TASK_PROCESSOR_CONSTANTS.POLL_INTERVAL_MS,
|
|
90
|
+
model: TASK_PROCESSOR_CONSTANTS.DEFAULT_MODEL,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Stop the task processor.
|
|
95
|
+
* Waits for current processing to finish before returning.
|
|
96
|
+
*/
|
|
97
|
+
stop() {
|
|
98
|
+
if (!this.running)
|
|
99
|
+
return;
|
|
100
|
+
this.running = false;
|
|
101
|
+
if (this.pollTimer) {
|
|
102
|
+
clearInterval(this.pollTimer);
|
|
103
|
+
this.pollTimer = null;
|
|
104
|
+
}
|
|
105
|
+
this.logger.info('Task processor stopped');
|
|
106
|
+
}
|
|
107
|
+
// -----------------------------------------------------------------------
|
|
108
|
+
// Core Processing Loop
|
|
109
|
+
// -----------------------------------------------------------------------
|
|
110
|
+
/**
|
|
111
|
+
* Poll for the next pending task and process it.
|
|
112
|
+
* Skips if already processing a task (sequential MVP).
|
|
113
|
+
*/
|
|
114
|
+
async pollAndProcess() {
|
|
115
|
+
if (this.processing || !this.running)
|
|
116
|
+
return;
|
|
117
|
+
try {
|
|
118
|
+
const taskService = CloudTaskService.getInstance();
|
|
119
|
+
const task = await taskService.dequeueNext();
|
|
120
|
+
if (!task)
|
|
121
|
+
return;
|
|
122
|
+
this.processing = true;
|
|
123
|
+
this.logger.info('Processing task', { taskId: task.id, type: task.type });
|
|
124
|
+
await this.processTask(task);
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
this.logger.error('Poll cycle error', {
|
|
128
|
+
error: err instanceof Error ? err.message : String(err),
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
this.processing = false;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Process a single cloud task by type.
|
|
137
|
+
*
|
|
138
|
+
* @param task - The dequeued task to process
|
|
139
|
+
*/
|
|
140
|
+
async processTask(task) {
|
|
141
|
+
const taskService = CloudTaskService.getInstance();
|
|
142
|
+
const startTime = Date.now();
|
|
143
|
+
try {
|
|
144
|
+
let result;
|
|
145
|
+
switch (task.type) {
|
|
146
|
+
case CLOUD_TASK_TYPES.TEXT:
|
|
147
|
+
result = await this.processTextTask(task);
|
|
148
|
+
break;
|
|
149
|
+
case CLOUD_TASK_TYPES.IMAGE_ANALYSIS:
|
|
150
|
+
result = await this.processImageTask(task);
|
|
151
|
+
break;
|
|
152
|
+
case CLOUD_TASK_TYPES.DOCUMENT:
|
|
153
|
+
result = await this.processDocumentTask(task);
|
|
154
|
+
break;
|
|
155
|
+
default:
|
|
156
|
+
throw new Error(`Unknown task type: ${task.type}`);
|
|
157
|
+
}
|
|
158
|
+
await taskService.completeTask(task.id, result);
|
|
159
|
+
const durationMs = Date.now() - startTime;
|
|
160
|
+
this.logger.info('Task completed', { taskId: task.id, type: task.type, durationMs });
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
164
|
+
await taskService.failTask(task.id, errorMsg);
|
|
165
|
+
this.logger.error('Task processing failed', { taskId: task.id, error: errorMsg });
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// -----------------------------------------------------------------------
|
|
169
|
+
// Task Type Handlers
|
|
170
|
+
// -----------------------------------------------------------------------
|
|
171
|
+
/**
|
|
172
|
+
* Process a text-only task using the Anthropic Messages API.
|
|
173
|
+
*
|
|
174
|
+
* @param task - Text task with prompt
|
|
175
|
+
* @returns AI-generated response text
|
|
176
|
+
*/
|
|
177
|
+
async processTextTask(task) {
|
|
178
|
+
const client = this.createClient();
|
|
179
|
+
const message = await client.messages.create({
|
|
180
|
+
model: TASK_PROCESSOR_CONSTANTS.DEFAULT_MODEL,
|
|
181
|
+
max_tokens: TASK_PROCESSOR_CONSTANTS.MAX_TOKENS,
|
|
182
|
+
messages: [
|
|
183
|
+
{
|
|
184
|
+
role: 'user',
|
|
185
|
+
content: task.prompt,
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
});
|
|
189
|
+
return this.extractTextFromResponse(message);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Process an image analysis task.
|
|
193
|
+
* Loads attached image files and sends them with the prompt to the AI.
|
|
194
|
+
*
|
|
195
|
+
* @param task - Image analysis task with file attachments
|
|
196
|
+
* @returns AI-generated analysis result
|
|
197
|
+
*/
|
|
198
|
+
async processImageTask(task) {
|
|
199
|
+
const client = this.createClient();
|
|
200
|
+
const fileService = CloudFileService.getInstance();
|
|
201
|
+
const imageAnalysisService = CloudImageAnalysisService.getInstance();
|
|
202
|
+
const contentBlocks = [];
|
|
203
|
+
// Load and attach image files
|
|
204
|
+
for (const fileKey of task.files) {
|
|
205
|
+
const buffer = await fileService.readFile(fileKey);
|
|
206
|
+
if (!buffer) {
|
|
207
|
+
this.logger.warn('Image file not found, skipping', { fileKey, taskId: task.id });
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
const ext = fileKey.split('.').pop()?.toLowerCase() ?? '';
|
|
211
|
+
const mediaType = this.extensionToMediaType(ext);
|
|
212
|
+
if (!mediaType) {
|
|
213
|
+
this.logger.warn('Unsupported image extension, skipping', { ext, fileKey });
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
const imageBlock = {
|
|
217
|
+
type: 'image',
|
|
218
|
+
source: {
|
|
219
|
+
type: 'base64',
|
|
220
|
+
media_type: mediaType,
|
|
221
|
+
data: buffer.toString('base64'),
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
contentBlocks.push(imageBlock);
|
|
225
|
+
}
|
|
226
|
+
// Build analysis prompt (WeChat-aware)
|
|
227
|
+
const isWeChat = imageAnalysisService.isLikelyWeChatScreenshot(task.prompt);
|
|
228
|
+
const analysisPrompt = imageAnalysisService.buildAnalysisPrompt(task.prompt, isWeChat);
|
|
229
|
+
contentBlocks.push({ type: 'text', text: analysisPrompt });
|
|
230
|
+
const message = await client.messages.create({
|
|
231
|
+
model: TASK_PROCESSOR_CONSTANTS.DEFAULT_MODEL,
|
|
232
|
+
max_tokens: TASK_PROCESSOR_CONSTANTS.MAX_TOKENS,
|
|
233
|
+
messages: [
|
|
234
|
+
{
|
|
235
|
+
role: 'user',
|
|
236
|
+
content: contentBlocks,
|
|
237
|
+
},
|
|
238
|
+
],
|
|
239
|
+
});
|
|
240
|
+
return this.extractTextFromResponse(message);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Process a document task.
|
|
244
|
+
* Reads document files and sends their content with the prompt.
|
|
245
|
+
*
|
|
246
|
+
* @param task - Document task with file attachments
|
|
247
|
+
* @returns AI-generated response
|
|
248
|
+
*/
|
|
249
|
+
async processDocumentTask(task) {
|
|
250
|
+
const client = this.createClient();
|
|
251
|
+
const fileService = CloudFileService.getInstance();
|
|
252
|
+
// Read document files and include their content
|
|
253
|
+
const documentContents = [];
|
|
254
|
+
for (const fileKey of task.files) {
|
|
255
|
+
const buffer = await fileService.readFile(fileKey);
|
|
256
|
+
if (!buffer) {
|
|
257
|
+
this.logger.warn('Document file not found, skipping', { fileKey, taskId: task.id });
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
documentContents.push(`--- File: ${fileKey} ---\n${buffer.toString('utf-8')}`);
|
|
261
|
+
}
|
|
262
|
+
const fullPrompt = documentContents.length > 0
|
|
263
|
+
? `${task.prompt}\n\n${documentContents.join('\n\n')}`
|
|
264
|
+
: task.prompt;
|
|
265
|
+
const message = await client.messages.create({
|
|
266
|
+
model: TASK_PROCESSOR_CONSTANTS.DEFAULT_MODEL,
|
|
267
|
+
max_tokens: TASK_PROCESSOR_CONSTANTS.MAX_TOKENS,
|
|
268
|
+
messages: [
|
|
269
|
+
{
|
|
270
|
+
role: 'user',
|
|
271
|
+
content: fullPrompt,
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
});
|
|
275
|
+
return this.extractTextFromResponse(message);
|
|
276
|
+
}
|
|
277
|
+
// -----------------------------------------------------------------------
|
|
278
|
+
// Helpers
|
|
279
|
+
// -----------------------------------------------------------------------
|
|
280
|
+
/**
|
|
281
|
+
* Create an Anthropic API client.
|
|
282
|
+
*
|
|
283
|
+
* @returns Configured Anthropic client
|
|
284
|
+
* @throws Error if ANTHROPIC_API_KEY is not set
|
|
285
|
+
*/
|
|
286
|
+
createClient() {
|
|
287
|
+
const apiKey = process.env.ANTHROPIC_API_KEY;
|
|
288
|
+
if (!apiKey) {
|
|
289
|
+
throw new Error('ANTHROPIC_API_KEY environment variable is required');
|
|
290
|
+
}
|
|
291
|
+
return new Anthropic({ apiKey });
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Extract text content from an Anthropic message response.
|
|
295
|
+
*
|
|
296
|
+
* @param message - Anthropic API message response
|
|
297
|
+
* @returns Concatenated text from all text content blocks
|
|
298
|
+
*/
|
|
299
|
+
extractTextFromResponse(message) {
|
|
300
|
+
return message.content
|
|
301
|
+
.filter((block) => block.type === 'text')
|
|
302
|
+
.map((block) => block.text)
|
|
303
|
+
.join('\n');
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Map a file extension to an Anthropic-compatible media type.
|
|
307
|
+
*
|
|
308
|
+
* @param ext - File extension (without dot)
|
|
309
|
+
* @returns Media type string or null if unsupported
|
|
310
|
+
*/
|
|
311
|
+
extensionToMediaType(ext) {
|
|
312
|
+
const mapping = {
|
|
313
|
+
png: 'image/png',
|
|
314
|
+
jpg: 'image/jpeg',
|
|
315
|
+
jpeg: 'image/jpeg',
|
|
316
|
+
gif: 'image/gif',
|
|
317
|
+
webp: 'image/webp',
|
|
318
|
+
};
|
|
319
|
+
return mapping[ext] ?? null;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=cloud-task-processor.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-task-processor.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-task-processor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAkB,MAAM,mDAAmD,CAAC;AAErG,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,oCAAoC;AACpC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,yCAAyC;IACzC,gBAAgB,EAAE,KAAK;IACvB,2DAA2D;IAC3D,cAAc,EAAE,CAAC;IACjB,0CAA0C;IAC1C,aAAa,EAAE,4BAA4B;IAC3C,oCAAoC;IACpC,UAAU,EAAE,IAAI;IAChB,gDAAgD;IAChD,qBAAqB,EAAE,OAAO;IAC9B,qDAAqD;IACrD,iBAAiB,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAU;CACzE,CAAC;AAKX,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IAC7B,MAAM,CAAC,QAAQ,GAAqC,IAAI,CAAC;IAEhD,MAAM,CAAkB;IACjC,SAAS,GAA0C,IAAI,CAAC;IACxD,UAAU,GAAG,KAAK,CAAC;IACnB,OAAO,GAAG,KAAK,CAAC;IAExB;QACC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IACvF,CAAC;IAED,8BAA8B;IAC9B,MAAM,CAAC,WAAW;QACjB,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,CAAC;YACzC,yBAAyB,CAAC,QAAQ,GAAG,IAAI,yBAAyB,EAAE,CAAC;QACtE,CAAC;QACD,OAAO,yBAAyB,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAED,qCAAqC;IACrC,MAAM,CAAC,aAAa;QACnB,yBAAyB,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC3C,CAAC;IAED,kDAAkD;IAClD,SAAS;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,mDAAmD;IACnD,YAAY;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,0EAA0E;IAC1E,YAAY;IACZ,0EAA0E;IAE1E;;;OAGG;IACH,KAAK;QACJ,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAEzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACxE,OAAO;QACR,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;QACrG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAC1C,cAAc,EAAE,wBAAwB,CAAC,gBAAgB;YACzD,KAAK,EAAE,wBAAwB,CAAC,aAAa;SAC7C,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI;QACH,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,0EAA0E;IAC1E,uBAAuB;IACvB,0EAA0E;IAE1E;;;OAGG;IACH,KAAK,CAAC,cAAc;QACnB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE7C,IAAI,CAAC;YACJ,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI;gBAAE,OAAO;YAElB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAE1E,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE;gBACrC,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACvD,CAAC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACzB,CAAC;IACF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,IAAe;QAChC,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACJ,IAAI,MAAc,CAAC;YAEnB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,gBAAgB,CAAC,IAAI;oBACzB,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;oBAC1C,MAAM;gBACP,KAAK,gBAAgB,CAAC,cAAc;oBACnC,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBAC3C,MAAM;gBACP,KAAK,gBAAgB,CAAC,QAAQ;oBAC7B,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;oBAC9C,MAAM;gBACP;oBACC,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAEhD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClE,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnF,CAAC;IACF,CAAC;IAED,0EAA0E;IAC1E,qBAAqB;IACrB,0EAA0E;IAE1E;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,IAAe;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEnC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,wBAAwB,CAAC,aAAa;YAC7C,UAAU,EAAE,wBAAwB,CAAC,UAAU;YAC/C,QAAQ,EAAE;gBACT;oBACC,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE,IAAI,CAAC,MAAM;iBACpB;aACD;SACD,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAe;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,oBAAoB,GAAG,yBAAyB,CAAC,WAAW,EAAE,CAAC;QAErE,MAAM,aAAa,GAAwB,EAAE,CAAC;QAE9C,8BAA8B;QAC9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjF,SAAS;YACV,CAAC;YAED,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC5E,SAAS;YACV,CAAC;YAED,MAAM,UAAU,GAAoB;gBACnC,IAAI,EAAE,OAAgB;gBACtB,MAAM,EAAE;oBACP,IAAI,EAAE,QAAiB;oBACvB,UAAU,EAAE,SAAS;oBACrB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;iBAC/B;aACD,CAAC;YACF,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAED,uCAAuC;QACvC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5E,MAAM,cAAc,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACvF,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAEpE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,wBAAwB,CAAC,aAAa;YAC7C,UAAU,EAAE,wBAAwB,CAAC,UAAU;YAC/C,QAAQ,EAAE;gBACT;oBACC,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE,aAAa;iBACtB;aACD;SACD,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,mBAAmB,CAAC,IAAe;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAEnD,gDAAgD;QAChD,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpF,SAAS;YACV,CAAC;YACD,gBAAgB,CAAC,IAAI,CAAC,aAAa,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAC7C,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACtD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAEf,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,wBAAwB,CAAC,aAAa;YAC7C,UAAU,EAAE,wBAAwB,CAAC,UAAU;YAC/C,QAAQ,EAAE;gBACT;oBACC,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE,UAAU;iBACnB;aACD;SACD,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,0EAA0E;IAC1E,UAAU;IACV,0EAA0E;IAE1E;;;;;OAKG;IACH,YAAY;QACX,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,uBAAuB,CAAC,OAA0B;QACjD,OAAO,OAAO,CAAC,OAAO;aACpB,MAAM,CAAC,CAAC,KAAK,EAAgC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;aACtE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC1B,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,GAAW;QAC/B,MAAM,OAAO,GAAuC;YACnD,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,YAAY;SAClB,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAC7B,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Task Service
|
|
3
|
+
*
|
|
4
|
+
* Manages the lifecycle of cloud tasks submitted by customers:
|
|
5
|
+
* creation, queuing, processing via AI runtime, and result storage.
|
|
6
|
+
*
|
|
7
|
+
* MVP implementation uses an in-memory queue with file-based persistence.
|
|
8
|
+
* Future: migrate to Redis/BullMQ for production scale.
|
|
9
|
+
*
|
|
10
|
+
* @module services/cloud/cloud-task.service
|
|
11
|
+
*/
|
|
12
|
+
import { type CloudTask, type CloudTaskStatus, type CloudTaskType } from '../../controllers/cloud/tasks/cloud-task.types.js';
|
|
13
|
+
/** Cloud task service configuration. */
|
|
14
|
+
export declare const CLOUD_TASK_CONSTANTS: {
|
|
15
|
+
/** Storage directory under ~/.crewly/ */
|
|
16
|
+
readonly STORAGE_DIR: "cloud/tasks";
|
|
17
|
+
/** Task data file */
|
|
18
|
+
readonly TASKS_FILE: "tasks.json";
|
|
19
|
+
/** Maximum tasks returned per list query */
|
|
20
|
+
readonly DEFAULT_PAGE_SIZE: 20;
|
|
21
|
+
/** Maximum allowed page size */
|
|
22
|
+
readonly MAX_PAGE_SIZE: 100;
|
|
23
|
+
/** Maximum pending tasks per user (cost control) */
|
|
24
|
+
readonly MAX_PENDING_PER_USER: 50;
|
|
25
|
+
/** Task processing timeout (ms) — 5 minutes */
|
|
26
|
+
readonly PROCESSING_TIMEOUT_MS: 300000;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Manages cloud task CRUD, queuing, and processing.
|
|
30
|
+
*
|
|
31
|
+
* Singleton — access via `CloudTaskService.getInstance()`.
|
|
32
|
+
*/
|
|
33
|
+
export declare class CloudTaskService {
|
|
34
|
+
private static instance;
|
|
35
|
+
private readonly logger;
|
|
36
|
+
private readonly storageDir;
|
|
37
|
+
private readonly tasksFilePath;
|
|
38
|
+
private tasks;
|
|
39
|
+
private initialized;
|
|
40
|
+
private constructor();
|
|
41
|
+
/** Get singleton instance. */
|
|
42
|
+
static getInstance(): CloudTaskService;
|
|
43
|
+
/** Reset singleton (for testing). */
|
|
44
|
+
static resetInstance(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Initialize the service — load persisted tasks from disk.
|
|
47
|
+
* Idempotent: safe to call multiple times.
|
|
48
|
+
*/
|
|
49
|
+
initialize(): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Create a new cloud task.
|
|
52
|
+
*
|
|
53
|
+
* @param userId - Authenticated user ID
|
|
54
|
+
* @param type - Task type (text, image_analysis, document)
|
|
55
|
+
* @param prompt - User instruction / prompt
|
|
56
|
+
* @param files - Attached file keys (DO Spaces object keys)
|
|
57
|
+
* @returns The created task
|
|
58
|
+
* @throws Error if user exceeds pending task limit
|
|
59
|
+
*/
|
|
60
|
+
createTask(userId: string, type: CloudTaskType, prompt: string, files?: string[]): Promise<CloudTask>;
|
|
61
|
+
/**
|
|
62
|
+
* Get a single task by ID, scoped to the requesting user.
|
|
63
|
+
*
|
|
64
|
+
* @param taskId - Task UUID
|
|
65
|
+
* @param userId - Authenticated user ID (ownership check)
|
|
66
|
+
* @returns The task or null if not found / not owned
|
|
67
|
+
*/
|
|
68
|
+
getTask(taskId: string, userId: string): Promise<CloudTask | null>;
|
|
69
|
+
/**
|
|
70
|
+
* List tasks for a user, with optional status filter and pagination.
|
|
71
|
+
*
|
|
72
|
+
* @param userId - Authenticated user ID
|
|
73
|
+
* @param options - Filter and pagination options
|
|
74
|
+
* @returns Paginated task list with total count
|
|
75
|
+
*/
|
|
76
|
+
listTasks(userId: string, options?: {
|
|
77
|
+
status?: CloudTaskStatus;
|
|
78
|
+
limit?: number;
|
|
79
|
+
offset?: number;
|
|
80
|
+
}): Promise<{
|
|
81
|
+
tasks: CloudTask[];
|
|
82
|
+
total: number;
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Dequeue the next pending task for processing.
|
|
86
|
+
*
|
|
87
|
+
* @returns The oldest pending task, or null if queue is empty
|
|
88
|
+
*/
|
|
89
|
+
dequeueNext(): Promise<CloudTask | null>;
|
|
90
|
+
/**
|
|
91
|
+
* Mark a task as completed with a result.
|
|
92
|
+
*
|
|
93
|
+
* @param taskId - Task UUID
|
|
94
|
+
* @param result - AI-generated result content
|
|
95
|
+
*/
|
|
96
|
+
completeTask(taskId: string, result: string): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Mark a task as failed with an error message.
|
|
99
|
+
*
|
|
100
|
+
* @param taskId - Task UUID
|
|
101
|
+
* @param error - Error description
|
|
102
|
+
*/
|
|
103
|
+
failTask(taskId: string, error: string): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Get queue statistics.
|
|
106
|
+
*
|
|
107
|
+
* @returns Counts by status
|
|
108
|
+
*/
|
|
109
|
+
getQueueStats(): Promise<Record<CloudTaskStatus, number>>;
|
|
110
|
+
/** Count pending tasks for a specific user. */
|
|
111
|
+
private countUserPendingTasks;
|
|
112
|
+
/** Persist tasks to disk. */
|
|
113
|
+
private persist;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=cloud-task.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-task.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-task.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,EAGN,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,MAAM,mDAAmD,CAAC;AAM3D,wCAAwC;AACxC,eAAO,MAAM,oBAAoB;IAChC,yCAAyC;;IAEzC,qBAAqB;;IAErB,4CAA4C;;IAE5C,gCAAgC;;IAEhC,oDAAoD;;IAEpD,+CAA+C;;CAEtC,CAAC;AAMX;;;;GAIG;AACH,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC;IAExD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IAMP,8BAA8B;IAC9B,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAOtC,qCAAqC;IACrC,MAAM,CAAC,aAAa,IAAI,IAAI;IAQ5B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC;;;;;;;;;OASG;IACG,UAAU,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAM,EAAO,GAClB,OAAO,CAAC,SAAS,CAAC;IAiCrB;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAOxE;;;;;;OAMG;IACG,SAAS,CACd,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,eAAe,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GACzE,OAAO,CAAC;QAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA6BjD;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAkB9C;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcjE;;;;;OAKG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAqB/D,+CAA+C;IAC/C,OAAO,CAAC,qBAAqB;IAU7B,6BAA6B;YACf,OAAO;CAQrB"}
|