@contractspec/bundle.workspace 1.52.0 → 1.53.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.
Files changed (149) hide show
  1. package/dist/adapters/ai.d.mts +2 -2
  2. package/dist/adapters/ai.d.mts.map +1 -1
  3. package/dist/adapters/ai.mjs.map +1 -1
  4. package/dist/adapters/factory.d.mts +2 -2
  5. package/dist/adapters/factory.d.mts.map +1 -1
  6. package/dist/adapters/factory.mjs +3 -14
  7. package/dist/adapters/factory.mjs.map +1 -1
  8. package/dist/adapters/fs.bun.d.mts +11 -0
  9. package/dist/adapters/fs.bun.d.mts.map +1 -0
  10. package/dist/adapters/fs.bun.mjs +81 -0
  11. package/dist/adapters/fs.bun.mjs.map +1 -0
  12. package/dist/adapters/fs.d.mts +2 -8
  13. package/dist/adapters/fs.d.mts.map +1 -1
  14. package/dist/adapters/fs.mjs +4 -88
  15. package/dist/adapters/fs.mjs.map +1 -1
  16. package/dist/adapters/fs.node.d.mts +11 -0
  17. package/dist/adapters/fs.node.d.mts.map +1 -0
  18. package/dist/adapters/fs.node.mjs +84 -0
  19. package/dist/adapters/fs.node.mjs.map +1 -0
  20. package/dist/adapters/index.d.mts +3 -1
  21. package/dist/adapters/index.mjs +3 -1
  22. package/dist/ai/agents/index.d.mts +6 -0
  23. package/dist/ai/agents/orchestrator.d.mts +4 -4
  24. package/dist/ai/agents/orchestrator.d.mts.map +1 -1
  25. package/dist/ai/agents/orchestrator.mjs +5 -0
  26. package/dist/ai/agents/orchestrator.mjs.map +1 -1
  27. package/dist/ai/agents/simple-agent.d.mts +2 -2
  28. package/dist/ai/agents/simple-agent.d.mts.map +1 -1
  29. package/dist/ai/agents/simple-agent.mjs.map +1 -1
  30. package/dist/ai/agents/types.d.mts +4 -5
  31. package/dist/ai/agents/types.d.mts.map +1 -1
  32. package/dist/ai/agents/unified-adapter.mjs +70 -0
  33. package/dist/ai/agents/unified-adapter.mjs.map +1 -0
  34. package/dist/ai/index.d.mts +3 -3
  35. package/dist/ai/index.mjs +1 -2
  36. package/dist/ai/prompts/spec-creation.mjs +1 -1
  37. package/dist/ai/providers.d.mts +3 -18
  38. package/dist/ai/providers.d.mts.map +1 -1
  39. package/dist/ai/providers.mjs +2 -22
  40. package/dist/ai/providers.mjs.map +1 -1
  41. package/dist/index.d.mts +13 -8
  42. package/dist/index.mjs +11 -7
  43. package/dist/ports/ai.d.mts +7 -3
  44. package/dist/ports/ai.d.mts.map +1 -1
  45. package/dist/ports/index.d.mts +1 -1
  46. package/dist/registry.d.mts +15 -0
  47. package/dist/registry.d.mts.map +1 -0
  48. package/dist/registry.mjs +19 -0
  49. package/dist/registry.mjs.map +1 -0
  50. package/dist/services/action-drift/service.d.mts +11 -0
  51. package/dist/services/action-drift/service.d.mts.map +1 -0
  52. package/dist/services/action-drift/service.mjs +43 -0
  53. package/dist/services/action-drift/service.mjs.map +1 -0
  54. package/dist/services/action-drift/types.d.mts +23 -0
  55. package/dist/services/action-drift/types.d.mts.map +1 -0
  56. package/dist/services/action-pr/service.d.mts +17 -0
  57. package/dist/services/action-pr/service.d.mts.map +1 -0
  58. package/dist/services/action-pr/service.mjs +205 -0
  59. package/dist/services/action-pr/service.mjs.map +1 -0
  60. package/dist/services/action-pr/types.d.mts +67 -0
  61. package/dist/services/action-pr/types.d.mts.map +1 -0
  62. package/dist/services/build.d.mts +3 -2
  63. package/dist/services/build.d.mts.map +1 -1
  64. package/dist/services/build.mjs.map +1 -1
  65. package/dist/services/ci-check/checks/coverage.mjs +30 -41
  66. package/dist/services/ci-check/checks/coverage.mjs.map +1 -1
  67. package/dist/services/ci-check/checks/handlers.mjs +3 -3
  68. package/dist/services/ci-check/checks/handlers.mjs.map +1 -1
  69. package/dist/services/ci-check/checks/implementation.mjs +1 -1
  70. package/dist/services/ci-check/checks/implementation.mjs.map +1 -1
  71. package/dist/services/ci-check/checks/structure.mjs +5 -6
  72. package/dist/services/ci-check/checks/structure.mjs.map +1 -1
  73. package/dist/services/ci-check/checks/test-refs.mjs +19 -29
  74. package/dist/services/ci-check/checks/test-refs.mjs.map +1 -1
  75. package/dist/services/ci-check/checks/tests.mjs +3 -3
  76. package/dist/services/ci-check/checks/tests.mjs.map +1 -1
  77. package/dist/services/ci-check/ci-check-service.d.mts.map +1 -1
  78. package/dist/services/ci-check/ci-check-service.mjs +7 -12
  79. package/dist/services/ci-check/ci-check-service.mjs.map +1 -1
  80. package/dist/services/config.d.mts +3 -3
  81. package/dist/services/config.d.mts.map +1 -1
  82. package/dist/services/config.mjs +12 -34
  83. package/dist/services/config.mjs.map +1 -1
  84. package/dist/services/create/ai-generator.d.mts +3 -3
  85. package/dist/services/create/ai-generator.d.mts.map +1 -1
  86. package/dist/services/create/ai-generator.mjs +1 -1
  87. package/dist/services/create/ai-generator.mjs.map +1 -1
  88. package/dist/services/create/index.d.mts +4 -4
  89. package/dist/services/create/index.d.mts.map +1 -1
  90. package/dist/services/create/index.mjs.map +1 -1
  91. package/dist/services/docs/docs-service.mjs +16 -13
  92. package/dist/services/docs/docs-service.mjs.map +1 -1
  93. package/dist/services/extract.mjs +2 -10
  94. package/dist/services/extract.mjs.map +1 -1
  95. package/dist/services/implementation/discovery.d.mts.map +1 -1
  96. package/dist/services/implementation/discovery.mjs +6 -14
  97. package/dist/services/implementation/discovery.mjs.map +1 -1
  98. package/dist/services/implementation/index.d.mts +1 -1
  99. package/dist/services/implementation/index.mjs +1 -1
  100. package/dist/services/implementation/resolver/index.d.mts +8 -6
  101. package/dist/services/implementation/resolver/index.d.mts.map +1 -1
  102. package/dist/services/implementation/resolver/index.mjs +33 -31
  103. package/dist/services/implementation/resolver/index.mjs.map +1 -1
  104. package/dist/services/implementation/resolver/parsers.d.mts +1 -5
  105. package/dist/services/implementation/resolver/parsers.d.mts.map +1 -1
  106. package/dist/services/implementation/resolver/parsers.mjs +1 -19
  107. package/dist/services/implementation/resolver/parsers.mjs.map +1 -1
  108. package/dist/services/implementation/types.d.mts +3 -1
  109. package/dist/services/implementation/types.d.mts.map +1 -1
  110. package/dist/services/index.d.mts +5 -1
  111. package/dist/services/index.mjs +4 -2
  112. package/dist/services/list.d.mts +4 -3
  113. package/dist/services/list.d.mts.map +1 -1
  114. package/dist/services/list.mjs +4 -2
  115. package/dist/services/list.mjs.map +1 -1
  116. package/dist/services/sync.d.mts +2 -2
  117. package/dist/services/sync.d.mts.map +1 -1
  118. package/dist/services/sync.mjs.map +1 -1
  119. package/dist/services/test/test-generator-service.d.mts +1 -1
  120. package/dist/services/test/test-service.mjs +1 -1
  121. package/dist/services/validate/blueprint-validator.mjs +1 -1
  122. package/dist/services/validate/implementation-agent-validator.d.mts +2 -2
  123. package/dist/services/validate/implementation-agent-validator.d.mts.map +1 -1
  124. package/dist/services/validate/implementation-agent-validator.mjs.map +1 -1
  125. package/dist/services/validate/implementation-validator.d.mts +4 -3
  126. package/dist/services/validate/implementation-validator.d.mts.map +1 -1
  127. package/dist/services/validate/implementation-validator.mjs +4 -13
  128. package/dist/services/validate/implementation-validator.mjs.map +1 -1
  129. package/dist/services/validate/spec-validator.d.mts +1 -1
  130. package/dist/services/validate/spec-validator.d.mts.map +1 -1
  131. package/dist/services/validate/spec-validator.mjs +11 -7
  132. package/dist/services/validate/spec-validator.mjs.map +1 -1
  133. package/dist/services/validate/tenant-validator.mjs +1 -1
  134. package/dist/services/watch.d.mts +2 -2
  135. package/dist/services/watch.d.mts.map +1 -1
  136. package/dist/services/watch.mjs.map +1 -1
  137. package/dist/utils/filter.d.mts +10 -1
  138. package/dist/utils/filter.d.mts.map +1 -1
  139. package/dist/utils/filter.mjs +28 -1
  140. package/dist/utils/filter.mjs.map +1 -1
  141. package/dist/utils/index.d.mts +2 -2
  142. package/dist/utils/index.mjs +2 -1
  143. package/package.json +11 -9
  144. package/dist/ai/client.d.mts +0 -97
  145. package/dist/ai/client.d.mts.map +0 -1
  146. package/dist/ai/client.mjs +0 -189
  147. package/dist/ai/client.mjs.map +0 -1
  148. package/dist/types/config.d.mts +0 -34
  149. package/dist/types/config.d.mts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"simple-agent.d.mts","names":[],"sources":["../../../src/ai/agents/simple-agent.ts"],"sourcesContent":[],"mappings":";;;;;AAsBmB,cALN,WAAA,YAAuB,aAKjB,CAAA;EAKI,QAAA,MAAA;EAAoB,IAAA,EAAA,QAAA;EAAR,WAAA,CAAA,MAAA,EAPL,MAOK;EA4BZ,SAAA,CAAA,KAAA,EAjCJ,SAiCI,CAAA,EAAA,OAAA;EAAoB,QAAA,CAAA,IAAA,EA5BpB,SA4BoB,CAAA,EA5BR,OA4BQ,CA5BA,WA4BA,CAAA;EAAR,QAAA,CAAA,IAAA,EAAZ,SAAY,CAAA,EAAA,OAAA,CAAQ,WAAR,CAAA;EAtCC,QAAA,WAAA"}
