crewly 1.8.9 → 1.8.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/constants.d.ts.map +1 -0
- package/config/index.d.ts.map +1 -0
- package/config/roles/_common/memory-instructions.md +6 -5
- package/config/roles/_common/wiki-instructions.md +49 -0
- package/config/roles/architect/prompt.md +2 -2
- package/config/roles/backend-developer/prompt.md +2 -2
- package/config/roles/designer/prompt.md +2 -2
- package/config/roles/developer/prompt.md +2 -2
- package/config/roles/frontend-developer/prompt.md +2 -2
- package/config/roles/fullstack-dev/prompt.md +2 -2
- package/config/roles/generalist/prompt.md +2 -2
- package/config/roles/ops/prompt.md +2 -2
- package/config/roles/orchestrator/prompt.md +135 -11
- package/config/roles/product-manager/prompt.md +2 -2
- package/config/roles/qa/prompt.md +2 -2
- package/config/roles/qa-engineer/prompt.md +2 -2
- package/config/roles/researcher/prompt.md +15 -6
- package/config/roles/sales/prompt.md +2 -2
- package/config/roles/support/prompt.md +2 -2
- package/config/roles/team-leader/prompt.md +17 -2
- package/config/roles/tpm/prompt.md +2 -2
- package/config/roles/ux-designer/prompt.md +2 -2
- package/config/skills/orchestrator/wiki-cleanup/SKILL.md +89 -0
- package/config/skills/orchestrator/wiki-cleanup/execute.sh +139 -0
- package/config/skills/orchestrator/wiki-lint/SKILL.md +75 -0
- package/config/skills/orchestrator/wiki-lint/execute.sh +66 -0
- package/config/skills/orchestrator/wiki-migrate/SKILL.md +103 -0
- package/config/skills/orchestrator/wiki-migrate/execute.sh +82 -0
- package/config/skills/orchestrator/wiki-process-queue/SKILL.md +9 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts +169 -0
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +1779 -0
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +18 -0
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +63 -0
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js +5 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts +109 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.js +419 -4
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.js +11 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +78 -3
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/index.js.orc-bak-20260529 +3130 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +513 -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 +1568 -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/agent-worker.d.ts +86 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.js +147 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.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/audit-log.service.d.ts +130 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.js +263 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts +74 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js +140 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts +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 +279 -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 +340 -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 +1176 -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/deepseek-sse-transform.d.ts +79 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js +145 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.d.ts +79 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.js +218 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts +16 -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 +16 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/index.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts +135 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js +185 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +141 -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 +310 -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/output-filter.service.d.ts +91 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.js +143 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.d.ts +103 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.js +256 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts +143 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js +264 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.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 +135 -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 +1937 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js +1 -1
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.d.ts +429 -0
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.js +852 -0
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.js.map +1 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +171 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.js +725 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -0
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +50 -0
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +19 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +45 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +34 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.d.ts +118 -0
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.js +326 -0
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-backlinks.service.d.ts +72 -0
- package/dist/backend/backend/src/services/wiki/wiki-backlinks.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-backlinks.service.js +186 -0
- package/dist/backend/backend/src/services/wiki/wiki-backlinks.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.d.ts +27 -4
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.js +133 -10
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.d.ts +18 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.js +15 -4
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts +74 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js +154 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.d.ts +160 -0
- package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.js +399 -0
- package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-lint.service.d.ts +182 -0
- package/dist/backend/backend/src/services/wiki/wiki-lint.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-lint.service.js +505 -0
- package/dist/backend/backend/src/services/wiki/wiki-lint.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts +232 -0
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +1416 -0
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-recent.service.d.ts +51 -0
- package/dist/backend/backend/src/services/wiki/wiki-recent.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-recent.service.js +102 -0
- package/dist/backend/backend/src/services/wiki/wiki-recent.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.d.ts +104 -0
- package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.js +229 -0
- package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-search.service.d.ts +90 -0
- package/dist/backend/backend/src/services/wiki/wiki-search.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-search.service.js +190 -0
- package/dist/backend/backend/src/services/wiki/wiki-search.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts +164 -0
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js +675 -0
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js.map +1 -0
- package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.js +65 -0
- package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
- package/dist/backend/backend/src/types/auto-assign.types.d.ts +271 -0
- package/dist/backend/backend/src/types/auto-assign.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/auto-assign.types.js +136 -0
- package/dist/backend/backend/src/types/auto-assign.types.js.map +1 -0
- package/dist/backend/backend/src/types/cron-task.types.d.ts +16 -1
- package/dist/backend/backend/src/types/cron-task.types.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/esm-require.utils.d.ts +111 -0
- package/dist/backend/backend/src/utils/esm-require.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/esm-require.utils.js +124 -0
- package/dist/backend/backend/src/utils/esm-require.utils.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +220 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js +37 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.d.ts +56 -0
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.js +91 -0
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.d.ts +159 -0
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.js +304 -0
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.d.ts +115 -0
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.js +215 -0
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/embedding-provider.d.ts +78 -0
- package/dist/cli/backend/src/services/memory/embedding-provider.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/embedding-provider.js +179 -0
- package/dist/cli/backend/src/services/memory/embedding-provider.js.map +1 -0
- package/dist/cli/backend/src/services/memory/vector-store.service.d.ts +331 -0
- package/dist/cli/backend/src/services/memory/vector-store.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/vector-store.service.js +814 -0
- package/dist/cli/backend/src/services/memory/vector-store.service.js.map +1 -0
- package/dist/cli/backend/src/services/project/task-tracking.service.d.ts +171 -0
- package/dist/cli/backend/src/services/project/task-tracking.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/project/task-tracking.service.js +725 -0
- package/dist/cli/backend/src/services/project/task-tracking.service.js.map +1 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +19 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +45 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- 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/cli/src/index.js +0 -0
- package/frontend/dist/assets/{index-db3f5041.css → index-068bb4f6.css} +10 -1
- package/frontend/dist/assets/index-c24ceb15.js +4960 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/config/skills/agent/core/query-knowledge/SKILL.md +0 -87
- package/config/skills/agent/core/query-knowledge/execute.sh +0 -30
- package/config/skills/orchestrator/query-knowledge/SKILL.md +0 -75
- package/config/skills/orchestrator/query-knowledge/execute.sh +0 -30
- package/frontend/dist/assets/index-cc115bb4.js +0 -4926
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-Assignment Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Types for the automatic task assignment system.
|
|
5
|
+
*
|
|
6
|
+
* @module types/auto-assign.types
|
|
7
|
+
*/
|
|
8
|
+
// ======================
|
|
9
|
+
// Constants
|
|
10
|
+
// ======================
|
|
11
|
+
/**
|
|
12
|
+
* Auto-assignment related constants
|
|
13
|
+
*/
|
|
14
|
+
export const AUTO_ASSIGN_CONSTANTS = {
|
|
15
|
+
/** Default configuration values */
|
|
16
|
+
DEFAULTS: {
|
|
17
|
+
MAX_CONCURRENT_TASKS: 1,
|
|
18
|
+
MAX_ASSIGNMENTS_PER_DAY: 50,
|
|
19
|
+
COOLDOWN_BETWEEN_TASKS: 60, // seconds
|
|
20
|
+
IDLE_THRESHOLD_MINUTES: 5,
|
|
21
|
+
},
|
|
22
|
+
/** Task type categories */
|
|
23
|
+
TASK_TYPES: {
|
|
24
|
+
DEVELOPMENT: ['feature', 'fix', 'refactor', 'implement'],
|
|
25
|
+
TESTING: ['test', 'verify', 'qa'],
|
|
26
|
+
FRONTEND: ['ui', 'component', 'style', 'frontend'],
|
|
27
|
+
BACKEND: ['api', 'service', 'database', 'backend'],
|
|
28
|
+
MANAGEMENT: ['planning', 'review', 'coordination', 'documentation'],
|
|
29
|
+
},
|
|
30
|
+
/** Priority levels */
|
|
31
|
+
PRIORITY: {
|
|
32
|
+
CRITICAL: 1,
|
|
33
|
+
HIGH: 2,
|
|
34
|
+
MEDIUM: 5,
|
|
35
|
+
LOW: 10,
|
|
36
|
+
BACKLOG: 20,
|
|
37
|
+
},
|
|
38
|
+
/** Configuration file paths */
|
|
39
|
+
PATHS: {
|
|
40
|
+
CONFIG_FILE: 'auto-assign.yaml',
|
|
41
|
+
CONFIG_DIR: '.crewly/config',
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Default role matching rules
|
|
46
|
+
*/
|
|
47
|
+
export const DEFAULT_ROLE_MATCHING = [
|
|
48
|
+
{
|
|
49
|
+
role: 'developer',
|
|
50
|
+
taskTypes: ['feature', 'fix', 'refactor', 'test', 'implement'],
|
|
51
|
+
priority: 1,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
role: 'frontend-developer',
|
|
55
|
+
taskTypes: ['feature', 'fix', 'ui', 'component', 'style', 'frontend'],
|
|
56
|
+
priority: 1,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
role: 'backend-developer',
|
|
60
|
+
taskTypes: ['feature', 'fix', 'api', 'service', 'database', 'backend'],
|
|
61
|
+
priority: 1,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
role: 'qa',
|
|
65
|
+
taskTypes: ['test', 'review', 'verify', 'qa'],
|
|
66
|
+
priority: 1,
|
|
67
|
+
exclusive: true,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
role: 'tester',
|
|
71
|
+
taskTypes: ['test', 'review', 'verify'],
|
|
72
|
+
priority: 2,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
role: 'pm',
|
|
76
|
+
taskTypes: ['planning', 'review', 'coordination', 'documentation'],
|
|
77
|
+
priority: 1,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
role: 'tpm',
|
|
81
|
+
taskTypes: ['planning', 'coordination', 'tracking'],
|
|
82
|
+
priority: 1,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
role: 'pgm',
|
|
86
|
+
taskTypes: ['planning', 'management', 'coordination'],
|
|
87
|
+
priority: 1,
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
role: 'designer',
|
|
91
|
+
taskTypes: ['design', 'ui', 'ux', 'mockup'],
|
|
92
|
+
priority: 1,
|
|
93
|
+
exclusive: true,
|
|
94
|
+
},
|
|
95
|
+
];
|
|
96
|
+
/**
|
|
97
|
+
* Default assignment strategy
|
|
98
|
+
*/
|
|
99
|
+
export const DEFAULT_ASSIGNMENT_STRATEGY = {
|
|
100
|
+
prioritization: 'priority',
|
|
101
|
+
roleMatching: DEFAULT_ROLE_MATCHING,
|
|
102
|
+
loadBalancing: {
|
|
103
|
+
enabled: true,
|
|
104
|
+
maxConcurrentTasks: AUTO_ASSIGN_CONSTANTS.DEFAULTS.MAX_CONCURRENT_TASKS,
|
|
105
|
+
preferIdleAgents: true,
|
|
106
|
+
},
|
|
107
|
+
dependencies: {
|
|
108
|
+
respectBlocking: true,
|
|
109
|
+
waitForDependencies: true,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Default notification configuration
|
|
114
|
+
*/
|
|
115
|
+
export const DEFAULT_NOTIFICATION_CONFIG = {
|
|
116
|
+
notifyOnIdle: true,
|
|
117
|
+
idleThresholdMinutes: AUTO_ASSIGN_CONSTANTS.DEFAULTS.IDLE_THRESHOLD_MINUTES,
|
|
118
|
+
notifyOnNoTasks: true,
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Default assignment limits
|
|
122
|
+
*/
|
|
123
|
+
export const DEFAULT_ASSIGNMENT_LIMITS = {
|
|
124
|
+
maxAssignmentsPerDay: AUTO_ASSIGN_CONSTANTS.DEFAULTS.MAX_ASSIGNMENTS_PER_DAY,
|
|
125
|
+
cooldownBetweenTasks: AUTO_ASSIGN_CONSTANTS.DEFAULTS.COOLDOWN_BETWEEN_TASKS,
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Default complete auto-assignment configuration
|
|
129
|
+
*/
|
|
130
|
+
export const DEFAULT_AUTO_ASSIGN_CONFIG = {
|
|
131
|
+
enabled: true,
|
|
132
|
+
strategy: DEFAULT_ASSIGNMENT_STRATEGY,
|
|
133
|
+
notifications: DEFAULT_NOTIFICATION_CONFIG,
|
|
134
|
+
limits: DEFAULT_ASSIGNMENT_LIMITS,
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=auto-assign.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-assign.types.js","sourceRoot":"","sources":["../../../../../backend/src/types/auto-assign.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,9 +46,24 @@ export interface CronTask {
|
|
|
46
46
|
* - `agent_offline_start_failed` — callback threw or returned false
|
|
47
47
|
* - `agent_offline_not_ready` — callback succeeded but agent
|
|
48
48
|
* didn't come online within the wait window
|
|
49
|
-
*
|
|
49
|
+
* - `agent_offline_retries_exhausted` — transient retries (#611) ran
|
|
50
|
+
* out; equivalent terminal-skip for the consumer
|
|
51
|
+
* Issue #305 / #611.
|
|
50
52
|
*/
|
|
51
53
|
lastSkipReason?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Transient-skip retry counter (#611, 2026-05-28). Incremented every
|
|
56
|
+
* time `agent_offline_not_ready` / `agent_offline_start_failed` would
|
|
57
|
+
* have produced a permanent skip; reset to 0 on any successful run.
|
|
58
|
+
* The cron-eval loop reads this to decide whether to push `nextRunAt`
|
|
59
|
+
* out by a short backoff (retry) vs. permanently skip the slot.
|
|
60
|
+
*
|
|
61
|
+
* Why a stored counter and not an in-memory one: cron eval can fire
|
|
62
|
+
* on a fresh process (restart) and we still want the retry budget to
|
|
63
|
+
* survive — otherwise a transient OS spike that happens to coincide
|
|
64
|
+
* with a backend bounce would defeat the retry mechanism entirely.
|
|
65
|
+
*/
|
|
66
|
+
transientSkipAttempts?: number;
|
|
52
67
|
}
|
|
53
68
|
/**
|
|
54
69
|
* Storage format for cron-tasks.json.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron-task.types.d.ts","sourceRoot":"","sources":["../../../../../backend/src/types/cron-task.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,cAAc,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC;IACnC,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B
|
|
1
|
+
{"version":3,"file":"cron-task.types.d.ts","sourceRoot":"","sources":["../../../../../backend/src/types/cron-task.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,cAAc,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC;IACnC,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,QAAQ,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ESM/CJS-dual-mode helpers for the lazy `nodeRequire` pattern.
|
|
3
|
+
*
|
|
4
|
+
* Background
|
|
5
|
+
* ----------
|
|
6
|
+
* Several services in this codebase use the canonical `nodeRequire` pattern
|
|
7
|
+
* (commit `070cd3e5` — `fix(esm): anchor createRequire to process.argv[1]`)
|
|
8
|
+
* to lazily load modules without forcing every test that transitively imports
|
|
9
|
+
* them to mock the dependency. The pattern looks like:
|
|
10
|
+
*
|
|
11
|
+
* const nodeRequire: NodeRequire =
|
|
12
|
+
* typeof require === 'function'
|
|
13
|
+
* ? require
|
|
14
|
+
* : createRequire(pathToFileURL(process.argv[1] || process.cwd()).href);
|
|
15
|
+
*
|
|
16
|
+
* That pattern works **only** for npm-package targets (e.g.
|
|
17
|
+
* `nodeRequire('better-sqlite3')`) — Node's resolver walks UP from the anchor
|
|
18
|
+
* (`process.argv[1]`) to find `node_modules`, so the anchor's exact location
|
|
19
|
+
* does not matter for package resolution.
|
|
20
|
+
*
|
|
21
|
+
* It silently breaks for **relative project paths** like
|
|
22
|
+
* `nodeRequire('../v3/request.service.js')`. In production ESM, the relative
|
|
23
|
+
* spec is resolved against `process.argv[1]` (the entry script) — NOT against
|
|
24
|
+
* the calling module — so the require fails with `Cannot find module …`. In
|
|
25
|
+
* tests (ts-jest CJS transpile) the per-module `require` parameter is used
|
|
26
|
+
* instead, so the relative spec resolves correctly against the calling file
|
|
27
|
+
* and the bug stays hidden.
|
|
28
|
+
*
|
|
29
|
+
* Symptom that motivated this helper: `core/get-my-active-work` returned 500
|
|
30
|
+
* with "Cannot find module '../v3/request.service.js'" because
|
|
31
|
+
* `ActiveWorkBriefingService.getInstance()` called
|
|
32
|
+
* `nodeRequire('../v3/request.service.js')` from
|
|
33
|
+
* `services/agent/active-work-briefing.service.js` while `nodeRequire` was
|
|
34
|
+
* anchored to `dist/backend/backend/src/index.js`.
|
|
35
|
+
*
|
|
36
|
+
* What this helper does
|
|
37
|
+
* ---------------------
|
|
38
|
+
* `resolveProjectModulePath(testRelativePath, prodPathFromEntryDir)` returns:
|
|
39
|
+
*
|
|
40
|
+
* 1. In test mode (`typeof require === 'function'` — ts-jest CJS) — the
|
|
41
|
+
* `testRelativePath` unchanged, so the per-module CJS require resolves it
|
|
42
|
+
* relative to the calling file (its existing, working behavior).
|
|
43
|
+
* 2. In production ESM — an absolute path computed by joining
|
|
44
|
+
* `path.dirname(process.argv[1])` with `prodPathFromEntryDir`.
|
|
45
|
+
* Absolute paths are accepted by `nodeRequire` regardless of anchor.
|
|
46
|
+
*
|
|
47
|
+
* Why this is two-arg rather than one
|
|
48
|
+
* -----------------------------------
|
|
49
|
+
* We considered single-arg variants:
|
|
50
|
+
* • `import.meta.url` — triggers TS1343 under ts-jest's CJS target. Even with
|
|
51
|
+
* `// @ts-expect-error`, ts-jest's transpile may still fail at parse.
|
|
52
|
+
* • `new Function('return import.meta.url')()` — was tried (PR #323) and is
|
|
53
|
+
* forbidden — `new Function` evaluates in non-module scope where
|
|
54
|
+
* `import.meta` is a SyntaxError. Crashed production at startup.
|
|
55
|
+
* • `eval('import.meta.url')` — works at runtime via direct-eval scope
|
|
56
|
+
* inheritance, but trips ESLint `no-eval` and is fragile across engines.
|
|
57
|
+
* • Stack-trace introspection — gross and slow.
|
|
58
|
+
*
|
|
59
|
+
* Asking the caller to spell out **two** equivalent paths (one usable from the
|
|
60
|
+
* caller's perspective, one usable from the entry script's perspective) is
|
|
61
|
+
* verbose but unambiguous, parse-clean under both TS targets, and free of any
|
|
62
|
+
* runtime tricks.
|
|
63
|
+
*
|
|
64
|
+
* Usage
|
|
65
|
+
* -----
|
|
66
|
+
* // Caller is at `backend/src/services/agent/active-work-briefing.service.ts`
|
|
67
|
+
* // Target is at `backend/src/services/v3/request.service.ts`
|
|
68
|
+
* // Entry script (process.argv[1]) is `dist/backend/backend/src/index.js`
|
|
69
|
+
* // → from the caller's perspective: `../v3/request.service.js`
|
|
70
|
+
* // → from the entry-script-dir's perspective: `services/v3/request.service.js`
|
|
71
|
+
*
|
|
72
|
+
* const spec = resolveProjectModulePath(
|
|
73
|
+
* '../v3/request.service.js',
|
|
74
|
+
* 'services/v3/request.service.js',
|
|
75
|
+
* );
|
|
76
|
+
* const { RequestService } = nodeRequire(spec);
|
|
77
|
+
*
|
|
78
|
+
* Test guard
|
|
79
|
+
* ----------
|
|
80
|
+
* `esm-require.utils.test.ts` exercises both branches and locks the contract
|
|
81
|
+
* (test branch ↔ untouched relative path; prod branch ↔ absolute path joined
|
|
82
|
+
* to `process.argv[1]`'s dirname).
|
|
83
|
+
*
|
|
84
|
+
* @module utils/esm-require.utils
|
|
85
|
+
*/
|
|
86
|
+
/**
|
|
87
|
+
* Resolves a project-relative require spec to a string safe to pass to
|
|
88
|
+
* `nodeRequire` in both ts-jest CJS test mode and production ESM mode.
|
|
89
|
+
*
|
|
90
|
+
* @param testRelativePath - The require spec written from the calling file's
|
|
91
|
+
* perspective. Used verbatim in test mode (ts-jest CJS) where each module
|
|
92
|
+
* gets its own `require` and relative resolution Just Works. Example:
|
|
93
|
+
* `'../v3/request.service.js'`.
|
|
94
|
+
* @param prodPathFromEntryDir - The require spec rewritten as a path under
|
|
95
|
+
* `path.dirname(process.argv[1])`. Used in production ESM where
|
|
96
|
+
* `nodeRequire` is anchored to the entry script. Example:
|
|
97
|
+
* `'services/v3/request.service.js'` (under `dist/backend/backend/src/`).
|
|
98
|
+
* @returns A string suitable for `nodeRequire(...)`.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* const { RequestService } = nodeRequire(
|
|
103
|
+
* resolveProjectModulePath(
|
|
104
|
+
* '../v3/request.service.js',
|
|
105
|
+
* 'services/v3/request.service.js',
|
|
106
|
+
* ),
|
|
107
|
+
* );
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export declare function resolveProjectModulePath(testRelativePath: string, prodPathFromEntryDir: string): string;
|
|
111
|
+
//# sourceMappingURL=esm-require.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esm-require.utils.d.ts","sourceRoot":"","sources":["../../../../../backend/src/utils/esm-require.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AAIH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CACtC,gBAAgB,EAAE,MAAM,EACxB,oBAAoB,EAAE,MAAM,GAC3B,MAAM,CAYR"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ESM/CJS-dual-mode helpers for the lazy `nodeRequire` pattern.
|
|
3
|
+
*
|
|
4
|
+
* Background
|
|
5
|
+
* ----------
|
|
6
|
+
* Several services in this codebase use the canonical `nodeRequire` pattern
|
|
7
|
+
* (commit `070cd3e5` — `fix(esm): anchor createRequire to process.argv[1]`)
|
|
8
|
+
* to lazily load modules without forcing every test that transitively imports
|
|
9
|
+
* them to mock the dependency. The pattern looks like:
|
|
10
|
+
*
|
|
11
|
+
* const nodeRequire: NodeRequire =
|
|
12
|
+
* typeof require === 'function'
|
|
13
|
+
* ? require
|
|
14
|
+
* : createRequire(pathToFileURL(process.argv[1] || process.cwd()).href);
|
|
15
|
+
*
|
|
16
|
+
* That pattern works **only** for npm-package targets (e.g.
|
|
17
|
+
* `nodeRequire('better-sqlite3')`) — Node's resolver walks UP from the anchor
|
|
18
|
+
* (`process.argv[1]`) to find `node_modules`, so the anchor's exact location
|
|
19
|
+
* does not matter for package resolution.
|
|
20
|
+
*
|
|
21
|
+
* It silently breaks for **relative project paths** like
|
|
22
|
+
* `nodeRequire('../v3/request.service.js')`. In production ESM, the relative
|
|
23
|
+
* spec is resolved against `process.argv[1]` (the entry script) — NOT against
|
|
24
|
+
* the calling module — so the require fails with `Cannot find module …`. In
|
|
25
|
+
* tests (ts-jest CJS transpile) the per-module `require` parameter is used
|
|
26
|
+
* instead, so the relative spec resolves correctly against the calling file
|
|
27
|
+
* and the bug stays hidden.
|
|
28
|
+
*
|
|
29
|
+
* Symptom that motivated this helper: `core/get-my-active-work` returned 500
|
|
30
|
+
* with "Cannot find module '../v3/request.service.js'" because
|
|
31
|
+
* `ActiveWorkBriefingService.getInstance()` called
|
|
32
|
+
* `nodeRequire('../v3/request.service.js')` from
|
|
33
|
+
* `services/agent/active-work-briefing.service.js` while `nodeRequire` was
|
|
34
|
+
* anchored to `dist/backend/backend/src/index.js`.
|
|
35
|
+
*
|
|
36
|
+
* What this helper does
|
|
37
|
+
* ---------------------
|
|
38
|
+
* `resolveProjectModulePath(testRelativePath, prodPathFromEntryDir)` returns:
|
|
39
|
+
*
|
|
40
|
+
* 1. In test mode (`typeof require === 'function'` — ts-jest CJS) — the
|
|
41
|
+
* `testRelativePath` unchanged, so the per-module CJS require resolves it
|
|
42
|
+
* relative to the calling file (its existing, working behavior).
|
|
43
|
+
* 2. In production ESM — an absolute path computed by joining
|
|
44
|
+
* `path.dirname(process.argv[1])` with `prodPathFromEntryDir`.
|
|
45
|
+
* Absolute paths are accepted by `nodeRequire` regardless of anchor.
|
|
46
|
+
*
|
|
47
|
+
* Why this is two-arg rather than one
|
|
48
|
+
* -----------------------------------
|
|
49
|
+
* We considered single-arg variants:
|
|
50
|
+
* • `import.meta.url` — triggers TS1343 under ts-jest's CJS target. Even with
|
|
51
|
+
* `// @ts-expect-error`, ts-jest's transpile may still fail at parse.
|
|
52
|
+
* • `new Function('return import.meta.url')()` — was tried (PR #323) and is
|
|
53
|
+
* forbidden — `new Function` evaluates in non-module scope where
|
|
54
|
+
* `import.meta` is a SyntaxError. Crashed production at startup.
|
|
55
|
+
* • `eval('import.meta.url')` — works at runtime via direct-eval scope
|
|
56
|
+
* inheritance, but trips ESLint `no-eval` and is fragile across engines.
|
|
57
|
+
* • Stack-trace introspection — gross and slow.
|
|
58
|
+
*
|
|
59
|
+
* Asking the caller to spell out **two** equivalent paths (one usable from the
|
|
60
|
+
* caller's perspective, one usable from the entry script's perspective) is
|
|
61
|
+
* verbose but unambiguous, parse-clean under both TS targets, and free of any
|
|
62
|
+
* runtime tricks.
|
|
63
|
+
*
|
|
64
|
+
* Usage
|
|
65
|
+
* -----
|
|
66
|
+
* // Caller is at `backend/src/services/agent/active-work-briefing.service.ts`
|
|
67
|
+
* // Target is at `backend/src/services/v3/request.service.ts`
|
|
68
|
+
* // Entry script (process.argv[1]) is `dist/backend/backend/src/index.js`
|
|
69
|
+
* // → from the caller's perspective: `../v3/request.service.js`
|
|
70
|
+
* // → from the entry-script-dir's perspective: `services/v3/request.service.js`
|
|
71
|
+
*
|
|
72
|
+
* const spec = resolveProjectModulePath(
|
|
73
|
+
* '../v3/request.service.js',
|
|
74
|
+
* 'services/v3/request.service.js',
|
|
75
|
+
* );
|
|
76
|
+
* const { RequestService } = nodeRequire(spec);
|
|
77
|
+
*
|
|
78
|
+
* Test guard
|
|
79
|
+
* ----------
|
|
80
|
+
* `esm-require.utils.test.ts` exercises both branches and locks the contract
|
|
81
|
+
* (test branch ↔ untouched relative path; prod branch ↔ absolute path joined
|
|
82
|
+
* to `process.argv[1]`'s dirname).
|
|
83
|
+
*
|
|
84
|
+
* @module utils/esm-require.utils
|
|
85
|
+
*/
|
|
86
|
+
import path from 'path';
|
|
87
|
+
/**
|
|
88
|
+
* Resolves a project-relative require spec to a string safe to pass to
|
|
89
|
+
* `nodeRequire` in both ts-jest CJS test mode and production ESM mode.
|
|
90
|
+
*
|
|
91
|
+
* @param testRelativePath - The require spec written from the calling file's
|
|
92
|
+
* perspective. Used verbatim in test mode (ts-jest CJS) where each module
|
|
93
|
+
* gets its own `require` and relative resolution Just Works. Example:
|
|
94
|
+
* `'../v3/request.service.js'`.
|
|
95
|
+
* @param prodPathFromEntryDir - The require spec rewritten as a path under
|
|
96
|
+
* `path.dirname(process.argv[1])`. Used in production ESM where
|
|
97
|
+
* `nodeRequire` is anchored to the entry script. Example:
|
|
98
|
+
* `'services/v3/request.service.js'` (under `dist/backend/backend/src/`).
|
|
99
|
+
* @returns A string suitable for `nodeRequire(...)`.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const { RequestService } = nodeRequire(
|
|
104
|
+
* resolveProjectModulePath(
|
|
105
|
+
* '../v3/request.service.js',
|
|
106
|
+
* 'services/v3/request.service.js',
|
|
107
|
+
* ),
|
|
108
|
+
* );
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export function resolveProjectModulePath(testRelativePath, prodPathFromEntryDir) {
|
|
112
|
+
// The same `typeof require` probe the canonical `nodeRequire` pattern uses.
|
|
113
|
+
// Under ts-jest's CJS transpile, the per-module `require` parameter is
|
|
114
|
+
// defined and is the correct anchor for relative resolution. Under
|
|
115
|
+
// production ESM, `require` is undefined globally and we must hand
|
|
116
|
+
// `nodeRequire` an absolute path.
|
|
117
|
+
if (typeof require === 'function') {
|
|
118
|
+
return testRelativePath;
|
|
119
|
+
}
|
|
120
|
+
const entryScript = process.argv[1] || process.cwd();
|
|
121
|
+
const entryDir = path.dirname(entryScript);
|
|
122
|
+
return path.join(entryDir, prodPathFromEntryDir);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=esm-require.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esm-require.utils.js","sourceRoot":"","sources":["../../../../../backend/src/utils/esm-require.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,wBAAwB,CACtC,gBAAwB,EACxB,oBAA4B;IAE5B,4EAA4E;IAC5E,uEAAuE;IACvE,mEAAmE;IACnE,mEAAmE;IACnE,kCAAkC;IAClC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for modular prompt components.
|
|
3
|
+
*
|
|
4
|
+
* Each module is responsible for one concern (identity, skills, team, etc.)
|
|
5
|
+
* and produces a markdown string that gets assembled into the final agent prompt.
|
|
6
|
+
*
|
|
7
|
+
* Modules are assembled in priority order (1 = highest, assembled first).
|
|
8
|
+
* Non-compactable modules are never truncated when token budget is tight.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Configuration passed to each prompt module during assembly.
|
|
12
|
+
* Contains all the context needed to build module-specific content.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Organizational role derived from team hierarchy.
|
|
16
|
+
* Determines role boundary rules and event subscriptions.
|
|
17
|
+
*/
|
|
18
|
+
export type OrgRole = 'orchestrator' | 'team-lead' | 'executor';
|
|
19
|
+
/**
|
|
20
|
+
* Autonomy level controls the decision rights matrix.
|
|
21
|
+
* - directed: Execute assigned tasks only, escalate all ambiguity.
|
|
22
|
+
* - bounded: Make decisions within task/domain scope, log rationale.
|
|
23
|
+
* - domain_autonomous: Monitor domain continuously, make approved decisions without waiting.
|
|
24
|
+
*/
|
|
25
|
+
export type AutonomyLevel = 'directed' | 'bounded' | 'domain_autonomous';
|
|
26
|
+
export interface ModuleConfig {
|
|
27
|
+
/** Agent's session name (e.g. 'crewly-product-sam-217bfbbf') */
|
|
28
|
+
sessionName: string;
|
|
29
|
+
/** Agent's member ID (UUID) */
|
|
30
|
+
memberId: string;
|
|
31
|
+
/** Agent's role (e.g. 'developer', 'orchestrator') */
|
|
32
|
+
role: string;
|
|
33
|
+
/** Team ID this agent belongs to */
|
|
34
|
+
teamId?: string;
|
|
35
|
+
/** Absolute path to the project directory */
|
|
36
|
+
projectPath?: string;
|
|
37
|
+
/** Runtime type determines formatting and injection strategy */
|
|
38
|
+
runtimeType?: 'claude-code' | 'gemini-cli' | 'codex' | 'crewly-agent';
|
|
39
|
+
/** Whether this agent can delegate tasks to subordinates */
|
|
40
|
+
canDelegate?: boolean;
|
|
41
|
+
/** Resolved subordinate details for TL agents */
|
|
42
|
+
subordinates?: SubordinateInfoCompat[];
|
|
43
|
+
/** Absolute path to agent skill scripts */
|
|
44
|
+
agentSkillsPath: string;
|
|
45
|
+
/** Absolute path to team-leader skill scripts */
|
|
46
|
+
tlSkillsPath: string;
|
|
47
|
+
/** Absolute path to the project root (where config/ lives) */
|
|
48
|
+
projectRoot: string;
|
|
49
|
+
/** Organizational role derived from team hierarchy (orchestrator, team-lead, executor) */
|
|
50
|
+
orgRole?: OrgRole;
|
|
51
|
+
/** Autonomy level controlling the decision rights matrix */
|
|
52
|
+
autonomyLevel?: AutonomyLevel;
|
|
53
|
+
/** Capability flags (e.g., ['can-decide', 'can-verify']) */
|
|
54
|
+
capabilities?: string[];
|
|
55
|
+
/** Domain SOP name — loads config/domain-sops/{domainSOP}.sop.md */
|
|
56
|
+
domainSOP?: string;
|
|
57
|
+
/** Risk policy name — loads config/risk-policies/{riskPolicy}.policy.md */
|
|
58
|
+
riskPolicy?: string;
|
|
59
|
+
/** Job title for this position: "Frontend Tech Lead" */
|
|
60
|
+
jobTitle?: string;
|
|
61
|
+
/** What this member is responsible for */
|
|
62
|
+
jobDescription?: string;
|
|
63
|
+
/** Member-level ownership scope */
|
|
64
|
+
ownershipScope?: {
|
|
65
|
+
domains: string[];
|
|
66
|
+
deliverables: string[];
|
|
67
|
+
areas?: string[];
|
|
68
|
+
};
|
|
69
|
+
/** Team-level ownership scope */
|
|
70
|
+
teamOwnershipScope?: {
|
|
71
|
+
domains: string[];
|
|
72
|
+
deliverables: string[];
|
|
73
|
+
areas?: string[];
|
|
74
|
+
};
|
|
75
|
+
/** Team's service contract */
|
|
76
|
+
serviceContract?: {
|
|
77
|
+
accepts: string[];
|
|
78
|
+
avoids: string[];
|
|
79
|
+
expectedOutput: string[];
|
|
80
|
+
};
|
|
81
|
+
/** Expert profile ID — loads config/experts/{expertId}.md or Pro expert library */
|
|
82
|
+
expertId?: string;
|
|
83
|
+
/** Team description — injected into agent prompt to guide team-aligned behavior */
|
|
84
|
+
teamDescription?: string;
|
|
85
|
+
/** Team mission / OKR statement — injected into agent prompt for goal alignment */
|
|
86
|
+
teamMission?: string;
|
|
87
|
+
/** Team budget configuration — injected so agents can respect cost constraints */
|
|
88
|
+
teamBudget?: {
|
|
89
|
+
maxTokensPerDay?: number;
|
|
90
|
+
maxUsdPerMonth?: number;
|
|
91
|
+
alertThreshold?: number;
|
|
92
|
+
};
|
|
93
|
+
/** Team quality gate — injected so agents know review requirements */
|
|
94
|
+
teamQualityGate?: {
|
|
95
|
+
reviewerId?: string;
|
|
96
|
+
autoApprove?: boolean;
|
|
97
|
+
minQualityScore?: number;
|
|
98
|
+
};
|
|
99
|
+
/** Absolute path to team norms directory (from template application) */
|
|
100
|
+
teamNormsPath?: string;
|
|
101
|
+
/**
|
|
102
|
+
* Human-readable team slug used for resolving slug-named team files
|
|
103
|
+
* (e.g. `<teamSlug>-team-sub-okr.md` under `.crewly/goals/`).
|
|
104
|
+
* Populated by PromptBuilderService from team metadata when available.
|
|
105
|
+
* Optional — modules MUST tolerate undefined and skip slug-dependent
|
|
106
|
+
* sections silently.
|
|
107
|
+
*/
|
|
108
|
+
teamSlug?: string;
|
|
109
|
+
/**
|
|
110
|
+
* Team-graph ancestor IDs (parent, grandparent, ...) used by modules
|
|
111
|
+
* that need to surface inherited org context such as parent-team
|
|
112
|
+
* missions / OKRs. Caller resolves the chain; modules consume it
|
|
113
|
+
* read-only. Empty / undefined means "no ancestors" — modules MUST
|
|
114
|
+
* default to a single-team view rather than error.
|
|
115
|
+
*/
|
|
116
|
+
teamAncestorIds?: string[];
|
|
117
|
+
/**
|
|
118
|
+
* When true, the prompt assembler skips non-core modules to reduce token usage
|
|
119
|
+
* during eval runs. Core modules: identity, soul, role-boundary, recovery.
|
|
120
|
+
*/
|
|
121
|
+
evalMode?: boolean;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Subordinate info compatible with the existing SubordinateInfo type
|
|
125
|
+
*/
|
|
126
|
+
export interface SubordinateInfoCompat {
|
|
127
|
+
name: string;
|
|
128
|
+
sessionName: string;
|
|
129
|
+
role: string;
|
|
130
|
+
memberId: string;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Result of building a single prompt module.
|
|
134
|
+
* Includes the content and metadata for budget tracking.
|
|
135
|
+
*/
|
|
136
|
+
export interface ModuleBuildResult {
|
|
137
|
+
/** Module name */
|
|
138
|
+
name: string;
|
|
139
|
+
/** Generated markdown content */
|
|
140
|
+
content: string;
|
|
141
|
+
/** Estimated token count of the content */
|
|
142
|
+
estimatedTokens: number;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Interface that all prompt modules must implement.
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```typescript
|
|
149
|
+
* class IdentityModule implements PromptModule {
|
|
150
|
+
* name = 'identity';
|
|
151
|
+
* priority = 1;
|
|
152
|
+
* maxTokens = 150;
|
|
153
|
+
* compactable = false;
|
|
154
|
+
*
|
|
155
|
+
* shouldInclude(_config: ModuleConfig): boolean { return true; }
|
|
156
|
+
*
|
|
157
|
+
* async build(config: ModuleConfig): Promise<string> {
|
|
158
|
+
* return `## Your Identity\n- **Session Name:** ${config.sessionName}`;
|
|
159
|
+
* }
|
|
160
|
+
* }
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export interface PromptModule {
|
|
164
|
+
/** Module name (used for logging and debugging) */
|
|
165
|
+
name: string;
|
|
166
|
+
/** Assembly priority (1 = highest, assembled first) */
|
|
167
|
+
priority: number;
|
|
168
|
+
/** Token soft cap for this module */
|
|
169
|
+
maxTokens: number;
|
|
170
|
+
/** Whether this module can be skipped when token budget is tight */
|
|
171
|
+
compactable: boolean;
|
|
172
|
+
/** Condition check — return false to skip this module */
|
|
173
|
+
shouldInclude(config: ModuleConfig): boolean;
|
|
174
|
+
/** Build module content as markdown string */
|
|
175
|
+
build(config: ModuleConfig): Promise<string>;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Report returned by PromptAssemblyService.assemble() describing
|
|
179
|
+
* token usage and any truncation that occurred.
|
|
180
|
+
*/
|
|
181
|
+
export interface AssemblyReport {
|
|
182
|
+
/** Total estimated tokens in the final prompt */
|
|
183
|
+
totalTokens: number;
|
|
184
|
+
/** Per-module token breakdown */
|
|
185
|
+
moduleBreakdown: ModuleBuildResult[];
|
|
186
|
+
/** Modules that were truncated or removed to fit budget */
|
|
187
|
+
truncated: TruncatedModuleInfo[];
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Info about a module that was truncated or removed during assembly.
|
|
191
|
+
*/
|
|
192
|
+
export interface TruncatedModuleInfo {
|
|
193
|
+
/** Module name */
|
|
194
|
+
name: string;
|
|
195
|
+
/** Original estimated tokens before truncation */
|
|
196
|
+
originalTokens: number;
|
|
197
|
+
/** Tokens after truncation (0 if fully removed) */
|
|
198
|
+
finalTokens: number;
|
|
199
|
+
/** What happened: 'trimmed' (to 50%) or 'removed' (dropped entirely) */
|
|
200
|
+
action: 'trimmed' | 'removed';
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Load a role-specific fragment file from config/roles/{role}/fragments/{fragmentName}.md.
|
|
204
|
+
* Returns null if the file doesn't exist.
|
|
205
|
+
*
|
|
206
|
+
* @param projectRoot - Project root path (where config/ lives)
|
|
207
|
+
* @param role - Agent role (e.g. 'orchestrator')
|
|
208
|
+
* @param fragmentName - Fragment file name without .md extension
|
|
209
|
+
* @returns Fragment content string or null
|
|
210
|
+
*/
|
|
211
|
+
export declare function loadRoleFragment(projectRoot: string, role: string, fragmentName: string): string | null;
|
|
212
|
+
/**
|
|
213
|
+
* Estimate token count from a string.
|
|
214
|
+
* Uses the rough heuristic of ~4 characters per token (suitable for English/code mix).
|
|
215
|
+
*
|
|
216
|
+
* @param text - Text to estimate tokens for
|
|
217
|
+
* @returns Estimated token count
|
|
218
|
+
*/
|
|
219
|
+
export declare function estimateTokens(text: string): number;
|
|
220
|
+
//# sourceMappingURL=prompt-module.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-module.interface.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/prompt-module.interface.ts"],"names":[],"mappings":"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"}
|