crewly 1.0.7 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +50 -3
- package/config/roles/architect/prompt.md +11 -0
- package/config/roles/backend-developer/prompt.md +11 -0
- package/config/roles/designer/prompt.md +11 -0
- package/config/roles/developer/prompt.md +18 -4
- package/config/roles/frontend-developer/prompt.md +11 -0
- package/config/roles/fullstack-dev/prompt.md +11 -0
- package/config/roles/generalist/prompt.md +11 -0
- package/config/roles/orchestrator/prompt.md +27 -0
- package/config/roles/product-manager/prompt.md +18 -4
- package/config/roles/qa/prompt.md +11 -0
- package/config/roles/qa-engineer/prompt.md +11 -0
- package/config/roles/sales/prompt.md +11 -0
- package/config/roles/support/prompt.md +11 -0
- package/config/roles/tpm/prompt.md +11 -0
- package/config/skills/orchestrator/complete-task/execute.sh +1 -0
- package/config/templates/agent-claude-md.md +16 -0
- package/config/templates/research-team.json +22 -0
- package/config/templates/startup-team.json +22 -0
- package/config/templates/web-dev-team.json +22 -0
- package/dist/backend/backend/src/constants.d.ts +61 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +65 -7
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts +7 -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 +174 -4
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +34 -0
- package/dist/backend/backend/src/index.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 +2 -0
- package/dist/backend/backend/src/routes/modules/task-management.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +8 -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 +75 -17
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +222 -0
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +621 -0
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -0
- package/dist/backend/backend/src/services/index.d.ts +3 -0
- package/dist/backend/backend/src/services/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/index.js +5 -0
- package/dist/backend/backend/src/services/index.js.map +1 -1
- package/dist/backend/backend/src/services/mcp-client.d.ts +233 -0
- package/dist/backend/backend/src/services/mcp-client.d.ts.map +1 -0
- package/dist/backend/backend/src/services/mcp-client.js +297 -0
- package/dist/backend/backend/src/services/mcp-client.js.map +1 -0
- package/dist/backend/backend/src/services/mcp-server.d.ts +167 -0
- package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -0
- package/dist/backend/backend/src/services/mcp-server.js +586 -0
- package/dist/backend/backend/src/services/mcp-server.js.map +1 -0
- package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts +2 -0
- 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 +6 -1
- 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 +10 -0
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +94 -38
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/quality/index.d.ts +1 -0
- package/dist/backend/backend/src/services/quality/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/quality/index.js +1 -0
- package/dist/backend/backend/src/services/quality/index.js.map +1 -1
- package/dist/backend/backend/src/services/quality/task-output-validator.service.d.ts +84 -0
- package/dist/backend/backend/src/services/quality/task-output-validator.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/quality/task-output-validator.service.js +163 -0
- package/dist/backend/backend/src/services/quality/task-output-validator.service.js.map +1 -0
- package/dist/backend/backend/src/services/runtime-adapter.d.ts +234 -0
- package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -0
- package/dist/backend/backend/src/services/runtime-adapter.js +180 -0
- package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -0
- package/dist/backend/backend/src/types/event-bus.types.d.ts +2 -2
- package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js +2 -0
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +1 -0
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js +2 -0
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/messaging.types.d.ts +9 -6
- package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/messaging.types.js +10 -3
- package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
- package/dist/backend/backend/src/types/task-output.types.d.ts +78 -0
- package/dist/backend/backend/src/types/task-output.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/task-output.types.js +27 -0
- package/dist/backend/backend/src/types/task-output.types.js.map +1 -0
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +13 -0
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js +12 -0
- package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +751 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -0
- package/dist/cli/backend/src/constants.js +550 -0
- package/dist/cli/backend/src/constants.js.map +1 -0
- package/dist/cli/backend/src/models/Project.d.ts +18 -0
- package/dist/cli/backend/src/models/Project.d.ts.map +1 -0
- package/dist/cli/backend/src/models/Project.js +70 -0
- package/dist/cli/backend/src/models/Project.js.map +1 -0
- package/dist/cli/backend/src/models/ScheduledMessage.d.ts +27 -0
- package/dist/cli/backend/src/models/ScheduledMessage.d.ts.map +1 -0
- package/dist/cli/backend/src/models/ScheduledMessage.js +50 -0
- package/dist/cli/backend/src/models/ScheduledMessage.js.map +1 -0
- package/dist/cli/backend/src/models/Team.d.ts +20 -0
- package/dist/cli/backend/src/models/Team.d.ts.map +1 -0
- package/dist/cli/backend/src/models/Team.js +120 -0
- package/dist/cli/backend/src/models/Team.js.map +1 -0
- package/dist/cli/backend/src/models/Ticket.d.ts +24 -0
- package/dist/cli/backend/src/models/Ticket.d.ts.map +1 -0
- package/dist/cli/backend/src/models/Ticket.js +102 -0
- package/dist/cli/backend/src/models/Ticket.js.map +1 -0
- package/dist/cli/backend/src/models/index.d.ts +5 -0
- package/dist/cli/backend/src/models/index.d.ts.map +1 -0
- package/dist/cli/backend/src/models/index.js +5 -0
- package/dist/cli/backend/src/models/index.js.map +1 -0
- package/dist/cli/backend/src/services/core/config.service.d.ts +91 -0
- package/dist/cli/backend/src/services/core/config.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/config.service.js +246 -0
- package/dist/cli/backend/src/services/core/config.service.js.map +1 -0
- package/dist/cli/backend/src/services/core/logger.service.d.ts +70 -0
- package/dist/cli/backend/src/services/core/logger.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/logger.service.js +350 -0
- package/dist/cli/backend/src/services/core/logger.service.js.map +1 -0
- package/dist/cli/backend/src/services/core/storage.service.d.ts +269 -0
- package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/storage.service.js +1406 -0
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -0
- package/dist/cli/backend/src/services/core/teams-backup.service.d.ts +92 -0
- package/dist/cli/backend/src/services/core/teams-backup.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/teams-backup.service.js +120 -0
- package/dist/cli/backend/src/services/core/teams-backup.service.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts +125 -0
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +247 -0
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/knowledge.service.d.ts +153 -0
- package/dist/cli/backend/src/services/knowledge/knowledge.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/knowledge.service.js +409 -0
- package/dist/cli/backend/src/services/knowledge/knowledge.service.js.map +1 -0
- package/dist/cli/backend/src/services/mcp-server.d.ts +167 -0
- package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -0
- package/dist/cli/backend/src/services/mcp-server.js +586 -0
- package/dist/cli/backend/src/services/mcp-server.js.map +1 -0
- package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts +259 -0
- package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/agent-memory.service.js +539 -0
- package/dist/cli/backend/src/services/memory/agent-memory.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/memory.service.d.ts +306 -0
- package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/memory.service.js +517 -0
- package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/project-memory.service.d.ts +252 -0
- package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/project-memory.service.js +600 -0
- package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -0
- package/dist/cli/backend/src/types/auto-assign.types.d.ts +271 -0
- package/dist/cli/backend/src/types/auto-assign.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/auto-assign.types.js +136 -0
- package/dist/cli/backend/src/types/auto-assign.types.js.map +1 -0
- package/dist/cli/backend/src/types/budget.types.d.ts +217 -0
- package/dist/cli/backend/src/types/budget.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/budget.types.js +82 -0
- package/dist/cli/backend/src/types/budget.types.js.map +1 -0
- package/dist/cli/backend/src/types/chat.types.d.ts +550 -0
- package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/chat.types.js +743 -0
- package/dist/cli/backend/src/types/chat.types.js.map +1 -0
- package/dist/cli/backend/src/types/continuation.types.d.ts +237 -0
- package/dist/cli/backend/src/types/continuation.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/continuation.types.js +10 -0
- package/dist/cli/backend/src/types/continuation.types.js.map +1 -0
- package/dist/cli/backend/src/types/index.d.ts +164 -0
- package/dist/cli/backend/src/types/index.d.ts.map +1 -0
- package/dist/cli/backend/src/types/index.js +25 -0
- package/dist/cli/backend/src/types/index.js.map +1 -0
- package/dist/cli/backend/src/types/knowledge.types.d.ts +195 -0
- package/dist/cli/backend/src/types/knowledge.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/knowledge.types.js +38 -0
- package/dist/cli/backend/src/types/knowledge.types.js.map +1 -0
- package/dist/cli/backend/src/types/memory.types.d.ts +587 -0
- package/dist/cli/backend/src/types/memory.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/memory.types.js +47 -0
- package/dist/cli/backend/src/types/memory.types.js.map +1 -0
- package/dist/cli/backend/src/types/quality-gate.types.d.ts +171 -0
- package/dist/cli/backend/src/types/quality-gate.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/quality-gate.types.js +42 -0
- package/dist/cli/backend/src/types/quality-gate.types.js.map +1 -0
- package/dist/cli/backend/src/types/role.types.d.ts +260 -0
- package/dist/cli/backend/src/types/role.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/role.types.js +238 -0
- package/dist/cli/backend/src/types/role.types.js.map +1 -0
- package/dist/cli/backend/src/types/scheduler.types.d.ts +254 -0
- package/dist/cli/backend/src/types/scheduler.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/scheduler.types.js +32 -0
- package/dist/cli/backend/src/types/scheduler.types.js.map +1 -0
- package/dist/cli/backend/src/types/settings.types.d.ts +178 -0
- package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/settings.types.js +206 -0
- package/dist/cli/backend/src/types/settings.types.js.map +1 -0
- package/dist/cli/backend/src/types/skill.types.d.ts +515 -0
- package/dist/cli/backend/src/types/skill.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/skill.types.js +481 -0
- package/dist/cli/backend/src/types/skill.types.js.map +1 -0
- package/dist/cli/backend/src/types/sop.types.d.ts +224 -0
- package/dist/cli/backend/src/types/sop.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/sop.types.js +85 -0
- package/dist/cli/backend/src/types/sop.types.js.map +1 -0
- package/dist/cli/backend/src/types/task-output.types.d.ts +78 -0
- package/dist/cli/backend/src/types/task-output.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/task-output.types.js +27 -0
- package/dist/cli/backend/src/types/task-output.types.js.map +1 -0
- package/dist/cli/backend/src/utils/file-io.utils.d.ts +102 -0
- package/dist/cli/backend/src/utils/file-io.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/file-io.utils.js +214 -0
- package/dist/cli/backend/src/utils/file-io.utils.js.map +1 -0
- package/dist/cli/backend/src/utils/terminal-output.utils.d.ts +54 -0
- package/dist/cli/backend/src/utils/terminal-output.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/terminal-output.utils.js +97 -0
- package/dist/cli/backend/src/utils/terminal-output.utils.js.map +1 -0
- package/dist/cli/cli/src/commands/mcp-server.d.ts +38 -0
- package/dist/cli/cli/src/commands/mcp-server.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/mcp-server.js +49 -0
- package/dist/cli/cli/src/commands/mcp-server.js.map +1 -0
- package/dist/cli/cli/src/commands/onboard.d.ts +61 -7
- package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/onboard.js +192 -19
- package/dist/cli/cli/src/commands/onboard.js.map +1 -1
- package/dist/cli/cli/src/commands/publish.d.ts +27 -0
- package/dist/cli/cli/src/commands/publish.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/publish.js +69 -0
- package/dist/cli/cli/src/commands/publish.js.map +1 -0
- package/dist/cli/cli/src/index.js +14 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/archive-creator.d.ts +82 -0
- package/dist/cli/cli/src/utils/archive-creator.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/archive-creator.js +105 -0
- package/dist/cli/cli/src/utils/archive-creator.js.map +1 -0
- package/dist/cli/cli/src/utils/package-validator.d.ts +62 -0
- package/dist/cli/cli/src/utils/package-validator.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/package-validator.js +122 -0
- package/dist/cli/cli/src/utils/package-validator.js.map +1 -0
- package/dist/cli/cli/src/utils/templates.d.ts +71 -0
- package/dist/cli/cli/src/utils/templates.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/templates.js +91 -0
- package/dist/cli/cli/src/utils/templates.js.map +1 -0
- package/frontend/dist/assets/{index-523c7fce.js → index-68d1eb5a.js} +71 -71
- package/frontend/dist/assets/{index-4c050f52.css → index-c5043a83.css} +1 -1
- package/frontend/dist/assets/nunito-cyrillic-400-normal-e44e669f.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-400-normal-ff8e8bdd.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-500-normal-2159679b.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-500-normal-61a3b80e.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-600-normal-ac046097.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-600-normal-e61eb97b.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-700-normal-8fcefcc9.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-700-normal-b9684104.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-800-normal-40253beb.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-800-normal-d80292de.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-400-normal-20d73ae7.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-400-normal-d48c37c9.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-500-normal-16197abd.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-500-normal-9dcfe9b5.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-600-normal-d53e9851.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-600-normal-e3d0201f.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-700-normal-5936f6ac.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-700-normal-c8c02775.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-800-normal-217b8f51.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-800-normal-796cf7bd.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-400-normal-a5906e15.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-400-normal-b51e7635.woff +0 -0
- package/frontend/dist/assets/nunito-latin-500-normal-23ae3083.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-500-normal-be14dbc6.woff +0 -0
- package/frontend/dist/assets/nunito-latin-600-normal-06a9c8b3.woff +0 -0
- package/frontend/dist/assets/nunito-latin-600-normal-45f437de.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-700-normal-ce9107dc.woff +0 -0
- package/frontend/dist/assets/nunito-latin-700-normal-fa89300b.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-800-normal-0ca02785.woff +0 -0
- package/frontend/dist/assets/nunito-latin-800-normal-2363d3ed.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-ext-400-normal-67250a41.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-ext-400-normal-d7e2415e.woff +0 -0
- package/frontend/dist/assets/nunito-latin-ext-500-normal-06f35d1c.woff +0 -0
- package/frontend/dist/assets/nunito-latin-ext-500-normal-343e7adc.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-ext-600-normal-5a8efd17.woff +0 -0
- package/frontend/dist/assets/nunito-latin-ext-600-normal-a7ba5f4f.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-ext-700-normal-0a4e4a02.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-ext-700-normal-0c607961.woff +0 -0
- package/frontend/dist/assets/nunito-latin-ext-800-normal-39f54b55.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-ext-800-normal-466d0211.woff +0 -0
- package/frontend/dist/assets/nunito-vietnamese-400-normal-2a755616.woff2 +0 -0
- package/frontend/dist/assets/nunito-vietnamese-400-normal-9c01ea9f.woff +0 -0
- package/frontend/dist/assets/nunito-vietnamese-500-normal-452e5e08.woff +0 -0
- package/frontend/dist/assets/nunito-vietnamese-500-normal-dc98d965.woff2 +0 -0
- package/frontend/dist/assets/nunito-vietnamese-600-normal-2ffbb85f.woff +0 -0
- package/frontend/dist/assets/nunito-vietnamese-600-normal-cf95b95d.woff2 +0 -0
- package/frontend/dist/assets/nunito-vietnamese-700-normal-0e29c28c.woff2 +0 -0
- package/frontend/dist/assets/nunito-vietnamese-700-normal-7793b75e.woff +0 -0
- package/frontend/dist/assets/nunito-vietnamese-800-normal-5baf507e.woff +0 -0
- package/frontend/dist/assets/nunito-vietnamese-800-normal-fac6740e.woff2 +0 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +15 -5
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard Operating Procedure (SOP) Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Types for defining, storing, and matching SOPs that guide
|
|
5
|
+
* agent behavior with standardized procedures.
|
|
6
|
+
*
|
|
7
|
+
* @module types/sop.types
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Roles that can have associated SOPs
|
|
11
|
+
*/
|
|
12
|
+
export type SOPRole = 'orchestrator' | 'pm' | 'tpm' | 'pgm' | 'developer' | 'frontend-developer' | 'backend-developer' | 'qa' | 'tester' | 'designer' | 'devops';
|
|
13
|
+
/**
|
|
14
|
+
* Categories of SOPs
|
|
15
|
+
*/
|
|
16
|
+
export type SOPCategory = 'workflow' | 'quality' | 'communication' | 'escalation' | 'tools' | 'debugging' | 'testing' | 'git' | 'security';
|
|
17
|
+
/**
|
|
18
|
+
* Condition operator for SOP activation
|
|
19
|
+
*/
|
|
20
|
+
export type SOPConditionOperator = 'equals' | 'contains' | 'matches';
|
|
21
|
+
/**
|
|
22
|
+
* Condition type for SOP activation
|
|
23
|
+
*/
|
|
24
|
+
export type SOPConditionType = 'task-type' | 'file-pattern' | 'project-type' | 'custom';
|
|
25
|
+
/**
|
|
26
|
+
* Condition for SOP activation
|
|
27
|
+
*/
|
|
28
|
+
export interface SOPCondition {
|
|
29
|
+
/** Type of condition */
|
|
30
|
+
type: SOPConditionType;
|
|
31
|
+
/** Value to check against */
|
|
32
|
+
value: string;
|
|
33
|
+
/** Comparison operator */
|
|
34
|
+
operator: SOPConditionOperator;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Example demonstrating correct SOP usage
|
|
38
|
+
*/
|
|
39
|
+
export interface SOPExample {
|
|
40
|
+
/** Example title */
|
|
41
|
+
title: string;
|
|
42
|
+
/** Scenario description */
|
|
43
|
+
scenario: string;
|
|
44
|
+
/** How to correctly handle this scenario */
|
|
45
|
+
correctApproach: string;
|
|
46
|
+
/** How NOT to handle this scenario */
|
|
47
|
+
incorrectApproach?: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Complete SOP definition
|
|
51
|
+
*/
|
|
52
|
+
export interface SOP {
|
|
53
|
+
/** Unique SOP identifier */
|
|
54
|
+
id: string;
|
|
55
|
+
/** Version number (increments on updates) */
|
|
56
|
+
version: number;
|
|
57
|
+
/** ISO timestamp of creation */
|
|
58
|
+
createdAt: string;
|
|
59
|
+
/** ISO timestamp of last update */
|
|
60
|
+
updatedAt: string;
|
|
61
|
+
/** Creator: 'system' or agentId */
|
|
62
|
+
createdBy: string;
|
|
63
|
+
/** Role this SOP applies to, or 'all' for universal */
|
|
64
|
+
role: SOPRole | 'all';
|
|
65
|
+
/** Category of the SOP */
|
|
66
|
+
category: SOPCategory;
|
|
67
|
+
/** Priority (higher = more important) */
|
|
68
|
+
priority: number;
|
|
69
|
+
/** Short title */
|
|
70
|
+
title: string;
|
|
71
|
+
/** Brief description */
|
|
72
|
+
description: string;
|
|
73
|
+
/** Full SOP content in Markdown */
|
|
74
|
+
content: string;
|
|
75
|
+
/** Keywords that trigger this SOP */
|
|
76
|
+
triggers: string[];
|
|
77
|
+
/** Optional conditions for activation */
|
|
78
|
+
conditions?: SOPCondition[];
|
|
79
|
+
/** Categorization tags */
|
|
80
|
+
tags: string[];
|
|
81
|
+
/** IDs of related SOPs */
|
|
82
|
+
relatedSOPs?: string[];
|
|
83
|
+
/** Usage examples */
|
|
84
|
+
examples?: SOPExample[];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Entry in the SOP index for fast lookup
|
|
88
|
+
*/
|
|
89
|
+
export interface SOPIndexEntry {
|
|
90
|
+
/** SOP identifier */
|
|
91
|
+
id: string;
|
|
92
|
+
/** Relative path to the SOP file */
|
|
93
|
+
path: string;
|
|
94
|
+
/** Role this SOP applies to */
|
|
95
|
+
role: SOPRole | 'all';
|
|
96
|
+
/** Category of the SOP */
|
|
97
|
+
category: SOPCategory;
|
|
98
|
+
/** Priority (higher = more important) */
|
|
99
|
+
priority: number;
|
|
100
|
+
/** Keywords that trigger this SOP */
|
|
101
|
+
triggers: string[];
|
|
102
|
+
/** Short title */
|
|
103
|
+
title: string;
|
|
104
|
+
/** Whether this is a system SOP (true) or custom (false) */
|
|
105
|
+
isSystem: boolean;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Complete SOP index
|
|
109
|
+
*/
|
|
110
|
+
export interface SOPIndex {
|
|
111
|
+
/** Index format version */
|
|
112
|
+
version: string;
|
|
113
|
+
/** ISO timestamp of last update */
|
|
114
|
+
lastUpdated: string;
|
|
115
|
+
/** All indexed SOPs */
|
|
116
|
+
sops: SOPIndexEntry[];
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Parameters for finding relevant SOPs
|
|
120
|
+
*/
|
|
121
|
+
export interface SOPMatchParams {
|
|
122
|
+
/** Agent role */
|
|
123
|
+
role: string;
|
|
124
|
+
/** Current task context */
|
|
125
|
+
taskContext: string;
|
|
126
|
+
/** Type of task being performed */
|
|
127
|
+
taskType?: string;
|
|
128
|
+
/** File patterns involved */
|
|
129
|
+
filePatterns?: string[];
|
|
130
|
+
/** Maximum number of SOPs to return */
|
|
131
|
+
limit?: number;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Interface for SOP matching logic
|
|
135
|
+
*/
|
|
136
|
+
export interface ISOPMatcher {
|
|
137
|
+
/**
|
|
138
|
+
* Find SOPs relevant to the given context
|
|
139
|
+
*
|
|
140
|
+
* @param params - Match parameters
|
|
141
|
+
* @returns Array of matching SOPs, sorted by relevance
|
|
142
|
+
*/
|
|
143
|
+
findRelevant(params: SOPMatchParams): Promise<SOP[]>;
|
|
144
|
+
/**
|
|
145
|
+
* Score how relevant an SOP is to the given context
|
|
146
|
+
*
|
|
147
|
+
* @param sop - SOP index entry to score
|
|
148
|
+
* @param context - Context string
|
|
149
|
+
* @returns Relevance score (0-1)
|
|
150
|
+
*/
|
|
151
|
+
scoreRelevance(sop: SOPIndexEntry, context: string): number;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* SOP file frontmatter (YAML header)
|
|
155
|
+
*/
|
|
156
|
+
export interface SOPFrontmatter {
|
|
157
|
+
id: string;
|
|
158
|
+
version: number;
|
|
159
|
+
createdAt: string;
|
|
160
|
+
updatedAt: string;
|
|
161
|
+
createdBy: string;
|
|
162
|
+
role: SOPRole | 'all';
|
|
163
|
+
category: SOPCategory;
|
|
164
|
+
priority: number;
|
|
165
|
+
title: string;
|
|
166
|
+
description: string;
|
|
167
|
+
triggers: string[];
|
|
168
|
+
conditions?: SOPCondition[];
|
|
169
|
+
tags: string[];
|
|
170
|
+
relatedSOPs?: string[];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Result of parsing an SOP file
|
|
174
|
+
*/
|
|
175
|
+
export interface ParsedSOP {
|
|
176
|
+
/** Parsed frontmatter */
|
|
177
|
+
frontmatter: SOPFrontmatter;
|
|
178
|
+
/** Markdown content (without frontmatter) */
|
|
179
|
+
content: string;
|
|
180
|
+
/** Parsed examples (if present) */
|
|
181
|
+
examples?: SOPExample[];
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* SOP constants
|
|
185
|
+
*/
|
|
186
|
+
export declare const SOP_CONSTANTS: {
|
|
187
|
+
/** Directory names */
|
|
188
|
+
readonly PATHS: {
|
|
189
|
+
readonly SOP_DIR: "sops";
|
|
190
|
+
readonly SYSTEM_SOP_DIR: "system";
|
|
191
|
+
readonly CUSTOM_SOP_DIR: "custom";
|
|
192
|
+
readonly INDEX_FILE: "index.json";
|
|
193
|
+
};
|
|
194
|
+
/** Limits */
|
|
195
|
+
readonly LIMITS: {
|
|
196
|
+
readonly MAX_SOPS_IN_PROMPT: 5;
|
|
197
|
+
readonly MAX_SOP_CONTENT_LENGTH: 2000;
|
|
198
|
+
readonly MAX_TRIGGERS_PER_SOP: 20;
|
|
199
|
+
readonly MAX_CONDITIONS_PER_SOP: 10;
|
|
200
|
+
readonly MAX_EXAMPLES_PER_SOP: 5;
|
|
201
|
+
};
|
|
202
|
+
/** Matching configuration */
|
|
203
|
+
readonly MATCHING: {
|
|
204
|
+
readonly MIN_TRIGGER_MATCH_SCORE: 0.3;
|
|
205
|
+
readonly DEFAULT_PRIORITY: 5;
|
|
206
|
+
readonly ROLE_MATCH_BOOST: 0.3;
|
|
207
|
+
readonly CATEGORY_MATCH_BOOST: 0.2;
|
|
208
|
+
};
|
|
209
|
+
/** Index version */
|
|
210
|
+
readonly INDEX_VERSION: "1.0";
|
|
211
|
+
};
|
|
212
|
+
/**
|
|
213
|
+
* Default SOP categories organized by role
|
|
214
|
+
*/
|
|
215
|
+
export declare const DEFAULT_SOP_CATEGORIES: Record<SOPRole | 'all', SOPCategory[]>;
|
|
216
|
+
/**
|
|
217
|
+
* All valid SOP roles
|
|
218
|
+
*/
|
|
219
|
+
export declare const ALL_SOP_ROLES: SOPRole[];
|
|
220
|
+
/**
|
|
221
|
+
* All valid SOP categories
|
|
222
|
+
*/
|
|
223
|
+
export declare const ALL_SOP_CATEGORIES: SOPCategory[];
|
|
224
|
+
//# sourceMappingURL=sop.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sop.types.d.ts","sourceRoot":"","sources":["../../../../../backend/src/types/sop.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,OAAO,GACf,cAAc,GACd,IAAI,GACJ,KAAK,GACL,KAAK,GACL,WAAW,GACX,oBAAoB,GACpB,mBAAmB,GACnB,IAAI,GACJ,QAAQ,GACR,UAAU,GACV,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,SAAS,GACT,eAAe,GACf,YAAY,GACZ,OAAO,GACP,WAAW,GACX,SAAS,GACT,KAAK,GACL,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,cAAc,GAAG,cAAc,GAAG,QAAQ,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,IAAI,EAAE,gBAAgB,CAAC;IACvB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAElB,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAGlB,uDAAuD;IACvD,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB,0BAA0B;IAC1B,QAAQ,EAAE,WAAW,CAAC;IACtB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IAGjB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAGhB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,yCAAyC;IACzC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAG5B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB,0BAA0B;IAC1B,QAAQ,EAAE,WAAW,CAAC;IACtB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAErD;;;;;;OAMG;IACH,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7D;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,yBAAyB;IACzB,WAAW,EAAE,cAAc,CAAC;IAC5B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB,sBAAsB;;;;;;;IAQtB,aAAa;;;;;;;;IASb,6BAA6B;;;;;;;IAQ7B,oBAAoB;;CAEZ,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,OAAO,GAAG,KAAK,EAAE,WAAW,EAAE,CAazE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAAO,EAYlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,EAU3C,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard Operating Procedure (SOP) Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Types for defining, storing, and matching SOPs that guide
|
|
5
|
+
* agent behavior with standardized procedures.
|
|
6
|
+
*
|
|
7
|
+
* @module types/sop.types
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* SOP constants
|
|
11
|
+
*/
|
|
12
|
+
export const SOP_CONSTANTS = {
|
|
13
|
+
/** Directory names */
|
|
14
|
+
PATHS: {
|
|
15
|
+
SOP_DIR: 'sops',
|
|
16
|
+
SYSTEM_SOP_DIR: 'system',
|
|
17
|
+
CUSTOM_SOP_DIR: 'custom',
|
|
18
|
+
INDEX_FILE: 'index.json',
|
|
19
|
+
},
|
|
20
|
+
/** Limits */
|
|
21
|
+
LIMITS: {
|
|
22
|
+
MAX_SOPS_IN_PROMPT: 5,
|
|
23
|
+
MAX_SOP_CONTENT_LENGTH: 2000,
|
|
24
|
+
MAX_TRIGGERS_PER_SOP: 20,
|
|
25
|
+
MAX_CONDITIONS_PER_SOP: 10,
|
|
26
|
+
MAX_EXAMPLES_PER_SOP: 5,
|
|
27
|
+
},
|
|
28
|
+
/** Matching configuration */
|
|
29
|
+
MATCHING: {
|
|
30
|
+
MIN_TRIGGER_MATCH_SCORE: 0.3,
|
|
31
|
+
DEFAULT_PRIORITY: 5,
|
|
32
|
+
ROLE_MATCH_BOOST: 0.3,
|
|
33
|
+
CATEGORY_MATCH_BOOST: 0.2,
|
|
34
|
+
},
|
|
35
|
+
/** Index version */
|
|
36
|
+
INDEX_VERSION: '1.0',
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Default SOP categories organized by role
|
|
40
|
+
*/
|
|
41
|
+
export const DEFAULT_SOP_CATEGORIES = {
|
|
42
|
+
all: ['communication', 'escalation', 'security'],
|
|
43
|
+
orchestrator: ['workflow', 'communication', 'escalation'],
|
|
44
|
+
pm: ['workflow', 'communication', 'quality'],
|
|
45
|
+
tpm: ['workflow', 'communication', 'quality'],
|
|
46
|
+
pgm: ['workflow', 'communication', 'quality'],
|
|
47
|
+
developer: ['workflow', 'quality', 'git', 'testing', 'debugging'],
|
|
48
|
+
'frontend-developer': ['workflow', 'quality', 'git', 'testing', 'debugging'],
|
|
49
|
+
'backend-developer': ['workflow', 'quality', 'git', 'testing', 'debugging', 'security'],
|
|
50
|
+
qa: ['testing', 'quality', 'debugging', 'communication'],
|
|
51
|
+
tester: ['testing', 'quality', 'debugging', 'communication'],
|
|
52
|
+
designer: ['workflow', 'communication', 'tools'],
|
|
53
|
+
devops: ['workflow', 'security', 'tools', 'debugging'],
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* All valid SOP roles
|
|
57
|
+
*/
|
|
58
|
+
export const ALL_SOP_ROLES = [
|
|
59
|
+
'orchestrator',
|
|
60
|
+
'pm',
|
|
61
|
+
'tpm',
|
|
62
|
+
'pgm',
|
|
63
|
+
'developer',
|
|
64
|
+
'frontend-developer',
|
|
65
|
+
'backend-developer',
|
|
66
|
+
'qa',
|
|
67
|
+
'tester',
|
|
68
|
+
'designer',
|
|
69
|
+
'devops',
|
|
70
|
+
];
|
|
71
|
+
/**
|
|
72
|
+
* All valid SOP categories
|
|
73
|
+
*/
|
|
74
|
+
export const ALL_SOP_CATEGORIES = [
|
|
75
|
+
'workflow',
|
|
76
|
+
'quality',
|
|
77
|
+
'communication',
|
|
78
|
+
'escalation',
|
|
79
|
+
'tools',
|
|
80
|
+
'debugging',
|
|
81
|
+
'testing',
|
|
82
|
+
'git',
|
|
83
|
+
'security',
|
|
84
|
+
];
|
|
85
|
+
//# sourceMappingURL=sop.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sop.types.js","sourceRoot":"","sources":["../../../../../backend/src/types/sop.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA2NH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,sBAAsB;IACtB,KAAK,EAAE;QACL,OAAO,EAAE,MAAM;QACf,cAAc,EAAE,QAAQ;QACxB,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,YAAY;KACzB;IAED,aAAa;IACb,MAAM,EAAE;QACN,kBAAkB,EAAE,CAAC;QACrB,sBAAsB,EAAE,IAAI;QAC5B,oBAAoB,EAAE,EAAE;QACxB,sBAAsB,EAAE,EAAE;QAC1B,oBAAoB,EAAE,CAAC;KACxB;IAED,6BAA6B;IAC7B,QAAQ,EAAE;QACR,uBAAuB,EAAE,GAAG;QAC5B,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,GAAG;QACrB,oBAAoB,EAAE,GAAG;KAC1B;IAED,oBAAoB;IACpB,aAAa,EAAE,KAAK;CACZ,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAA2C;IAC5E,GAAG,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,CAAC;IAChD,YAAY,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,YAAY,CAAC;IACzD,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS,CAAC;IAC5C,GAAG,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS,CAAC;IAC7C,GAAG,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS,CAAC;IAC7C,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC;IACjE,oBAAoB,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC;IAC5E,mBAAmB,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;IACvF,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,CAAC;IACxD,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,CAAC;IAC5D,QAAQ,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC;IAChD,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,cAAc;IACd,IAAI;IACJ,KAAK;IACL,KAAK;IACL,WAAW;IACX,oBAAoB;IACpB,mBAAmB;IACnB,IAAI;IACJ,QAAQ;IACR,UAAU;IACV,QAAQ;CACT,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,UAAU;IACV,SAAS;IACT,eAAe;IACf,YAAY;IACZ,OAAO;IACP,WAAW;IACX,SAAS;IACT,KAAK;IACL,UAAU;CACX,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Output Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Types for structured task output with JSON Schema validation.
|
|
5
|
+
* Enables agents to produce validated, structured deliverables
|
|
6
|
+
* when completing tasks.
|
|
7
|
+
*
|
|
8
|
+
* @module types/task-output.types
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* JSON Schema definition for validating task output.
|
|
12
|
+
* Uses a subset of JSON Schema Draft 7 compatible with ajv.
|
|
13
|
+
*/
|
|
14
|
+
export interface TaskOutputSchema {
|
|
15
|
+
/** JSON Schema type (typically 'object') */
|
|
16
|
+
type: string;
|
|
17
|
+
/** Property definitions for the output */
|
|
18
|
+
properties?: Record<string, Record<string, unknown>>;
|
|
19
|
+
/** List of required property names */
|
|
20
|
+
required?: string[];
|
|
21
|
+
/** Whether additional properties are allowed */
|
|
22
|
+
additionalProperties?: boolean;
|
|
23
|
+
/** Human-readable description of the expected output */
|
|
24
|
+
description?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Result of validating task output against its schema
|
|
28
|
+
*/
|
|
29
|
+
export interface TaskOutputValidationResult {
|
|
30
|
+
/** Whether the output passed validation */
|
|
31
|
+
valid: boolean;
|
|
32
|
+
/** Validation error messages (empty if valid) */
|
|
33
|
+
errors: string[];
|
|
34
|
+
/** The validated output data (only set if valid) */
|
|
35
|
+
data?: TaskOutputData;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Structured output data from a completed task
|
|
39
|
+
*/
|
|
40
|
+
export interface TaskOutputData {
|
|
41
|
+
/** The validated output object */
|
|
42
|
+
output: Record<string, unknown>;
|
|
43
|
+
/** ISO timestamp of when the output was produced */
|
|
44
|
+
producedAt: string;
|
|
45
|
+
/** Session name of the agent that produced the output */
|
|
46
|
+
sessionName: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Retry tracking information embedded in task markdown
|
|
50
|
+
*/
|
|
51
|
+
export interface TaskOutputRetryInfo {
|
|
52
|
+
/** Number of validation attempts so far */
|
|
53
|
+
retryCount: number;
|
|
54
|
+
/** Maximum allowed retries */
|
|
55
|
+
maxRetries: number;
|
|
56
|
+
/** Error messages from the last failed validation */
|
|
57
|
+
lastErrors: string[];
|
|
58
|
+
/** ISO timestamp of the last retry attempt */
|
|
59
|
+
lastAttemptAt: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Constants for task output validation
|
|
63
|
+
*/
|
|
64
|
+
export declare const TASK_OUTPUT_CONSTANTS: {
|
|
65
|
+
/** Maximum number of validation retries before blocking the task */
|
|
66
|
+
readonly MAX_RETRIES: 2;
|
|
67
|
+
/** Maximum output size in bytes (1MB) */
|
|
68
|
+
readonly MAX_OUTPUT_SIZE_BYTES: 1048576;
|
|
69
|
+
/** Markdown section headers used in task files */
|
|
70
|
+
readonly SECTION_HEADERS: {
|
|
71
|
+
readonly OUTPUT_SCHEMA: "## Output Schema";
|
|
72
|
+
readonly RETRY_INFO: "## Output Validation Retry Info";
|
|
73
|
+
readonly VALIDATION_FAILURE: "## Validation Failure";
|
|
74
|
+
};
|
|
75
|
+
/** File extension for stored output files */
|
|
76
|
+
readonly OUTPUT_FILE_EXTENSION: ".output.json";
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=task-output.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-output.types.d.ts","sourceRoot":"","sources":["../../../../../backend/src/types/task-output.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,2CAA2C;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,oDAAoD;IACpD,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,8CAA8C;IAC9C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,oEAAoE;;IAEpE,yCAAyC;;IAEzC,kDAAkD;;;;;;IAMlD,6CAA6C;;CAErC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Output Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Types for structured task output with JSON Schema validation.
|
|
5
|
+
* Enables agents to produce validated, structured deliverables
|
|
6
|
+
* when completing tasks.
|
|
7
|
+
*
|
|
8
|
+
* @module types/task-output.types
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Constants for task output validation
|
|
12
|
+
*/
|
|
13
|
+
export const TASK_OUTPUT_CONSTANTS = {
|
|
14
|
+
/** Maximum number of validation retries before blocking the task */
|
|
15
|
+
MAX_RETRIES: 2,
|
|
16
|
+
/** Maximum output size in bytes (1MB) */
|
|
17
|
+
MAX_OUTPUT_SIZE_BYTES: 1_048_576,
|
|
18
|
+
/** Markdown section headers used in task files */
|
|
19
|
+
SECTION_HEADERS: {
|
|
20
|
+
OUTPUT_SCHEMA: '## Output Schema',
|
|
21
|
+
RETRY_INFO: '## Output Validation Retry Info',
|
|
22
|
+
VALIDATION_FAILURE: '## Validation Failure',
|
|
23
|
+
},
|
|
24
|
+
/** File extension for stored output files */
|
|
25
|
+
OUTPUT_FILE_EXTENSION: '.output.json',
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=task-output.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-output.types.js","sourceRoot":"","sources":["../../../../../backend/src/types/task-output.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAyDH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,oEAAoE;IACpE,WAAW,EAAE,CAAC;IACd,yCAAyC;IACzC,qBAAqB,EAAE,SAAS;IAChC,kDAAkD;IAClD,eAAe,EAAE;QACf,aAAa,EAAE,kBAAkB;QACjC,UAAU,EAAE,iCAAiC;QAC7C,kBAAkB,EAAE,uBAAuB;KAC5C;IACD,6CAA6C;IAC7C,qBAAqB,EAAE,cAAc;CAC7B,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized Atomic File I/O Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides safe, atomic file operations for all JSON persistence in Crewly.
|
|
5
|
+
* Uses temp-file + fsync + rename to prevent corruption on crash,
|
|
6
|
+
* and in-process locks to serialize concurrent writes to the same file.
|
|
7
|
+
*
|
|
8
|
+
* @module utils/file-io.utils
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Minimal logger interface accepted by safeReadJson / modifyJsonFile.
|
|
12
|
+
* Compatible with ComponentLogger from LoggerService.
|
|
13
|
+
*/
|
|
14
|
+
export interface FileIOLogger {
|
|
15
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
16
|
+
debug?(message: string, meta?: Record<string, unknown>): void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Ensures a directory exists, creating it recursively if necessary.
|
|
20
|
+
*
|
|
21
|
+
* @param dirPath - Absolute path to the directory
|
|
22
|
+
*/
|
|
23
|
+
export declare function ensureDir(dirPath: string): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Serialize concurrent writes to the same file.
|
|
26
|
+
*
|
|
27
|
+
* @param lockKey - Unique key for the lock (typically the file path)
|
|
28
|
+
* @param operation - Async operation to run while holding the lock
|
|
29
|
+
* @returns The result of the operation
|
|
30
|
+
*/
|
|
31
|
+
export declare function withFileLock<T>(lockKey: string, operation: () => Promise<T>): Promise<T>;
|
|
32
|
+
/**
|
|
33
|
+
* Serialize read-modify-write cycles on a logical resource.
|
|
34
|
+
*
|
|
35
|
+
* Uses a separate lock map from {@link withFileLock} so that callers
|
|
36
|
+
* can hold an operation lock across a read + write without deadlocking
|
|
37
|
+
* on the inner file lock.
|
|
38
|
+
*
|
|
39
|
+
* @param lockKey - Unique key for the lock
|
|
40
|
+
* @param operation - Async operation to run while holding the lock
|
|
41
|
+
* @returns The result of the operation
|
|
42
|
+
*/
|
|
43
|
+
export declare function withOperationLock<T>(lockKey: string, operation: () => Promise<T>): Promise<T>;
|
|
44
|
+
/**
|
|
45
|
+
* Write a string to a file atomically (temp file → fsync → rename).
|
|
46
|
+
*
|
|
47
|
+
* Acquires a per-path file lock so concurrent callers targeting the
|
|
48
|
+
* same path are serialized.
|
|
49
|
+
*
|
|
50
|
+
* **Precondition:** The parent directory must already exist. This function
|
|
51
|
+
* does not create intermediate directories — use {@link ensureDir} first
|
|
52
|
+
* if the directory may not exist.
|
|
53
|
+
*
|
|
54
|
+
* @param filePath - Destination file path
|
|
55
|
+
* @param content - String content to write
|
|
56
|
+
*/
|
|
57
|
+
export declare function atomicWriteFile(filePath: string, content: string): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Serialize a JavaScript value to JSON and write it atomically.
|
|
60
|
+
*
|
|
61
|
+
* @param filePath - Destination file path
|
|
62
|
+
* @param data - Value to serialize (via `JSON.stringify`)
|
|
63
|
+
*/
|
|
64
|
+
export declare function atomicWriteJson<T>(filePath: string, data: T): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Read and parse a JSON file safely.
|
|
67
|
+
*
|
|
68
|
+
* - On `ENOENT` → returns `defaultValue` silently.
|
|
69
|
+
* - On parse error → backs up the corrupt file as `<path>.corrupt.<ts>`
|
|
70
|
+
* and returns `defaultValue`.
|
|
71
|
+
*
|
|
72
|
+
* @param filePath - Path to the JSON file
|
|
73
|
+
* @param defaultValue - Value to return when the file is missing or corrupt
|
|
74
|
+
* @param logger - Optional logger for warnings on corruption
|
|
75
|
+
* @returns Parsed value or `defaultValue`
|
|
76
|
+
*/
|
|
77
|
+
export declare function safeReadJson<T>(filePath: string, defaultValue: T, logger?: FileIOLogger): Promise<T>;
|
|
78
|
+
/**
|
|
79
|
+
* Locked read → mutate → atomic write cycle.
|
|
80
|
+
*
|
|
81
|
+
* This is the most common persistence pattern: load a JSON file,
|
|
82
|
+
* apply a mutation, and write it back atomically — all while holding
|
|
83
|
+
* an operation lock to prevent concurrent read-modify-write races.
|
|
84
|
+
*
|
|
85
|
+
* **Important:** If the mutator returns `undefined` (void), the mutated
|
|
86
|
+
* `data` object is written back. If it returns any other value — including
|
|
87
|
+
* falsy values like `null`, `0`, or `false` — that value is written instead.
|
|
88
|
+
* Beware of methods like `Array.push()` which return a number: an accidental
|
|
89
|
+
* `return records.push(item)` will write the array length to the file.
|
|
90
|
+
*
|
|
91
|
+
* @param filePath - Path to the JSON file
|
|
92
|
+
* @param defaultValue - Value to use if the file is missing or corrupt
|
|
93
|
+
* @param mutator - Function that receives the current data and mutates it in place (or returns new data)
|
|
94
|
+
* @param logger - Optional logger
|
|
95
|
+
* @returns The value returned by `mutator` (or void)
|
|
96
|
+
*/
|
|
97
|
+
export declare function modifyJsonFile<T, R = void>(filePath: string, defaultValue: T, mutator: (data: T) => R | Promise<R>, logger?: FileIOLogger): Promise<R>;
|
|
98
|
+
/**
|
|
99
|
+
* Reset all lock maps. **Test-only** — never call in production.
|
|
100
|
+
*/
|
|
101
|
+
export declare function _clearAllLocks(): void;
|
|
102
|
+
//# sourceMappingURL=file-io.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-io.utils.d.ts","sourceRoot":"","sources":["../../../../../backend/src/utils/file-io.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC/D;AAaD;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAuCD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE9F;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEnG;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBtF;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjF;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAyB1G;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EAC9C,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,CAAC,EACf,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACpC,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,CAAC,CAAC,CAUZ;AAMD;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAGrC"}
|