crewly 1.3.30 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/constants.ts +18 -3
- package/config/hooks/install-hooks.sh +88 -0
- package/config/hooks/pre-commit +104 -0
- package/config/orchestrator_tasks/prompts/orchestrator-prompt.md +17 -24
- package/config/roles/auditor/role.json +13 -0
- package/config/roles/orchestrator/prompt.md +25 -0
- package/config/roles/product-manager/prompt.md +18 -1
- package/config/roles/researcher/prompt.md +110 -0
- package/config/roles/team-leader/prompt.md +31 -8
- package/config/roles/team-leader/tl-addon.md +40 -9
- package/config/roles/ux-designer/prompt.md +111 -0
- package/config/skills/_common/lib.sh +33 -0
- package/config/skills/agent/browse-stealth/{instructions.md → SKILL.md} +40 -0
- package/config/skills/agent/chrome-attach/SKILL.md +84 -0
- package/config/skills/agent/chrome-attach/execute.sh +279 -0
- package/config/skills/agent/competitor-content-tracker/{instructions.md → SKILL.md} +34 -0
- package/config/skills/agent/computer-use/{instructions.md → SKILL.md} +43 -0
- package/config/skills/agent/content-calendar/{instructions.md → SKILL.md} +32 -0
- package/config/skills/agent/content-repurposer/{instructions.md → SKILL.md} +38 -0
- package/config/skills/agent/content-writer/{instructions.md → SKILL.md} +38 -0
- package/config/skills/agent/core/accept-task/{instructions.md → SKILL.md} +37 -0
- package/config/skills/agent/core/block-task/{instructions.md → SKILL.md} +37 -0
- package/config/skills/agent/core/check-quality-gates/{instructions.md → SKILL.md} +40 -0
- package/config/skills/agent/core/complete-task/{instructions.md → SKILL.md} +37 -0
- package/config/skills/agent/core/complete-task/execute.sh +15 -0
- package/config/skills/agent/core/generate-pdf/{instructions.md → SKILL.md} +42 -0
- package/config/skills/agent/core/get-my-context/{instructions.md → SKILL.md} +38 -0
- package/config/skills/agent/core/get-sops/{instructions.md → SKILL.md} +38 -0
- package/config/skills/agent/core/get-team-norms/execute.sh +106 -0
- package/config/skills/agent/core/get-team-status/SKILL.md +55 -0
- package/config/skills/agent/core/handoff-task/execute.sh +150 -0
- package/config/skills/agent/core/heartbeat/{instructions.md → SKILL.md} +27 -0
- package/config/skills/agent/core/marketplace-search/{instructions.md → SKILL.md} +41 -0
- package/config/skills/agent/core/query-knowledge/{instructions.md → SKILL.md} +40 -0
- package/config/skills/agent/core/read-task/SKILL.md +56 -0
- package/config/skills/agent/core/recall/{instructions.md → SKILL.md} +38 -0
- package/config/skills/agent/core/record-learning/{instructions.md → SKILL.md} +38 -0
- package/config/skills/agent/core/register-self/SKILL.md +54 -0
- package/config/skills/agent/core/remember/{instructions.md → SKILL.md} +37 -0
- package/config/skills/agent/core/remember/execute.sh +6 -0
- package/config/skills/agent/core/reply-chat/{instructions.md → SKILL.md} +37 -0
- package/config/skills/agent/core/report-progress/{instructions.md → SKILL.md} +38 -0
- package/config/skills/agent/core/report-status/{instructions.md → SKILL.md} +39 -0
- package/config/skills/agent/core/send-chat-response/{instructions.md → SKILL.md} +37 -0
- package/config/skills/agent/core/send-message/SKILL.md +58 -0
- package/config/skills/agent/core/update-team-norm/execute.sh +115 -0
- package/config/skills/agent/desktop-app-control/{instructions.md → SKILL.md} +42 -0
- package/config/skills/agent/trend-monitor/{instructions.md → SKILL.md} +34 -0
- package/config/skills/agent/vnc-browser/{instructions.md → SKILL.md} +38 -0
- package/config/skills/auditor/score-task/SKILL.md +28 -0
- package/config/skills/auditor/score-task/execute.sh +21 -0
- package/config/skills/examples/enterprise-skill-example.json +22 -0
- package/config/skills/examples/premium-skill-example.json +22 -0
- package/config/skills/orchestrator/assign-task/SKILL.md +41 -0
- package/config/skills/orchestrator/assign-team-to-project/{instructions.md → SKILL.md} +25 -0
- package/config/skills/orchestrator/broadcast/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/broadcast-to-org/{instructions.md → SKILL.md} +25 -0
- package/config/skills/orchestrator/cancel-all-schedules/{instructions.md → SKILL.md} +5 -0
- package/config/skills/orchestrator/cancel-schedule/SKILL.md +43 -0
- package/config/skills/orchestrator/complete-task/SKILL.md +41 -0
- package/config/skills/orchestrator/create-project/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/create-team/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/delegate-task/{instructions.md → SKILL.md} +27 -0
- package/config/skills/orchestrator/delegate-task/execute.sh +31 -2
- package/config/skills/orchestrator/get-agent-logs/{instructions.md → SKILL.md} +25 -0
- package/config/skills/orchestrator/get-agent-status/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/get-project-overview/SKILL.md +41 -0
- package/config/skills/orchestrator/get-tasks/SKILL.md +41 -0
- package/config/skills/orchestrator/get-team-status/SKILL.md +43 -0
- package/config/skills/orchestrator/handle-agent-failure/{instructions.md → SKILL.md} +27 -0
- package/config/skills/orchestrator/heartbeat/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/list-schedules/{instructions.md → SKILL.md} +5 -0
- package/config/skills/orchestrator/list-subscriptions/SKILL.md +41 -0
- package/config/skills/orchestrator/query-knowledge/{instructions.md → SKILL.md} +28 -0
- package/config/skills/orchestrator/read-session-logs/{instructions.md → SKILL.md} +26 -0
- package/config/skills/orchestrator/read-system-logs/{instructions.md → SKILL.md} +25 -0
- package/config/skills/orchestrator/recall/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/record-failure/{instructions.md → SKILL.md} +27 -0
- package/config/skills/orchestrator/record-learning/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/record-success/{instructions.md → SKILL.md} +26 -0
- package/config/skills/orchestrator/register-self/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/remember/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/reply-chat/{instructions.md → SKILL.md} +25 -0
- package/config/skills/orchestrator/reply-chat/execute.sh +0 -13
- package/config/skills/orchestrator/reply-gchat/{instructions.md → SKILL.md} +25 -0
- package/config/skills/orchestrator/reply-gchat/execute.sh +0 -18
- package/config/skills/orchestrator/reply-slack/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/reply-slack/execute.sh +18 -31
- package/config/skills/orchestrator/report-bug/{instructions.md → SKILL.md} +26 -0
- package/config/skills/orchestrator/restart-crewly/{instructions.md → SKILL.md} +26 -0
- package/config/skills/orchestrator/resume-session/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/schedule-check/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/send-key/{instructions.md → SKILL.md} +26 -0
- package/config/skills/orchestrator/send-message/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/send-pdf-to-slack/{instructions.md → SKILL.md} +27 -0
- package/config/skills/orchestrator/set-goal/{instructions.md → SKILL.md} +26 -0
- package/config/skills/orchestrator/start-agent/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/start-team/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/stop-agent/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/stop-team/SKILL.md +43 -0
- package/config/skills/orchestrator/subscribe-event/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/terminate-agent/{instructions.md → SKILL.md} +24 -0
- package/config/skills/orchestrator/unsubscribe-event/SKILL.md +42 -0
- package/config/skills/orchestrator/update-focus/{instructions.md → SKILL.md} +26 -0
- package/config/skills/orchestrator/update-team/{instructions.md → SKILL.md} +24 -0
- package/config/skills/team-leader/aggregate-results/{instructions.md → SKILL.md} +26 -0
- package/config/skills/team-leader/decompose-goal/{instructions.md → SKILL.md} +26 -0
- package/config/skills/team-leader/delegate-task/{instructions.md → SKILL.md} +26 -0
- package/config/skills/team-leader/delegate-task/execute.sh +14 -6
- package/config/skills/team-leader/delegate-task/execute.test.sh +401 -0
- package/config/skills/team-leader/handle-failure/{instructions.md → SKILL.md} +27 -0
- package/config/skills/team-leader/schedule-check/{instructions.md → SKILL.md} +26 -0
- package/config/skills/team-leader/start-agent/{instructions.md → SKILL.md} +26 -0
- package/config/skills/team-leader/stop-agent/{instructions.md → SKILL.md} +26 -0
- package/config/skills/team-leader/verify-output/{instructions.md → SKILL.md} +27 -0
- package/config/templates/agent-agents-md.md +35 -0
- package/config/templates/agent-gemini-md.md +35 -0
- package/config/templates/code-review-team/team-config.json +7 -0
- package/config/templates/content-generation-team/norms/brand-guidelines.md +64 -0
- package/config/templates/content-generation-team/norms/content-review.md +66 -0
- package/config/templates/content-generation-team/norms/publish-checklist.md +58 -0
- package/config/templates/content-generation-team/team-config.json +8 -0
- package/config/templates/dev-fullstack/norms/code-commit-sop.md +40 -0
- package/config/templates/dev-fullstack/norms/quality-gates.md +35 -0
- package/config/templates/dev-fullstack/template.json +17 -1
- package/config/templates/education-smb/template.json +10 -1
- package/config/templates/insurance-smb/template.json +10 -1
- package/config/templates/research-analysis/norms/research-methodology.md +36 -0
- package/config/templates/research-analysis/norms/source-citation.md +33 -0
- package/config/templates/research-analysis/template.json +17 -1
- package/config/templates/security-audit-team.json +67 -0
- package/config/templates/social-media-ops/norms/engagement-rules.md +35 -0
- package/config/templates/social-media-ops/norms/posting-schedule.md +43 -0
- package/config/templates/social-media-ops/template.json +17 -1
- package/config/templates/video-production/template.json +10 -1
- package/dist/backend/backend/src/constants.d.ts +80 -11
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +85 -11
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts +99 -0
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.js +183 -0
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.d.ts +15 -0
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.js +27 -0
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.d.ts +70 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.js +368 -0
- package/dist/backend/backend/src/controllers/cloud/cloud-google-auth.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts +24 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +195 -3
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts +9 -4
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.js +19 -5
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/index.d.ts +1 -0
- package/dist/backend/backend/src/controllers/cloud/index.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/index.js +1 -0
- package/dist/backend/backend/src/controllers/cloud/index.js.map +1 -1
- package/dist/backend/backend/src/controllers/index.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/index.js +2 -0
- package/dist/backend/backend/src/controllers/index.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts +3 -3
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js +9 -9
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/memory/memory.controller.js +6 -6
- package/dist/backend/backend/src/controllers/memory/memory.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts +0 -7
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +2 -135
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts +14 -0
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +106 -3
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/oauth/oauth.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/oauth/oauth.routes.js +8 -1
- package/dist/backend/backend/src/controllers/oauth/oauth.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.controller.js +2 -2
- package/dist/backend/backend/src/controllers/payment/payment.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts +3 -3
- package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.routes.js +4 -14
- package/dist/backend/backend/src/controllers/payment/payment.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.types.d.ts +15 -94
- package/dist/backend/backend/src/controllers/payment/payment.types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.types.js +11 -35
- package/dist/backend/backend/src/controllers/payment/payment.types.js.map +1 -1
- package/dist/backend/backend/src/controllers/pr-review/pr-review.controller.d.ts +49 -0
- package/dist/backend/backend/src/controllers/pr-review/pr-review.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/pr-review/pr-review.controller.js +138 -0
- package/dist/backend/backend/src/controllers/pr-review/pr-review.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/pr-review/pr-review.routes.d.ts +20 -0
- package/dist/backend/backend/src/controllers/pr-review/pr-review.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/pr-review/pr-review.routes.js +30 -0
- package/dist/backend/backend/src/controllers/pr-review/pr-review.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.d.ts +12 -0
- package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.js +107 -0
- package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/request-types.d.ts +20 -1
- package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +11 -5
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts +46 -0
- 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 +598 -326
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts +12 -0
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +178 -49
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.routes.js +2 -1
- package/dist/backend/backend/src/controllers/team/team.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/template/template.controller.d.ts +11 -0
- package/dist/backend/backend/src/controllers/template/template.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/template/template.controller.js +59 -0
- package/dist/backend/backend/src/controllers/template/template.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/template/template.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/template/template.routes.js +2 -1
- package/dist/backend/backend/src/controllers/template/template.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/workspace/workspace.controller.d.ts +39 -0
- package/dist/backend/backend/src/controllers/workspace/workspace.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/workspace/workspace.controller.js +120 -0
- package/dist/backend/backend/src/controllers/workspace/workspace.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/workspace/workspace.routes.d.ts +18 -0
- package/dist/backend/backend/src/controllers/workspace/workspace.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/workspace/workspace.routes.js +27 -0
- package/dist/backend/backend/src/controllers/workspace/workspace.routes.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +108 -15
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/middleware/require-auth.middleware.d.ts +20 -0
- package/dist/backend/backend/src/middleware/require-auth.middleware.d.ts.map +1 -0
- package/dist/backend/backend/src/middleware/require-auth.middleware.js +21 -0
- package/dist/backend/backend/src/middleware/require-auth.middleware.js.map +1 -0
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +18 -5
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/quality-gate.routes.d.ts +2 -1
- package/dist/backend/backend/src/routes/modules/quality-gate.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/quality-gate.routes.js +4 -2
- package/dist/backend/backend/src/routes/modules/quality-gate.routes.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/task-management.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/task-management.routes.js +8 -0
- package/dist/backend/backend/src/routes/modules/task-management.routes.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/terminal.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/terminal.routes.js +4 -0
- package/dist/backend/backend/src/routes/modules/terminal.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/adaptive-heartbeat.service.d.ts +149 -0
- package/dist/backend/backend/src/services/agent/adaptive-heartbeat.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/adaptive-heartbeat.service.js +200 -0
- package/dist/backend/backend/src/services/agent/adaptive-heartbeat.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.d.ts +13 -0
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js +65 -6
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +57 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +259 -67
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts +66 -20
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +261 -60
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +19 -0
- 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 +80 -0
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +11 -0
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +49 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +150 -5
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +426 -18
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/approval-queue.service.d.ts +161 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/approval-queue.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/approval-queue.service.js +237 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/approval-queue.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts +74 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js +140 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +50 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +16 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +46 -5
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +23 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +37 -8
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts +3 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/index.js +3 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/index.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts +135 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js +185 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +10 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +27 -9
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts +143 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js +264 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js +2 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts +64 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +927 -39
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +166 -3
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js +55 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
- 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 +17 -2
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +37 -0
- 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 +170 -3
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/chrome-discovery.service.d.ts +108 -0
- package/dist/backend/backend/src/services/browser/chrome-discovery.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/browser/chrome-discovery.service.js +251 -0
- package/dist/backend/backend/src/services/browser/chrome-discovery.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +12 -0
- package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-client.service.js +19 -0
- package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts +191 -0
- package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js +415 -0
- package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/device-identity.service.d.ts +89 -0
- package/dist/backend/backend/src/services/cloud/device-identity.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/device-identity.service.js +148 -0
- package/dist/backend/backend/src/services/cloud/device-identity.service.js.map +1 -0
- package/dist/backend/backend/src/services/core/tracing.service.d.ts +127 -0
- package/dist/backend/backend/src/services/core/tracing.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/core/tracing.service.js +238 -0
- package/dist/backend/backend/src/services/core/tracing.service.js.map +1 -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 +11 -3
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
- package/dist/backend/backend/src/services/index.d.ts +1 -0
- package/dist/backend/backend/src/services/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/index.js +1 -0
- package/dist/backend/backend/src/services/index.js.map +1 -1
- package/dist/backend/backend/src/services/knowledge/embedding-provider.d.ts +78 -0
- package/dist/backend/backend/src/services/knowledge/embedding-provider.d.ts.map +1 -0
- package/dist/backend/backend/src/services/knowledge/embedding-provider.js +164 -0
- package/dist/backend/backend/src/services/knowledge/embedding-provider.js.map +1 -0
- package/dist/backend/backend/src/services/knowledge/index.d.ts +1 -0
- package/dist/backend/backend/src/services/knowledge/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/knowledge/index.js +1 -0
- package/dist/backend/backend/src/services/knowledge/index.js.map +1 -1
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts +91 -11
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js +244 -15
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
- package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts +331 -0
- package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/knowledge/vector-store.service.js +814 -0
- package/dist/backend/backend/src/services/knowledge/vector-store.service.js.map +1 -0
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +8 -11
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace.service.js +1 -0
- package/dist/backend/backend/src/services/marketplace/marketplace.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/context-flush.service.d.ts +73 -0
- package/dist/backend/backend/src/services/memory/context-flush.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/context-flush.service.js +131 -0
- package/dist/backend/backend/src/services/memory/context-flush.service.js.map +1 -0
- package/dist/backend/backend/src/services/memory/learning-accumulation.service.d.ts +23 -2
- package/dist/backend/backend/src/services/memory/learning-accumulation.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/learning-accumulation.service.js +78 -16
- package/dist/backend/backend/src/services/memory/learning-accumulation.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.d.ts +38 -0
- package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.js +121 -2
- package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts +29 -207
- package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js +97 -683
- package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/google-chat-initializer.js +13 -12
- package/dist/backend/backend/src/services/messaging/google-chat-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts +2 -0
- 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.d.ts +6 -23
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +48 -184
- 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 +51 -5
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/index.d.ts +1 -1
- package/dist/backend/backend/src/services/orchestrator/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/index.js +1 -1
- package/dist/backend/backend/src/services/orchestrator/index.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts +65 -0
- 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 +165 -2
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts +8 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +23 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
- package/dist/backend/backend/src/services/payment/stripe.service.d.ts +95 -43
- package/dist/backend/backend/src/services/payment/stripe.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/payment/stripe.service.js +229 -190
- package/dist/backend/backend/src/services/payment/stripe.service.js.map +1 -1
- package/dist/backend/backend/src/services/pr-review/pr-review.service.d.ts +181 -0
- package/dist/backend/backend/src/services/pr-review/pr-review.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/pr-review/pr-review.service.js +336 -0
- package/dist/backend/backend/src/services/pr-review/pr-review.service.js.map +1 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +23 -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 +88 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/index.d.ts +2 -0
- package/dist/backend/backend/src/services/session/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/index.js +2 -0
- package/dist/backend/backend/src/services/session/index.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-handoff.service.d.ts +260 -0
- package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/session/session-handoff.service.js +565 -0
- package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -0
- package/dist/backend/backend/src/services/skill/index.d.ts +1 -0
- package/dist/backend/backend/src/services/skill/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/index.js +1 -0
- package/dist/backend/backend/src/services/skill/index.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +25 -6
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js +78 -20
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-tier.service.d.ts +116 -0
- package/dist/backend/backend/src/services/skill/skill-tier.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/skill/skill-tier.service.js +155 -0
- package/dist/backend/backend/src/services/skill/skill-tier.service.js.map +1 -0
- package/dist/backend/backend/src/services/skill/skill.service.d.ts +35 -7
- package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill.service.js +128 -35
- package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +50 -47
- 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 +267 -202
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts +28 -2
- package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +69 -3
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.d.ts +19 -1
- package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.js +110 -3
- package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts +11 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js +57 -3
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/message-scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/message-scheduler.service.js +6 -0
- package/dist/backend/backend/src/services/workflow/message-scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +52 -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 +319 -6
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/types/chat.types.d.ts +2 -2
- package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/chat.types.js +18 -22
- package/dist/backend/backend/src/types/chat.types.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +38 -1
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/marketplace.types.d.ts +1 -1
- package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/scheduler.types.d.ts +4 -0
- package/dist/backend/backend/src/types/scheduler.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/scheduler.types.js.map +1 -1
- package/dist/backend/backend/src/types/skill.types.d.ts +4 -0
- package/dist/backend/backend/src/types/skill.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/skill.types.js.map +1 -1
- package/dist/backend/backend/src/types/task-tracking.types.d.ts +6 -0
- 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 +2 -0
- package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/team-template.types.js.map +1 -1
- package/dist/backend/backend/src/utils/skill-md-parser.d.ts +38 -0
- package/dist/backend/backend/src/utils/skill-md-parser.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/skill-md-parser.js +47 -0
- package/dist/backend/backend/src/utils/skill-md-parser.js.map +1 -0
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +49 -139
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js +143 -502
- package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
- package/dist/backend/config/constants.d.ts +18 -3
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +18 -3
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +80 -11
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +85 -11
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/knowledge/embedding-provider.d.ts +78 -0
- package/dist/cli/backend/src/services/knowledge/embedding-provider.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/embedding-provider.js +164 -0
- package/dist/cli/backend/src/services/knowledge/embedding-provider.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts +91 -11
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +244 -15
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
- package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts +331 -0
- package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/vector-store.service.js +814 -0
- package/dist/cli/backend/src/services/knowledge/vector-store.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/memory.service.d.ts +38 -0
- package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.js +121 -2
- package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/cli/backend/src/types/chat.types.d.ts +2 -2
- package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/chat.types.js +18 -22
- package/dist/cli/backend/src/types/chat.types.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +38 -1
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/dist/cli/backend/src/types/scheduler.types.d.ts +4 -0
- package/dist/cli/backend/src/types/scheduler.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/scheduler.types.js.map +1 -1
- package/dist/cli/backend/src/types/skill.types.d.ts +4 -0
- package/dist/cli/backend/src/types/skill.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/skill.types.js.map +1 -1
- package/dist/cli/cli/src/commands/onboard.d.ts +19 -2
- package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/onboard.js +58 -15
- package/dist/cli/cli/src/commands/onboard.js.map +1 -1
- package/dist/cli/cli/src/commands/pair.d.ts +46 -0
- package/dist/cli/cli/src/commands/pair.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/pair.js +258 -0
- package/dist/cli/cli/src/commands/pair.js.map +1 -0
- package/dist/cli/cli/src/commands/service.d.ts +86 -0
- package/dist/cli/cli/src/commands/service.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/service.js +687 -0
- package/dist/cli/cli/src/commands/service.js.map +1 -0
- package/dist/cli/cli/src/index.js +17 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/config/constants.d.ts +18 -3
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +18 -3
- package/dist/cli/config/constants.js.map +1 -1
- package/frontend/dist/assets/index-1d23cce8.js +4919 -0
- package/frontend/dist/assets/index-60a9e4ea.css +33 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +22 -9
- package/config/skills/agent/browse-stealth/skill.json +0 -20
- package/config/skills/agent/competitor-content-tracker/skill.json +0 -22
- package/config/skills/agent/computer-use/skill.json +0 -29
- package/config/skills/agent/content-calendar/skill.json +0 -22
- package/config/skills/agent/content-repurposer/skill.json +0 -22
- package/config/skills/agent/content-writer/skill.json +0 -22
- package/config/skills/agent/core/accept-task/skill.json +0 -20
- package/config/skills/agent/core/block-task/skill.json +0 -20
- package/config/skills/agent/core/check-quality-gates/skill.json +0 -20
- package/config/skills/agent/core/complete-task/skill.json +0 -20
- package/config/skills/agent/core/generate-pdf/skill.json +0 -20
- package/config/skills/agent/core/get-my-context/skill.json +0 -20
- package/config/skills/agent/core/get-sops/skill.json +0 -20
- package/config/skills/agent/core/get-team-status/instructions.md +0 -17
- package/config/skills/agent/core/get-team-status/skill.json +0 -20
- package/config/skills/agent/core/heartbeat/skill.json +0 -20
- package/config/skills/agent/core/marketplace-search/skill.json +0 -20
- package/config/skills/agent/core/query-knowledge/skill.json +0 -20
- package/config/skills/agent/core/read-task/instructions.md +0 -19
- package/config/skills/agent/core/read-task/skill.json +0 -20
- package/config/skills/agent/core/recall/skill.json +0 -20
- package/config/skills/agent/core/record-learning/skill.json +0 -20
- package/config/skills/agent/core/register-self/instructions.md +0 -18
- package/config/skills/agent/core/register-self/skill.json +0 -20
- package/config/skills/agent/core/remember/skill.json +0 -20
- package/config/skills/agent/core/reply-chat/skill.json +0 -20
- package/config/skills/agent/core/report-progress/skill.json +0 -20
- package/config/skills/agent/core/report-status/skill.json +0 -20
- package/config/skills/agent/core/send-chat-response/skill.json +0 -20
- package/config/skills/agent/core/send-message/instructions.md +0 -20
- package/config/skills/agent/core/send-message/skill.json +0 -20
- package/config/skills/agent/desktop-app-control/skill.json +0 -33
- package/config/skills/agent/trend-monitor/skill.json +0 -22
- package/config/skills/agent/vnc-browser/skill.json +0 -20
- package/config/skills/orchestrator/assign-task/instructions.md +0 -17
- package/config/skills/orchestrator/assign-task/skill.json +0 -20
- package/config/skills/orchestrator/assign-team-to-project/skill.json +0 -20
- package/config/skills/orchestrator/broadcast/skill.json +0 -20
- package/config/skills/orchestrator/broadcast-to-org/skill.json +0 -20
- package/config/skills/orchestrator/cancel-all-schedules/skill.json +0 -17
- package/config/skills/orchestrator/cancel-schedule/instructions.md +0 -19
- package/config/skills/orchestrator/cancel-schedule/skill.json +0 -20
- package/config/skills/orchestrator/complete-task/instructions.md +0 -17
- package/config/skills/orchestrator/complete-task/skill.json +0 -20
- package/config/skills/orchestrator/create-project/skill.json +0 -20
- package/config/skills/orchestrator/create-team/skill.json +0 -20
- package/config/skills/orchestrator/delegate-task/skill.json +0 -20
- package/config/skills/orchestrator/get-agent-logs/skill.json +0 -20
- package/config/skills/orchestrator/get-agent-status/skill.json +0 -20
- package/config/skills/orchestrator/get-project-overview/instructions.md +0 -17
- package/config/skills/orchestrator/get-project-overview/skill.json +0 -20
- package/config/skills/orchestrator/get-tasks/instructions.md +0 -17
- package/config/skills/orchestrator/get-tasks/skill.json +0 -20
- package/config/skills/orchestrator/get-team-status/instructions.md +0 -17
- package/config/skills/orchestrator/get-team-status/skill.json +0 -20
- package/config/skills/orchestrator/handle-agent-failure/skill.json +0 -20
- package/config/skills/orchestrator/heartbeat/skill.json +0 -20
- package/config/skills/orchestrator/list-schedules/skill.json +0 -12
- package/config/skills/orchestrator/list-subscriptions/instructions.md +0 -17
- package/config/skills/orchestrator/list-subscriptions/skill.json +0 -20
- package/config/skills/orchestrator/query-knowledge/skill.json +0 -20
- package/config/skills/orchestrator/read-session-logs/skill.json +0 -20
- package/config/skills/orchestrator/read-system-logs/skill.json +0 -20
- package/config/skills/orchestrator/recall/skill.json +0 -20
- package/config/skills/orchestrator/record-failure/skill.json +0 -20
- package/config/skills/orchestrator/record-learning/skill.json +0 -20
- package/config/skills/orchestrator/record-success/skill.json +0 -20
- package/config/skills/orchestrator/register-self/skill.json +0 -20
- package/config/skills/orchestrator/remember/skill.json +0 -20
- package/config/skills/orchestrator/reply-chat/skill.json +0 -20
- package/config/skills/orchestrator/reply-gchat/skill.json +0 -20
- package/config/skills/orchestrator/reply-slack/skill.json +0 -20
- package/config/skills/orchestrator/report-bug/skill.json +0 -20
- package/config/skills/orchestrator/restart-crewly/skill.json +0 -20
- package/config/skills/orchestrator/resume-session/skill.json +0 -20
- package/config/skills/orchestrator/schedule-check/skill.json +0 -20
- package/config/skills/orchestrator/send-key/skill.json +0 -20
- package/config/skills/orchestrator/send-message/skill.json +0 -20
- package/config/skills/orchestrator/send-pdf-to-slack/skill.json +0 -20
- package/config/skills/orchestrator/set-goal/skill.json +0 -20
- package/config/skills/orchestrator/start-agent/skill.json +0 -20
- package/config/skills/orchestrator/start-team/skill.json +0 -20
- package/config/skills/orchestrator/stop-agent/skill.json +0 -20
- package/config/skills/orchestrator/stop-team/instructions.md +0 -19
- package/config/skills/orchestrator/stop-team/skill.json +0 -20
- package/config/skills/orchestrator/subscribe-event/skill.json +0 -20
- package/config/skills/orchestrator/terminate-agent/skill.json +0 -20
- package/config/skills/orchestrator/unsubscribe-event/instructions.md +0 -19
- package/config/skills/orchestrator/unsubscribe-event/skill.json +0 -20
- package/config/skills/orchestrator/update-focus/skill.json +0 -20
- package/config/skills/orchestrator/update-team/skill.json +0 -20
- package/config/skills/team-leader/aggregate-results/skill.json +0 -20
- package/config/skills/team-leader/decompose-goal/skill.json +0 -20
- package/config/skills/team-leader/delegate-task/skill.json +0 -20
- package/config/skills/team-leader/handle-failure/skill.json +0 -20
- package/config/skills/team-leader/schedule-check/skill.json +0 -20
- package/config/skills/team-leader/start-agent/skill.json +0 -20
- package/config/skills/team-leader/stop-agent/skill.json +0 -20
- package/config/skills/team-leader/verify-output/skill.json +0 -20
- package/frontend/dist/assets/index-0e5673b0.css +0 -33
- package/frontend/dist/assets/index-adae9eb6.js +0 -5213
|
@@ -56,6 +56,8 @@ export class AgentRegistrationService {
|
|
|
56
56
|
// In-process Crewly Agent runtimes (sessionName → runtime instance).
|
|
57
57
|
// Used for crewly-agent runtimeType agents that run without PTY sessions.
|
|
58
58
|
inProcessRuntimes = new Map();
|
|
59
|
+
/** #167: Optional scheduler service for DLQ drain on agent activation. */
|
|
60
|
+
schedulerService = null;
|
|
59
61
|
// Terminal patterns are now centralized in TERMINAL_PATTERNS constant
|
|
60
62
|
// Keeping prompt chars as static getter for backwards compatibility within the class
|
|
61
63
|
static get CLAUDE_PROMPT_INDICATORS() {
|
|
@@ -76,6 +78,14 @@ export class AgentRegistrationService {
|
|
|
76
78
|
}
|
|
77
79
|
});
|
|
78
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* #167: Inject scheduler service for dead-letter queue drain on agent activation.
|
|
83
|
+
*
|
|
84
|
+
* @param scheduler - Scheduler service with drainDeadLetterQueue method
|
|
85
|
+
*/
|
|
86
|
+
setSchedulerService(scheduler) {
|
|
87
|
+
this.schedulerService = scheduler;
|
|
88
|
+
}
|
|
79
89
|
/**
|
|
80
90
|
* Cancel a pending registration prompt for a session.
|
|
81
91
|
* Called by RuntimeExitMonitorService when a runtime exit is detected.
|
|
@@ -159,8 +169,52 @@ export class AgentRegistrationService {
|
|
|
159
169
|
error: error instanceof Error ? error.message : String(error),
|
|
160
170
|
});
|
|
161
171
|
}
|
|
172
|
+
// Check in-process runtimes before defaulting to CLAUDE_CODE.
|
|
173
|
+
// crewly-agent runtimes may not have a team config entry yet.
|
|
174
|
+
if (this.inProcessRuntimes.has(sessionName)) {
|
|
175
|
+
return RUNTIME_TYPES.CREWLY_AGENT;
|
|
176
|
+
}
|
|
162
177
|
return RUNTIME_TYPES.CLAUDE_CODE;
|
|
163
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Route a crewly-agent in-process response to the originating chat conversation.
|
|
181
|
+
*
|
|
182
|
+
* PTY-based runtimes emit [NOTIFY] markers that the terminal gateway parses.
|
|
183
|
+
* In-process crewly-agents have no terminal output, so this method provides
|
|
184
|
+
* the equivalent routing for their text responses.
|
|
185
|
+
*
|
|
186
|
+
* @param sessionName - Agent session that produced the response
|
|
187
|
+
* @param text - Response text from the agent
|
|
188
|
+
* @param conversationId - Chat conversation to route the response to
|
|
189
|
+
*/
|
|
190
|
+
routeInProcessResponseToChat(sessionName, text, conversationId) {
|
|
191
|
+
// Lazy import to avoid circular dependencies at module load time
|
|
192
|
+
import('../../websocket/chat.gateway.js')
|
|
193
|
+
.then(({ getChatGateway }) => {
|
|
194
|
+
const chatGateway = getChatGateway();
|
|
195
|
+
if (!chatGateway) {
|
|
196
|
+
this.logger.debug('ChatGateway not available, skipping response routing', {
|
|
197
|
+
sessionName, conversationId,
|
|
198
|
+
});
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
return chatGateway.processNotifyMessage(sessionName, text, conversationId, { source: 'crewly-agent' });
|
|
202
|
+
})
|
|
203
|
+
.then((chatMessage) => {
|
|
204
|
+
if (chatMessage) {
|
|
205
|
+
this.logger.debug('Routed in-process agent response to chat', {
|
|
206
|
+
sessionName, conversationId,
|
|
207
|
+
messageId: typeof chatMessage === 'object' ? chatMessage.id : undefined,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
})
|
|
211
|
+
.catch((err) => {
|
|
212
|
+
this.logger.warn('Failed to route in-process agent response to chat', {
|
|
213
|
+
sessionName, conversationId,
|
|
214
|
+
error: err instanceof Error ? err.message : String(err),
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
}
|
|
164
218
|
/**
|
|
165
219
|
* Find the project root by looking for package.json
|
|
166
220
|
*/
|
|
@@ -270,6 +324,19 @@ export class AgentRegistrationService {
|
|
|
270
324
|
getInProcessRuntime(sessionName) {
|
|
271
325
|
return this.inProcessRuntimes.get(sessionName);
|
|
272
326
|
}
|
|
327
|
+
/**
|
|
328
|
+
* Check if an in-process Crewly Agent runtime is active and ready for a given session.
|
|
329
|
+
*
|
|
330
|
+
* Used by team status resolution to correctly report active status for
|
|
331
|
+
* crewly-agent runtimes that have no PTY session.
|
|
332
|
+
*
|
|
333
|
+
* @param sessionName - The session name to check
|
|
334
|
+
* @returns True if an in-process runtime exists and is ready
|
|
335
|
+
*/
|
|
336
|
+
isInProcessRuntimeActive(sessionName) {
|
|
337
|
+
const runtime = this.inProcessRuntimes.get(sessionName);
|
|
338
|
+
return runtime !== undefined && runtime.isReady();
|
|
339
|
+
}
|
|
273
340
|
/**
|
|
274
341
|
* Get the check interval based on environment.
|
|
275
342
|
* Uses shorter intervals in test environment for faster tests.
|
|
@@ -397,7 +464,7 @@ export class AgentRegistrationService {
|
|
|
397
464
|
// Clear any pending slash command from detection. Claude detection already
|
|
398
465
|
// exits slash mode. Gemini CLI: skip — Ctrl+C at empty prompt exits CLI,
|
|
399
466
|
// Escape defocuses TUI, Ctrl+U is ignored. The prompt should be clean.
|
|
400
|
-
const prompt = await this.loadRegistrationPrompt(role, sessionName, memberId);
|
|
467
|
+
const prompt = await this.loadRegistrationPrompt(role, sessionName, memberId, runtimeType);
|
|
401
468
|
const promptDelivered = await this.sendPromptRobustly(sessionName, prompt, runtimeType);
|
|
402
469
|
if (!promptDelivered) {
|
|
403
470
|
this.logger.warn('Failed to deliver registration prompt', { sessionName, role });
|
|
@@ -443,7 +510,7 @@ export class AgentRegistrationService {
|
|
|
443
510
|
let promptFilePath;
|
|
444
511
|
if (runtimeType === RUNTIME_TYPES.CLAUDE_CODE) {
|
|
445
512
|
try {
|
|
446
|
-
const prompt = await this.loadRegistrationPrompt(role, sessionName, memberId);
|
|
513
|
+
const prompt = await this.loadRegistrationPrompt(role, sessionName, memberId, runtimeType);
|
|
447
514
|
promptFilePath = await this.writePromptFile(sessionName, prompt);
|
|
448
515
|
}
|
|
449
516
|
catch (promptError) {
|
|
@@ -518,16 +585,6 @@ export class AgentRegistrationService {
|
|
|
518
585
|
role,
|
|
519
586
|
runtimeType,
|
|
520
587
|
});
|
|
521
|
-
// Register Gemini CLI sessions with terminal gateway so NOTIFY
|
|
522
|
-
// marker processing is skipped (Gemini TUI garbles markers).
|
|
523
|
-
if (runtimeType === RUNTIME_TYPES.GEMINI_CLI) {
|
|
524
|
-
import('../../websocket/terminal.gateway.js').then(({ getTerminalGateway }) => {
|
|
525
|
-
const tg = getTerminalGateway();
|
|
526
|
-
if (tg) {
|
|
527
|
-
tg.registerGeminiCliSession(sessionName);
|
|
528
|
-
}
|
|
529
|
-
}).catch(() => { });
|
|
530
|
-
}
|
|
531
588
|
// Background: detect and store session ID for resume-on-restart
|
|
532
589
|
if (runtimeType === RUNTIME_TYPES.CLAUDE_CODE) {
|
|
533
590
|
const detectPath = projectPath || process.cwd();
|
|
@@ -605,6 +662,60 @@ export class AgentRegistrationService {
|
|
|
605
662
|
});
|
|
606
663
|
}
|
|
607
664
|
}
|
|
665
|
+
/**
|
|
666
|
+
* Provision the runtime-specific project config file.
|
|
667
|
+
*
|
|
668
|
+
* Each agent CLI reads a different file for project configuration:
|
|
669
|
+
* - Claude Code → .crewly/CLAUDE.md
|
|
670
|
+
* - Gemini CLI → GEMINI.md (project root)
|
|
671
|
+
* - Codex → AGENTS.md (project root)
|
|
672
|
+
*
|
|
673
|
+
* Uses 'wx' flag to avoid overwriting existing files.
|
|
674
|
+
*
|
|
675
|
+
* @param projectPath - Project directory path
|
|
676
|
+
* @param runtimeType - Agent runtime type
|
|
677
|
+
*/
|
|
678
|
+
async provisionRuntimeConfigFile(projectPath, runtimeType) {
|
|
679
|
+
// Map runtime type to template file and output path
|
|
680
|
+
const configMap = {
|
|
681
|
+
[RUNTIME_TYPES.CLAUDE_CODE]: {
|
|
682
|
+
template: 'agent-claude-md.md',
|
|
683
|
+
outputPath: path.join(projectPath, '.crewly', 'CLAUDE.md'),
|
|
684
|
+
},
|
|
685
|
+
[RUNTIME_TYPES.GEMINI_CLI]: {
|
|
686
|
+
template: 'agent-gemini-md.md',
|
|
687
|
+
outputPath: path.join(projectPath, 'GEMINI.md'),
|
|
688
|
+
},
|
|
689
|
+
[RUNTIME_TYPES.CODEX_CLI]: {
|
|
690
|
+
template: 'agent-agents-md.md',
|
|
691
|
+
outputPath: path.join(projectPath, 'AGENTS.md'),
|
|
692
|
+
},
|
|
693
|
+
};
|
|
694
|
+
const config = configMap[runtimeType];
|
|
695
|
+
if (!config)
|
|
696
|
+
return; // Unknown runtime — skip
|
|
697
|
+
try {
|
|
698
|
+
// Ensure parent directory exists
|
|
699
|
+
const dir = path.dirname(config.outputPath);
|
|
700
|
+
await mkdir(dir, { recursive: true });
|
|
701
|
+
const templatePath = path.join(this.projectRoot, 'config', 'templates', config.template);
|
|
702
|
+
let content = this.promptCache.get(templatePath);
|
|
703
|
+
if (!content) {
|
|
704
|
+
content = await readFile(templatePath, 'utf8');
|
|
705
|
+
this.promptCache.set(templatePath, content);
|
|
706
|
+
}
|
|
707
|
+
await writeFile(config.outputPath, content, { flag: 'wx' }).catch(() => {
|
|
708
|
+
// File already exists — no action needed
|
|
709
|
+
});
|
|
710
|
+
}
|
|
711
|
+
catch (err) {
|
|
712
|
+
this.logger.warn('Could not provision runtime config file (non-critical)', {
|
|
713
|
+
runtimeType,
|
|
714
|
+
outputPath: config.outputPath,
|
|
715
|
+
error: err instanceof Error ? err.message : String(err),
|
|
716
|
+
});
|
|
717
|
+
}
|
|
718
|
+
}
|
|
608
719
|
/**
|
|
609
720
|
* Send registration prompt asynchronously (non-blocking).
|
|
610
721
|
* Uses an AbortController so the operation can be cancelled if the
|
|
@@ -618,7 +729,7 @@ export class AgentRegistrationService {
|
|
|
618
729
|
this.logger.info('Loading registration prompt', { sessionName, role, runtimeType });
|
|
619
730
|
if (controller.signal.aborted)
|
|
620
731
|
return;
|
|
621
|
-
const prompt = await this.loadRegistrationPrompt(role, sessionName, memberId);
|
|
732
|
+
const prompt = await this.loadRegistrationPrompt(role, sessionName, memberId, runtimeType);
|
|
622
733
|
this.logger.info('Registration prompt loaded, sending to agent', {
|
|
623
734
|
sessionName, role, runtimeType, promptLength: prompt.length,
|
|
624
735
|
});
|
|
@@ -687,7 +798,7 @@ export class AgentRegistrationService {
|
|
|
687
798
|
let promptFilePath;
|
|
688
799
|
if (runtimeType === RUNTIME_TYPES.CLAUDE_CODE) {
|
|
689
800
|
try {
|
|
690
|
-
const prompt = await this.loadRegistrationPrompt(role, sessionName, memberId);
|
|
801
|
+
const prompt = await this.loadRegistrationPrompt(role, sessionName, memberId, runtimeType);
|
|
691
802
|
promptFilePath = await this.writePromptFile(sessionName, prompt);
|
|
692
803
|
}
|
|
693
804
|
catch (promptError) {
|
|
@@ -838,10 +949,59 @@ export class AgentRegistrationService {
|
|
|
838
949
|
}
|
|
839
950
|
return true;
|
|
840
951
|
}
|
|
952
|
+
/**
|
|
953
|
+
* Register a crewly-agent member as active by updating its team config directly.
|
|
954
|
+
* In-process agents cannot run bash scripts, so this performs the registration
|
|
955
|
+
* that the register-self skill would normally do for PTY-based runtimes.
|
|
956
|
+
*
|
|
957
|
+
* @param sessionName - Agent session name
|
|
958
|
+
* @param role - Agent role
|
|
959
|
+
* @param memberId - Optional member UUID
|
|
960
|
+
* @returns True if registration succeeded
|
|
961
|
+
*/
|
|
962
|
+
async registerMemberActive(sessionName, role, memberId) {
|
|
963
|
+
try {
|
|
964
|
+
const teams = await this.storageService.getTeams();
|
|
965
|
+
for (const team of teams) {
|
|
966
|
+
const member = team.members.find((m) => (m.sessionName === sessionName) ||
|
|
967
|
+
(memberId !== undefined && m.id === memberId));
|
|
968
|
+
if (member) {
|
|
969
|
+
member.agentStatus = 'active';
|
|
970
|
+
member.workingStatus = 'idle';
|
|
971
|
+
member.updatedAt = new Date().toISOString();
|
|
972
|
+
// Pre-populate sessionName so register_self tool can find this member
|
|
973
|
+
if (!member.sessionName && sessionName) {
|
|
974
|
+
member.sessionName = sessionName;
|
|
975
|
+
}
|
|
976
|
+
await this.storageService.saveTeam(team);
|
|
977
|
+
this.logger.info('Member registered as active', { sessionName, teamId: team.id });
|
|
978
|
+
// #167: Drain dead-letter queue for newly active agent
|
|
979
|
+
if (this.schedulerService) {
|
|
980
|
+
this.schedulerService.drainDeadLetterQueue(sessionName).catch((err) => {
|
|
981
|
+
this.logger.warn('Failed to drain DLQ on activation (non-critical)', {
|
|
982
|
+
sessionName,
|
|
983
|
+
error: err.message,
|
|
984
|
+
});
|
|
985
|
+
});
|
|
986
|
+
}
|
|
987
|
+
return true;
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
this.logger.warn('Could not find member to register as active', { sessionName, memberId });
|
|
991
|
+
return false;
|
|
992
|
+
}
|
|
993
|
+
catch (error) {
|
|
994
|
+
this.logger.error('Failed to register member as active', {
|
|
995
|
+
sessionName,
|
|
996
|
+
error: error instanceof Error ? error.message : String(error),
|
|
997
|
+
});
|
|
998
|
+
return false;
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
841
1001
|
/**
|
|
842
1002
|
* Load registration prompt from config files (with caching to prevent file I/O contention)
|
|
843
1003
|
*/
|
|
844
|
-
async loadRegistrationPrompt(role, sessionName, memberId) {
|
|
1004
|
+
async loadRegistrationPrompt(role, sessionName, memberId, runtimeType = RUNTIME_TYPES.CLAUDE_CODE) {
|
|
845
1005
|
try {
|
|
846
1006
|
// Cache key is role only - the template file is the same regardless of memberId
|
|
847
1007
|
const cacheKey = role;
|
|
@@ -895,30 +1055,11 @@ export class AgentRegistrationService {
|
|
|
895
1055
|
catch {
|
|
896
1056
|
// Non-critical - use default project path
|
|
897
1057
|
}
|
|
898
|
-
// Write
|
|
1058
|
+
// Write runtime-specific project config file so the agent CLI
|
|
899
1059
|
// recognizes Crewly as a legitimate project configuration (fixes #33)
|
|
1060
|
+
// Claude Code → .crewly/CLAUDE.md, Gemini CLI → GEMINI.md, Codex → AGENTS.md
|
|
900
1061
|
if (role !== ORCHESTRATOR_ROLE) {
|
|
901
|
-
|
|
902
|
-
const crewlyDir = path.join(projectPath, '.crewly');
|
|
903
|
-
const claudeMdPath = path.join(crewlyDir, 'CLAUDE.md');
|
|
904
|
-
await mkdir(crewlyDir, { recursive: true });
|
|
905
|
-
const templatePath = path.join(this.projectRoot, 'config', 'templates', 'agent-claude-md.md');
|
|
906
|
-
let claudeMdContent = this.promptCache.get(templatePath);
|
|
907
|
-
if (!claudeMdContent) {
|
|
908
|
-
claudeMdContent = await readFile(templatePath, 'utf8');
|
|
909
|
-
this.promptCache.set(templatePath, claudeMdContent);
|
|
910
|
-
}
|
|
911
|
-
await writeFile(claudeMdPath, claudeMdContent, { flag: 'wx' }).catch(() => {
|
|
912
|
-
// File already exists — no action needed
|
|
913
|
-
});
|
|
914
|
-
}
|
|
915
|
-
catch (claudeMdError) {
|
|
916
|
-
this.logger.warn('Could not provision .crewly/CLAUDE.md for agent trust (non-critical)', {
|
|
917
|
-
templatePath: path.join(this.projectRoot, 'config', 'templates', 'agent-claude-md.md'),
|
|
918
|
-
projectPath,
|
|
919
|
-
error: claudeMdError instanceof Error ? claudeMdError.message : String(claudeMdError),
|
|
920
|
-
});
|
|
921
|
-
}
|
|
1062
|
+
await this.provisionRuntimeConfigFile(projectPath, runtimeType);
|
|
922
1063
|
}
|
|
923
1064
|
// Replace project path placeholder (must happen after project path lookup above)
|
|
924
1065
|
prompt = prompt.replace(/\{\{PROJECT_PATH\}\}/g, projectPath);
|
|
@@ -941,6 +1082,7 @@ export class AgentRegistrationService {
|
|
|
941
1082
|
name: subMember.name,
|
|
942
1083
|
sessionName: subMember.sessionName || '',
|
|
943
1084
|
role: subMember.role || 'developer',
|
|
1085
|
+
memberId: subMember.id || subId,
|
|
944
1086
|
};
|
|
945
1087
|
})
|
|
946
1088
|
.filter((s) => s !== null);
|
|
@@ -992,6 +1134,19 @@ export class AgentRegistrationService {
|
|
|
992
1134
|
error: briefingError instanceof Error ? briefingError.message : String(briefingError),
|
|
993
1135
|
});
|
|
994
1136
|
}
|
|
1137
|
+
// Inject mandatory session recovery protocol (recall + get-my-context)
|
|
1138
|
+
try {
|
|
1139
|
+
const recoveryBuilder = new PromptBuilderService(this.projectRoot);
|
|
1140
|
+
const recoverySection = recoveryBuilder.buildSessionRecoverySection(sessionName, role, projectPath);
|
|
1141
|
+
prompt += `\n\n---\n\n${recoverySection}`;
|
|
1142
|
+
this.logger.info('Session recovery protocol injected into prompt', { sessionName, role });
|
|
1143
|
+
}
|
|
1144
|
+
catch (recoveryError) {
|
|
1145
|
+
this.logger.warn('Failed to inject session recovery protocol (non-critical)', {
|
|
1146
|
+
sessionName,
|
|
1147
|
+
error: recoveryError instanceof Error ? recoveryError.message : String(recoveryError),
|
|
1148
|
+
});
|
|
1149
|
+
}
|
|
995
1150
|
// Append identity section so the agent knows its session name and project path
|
|
996
1151
|
prompt += `\n\n---\n\n## Your Identity\n- **Session Name:** ${sessionName}\n- **Project Path:** ${projectPath}`;
|
|
997
1152
|
if (memberId) {
|
|
@@ -1199,7 +1354,7 @@ After checking in, just say "Ready for tasks" and wait for me to send you work.`
|
|
|
1199
1354
|
});
|
|
1200
1355
|
}
|
|
1201
1356
|
// Step 3: Send system prompt with robust delivery mechanism
|
|
1202
|
-
const prompt = await this.loadRegistrationPrompt(role, sessionName, memberId);
|
|
1357
|
+
const prompt = await this.loadRegistrationPrompt(role, sessionName, memberId, runtimeType);
|
|
1203
1358
|
const promptDelivered = await this.sendPromptRobustly(sessionName, prompt, runtimeType);
|
|
1204
1359
|
if (!promptDelivered) {
|
|
1205
1360
|
this.logger.warn('Failed to deliver system prompt reliably', {
|
|
@@ -1549,23 +1704,35 @@ After checking in, just say "Ready for tasks" and wait for me to send you work.`
|
|
|
1549
1704
|
const crewlyRuntime = this.createRuntimeService(runtimeType);
|
|
1550
1705
|
// Determine role name for system prompt lookup
|
|
1551
1706
|
const roleName = role === ORCHESTRATOR_ROLE ? 'orchestrator' : role.toLowerCase().replace(/\s+/g, '-');
|
|
1552
|
-
await crewlyRuntime.initializeInProcess(sessionName,
|
|
1707
|
+
await crewlyRuntime.initializeInProcess(sessionName, { projectPath }, roleName);
|
|
1553
1708
|
// Track the in-process runtime for message routing
|
|
1554
1709
|
this.inProcessRuntimes.set(sessionName, crewlyRuntime);
|
|
1555
|
-
//
|
|
1710
|
+
// Auto-register agent as active — crewly-agent cannot run bash scripts,
|
|
1711
|
+
// so we register on its behalf instead of relying on the register_self tool.
|
|
1556
1712
|
try {
|
|
1557
|
-
const
|
|
1558
|
-
this.logger.info('
|
|
1559
|
-
sessionName,
|
|
1713
|
+
const registerResult = await this.registerMemberActive(sessionName, role, memberId);
|
|
1714
|
+
this.logger.info('Auto-registered crewly-agent as active', {
|
|
1715
|
+
sessionName, role, success: registerResult,
|
|
1560
1716
|
});
|
|
1561
|
-
await crewlyRuntime.handleMessage(prompt);
|
|
1562
1717
|
}
|
|
1563
|
-
catch (
|
|
1564
|
-
this.logger.warn('
|
|
1718
|
+
catch (registerErr) {
|
|
1719
|
+
this.logger.warn('Auto-registration failed (non-fatal)', {
|
|
1565
1720
|
sessionName,
|
|
1566
|
-
error:
|
|
1721
|
+
error: registerErr instanceof Error ? registerErr.message : String(registerErr),
|
|
1567
1722
|
});
|
|
1568
1723
|
}
|
|
1724
|
+
// For crewly-agent, the system prompt is already loaded during initializeInProcess().
|
|
1725
|
+
// Do NOT deliver the full registration prompt as a message — that would trigger
|
|
1726
|
+
// a redundant generateText call (60K chars → rate limits). Instead, send a
|
|
1727
|
+
// lightweight activation message that tells the agent to start working.
|
|
1728
|
+
crewlyRuntime.handleMessage(`You are now active as "${role}" (session: ${sessionName}). ` +
|
|
1729
|
+
'Your system prompt is already loaded. Begin by calling register_self, ' +
|
|
1730
|
+
'then wait for tasks.').catch(promptError => {
|
|
1731
|
+
this.logger.warn('Initial activation message failed (non-fatal for crewly-agent)', {
|
|
1732
|
+
sessionName,
|
|
1733
|
+
error: promptError instanceof Error ? promptError.message : String(promptError),
|
|
1734
|
+
});
|
|
1735
|
+
});
|
|
1569
1736
|
// Start context window monitoring if applicable
|
|
1570
1737
|
if (role !== ORCHESTRATOR_ROLE && config.teamId && config.memberId) {
|
|
1571
1738
|
ContextWindowMonitorService.getInstance().startSessionMonitoring(sessionName, config.memberId, config.teamId, role, runtimeType);
|
|
@@ -1627,6 +1794,8 @@ After checking in, just say "Ready for tasks" and wait for me to send you work.`
|
|
|
1627
1794
|
await sessionHelper.setEnvironmentVariable(sessionName, ENV_CONSTANTS.CREWLY_SESSION_NAME, sessionName);
|
|
1628
1795
|
await sessionHelper.setEnvironmentVariable(sessionName, ENV_CONSTANTS.CREWLY_ROLE, role);
|
|
1629
1796
|
await sessionHelper.setEnvironmentVariable(sessionName, ENV_CONSTANTS.CREWLY_API_URL, `http://localhost:${WEB_CONSTANTS.PORTS.BACKEND}`);
|
|
1797
|
+
// #187: Set project path so memory skills can auto-inject it
|
|
1798
|
+
await sessionHelper.setEnvironmentVariable(sessionName, ENV_CONSTANTS.CREWLY_PROJECT_PATH, cwdToUse);
|
|
1630
1799
|
// Inject API keys from settings (with override chain) for all runtimes
|
|
1631
1800
|
const settingsService = getSettingsService();
|
|
1632
1801
|
const runtimeContext = { runtime: runtimeType };
|
|
@@ -1669,16 +1838,6 @@ After checking in, just say "Ready for tasks" and wait for me to send you work.`
|
|
|
1669
1838
|
}
|
|
1670
1839
|
// Start OAuth relogin monitoring for newly created session
|
|
1671
1840
|
OAuthReloginMonitorService.getInstance().startMonitoring(sessionName, runtimeType);
|
|
1672
|
-
// Register Gemini CLI sessions with terminal gateway so NOTIFY
|
|
1673
|
-
// marker processing is skipped (Gemini TUI garbles markers).
|
|
1674
|
-
if (runtimeType === RUNTIME_TYPES.GEMINI_CLI) {
|
|
1675
|
-
import('../../websocket/terminal.gateway.js').then(({ getTerminalGateway }) => {
|
|
1676
|
-
const tg = getTerminalGateway();
|
|
1677
|
-
if (tg) {
|
|
1678
|
-
tg.registerGeminiCliSession(sessionName);
|
|
1679
|
-
}
|
|
1680
|
-
}).catch(() => { });
|
|
1681
|
-
}
|
|
1682
1841
|
return {
|
|
1683
1842
|
success: true,
|
|
1684
1843
|
sessionName,
|
|
@@ -1831,28 +1990,61 @@ After checking in, just say "Ready for tasks" and wait for me to send you work.`
|
|
|
1831
1990
|
}
|
|
1832
1991
|
// ===== In-process Crewly Agent delivery =====
|
|
1833
1992
|
// Route directly to the in-process runtime, bypassing PTY entirely.
|
|
1834
|
-
|
|
1835
|
-
|
|
1993
|
+
// Fire-and-forget: mirrors PTY runtimes where the write returns immediately.
|
|
1994
|
+
// The LLM processes the message asynchronously in the background.
|
|
1995
|
+
//
|
|
1996
|
+
// IMPORTANT: Always check inProcessRuntimes map first, regardless of
|
|
1997
|
+
// the runtimeType parameter. This makes delivery robust against runtime
|
|
1998
|
+
// type misresolution — e.g., when storage lookup fails and defaults to
|
|
1999
|
+
// claude-code for what is actually a crewly-agent session. Without this
|
|
2000
|
+
// fallback, messages to crewly-agent sessions silently fail when routed
|
|
2001
|
+
// through the PTY path (no PTY session exists).
|
|
2002
|
+
const crewlyRuntime = this.inProcessRuntimes.get(sessionName);
|
|
2003
|
+
if (crewlyRuntime || runtimeType === RUNTIME_TYPES.CREWLY_AGENT) {
|
|
1836
2004
|
if (!crewlyRuntime || !crewlyRuntime.isReady()) {
|
|
1837
2005
|
return {
|
|
1838
2006
|
success: false,
|
|
1839
2007
|
error: `Crewly Agent runtime for '${sessionName}' is not initialized`,
|
|
1840
2008
|
};
|
|
1841
2009
|
}
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
2010
|
+
// Extract conversationId from [CHAT:xxx] prefix for response routing
|
|
2011
|
+
const chatPrefixMatch = message.match(/^\[CHAT:([^\]]+)\]\s*/);
|
|
2012
|
+
const incomingConversationId = chatPrefixMatch?.[1];
|
|
2013
|
+
// Extract Slack context from [SLACK:channelId:threadTs] marker if present (Bug 5).
|
|
2014
|
+
// This allows crewly-agent to auto-fill reply_slack with the correct thread.
|
|
2015
|
+
let slackMetadata;
|
|
2016
|
+
const slackPrefixMatch = message.match(/\[SLACK:([^:\]]+)(?::([^\]]+))?\]/);
|
|
2017
|
+
if (slackPrefixMatch) {
|
|
2018
|
+
slackMetadata = { channelId: slackPrefixMatch[1] };
|
|
2019
|
+
if (slackPrefixMatch[2])
|
|
2020
|
+
slackMetadata.threadTs = slackPrefixMatch[2];
|
|
2021
|
+
}
|
|
2022
|
+
// Process message asynchronously — don't block the caller
|
|
2023
|
+
crewlyRuntime.handleMessage(message, slackMetadata)
|
|
2024
|
+
.then((result) => {
|
|
2025
|
+
this.logger.info('Crewly Agent finished processing message', {
|
|
1845
2026
|
sessionName, messageLength: message.length,
|
|
2027
|
+
responseLength: result.text?.length ?? 0,
|
|
1846
2028
|
});
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
2029
|
+
// Route response text back to the originating chat conversation.
|
|
2030
|
+
// Without this, crewly-agent responses are discarded — the agent
|
|
2031
|
+
// has no terminal output for the NOTIFY pathway used by PTY runtimes.
|
|
2032
|
+
if (result.text && incomingConversationId) {
|
|
2033
|
+
this.routeInProcessResponseToChat(sessionName, result.text, incomingConversationId);
|
|
2034
|
+
}
|
|
2035
|
+
})
|
|
2036
|
+
.catch(agentError => {
|
|
1850
2037
|
const errMsg = agentError instanceof Error ? agentError.message : String(agentError);
|
|
1851
2038
|
this.logger.error('Crewly Agent message handling failed', {
|
|
1852
2039
|
sessionName, error: errMsg,
|
|
2040
|
+
messageLength: message.length,
|
|
2041
|
+
messagePreview: message.substring(0, 200),
|
|
1853
2042
|
});
|
|
1854
|
-
|
|
1855
|
-
|
|
2043
|
+
});
|
|
2044
|
+
this.logger.info('Message dispatched to in-process Crewly Agent', {
|
|
2045
|
+
sessionName, messageLength: message.length,
|
|
2046
|
+
});
|
|
2047
|
+
return { success: true, message: 'Message delivered to Crewly Agent' };
|
|
1856
2048
|
}
|
|
1857
2049
|
// Get session helper once for this method
|
|
1858
2050
|
const sessionHelper = await this.getSessionHelper();
|