@yuaone/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +663 -0
- package/README.md +15 -0
- package/dist/__tests__/context-manager.test.d.ts +6 -0
- package/dist/__tests__/context-manager.test.d.ts.map +1 -0
- package/dist/__tests__/context-manager.test.js +220 -0
- package/dist/__tests__/context-manager.test.js.map +1 -0
- package/dist/__tests__/governor.test.d.ts +6 -0
- package/dist/__tests__/governor.test.d.ts.map +1 -0
- package/dist/__tests__/governor.test.js +210 -0
- package/dist/__tests__/governor.test.js.map +1 -0
- package/dist/__tests__/model-router.test.d.ts +6 -0
- package/dist/__tests__/model-router.test.d.ts.map +1 -0
- package/dist/__tests__/model-router.test.js +329 -0
- package/dist/__tests__/model-router.test.js.map +1 -0
- package/dist/agent-logger.d.ts +384 -0
- package/dist/agent-logger.d.ts.map +1 -0
- package/dist/agent-logger.js +820 -0
- package/dist/agent-logger.js.map +1 -0
- package/dist/agent-loop.d.ts +163 -0
- package/dist/agent-loop.d.ts.map +1 -0
- package/dist/agent-loop.js +609 -0
- package/dist/agent-loop.js.map +1 -0
- package/dist/agent-modes.d.ts +85 -0
- package/dist/agent-modes.d.ts.map +1 -0
- package/dist/agent-modes.js +418 -0
- package/dist/agent-modes.js.map +1 -0
- package/dist/approval.d.ts +137 -0
- package/dist/approval.d.ts.map +1 -0
- package/dist/approval.js +299 -0
- package/dist/approval.js.map +1 -0
- package/dist/async-completion-queue.d.ts +56 -0
- package/dist/async-completion-queue.d.ts.map +1 -0
- package/dist/async-completion-queue.js +77 -0
- package/dist/async-completion-queue.js.map +1 -0
- package/dist/auto-fix.d.ts +174 -0
- package/dist/auto-fix.d.ts.map +1 -0
- package/dist/auto-fix.js +319 -0
- package/dist/auto-fix.js.map +1 -0
- package/dist/codebase-context.d.ts +396 -0
- package/dist/codebase-context.d.ts.map +1 -0
- package/dist/codebase-context.js +1260 -0
- package/dist/codebase-context.js.map +1 -0
- package/dist/conflict-resolver.d.ts +191 -0
- package/dist/conflict-resolver.d.ts.map +1 -0
- package/dist/conflict-resolver.js +524 -0
- package/dist/conflict-resolver.js.map +1 -0
- package/dist/constants.d.ts +52 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +141 -0
- package/dist/constants.js.map +1 -0
- package/dist/context-budget.d.ts +435 -0
- package/dist/context-budget.d.ts.map +1 -0
- package/dist/context-budget.js +903 -0
- package/dist/context-budget.js.map +1 -0
- package/dist/context-compressor.d.ts +143 -0
- package/dist/context-compressor.d.ts.map +1 -0
- package/dist/context-compressor.js +511 -0
- package/dist/context-compressor.js.map +1 -0
- package/dist/context-manager.d.ts +112 -0
- package/dist/context-manager.d.ts.map +1 -0
- package/dist/context-manager.js +247 -0
- package/dist/context-manager.js.map +1 -0
- package/dist/continuous-reflection.d.ts +267 -0
- package/dist/continuous-reflection.d.ts.map +1 -0
- package/dist/continuous-reflection.js +338 -0
- package/dist/continuous-reflection.js.map +1 -0
- package/dist/cross-file-refactor.d.ts +352 -0
- package/dist/cross-file-refactor.d.ts.map +1 -0
- package/dist/cross-file-refactor.js +1544 -0
- package/dist/cross-file-refactor.js.map +1 -0
- package/dist/dag-orchestrator.d.ts +138 -0
- package/dist/dag-orchestrator.d.ts.map +1 -0
- package/dist/dag-orchestrator.js +379 -0
- package/dist/dag-orchestrator.js.map +1 -0
- package/dist/debate-orchestrator.d.ts +301 -0
- package/dist/debate-orchestrator.d.ts.map +1 -0
- package/dist/debate-orchestrator.js +719 -0
- package/dist/debate-orchestrator.js.map +1 -0
- package/dist/dependency-analyzer.d.ts +113 -0
- package/dist/dependency-analyzer.d.ts.map +1 -0
- package/dist/dependency-analyzer.js +444 -0
- package/dist/dependency-analyzer.js.map +1 -0
- package/dist/design-loop.d.ts +59 -0
- package/dist/design-loop.d.ts.map +1 -0
- package/dist/design-loop.js +344 -0
- package/dist/design-loop.js.map +1 -0
- package/dist/doc-intelligence.d.ts +383 -0
- package/dist/doc-intelligence.d.ts.map +1 -0
- package/dist/doc-intelligence.js +1307 -0
- package/dist/doc-intelligence.js.map +1 -0
- package/dist/dynamic-role-generator.d.ts +76 -0
- package/dist/dynamic-role-generator.d.ts.map +1 -0
- package/dist/dynamic-role-generator.js +194 -0
- package/dist/dynamic-role-generator.js.map +1 -0
- package/dist/errors.d.ts +69 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +102 -0
- package/dist/errors.js.map +1 -0
- package/dist/event-bus.d.ts +159 -0
- package/dist/event-bus.d.ts.map +1 -0
- package/dist/event-bus.js +305 -0
- package/dist/event-bus.js.map +1 -0
- package/dist/execution-engine.d.ts +425 -0
- package/dist/execution-engine.d.ts.map +1 -0
- package/dist/execution-engine.js +1555 -0
- package/dist/execution-engine.js.map +1 -0
- package/dist/git-intelligence.d.ts +306 -0
- package/dist/git-intelligence.d.ts.map +1 -0
- package/dist/git-intelligence.js +1099 -0
- package/dist/git-intelligence.js.map +1 -0
- package/dist/governor.d.ts +77 -0
- package/dist/governor.d.ts.map +1 -0
- package/dist/governor.js +161 -0
- package/dist/governor.js.map +1 -0
- package/dist/hierarchical-planner.d.ts +313 -0
- package/dist/hierarchical-planner.d.ts.map +1 -0
- package/dist/hierarchical-planner.js +981 -0
- package/dist/hierarchical-planner.js.map +1 -0
- package/dist/index.d.ts +121 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +123 -0
- package/dist/index.js.map +1 -0
- package/dist/intent-inference.d.ts +103 -0
- package/dist/intent-inference.d.ts.map +1 -0
- package/dist/intent-inference.js +605 -0
- package/dist/intent-inference.js.map +1 -0
- package/dist/interrupt-manager.d.ts +143 -0
- package/dist/interrupt-manager.d.ts.map +1 -0
- package/dist/interrupt-manager.js +196 -0
- package/dist/interrupt-manager.js.map +1 -0
- package/dist/kernel.d.ts +564 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +1419 -0
- package/dist/kernel.js.map +1 -0
- package/dist/language-support.d.ts +232 -0
- package/dist/language-support.d.ts.map +1 -0
- package/dist/language-support.js +1134 -0
- package/dist/language-support.js.map +1 -0
- package/dist/llm-client.d.ts +82 -0
- package/dist/llm-client.d.ts.map +1 -0
- package/dist/llm-client.js +475 -0
- package/dist/llm-client.js.map +1 -0
- package/dist/mcp-client.d.ts +232 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +718 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/memory-manager.d.ts +200 -0
- package/dist/memory-manager.d.ts.map +1 -0
- package/dist/memory-manager.js +568 -0
- package/dist/memory-manager.js.map +1 -0
- package/dist/memory.d.ts +87 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +341 -0
- package/dist/memory.js.map +1 -0
- package/dist/model-router.d.ts +245 -0
- package/dist/model-router.d.ts.map +1 -0
- package/dist/model-router.js +632 -0
- package/dist/model-router.js.map +1 -0
- package/dist/parallel-executor.d.ts +125 -0
- package/dist/parallel-executor.d.ts.map +1 -0
- package/dist/parallel-executor.js +201 -0
- package/dist/parallel-executor.js.map +1 -0
- package/dist/perf-optimizer.d.ts +212 -0
- package/dist/perf-optimizer.d.ts.map +1 -0
- package/dist/perf-optimizer.js +721 -0
- package/dist/perf-optimizer.js.map +1 -0
- package/dist/persona.d.ts +305 -0
- package/dist/persona.d.ts.map +1 -0
- package/dist/persona.js +887 -0
- package/dist/persona.js.map +1 -0
- package/dist/planner.d.ts +70 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +264 -0
- package/dist/planner.js.map +1 -0
- package/dist/qa-pipeline.d.ts +365 -0
- package/dist/qa-pipeline.d.ts.map +1 -0
- package/dist/qa-pipeline.js +1352 -0
- package/dist/qa-pipeline.js.map +1 -0
- package/dist/reasoning-adapter.d.ts +116 -0
- package/dist/reasoning-adapter.d.ts.map +1 -0
- package/dist/reasoning-adapter.js +187 -0
- package/dist/reasoning-adapter.js.map +1 -0
- package/dist/role-registry.d.ts +55 -0
- package/dist/role-registry.d.ts.map +1 -0
- package/dist/role-registry.js +192 -0
- package/dist/role-registry.js.map +1 -0
- package/dist/sandbox-tiers.d.ts +327 -0
- package/dist/sandbox-tiers.d.ts.map +1 -0
- package/dist/sandbox-tiers.js +928 -0
- package/dist/sandbox-tiers.js.map +1 -0
- package/dist/security-scanner.d.ts +222 -0
- package/dist/security-scanner.d.ts.map +1 -0
- package/dist/security-scanner.js +1129 -0
- package/dist/security-scanner.js.map +1 -0
- package/dist/security.d.ts +93 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +393 -0
- package/dist/security.js.map +1 -0
- package/dist/self-reflection.d.ts +397 -0
- package/dist/self-reflection.d.ts.map +1 -0
- package/dist/self-reflection.js +908 -0
- package/dist/self-reflection.js.map +1 -0
- package/dist/session-persistence.d.ts +191 -0
- package/dist/session-persistence.d.ts.map +1 -0
- package/dist/session-persistence.js +395 -0
- package/dist/session-persistence.js.map +1 -0
- package/dist/speculative-executor.d.ts +210 -0
- package/dist/speculative-executor.d.ts.map +1 -0
- package/dist/speculative-executor.js +618 -0
- package/dist/speculative-executor.js.map +1 -0
- package/dist/state-machine.d.ts +289 -0
- package/dist/state-machine.d.ts.map +1 -0
- package/dist/state-machine.js +695 -0
- package/dist/state-machine.js.map +1 -0
- package/dist/sub-agent.d.ts +177 -0
- package/dist/sub-agent.d.ts.map +1 -0
- package/dist/sub-agent.js +303 -0
- package/dist/sub-agent.js.map +1 -0
- package/dist/system-prompt.d.ts +26 -0
- package/dist/system-prompt.d.ts.map +1 -0
- package/dist/system-prompt.js +84 -0
- package/dist/system-prompt.js.map +1 -0
- package/dist/test-intelligence.d.ts +439 -0
- package/dist/test-intelligence.d.ts.map +1 -0
- package/dist/test-intelligence.js +1165 -0
- package/dist/test-intelligence.js.map +1 -0
- package/dist/types.d.ts +632 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/vector-index.d.ts +314 -0
- package/dist/vector-index.d.ts.map +1 -0
- package/dist/vector-index.js +618 -0
- package/dist/vector-index.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debate-orchestrator.js","sourceRoot":"","sources":["../src/debate-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA0H7C,oEAAoE;AAEpE,MAAM,cAAc,GAAsC;IACxD,SAAS,EAAE,CAAC;IACZ,gBAAgB,EAAE,EAAE;IACpB,mBAAmB,EAAE,IAAI;IACzB,gBAAgB,EAAE,KAAK;IACvB,gBAAgB,EAAE,OAAO;CAC1B,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;+CAwBmB,CAAC;AAEhD,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;;;;;;;0DAuBqB,CAAC;AAE3D,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oGA6BqE,CAAC;AAErG,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6FAkC8D,CAAC;AAE9F,oEAAoE;AAEpE;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IACjC,MAAM,CAAe;IAC9B,MAAM,GAAkB,EAAE,CAAC;IAC3B,WAAW,GAAG,CAAC,CAAC;IACP,UAAU,GAAmB;QAC5C,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAC9B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACjC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;KAClC,CAAC;IACe,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAElD,YAAY,MAAuD;QACjE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,cAAc;YACjB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAAgB;QACzC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAEtE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5D,qBAAqB;YACrB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;gBAC/D,MAAM;YACR,CAAC;YAED,qBAAqB;YACrB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBACrD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;gBAChE,MAAM;YACR,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAE3C,uCAAuC;YACvC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO;gBAAE,MAAM;YAE5C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE9E,sCAAsC;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAChE,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO;gBAAE,MAAM;YAE5C,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAC3D,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBAC3B,KAAK;gBACL,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;gBAChC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC;aAClE,CAAC,CAAC;YAEH,8DAA8D;YAC9D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;gBACpE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBAE/D,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;oBAC3B,KAAK;oBACL,KAAK,EAAE,YAAY,CAAC,KAAK;oBACzB,MAAM,EAAE,YAAY,CAAC,MAAM;iBAC5B,CAAC,CAAC;gBAEH,MAAM,WAAW,GAAgB;oBAC/B,KAAK;oBACL,WAAW;oBACX,gBAAgB,EAAE,MAAM,CAAC,QAAQ;oBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,cAAc,EAAE,YAAY;iBAC7B,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE9B,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAC9E,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC/D,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAED,qDAAqD;YACrD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC/E,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO;gBAAE,MAAM;YAE5C,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE9E,kFAAkF;YAClF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;gBACnE,iCAAiC;gBACjC,IAAI,cAA0C,CAAC;gBAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;oBACpC,cAAc,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBACxD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;wBAC3B,KAAK;wBACL,KAAK,EAAE,cAAc,CAAC,KAAK;wBAC3B,MAAM,EAAE,cAAc,CAAC,MAAM;qBAC9B,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,WAAW,GAAgB;oBAC/B,KAAK;oBACL,WAAW;oBACX,gBAAgB,EAAE,MAAM,CAAC,QAAQ;oBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,aAAa,EAAE,QAAQ;oBACvB,cAAc;iBACf,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE9B,2BAA2B;gBAC3B,IAAI,cAAc,EAAE,MAAM,IAAI,cAAc,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBACnF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;oBACjE,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,oDAAoD;gBACpD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC1D,IAAI,aAAa,EAAE,CAAC;oBAClB,aAAa,CAAC,aAAa,GAAG,QAAQ,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,+DAA+D;YAC/D,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAEnF,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC5B,KAAK;gBACL,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;aACjC,CAAC,CAAC;QACL,CAAC;QAED,wCAAwC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,SAAS,EAAE,aAAa,IAAI,SAAS,EAAE,WAAW,IAAI,EAAE,CAAC;QAE5E,IAAI,iBAAiC,CAAC;QACtC,IAAI,SAAS,EAAE,cAAc,EAAE,CAAC;YAC9B,iBAAiB,GAAG,SAAS,CAAC,cAAc,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,iBAAiB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,MAAM,EAAE,MAAM,CAAC,OAAO;aACvB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iEAAiE;IAEjE;;;OAGG;IACK,KAAK,CAAC,QAAQ,CACpB,IAAY,EACZ,OAA2B,EAC3B,KAAa;QAEb,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QAElC,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAE7D,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,0BAA0B,KAAK,0GAA0G,CAAC,CAAC;QAC3J,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACzF,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,WAAW,CACvB,WAAmB,EACnB,IAAY,EACZ,KAAa;QAEb,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,4BAA4B,KAAK,MAAM,WAAW,EAAE,CAAC,CAAC;QACpE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAE7D,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC,sBAAsB,EACtB,WAAW,EACX,UAAU,EACV,IAAI,CAAC,MAAM,CAAC,aAAa,CAC1B,CAAC;QAEF,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,gBAAgB,CAC5B,YAAoB,EACpB,MAAmD,EACnD,IAAY,EACZ,KAAa;QAEb,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,gCAAgC,KAAK,MAAM,YAAY,EAAE,CAAC,CAAC;QACzE,QAAQ,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE1D,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM;iBAC7B,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAClB,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;gBACrF,IAAI,KAAK,CAAC,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1F,IAAI,KAAK,CAAC,UAAU;oBAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;gBACvE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC;iBACD,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhB,QAAQ,CAAC,IAAI,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAE7D,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,OAAO,CACjB,4BAA4B,EAC5B,WAAW,EACX,OAAO,EACP,IAAI,CAAC,MAAM,CAAC,UAAU,CACvB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,IAAY;QAClD,8DAA8D;QAC9D,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;gBACvD,OAAO,EAAE,6DAA6D;gBACtE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;aAC7B,CAAC,CAAC;YACH,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;YAClC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;YAEjC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;gBACtD,OAAO,EAAE,mEAAmE;gBAC5E,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;aAC7B,CAAC,CAAC;YACH,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;YACjC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,CAAC;QAED,iCAAiC;QACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,MAAM,CAAC,gBAAgB,MAAM,CAAC,CAAC;QAE3E,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC,oBAAoB,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,aAAa,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9H,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,mBAAmB,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,aAAa,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5H,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC,sBAAsB,EACtB,WAAW,EACX,UAAU,EACV,IAAI,CAAC,MAAM,CAAC,aAAa,CAC1B,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAEpD,yDAAyD;QACzD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;YACjC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;YAEjC,iEAAiE;YACjE,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iEAAiE;IAEjE;;;OAGG;IACK,KAAK,CAAC,OAAO,CACnB,YAAoB,EACpB,WAAmB,EACnB,IAAgB,EAChB,KAAc;QAEd,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,yEAAyE;YACzE,OAAO,yBAAyB,IAAI,yBAAyB,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC;QAClG,CAAC;QAED,MAAM,UAAU,GAAe;YAC7B,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;SAC1B,CAAC;QACF,IAAI,KAAK,EAAE,CAAC;YACV,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;QAE1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;gBACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;gBACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;aACvC,CAAC,CAAC;YAEH,oBAAoB;YACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;YAC7C,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;YAE/C,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC9B,IAAI;gBACJ,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,qBAAqB,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,iEAAiE;IAEjE;;;OAGG;IACK,KAAK,CAAC,WAAW,CACvB,QAAgB,EAChB,IAA6B;QAE7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;QACnE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAa;gBACrB,EAAE,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBACpE,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,IAAI;aAChB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CACnD,IAAI,EACJ,IAAI,CAAC,MAAM,CAAC,WAAW,CACxB,CAAC;YAEF,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,OAAO,EAAE,EAAE,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,iEAAiE;IAEjE;;;OAGG;IACK,qBAAqB,CAC3B,QAAgB;QAEhB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;YAE9D,MAAM,QAAQ,GACZ,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;gBACjC,CAAC,CAAC,MAAM,CAAC,QAAQ;gBACjB,CAAC,CAAC,sBAAsB,CAAC;YAE7B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,qFAAqF;YACrF,OAAO;gBACL,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,EAAE;aACX,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,GAAc;QAChC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QAE9E,OAAO,GAAG;aACP,MAAM,CACL,CAAC,IAAI,EAAmC,EAAE,CACxC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAC5C;aACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,KAAK,GAAgB;gBACzB,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAkB,CAAC;oBACpD,CAAC,CAAE,IAAI,CAAC,QAAoC;oBAC5C,CAAC,CAAC,OAAO;gBACX,WAAW,EACT,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;oBAClC,CAAC,CAAC,IAAI,CAAC,WAAW;oBAClB,CAAC,CAAC,gBAAgB;aACvB,CAAC;YAEF,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,2CAA2C;gBAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACzB,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACxC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACrC,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,QAAgB;QAC5C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;YAE9D,MAAM,KAAK,GACT,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;gBAC9B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAC,EAAE,CAAC;YAET,OAAO;gBACL,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB;gBAClG,KAAK;gBACL,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;gBAChF,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;gBAChF,cAAc,EAAE,OAAO,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI;gBACzF,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB;aACrF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;YACvD,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;gBACjB,cAAc,EAAE,IAAI;gBACpB,OAAO,EAAE,0CAA0C,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;aAClF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iEAAiE;IAEjE;;OAEG;IACK,WAAW,CAAC,IAAY;QAC9B,oCAAoC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAChE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEpC,8BAA8B;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAC3B,eAAmC,EACnC,KAAkB;QAElB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,eAAe,EAAE,CAAC;YACpB,mEAAmE;YACnE,QAAQ,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,KAAK,UAAU,CAAC,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;QAEpE,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;YACnF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;YAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;YAE7E,QAAQ,CAAC,IAAI,CACX,eAAe,aAAa,YAAY,UAAU,YAAY,UAAU,EAAE,CAC3E,CAAC;YAEF,8CAA8C;YAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAC3D,CAAC;YACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,QAAQ,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBACpD,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;oBAC9B,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC1E,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;wBACrB,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CACX,yBAAyB,KAAK,CAAC,cAAc,CAAC,KAAK,SAAS,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,CACjH,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,iBAAiC;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAE9C,+DAA+D;QAC/D,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,WAAW,CAAC;YAChE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,OAAO,GACX,iBAAiB,CAAC,MAAM;YACxB,iBAAiB,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAE1D,IAAI,OAAe,CAAC;QACpB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,GAAG,uCAAuC,UAAU,qCAAqC,iBAAiB,CAAC,KAAK,OAAO,CAAC;QACjI,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;YAC5C,OAAO,GAAG,wBAAwB,UAAU,0BAA0B,iBAAiB,CAAC,KAAK,OAAO,CAAC;QACvG,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5D,OAAO,GAAG,gDAAgD,UAAU,0BAA0B,iBAAiB,CAAC,KAAK,OAAO,CAAC;QAC/H,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7E,OAAO,GAAG,oBAAoB,UAAU,iDAAiD,IAAI,CAAC,MAAM,CAAC,gBAAgB,mBAAmB,iBAAiB,CAAC,KAAK,6BAA6B,WAAW,GAAG,CAAC;QAC7M,CAAC;QAED,OAAO;YACL,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,iBAAiB,CAAC,KAAK;YACnC,eAAe,EAAE,IAAI,CAAC,WAAW;YACjC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YACpC,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,IAAY;QACnC,kCAAkC;QAClC,MAAM,WAAW,GAAG,0CAA0C,CAAC;QAC/D,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,0CAA0C;IAClC,eAAe;QACrB,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACrD,CAAC;IAED,wCAAwC;IAChC,QAAQ,CAAC,IAAY,EAAE,SAAiB;QAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC;IAC1C,CAAC;IAED,iEAAiE;IAEjE,wCAAwC;IACxC,kBAAkB;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,0CAA0C;IAC1C,iBAAiB;QACf,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,kDAAkD;IAClD,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,6BAA6B;IAC7B,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,iEAAiE;IAEjE;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CACX,MAAuD;QAEvD,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module dependency-analyzer
|
|
3
|
+
* @description TypeScript/JavaScript file import graph analyzer.
|
|
4
|
+
* Determines which files can be modified independently vs which must be modified together.
|
|
5
|
+
*/
|
|
6
|
+
/** Represents a single file node in the dependency graph. */
|
|
7
|
+
export interface FileNode {
|
|
8
|
+
/** Absolute file path */
|
|
9
|
+
path: string;
|
|
10
|
+
/** Detected language (ts, tsx, js, jsx) */
|
|
11
|
+
language: string;
|
|
12
|
+
/** Exported symbol names */
|
|
13
|
+
exports: string[];
|
|
14
|
+
/** Import references */
|
|
15
|
+
imports: ImportRef[];
|
|
16
|
+
/** Estimated cyclomatic complexity */
|
|
17
|
+
complexity: number;
|
|
18
|
+
}
|
|
19
|
+
/** A single import reference from a file. */
|
|
20
|
+
export interface ImportRef {
|
|
21
|
+
/** The import specifier (path string) */
|
|
22
|
+
source: string;
|
|
23
|
+
/** Imported symbol names */
|
|
24
|
+
symbols: string[];
|
|
25
|
+
/** Whether this is a type-only import */
|
|
26
|
+
isTypeOnly: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** Full dependency graph for a project. */
|
|
29
|
+
export interface FileDependencyGraph {
|
|
30
|
+
/** Map from absolute path to FileNode */
|
|
31
|
+
nodes: Map<string, FileNode>;
|
|
32
|
+
/** Map from absolute path to list of absolute paths it imports */
|
|
33
|
+
edges: Map<string, string[]>;
|
|
34
|
+
}
|
|
35
|
+
/** A group of files that can (or cannot) be modified in parallel. */
|
|
36
|
+
export interface IndependentGroup {
|
|
37
|
+
/** Absolute file paths in this group */
|
|
38
|
+
files: string[];
|
|
39
|
+
/** Whether files in this group can be modified in parallel */
|
|
40
|
+
canParallelize: boolean;
|
|
41
|
+
/** Human-readable reason */
|
|
42
|
+
reason: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Analyzes TypeScript/JavaScript import dependency graphs.
|
|
46
|
+
*
|
|
47
|
+
* Scans project directories, parses import/export statements via regex,
|
|
48
|
+
* and provides utilities for grouping files by independence and detecting
|
|
49
|
+
* circular dependencies.
|
|
50
|
+
*/
|
|
51
|
+
export declare class DependencyAnalyzer {
|
|
52
|
+
/**
|
|
53
|
+
* Analyze a project directory and build an import dependency graph.
|
|
54
|
+
* Scans all .ts/.js/.tsx/.jsx files, parses import/export statements via regex.
|
|
55
|
+
*
|
|
56
|
+
* @param projectPath - Absolute path to the project root
|
|
57
|
+
* @returns The complete file dependency graph
|
|
58
|
+
*/
|
|
59
|
+
analyze(projectPath: string): Promise<FileDependencyGraph>;
|
|
60
|
+
/**
|
|
61
|
+
* Given target files to modify, group them into independent sets
|
|
62
|
+
* that can be modified in parallel without conflicts.
|
|
63
|
+
*
|
|
64
|
+
* Two files are independent if neither imports the other (directly or transitively).
|
|
65
|
+
*
|
|
66
|
+
* @param graph - The dependency graph
|
|
67
|
+
* @param targetFiles - Files intended for modification
|
|
68
|
+
* @returns Groups of files with parallelization info
|
|
69
|
+
*/
|
|
70
|
+
groupIndependentFiles(graph: FileDependencyGraph, targetFiles: string[]): IndependentGroup[];
|
|
71
|
+
/**
|
|
72
|
+
* Find all files that would be affected by changes to the given files
|
|
73
|
+
* (reverse dependency lookup).
|
|
74
|
+
*
|
|
75
|
+
* @param graph - The dependency graph
|
|
76
|
+
* @param changedFiles - Files that have been or will be changed
|
|
77
|
+
* @returns Absolute paths of all affected files (excluding the changed files themselves)
|
|
78
|
+
*/
|
|
79
|
+
findAffectedFiles(graph: FileDependencyGraph, changedFiles: string[]): string[];
|
|
80
|
+
/**
|
|
81
|
+
* Detect strongly connected components (circular dependencies)
|
|
82
|
+
* using Tarjan's algorithm. Files in an SCC must be modified together.
|
|
83
|
+
*
|
|
84
|
+
* @param graph - The dependency graph
|
|
85
|
+
* @returns Array of SCCs (each SCC is an array of file paths). Only SCCs with 2+ files are returned.
|
|
86
|
+
*/
|
|
87
|
+
findCircularDependencies(graph: FileDependencyGraph): string[][];
|
|
88
|
+
/**
|
|
89
|
+
* Recursively collect all source files under a directory,
|
|
90
|
+
* skipping excluded directories.
|
|
91
|
+
*/
|
|
92
|
+
private collectSourceFiles;
|
|
93
|
+
/** Parse a single file's imports, exports, and complexity. */
|
|
94
|
+
private parseFile;
|
|
95
|
+
/** Parse all import statements from file content. */
|
|
96
|
+
private parseImports;
|
|
97
|
+
/** Parse all export declarations from file content. */
|
|
98
|
+
private parseExports;
|
|
99
|
+
/** Estimate cyclomatic complexity of file content. */
|
|
100
|
+
private estimateComplexity;
|
|
101
|
+
/**
|
|
102
|
+
* Resolve a relative import path to an absolute file path.
|
|
103
|
+
* Returns undefined for external/package imports.
|
|
104
|
+
*/
|
|
105
|
+
private resolveImport;
|
|
106
|
+
/**
|
|
107
|
+
* Get transitive dependencies in a given direction.
|
|
108
|
+
* "forward" = files this file depends on.
|
|
109
|
+
* "reverse" = files that depend on this file.
|
|
110
|
+
*/
|
|
111
|
+
private getTransitiveDeps;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=dependency-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-analyzer.d.ts","sourceRoot":"","sources":["../src/dependency-analyzer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,6DAA6D;AAC7D,MAAM,WAAW,QAAQ;IACvB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wBAAwB;IACxB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,6CAA6C;AAC7C,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yCAAyC;IACzC,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,2CAA2C;AAC3C,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7B,kEAAkE;IAClE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC9B;AAED,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,8DAA8D;IAC9D,cAAc,EAAE,OAAO,CAAC;IACxB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AA6CD;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAC7B;;;;;;OAMG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA4BhE;;;;;;;;;OASG;IACH,qBAAqB,CACnB,KAAK,EAAE,mBAAmB,EAC1B,WAAW,EAAE,MAAM,EAAE,GACpB,gBAAgB,EAAE;IAsErB;;;;;;;OAOG;IACH,iBAAiB,CACf,KAAK,EAAE,mBAAmB,EAC1B,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,EAAE;IA2CX;;;;;;OAMG;IACH,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,EAAE,EAAE;IAqDhE;;;OAGG;YACW,kBAAkB;IAuBhC,8DAA8D;IAC9D,OAAO,CAAC,SAAS;IAejB,qDAAqD;IACrD,OAAO,CAAC,YAAY;IAkDpB,uDAAuD;IACvD,OAAO,CAAC,YAAY;IAiCpB,sDAAsD;IACtD,OAAO,CAAC,kBAAkB;IAK1B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAuCrB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CA0C1B"}
|
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module dependency-analyzer
|
|
3
|
+
* @description TypeScript/JavaScript file import graph analyzer.
|
|
4
|
+
* Determines which files can be modified independently vs which must be modified together.
|
|
5
|
+
*/
|
|
6
|
+
import { readdir, readFile } from "node:fs/promises";
|
|
7
|
+
import { join, resolve, dirname, extname } from "node:path";
|
|
8
|
+
// ─── Constants ───
|
|
9
|
+
const SOURCE_EXTENSIONS = new Set([".ts", ".tsx", ".js", ".jsx"]);
|
|
10
|
+
const SKIP_DIRS = new Set([
|
|
11
|
+
"node_modules",
|
|
12
|
+
"dist",
|
|
13
|
+
".git",
|
|
14
|
+
"build",
|
|
15
|
+
"coverage",
|
|
16
|
+
".next",
|
|
17
|
+
".turbo",
|
|
18
|
+
"__pycache__",
|
|
19
|
+
]);
|
|
20
|
+
// ─── Regex patterns ───
|
|
21
|
+
// import { X, Y } from "Z" | import X from "Z" | import * as X from "Z"
|
|
22
|
+
const IMPORT_RE = /import\s+(?:type\s+)?(?:\{([^}]*)\}|(\w+)|\*\s+as\s+(\w+))\s+from\s+["']([^"']+)["']/g;
|
|
23
|
+
// import "Z" (side-effect)
|
|
24
|
+
const IMPORT_SIDE_EFFECT_RE = /import\s+["']([^"']+)["']/g;
|
|
25
|
+
// export { X } from "Z" (re-exports)
|
|
26
|
+
const RE_EXPORT_RE = /export\s+(?:type\s+)?\{([^}]*)\}\s+from\s+["']([^"']+)["']/g;
|
|
27
|
+
// require("Z")
|
|
28
|
+
const REQUIRE_RE = /require\s*\(\s*["']([^"']+)["']\s*\)/g;
|
|
29
|
+
// Named exports: export function/class/const/let/var/interface/type/enum/abstract
|
|
30
|
+
const EXPORT_NAMED_RE = /export\s+(?:declare\s+)?(?:abstract\s+)?(?:async\s+)?(?:function\s*\*?|class|const|let|var|interface|type|enum)\s+(\w+)/g;
|
|
31
|
+
// export default
|
|
32
|
+
const EXPORT_DEFAULT_RE = /export\s+default\s+/g;
|
|
33
|
+
// export { X, Y } (without "from")
|
|
34
|
+
const EXPORT_LIST_RE = /export\s+\{([^}]*)\}(?!\s*from)/g;
|
|
35
|
+
// Complexity indicators
|
|
36
|
+
const COMPLEXITY_RE = /\b(?:function\s+\w+|(?:async\s+)?(?:\w+\s*\([^)]*\)\s*\{)|if\s*\(|for\s*\(|while\s*\(|switch\s*\(|catch\s*\(|\?\?|&&|\|\||=>)/g;
|
|
37
|
+
/**
|
|
38
|
+
* Analyzes TypeScript/JavaScript import dependency graphs.
|
|
39
|
+
*
|
|
40
|
+
* Scans project directories, parses import/export statements via regex,
|
|
41
|
+
* and provides utilities for grouping files by independence and detecting
|
|
42
|
+
* circular dependencies.
|
|
43
|
+
*/
|
|
44
|
+
export class DependencyAnalyzer {
|
|
45
|
+
/**
|
|
46
|
+
* Analyze a project directory and build an import dependency graph.
|
|
47
|
+
* Scans all .ts/.js/.tsx/.jsx files, parses import/export statements via regex.
|
|
48
|
+
*
|
|
49
|
+
* @param projectPath - Absolute path to the project root
|
|
50
|
+
* @returns The complete file dependency graph
|
|
51
|
+
*/
|
|
52
|
+
async analyze(projectPath) {
|
|
53
|
+
const absRoot = resolve(projectPath);
|
|
54
|
+
const files = await this.collectSourceFiles(absRoot);
|
|
55
|
+
const nodes = new Map();
|
|
56
|
+
const edges = new Map();
|
|
57
|
+
// First pass: parse all files
|
|
58
|
+
for (const filePath of files) {
|
|
59
|
+
const content = await readFile(filePath, "utf-8");
|
|
60
|
+
const node = this.parseFile(filePath, content);
|
|
61
|
+
nodes.set(filePath, node);
|
|
62
|
+
}
|
|
63
|
+
// Second pass: resolve import paths and build edges
|
|
64
|
+
for (const [filePath, node] of nodes) {
|
|
65
|
+
const resolvedImports = [];
|
|
66
|
+
for (const imp of node.imports) {
|
|
67
|
+
const resolved = this.resolveImport(filePath, imp.source, files);
|
|
68
|
+
if (resolved) {
|
|
69
|
+
resolvedImports.push(resolved);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
edges.set(filePath, [...new Set(resolvedImports)]);
|
|
73
|
+
}
|
|
74
|
+
return { nodes, edges };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Given target files to modify, group them into independent sets
|
|
78
|
+
* that can be modified in parallel without conflicts.
|
|
79
|
+
*
|
|
80
|
+
* Two files are independent if neither imports the other (directly or transitively).
|
|
81
|
+
*
|
|
82
|
+
* @param graph - The dependency graph
|
|
83
|
+
* @param targetFiles - Files intended for modification
|
|
84
|
+
* @returns Groups of files with parallelization info
|
|
85
|
+
*/
|
|
86
|
+
groupIndependentFiles(graph, targetFiles) {
|
|
87
|
+
// Build transitive dependency sets (both directions) for each target file
|
|
88
|
+
const transitiveDeps = new Map();
|
|
89
|
+
for (const file of targetFiles) {
|
|
90
|
+
const forward = this.getTransitiveDeps(graph, file, "forward");
|
|
91
|
+
const reverse = this.getTransitiveDeps(graph, file, "reverse");
|
|
92
|
+
const all = new Set([...forward, ...reverse]);
|
|
93
|
+
all.delete(file);
|
|
94
|
+
transitiveDeps.set(file, all);
|
|
95
|
+
}
|
|
96
|
+
// Build conflict graph among target files
|
|
97
|
+
// Two target files conflict if one is in the other's transitive deps
|
|
98
|
+
const conflictAdj = new Map();
|
|
99
|
+
for (const f of targetFiles) {
|
|
100
|
+
conflictAdj.set(f, new Set());
|
|
101
|
+
}
|
|
102
|
+
for (let i = 0; i < targetFiles.length; i++) {
|
|
103
|
+
for (let j = i + 1; j < targetFiles.length; j++) {
|
|
104
|
+
const a = targetFiles[i];
|
|
105
|
+
const b = targetFiles[j];
|
|
106
|
+
const depsA = transitiveDeps.get(a);
|
|
107
|
+
const depsB = transitiveDeps.get(b);
|
|
108
|
+
if (depsA.has(b) || depsB.has(a)) {
|
|
109
|
+
conflictAdj.get(a).add(b);
|
|
110
|
+
conflictAdj.get(b).add(a);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Greedy graph coloring to find independent groups
|
|
115
|
+
const groups = [];
|
|
116
|
+
const assigned = new Set();
|
|
117
|
+
for (const file of targetFiles) {
|
|
118
|
+
if (assigned.has(file))
|
|
119
|
+
continue;
|
|
120
|
+
const group = [file];
|
|
121
|
+
assigned.add(file);
|
|
122
|
+
// Try to add other unassigned files that don't conflict with any in group
|
|
123
|
+
for (const candidate of targetFiles) {
|
|
124
|
+
if (assigned.has(candidate))
|
|
125
|
+
continue;
|
|
126
|
+
const conflicts = conflictAdj.get(candidate);
|
|
127
|
+
const canAdd = group.every((g) => !conflicts.has(g));
|
|
128
|
+
if (canAdd) {
|
|
129
|
+
group.push(candidate);
|
|
130
|
+
assigned.add(candidate);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (group.length === 1) {
|
|
134
|
+
groups.push({
|
|
135
|
+
files: group,
|
|
136
|
+
canParallelize: true,
|
|
137
|
+
reason: "Single file, no dependency conflicts",
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
groups.push({
|
|
142
|
+
files: group,
|
|
143
|
+
canParallelize: true,
|
|
144
|
+
reason: `${group.length} files with no mutual import dependencies`,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return groups;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Find all files that would be affected by changes to the given files
|
|
152
|
+
* (reverse dependency lookup).
|
|
153
|
+
*
|
|
154
|
+
* @param graph - The dependency graph
|
|
155
|
+
* @param changedFiles - Files that have been or will be changed
|
|
156
|
+
* @returns Absolute paths of all affected files (excluding the changed files themselves)
|
|
157
|
+
*/
|
|
158
|
+
findAffectedFiles(graph, changedFiles) {
|
|
159
|
+
const affected = new Set();
|
|
160
|
+
const visited = new Set();
|
|
161
|
+
// Build reverse edge map
|
|
162
|
+
const reverseEdges = new Map();
|
|
163
|
+
for (const [from, tos] of graph.edges) {
|
|
164
|
+
for (const to of tos) {
|
|
165
|
+
let rev = reverseEdges.get(to);
|
|
166
|
+
if (!rev) {
|
|
167
|
+
rev = [];
|
|
168
|
+
reverseEdges.set(to, rev);
|
|
169
|
+
}
|
|
170
|
+
rev.push(from);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// BFS from each changed file along reverse edges
|
|
174
|
+
const queue = [...changedFiles];
|
|
175
|
+
for (const f of changedFiles) {
|
|
176
|
+
visited.add(f);
|
|
177
|
+
}
|
|
178
|
+
while (queue.length > 0) {
|
|
179
|
+
const current = queue.shift();
|
|
180
|
+
const dependents = reverseEdges.get(current) ?? [];
|
|
181
|
+
for (const dep of dependents) {
|
|
182
|
+
if (!visited.has(dep)) {
|
|
183
|
+
visited.add(dep);
|
|
184
|
+
affected.add(dep);
|
|
185
|
+
queue.push(dep);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Remove the changed files themselves from affected set
|
|
190
|
+
for (const f of changedFiles) {
|
|
191
|
+
affected.delete(f);
|
|
192
|
+
}
|
|
193
|
+
return [...affected];
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Detect strongly connected components (circular dependencies)
|
|
197
|
+
* using Tarjan's algorithm. Files in an SCC must be modified together.
|
|
198
|
+
*
|
|
199
|
+
* @param graph - The dependency graph
|
|
200
|
+
* @returns Array of SCCs (each SCC is an array of file paths). Only SCCs with 2+ files are returned.
|
|
201
|
+
*/
|
|
202
|
+
findCircularDependencies(graph) {
|
|
203
|
+
let index = 0;
|
|
204
|
+
const stack = [];
|
|
205
|
+
const onStack = new Set();
|
|
206
|
+
const indices = new Map();
|
|
207
|
+
const lowlinks = new Map();
|
|
208
|
+
const result = [];
|
|
209
|
+
const strongConnect = (v) => {
|
|
210
|
+
indices.set(v, index);
|
|
211
|
+
lowlinks.set(v, index);
|
|
212
|
+
index++;
|
|
213
|
+
stack.push(v);
|
|
214
|
+
onStack.add(v);
|
|
215
|
+
const successors = graph.edges.get(v) ?? [];
|
|
216
|
+
for (const w of successors) {
|
|
217
|
+
if (!indices.has(w)) {
|
|
218
|
+
strongConnect(w);
|
|
219
|
+
lowlinks.set(v, Math.min(lowlinks.get(v), lowlinks.get(w)));
|
|
220
|
+
}
|
|
221
|
+
else if (onStack.has(w)) {
|
|
222
|
+
lowlinks.set(v, Math.min(lowlinks.get(v), indices.get(w)));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// If v is a root node, pop the SCC
|
|
226
|
+
if (lowlinks.get(v) === indices.get(v)) {
|
|
227
|
+
const scc = [];
|
|
228
|
+
let w;
|
|
229
|
+
do {
|
|
230
|
+
w = stack.pop();
|
|
231
|
+
onStack.delete(w);
|
|
232
|
+
scc.push(w);
|
|
233
|
+
} while (w !== v);
|
|
234
|
+
// Only include SCCs with actual cycles (2+ nodes)
|
|
235
|
+
if (scc.length > 1) {
|
|
236
|
+
result.push(scc);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
for (const node of graph.nodes.keys()) {
|
|
241
|
+
if (!indices.has(node)) {
|
|
242
|
+
strongConnect(node);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return result;
|
|
246
|
+
}
|
|
247
|
+
// ─── Private helpers ───
|
|
248
|
+
/**
|
|
249
|
+
* Recursively collect all source files under a directory,
|
|
250
|
+
* skipping excluded directories.
|
|
251
|
+
*/
|
|
252
|
+
async collectSourceFiles(dir) {
|
|
253
|
+
const results = [];
|
|
254
|
+
let entries;
|
|
255
|
+
try {
|
|
256
|
+
entries = await readdir(dir, { withFileTypes: true });
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
return results;
|
|
260
|
+
}
|
|
261
|
+
for (const entry of entries) {
|
|
262
|
+
const fullPath = join(dir, entry.name);
|
|
263
|
+
if (entry.isDirectory()) {
|
|
264
|
+
if (!SKIP_DIRS.has(entry.name)) {
|
|
265
|
+
const sub = await this.collectSourceFiles(fullPath);
|
|
266
|
+
results.push(...sub);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else if (entry.isFile() && SOURCE_EXTENSIONS.has(extname(entry.name))) {
|
|
270
|
+
results.push(fullPath);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return results;
|
|
274
|
+
}
|
|
275
|
+
/** Parse a single file's imports, exports, and complexity. */
|
|
276
|
+
parseFile(filePath, content) {
|
|
277
|
+
const ext = extname(filePath).slice(1); // remove leading dot
|
|
278
|
+
const imports = this.parseImports(content);
|
|
279
|
+
const exports = this.parseExports(content);
|
|
280
|
+
const complexity = this.estimateComplexity(content);
|
|
281
|
+
return {
|
|
282
|
+
path: filePath,
|
|
283
|
+
language: ext,
|
|
284
|
+
exports,
|
|
285
|
+
imports,
|
|
286
|
+
complexity,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
/** Parse all import statements from file content. */
|
|
290
|
+
parseImports(content) {
|
|
291
|
+
const refs = [];
|
|
292
|
+
// Standard imports: import { X } from "Y", import X from "Y", import * as X from "Y"
|
|
293
|
+
let match;
|
|
294
|
+
const importRe = new RegExp(IMPORT_RE.source, "g");
|
|
295
|
+
while ((match = importRe.exec(content)) !== null) {
|
|
296
|
+
const namedGroup = match[1]; // { X, Y }
|
|
297
|
+
const defaultImport = match[2]; // X
|
|
298
|
+
const namespaceImport = match[3]; // * as X
|
|
299
|
+
const source = match[4];
|
|
300
|
+
const symbols = [];
|
|
301
|
+
if (namedGroup) {
|
|
302
|
+
symbols.push(...namedGroup.split(",").map((s) => s.trim().split(/\s+as\s+/)[0]).filter(Boolean));
|
|
303
|
+
}
|
|
304
|
+
if (defaultImport)
|
|
305
|
+
symbols.push(defaultImport);
|
|
306
|
+
if (namespaceImport)
|
|
307
|
+
symbols.push(namespaceImport);
|
|
308
|
+
// Detect type-only: check if "type" keyword precedes the symbols
|
|
309
|
+
const fullMatch = match[0];
|
|
310
|
+
const isTypeOnly = /import\s+type\s+/.test(fullMatch);
|
|
311
|
+
refs.push({ source, symbols, isTypeOnly });
|
|
312
|
+
}
|
|
313
|
+
// Re-exports: export { X } from "Y"
|
|
314
|
+
const reExportRe = new RegExp(RE_EXPORT_RE.source, "g");
|
|
315
|
+
while ((match = reExportRe.exec(content)) !== null) {
|
|
316
|
+
const namedGroup = match[1];
|
|
317
|
+
const source = match[2];
|
|
318
|
+
const symbols = namedGroup
|
|
319
|
+
.split(",")
|
|
320
|
+
.map((s) => s.trim().split(/\s+as\s+/)[0])
|
|
321
|
+
.filter(Boolean);
|
|
322
|
+
const isTypeOnly = /export\s+type\s+\{/.test(match[0]);
|
|
323
|
+
refs.push({ source, symbols, isTypeOnly });
|
|
324
|
+
}
|
|
325
|
+
// CJS require
|
|
326
|
+
const requireRe = new RegExp(REQUIRE_RE.source, "g");
|
|
327
|
+
while ((match = requireRe.exec(content)) !== null) {
|
|
328
|
+
refs.push({ source: match[1], symbols: [], isTypeOnly: false });
|
|
329
|
+
}
|
|
330
|
+
return refs;
|
|
331
|
+
}
|
|
332
|
+
/** Parse all export declarations from file content. */
|
|
333
|
+
parseExports(content) {
|
|
334
|
+
const exports = [];
|
|
335
|
+
let match;
|
|
336
|
+
// Named exports
|
|
337
|
+
const namedRe = new RegExp(EXPORT_NAMED_RE.source, "g");
|
|
338
|
+
while ((match = namedRe.exec(content)) !== null) {
|
|
339
|
+
exports.push(match[1]);
|
|
340
|
+
}
|
|
341
|
+
// export default
|
|
342
|
+
const defaultRe = new RegExp(EXPORT_DEFAULT_RE.source, "g");
|
|
343
|
+
if (defaultRe.exec(content) !== null) {
|
|
344
|
+
exports.push("default");
|
|
345
|
+
}
|
|
346
|
+
// export { X, Y }
|
|
347
|
+
const listRe = new RegExp(EXPORT_LIST_RE.source, "g");
|
|
348
|
+
while ((match = listRe.exec(content)) !== null) {
|
|
349
|
+
const symbols = match[1]
|
|
350
|
+
.split(",")
|
|
351
|
+
.map((s) => {
|
|
352
|
+
const parts = s.trim().split(/\s+as\s+/);
|
|
353
|
+
return parts.length > 1 ? parts[1].trim() : parts[0].trim();
|
|
354
|
+
})
|
|
355
|
+
.filter(Boolean);
|
|
356
|
+
exports.push(...symbols);
|
|
357
|
+
}
|
|
358
|
+
return [...new Set(exports)];
|
|
359
|
+
}
|
|
360
|
+
/** Estimate cyclomatic complexity of file content. */
|
|
361
|
+
estimateComplexity(content) {
|
|
362
|
+
const matches = content.match(COMPLEXITY_RE);
|
|
363
|
+
return matches ? matches.length : 1;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Resolve a relative import path to an absolute file path.
|
|
367
|
+
* Returns undefined for external/package imports.
|
|
368
|
+
*/
|
|
369
|
+
resolveImport(fromFile, importPath, knownFiles) {
|
|
370
|
+
// Only resolve relative imports
|
|
371
|
+
if (!importPath.startsWith(".")) {
|
|
372
|
+
return undefined;
|
|
373
|
+
}
|
|
374
|
+
const dir = dirname(fromFile);
|
|
375
|
+
let resolved = resolve(dir, importPath);
|
|
376
|
+
// Try exact match first
|
|
377
|
+
if (knownFiles.includes(resolved))
|
|
378
|
+
return resolved;
|
|
379
|
+
// Strip .js extension and try .ts (common in ESM TS projects)
|
|
380
|
+
if (resolved.endsWith(".js")) {
|
|
381
|
+
const tsPath = resolved.slice(0, -3) + ".ts";
|
|
382
|
+
if (knownFiles.includes(tsPath))
|
|
383
|
+
return tsPath;
|
|
384
|
+
const tsxPath = resolved.slice(0, -3) + ".tsx";
|
|
385
|
+
if (knownFiles.includes(tsxPath))
|
|
386
|
+
return tsxPath;
|
|
387
|
+
}
|
|
388
|
+
// Try adding extensions
|
|
389
|
+
for (const ext of [".ts", ".tsx", ".js", ".jsx"]) {
|
|
390
|
+
const withExt = resolved + ext;
|
|
391
|
+
if (knownFiles.includes(withExt))
|
|
392
|
+
return withExt;
|
|
393
|
+
}
|
|
394
|
+
// Try as directory with index file
|
|
395
|
+
for (const ext of [".ts", ".tsx", ".js", ".jsx"]) {
|
|
396
|
+
const indexPath = join(resolved, `index${ext}`);
|
|
397
|
+
if (knownFiles.includes(indexPath))
|
|
398
|
+
return indexPath;
|
|
399
|
+
}
|
|
400
|
+
return undefined;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Get transitive dependencies in a given direction.
|
|
404
|
+
* "forward" = files this file depends on.
|
|
405
|
+
* "reverse" = files that depend on this file.
|
|
406
|
+
*/
|
|
407
|
+
getTransitiveDeps(graph, startFile, direction) {
|
|
408
|
+
const result = new Set();
|
|
409
|
+
const visited = new Set();
|
|
410
|
+
const queue = [startFile];
|
|
411
|
+
visited.add(startFile);
|
|
412
|
+
// Build reverse edge map if needed
|
|
413
|
+
let edgeMap;
|
|
414
|
+
if (direction === "forward") {
|
|
415
|
+
edgeMap = graph.edges;
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
edgeMap = new Map();
|
|
419
|
+
for (const [from, tos] of graph.edges) {
|
|
420
|
+
for (const to of tos) {
|
|
421
|
+
let rev = edgeMap.get(to);
|
|
422
|
+
if (!rev) {
|
|
423
|
+
rev = [];
|
|
424
|
+
edgeMap.set(to, rev);
|
|
425
|
+
}
|
|
426
|
+
rev.push(from);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
while (queue.length > 0) {
|
|
431
|
+
const current = queue.shift();
|
|
432
|
+
const neighbors = edgeMap.get(current) ?? [];
|
|
433
|
+
for (const n of neighbors) {
|
|
434
|
+
if (!visited.has(n)) {
|
|
435
|
+
visited.add(n);
|
|
436
|
+
result.add(n);
|
|
437
|
+
queue.push(n);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
return result;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
//# sourceMappingURL=dependency-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-analyzer.js","sourceRoot":"","sources":["../src/dependency-analyzer.ts"],"names":[],"mappings":"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"}
|