1
+ {"version":3,"file":"simple-agent.d.mts","names":[],"sources":["../../../src/ai/agents/simple-agent.ts"],"sourcesContent":[],"mappings":";;;;;AAsBmB,cALN,WAAA,YAAuB,aAKjB,CAAA;EAKI,QAAA,MAAA;EAAoB,IAAA,EAAA,QAAA;EAAR,WAAA,CAAA,MAAA,EAPL,yBAOK;EA4BZ,SAAA,CAAA,KAAA,EAjCJ,SAiCI,CAAA,EAAA,OAAA;EAAoB,QAAA,CAAA,IAAA,EA5BpB,SA4BoB,CAAA,EA5BR,OA4BQ,CA5BA,WA4BA,CAAA;EAAR,QAAA,CAAA,IAAA,EAAZ,SAAY,CAAA,EAAA,OAAA,CAAQ,WAAR,CAAA;EAtCC,QAAA,WAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"simple-agent.mjs","names":[],"sources":["../../../src/ai/agents/simple-agent.ts"],"sourcesContent":["/**\n * Simple LLM-based agent using direct API calls\n * This is the default fallback for basic code generation\n */\n\nimport { generateText } from 'ai';\nimport { getAIProvider } from '../providers';\nimport type { Config } from '../../types/config';\nimport type { AgentProvider, AgentResult, AgentTask } from './types';\nimport {\n buildComponentPrompt,\n buildFormPrompt,\n buildHandlerPrompt,\n buildTestPrompt,\n getCodeGenSystemPrompt,\n} from '../prompts/code-generation';\n\nexport class SimpleAgent implements AgentProvider {\n name = 'simple' as const;\n\n constructor(private config: Config) {}\n\n canHandle(_task: AgentTask): boolean {\n // Simple agent can handle all tasks as a fallback\n return true;\n }\n\n async generate(task: AgentTask): Promise<AgentResult> {\n try {\n const model = getAIProvider(this.config);\n const prompt = this.buildPrompt(task);\n\n const result = await generateText({\n model,\n prompt,\n system: getCodeGenSystemPrompt(),\n });\n\n return {\n success: true,\n code: result.text,\n metadata: {\n model: this.config.aiModel,\n provider: this.config.aiProvider,\n tokens: result.usage,\n },\n };\n } catch (error) {\n return {\n success: false,\n errors: [error instanceof Error ? error.message : String(error)],\n };\n }\n }\n\n async validate(task: AgentTask): Promise<AgentResult> {\n try {\n const model = getAIProvider(this.config);\n\n const prompt = `\nReview the following implementation against its specification.\n\nSpecification:\n${task.specCode}\n\nImplementation:\n${task.existingCode || '// No implementation provided'}\n\nProvide a detailed validation report:\n1. Does the implementation match the spec?\n2. Are there any missing features?\n3. Are there any bugs or issues?\n4. Suggestions for improvement\n`;\n\n const result = await generateText({\n model,\n prompt,\n system:\n 'You are a code review expert. Provide thorough, constructive feedback.',\n });\n\n // Parse validation result\n const hasErrors =\n result.text.toLowerCase().includes('error') ||\n result.text.toLowerCase().includes('missing') ||\n result.text.toLowerCase().includes('incorrect');\n\n return {\n success: !hasErrors,\n code: result.text,\n warnings: hasErrors\n ? ['Implementation may not match specification']\n : [],\n metadata: {\n validationType: 'simple-llm',\n },\n };\n } catch (error) {\n return {\n success: false,\n errors: [error instanceof Error ? error.message : String(error)],\n };\n }\n }\n\n private buildPrompt(task: AgentTask): string {\n switch (task.type) {\n case 'generate':\n // Infer what to generate from spec\n if (\n task.specCode.includes('.operation.') ||\n task.specCode.includes('kind:')\n ) {\n return buildHandlerPrompt(task.specCode);\n } else if (task.specCode.includes('.presentation.')) {\n return buildComponentPrompt(task.specCode);\n } else if (task.specCode.includes('.form.')) {\n return buildFormPrompt(task.specCode);\n }\n return `Generate implementation for:\\n${task.specCode}`;\n\n case 'test':\n return buildTestPrompt(\n task.specCode,\n task.existingCode || '',\n 'handler'\n );\n\n case 'validate':\n return `Validate this implementation:\\n${task.existingCode}`;\n\n default:\n return task.specCode;\n }\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,IAAa,cAAb,MAAkD;CAChD,OAAO;CAEP,YAAY,AAAQ,QAAgB;EAAhB;;CAEpB,UAAU,OAA2B;AAEnC,SAAO;;CAGT,MAAM,SAAS,MAAuC;AACpD,MAAI;GAIF,MAAM,SAAS,MAAM,aAAa;IAChC,OAJY,cAAc,KAAK,OAAO;IAKtC,QAJa,KAAK,YAAY,KAAK;IAKnC,QAAQ,wBAAwB;IACjC,CAAC;AAEF,UAAO;IACL,SAAS;IACT,MAAM,OAAO;IACb,UAAU;KACR,OAAO,KAAK,OAAO;KACnB,UAAU,KAAK,OAAO;KACtB,QAAQ,OAAO;KAChB;IACF;WACM,OAAO;AACd,UAAO;IACL,SAAS;IACT,QAAQ,CAAC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;IACjE;;;CAIL,MAAM,SAAS,MAAuC;AACpD,MAAI;GAmBF,MAAM,SAAS,MAAM,aAAa;IAChC,OAnBY,cAAc,KAAK,OAAO;IAoBtC,QAlBa;;;;EAInB,KAAK,SAAS;;;EAGd,KAAK,gBAAgB,gCAAgC;;;;;;;;IAY/C,QACE;IACH,CAAC;GAGF,MAAM,YACJ,OAAO,KAAK,aAAa,CAAC,SAAS,QAAQ,IAC3C,OAAO,KAAK,aAAa,CAAC,SAAS,UAAU,IAC7C,OAAO,KAAK,aAAa,CAAC,SAAS,YAAY;AAEjD,UAAO;IACL,SAAS,CAAC;IACV,MAAM,OAAO;IACb,UAAU,YACN,CAAC,6CAA6C,GAC9C,EAAE;IACN,UAAU,EACR,gBAAgB,cACjB;IACF;WACM,OAAO;AACd,UAAO;IACL,SAAS;IACT,QAAQ,CAAC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;IACjE;;;CAIL,AAAQ,YAAY,MAAyB;AAC3C,UAAQ,KAAK,MAAb;GACE,KAAK;AAEH,QACE,KAAK,SAAS,SAAS,cAAc,IACrC,KAAK,SAAS,SAAS,QAAQ,CAE/B,QAAO,mBAAmB,KAAK,SAAS;aAC/B,KAAK,SAAS,SAAS,iBAAiB,CACjD,QAAO,qBAAqB,KAAK,SAAS;aACjC,KAAK,SAAS,SAAS,SAAS,CACzC,QAAO,gBAAgB,KAAK,SAAS;AAEvC,WAAO,iCAAiC,KAAK;GAE/C,KAAK,OACH,QAAO,gBACL,KAAK,UACL,KAAK,gBAAgB,IACrB,UACD;GAEH,KAAK,WACH,QAAO,kCAAkC,KAAK;GAEhD,QACE,QAAO,KAAK"}
1
+ {"version":3,"file":"simple-agent.mjs","names":[],"sources":["../../../src/ai/agents/simple-agent.ts"],"sourcesContent":["/**\n * Simple LLM-based agent using direct API calls\n * This is the default fallback for basic code generation\n */\n\nimport { generateText } from 'ai';\nimport { getAIProvider } from '../providers';\nimport type { AgentProvider, AgentResult, AgentTask } from './types';\nimport {\n buildComponentPrompt,\n buildFormPrompt,\n buildHandlerPrompt,\n buildTestPrompt,\n getCodeGenSystemPrompt,\n} from '../prompts/code-generation';\nimport type { ResolvedContractsrcConfig } from '@contractspec/lib.contracts';\n\nexport class SimpleAgent implements AgentProvider {\n name = 'simple' as const;\n\n constructor(private config: ResolvedContractsrcConfig) {}\n\n canHandle(_task: AgentTask): boolean {\n // Simple agent can handle all tasks as a fallback\n return true;\n }\n\n async generate(task: AgentTask): Promise<AgentResult> {\n try {\n const model = getAIProvider(this.config);\n const prompt = this.buildPrompt(task);\n\n const result = await generateText({\n model,\n prompt,\n system: getCodeGenSystemPrompt(),\n });\n\n return {\n success: true,\n code: result.text,\n metadata: {\n model: this.config.aiModel,\n provider: this.config.aiProvider,\n tokens: result.usage,\n },\n };\n } catch (error) {\n return {\n success: false,\n errors: [error instanceof Error ? error.message : String(error)],\n };\n }\n }\n\n async validate(task: AgentTask): Promise<AgentResult> {\n try {\n const model = getAIProvider(this.config);\n\n const prompt = `\nReview the following implementation against its specification.\n\nSpecification:\n${task.specCode}\n\nImplementation:\n${task.existingCode || '// No implementation provided'}\n\nProvide a detailed validation report:\n1. Does the implementation match the spec?\n2. Are there any missing features?\n3. Are there any bugs or issues?\n4. Suggestions for improvement\n`;\n\n const result = await generateText({\n model,\n prompt,\n system:\n 'You are a code review expert. Provide thorough, constructive feedback.',\n });\n\n // Parse validation result\n const hasErrors =\n result.text.toLowerCase().includes('error') ||\n result.text.toLowerCase().includes('missing') ||\n result.text.toLowerCase().includes('incorrect');\n\n return {\n success: !hasErrors,\n code: result.text,\n warnings: hasErrors\n ? ['Implementation may not match specification']\n : [],\n metadata: {\n validationType: 'simple-llm',\n },\n };\n } catch (error) {\n return {\n success: false,\n errors: [error instanceof Error ? error.message : String(error)],\n };\n }\n }\n\n private buildPrompt(task: AgentTask): string {\n switch (task.type) {\n case 'generate':\n // Infer what to generate from spec\n if (\n task.specCode.includes('.operation.') ||\n task.specCode.includes('kind:')\n ) {\n return buildHandlerPrompt(task.specCode);\n } else if (task.specCode.includes('.presentation.')) {\n return buildComponentPrompt(task.specCode);\n } else if (task.specCode.includes('.form.')) {\n return buildFormPrompt(task.specCode);\n }\n return `Generate implementation for:\\n${task.specCode}`;\n\n case 'test':\n return buildTestPrompt(\n task.specCode,\n task.existingCode || '',\n 'handler'\n );\n\n case 'validate':\n return `Validate this implementation:\\n${task.existingCode}`;\n\n default:\n return task.specCode;\n }\n }\n}\n"],"mappings":";;;;;;;;;AAiBA,IAAa,cAAb,MAAkD;CAChD,OAAO;CAEP,YAAY,AAAQ,QAAmC;EAAnC;;CAEpB,UAAU,OAA2B;AAEnC,SAAO;;CAGT,MAAM,SAAS,MAAuC;AACpD,MAAI;GAIF,MAAM,SAAS,MAAM,aAAa;IAChC,OAJY,cAAc,KAAK,OAAO;IAKtC,QAJa,KAAK,YAAY,KAAK;IAKnC,QAAQ,wBAAwB;IACjC,CAAC;AAEF,UAAO;IACL,SAAS;IACT,MAAM,OAAO;IACb,UAAU;KACR,OAAO,KAAK,OAAO;KACnB,UAAU,KAAK,OAAO;KACtB,QAAQ,OAAO;KAChB;IACF;WACM,OAAO;AACd,UAAO;IACL,SAAS;IACT,QAAQ,CAAC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;IACjE;;;CAIL,MAAM,SAAS,MAAuC;AACpD,MAAI;GAmBF,MAAM,SAAS,MAAM,aAAa;IAChC,OAnBY,cAAc,KAAK,OAAO;IAoBtC,QAlBa;;;;EAInB,KAAK,SAAS;;;EAGd,KAAK,gBAAgB,gCAAgC;;;;;;;;IAY/C,QACE;IACH,CAAC;GAGF,MAAM,YACJ,OAAO,KAAK,aAAa,CAAC,SAAS,QAAQ,IAC3C,OAAO,KAAK,aAAa,CAAC,SAAS,UAAU,IAC7C,OAAO,KAAK,aAAa,CAAC,SAAS,YAAY;AAEjD,UAAO;IACL,SAAS,CAAC;IACV,MAAM,OAAO;IACb,UAAU,YACN,CAAC,6CAA6C,GAC9C,EAAE;IACN,UAAU,EACR,gBAAgB,cACjB;IACF;WACM,OAAO;AACd,UAAO;IACL,SAAS;IACT,QAAQ,CAAC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;IACjE;;;CAIL,AAAQ,YAAY,MAAyB;AAC3C,UAAQ,KAAK,MAAb;GACE,KAAK;AAEH,QACE,KAAK,SAAS,SAAS,cAAc,IACrC,KAAK,SAAS,SAAS,QAAQ,CAE/B,QAAO,mBAAmB,KAAK,SAAS;aAC/B,KAAK,SAAS,SAAS,iBAAiB,CACjD,QAAO,qBAAqB,KAAK,SAAS;aACjC,KAAK,SAAS,SAAS,SAAS,CACzC,QAAO,gBAAgB,KAAK,SAAS;AAEvC,WAAO,iCAAiC,KAAK;GAE/C,KAAK,OACH,QAAO,gBACL,KAAK,UACL,KAAK,gBAAgB,IACrB,UACD;GAEH,KAAK,WACH,QAAO,kCAAkC,KAAK;GAEhD,QACE,QAAO,KAAK"}
@@ -1,8 +1,7 @@
1
+ import { AgentMode } from "@contractspec/lib.contracts";
2
+
1
3
  //#region src/ai/agents/types.d.ts
2
- /**
3
- * Agent types and interfaces for code generation and validation
4
- */
5
- type AgentMode = 'simple' | 'cursor' | 'claude-code' | 'openai-codex';
4
+
6
5
  interface AgentTask {
7
6
  type: 'generate' | 'validate' | 'refactor' | 'test';
8
7
  specCode: string;
@@ -32,5 +31,5 @@ interface AgentConfig {
32
31
  options?: Record<string, unknown>;
33
32
  }
34
33
  //#endregion
35
- export { AgentConfig, AgentMode, AgentProvider, AgentResult, AgentTask };
34
+ export { AgentConfig, AgentProvider, AgentResult, AgentTask };
36
35
  //# sourceMappingURL=types.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/ai/agents/types.ts"],"sourcesContent":[],"mappings":";;AAIA;AAEA;AAQiB,KAVL,SAAA,GAUgB,QAMf,GAAA,QAAM,GAAA,aAAA,GAAA,cAAA;AAGF,UAjBA,SAAA,CAiBa;EACtB,IAAA,EAAA,UAAA,GAAA,UAAA,GAAA,UAAA,GAAA,MAAA;EACS,QAAA,EAAA,MAAA;EAAoB,YAAA,CAAA,EAAA,MAAA;EAAR,UAAA,CAAA,EAAA,MAAA;EACZ,OAAA,CAAA,EAfL,MAeK,CAAA,MAAA,EAAA,OAAA,CAAA;;AAAY,UAZZ,WAAA,CAYY;EACX,OAAA,EAAA,OAAA;EAAS,IAAA,CAAA,EAAA,MAAA;EAGV,MAAA,CAAA,EAAA,MAAW,EAAA;EACpB,QAAA,CAAA,EAAA,MAAA,EAAA;EACS,WAAA,CAAA,EAAA,MAAA,EAAA;EAGL,QAAA,CAAA,EAfC,MAeD,CAAA,MAAA,EAAA,OAAA,CAAA;;UAZK,aAAA;QACT;iBACS,YAAY,QAAQ;iBACpB,YAAY,QAAQ;kBACnB;;UAGD,WAAA;QACT;iBACS;;;YAGL"}
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/ai/agents/types.ts"],"sourcesContent":[],"mappings":";;;;AAciB,UARA,SAAA,CAQW;EASX,IAAA,EAAA,UAAa,GAAA,UAAA,GAAA,UAAA,GAAA,MAAA;EACtB,QAAA,EAAA,MAAA;EACS,YAAA,CAAA,EAAA,MAAA;EAAoB,UAAA,CAAA,EAAA,MAAA;EAAR,OAAA,CAAA,EAdjB,MAciB,CAAA,MAAA,EAAA,OAAA,CAAA;;AACQ,UAZpB,WAAA,CAYoB;EAAR,OAAA,EAAA,OAAA;EACX,IAAA,CAAA,EAAA,MAAA;EAAS,MAAA,CAAA,EAAA,MAAA,EAAA;EAGV,QAAA,CAAA,EAAA,MAAW,EAAA;EACpB,WAAA,CAAA,EAAA,MAAA,EAAA;EACS,QAAA,CAAA,EAZJ,MAYI,CAAA,MAAA,EAAA,OAAA,CAAA;;AAGC,UAZD,aAAA,CAYC;QAXV;iBACS,YAAY,QAAQ;iBACpB,YAAY,QAAQ;kBACnB;;UAGD,WAAA;QACT;iBACS;;;YAGL"}
@@ -0,0 +1,70 @@
1
+ import { createUnifiedAgent } from "@contractspec/lib.ai-agent";
2
+
3
+ //#region src/ai/agents/unified-adapter.ts
4
+ var UnifiedAgentAdapter = class {
5
+ agent;
6
+ constructor(name, config, spec = {
7
+ meta: {
8
+ key: "workspace-agent",
9
+ version: "1.0.0",
10
+ description: "Workspace Agent",
11
+ stability: "experimental",
12
+ owners: [],
13
+ tags: []
14
+ },
15
+ instructions: "You are an expert software engineer implementing specifications.",
16
+ tools: []
17
+ }) {
18
+ this.name = name;
19
+ this.agent = createUnifiedAgent(spec, config);
20
+ }
21
+ canHandle(_task) {
22
+ return true;
23
+ }
24
+ async generate(task) {
25
+ try {
26
+ const prompt = this.buildPrompt(task);
27
+ const result = await this.agent.run(prompt);
28
+ return {
29
+ success: true,
30
+ code: result.text,
31
+ metadata: {
32
+ finishReason: result.finishReason,
33
+ usage: result.usage
34
+ }
35
+ };
36
+ } catch (error) {
37
+ return {
38
+ success: false,
39
+ errors: [error instanceof Error ? error.message : String(error)]
40
+ };
41
+ }
42
+ }
43
+ async validate(task) {
44
+ return this.generate(task);
45
+ }
46
+ buildPrompt(task) {
47
+ let prompt = "";
48
+ if (task.specCode) prompt += `Specification:\n${task.specCode}\n\n`;
49
+ if (task.existingCode) prompt += `Existing Code:\n${task.existingCode}\n\n`;
50
+ switch (task.type) {
51
+ case "generate":
52
+ prompt += "Generate implementation code based on the specification above.";
53
+ break;
54
+ case "validate":
55
+ prompt += "Validate if the existing code implements the specification correctly. Report any issues.";
56
+ break;
57
+ case "refactor":
58
+ prompt += "Refactor the existing code to better match the specification and improve quality.";
59
+ break;
60
+ case "test":
61
+ prompt += "Generate tests for the existing code based on the specification.";
62
+ break;
63
+ }
64
+ return prompt;
65
+ }
66
+ };
67
+
68
+ //#endregion
69
+ export { UnifiedAgentAdapter };
70
+ //# sourceMappingURL=unified-adapter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-adapter.mjs","names":[],"sources":["../../../src/ai/agents/unified-adapter.ts"],"sourcesContent":["/**\n * Adapter for UnifiedAgent to work with Workspace AgentOrchestrator.\n */\n\nimport type { AgentProvider, AgentResult, AgentTask } from './types';\nimport type { AgentMode } from '@contractspec/lib.contracts';\nimport {\n type AgentSpec,\n createUnifiedAgent,\n UnifiedAgent,\n type UnifiedAgentConfig,\n} from '@contractspec/lib.ai-agent';\n\nexport class UnifiedAgentAdapter implements AgentProvider {\n private agent: UnifiedAgent;\n\n constructor(\n public readonly name: AgentMode,\n config: UnifiedAgentConfig,\n spec: AgentSpec = {\n meta: {\n key: 'workspace-agent',\n version: '1.0.0',\n description: 'Workspace Agent',\n stability: 'experimental',\n owners: [],\n tags: [],\n },\n instructions:\n 'You are an expert software engineer implementing specifications.',\n tools: [],\n }\n ) {\n this.agent = createUnifiedAgent(spec, config);\n }\n\n canHandle(_task: AgentTask): boolean {\n return true;\n }\n\n async generate(task: AgentTask): Promise<AgentResult> {\n try {\n const prompt = this.buildPrompt(task);\n const result = await this.agent.run(prompt);\n\n return {\n success: true,\n code: result.text,\n metadata: {\n finishReason: result.finishReason,\n usage: result.usage,\n },\n };\n } catch (error) {\n return {\n success: false,\n errors: [error instanceof Error ? error.message : String(error)],\n };\n }\n }\n\n async validate(task: AgentTask): Promise<AgentResult> {\n return this.generate(task);\n }\n\n private buildPrompt(task: AgentTask): string {\n let prompt = '';\n\n if (task.specCode) {\n prompt += `Specification:\\n${task.specCode}\\n\\n`;\n }\n\n if (task.existingCode) {\n prompt += `Existing Code:\\n${task.existingCode}\\n\\n`;\n }\n\n switch (task.type) {\n case 'generate':\n prompt +=\n 'Generate implementation code based on the specification above.';\n break;\n case 'validate':\n prompt +=\n 'Validate if the existing code implements the specification correctly. Report any issues.';\n break;\n case 'refactor':\n prompt +=\n 'Refactor the existing code to better match the specification and improve quality.';\n break;\n case 'test':\n prompt +=\n 'Generate tests for the existing code based on the specification.';\n break;\n }\n\n return prompt;\n }\n}\n"],"mappings":";;;AAaA,IAAa,sBAAb,MAA0D;CACxD,AAAQ;CAER,YACE,AAAgB,MAChB,QACA,OAAkB;EAChB,MAAM;GACJ,KAAK;GACL,SAAS;GACT,aAAa;GACb,WAAW;GACX,QAAQ,EAAE;GACV,MAAM,EAAE;GACT;EACD,cACE;EACF,OAAO,EAAE;EACV,EACD;EAfgB;AAgBhB,OAAK,QAAQ,mBAAmB,MAAM,OAAO;;CAG/C,UAAU,OAA2B;AACnC,SAAO;;CAGT,MAAM,SAAS,MAAuC;AACpD,MAAI;GACF,MAAM,SAAS,KAAK,YAAY,KAAK;GACrC,MAAM,SAAS,MAAM,KAAK,MAAM,IAAI,OAAO;AAE3C,UAAO;IACL,SAAS;IACT,MAAM,OAAO;IACb,UAAU;KACR,cAAc,OAAO;KACrB,OAAO,OAAO;KACf;IACF;WACM,OAAO;AACd,UAAO;IACL,SAAS;IACT,QAAQ,CAAC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;IACjE;;;CAIL,MAAM,SAAS,MAAuC;AACpD,SAAO,KAAK,SAAS,KAAK;;CAG5B,AAAQ,YAAY,MAAyB;EAC3C,IAAI,SAAS;AAEb,MAAI,KAAK,SACP,WAAU,mBAAmB,KAAK,SAAS;AAG7C,MAAI,KAAK,aACP,WAAU,mBAAmB,KAAK,aAAa;AAGjD,UAAQ,KAAK,MAAb;GACE,KAAK;AACH,cACE;AACF;GACF,KAAK;AACH,cACE;AACF;GACF,KAAK;AACH,cACE;AACF;GACF,KAAK;AACH,cACE;AACF;;AAGJ,SAAO"}
@@ -1,9 +1,9 @@
1
- import { AIClient } from "./client.mjs";
2
- import { getAIProvider, getRecommendedModels, validateProvider } from "./providers.mjs";
3
- import { AgentConfig, AgentMode, AgentProvider, AgentResult, AgentTask } from "./agents/types.mjs";
1
+ import { getAIProvider } from "./providers.mjs";
2
+ import { AgentConfig, AgentResult, AgentTask } from "./agents/types.mjs";
4
3
  import { AgentOrchestrator } from "./agents/orchestrator.mjs";
5
4
  import { SimpleAgent } from "./agents/simple-agent.mjs";
6
5
  import { CursorAgent } from "./agents/cursor-agent.mjs";
7
6
  import { ClaudeCodeAgent } from "./agents/claude-code-agent.mjs";
8
7
  import { OpenAICodexAgent } from "./agents/openai-codex-agent.mjs";
8
+ import "./agents/index.mjs";
9
9
  import { index_d_exports } from "./prompts/index.mjs";
package/dist/ai/index.mjs CHANGED
@@ -1,10 +1,9 @@
1
- import { getAIProvider, getRecommendedModels, validateProvider } from "./providers.mjs";
1
+ import { getAIProvider } from "./providers.mjs";
2
2
  import { SimpleAgent } from "./agents/simple-agent.mjs";
3
3
  import { CursorAgent } from "./agents/cursor-agent.mjs";
4
4
  import { ClaudeCodeAgent } from "./agents/claude-code-agent.mjs";
5
5
  import { OpenAICodexAgent } from "./agents/openai-codex-agent.mjs";
6
6
  import { AgentOrchestrator } from "./agents/orchestrator.mjs";
7
- import { AIClient } from "./client.mjs";
8
7
  import "./agents/index.mjs";
9
8
  import { prompts_exports } from "./prompts/index.mjs";
10
9
 
@@ -107,5 +107,5 @@ Follow this structure and quality level.`;
107
107
  }
108
108
 
109
109
  //#endregion
110
- export { buildEventSpecPrompt, buildOperationSpecPrompt, buildPresentationSpecPrompt, getSystemPrompt, spec_creation_exports };
110
+ export { spec_creation_exports };
111
111
  //# sourceMappingURL=spec-creation.mjs.map
@@ -1,5 +1,5 @@
1
- import { Config } from "../types/config.mjs";
2
1
  import { LanguageModel } from "ai";
2
+ import { ResolvedContractsrcConfig } from "@contractspec/lib.contracts";
3
3
 
4
4
  //#region src/ai/providers.d.ts
5
5
 
@@ -8,22 +8,7 @@ import { LanguageModel } from "ai";
8
8
  *
9
9
  * @deprecated Use createProvider() from @contractspec/lib.ai-providers instead
10
10
  */
11
- declare function getAIProvider(config: Config): LanguageModel;
12
- /**
13
- * Validate that the provider is accessible and working
14
- *
15
- * @deprecated Use validateProvider() from @contractspec/lib.ai-providers instead
16
- */
17
- declare function validateProvider(config: Config): Promise<{
18
- success: boolean;
19
- error?: string;
20
- }>;
21
- /**
22
- * Get recommended models for each provider
23
- *
24
- * @deprecated Use getModelsForProvider() from @contractspec/lib.ai-providers instead
25
- */
26
- declare function getRecommendedModels(provider: Config['aiProvider']): string[];
11
+ declare function getAIProvider(config: ResolvedContractsrcConfig): LanguageModel;
27
12
  //#endregion
28
- export { getAIProvider, getRecommendedModels, validateProvider };
13
+ export { getAIProvider };
29
14
  //# sourceMappingURL=providers.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.mts","names":[],"sources":["../../src/ai/providers.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;iBAmBgB,aAAA,SAAsB,SAAS;;;;;;iBAczB,gBAAA,SACZ,SACP;;;;;;;;;iBAea,oBAAA,WAA+B"}
1
+ {"version":3,"file":"providers.d.mts","names":[],"sources":["../../src/ai/providers.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;iBAiBgB,aAAA,SACN,4BACP"}
@@ -1,4 +1,4 @@
1
- import { getAIProvider, getRecommendedModels, validateLegacyProvider } from "@contractspec/lib.ai-providers";
1
+ import { getAIProvider } from "@contractspec/lib.ai-providers";
2
2
 
3
3
  //#region src/ai/providers.ts
4
4
  /**
@@ -13,27 +13,7 @@ function getAIProvider$1(config) {
13
13
  customEndpoint: config.customEndpoint || void 0
14
14
  });
15
15
  }
16
- /**
17
- * Validate that the provider is accessible and working
18
- *
19
- * @deprecated Use validateProvider() from @contractspec/lib.ai-providers instead
20
- */
21
- async function validateProvider(config) {
22
- return await validateLegacyProvider({
23
- aiProvider: config.aiProvider,
24
- aiModel: config.aiModel || void 0,
25
- customEndpoint: config.customEndpoint || void 0
26
- });
27
- }
28
- /**
29
- * Get recommended models for each provider
30
- *
31
- * @deprecated Use getModelsForProvider() from @contractspec/lib.ai-providers instead
32
- */
33
- function getRecommendedModels$1(provider) {
34
- return getRecommendedModels(provider);
35
- }
36
16
 
37
17
  //#endregion
38
- export { getAIProvider$1 as getAIProvider, getRecommendedModels$1 as getRecommendedModels, validateProvider };
18
+ export { getAIProvider$1 as getAIProvider };
39
19
  //# sourceMappingURL=providers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.mjs","names":["getAIProvider","getProviderFromLib","validateProviderFromLib","getRecommendedModels","getModelsFromLib"],"sources":["../../src/ai/providers.ts"],"sourcesContent":["/**\n * AI Provider utilities for ContractSpec workspace.\n *\n * Re-exports from @contractspec/lib.ai-providers with workspace-specific additions.\n */\nimport type { LanguageModel } from 'ai';\nimport {\n getAIProvider as getProviderFromLib,\n validateLegacyProvider as validateProviderFromLib,\n getRecommendedModels as getModelsFromLib,\n type LegacyConfig,\n} from '@contractspec/lib.ai-providers';\nimport type { Config } from '../types/config';\n\n/**\n * Initialize AI provider based on configuration\n *\n * @deprecated Use createProvider() from @contractspec/lib.ai-providers instead\n */\nexport function getAIProvider(config: Config): LanguageModel {\n const legacyConfig: LegacyConfig = {\n aiProvider: config.aiProvider,\n aiModel: config.aiModel || undefined,\n customEndpoint: config.customEndpoint || undefined,\n };\n return getProviderFromLib(legacyConfig);\n}\n\n/**\n * Validate that the provider is accessible and working\n *\n * @deprecated Use validateProvider() from @contractspec/lib.ai-providers instead\n */\nexport async function validateProvider(\n config: Config\n): Promise<{ success: boolean; error?: string }> {\n const legacyConfig: LegacyConfig = {\n aiProvider: config.aiProvider,\n aiModel: config.aiModel || undefined,\n customEndpoint: config.customEndpoint || undefined,\n };\n const result = await validateProviderFromLib(legacyConfig);\n return result;\n}\n\n/**\n * Get recommended models for each provider\n *\n * @deprecated Use getModelsForProvider() from @contractspec/lib.ai-providers instead\n */\nexport function getRecommendedModels(provider: Config['aiProvider']): string[] {\n return getModelsFromLib(provider);\n}\n"],"mappings":";;;;;;;;AAmBA,SAAgBA,gBAAc,QAA+B;AAM3D,QAAOC,cAL4B;EACjC,YAAY,OAAO;EACnB,SAAS,OAAO,WAAW;EAC3B,gBAAgB,OAAO,kBAAkB;EAC1C,CACsC;;;;;;;AAQzC,eAAsB,iBACpB,QAC+C;AAO/C,QADe,MAAMC,uBALc;EACjC,YAAY,OAAO;EACnB,SAAS,OAAO,WAAW;EAC3B,gBAAgB,OAAO,kBAAkB;EAC1C,CACyD;;;;;;;AAS5D,SAAgBC,uBAAqB,UAA0C;AAC7E,QAAOC,qBAAiB,SAAS"}
1
+ {"version":3,"file":"providers.mjs","names":["getAIProvider","getProviderFromLib"],"sources":["../../src/ai/providers.ts"],"sourcesContent":["/**\n * AI Provider utilities for ContractSpec workspace.\n *\n * Re-exports from @contractspec/lib.ai-providers with workspace-specific additions.\n */\nimport type { LanguageModel } from 'ai';\nimport {\n getAIProvider as getProviderFromLib,\n type LegacyConfig,\n} from '@contractspec/lib.ai-providers';\nimport type { ResolvedContractsrcConfig } from '@contractspec/lib.contracts';\n\n/**\n * Initialize AI provider based on configuration\n *\n * @deprecated Use createProvider() from @contractspec/lib.ai-providers instead\n */\nexport function getAIProvider(\n config: ResolvedContractsrcConfig\n): LanguageModel {\n const legacyConfig: LegacyConfig = {\n aiProvider: config.aiProvider,\n aiModel: config.aiModel || undefined,\n customEndpoint: config.customEndpoint || undefined,\n };\n return getProviderFromLib(legacyConfig);\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgBA,gBACd,QACe;AAMf,QAAOC,cAL4B;EACjC,YAAY,OAAO;EACnB,SAAS,OAAO,WAAW;EAC3B,gBAAgB,OAAO,kBAAkB;EAC1C,CACsC"}
package/dist/index.d.mts CHANGED
@@ -1,11 +1,13 @@
1
1
  import { DiscoverOptions, FileStat, FsAdapter } from "./ports/fs.mjs";
2
2
  import { GitAdapter, GitCleanOptions, GitLogEntry } from "./ports/git.mjs";
3
3
  import { WatchEvent, WatchEventHandler, WatchEventType, WatchOptions, Watcher, WatcherAdapter } from "./ports/watcher.mjs";
4
- import { AiAdapter, AiGenerateOptions, AiGenerateResult, AiGenerateStructuredOptions, AiValidationResult } from "./ports/ai.mjs";
4
+ import { AiAdapter, AiGenerateOptions, AiGenerateResult, AiGenerateStructuredOptions, AiProvider, AiValidationResult } from "./ports/ai.mjs";
5
5
  import { LogLevel, LoggerAdapter, ProgressReporter, ProgressUpdate, WorkspaceAdapters } from "./ports/logger.mjs";
6
6
  import { RuleSyncOptions, RuleSyncPort, RuleSyncResult } from "./ports/rulesync.mjs";
7
7
  import "./ports/index.mjs";
8
- import { DEFAULT_SPEC_PATTERNS, createNodeFsAdapter } from "./adapters/fs.mjs";
8
+ import { createNodeFsAdapter } from "./adapters/fs.node.mjs";
9
+ import { createBunFsAdapter } from "./adapters/fs.bun.mjs";
10
+ import { DEFAULT_FS_IGNORES, DEFAULT_SPEC_PATTERNS } from "./adapters/fs.mjs";
9
11
  import { createNodeGitAdapter } from "./adapters/git.mjs";
10
12
  import { createNodeWatcherAdapter } from "./adapters/watcher.mjs";
11
13
  import { createNodeAiAdapter } from "./adapters/ai.mjs";
@@ -13,7 +15,6 @@ import { createConsoleLoggerAdapter, createNoopLoggerAdapter } from "./adapters/
13
15
  import { CreateAdaptersOptions, createNodeAdapters } from "./adapters/factory.mjs";
14
16
  import { MetaRepoInfo, PackageManager, RepositoryType, SubmoduleInfo, WorkspaceInfo, detectPackageManager, detectRepositoryType, findMetaRepoRoot, findPackageRoot, findWorkspaceRoot, getExecCommand, getInstallCommand, getMetaRepoInfo, getPackageName, getRunCommand, getWorkspaceInfo, getWorkspacePackages, isMonorepo, parseGitModules } from "./adapters/workspace.mjs";
15
17
  import "./adapters/index.mjs";
16
- import { AgentMode, AiProvider, Config } from "./types/config.mjs";
17
18
  import { ValidateSpecOptions, ValidateSpecResult, validateSpec, validateSpecs } from "./services/validate/spec-validator.mjs";
18
19
  import { ValidateImplementationOptions, ValidateImplementationResult, validateImplementationFiles } from "./services/validate/implementation-validator.mjs";
19
20
  import { BlueprintValidationResult, validateBlueprint } from "./services/validate/blueprint-validator.mjs";
@@ -47,6 +48,8 @@ import { generateAgentsMd, generateClaudeMcpConfig, generateContractsrcConfig, g
47
48
  import { deepMergeOverwrite, deepMergePreserve, formatJson, safeParseJson } from "./services/setup/file-merger.mjs";
48
49
  import { ALL_CHECK_CATEGORIES, CHECK_CATEGORY_LABELS, CheckCategory, CheckContext, CheckResult, CheckStatus, DoctorOptions, DoctorPromptCallbacks, DoctorResult, FixAction, FixResult } from "./services/doctor/types.mjs";
49
50
  import { formatCheckResult, formatDoctorSummary, runDoctor } from "./services/doctor/doctor-service.mjs";
51
+ import { ContractVerificationStatus, DriftData, FinalizeResult, ImpactJson, PrActionOptions, ReportData, ReportInputs, RiskData, ValidationData, WhatChangedData } from "./services/action-pr/types.mjs";
52
+ import { PrActionService } from "./services/action-pr/service.mjs";
50
53
  import { ALL_CI_CHECK_CATEGORIES, CICheckCategory, CICheckCategorySummary, CICheckOptions, CICheckResult, CIFormatOptions, CIIssue, CIIssueSeverity, CIOutputFormat, CI_CHECK_CATEGORY_LABELS } from "./services/ci-check/types.mjs";
51
54
  import { runCIChecks } from "./services/ci-check/ci-check-service.mjs";
52
55
  import { AgentAdapter, AgentGuideConfig, FormatOptions, GuideOptions, GuideResult } from "./services/agent-guide/types.mjs";
@@ -81,7 +84,7 @@ import { verifyBehavior } from "./services/verify/behavior-verifier.mjs";
81
84
  import { createQuickAIReview, verifySemanticFields, verifyWithAI, verifyWithAIEnhanced } from "./services/verify/ai-verifier.mjs";
82
85
  import { DiscoveryOptions, ImplementationSource, ImplementationStatus, ResolvedImplementation, ResolverOptions, SpecImplementationResult, SpecReferenceMatch } from "./services/implementation/types.mjs";
83
86
  import { discoverAllImplementations, discoverImplementationsForSpec, extractSpecReferences, inferImplementationType } from "./services/implementation/discovery.mjs";
84
- import { getSpecKeyVariants, parseExplicitImplementations } from "./services/implementation/resolver/parsers.mjs";
87
+ import { parseExplicitImplementations } from "./services/implementation/resolver/parsers.mjs";
85
88
  import { getConventionPaths, toKebabCase } from "./services/implementation/resolver/conventions.mjs";
86
89
  import { determineStatus, getImplementationSummary } from "./services/implementation/resolver/status.mjs";
87
90
  import { resolveAllImplementations, resolveImplementations } from "./services/implementation/resolver/index.mjs";
@@ -96,6 +99,8 @@ import { formatQuickstartPreview, isContractSpecInstalled, runQuickstart } from
96
99
  import { DocsServiceOptions, DocsServiceResult, generateDocsFromSpecs } from "./services/docs/docs-service.mjs";
97
100
  import { index_d_exports as index_d_exports$4 } from "./services/impact/index.mjs";
98
101
  import { FormatterOptions, formatFiles } from "./services/formatter.mjs";
102
+ import { DriftActionOptions, DriftReportInputs, FinalizeDriftResult } from "./services/action-drift/types.mjs";
103
+ import { DriftActionService } from "./services/action-drift/service.mjs";
99
104
  import { SpecVersionAnalysis } from "./services/versioning/types.mjs";
100
105
  import { index_d_exports as index_d_exports$9 } from "./services/versioning/index.mjs";
101
106
  import { index_d_exports as index_d_exports$7 } from "./services/upgrade/index.mjs";
@@ -112,10 +117,10 @@ import { ImportServiceAdapters, ImportServiceOptions, ImportServiceResult, impor
112
117
  import { EndpointVerification, VerificationIssue, VerifyOptions, VerifyResult, verifyImportedContracts } from "./services/import/verify-service.mjs";
113
118
  import { ReportOptions, generateCliReport, generateMarkdownReport } from "./services/import/report-service.mjs";
114
119
  import "./services/index.mjs";
120
+ import { createWorkspaceRegistry, operationRegistry } from "./registry.mjs";
115
121
  import { index_d_exports as index_d_exports$2 } from "./formatters/index.mjs";
116
- import { AIClient } from "./ai/client.mjs";
117
- import { getAIProvider, getRecommendedModels, validateProvider } from "./ai/providers.mjs";
118
- import { AgentConfig, AgentProvider, AgentResult, AgentTask } from "./ai/agents/types.mjs";
122
+ import { getAIProvider } from "./ai/providers.mjs";
123
+ import { AgentConfig, AgentResult, AgentTask } from "./ai/agents/types.mjs";
119
124
  import { AgentOrchestrator } from "./ai/agents/orchestrator.mjs";
120
125
  import { SimpleAgent } from "./ai/agents/simple-agent.mjs";
121
126
  import { CursorAgent } from "./ai/agents/cursor-agent.mjs";
@@ -125,4 +130,4 @@ import { index_d_exports as index_d_exports$5 } from "./ai/prompts/index.mjs";
125
130
  import "./ai/index.mjs";
126
131
  import { index_d_exports as index_d_exports$8 } from "./utils/index.mjs";
127
132
  import * as module from "@contractspec/module.workspace";
128
- export { AIClient, AIGenerator, AIReviewResult, ALL_CHECK_CATEGORIES, ALL_CI_CHECK_CATEGORIES, ALL_SETUP_TARGETS, AgentAdapter, AgentConfig, AgentGuideConfig, AgentGuideService, type AgentMode, AgentOrchestrator, AgentProvider, AgentResult, AgentTask, AiAdapter, AiGenerateOptions, AiGenerateResult, AiGenerateStructuredOptions, type AiProvider, AiValidationResult, AnalyzeDepsOptions, AnalyzeDepsResult, BehaviorCheck, BlueprintValidationResult, BuildSpecOptions, BuildSpecResult, BuildTarget, BuildTargetResult, CHECK_CATEGORY_LABELS, CICheckCategory, CICheckCategorySummary, CICheckOptions, CICheckResult, CIFormatOptions, CIIssue, CIIssueSeverity, CIOutputFormat, CI_CHECK_CATEGORY_LABELS, CacheEntryMeta, CacheKeyString, CacheLookupResult, CacheMissReason, CacheStats, CacheStorageAdapter, CheckCategory, CheckContext, CheckResult, CheckStatus, ClaudeCodeAdapter, ClaudeCodeAgent, CleanOptions, CleanResult, CompareSpecsOptions, CompareSpecsResult, type Config, CoverageByType, CreateAdaptersOptions, CreateRegeneratorOptions, CursorAgent, CursorCLIAdapter, DEFAULT_CACHE_CONFIG, DEFAULT_SPEC_PATTERNS, DiagramOptions, DiagramType, DiscoverOptions, DiscoveryOptions, DocsServiceOptions, DocsServiceResult, DoctorOptions, DoctorPromptCallbacks, DoctorResult, EndpointVerification, ExtendedWorkspaceInfo, ExtractOptions, FULL_DEPENDENCIES, FeatureSpecParams, FieldMapping, FieldMatchType, FileStat, FileSystemCacheStorage, FixAction, FixResult, type FixStrategyType, type FixableIssue, FormatOptions, FormatterOptions, FsAdapter, GapAnalysisResult, GenerateArtifactsResult, GenerateViewsOptions, GenerateViewsResult, GenericMCPAdapter, GitAdapter, GitCleanOptions, GitLogEntry, GuideOptions, GuideResult, ImplementationSource, ImplementationStatus, ImplementationValidationResult, ImplementationValidatorOptions, ImportServiceAdapters, ImportServiceOptions, ImportServiceResult, VerificationIssue as ImportVerificationIssue, VerifyOptions as ImportVerifyOptions, VerifyResult as ImportVerifyResult, InMemoryCacheStorage, IntegrityAnalysisOptions, IntegrityAnalysisResult, IntegrityIssue, IntentAlignment, KeyValueStore, LayerDiscoveryOptions, LayerDiscoveryResult, LayerInventory, LayerLocation, OpenApiExportOptions as LegacyOpenApiExportOptions, OpenApiExportResult as LegacyOpenApiExportResult, ListSpecsForViewOptions, ListSpecsForViewResult, ListSpecsOptions, LogLevel, LoggerAdapter, MINIMAL_DEPENDENCIES, MetaRepoInfo, MonorepoConfig, OpenAICodexAgent, OpenApiExportServiceOptions, OpenApiExportServiceResult, OpenApiImportServiceOptions, OpenApiImportServiceResult, OpenApiSyncServiceOptions, OpenApiSyncServiceResult, OpenApiValidateServiceOptions, OpenApiValidateServiceResult, PackageInstallResult, PackageManager, ProgressReporter, ProgressUpdate, QuickstartDependency, QuickstartMode, QuickstartOptions, QuickstartPromptCallbacks, QuickstartResult, RegistryClient, RegistryClientOptions, ReportOptions, RepositoryType, ResolvedImplementation, ResolverOptions, RuleSyncOptions, RuleSyncPort, RuleSyncResult, RuleSyncService, RunTestsResult, SETUP_TARGET_LABELS, SemanticVerificationResult, SetupFileResult, SetupOptions, SetupPromptCallbacks, SetupResult, SetupScope, SetupTarget, SimpleAgent, SpecCreatorService, SpecImplementationResult, SpecInventory, SpecLocation, SpecReferenceMatch, SpecVersionAnalysis, StructureCheck, SubmoduleInfo, SyncBuildFn, SyncSpecsOptions, SyncSpecsResult, SyncSpecsRunResult, SyncValidateFn, TenantValidationContext, TenantValidationResult, TestGeneratorOptions, TestGeneratorService, TestServiceOptions, TestServiceResult, VALID_AUDIENCES, ValidateImplementationOptions, ValidateImplementationResult, ValidateSpecOptions, ValidateSpecResult, VerificationCacheConfig, VerificationCacheEntry, VerificationCacheKey, VerificationCacheService, VerificationIssue$1 as VerificationIssue, VerifyConfig, VerifyInput, VerifyOptions$1 as VerifyOptions, VerifyResult$1 as VerifyResult, VerifyService, ViewAudience, ViewEntry, WatchBuildFn, WatchEvent, WatchEventHandler, WatchEventType, WatchOptions, WatchSpecsOptions, WatchValidateFn, Watcher, WatcherAdapter, WorkspaceAdapters, WorkspaceConfigInfo, WorkspaceInfo, WorkspaceStateCacheStorage, addToRegistry, agentAdapters, agentGuideService, analyzeDeps, analyzeGap, analyzeIntegrity, buildSpec, cacheKeyToString, claudeCodeAdapter, cleanArtifacts, compareSpecs, computeContentHash, createAgentGuideService, createConsoleLoggerAdapter, createEmptyLayerInventory, createFileSystemCacheStorage, createInMemoryCacheStorage, createNodeAdapters, createNodeAiAdapter, createNodeFsAdapter, createNodeGitAdapter, createNodeWatcherAdapter, createNoopLoggerAdapter, createQuickAIReview, createRegeneratorService, createSpecCreator, createVerificationCacheService, createVerifyService, createWorkspaceStateCacheStorage, cursorCLIAdapter, deepMergeOverwrite, deepMergePreserve, detectPackageManager, detectRepositoryType, determineStatus, discoverAllImplementations, discoverImplementationsForSpec, discoverLayers, exportGraphAsDot, exportOpenApi, exportSpecForLLM, extractContracts, extractSpecReferences, index_d_exports as features, filterIssuesBySeverity, filterIssuesByType, findAllConfigFiles, findMetaRepoRoot, findPackageRoot, findWorkspaceRoot, index_d_exports$1 as fix, formatCheckResult, formatDoctorSummary, formatFiles, formatJson, formatQuickstartPreview, formatVerificationReport, formatWorkspaceInfo, index_d_exports$2 as formatters, generateAgentsMd, generateAppBlueprintSpec, generateArtifacts, generateClaudeMcpConfig, generateCliReport, generateComponentTemplate, generateContractsrcConfig, generateCursorMcpConfig, generateCursorRules, generateCursorRulesFromParsedSpec, generateDataViewSpec, generateDocsFromSpecs, generateEventSpec, generateExperimentSpec, generateFeatureContextMarkdown, generateFeatureSpec, generateGuideFromParsedSpec, generateHandlerTemplate, generateIntegrationSpec, generateKnowledgeSpaceSpec, generateMarkdownReport, generateMermaidDiagram, generateMigrationSpec, generateOperationSpec, generatePresentationSpec, generateTelemetrySpec, generateTestTemplate, generateView, generateViews, generateVscodeSettings, generateWorkflowRunnerTemplate, generateWorkflowSpec, genericMCPAdapter, getAIProvider, getAgentAdapter, getAllLayerLocations, getAllSpecs, getApiKey, getClaudeDesktopConfigPath, getContractNode, getConventionPaths, getDependencies, getDevDependencies, getExecCommand, getExtendedWorkspaceInfo, getGraphStats, getImplementationSummary, getInstallCommand, getMetaRepoInfo, getPackageName, getProductionDependencies, getRecommendedModels, getRunCommand, getSpecKeyVariants, getWorkspaceInfo, getWorkspacePackages, groupSpecsByType, index_d_exports$3 as hooks, index_d_exports$4 as impact, importFromOpenApiService, importFromSourceService, inferImplementationType, isContractSpecInstalled, isMonorepo, listAgentTypes, listFromRegistry, listSpecs, listSpecsForView, listTests, loadWorkspaceConfig, mergeMonorepoConfigs, module, parseExplicitImplementations, parseGitModules, index_d_exports$5 as prompts, resolveAllImplementations, resolveImplementations, resolveRegistryUrl, runCIChecks, runDoctor, runQuickstart, runSetup, runTestSpecs, runTests, safeParseJson, searchRegistry, stringToCacheKey, syncSpecs, syncWithOpenApiService, index_d_exports$6 as templates, toKebabCase, index_d_exports$7 as upgrade, index_d_exports$8 as utils, validateAgainstOpenApiService, validateAudience, validateBlueprint, validateImplementationFiles, validateImplementationWithAgent, validateProvider, validateSpec, validateSpecs, validateTenantConfig, verifyBehavior, verifyImplementationAgainstParsedSpec, verifyImportedContracts, verifySemanticFields, verifyService, verifyStructure, verifyWithAI, verifyWithAIEnhanced, index_d_exports$9 as versioning, index_d_exports$10 as vibe, watchSpecs };
133
+ export { AIGenerator, AIReviewResult, ALL_CHECK_CATEGORIES, ALL_CI_CHECK_CATEGORIES, ALL_SETUP_TARGETS, AgentAdapter, AgentConfig, AgentGuideConfig, AgentGuideService, AgentOrchestrator, AgentResult, AgentTask, AiAdapter, AiGenerateOptions, AiGenerateResult, AiGenerateStructuredOptions, AiProvider, AiValidationResult, AnalyzeDepsOptions, AnalyzeDepsResult, BehaviorCheck, BlueprintValidationResult, BuildSpecOptions, BuildSpecResult, BuildTarget, BuildTargetResult, CHECK_CATEGORY_LABELS, CICheckCategory, CICheckCategorySummary, CICheckOptions, CICheckResult, CIFormatOptions, CIIssue, CIIssueSeverity, CIOutputFormat, CI_CHECK_CATEGORY_LABELS, CacheEntryMeta, CacheKeyString, CacheLookupResult, CacheMissReason, CacheStats, CacheStorageAdapter, CheckCategory, CheckContext, CheckResult, CheckStatus, ClaudeCodeAdapter, ClaudeCodeAgent, CleanOptions, CleanResult, CompareSpecsOptions, CompareSpecsResult, ContractVerificationStatus, CoverageByType, CreateAdaptersOptions, CreateRegeneratorOptions, CursorAgent, CursorCLIAdapter, DEFAULT_CACHE_CONFIG, DEFAULT_FS_IGNORES, DEFAULT_SPEC_PATTERNS, DiagramOptions, DiagramType, DiscoverOptions, DiscoveryOptions, DocsServiceOptions, DocsServiceResult, DoctorOptions, DoctorPromptCallbacks, DoctorResult, DriftActionOptions, DriftActionService, DriftData, DriftReportInputs, EndpointVerification, ExtendedWorkspaceInfo, ExtractOptions, FULL_DEPENDENCIES, FeatureSpecParams, FieldMapping, FieldMatchType, FileStat, FileSystemCacheStorage, FinalizeDriftResult, FinalizeResult, FixAction, FixResult, type FixStrategyType, type FixableIssue, FormatOptions, FormatterOptions, FsAdapter, GapAnalysisResult, GenerateArtifactsResult, GenerateViewsOptions, GenerateViewsResult, GenericMCPAdapter, GitAdapter, GitCleanOptions, GitLogEntry, GuideOptions, GuideResult, ImpactJson, ImplementationSource, ImplementationStatus, ImplementationValidationResult, ImplementationValidatorOptions, ImportServiceAdapters, ImportServiceOptions, ImportServiceResult, VerificationIssue as ImportVerificationIssue, VerifyOptions as ImportVerifyOptions, VerifyResult as ImportVerifyResult, InMemoryCacheStorage, IntegrityAnalysisOptions, IntegrityAnalysisResult, IntegrityIssue, IntentAlignment, KeyValueStore, LayerDiscoveryOptions, LayerDiscoveryResult, LayerInventory, LayerLocation, OpenApiExportOptions as LegacyOpenApiExportOptions, OpenApiExportResult as LegacyOpenApiExportResult, ListSpecsForViewOptions, ListSpecsForViewResult, ListSpecsOptions, LogLevel, LoggerAdapter, MINIMAL_DEPENDENCIES, MetaRepoInfo, MonorepoConfig, OpenAICodexAgent, OpenApiExportServiceOptions, OpenApiExportServiceResult, OpenApiImportServiceOptions, OpenApiImportServiceResult, OpenApiSyncServiceOptions, OpenApiSyncServiceResult, OpenApiValidateServiceOptions, OpenApiValidateServiceResult, PackageInstallResult, PackageManager, PrActionOptions, PrActionService, ProgressReporter, ProgressUpdate, QuickstartDependency, QuickstartMode, QuickstartOptions, QuickstartPromptCallbacks, QuickstartResult, RegistryClient, RegistryClientOptions, ReportData, ReportInputs, ReportOptions, RepositoryType, ResolvedImplementation, ResolverOptions, RiskData, RuleSyncOptions, RuleSyncPort, RuleSyncResult, RuleSyncService, RunTestsResult, SETUP_TARGET_LABELS, SemanticVerificationResult, SetupFileResult, SetupOptions, SetupPromptCallbacks, SetupResult, SetupScope, SetupTarget, SimpleAgent, SpecCreatorService, SpecImplementationResult, SpecInventory, SpecLocation, SpecReferenceMatch, SpecVersionAnalysis, StructureCheck, SubmoduleInfo, SyncBuildFn, SyncSpecsOptions, SyncSpecsResult, SyncSpecsRunResult, SyncValidateFn, TenantValidationContext, TenantValidationResult, TestGeneratorOptions, TestGeneratorService, TestServiceOptions, TestServiceResult, VALID_AUDIENCES, ValidateImplementationOptions, ValidateImplementationResult, ValidateSpecOptions, ValidateSpecResult, ValidationData, VerificationCacheConfig, VerificationCacheEntry, VerificationCacheKey, VerificationCacheService, VerificationIssue$1 as VerificationIssue, VerifyConfig, VerifyInput, VerifyOptions$1 as VerifyOptions, VerifyResult$1 as VerifyResult, VerifyService, ViewAudience, ViewEntry, WatchBuildFn, WatchEvent, WatchEventHandler, WatchEventType, WatchOptions, WatchSpecsOptions, WatchValidateFn, Watcher, WatcherAdapter, WhatChangedData, WorkspaceAdapters, WorkspaceConfigInfo, WorkspaceInfo, WorkspaceStateCacheStorage, addToRegistry, agentAdapters, agentGuideService, analyzeDeps, analyzeGap, analyzeIntegrity, buildSpec, cacheKeyToString, claudeCodeAdapter, cleanArtifacts, compareSpecs, computeContentHash, createAgentGuideService, createBunFsAdapter, createConsoleLoggerAdapter, createEmptyLayerInventory, createFileSystemCacheStorage, createInMemoryCacheStorage, createNodeAdapters, createNodeAiAdapter, createNodeFsAdapter, createNodeGitAdapter, createNodeWatcherAdapter, createNoopLoggerAdapter, createQuickAIReview, createRegeneratorService, createSpecCreator, createVerificationCacheService, createVerifyService, createWorkspaceRegistry, createWorkspaceStateCacheStorage, cursorCLIAdapter, deepMergeOverwrite, deepMergePreserve, detectPackageManager, detectRepositoryType, determineStatus, discoverAllImplementations, discoverImplementationsForSpec, discoverLayers, exportGraphAsDot, exportOpenApi, exportSpecForLLM, extractContracts, extractSpecReferences, index_d_exports as features, filterIssuesBySeverity, filterIssuesByType, findAllConfigFiles, findMetaRepoRoot, findPackageRoot, findWorkspaceRoot, index_d_exports$1 as fix, formatCheckResult, formatDoctorSummary, formatFiles, formatJson, formatQuickstartPreview, formatVerificationReport, formatWorkspaceInfo, index_d_exports$2 as formatters, generateAgentsMd, generateAppBlueprintSpec, generateArtifacts, generateClaudeMcpConfig, generateCliReport, generateComponentTemplate, generateContractsrcConfig, generateCursorMcpConfig, generateCursorRules, generateCursorRulesFromParsedSpec, generateDataViewSpec, generateDocsFromSpecs, generateEventSpec, generateExperimentSpec, generateFeatureContextMarkdown, generateFeatureSpec, generateGuideFromParsedSpec, generateHandlerTemplate, generateIntegrationSpec, generateKnowledgeSpaceSpec, generateMarkdownReport, generateMermaidDiagram, generateMigrationSpec, generateOperationSpec, generatePresentationSpec, generateTelemetrySpec, generateTestTemplate, generateView, generateViews, generateVscodeSettings, generateWorkflowRunnerTemplate, generateWorkflowSpec, genericMCPAdapter, getAIProvider, getAgentAdapter, getAllLayerLocations, getAllSpecs, getApiKey, getClaudeDesktopConfigPath, getContractNode, getConventionPaths, getDependencies, getDevDependencies, getExecCommand, getExtendedWorkspaceInfo, getGraphStats, getImplementationSummary, getInstallCommand, getMetaRepoInfo, getPackageName, getProductionDependencies, getRunCommand, getWorkspaceInfo, getWorkspacePackages, groupSpecsByType, index_d_exports$3 as hooks, index_d_exports$4 as impact, importFromOpenApiService, importFromSourceService, inferImplementationType, isContractSpecInstalled, isMonorepo, listAgentTypes, listFromRegistry, listSpecs, listSpecsForView, listTests, loadWorkspaceConfig, mergeMonorepoConfigs, module, operationRegistry, parseExplicitImplementations, parseGitModules, index_d_exports$5 as prompts, resolveAllImplementations, resolveImplementations, resolveRegistryUrl, runCIChecks, runDoctor, runQuickstart, runSetup, runTestSpecs, runTests, safeParseJson, searchRegistry, stringToCacheKey, syncSpecs, syncWithOpenApiService, index_d_exports$6 as templates, toKebabCase, index_d_exports$7 as upgrade, index_d_exports$8 as utils, validateAgainstOpenApiService, validateAudience, validateBlueprint, validateImplementationFiles, validateImplementationWithAgent, validateSpec, validateSpecs, validateTenantConfig, verifyBehavior, verifyImplementationAgainstParsedSpec, verifyImportedContracts, verifySemanticFields, verifyService, verifyStructure, verifyWithAI, verifyWithAIEnhanced, index_d_exports$9 as versioning, index_d_exports$10 as vibe, watchSpecs };
package/dist/index.mjs CHANGED
@@ -1,4 +1,6 @@
1
- import { DEFAULT_SPEC_PATTERNS, createNodeFsAdapter } from "./adapters/fs.mjs";
1
+ import { DEFAULT_FS_IGNORES, DEFAULT_SPEC_PATTERNS } from "./adapters/fs.mjs";
2
+ import { createNodeFsAdapter } from "./adapters/fs.node.mjs";
3
+ import { createBunFsAdapter } from "./adapters/fs.bun.mjs";
2
4
  import { createNodeGitAdapter } from "./adapters/git.mjs";
3
5
  import { createNodeWatcherAdapter } from "./adapters/watcher.mjs";
4
6
  import { createNodeAiAdapter } from "./adapters/ai.mjs";
@@ -6,11 +8,13 @@ import { createConsoleLoggerAdapter, createNoopLoggerAdapter } from "./adapters/
6
8
  import { createNodeAdapters } from "./adapters/factory.mjs";
7
9
  import { detectPackageManager, detectRepositoryType, findMetaRepoRoot, findPackageRoot, findWorkspaceRoot, getExecCommand, getInstallCommand, getMetaRepoInfo, getPackageName, getRunCommand, getWorkspaceInfo, getWorkspacePackages, isMonorepo, parseGitModules } from "./adapters/workspace.mjs";
8
10
  import "./adapters/index.mjs";
11
+ import { utils_exports } from "./utils/index.mjs";
12
+ import { groupSpecsByType, listSpecs } from "./services/list.mjs";
9
13
  import { validateSpec, validateSpecs } from "./services/validate/spec-validator.mjs";
10
14
  import { validateImplementationFiles } from "./services/validate/implementation-validator.mjs";
11
15
  import { validateBlueprint } from "./services/validate/blueprint-validator.mjs";
12
16
  import { validateTenantConfig } from "./services/validate/tenant-validator.mjs";
13
- import { getAIProvider, getRecommendedModels, validateProvider } from "./ai/providers.mjs";
17
+ import { getAIProvider } from "./ai/providers.mjs";
14
18
  import { SimpleAgent } from "./ai/agents/simple-agent.mjs";
15
19
  import { CursorAgent } from "./ai/agents/cursor-agent.mjs";
16
20
  import { ClaudeCodeAgent } from "./ai/agents/claude-code-agent.mjs";
@@ -20,8 +24,6 @@ import { validateImplementationWithAgent } from "./services/validate/implementat
20
24
  import { features_exports } from "./services/features/index.mjs";
21
25
  import { compareSpecs } from "./services/diff.mjs";
22
26
  import { analyzeDeps, exportGraphAsDot, getContractNode, getGraphStats } from "./services/deps.mjs";
23
- import { utils_exports } from "./utils/index.mjs";
24
- import { groupSpecsByType, listSpecs } from "./services/list.mjs";
25
27
  import { getApiKey, loadWorkspaceConfig } from "./services/config.mjs";
26
28
  import { buildSpec } from "./services/build.mjs";
27
29
  import { importFromOpenApiService } from "./services/openapi/import-service.mjs";
@@ -45,10 +47,11 @@ import { deepMergeOverwrite, deepMergePreserve, formatJson, safeParseJson } from
45
47
  import { runSetup } from "./services/setup/setup-service.mjs";
46
48
  import { ALL_CHECK_CATEGORIES, CHECK_CATEGORY_LABELS } from "./services/doctor/types.mjs";
47
49
  import { formatCheckResult, formatDoctorSummary, runDoctor } from "./services/doctor/doctor-service.mjs";
50
+ import { PrActionService } from "./services/action-pr/service.mjs";
48
51
  import { ALL_CI_CHECK_CATEGORIES, CI_CHECK_CATEGORY_LABELS } from "./services/ci-check/types.mjs";
49
52
  import { discoverAllImplementations, discoverImplementationsForSpec, extractSpecReferences, inferImplementationType } from "./services/implementation/discovery.mjs";
50
53
  import { getConventionPaths, toKebabCase } from "./services/implementation/resolver/conventions.mjs";
51
- import { getSpecKeyVariants, parseExplicitImplementations } from "./services/implementation/resolver/parsers.mjs";
54
+ import { parseExplicitImplementations } from "./services/implementation/resolver/parsers.mjs";
52
55
  import { determineStatus, getImplementationSummary } from "./services/implementation/resolver/status.mjs";
53
56
  import { resolveAllImplementations, resolveImplementations } from "./services/implementation/resolver/index.mjs";
54
57
  import { generateDocsFromSpecs } from "./services/docs/docs-service.mjs";
@@ -91,6 +94,7 @@ import { FULL_DEPENDENCIES, MINIMAL_DEPENDENCIES, getDependencies, getDevDepende
91
94
  import { formatQuickstartPreview, isContractSpecInstalled, runQuickstart } from "./services/quickstart/quickstart-service.mjs";
92
95
  import { impact_exports } from "./services/impact/index.mjs";
93
96
  import { formatFiles } from "./services/formatter.mjs";
97
+ import { DriftActionService } from "./services/action-drift/service.mjs";
94
98
  import { versioning_exports } from "./services/versioning/index.mjs";
95
99
  import { upgrade_exports } from "./services/upgrade/index.mjs";
96
100
  import { hooks_exports } from "./services/hooks/index.mjs";
@@ -104,10 +108,10 @@ import { importFromSourceService } from "./services/import/import-service.mjs";
104
108
  import { verifyImportedContracts } from "./services/import/verify-service.mjs";
105
109
  import { generateCliReport, generateMarkdownReport } from "./services/import/report-service.mjs";
106
110
  import "./services/index.mjs";
111
+ import { createWorkspaceRegistry, operationRegistry } from "./registry.mjs";
107
112
  import { formatters_exports } from "./formatters/index.mjs";
108
- import { AIClient } from "./ai/client.mjs";
109
113
  import { prompts_exports } from "./ai/prompts/index.mjs";
110
114
  import "./ai/index.mjs";
111
115
  import * as module from "@contractspec/module.workspace";
112
116
 
113
- export { AIClient, AIGenerator, ALL_CHECK_CATEGORIES, ALL_CI_CHECK_CATEGORIES, ALL_SETUP_TARGETS, AgentGuideService, AgentOrchestrator, CHECK_CATEGORY_LABELS, CI_CHECK_CATEGORY_LABELS, ClaudeCodeAdapter, ClaudeCodeAgent, CursorAgent, CursorCLIAdapter, DEFAULT_CACHE_CONFIG, DEFAULT_SPEC_PATTERNS, FULL_DEPENDENCIES, FileSystemCacheStorage, GenericMCPAdapter, InMemoryCacheStorage, MINIMAL_DEPENDENCIES, OpenAICodexAgent, RegistryClient, RuleSyncService, SETUP_TARGET_LABELS, SimpleAgent, SpecCreatorService, TestGeneratorService, VALID_AUDIENCES, VerificationCacheService, VerifyService, WorkspaceStateCacheStorage, addToRegistry, agentAdapters, agentGuideService, analyzeDeps, analyzeGap, analyzeIntegrity, buildSpec, cacheKeyToString, claudeCodeAdapter, cleanArtifacts, compareSpecs, computeContentHash, createAgentGuideService, createConsoleLoggerAdapter, createEmptyLayerInventory, createFileSystemCacheStorage, createInMemoryCacheStorage, createNodeAdapters, createNodeAiAdapter, createNodeFsAdapter, createNodeGitAdapter, createNodeWatcherAdapter, createNoopLoggerAdapter, createQuickAIReview, createRegeneratorService, createSpecCreator, createVerificationCacheService, createVerifyService, createWorkspaceStateCacheStorage, cursorCLIAdapter, deepMergeOverwrite, deepMergePreserve, detectPackageManager, detectRepositoryType, determineStatus, discoverAllImplementations, discoverImplementationsForSpec, discoverLayers, exportGraphAsDot, exportOpenApi, exportSpecForLLM, extractContracts, extractSpecReferences, features_exports as features, filterIssuesBySeverity, filterIssuesByType, findAllConfigFiles, findMetaRepoRoot, findPackageRoot, findWorkspaceRoot, fix_exports as fix, formatCheckResult, formatDoctorSummary, formatFiles, formatJson, formatQuickstartPreview, formatVerificationReport, formatWorkspaceInfo, formatters_exports as formatters, generateAgentsMd, generateAppBlueprintSpec, generateArtifacts, generateClaudeMcpConfig, generateCliReport, generateComponentTemplate, generateContractsrcConfig, generateCursorMcpConfig, generateCursorRules, generateCursorRulesFromParsedSpec, generateDataViewSpec, generateDocsFromSpecs, generateEventSpec, generateExperimentSpec, generateFeatureContextMarkdown, generateFeatureSpec, generateGuideFromParsedSpec, generateHandlerTemplate, generateIntegrationSpec, generateKnowledgeSpaceSpec, generateMarkdownReport, generateMermaidDiagram, generateMigrationSpec, generateOperationSpec, generatePresentationSpec, generateTelemetrySpec, generateTestTemplate, generateView, generateViews, generateVscodeSettings, generateWorkflowRunnerTemplate, generateWorkflowSpec, genericMCPAdapter, getAIProvider, getAgentAdapter, getAllLayerLocations, getAllSpecs, getApiKey, getClaudeDesktopConfigPath, getContractNode, getConventionPaths, getDependencies, getDevDependencies, getExecCommand, getExtendedWorkspaceInfo, getGraphStats, getImplementationSummary, getInstallCommand, getMetaRepoInfo, getPackageName, getProductionDependencies, getRecommendedModels, getRunCommand, getSpecKeyVariants, getWorkspaceInfo, getWorkspacePackages, groupSpecsByType, hooks_exports as hooks, impact_exports as impact, importFromOpenApiService, importFromSourceService, inferImplementationType, isContractSpecInstalled, isMonorepo, listAgentTypes, listFromRegistry, listSpecs, listSpecsForView, listTests, loadWorkspaceConfig, mergeMonorepoConfigs, module, parseExplicitImplementations, parseGitModules, prompts_exports as prompts, resolveAllImplementations, resolveImplementations, resolveRegistryUrl, runCIChecks, runDoctor, runQuickstart, runSetup, runTestSpecs, runTests, safeParseJson, searchRegistry, stringToCacheKey, syncSpecs, syncWithOpenApiService, templates_exports as templates, toKebabCase, upgrade_exports as upgrade, utils_exports as utils, validateAgainstOpenApiService, validateAudience, validateBlueprint, validateImplementationFiles, validateImplementationWithAgent, validateProvider, validateSpec, validateSpecs, validateTenantConfig, verifyBehavior, verifyImplementationAgainstParsedSpec, verifyImportedContracts, verifySemanticFields, verifyService, verifyStructure, verifyWithAI, verifyWithAIEnhanced, versioning_exports as versioning, vibe_exports as vibe, watchSpecs };
117
+ export { AIGenerator, ALL_CHECK_CATEGORIES, ALL_CI_CHECK_CATEGORIES, ALL_SETUP_TARGETS, AgentGuideService, AgentOrchestrator, CHECK_CATEGORY_LABELS, CI_CHECK_CATEGORY_LABELS, ClaudeCodeAdapter, ClaudeCodeAgent, CursorAgent, CursorCLIAdapter, DEFAULT_CACHE_CONFIG, DEFAULT_FS_IGNORES, DEFAULT_SPEC_PATTERNS, DriftActionService, FULL_DEPENDENCIES, FileSystemCacheStorage, GenericMCPAdapter, InMemoryCacheStorage, MINIMAL_DEPENDENCIES, OpenAICodexAgent, PrActionService, RegistryClient, RuleSyncService, SETUP_TARGET_LABELS, SimpleAgent, SpecCreatorService, TestGeneratorService, VALID_AUDIENCES, VerificationCacheService, VerifyService, WorkspaceStateCacheStorage, addToRegistry, agentAdapters, agentGuideService, analyzeDeps, analyzeGap, analyzeIntegrity, buildSpec, cacheKeyToString, claudeCodeAdapter, cleanArtifacts, compareSpecs, computeContentHash, createAgentGuideService, createBunFsAdapter, createConsoleLoggerAdapter, createEmptyLayerInventory, createFileSystemCacheStorage, createInMemoryCacheStorage, createNodeAdapters, createNodeAiAdapter, createNodeFsAdapter, createNodeGitAdapter, createNodeWatcherAdapter, createNoopLoggerAdapter, createQuickAIReview, createRegeneratorService, createSpecCreator, createVerificationCacheService, createVerifyService, createWorkspaceRegistry, createWorkspaceStateCacheStorage, cursorCLIAdapter, deepMergeOverwrite, deepMergePreserve, detectPackageManager, detectRepositoryType, determineStatus, discoverAllImplementations, discoverImplementationsForSpec, discoverLayers, exportGraphAsDot, exportOpenApi, exportSpecForLLM, extractContracts, extractSpecReferences, features_exports as features, filterIssuesBySeverity, filterIssuesByType, findAllConfigFiles, findMetaRepoRoot, findPackageRoot, findWorkspaceRoot, fix_exports as fix, formatCheckResult, formatDoctorSummary, formatFiles, formatJson, formatQuickstartPreview, formatVerificationReport, formatWorkspaceInfo, formatters_exports as formatters, generateAgentsMd, generateAppBlueprintSpec, generateArtifacts, generateClaudeMcpConfig, generateCliReport, generateComponentTemplate, generateContractsrcConfig, generateCursorMcpConfig, generateCursorRules, generateCursorRulesFromParsedSpec, generateDataViewSpec, generateDocsFromSpecs, generateEventSpec, generateExperimentSpec, generateFeatureContextMarkdown, generateFeatureSpec, generateGuideFromParsedSpec, generateHandlerTemplate, generateIntegrationSpec, generateKnowledgeSpaceSpec, generateMarkdownReport, generateMermaidDiagram, generateMigrationSpec, generateOperationSpec, generatePresentationSpec, generateTelemetrySpec, generateTestTemplate, generateView, generateViews, generateVscodeSettings, generateWorkflowRunnerTemplate, generateWorkflowSpec, genericMCPAdapter, getAIProvider, getAgentAdapter, getAllLayerLocations, getAllSpecs, getApiKey, getClaudeDesktopConfigPath, getContractNode, getConventionPaths, getDependencies, getDevDependencies, getExecCommand, getExtendedWorkspaceInfo, getGraphStats, getImplementationSummary, getInstallCommand, getMetaRepoInfo, getPackageName, getProductionDependencies, getRunCommand, getWorkspaceInfo, getWorkspacePackages, groupSpecsByType, hooks_exports as hooks, impact_exports as impact, importFromOpenApiService, importFromSourceService, inferImplementationType, isContractSpecInstalled, isMonorepo, listAgentTypes, listFromRegistry, listSpecs, listSpecsForView, listTests, loadWorkspaceConfig, mergeMonorepoConfigs, module, operationRegistry, parseExplicitImplementations, parseGitModules, prompts_exports as prompts, resolveAllImplementations, resolveImplementations, resolveRegistryUrl, runCIChecks, runDoctor, runQuickstart, runSetup, runTestSpecs, runTests, safeParseJson, searchRegistry, stringToCacheKey, syncSpecs, syncWithOpenApiService, templates_exports as templates, toKebabCase, upgrade_exports as upgrade, utils_exports as utils, validateAgainstOpenApiService, validateAudience, validateBlueprint, validateImplementationFiles, validateImplementationWithAgent, validateSpec, validateSpecs, validateTenantConfig, verifyBehavior, verifyImplementationAgainstParsedSpec, verifyImportedContracts, verifySemanticFields, verifyService, verifyStructure, verifyWithAI, verifyWithAIEnhanced, versioning_exports as versioning, vibe_exports as vibe, watchSpecs };
@@ -1,7 +1,11 @@
1
- import { WorkspaceConfig } from "@contractspec/module.workspace";
1
+ import { ResolvedContractsrcConfig } from "@contractspec/lib.contracts";
2
2
 
3
3
  //#region src/ports/ai.d.ts
4
4
 
5
+ /**
6
+ * AI provider type.
7
+ */
8
+ type AiProvider = 'claude' | 'openai' | 'ollama' | 'custom';
5
9
  /**
6
10
  * AI generation options.
7
11
  */
@@ -38,7 +42,7 @@ interface AiAdapter {
38
42
  /**
39
43
  * Validate provider configuration.
40
44
  */
41
- validateProvider(config: WorkspaceConfig): Promise<AiValidationResult>;
45
+ validateProvider(config: ResolvedContractsrcConfig): Promise<AiValidationResult>;
42
46
  /**
43
47
  * Generate text from prompt.
44
48
  */
@@ -55,5 +59,5 @@ interface AiAdapter {
55
59
  streamText(options: AiGenerateOptions, onChunk: (text: string) => void): Promise<string>;
56
60
  }
57
61
  //#endregion
58
- export { AiAdapter, AiGenerateOptions, AiGenerateResult, AiGenerateStructuredOptions, AiValidationResult };
62
+ export { AiAdapter, AiGenerateOptions, AiGenerateResult, AiGenerateStructuredOptions, AiProvider, AiValidationResult };
59
63
  //# sourceMappingURL=ai.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.mts","names":[],"sources":["../../src/ports/ai.ts"],"sourcesContent":[],"mappings":";;;;;;;AAwDwB,UA1CP,iBAAA,CA0CO;EAA4B,MAAA,EAAA,MAAA;EAAR,YAAA,CAAA,EAAA,MAAA;EAMH,MAAA,CAAA,EAAA,OAAA;;;;;AASpC,UAhDY,2BAgDZ,CAAA,EAAA,CAAA,CAAA;EAAO,MAAA,EAAA,MAAA;;;;;;;UAvCK,gBAAA;;;;;;UAOA,kBAAA;;;;;;;UAQA,SAAA;;;;2BAIU,kBAAkB,QAAQ;;;;wBAK7B,oBAAoB,QAAQ;;;;iCAMvC,4BAA4B,KACpC;YAAkB;;;;;sBAMV,qDAER"}
1
+ {"version":3,"file":"ai.d.mts","names":[],"sources":["../../src/ports/ai.ts"],"sourcesContent":[],"mappings":";;;;AAcA;AASA;AASA;AAOiB,KA9BL,UAAA,GA8BuB,QAAA,GAAA,QAAA,GAAA,QAAA,GAAA,QAAA;AAQnC;;;AAMK,UAvCY,iBAAA,CAuCZ;EAKmB,MAAA,EAAA,MAAA;EAA4B,YAAA,CAAA,EAAA,MAAA;EAAR,MAAA,CAAA,EAAA,OAAA;;;;;AAa/B,UAhDI,2BAgDJ,CAAA,EAAA,CAAA,CAAA;EAER,MAAA,EAAA,MAAA;EAAO,YAAA,CAAA,EAAA,MAAA;;;;;;UAzCK,gBAAA;;;;;;UAOA,kBAAA;;;;;;;UAQA,SAAA;;;;2BAKL,4BACP,QAAQ;;;;wBAKW,oBAAoB,QAAQ;;;;iCAMvC,4BAA4B,KACpC;YAAkB;;;;;sBAMV,qDAER"}
@@ -1,6 +1,6 @@
1
1
  import { DiscoverOptions, FileStat, FsAdapter } from "./fs.mjs";
2
2
  import { GitAdapter, GitCleanOptions, GitLogEntry } from "./git.mjs";
3
3
  import { WatchEvent, WatchEventHandler, WatchEventType, WatchOptions, Watcher, WatcherAdapter } from "./watcher.mjs";
4
- import { AiAdapter, AiGenerateOptions, AiGenerateResult, AiGenerateStructuredOptions, AiValidationResult } from "./ai.mjs";
4
+ import { AiAdapter, AiGenerateOptions, AiGenerateResult, AiGenerateStructuredOptions, AiProvider, AiValidationResult } from "./ai.mjs";
5
5
  import { LogLevel, LoggerAdapter, ProgressReporter, ProgressUpdate, WorkspaceAdapters } from "./logger.mjs";
6
6
  import { RuleSyncOptions, RuleSyncPort, RuleSyncResult } from "./rulesync.mjs";
@@ -0,0 +1,15 @@
1
+ import { OperationSpecRegistry } from "@contractspec/lib.contracts";
2
+
3
+ //#region src/registry.d.ts
4
+
5
+ /**
6
+ * Create workspace operation registry with all required specs and handlers bound.
7
+ */
8
+ declare function createWorkspaceRegistry(): OperationSpecRegistry;
9
+ /**
10
+ * Export a ready-to-use registry for CLI compatibility.
11
+ */
12
+ declare const operationRegistry: OperationSpecRegistry;
13
+ //#endregion
14
+ export { createWorkspaceRegistry, operationRegistry };
15
+ //# sourceMappingURL=registry.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.mts","names":[],"sources":["../src/registry.ts"],"sourcesContent":[],"mappings":";;;;;;AAQA;AAYa,iBAZG,uBAAA,CAAA,CAYc,EAZa,qBAYe;;;;cAA7C,mBAAiB"}
@@ -0,0 +1,19 @@
1
+ import { OperationSpecRegistry, registerReportContracts } from "@contractspec/lib.contracts";
2
+
3
+ //#region src/registry.ts
4
+ /**
5
+ * Create workspace operation registry with all required specs and handlers bound.
6
+ */
7
+ function createWorkspaceRegistry() {
8
+ const registry = new OperationSpecRegistry();
9
+ registerReportContracts(registry);
10
+ return registry;
11
+ }
12
+ /**
13
+ * Export a ready-to-use registry for CLI compatibility.
14
+ */
15
+ const operationRegistry = createWorkspaceRegistry();
16
+
17
+ //#endregion
18
+ export { createWorkspaceRegistry, operationRegistry };
19
+ //# sourceMappingURL=registry.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.mjs","names":[],"sources":["../src/registry.ts"],"sourcesContent":["import {\n OperationSpecRegistry,\n registerReportContracts,\n} from '@contractspec/lib.contracts';\n\n/**\n * Create workspace operation registry with all required specs and handlers bound.\n */\nexport function createWorkspaceRegistry(): OperationSpecRegistry {\n const registry = new OperationSpecRegistry();\n\n // Register report-related contracts\n registerReportContracts(registry);\n\n return registry;\n}\n\n/**\n * Export a ready-to-use registry for CLI compatibility.\n */\nexport const operationRegistry = createWorkspaceRegistry();\n"],"mappings":";;;;;;AAQA,SAAgB,0BAAiD;CAC/D,MAAM,WAAW,IAAI,uBAAuB;AAG5C,yBAAwB,SAAS;AAEjC,QAAO;;;;;AAMT,MAAa,oBAAoB,yBAAyB"}
@@ -0,0 +1,11 @@
1
+ import { ReportData } from "../action-pr/types.mjs";
2
+ import { DriftReportInputs, FinalizeDriftResult } from "./types.mjs";
3
+
4
+ //#region src/services/action-drift/service.d.ts
5
+ declare class DriftActionService {
6
+ buildReportData(inputs: DriftReportInputs): ReportData;
7
+ finalizeResults(data: ReportData, onDrift: string): FinalizeDriftResult;
8
+ }
9
+ //#endregion
10
+ export { DriftActionService };
11
+ //# sourceMappingURL=service.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.mts","names":[],"sources":["../../../src/services/action-drift/service.ts"],"sourcesContent":[],"mappings":";;;;cAMa,kBAAA;0BACa,oBAAoB;wBA8CtB,8BAA8B;AA/CtD"}
@@ -0,0 +1,43 @@
1
+ //#region src/services/action-drift/service.ts
2
+ var DriftActionService = class {
3
+ buildReportData(inputs) {
4
+ const reportData = inputs.existingReportData || {};
5
+ reportData.contracts = inputs.contractsJson;
6
+ reportData.whatChanged = {
7
+ summary: "Drift check completed.",
8
+ detailsPath: "",
9
+ ...reportData.whatChanged
10
+ };
11
+ reportData.risk = {
12
+ status: "unknown",
13
+ breaking: 0,
14
+ nonBreaking: 0,
15
+ ...reportData.risk
16
+ };
17
+ reportData.validation = {
18
+ status: "skipped",
19
+ outputPath: "",
20
+ ...reportData.validation
21
+ };
22
+ reportData.drift = {
23
+ status: inputs.driftStatus,
24
+ files: inputs.driftFiles
25
+ };
26
+ if (!reportData.nextSteps) reportData.nextSteps = [];
27
+ if (inputs.driftStatus === "fail") reportData.nextSteps.push("Run the generate command locally and commit drift fixes.");
28
+ return reportData;
29
+ }
30
+ finalizeResults(data, onDrift) {
31
+ const driftDetected = data.drift?.status === "fail";
32
+ let shouldFail = false;
33
+ if (driftDetected && onDrift === "fail") shouldFail = true;
34
+ return {
35
+ driftDetected,
36
+ shouldFail
37
+ };
38
+ }
39
+ };
40
+
41
+ //#endregion
42
+ export { DriftActionService };
43
+ //# sourceMappingURL=service.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.mjs","names":[],"sources":["../../../src/services/action-drift/service.ts"],"sourcesContent":["import type {\n DriftReportInputs,\n FinalizeDriftResult,\n ReportData,\n} from './types';\n\nexport class DriftActionService {\n buildReportData(inputs: DriftReportInputs): ReportData {\n // Start with existing data or empty structure\n const reportData: ReportData = inputs.existingReportData || {};\n\n // Update with latest contracts data\n reportData.contracts = inputs.contractsJson;\n\n // Set specific drift-check values\n reportData.whatChanged = {\n summary: 'Drift check completed.',\n detailsPath: '',\n ...reportData.whatChanged, // Preserve if existing, though usually overwritten by specific action logic\n };\n\n // Reset risk/validation as this action focuses on drift\n reportData.risk = {\n status: 'unknown',\n breaking: 0,\n nonBreaking: 0,\n ...reportData.risk,\n };\n\n reportData.validation = {\n status: 'skipped',\n outputPath: '',\n ...reportData.validation,\n };\n\n reportData.drift = {\n status: inputs.driftStatus,\n files: inputs.driftFiles,\n };\n\n if (!reportData.nextSteps) {\n reportData.nextSteps = [];\n }\n\n if (inputs.driftStatus === 'fail') {\n reportData.nextSteps.push(\n 'Run the generate command locally and commit drift fixes.'\n );\n }\n\n return reportData;\n }\n\n finalizeResults(data: ReportData, onDrift: string): FinalizeDriftResult {\n const driftDetected = data.drift?.status === 'fail';\n let shouldFail = false;\n\n if (driftDetected && onDrift === 'fail') {\n shouldFail = true;\n }\n\n return {\n driftDetected,\n shouldFail,\n };\n }\n}\n"],"mappings":";AAMA,IAAa,qBAAb,MAAgC;CAC9B,gBAAgB,QAAuC;EAErD,MAAM,aAAyB,OAAO,sBAAsB,EAAE;AAG9D,aAAW,YAAY,OAAO;AAG9B,aAAW,cAAc;GACvB,SAAS;GACT,aAAa;GACb,GAAG,WAAW;GACf;AAGD,aAAW,OAAO;GAChB,QAAQ;GACR,UAAU;GACV,aAAa;GACb,GAAG,WAAW;GACf;AAED,aAAW,aAAa;GACtB,QAAQ;GACR,YAAY;GACZ,GAAG,WAAW;GACf;AAED,aAAW,QAAQ;GACjB,QAAQ,OAAO;GACf,OAAO,OAAO;GACf;AAED,MAAI,CAAC,WAAW,UACd,YAAW,YAAY,EAAE;AAG3B,MAAI,OAAO,gBAAgB,OACzB,YAAW,UAAU,KACnB,2DACD;AAGH,SAAO;;CAGT,gBAAgB,MAAkB,SAAsC;EACtE,MAAM,gBAAgB,KAAK,OAAO,WAAW;EAC7C,IAAI,aAAa;AAEjB,MAAI,iBAAiB,YAAY,OAC/B,cAAa;AAGf,SAAO;GACL;GACA;GACD"}