crewly 1.2.4 → 1.2.6
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/config/constants.ts +4 -2
- package/config/roles/auditor/prompt.md +84 -0
- package/config/roles/orchestrator/prompt.md +62 -7
- package/config/runtime_scripts/runtime-config.json +5 -5
- package/config/skills/orchestrator/cancel-all-schedules/execute.sh +24 -0
- package/config/skills/orchestrator/cancel-all-schedules/instructions.md +23 -0
- package/config/skills/orchestrator/cancel-all-schedules/skill.json +17 -0
- package/config/skills/orchestrator/list-schedules/execute.sh +19 -0
- package/config/skills/orchestrator/list-schedules/instructions.md +24 -0
- package/config/skills/orchestrator/list-schedules/skill.json +12 -0
- package/dist/backend/backend/src/constants.d.ts +53 -13
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +54 -16
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/auditor/auditor.controller.d.ts +37 -0
- package/dist/backend/backend/src/controllers/auditor/auditor.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/auditor/auditor.controller.js +64 -0
- package/dist/backend/backend/src/controllers/auditor/auditor.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/auditor/auditor.routes.d.ts +15 -0
- package/dist/backend/backend/src/controllers/auditor/auditor.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/auditor/auditor.routes.js +23 -0
- package/dist/backend/backend/src/controllers/auditor/auditor.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/admin/admin-auth.middleware.d.ts +23 -0
- package/dist/backend/backend/src/controllers/cloud/admin/admin-auth.middleware.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/admin/admin-auth.middleware.js +42 -0
- package/dist/backend/backend/src/controllers/cloud/admin/admin-auth.middleware.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/admin/admin.controller.d.ts +56 -0
- package/dist/backend/backend/src/controllers/cloud/admin/admin.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/admin/admin.controller.js +173 -0
- package/dist/backend/backend/src/controllers/cloud/admin/admin.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/admin/admin.routes.d.ts +22 -0
- package/dist/backend/backend/src/controllers/cloud/admin/admin.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/admin/admin.routes.js +33 -0
- package/dist/backend/backend/src/controllers/cloud/admin/admin.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/admin/index.d.ts +7 -0
- package/dist/backend/backend/src/controllers/cloud/admin/index.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/admin/index.js +7 -0
- package/dist/backend/backend/src/controllers/cloud/admin/index.js.map +1 -0
- package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.d.ts +1 -1
- package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js +5 -5
- package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.js +0 -3
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/index.d.ts +0 -5
- package/dist/backend/backend/src/controllers/cloud/index.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/index.js +0 -5
- package/dist/backend/backend/src/controllers/cloud/index.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts +6 -45
- package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/relay.controller.js +6 -165
- package/dist/backend/backend/src/controllers/cloud/relay.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts +5 -9
- package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/relay.routes.js +11 -21
- package/dist/backend/backend/src/controllers/cloud/relay.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts +5 -2
- package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/tasks/index.js +5 -2
- package/dist/backend/backend/src/controllers/cloud/tasks/index.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts +6 -2
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js +12 -8
- package/dist/backend/backend/src/controllers/marketplace/template-marketplace.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 +32 -4
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts +16 -5
- package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.controller.js +6 -6
- package/dist/backend/backend/src/controllers/payment/payment.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts +6 -2
- package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.routes.js +22 -8
- package/dist/backend/backend/src/controllers/payment/payment.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.types.d.ts +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.types.js +1 -1
- package/dist/backend/backend/src/controllers/payment/payment.types.js.map +1 -1
- package/dist/backend/backend/src/controllers/request-types.d.ts +2 -2
- package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts +19 -0
- package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/scheduler.controller.js +51 -0
- package/dist/backend/backend/src/controllers/system/scheduler.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 +13 -5
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/template/template.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/template/template.controller.js +2 -2
- package/dist/backend/backend/src/controllers/template/template.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +31 -30
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +4 -12
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/log-rotation.routes.d.ts +8 -0
- package/dist/backend/backend/src/routes/modules/log-rotation.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/routes/modules/log-rotation.routes.js +62 -0
- package/dist/backend/backend/src/routes/modules/log-rotation.routes.js.map +1 -0
- package/dist/backend/backend/src/routes/modules/scheduler.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/scheduler.routes.js +2 -0
- package/dist/backend/backend/src/routes/modules/scheduler.routes.js.map +1 -1
- package/dist/backend/backend/src/scripts/run-log-rotation.d.ts +3 -0
- package/dist/backend/backend/src/scripts/run-log-rotation.d.ts.map +1 -0
- package/dist/backend/backend/src/scripts/run-log-rotation.js +31 -0
- package/dist/backend/backend/src/scripts/run-log-rotation.js.map +1 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +10 -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 +85 -1
- 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 +150 -0
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +307 -0
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +105 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +199 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts +68 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js +131 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts +29 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +229 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +127 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +242 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +95 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +130 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts +14 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/index.js +14 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/index.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +57 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +93 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts +13 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js +91 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts +29 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +519 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +159 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js +63 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -0
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +56 -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 +273 -215
- 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.js +8 -8
- package/dist/backend/backend/src/services/agent/runtime-service.factory.js.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.d.ts +7 -1
- package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.js +14 -5
- package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/admin-seed.service.d.ts +18 -0
- package/dist/backend/backend/src/services/cloud/admin-seed.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/admin-seed.service.js +50 -0
- package/dist/backend/backend/src/services/cloud/admin-seed.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-features.d.ts +19 -0
- package/dist/backend/backend/src/services/cloud/cloud-features.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-features.js +23 -0
- package/dist/backend/backend/src/services/cloud/cloud-features.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts +3 -3
- package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js +10 -6
- package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/mongodb.service.d.ts +45 -0
- package/dist/backend/backend/src/services/cloud/mongodb.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/mongodb.service.js +76 -0
- package/dist/backend/backend/src/services/cloud/mongodb.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts +0 -2
- package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/relay-server.service.js +7 -36
- package/dist/backend/backend/src/services/cloud/relay-server.service.js.map +1 -1
- package/dist/backend/backend/src/services/continuation/continuation.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/continuation/continuation.service.js +5 -10
- package/dist/backend/backend/src/services/continuation/continuation.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +10 -2
- 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 +47 -12
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
- 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/message-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/message-queue.service.js +1 -0
- package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
- 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 +22 -4
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js +6 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -1
- package/dist/backend/backend/src/services/payment/stripe.service.d.ts +4 -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 +56 -180
- package/dist/backend/backend/src/services/payment/stripe.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/log-rotation.service.d.ts +163 -0
- package/dist/backend/backend/src/services/session/log-rotation.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/session/log-rotation.service.js +362 -0
- package/dist/backend/backend/src/services/session/log-rotation.service.js.map +1 -0
- package/dist/backend/backend/src/services/settings/settings.service.js +1 -1
- 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 +11 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +83 -1
- 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 +9 -44
- package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.js +7 -80
- package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +35 -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 +133 -0
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/types/chat.types.d.ts +1 -1
- package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/chat.types.js +21 -17
- package/dist/backend/backend/src/types/chat.types.js.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts +31 -0
- package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js +50 -0
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +1 -1
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/messaging.types.d.ts +4 -0
- package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
- package/dist/backend/backend/src/types/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 -4
- package/dist/backend/backend/src/types/settings.types.js.map +1 -1
- package/dist/backend/backend/src/types/team-template.types.d.ts +2 -2
- package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/team-template.types.js +1 -1
- package/dist/backend/backend/src/types/team-template.types.js.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +4 -4
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js +9 -6
- package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
- package/dist/backend/config/constants.d.ts +4 -2
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +4 -2
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +53 -13
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +54 -16
- package/dist/cli/backend/src/constants.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 +1 -1
- package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/chat.types.js +21 -17
- package/dist/cli/backend/src/types/chat.types.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +1 -1
- package/dist/cli/backend/src/types/index.d.ts.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 -4
- package/dist/cli/backend/src/types/settings.types.js.map +1 -1
- package/dist/cli/config/constants.d.ts +4 -2
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +4 -2
- package/dist/cli/config/constants.js.map +1 -1
- package/frontend/dist/assets/index-3558d1a2.js +4919 -0
- package/frontend/dist/assets/index-4c4dcc31.css +33 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +15 -9
- package/frontend/dist/assets/index-510ab719.css +0 -33
- package/frontend/dist/assets/index-935cd846.js +0 -4961
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crewly Agent Runner Service
|
|
3
|
+
*
|
|
4
|
+
* Core reasoning loop for the Crewly Agent runtime. Wraps Vercel AI SDK's
|
|
5
|
+
* generateText with conversation history management, context compaction,
|
|
6
|
+
* and structured result tracking.
|
|
7
|
+
*
|
|
8
|
+
* @module services/agent/crewly-agent/agent-runner.service
|
|
9
|
+
*/
|
|
10
|
+
import { generateText, stepCountIs } from 'ai';
|
|
11
|
+
import { ModelManager } from './model-manager.js';
|
|
12
|
+
import { CrewlyApiClient } from './api-client.js';
|
|
13
|
+
import { createTools } from './tool-registry.js';
|
|
14
|
+
export class AgentRunnerService {
|
|
15
|
+
config;
|
|
16
|
+
modelManager;
|
|
17
|
+
apiClient;
|
|
18
|
+
model = null;
|
|
19
|
+
state;
|
|
20
|
+
processing = false;
|
|
21
|
+
messageQueue = [];
|
|
22
|
+
/** @internal Override for testing — replaces the AI SDK generateText call */
|
|
23
|
+
_generateTextFn = null;
|
|
24
|
+
/**
|
|
25
|
+
* Create a new AgentRunnerService.
|
|
26
|
+
*
|
|
27
|
+
* @param config - Agent configuration
|
|
28
|
+
* @param modelManager - Optional model manager instance (for testing)
|
|
29
|
+
* @param apiClient - Optional API client instance (for testing)
|
|
30
|
+
*/
|
|
31
|
+
constructor(config, modelManager, apiClient) {
|
|
32
|
+
this.config = config;
|
|
33
|
+
this.modelManager = modelManager || new ModelManager();
|
|
34
|
+
this.apiClient = apiClient || new CrewlyApiClient(config.apiBaseUrl, config.sessionName);
|
|
35
|
+
this.state = {
|
|
36
|
+
messages: [],
|
|
37
|
+
systemPrompt: config.systemPrompt,
|
|
38
|
+
totalTokens: { input: 0, output: 0 },
|
|
39
|
+
createdAt: new Date(),
|
|
40
|
+
lastActivityAt: new Date(),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Initialize the agent runner by loading the model.
|
|
45
|
+
* Must be called before run().
|
|
46
|
+
*
|
|
47
|
+
* @throws Error if the model cannot be loaded
|
|
48
|
+
*/
|
|
49
|
+
async initialize() {
|
|
50
|
+
this.model = await this.modelManager.getModel(this.config.model);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Run the agent with a new user message.
|
|
54
|
+
*
|
|
55
|
+
* Messages are queued and processed serially to prevent concurrent
|
|
56
|
+
* generateText calls which would corrupt conversation state.
|
|
57
|
+
*
|
|
58
|
+
* @param message - User/system message to process
|
|
59
|
+
* @returns Result of the agent run including text, tool calls, and usage
|
|
60
|
+
*/
|
|
61
|
+
async run(message) {
|
|
62
|
+
return new Promise((resolve, reject) => {
|
|
63
|
+
this.messageQueue.push({ message, resolve, reject });
|
|
64
|
+
if (!this.processing) {
|
|
65
|
+
this.processQueue();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get current conversation state (for inspection/debugging).
|
|
71
|
+
*
|
|
72
|
+
* @returns Current conversation state
|
|
73
|
+
*/
|
|
74
|
+
getState() {
|
|
75
|
+
return { ...this.state };
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get the number of messages in the conversation history.
|
|
79
|
+
*
|
|
80
|
+
* @returns Message count
|
|
81
|
+
*/
|
|
82
|
+
getHistoryLength() {
|
|
83
|
+
return this.state.messages.length;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Check if the agent runner has been initialized.
|
|
87
|
+
*
|
|
88
|
+
* @returns True if initialize() has been called successfully
|
|
89
|
+
*/
|
|
90
|
+
isInitialized() {
|
|
91
|
+
return this.model !== null;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Process queued messages serially.
|
|
95
|
+
*/
|
|
96
|
+
async processQueue() {
|
|
97
|
+
this.processing = true;
|
|
98
|
+
while (this.messageQueue.length > 0) {
|
|
99
|
+
const item = this.messageQueue.shift();
|
|
100
|
+
try {
|
|
101
|
+
const result = await this.executeRun(item.message);
|
|
102
|
+
item.resolve(result);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
item.reject(error instanceof Error ? error : new Error(String(error)));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
this.processing = false;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Execute a single generateText run with the current conversation context.
|
|
112
|
+
*
|
|
113
|
+
* @param message - New message to add to the conversation
|
|
114
|
+
* @returns Agent run result
|
|
115
|
+
*/
|
|
116
|
+
async executeRun(message) {
|
|
117
|
+
if (!this.model) {
|
|
118
|
+
throw new Error('AgentRunner not initialized. Call initialize() first.');
|
|
119
|
+
}
|
|
120
|
+
// Check if compaction is needed before adding new message
|
|
121
|
+
if (this.state.messages.length >= this.config.maxHistoryMessages) {
|
|
122
|
+
await this.compactHistory();
|
|
123
|
+
}
|
|
124
|
+
// Add user message to history
|
|
125
|
+
this.state.messages.push({ role: 'user', content: message });
|
|
126
|
+
this.state.lastActivityAt = new Date();
|
|
127
|
+
// Build tools
|
|
128
|
+
const tools = createTools(this.apiClient, this.config.sessionName);
|
|
129
|
+
// Execute generateText with agentic loop
|
|
130
|
+
const generateFn = this._generateTextFn || generateText;
|
|
131
|
+
const result = await generateFn({
|
|
132
|
+
model: this.model,
|
|
133
|
+
system: this.state.systemPrompt,
|
|
134
|
+
messages: this.state.messages,
|
|
135
|
+
tools,
|
|
136
|
+
stopWhen: stepCountIs(this.config.maxSteps),
|
|
137
|
+
temperature: this.config.model.temperature,
|
|
138
|
+
maxOutputTokens: this.config.model.maxTokens,
|
|
139
|
+
});
|
|
140
|
+
// Track tool calls across all steps
|
|
141
|
+
const toolCalls = [];
|
|
142
|
+
for (const step of result.steps) {
|
|
143
|
+
if (step.toolCalls) {
|
|
144
|
+
for (const tc of step.toolCalls) {
|
|
145
|
+
toolCalls.push({
|
|
146
|
+
toolName: tc.toolName,
|
|
147
|
+
args: tc.input ?? {},
|
|
148
|
+
result: step.toolResults?.find((tr) => tr.toolCallId === tc.toolCallId)?.output,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Add assistant response to history
|
|
154
|
+
if (result.text) {
|
|
155
|
+
this.state.messages.push({ role: 'assistant', content: result.text });
|
|
156
|
+
}
|
|
157
|
+
// Update token tracking
|
|
158
|
+
const usage = {
|
|
159
|
+
input: result.usage?.inputTokens ?? 0,
|
|
160
|
+
output: result.usage?.outputTokens ?? 0,
|
|
161
|
+
};
|
|
162
|
+
this.state.totalTokens.input += usage.input;
|
|
163
|
+
this.state.totalTokens.output += usage.output;
|
|
164
|
+
return {
|
|
165
|
+
text: result.text,
|
|
166
|
+
steps: result.steps.length,
|
|
167
|
+
usage,
|
|
168
|
+
toolCalls,
|
|
169
|
+
finishReason: result.finishReason,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Compact conversation history by summarizing older messages.
|
|
174
|
+
*
|
|
175
|
+
* Keeps the most recent messages and replaces older ones with a summary.
|
|
176
|
+
* Uses the same model with a summarization prompt.
|
|
177
|
+
*/
|
|
178
|
+
async compactHistory() {
|
|
179
|
+
if (!this.model || this.state.messages.length < 10)
|
|
180
|
+
return;
|
|
181
|
+
const keepRecent = 10;
|
|
182
|
+
const oldMessages = this.state.messages.slice(0, -keepRecent);
|
|
183
|
+
const recentMessages = this.state.messages.slice(-keepRecent);
|
|
184
|
+
// Build a simple summary of old messages
|
|
185
|
+
const summaryParts = [];
|
|
186
|
+
for (const msg of oldMessages) {
|
|
187
|
+
const content = typeof msg.content === 'string'
|
|
188
|
+
? msg.content.substring(0, 200)
|
|
189
|
+
: JSON.stringify(msg.content).substring(0, 200);
|
|
190
|
+
summaryParts.push(`[${msg.role}]: ${content}`);
|
|
191
|
+
}
|
|
192
|
+
const summaryText = `Previous conversation summary (${oldMessages.length} messages compressed):\n${summaryParts.join('\n')}`;
|
|
193
|
+
this.state.messages = [
|
|
194
|
+
{ role: 'assistant', content: summaryText },
|
|
195
|
+
...recentMessages,
|
|
196
|
+
];
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=agent-runner.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-runner.service.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/agent-runner.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crewly Agent API Client
|
|
3
|
+
*
|
|
4
|
+
* Lightweight HTTP client for calling the Crewly backend REST API.
|
|
5
|
+
* Replaces the bash curl wrapper used by orchestrator skill scripts
|
|
6
|
+
* with direct fetch() calls for in-process tool execution.
|
|
7
|
+
*
|
|
8
|
+
* @module services/agent/crewly-agent/api-client
|
|
9
|
+
*/
|
|
10
|
+
import { type ApiCallResult } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* HTTP client for the Crewly backend REST API.
|
|
13
|
+
*
|
|
14
|
+
* Each tool in the ToolRegistry uses this client to make API calls
|
|
15
|
+
* instead of shelling out to bash scripts.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const client = new CrewlyApiClient('http://localhost:8787', 'crewly-orc');
|
|
20
|
+
* const result = await client.get('/teams');
|
|
21
|
+
* const result2 = await client.post('/terminal/agent-sam/deliver', { message: 'Hello' });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare class CrewlyApiClient {
|
|
25
|
+
private baseUrl;
|
|
26
|
+
private sessionName;
|
|
27
|
+
private timeoutMs;
|
|
28
|
+
/**
|
|
29
|
+
* Create a new API client instance.
|
|
30
|
+
*
|
|
31
|
+
* @param baseUrl - Base URL for the Crewly API (e.g., 'http://localhost:8787')
|
|
32
|
+
* @param sessionName - Agent session name for the X-Agent-Session header
|
|
33
|
+
* @param timeoutMs - Request timeout in milliseconds
|
|
34
|
+
*/
|
|
35
|
+
constructor(baseUrl?: string, sessionName?: string, timeoutMs?: number);
|
|
36
|
+
/**
|
|
37
|
+
* Make a GET request to the Crewly API.
|
|
38
|
+
*
|
|
39
|
+
* @param endpoint - API endpoint path (e.g., '/teams')
|
|
40
|
+
* @returns API call result with parsed JSON data
|
|
41
|
+
*/
|
|
42
|
+
get<T = unknown>(endpoint: string): Promise<ApiCallResult<T>>;
|
|
43
|
+
/**
|
|
44
|
+
* Make a POST request to the Crewly API.
|
|
45
|
+
*
|
|
46
|
+
* @param endpoint - API endpoint path (e.g., '/terminal/agent-sam/deliver')
|
|
47
|
+
* @param body - Request body to send as JSON
|
|
48
|
+
* @returns API call result with parsed JSON data
|
|
49
|
+
*/
|
|
50
|
+
post<T = unknown>(endpoint: string, body: unknown): Promise<ApiCallResult<T>>;
|
|
51
|
+
/**
|
|
52
|
+
* Make a DELETE request to the Crewly API.
|
|
53
|
+
*
|
|
54
|
+
* @param endpoint - API endpoint path (e.g., '/schedule/check-123')
|
|
55
|
+
* @returns API call result with parsed JSON data
|
|
56
|
+
*/
|
|
57
|
+
delete<T = unknown>(endpoint: string): Promise<ApiCallResult<T>>;
|
|
58
|
+
/**
|
|
59
|
+
* Internal request method handling fetch, timeout, and error mapping.
|
|
60
|
+
*
|
|
61
|
+
* @param method - HTTP method
|
|
62
|
+
* @param endpoint - API endpoint path
|
|
63
|
+
* @param body - Optional request body
|
|
64
|
+
* @returns Parsed API call result
|
|
65
|
+
*/
|
|
66
|
+
private request;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAE1B;;;;;;OAMG;gBAED,OAAO,GAAE,MAA2C,EACpD,WAAW,GAAE,MAAqB,EAClC,SAAS,GAAE,MAA6C;IAO1D;;;;;OAKG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAInE;;;;;;OAMG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAInF;;;;;OAKG;IACG,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAItE;;;;;;;OAOG;YACW,OAAO;CAwDtB"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crewly Agent API Client
|
|
3
|
+
*
|
|
4
|
+
* Lightweight HTTP client for calling the Crewly backend REST API.
|
|
5
|
+
* Replaces the bash curl wrapper used by orchestrator skill scripts
|
|
6
|
+
* with direct fetch() calls for in-process tool execution.
|
|
7
|
+
*
|
|
8
|
+
* @module services/agent/crewly-agent/api-client
|
|
9
|
+
*/
|
|
10
|
+
import { CREWLY_AGENT_DEFAULTS } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* HTTP client for the Crewly backend REST API.
|
|
13
|
+
*
|
|
14
|
+
* Each tool in the ToolRegistry uses this client to make API calls
|
|
15
|
+
* instead of shelling out to bash scripts.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const client = new CrewlyApiClient('http://localhost:8787', 'crewly-orc');
|
|
20
|
+
* const result = await client.get('/teams');
|
|
21
|
+
* const result2 = await client.post('/terminal/agent-sam/deliver', { message: 'Hello' });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class CrewlyApiClient {
|
|
25
|
+
baseUrl;
|
|
26
|
+
sessionName;
|
|
27
|
+
timeoutMs;
|
|
28
|
+
/**
|
|
29
|
+
* Create a new API client instance.
|
|
30
|
+
*
|
|
31
|
+
* @param baseUrl - Base URL for the Crewly API (e.g., 'http://localhost:8787')
|
|
32
|
+
* @param sessionName - Agent session name for the X-Agent-Session header
|
|
33
|
+
* @param timeoutMs - Request timeout in milliseconds
|
|
34
|
+
*/
|
|
35
|
+
constructor(baseUrl = CREWLY_AGENT_DEFAULTS.API_BASE_URL, sessionName = 'crewly-orc', timeoutMs = CREWLY_AGENT_DEFAULTS.API_TIMEOUT_MS) {
|
|
36
|
+
this.baseUrl = baseUrl.replace(/\/$/, '');
|
|
37
|
+
this.sessionName = sessionName;
|
|
38
|
+
this.timeoutMs = timeoutMs;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Make a GET request to the Crewly API.
|
|
42
|
+
*
|
|
43
|
+
* @param endpoint - API endpoint path (e.g., '/teams')
|
|
44
|
+
* @returns API call result with parsed JSON data
|
|
45
|
+
*/
|
|
46
|
+
async get(endpoint) {
|
|
47
|
+
return this.request('GET', endpoint);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Make a POST request to the Crewly API.
|
|
51
|
+
*
|
|
52
|
+
* @param endpoint - API endpoint path (e.g., '/terminal/agent-sam/deliver')
|
|
53
|
+
* @param body - Request body to send as JSON
|
|
54
|
+
* @returns API call result with parsed JSON data
|
|
55
|
+
*/
|
|
56
|
+
async post(endpoint, body) {
|
|
57
|
+
return this.request('POST', endpoint, body);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Make a DELETE request to the Crewly API.
|
|
61
|
+
*
|
|
62
|
+
* @param endpoint - API endpoint path (e.g., '/schedule/check-123')
|
|
63
|
+
* @returns API call result with parsed JSON data
|
|
64
|
+
*/
|
|
65
|
+
async delete(endpoint) {
|
|
66
|
+
return this.request('DELETE', endpoint);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Internal request method handling fetch, timeout, and error mapping.
|
|
70
|
+
*
|
|
71
|
+
* @param method - HTTP method
|
|
72
|
+
* @param endpoint - API endpoint path
|
|
73
|
+
* @param body - Optional request body
|
|
74
|
+
* @returns Parsed API call result
|
|
75
|
+
*/
|
|
76
|
+
async request(method, endpoint, body) {
|
|
77
|
+
const url = `${this.baseUrl}/api${endpoint}`;
|
|
78
|
+
const controller = new AbortController();
|
|
79
|
+
const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
80
|
+
try {
|
|
81
|
+
const headers = {
|
|
82
|
+
'Content-Type': 'application/json',
|
|
83
|
+
};
|
|
84
|
+
if (this.sessionName) {
|
|
85
|
+
headers['X-Agent-Session'] = this.sessionName;
|
|
86
|
+
}
|
|
87
|
+
const init = {
|
|
88
|
+
method,
|
|
89
|
+
headers,
|
|
90
|
+
signal: controller.signal,
|
|
91
|
+
};
|
|
92
|
+
if (body !== undefined) {
|
|
93
|
+
init.body = JSON.stringify(body);
|
|
94
|
+
}
|
|
95
|
+
const response = await fetch(url, init);
|
|
96
|
+
const responseBody = await response.text();
|
|
97
|
+
let data;
|
|
98
|
+
try {
|
|
99
|
+
const parsed = JSON.parse(responseBody);
|
|
100
|
+
data = parsed.data !== undefined ? parsed.data : parsed;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
data = responseBody;
|
|
104
|
+
}
|
|
105
|
+
if (response.ok) {
|
|
106
|
+
return { success: true, data, status: response.status };
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
success: false,
|
|
110
|
+
error: typeof data === 'object' && data !== null && 'error' in data
|
|
111
|
+
? String(data.error)
|
|
112
|
+
: `HTTP ${response.status}`,
|
|
113
|
+
status: response.status,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
118
|
+
return { success: false, error: `Request timeout after ${this.timeoutMs}ms`, status: 0 };
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
success: false,
|
|
122
|
+
error: error instanceof Error ? error.message : String(error),
|
|
123
|
+
status: 0,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
clearTimeout(timeout);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crewly Auditor Tool Registry
|
|
3
|
+
*
|
|
4
|
+
* Read-only tools for the Auditor agent. These tools allow the auditor
|
|
5
|
+
* to observe agent activity, read logs, check task alignment, and write
|
|
6
|
+
* structured bug reports — without any ability to modify system state.
|
|
7
|
+
*
|
|
8
|
+
* @module services/agent/crewly-agent/auditor-tools
|
|
9
|
+
*/
|
|
10
|
+
import type { CrewlyApiClient } from './api-client.js';
|
|
11
|
+
import type { ToolDefinition } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Create the auditor tool set for the Crewly Auditor agent.
|
|
14
|
+
*
|
|
15
|
+
* All tools are read-only except `write_audit_report` which appends
|
|
16
|
+
* to the audit log file.
|
|
17
|
+
*
|
|
18
|
+
* @param client - API client for Crewly REST API calls
|
|
19
|
+
* @param projectPath - Project root path for file operations
|
|
20
|
+
* @returns Object of named tools for the auditor agent
|
|
21
|
+
*/
|
|
22
|
+
export declare function createAuditorTools(client: CrewlyApiClient, projectPath: string): Record<string, ToolDefinition>;
|
|
23
|
+
/**
|
|
24
|
+
* Get the list of auditor tool names.
|
|
25
|
+
*
|
|
26
|
+
* @returns Array of auditor tool name strings
|
|
27
|
+
*/
|
|
28
|
+
export declare function getAuditorToolNames(): string[];
|
|
29
|
+
//# sourceMappingURL=auditor-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditor-tools.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/auditor-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA4MhC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAM9C"}
|