@entelligentsia/forgecli 0.1.0 → 0.2.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 (128) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +50 -38
  3. package/dist/extensions/forgecli/forge-commands.d.ts +21 -0
  4. package/dist/extensions/forgecli/forge-commands.js +141 -0
  5. package/dist/extensions/forgecli/forge-commands.js.map +1 -1
  6. package/dist/extensions/forgecli/forge-init.d.ts +26 -0
  7. package/dist/extensions/forgecli/forge-init.js +916 -0
  8. package/dist/extensions/forgecli/forge-init.js.map +1 -0
  9. package/dist/extensions/forgecli/health-check.d.ts +18 -0
  10. package/dist/extensions/forgecli/health-check.js +154 -0
  11. package/dist/extensions/forgecli/health-check.js.map +1 -0
  12. package/dist/extensions/forgecli/index.js +22 -9
  13. package/dist/extensions/forgecli/index.js.map +1 -1
  14. package/dist/extensions/forgecli/init-context.d.ts +99 -0
  15. package/dist/extensions/forgecli/init-context.js +163 -0
  16. package/dist/extensions/forgecli/init-context.js.map +1 -0
  17. package/dist/extensions/forgecli/init-progress.d.ts +39 -0
  18. package/dist/extensions/forgecli/init-progress.js +117 -0
  19. package/dist/extensions/forgecli/init-progress.js.map +1 -0
  20. package/dist/extensions/forgecli/refresh-kb-links.d.ts +18 -0
  21. package/dist/extensions/forgecli/refresh-kb-links.js +228 -0
  22. package/dist/extensions/forgecli/refresh-kb-links.js.map +1 -0
  23. package/dist/forge-payload/.base-pack/commands/approve.md +22 -0
  24. package/dist/forge-payload/.base-pack/commands/collate.md +22 -0
  25. package/dist/forge-payload/.base-pack/commands/commit.md +22 -0
  26. package/dist/forge-payload/.base-pack/commands/enhance.md +37 -0
  27. package/dist/forge-payload/.base-pack/commands/fix-bug.md +22 -0
  28. package/dist/forge-payload/.base-pack/commands/implement.md +22 -0
  29. package/dist/forge-payload/.base-pack/commands/plan.md +22 -0
  30. package/dist/forge-payload/.base-pack/commands/quiz-agent.md +22 -0
  31. package/dist/forge-payload/.base-pack/commands/retrospective.md +22 -0
  32. package/dist/forge-payload/.base-pack/commands/review-code.md +22 -0
  33. package/dist/forge-payload/.base-pack/commands/review-plan.md +22 -0
  34. package/dist/forge-payload/.base-pack/commands/run-sprint.md +22 -0
  35. package/dist/forge-payload/.base-pack/commands/run-task.md +22 -0
  36. package/dist/forge-payload/.base-pack/commands/sprint-intake.md +22 -0
  37. package/dist/forge-payload/.base-pack/commands/sprint-plan.md +22 -0
  38. package/dist/forge-payload/.base-pack/commands/validate.md +22 -0
  39. package/dist/forge-payload/.claude-plugin/plugin.json +15 -0
  40. package/dist/forge-payload/.init/discovery/discover-database.md +32 -0
  41. package/dist/forge-payload/.init/discovery/discover-processes.md +31 -0
  42. package/dist/forge-payload/.init/discovery/discover-routing.md +31 -0
  43. package/dist/forge-payload/.init/discovery/discover-stack.md +33 -0
  44. package/dist/forge-payload/.init/discovery/discover-testing.md +34 -0
  45. package/dist/forge-payload/.init/generation/generate-kb-doc.md +60 -0
  46. package/dist/forge-payload/.schemas/bug.schema.json +53 -0
  47. package/dist/forge-payload/.schemas/collation-state.schema.json +16 -0
  48. package/dist/forge-payload/.schemas/event-sidecar.schema.json +22 -0
  49. package/dist/forge-payload/.schemas/event.schema.json +32 -0
  50. package/dist/forge-payload/.schemas/feature.schema.json +22 -0
  51. package/dist/forge-payload/.schemas/progress-entry.schema.json +16 -0
  52. package/dist/forge-payload/.schemas/project-context.schema.json +167 -0
  53. package/dist/forge-payload/.schemas/project-overlay.schema.json +25 -0
  54. package/dist/forge-payload/.schemas/sprint.schema.json +27 -0
  55. package/dist/forge-payload/.schemas/structure-versions.schema.json +57 -0
  56. package/dist/forge-payload/.schemas/task.schema.json +58 -0
  57. package/dist/forge-payload/.tools/banners.cjs +435 -0
  58. package/dist/forge-payload/.tools/build-context-pack.cjs +290 -0
  59. package/dist/forge-payload/.tools/build-init-context.cjs +322 -0
  60. package/dist/forge-payload/.tools/build-overlay.cjs +326 -0
  61. package/dist/forge-payload/.tools/build-persona-pack.cjs +226 -0
  62. package/dist/forge-payload/.tools/collate.cjs +1041 -0
  63. package/dist/forge-payload/.tools/generation-manifest.cjs +311 -0
  64. package/dist/forge-payload/.tools/lib/forge-root.cjs +59 -0
  65. package/dist/forge-payload/.tools/lib/paths.cjs +29 -0
  66. package/dist/forge-payload/.tools/lib/pricing.cjs +165 -0
  67. package/dist/forge-payload/.tools/lib/project-root.cjs +32 -0
  68. package/dist/forge-payload/.tools/lib/result.js +40 -0
  69. package/dist/forge-payload/.tools/lib/validate.js +131 -0
  70. package/dist/forge-payload/.tools/manage-config.cjs +340 -0
  71. package/dist/forge-payload/.tools/manage-versions.cjs +365 -0
  72. package/dist/forge-payload/.tools/seed-store.cjs +237 -0
  73. package/dist/forge-payload/.tools/store-cli.cjs +1123 -0
  74. package/dist/forge-payload/.tools/store.cjs +315 -0
  75. package/dist/forge-payload/.tools/substitute-placeholders.cjs +625 -0
  76. package/dist/forge-payload/.tools/validate-store.cjs +522 -0
  77. package/package.json +1 -1
  78. /package/dist/forge-payload/{personas → .base-pack/personas}/architect.md +0 -0
  79. /package/dist/forge-payload/{personas → .base-pack/personas}/bug-fixer.md +0 -0
  80. /package/dist/forge-payload/{personas → .base-pack/personas}/collator.md +0 -0
  81. /package/dist/forge-payload/{personas → .base-pack/personas}/engineer.md +0 -0
  82. /package/dist/forge-payload/{personas → .base-pack/personas}/librarian.md +0 -0
  83. /package/dist/forge-payload/{personas → .base-pack/personas}/orchestrator.md +0 -0
  84. /package/dist/forge-payload/{personas → .base-pack/personas}/product-manager.md +0 -0
  85. /package/dist/forge-payload/{personas → .base-pack/personas}/qa-engineer.md +0 -0
  86. /package/dist/forge-payload/{personas → .base-pack/personas}/supervisor.md +0 -0
  87. /package/dist/forge-payload/{skills → .base-pack/skills}/architect-skills.md +0 -0
  88. /package/dist/forge-payload/{skills → .base-pack/skills}/bug-fixer-skills.md +0 -0
  89. /package/dist/forge-payload/{skills → .base-pack/skills}/collator-skills.md +0 -0
  90. /package/dist/forge-payload/{skills → .base-pack/skills}/engineer-skills.md +0 -0
  91. /package/dist/forge-payload/{skills → .base-pack/skills}/generic-skills.md +0 -0
  92. /package/dist/forge-payload/{skills → .base-pack/skills}/librarian-skills.md +0 -0
  93. /package/dist/forge-payload/{skills → .base-pack/skills}/qa-engineer-skills.md +0 -0
  94. /package/dist/forge-payload/{skills → .base-pack/skills}/store-custodian-skills.md +0 -0
  95. /package/dist/forge-payload/{skills → .base-pack/skills}/supervisor-skills.md +0 -0
  96. /package/dist/forge-payload/{templates → .base-pack/templates}/CODE_REVIEW_TEMPLATE.md +0 -0
  97. /package/dist/forge-payload/{templates → .base-pack/templates}/COST_REPORT_TEMPLATE.md +0 -0
  98. /package/dist/forge-payload/{templates → .base-pack/templates}/PLAN_REVIEW_TEMPLATE.md +0 -0
  99. /package/dist/forge-payload/{templates → .base-pack/templates}/PLAN_SUMMARY_TEMPLATE.json +0 -0
  100. /package/dist/forge-payload/{templates → .base-pack/templates}/PLAN_TEMPLATE.md +0 -0
  101. /package/dist/forge-payload/{templates → .base-pack/templates}/PROGRESS_TEMPLATE.md +0 -0
  102. /package/dist/forge-payload/{templates → .base-pack/templates}/RETROSPECTIVE_TEMPLATE.md +0 -0
  103. /package/dist/forge-payload/{templates → .base-pack/templates}/SPRINT_MANIFEST_TEMPLATE.md +0 -0
  104. /package/dist/forge-payload/{templates → .base-pack/templates}/SPRINT_REQUIREMENTS_TEMPLATE.md +0 -0
  105. /package/dist/forge-payload/{templates → .base-pack/templates}/TASK_PROMPT_TEMPLATE.md +0 -0
  106. /package/dist/forge-payload/{workflows → .base-pack/workflows}/_fragments/context-injection.md +0 -0
  107. /package/dist/forge-payload/{workflows → .base-pack/workflows}/_fragments/event-emission-schema.md +0 -0
  108. /package/dist/forge-payload/{workflows → .base-pack/workflows}/_fragments/finalize.md +0 -0
  109. /package/dist/forge-payload/{workflows → .base-pack/workflows}/_fragments/progress-reporting.md +0 -0
  110. /package/dist/forge-payload/{workflows → .base-pack/workflows}/architect_approve.md +0 -0
  111. /package/dist/forge-payload/{workflows → .base-pack/workflows}/architect_review_sprint_completion.md +0 -0
  112. /package/dist/forge-payload/{workflows → .base-pack/workflows}/architect_sprint_intake.md +0 -0
  113. /package/dist/forge-payload/{workflows → .base-pack/workflows}/architect_sprint_plan.md +0 -0
  114. /package/dist/forge-payload/{workflows → .base-pack/workflows}/collator_agent.md +0 -0
  115. /package/dist/forge-payload/{workflows → .base-pack/workflows}/commit_task.md +0 -0
  116. /package/dist/forge-payload/{workflows → .base-pack/workflows}/fix_bug.md +0 -0
  117. /package/dist/forge-payload/{workflows → .base-pack/workflows}/implement_plan.md +0 -0
  118. /package/dist/forge-payload/{workflows → .base-pack/workflows}/migrate_structural.md +0 -0
  119. /package/dist/forge-payload/{workflows → .base-pack/workflows}/orchestrate_task.md +0 -0
  120. /package/dist/forge-payload/{workflows → .base-pack/workflows}/plan_task.md +0 -0
  121. /package/dist/forge-payload/{workflows → .base-pack/workflows}/quiz_agent.md +0 -0
  122. /package/dist/forge-payload/{workflows → .base-pack/workflows}/review_code.md +0 -0
  123. /package/dist/forge-payload/{workflows → .base-pack/workflows}/review_plan.md +0 -0
  124. /package/dist/forge-payload/{workflows → .base-pack/workflows}/run_sprint.md +0 -0
  125. /package/dist/forge-payload/{workflows → .base-pack/workflows}/sprint_retrospective.md +0 -0
  126. /package/dist/forge-payload/{workflows → .base-pack/workflows}/update_implementation.md +0 -0
  127. /package/dist/forge-payload/{workflows → .base-pack/workflows}/update_plan.md +0 -0
  128. /package/dist/forge-payload/{workflows → .base-pack/workflows}/validate_task.md +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forge-init.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/forge-init.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,0BAA0B;AAC1B,uEAAuE;AACvE,4EAA4E;AAC5E,kGAAkG;AAClG,qFAAqF;AACrF,EAAE;AACF,0DAA0D;AAC1D,EAAE;AACF,aAAa;AACb,iDAAiD;AACjD,4EAA4E;AAC5E,wEAAwE;AACxE,EAAE;AACF,wCAAwC;AACxC,sEAAsE;AACtE,kFAAkF;AAClF,+EAA+E;AAC/E,qEAAqE;AACrE,6EAA6E;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACN,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,8EAA8E;AAE9E,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,kDAAkD;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEhD,+DAA+D;AAC/D,MAAM,UAAU,qBAAqB;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;AACtD,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,mBAAmB;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACrC,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACd,iFAAiF,QAAQ,IAAI;YAC5F,6DAA6D,CAC9D,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW;IAC1B,mFAAmF;IACnF,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,IAAI,CAAC;AACb,CAAC;AAED,oEAAoE;AACpE,SAAS,sBAAsB;IAC9B,IAAI,CAAC;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;QACvF,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QACvD,OAAO,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,OAAO,CAAC;IAChB,CAAC;AACF,CAAC;AAED,8EAA8E;AAE9E,2EAA2E;AAC3E,IAAI,eAAe,GAAG,KAAK,CAAC;AAY5B,SAAS,cAAc,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEzC,kCAAkC;IAClC,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ;YAAE,SAAS;QAC/C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,UAAU,GAAG,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACP,YAAY,GAAG,IAAI,CAAC;YACrB,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO;QACN,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,UAAU;QACV,QAAQ,EAAE,OAAO,IAAI,OAAO;QAC5B,YAAY;KACZ,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E,KAAK,UAAU,OAAO,CAAC,QAAgB,EAAE,IAAc,EAAE,GAAW,EAAE,OAAO,GAAG,KAAK;IACpF,IAAI,CAAC;QACJ,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE;YAChD,GAAG;YACH,OAAO;YACP,QAAQ,EAAE,MAAM;SAChB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAA4C,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;IAChH,CAAC;AACF,CAAC;AAED,KAAK,UAAU,eAAe,CAC7B,QAAgB,EAChB,IAAc,EACd,GAAW,EACX,GAA4B,EAC5B,KAAa,EACb,OAAO,GAAG,KAAK;IAEf,IAAI,CAAC;QACJ,MAAM,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAA2B,CAAC;QACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI,QAAQ,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAC/E,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED,8EAA8E;AAE9E,SAAS,qBAAqB,CAAC,UAAkB,EAAE,WAAmB;IACrE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEtG,OAAO;;WAEG,WAAW;;;;;;;;;;EAUpB,UAAU;;;;;;;;0BAQc,WAAW;;;;;;;;;;;;+BAYN,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,0BAA0B,CAAC;oDAC5B,CAAC;AACrD,CAAC;AAED,SAAS,qBAAqB,CAAC,UAAkB,EAAE,MAAc,EAAE,WAAmB;IACrF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;IAC7F,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAElF,OAAO;;WAEG,WAAW;WACX,MAAM;YACL,iBAAiB;;;;;2BAKF,iBAAiB;;;;;EAK1C,QAAQ;;;;;;IAMN,MAAM;IACN,MAAM;IACN,MAAM,6BAA6B,CAAC;AACxC,CAAC;AAED,6EAA6E;AAE7E,SAAS,eAAe,CAAC,GAAW,EAAE,GAA4B;IACjE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACnC,sBAAsB;QACtB,OAAO;IACR,CAAC;IAED,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACJ,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO;IACR,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IACpG,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACtD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAI,cAAc,EAAE,CAAC;QACpB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,sDAAsD,EAAE,MAAM,CAAC,CAAC;QAC9E,OAAO;IACR,CAAC;IAED,MAAM,QAAQ,GACb,oGAAoG,CAAC;IACtG,IAAI,CAAC;QACJ,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gDAAgD,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACR,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,kDAAkD,EAAE,SAAS,CAAC,CAAC;IAC9E,CAAC;AACF,CAAC;AAED,8EAA8E;AAE9E,KAAK,UAAU,wBAAwB,CACtC,GAAW,EACX,MAAc,EACd,WAAmB,EACnB,GAA4B;IAE5B,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,2EAA2E;QAC3E,OAAO;IACR,CAAC;IAED,kDAAkD;IAClD,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAC9B,mBAAmB,EACnB,4HAA4H,CAC5H,CAAC;IAEF,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,yEAAyE,EAAE,MAAM,CAAC,CAAC;QACjG,OAAO;IACR,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG;QACf,KAAK,WAAW,EAAE;QAClB,EAAE;QACF,yBAAyB;QACzB,EAAE;QACF,sBAAsB;QACtB,sBAAsB;QACtB,oBAAoB,MAAM,8DAA8D;QACxF,oBAAoB,MAAM,6EAA6E;QACvG,uBAAuB,MAAM,iEAAiE;QAC9F,EAAE;QACF,oBAAoB;QACpB,EAAE;QACF,wBAAwB;QACxB,wBAAwB;QACxB,kEAAkE;QAClE,iEAAiE;QACjE,gFAAgF;QAChF,oDAAoD;QACpD,+DAA+D;QAC/D,sDAAsD;QACtD,kEAAkE;QAClE,uDAAuD;QACvD,mEAAmE;QACnE,+EAA+E;QAC/E,EAAE;QACF,KAAK;QACL,oEAAoE;QACpE,EAAE;KACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,IAAI,CAAC;QACJ,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oCAAoC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAA2B,CAAC;QACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,OAAO,IAAI,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC;IACrF,CAAC;AACF,CAAC;AAED,8EAA8E;AAE9E,MAAM,UAAU,iBAAiB,CAAC,EAAgB;IACjD,2EAA2E;IAC3E,oEAAoE;IACpE,EAAE;IACF,4EAA4E;IAC5E,iFAAiF;IACjF,gFAAgF;IAChF,+EAA+E;IAC/E,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAEvF,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE;QAChC,WAAW,EAAE,qEAAqE;QAClF,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,GAA4B;YACvD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;YACxC,MAAM,cAAc,GAAG,sBAAsB,EAAE,CAAC;YAEhD,oEAAoE;YACpE,2DAA2D;YAC3D,IAAI,WAAW,GAAG,aAAa,CAAC;YAEhC,sEAAsE;YACtE,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACpB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,4DAA4D,EAAE,OAAO,CAAC,CAAC;gBACrF,OAAO;YACR,CAAC;YAED,sEAAsE;YACtE,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;YAEvC,IAAI,cAAc,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACzC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,kEAAkE,EAAE,SAAS,CAAC,CAAC;gBAC7F,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,cAAc,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5C,qDAAqD;gBACrD,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,cAAc,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7C,MAAM,YAAY,GACjB,oDAAoD,SAAS,SAAS;oBACtE,qBAAqB,SAAS,GAAG,CAAC;gBAEnC,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;gBAC/E,IAAI,YAAY,EAAE,CAAC;oBAClB,UAAU,GAAG,SAAS,CAAC;oBACvB,mDAAmD;oBACnD,eAAe,GAAG,IAAI,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACP,kBAAkB,CAAC,GAAG,CAAC,CAAC;oBACxB,UAAU,GAAG,CAAC,CAAC;gBAChB,CAAC;YACF,CAAC;YAED,wEAAwE;YACxE,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC/B,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YAC/B,CAAC;YACD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBACxB,kFAAkF;gBAClF,UAAU,GAAG,CAAC,CAAC;YAChB,CAAC;YAED,oEAAoE;YACpE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACtB,eAAe,GAAG,IAAI,CAAC;gBACvB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACxD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAChC,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;wBACnD,GAAG;wBACH,OAAO,EAAE,IAAI;qBACb,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBACb,eAAe;oBAChB,CAAC,CAAC,CAAC;oBACH,MAAM,aAAa,CAClB,MAAM,EACN,CAAC,WAAW,EAAE,YAAY,EAAE,sCAAsC,cAAc,EAAE,CAAC,EACnF,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CACtB,CAAC,KAAK,CAAC,GAAG,EAAE;wBACZ,eAAe;oBAChB,CAAC,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YAED,oEAAoE;YACpE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC9C,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,iEAAiE,EAAE,MAAM,CAAC,CAAC;YACnG,CAAC;YAED,qEAAqE;YACrE,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBACrD,MAAM,aAAa,GAClB,mBAAmB,WAAW,MAAM;oBACpC,sEAAsE;oBACtE,iEAAiE;oBACjE,uDAAuD;oBACvD,+EAA+E;oBAC/E,iFAAiF;oBACjF,gFAAgF;oBAChF,kFAAkF;oBAClF,uCAAuC;oBACvC,qDAAqD,CAAC;gBAEvD,WAAW,CAAC,aAAa,CAAC,CAAC;gBAC3B,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;YACzB,CAAC;YAED,qEAAqE;YACrE,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACrB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;gBACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACxD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAChC,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE;wBACnF,GAAG;wBACH,OAAO,EAAE,IAAI;qBACb,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBACb,eAAe;oBAChB,CAAC,CAAC,CAAC;gBACJ,CAAC;gBAED,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,0CAA0C,EAAE,MAAM,CAAC,CAAC;gBAElE,iEAAiE;gBACjE,0DAA0D;gBAC1D,MAAM,YAAY,GAAG,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBACpE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1B,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;gBAExB,iCAAiC;gBACjC,MAAM,YAAY,GACjB,wEAAwE;oBACxE,kFAAkF;oBAClF,gCAAgC;oBAChC,8EAA8E;oBAC9E,2EAA2E,CAAC;gBAE7E,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1B,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;gBAExB,gDAAgD;gBAChD,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,gEAAgE;oBAC/D,mEAAmE,EACpE,MAAM,CACN,CAAC;gBAEF,4BAA4B;gBAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;gBACnE,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACrC,MAAM,eAAe,CACpB,gBAAgB,EAChB,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAChC,GAAG,EACH,GAAG,EACH,+BAA+B,CAC/B,CAAC;oBACF,sBAAsB;oBACtB,MAAM,eAAe,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;gBAClG,CAAC;gBAED,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC1B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAC9C,CAAC;YAED,qEAAqE;YACrE,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACrB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;gBACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACxD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAChC,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE;wBACrF,GAAG;wBACH,OAAO,EAAE,IAAI;qBACb,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBACb,eAAe;oBAChB,CAAC,CAAC,CAAC;gBACJ,CAAC;gBAED,2BAA2B;gBAC3B,IAAI,MAAM,GAAG,aAAa,CAAC;gBAC3B,IAAI,CAAC;oBACJ,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;oBACnF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAA4B,CAAC;oBAChE,MAAM,KAAK,GAAG,MAAM,CAAC,KAA4C,CAAC;oBAClE,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;wBACzE,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;oBAC5B,CAAC;gBACF,CAAC;gBAAC,MAAM,CAAC;oBACR,cAAc;gBACf,CAAC;gBAED,wBAAwB;gBACxB,MAAM,IAAI,GAAG;oBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;oBACtB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC;oBACtC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC;oBACzC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC;oBACjC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC;oBACjC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC;iBACjC,CAAC;gBACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACxB,IAAI,CAAC;wBACJ,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBACvC,gCAAgC;wBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;wBAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC9B,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;wBACxC,CAAC;oBACF,CAAC;oBAAC,MAAM,CAAC;wBACR,YAAY;oBACb,CAAC;gBACF,CAAC;gBAED,uCAAuC;gBACvC,MAAM,YAAY,GAAG,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;gBAC5E,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1B,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;gBAExB,iCAAiC;gBACjC,IAAI,cAAc,GAAG,MAAM,CAAC;gBAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACJ,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;oBACnF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAA4B,CAAC;oBAChE,MAAM,IAAI,GAAG,MAAM,CAAC,OAA8C,CAAC;oBACnE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;wBAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;oBAClE,MAAM,KAAK,GAAG,MAAM,CAAC,KAA4C,CAAC;oBAClE,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;wBAAE,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC;gBACxF,CAAC;gBAAC,MAAM,CAAC;oBACR,eAAe;gBAChB,CAAC;gBAED,oDAAoD;gBACpD,IAAI,gBAAgB,GAA4B,EAAE,CAAC;gBACnD,IAAI,CAAC;oBACJ,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC7E,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;gBAC/D,CAAC;gBAAC,MAAM,CAAC;oBACR,eAAe;gBAChB,CAAC;gBAED,MAAM,UAAU,GAAG,mBAAmB,CACrC;oBACC,WAAW,EAAI,gBAAgB,CAAC,OAAmC,EAAE,IAAe,IAAI,WAAW;oBACnG,MAAM;oBACN,MAAM,EAAE,cAAc;iBACtB,EACD,gBAGC,CACD,CAAC;gBAEF,IAAI,CAAC;oBACJ,sBAAsB,CAAC,UAAU,CAAC,CAAC;oBACnC,mBAAmB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;oBACrC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;gBAC1D,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACvB,MAAM,CAAC,GAAG,GAA2B,CAAC;oBACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,6CAA6C,CAAC,CAAC,OAAO,IAAI,SAAS,gBAAgB,EACnF,SAAS,CACT,CAAC;gBACH,CAAC;gBAED,uBAAuB;gBACvB,MAAM,QAAQ,GAAG,0BAA0B,CAAC,GAAG,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;gBACjF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;gBACnE,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACrC,MAAM,eAAe,CACpB,gBAAgB,EAChB,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EACxD,GAAG,EACH,GAAG,EACH,mCAAmC,CACnC,CAAC;gBACH,CAAC;gBAED,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC1B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAC9C,CAAC;YAED,qEAAqE;YACrE,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACrB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;gBAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACxD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAChC,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE;wBAC5F,GAAG;wBACH,OAAO,EAAE,IAAI;qBACb,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBACb,eAAe;oBAChB,CAAC,CAAC,CAAC;gBACJ,CAAC;gBAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;gBAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;gBAC3E,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;gBACnE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gBAExD,yCAAyC;gBACzC,IAAI,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBACzC,MAAM,eAAe,CACpB,oBAAoB,EACpB;wBACC,UAAU;wBACV,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC;wBACvC,YAAY;wBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC;wBACpC,aAAa;wBACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC;wBACrC,MAAM;wBACN,GAAG;wBACH,OAAO;wBACP,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC;wBAC3C,YAAY;wBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC;qBAC7C,EACD,GAAG,EACH,GAAG,EACH,oBAAoB,EACpB,KAAK,CACL,CAAC;gBACH,CAAC;gBAED,8DAA8D;gBAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBACjE,MAAM,eAAe,CACpB,cAAc,EACd;wBACC,cAAc;wBACd,UAAU;wBACV,aAAa;wBACb,WAAW;wBACX,UAAU;wBACV,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC;wBACvC,WAAW;wBACX,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC;wBAC7C,OAAO;wBACP,GAAG;qBACH,EACD,GAAG,EACH,GAAG,EACH,yBAAyB,EACzB,KAAK,CACL,CAAC;gBACH,CAAC;gBAED,wDAAwD;gBACxD,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACrC,MAAM,eAAe,CACpB,gBAAgB,EAChB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,EACjD,GAAG,EACH,GAAG,EACH,gCAAgC,EAChC,KAAK,CACL,CAAC;gBACH,CAAC;gBAED,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC1B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAC9C,CAAC;YAED,qEAAqE;YACrE,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACrB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;gBACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACxD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAChC,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;wBACpF,GAAG;wBACH,OAAO,EAAE,IAAI;qBACb,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBACb,eAAe;oBAChB,CAAC,CAAC,CAAC;gBACJ,CAAC;gBAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;gBACnE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;gBACvE,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;gBAC/E,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;gBAC5E,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;gBAC5E,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;gBAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;gBAE7D,iDAAiD;gBACjD,qEAAqE;gBACrE,uEAAuE;gBACvE,iEAAiE;gBACjE,oEAAoE;gBACpE,sDAAsD;gBACtD,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACrC,oEAAoE;oBACpE,mEAAmE;oBACnE,sEAAsE;oBACtE,uEAAuE;oBACvE,0DAA0D;oBAC1D,IAAI,gBAAwB,CAAC;oBAC7B,IAAI,WAAW,EAAE,EAAE,CAAC;wBACnB,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;wBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;wBACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC9B,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,mFAAmF,QAAQ,KAAK;gCAC/F,+EAA+E,EAChF,OAAO,CACP,CAAC;4BACF,OAAO;wBACR,CAAC;wBACD,gBAAgB,GAAG,SAAS,CAAC;oBAC9B,CAAC;yBAAM,CAAC;wBACP,iEAAiE;wBACjE,gBAAgB,GAAG,UAAU,CAAC;oBAC/B,CAAC;oBACD,MAAM,eAAe,CACpB,gBAAgB,EAChB,CAAC,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,EAC5C,GAAG,EACH,GAAG,EACH,0BAA0B,CAC1B,CAAC;gBACH,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACxD,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC/B,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBAClF,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;wBAC7B,IAAI,CAAC;4BACJ,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;wBACtE,CAAC;wBAAC,MAAM,CAAC;4BACR,YAAY;wBACb,CAAC;oBACF,CAAC;oBACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,WAAW,CAAC,MAAM,mCAAmC,EAAE,MAAM,CAAC,CAAC;gBAC1F,CAAC;gBAED,mCAAmC;gBACnC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;gBACjE,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,6BAA6B,CAAC,CAAC;gBAC/E,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC;wBACJ,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,6BAA6B,CAAC,CAAC,CAAC;oBAC3F,CAAC;oBAAC,MAAM,CAAC;wBACR,YAAY;oBACb,CAAC;gBACF,CAAC;gBAED,iCAAiC;gBACjC,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBACvC,MAAM,eAAe,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,0BAA0B,CAAC,CAAC;gBAC3F,CAAC;gBAED,2CAA2C;gBAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;oBAC3C,MAAM,eAAe,CACpB,sBAAsB,EACtB,CAAC,YAAY,CAAC,EACd,GAAG,EACH,GAAG,EACH,8BAA8B,EAC9B,KAAK,CACL,CAAC;gBACH,CAAC;gBAED,+BAA+B;gBAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBACzC,MAAM,eAAe,CACpB,oBAAoB,EACpB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,EACjE,GAAG,EACH,GAAG,EACH,6BAA6B,EAC7B,KAAK,CACL,CAAC;gBACH,CAAC;gBAED,+BAA+B;gBAC/B,IAAI,CAAC;oBACJ,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;oBACvD,MAAM,CAAC,GAAG,GAAG,CAAC,KAA4C,CAAC;oBAC3D,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;wBAAE,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;gBACzE,CAAC;gBAAC,MAAM,CAAC;oBACR,4BAA4B;gBAC7B,CAAC;gBAED,IAAI,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBACzC,MAAM,eAAe,CACpB,oBAAoB,EACpB;wBACC,YAAY;wBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,CAAC;wBAC3C,UAAU;wBACV,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC;wBACpD,YAAY;wBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,CAAC;qBACtD,EACD,GAAG,EACH,GAAG,EACH,6BAA6B,EAC7B,KAAK,CACL,CAAC;gBACH,CAAC;gBAED,6CAA6C;gBAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBACzC,MAAM,eAAe,CACpB,oBAAoB,EACpB;wBACC,UAAU;wBACV,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC;wBACvC,YAAY;wBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC;wBACpC,aAAa;wBACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC;wBACrC,MAAM;wBACN,GAAG;wBACH,OAAO;wBACP,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC;wBAC3C,YAAY;wBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC;qBAC7C,EACD,GAAG,EACH,GAAG,EACH,mCAAmC,EACnC,KAAK,CACL,CAAC;gBACH,CAAC;gBAED,uBAAuB;gBACvB,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAClC,MAAM,eAAe,CAAC,aAAa,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;gBAClF,CAAC;gBAED,wCAAwC;gBACxC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC;gBAC5E,IAAI,CAAC;oBACJ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;oBAC1E,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAyB,CAAC;oBAC7D,MAAM,KAAK,GAAG;wBACb,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACrC,gBAAgB,EAAE,MAAM,CAAC,OAAO,IAAI,cAAc;wBAClD,aAAa,EAAE,MAAM,CAAC,OAAO,IAAI,cAAc;wBAC/C,QAAQ,EAAE,IAAI;qBACd,CAAC;oBACF,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;oBACjF,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;gBACjE,CAAC;gBAAC,MAAM,CAAC;oBACR,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mDAAmD,EAAE,SAAS,CAAC,CAAC;gBAC/E,CAAC;gBAED,iEAAiE;gBACjE,IAAI,CAAC;oBACJ,MAAM,cAAc,GAAG,wBAAwB,EAAE,CAAC;oBAClD,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;oBAChD,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;wBAC1C,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBAC5B,CAAC;oBACD,IAAI,aAAa,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;wBACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,8DAA8D;4BAC7D,qCAAqC,EACtC,MAAM,CACN,CAAC;oBACH,CAAC;gBACF,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACvB,MAAM,CAAC,GAAG,GAA2B,CAAC;oBACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,0CAA0C,CAAC,CAAC,OAAO,IAAI,SAAS,KAAK;wBACpE,4DAA4D,EAC7D,SAAS,CACT,CAAC;gBACH,CAAC;gBAED,+BAA+B;gBAC/B,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAE1B,gFAAgF;gBAChF,iFAAiF;gBACjF,iFAAiF;gBACjF,oFAAoF;gBACpF,gFAAgF;gBAChF,iFAAiF;gBACjF,gDAAgD;gBAChD,IAAI,WAAW,EAAE,EAAE,CAAC;oBACnB,IAAI,cAAc,GAAG,OAAO,CAAC;oBAC7B,IAAI,CAAC;wBACJ,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;wBAChF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA4B,CAAC;wBAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,OAA8C,CAAC;wBAChE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;4BAC5D,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;wBAC5C,CAAC;oBACF,CAAC;oBAAC,MAAM,CAAC;wBACR,uBAAuB;oBACxB,CAAC;oBACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;oBAChF,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;wBACtC,IAAI,CAAC;4BACJ,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC/D,yCAAyC;4BACzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;4BACxD,IAAI,CAAC;gCACJ,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oCAC5C,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;oCACxB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oCAC9C,IAAI,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC;wCAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gCACzE,CAAC;4BACF,CAAC;4BAAC,MAAM,CAAC;gCACR,cAAc;4BACf,CAAC;wBACF,CAAC;wBAAC,OAAO,GAAY,EAAE,CAAC;4BACvB,MAAM,CAAC,GAAG,GAA2B,CAAC;4BACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,uCAAuC,cAAc,MAAM,CAAC,CAAC,OAAO,IAAI,SAAS,eAAe,EAChG,SAAS,CACT,CAAC;wBACH,CAAC;oBACF,CAAC;gBACF,CAAC;gBAED,4CAA4C;gBAC5C,MAAM,wBAAwB,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;gBAEnE,oCAAoC;gBACpC,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACxB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;YACjE,CAAC;YAED,qEAAqE;YACrE,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAC5D,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC3D,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;gBACxB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACP,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,oBAAoB,YAAY,CAAC,IAAI,CAAC,MAAM,wCAAwC,EACpF,SAAS,CACT,CAAC;gBACF,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;oBACrC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC3D,CAAC;YACF,CAAC;YAED,qEAAqE;YACrE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iCAAiC,CAAC,CAAC;YAC1F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACJ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9D,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;oBACxE,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,kDAAkD;wBACjD,yDAAyD,EAC1D,MAAM,CACN,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACR,YAAY;gBACb,CAAC;YACF,CAAC;YAED,qEAAqE;YACrE,mEAAmE;YACnE,sEAAsE;YACtE,mEAAmE;YACnE,+CAA+C;YAC/C,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;gBAChF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA4B,CAAC;gBAC1D,MAAM,CAAC,GAAG,GAAG,CAAC,KAA4C,CAAC;gBAC3D,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC7D,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;gBAC7B,CAAC;YACF,CAAC;YAAC,MAAM,CAAC;gBACR,wCAAwC;YACzC,CAAC;YAED,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,WAAW,CAAC;YAE5B,6DAA6D;YAC7D,4DAA4D;YAC5D,iFAAiF;YACjF,qEAAqE;YACrE,EAAE;YACF,wEAAwE;YACxE,yEAAyE;YACzE,wEAAwE;YACxE,mBAAmB;YACnB,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;YAC7E,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;YAE9E,IAAI,aAAa,GAAG,WAAW,YAAY,CAAC,OAAO,EAAE,CAAC;YACtD,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI;qBAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;qBACtE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACb,aAAa,IAAI,oBAAoB,QAAQ,EAAE,CAAC;YACjD,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,aAAa,IAAI,sEAAsE,CAAC;YACzF,CAAC;YACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,aAAa,IAAI,mBAAmB,YAAY,CAAC,MAAM,oEAAoE,CAAC;gBAC5H,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,kBAAkB,YAAY,CAAC,MAAM,kDAAkD,EACvF,OAAO,CACP,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG;gBACd,EAAE;gBACF,kEAAkE;gBAClE,kEAAkE;gBAClE,kEAAkE;gBAClE,EAAE;gBACF,YAAY,WAAW,EAAE;gBACzB,mBAAmB,cAAc,EAAE;gBACnC,EAAE;gBACF,mBAAmB,OAAO,GAAG;gBAC7B,4BAA4B;gBAC5B,0BAA0B;gBAC1B,8BAA8B;gBAC9B,8BAA8B;gBAC9B,EAAE;gBACF,aAAa;gBACb,EAAE;gBACF,aAAa;gBACb,0DAA0D;gBAC1D,wDAAwD;gBACxD,yEAAyE;gBACzE,EAAE;gBACF,mEAAmE;gBACnE,uCAAuC;gBACvC,EAAE;gBACF,+DAA+D;gBAC/D,GAAG,CAAC,WAAW,EAAE;oBAChB,CAAC,CAAC;wBACA,sHAAsH;wBACtH,EAAE;qBACF;oBACF,CAAC,CAAC,EAAE,CAAC;aACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,WAAW,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface HealthGap {
2
+ check: string;
3
+ severity: "warning" | "error";
4
+ message: string;
5
+ }
6
+ export interface HealthCheckResult {
7
+ clean: boolean;
8
+ gaps: HealthGap[];
9
+ configPresent: boolean;
10
+ summary: string;
11
+ }
12
+ /**
13
+ * Run a programmatic health check on a Forge project.
14
+ *
15
+ * @param cwd - project working directory (where .forge/ lives)
16
+ * @param bundleRoot - path to dist/forge-payload/ (contains .tools/)
17
+ */
18
+ export declare function runHealthCheck(cwd: string, bundleRoot: string): Promise<HealthCheckResult>;
@@ -0,0 +1,154 @@
1
+ // health-check.ts — shared runHealthCheck() function for /forge:health command
2
+ // and /forge:init post-Phase-4 health verification.
3
+ //
4
+ // Per PLAN.md sub-decision #9 (F4 fix): extracted from forge-commands.ts
5
+ // so both the /forge:health command handler AND the init handler call this
6
+ // function directly. sendUserMessage is NOT used here (skill §198 pitfall).
7
+ //
8
+ // Implements a programmatic subset of the checks listed in
9
+ // forge/forge/commands/health.md (config-completeness + KB freshness +
10
+ // store integrity). Full check output is returned as structured data;
11
+ // the caller formats it for display.
12
+ import { execFileSync } from "node:child_process";
13
+ import * as crypto from "node:crypto";
14
+ import * as fs from "node:fs";
15
+ import * as path from "node:path";
16
+ // ── Required config fields ─────────────────────────────────────────────────
17
+ const REQUIRED_TOP_LEVEL = ["version", "project", "stack", "commands", "paths"];
18
+ const REQUIRED_PROJECT = ["name", "prefix"];
19
+ const REQUIRED_COMMANDS = ["test"];
20
+ const REQUIRED_PATHS = ["engineering", "store", "workflows", "commands", "templates"];
21
+ // ── Main function ──────────────────────────────────────────────────────────
22
+ /**
23
+ * Run a programmatic health check on a Forge project.
24
+ *
25
+ * @param cwd - project working directory (where .forge/ lives)
26
+ * @param bundleRoot - path to dist/forge-payload/ (contains .tools/)
27
+ */
28
+ export async function runHealthCheck(cwd, bundleRoot) {
29
+ const gaps = [];
30
+ // 1. Config-completeness check
31
+ const configPath = path.join(cwd, ".forge", "config.json");
32
+ let config = null;
33
+ let configPresent = false;
34
+ try {
35
+ const raw = fs.readFileSync(configPath, "utf8");
36
+ config = JSON.parse(raw);
37
+ configPresent = true;
38
+ }
39
+ catch {
40
+ gaps.push({
41
+ check: "config-completeness",
42
+ severity: "error",
43
+ message: ".forge/config.json missing — run /forge:init first",
44
+ });
45
+ }
46
+ if (!configPresent) {
47
+ return {
48
+ clean: false,
49
+ gaps,
50
+ configPresent: false,
51
+ summary: "△ Config missing — run /forge:init first.",
52
+ };
53
+ }
54
+ // Validate required fields
55
+ const configRecord = config;
56
+ const missingFields = [];
57
+ for (const field of REQUIRED_TOP_LEVEL) {
58
+ if (!(field in configRecord) || configRecord[field] === "" || configRecord[field] === null) {
59
+ missingFields.push(field);
60
+ }
61
+ }
62
+ if ("project" in configRecord && configRecord.project && typeof configRecord.project === "object") {
63
+ const project = configRecord.project;
64
+ for (const field of REQUIRED_PROJECT) {
65
+ if (!(field in project) || project[field] === "" || project[field] === null) {
66
+ missingFields.push(`project.${field}`);
67
+ }
68
+ }
69
+ }
70
+ if ("commands" in configRecord && configRecord.commands && typeof configRecord.commands === "object") {
71
+ const commands = configRecord.commands;
72
+ for (const field of REQUIRED_COMMANDS) {
73
+ if (!(field in commands) || commands[field] === "" || commands[field] === null) {
74
+ missingFields.push(`commands.${field}`);
75
+ }
76
+ }
77
+ }
78
+ if ("paths" in configRecord && configRecord.paths && typeof configRecord.paths === "object") {
79
+ const paths_ = configRecord.paths;
80
+ for (const field of REQUIRED_PATHS) {
81
+ if (!(field in paths_) || paths_[field] === "" || paths_[field] === null) {
82
+ missingFields.push(`paths.${field}`);
83
+ }
84
+ }
85
+ }
86
+ if (missingFields.length > 0) {
87
+ gaps.push({
88
+ check: "config-completeness",
89
+ severity: "warning",
90
+ message: `Config incomplete — missing fields: ${missingFields.join(", ")}`,
91
+ });
92
+ }
93
+ // 2. KB freshness check
94
+ const calibrationBaseline = configRecord.calibrationBaseline;
95
+ if (!calibrationBaseline) {
96
+ gaps.push({
97
+ check: "kb-freshness",
98
+ severity: "warning",
99
+ message: "No calibration baseline found — run /forge:calibrate to establish one.",
100
+ });
101
+ }
102
+ else if (calibrationBaseline.masterIndexHash) {
103
+ const engPath = configRecord.paths?.engineering ?? "engineering";
104
+ const masterIndexPath = path.join(cwd, engPath, "MASTER_INDEX.md");
105
+ try {
106
+ const content = fs.readFileSync(masterIndexPath, "utf8");
107
+ const currentHash = crypto.createHash("sha256").update(content, "utf8").digest("hex");
108
+ if (currentHash !== calibrationBaseline.masterIndexHash) {
109
+ gaps.push({
110
+ check: "kb-freshness",
111
+ severity: "warning",
112
+ message: "KB freshness: MASTER_INDEX.md hash has changed since last calibration — consider /forge:calibrate.",
113
+ });
114
+ }
115
+ }
116
+ catch {
117
+ gaps.push({
118
+ check: "kb-freshness",
119
+ severity: "warning",
120
+ message: "MASTER_INDEX.md not found — KB docs may not have been written yet.",
121
+ });
122
+ }
123
+ }
124
+ // 3. Store integrity check
125
+ const validateStoreTool = path.join(bundleRoot, ".tools", "validate-store.cjs");
126
+ if (fs.existsSync(validateStoreTool)) {
127
+ try {
128
+ execFileSync("node", [validateStoreTool, "--dry-run"], {
129
+ cwd,
130
+ encoding: "utf8",
131
+ timeout: 10000,
132
+ stdio: ["ignore", "pipe", "pipe"],
133
+ });
134
+ }
135
+ catch (err) {
136
+ const e = err;
137
+ const detail = e.stderr || e.stdout || "unknown error";
138
+ gaps.push({
139
+ check: "store-integrity",
140
+ severity: "warning",
141
+ message: `Store integrity check failed: ${detail.trim().slice(0, 200)}`,
142
+ });
143
+ }
144
+ }
145
+ const clean = gaps.length === 0;
146
+ const summary = clean ? "〇 /forge:health: clean." : `△ /forge:health: ${gaps.length} gap(s) detected.`;
147
+ return {
148
+ clean,
149
+ gaps,
150
+ configPresent: true,
151
+ summary,
152
+ };
153
+ }
154
+ //# sourceMappingURL=health-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/health-check.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,12 @@
10
10
  //
11
11
  // Spike R1/R2 env-gated blocks are preserved for backward-compat — no-op in
12
12
  // production when env flags are absent.
13
- import { readFileSync } from "node:fs";
13
+ import { existsSync, readFileSync } from "node:fs";
14
14
  import * as path from "node:path";
15
15
  import { fileURLToPath } from "node:url";
16
16
  import { readProjectMeta } from "./banner.js";
17
- import { registerForgeCommands } from "./forge-commands.js";
17
+ import { registerAllForgeCommands, registerForgeCommands } from "./forge-commands.js";
18
+ import { registerForgeInit } from "./forge-init.js";
18
19
  import { discoverForgeConfig } from "./forge-root.js";
19
20
  import { registerForgeTools } from "./forge-tools.js";
20
21
  import { checkBundledForgeDrift, registerForgeUpdateCommand } from "./forge-update-command.js";
@@ -63,13 +64,11 @@ export default async function forgecli(pi) {
63
64
  const forgeConfig = discoverForgeConfig();
64
65
  const forgeRoot = forgeConfig?.forgeRoot ?? null;
65
66
  // ── Unconditional /forge:init (AC#4) ─────────────────────────────────────
66
- // Stub full implementation lands in FORGE-S16-T04.
67
- pi.registerCommand("forge:init", {
68
- description: "Bootstrap a new Forge SDLC project at the current working directory",
69
- async handler(_args, ctx) {
70
- ctx.ui.notify("forge:init — coming in FORGE-S16-T04", "info");
71
- },
72
- });
67
+ // Full 4-phase implementation FORGE-S17-T02.
68
+ // Banner suppression: outside-Forge banner below only fires when
69
+ // .forge/config.json is absent. Once /forge:init writes config.json,
70
+ // the banner is suppressed automatically (no extra guard needed here).
71
+ registerForgeInit(pi);
73
72
  // ── Session start — banners + collision detection ─────────────────────────
74
73
  pi.on("session_start", async (_event, ctx) => {
75
74
  if (!ctx.hasUI)
@@ -152,6 +151,20 @@ export default async function forgecli(pi) {
152
151
  // Registered unconditionally so /forge:ask works outside a Forge project.
153
152
  // Per-command handlers enforce the Q14 outside-project no-op contract.
154
153
  registerForgeCommands(pi, { forgeRoot, promptsRoot: PROMPTS_ROOT });
154
+ // ── Phase G: all bundled commands (FORGE-S17-T02) ─────────────────────────
155
+ // Enumerate every *.md under dist/forge-payload/.base-pack/commands/ and
156
+ // register each as a pi command. Real handlers (init/health/ask/config/
157
+ // status/refresh-kb-links) were registered above; stubs for the rest.
158
+ // Banner-suppression guard: outside-Forge banner is gated on forgeRoot
159
+ // being null — once /forge:init writes .forge/config.json, forgeRoot is
160
+ // non-null and the outside-Forge banner no longer fires (F3 AC#8).
161
+ const payloadRoot = path.join(PKG_ROOT, "dist", "forge-payload");
162
+ const configExists = existsSync(path.join(process.cwd(), ".forge", "config.json"));
163
+ registerAllForgeCommands(pi, {
164
+ bundlePayloadRoot: payloadRoot,
165
+ cwd: process.cwd(),
166
+ bundleRoot: configExists ? payloadRoot : undefined,
167
+ });
155
168
  // ── /forge:update guided upgrade (FORGE-S16-T15) ─────────────────────────
156
169
  // Registered unconditionally — useful even outside a Forge project (the
157
170
  // command upgrades the globally-installed forgecli, not the project).
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/index.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,aAAa;AACb,8EAA8E;AAC9E,oCAAoC;AACpC,sEAAsE;AACtE,gFAAgF;AAChF,uFAAuF;AACvF,mFAAmF;AACnF,EAAE;AACF,4EAA4E;AAC5E,wCAAwC;AAExC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrG,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAC/E,mDAAmD;AACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9F,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEpD,2EAA2E;AAC3E,uEAAuE;AACvE,SAAS,eAAe;IACvB,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgE,CAAC;QAC3F,OAAO;YACN,UAAU,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC9D,mBAAmB,EAAE,OAAO,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;SAClG,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC;AACF,CAAC;AAED,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;AAEvC,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,QAAQ,CAAC,EAAgB;IACtD,6EAA6E;IAC7E,wEAAwE;IACxE,+CAA+C;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,GAAG,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,qBAAqB,CAAC;QAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG,EAAE,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,YAAY,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAEtC,CAAC;QACF,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG,EAAE,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC9D,CAAC;IACF,CAAC;IAED,6EAA6E;IAC7E,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,WAAW,EAAE,SAAS,IAAI,IAAI,CAAC;IAEjD,4EAA4E;IAC5E,+CAA+C;IAC/C,iEAAiE;IACjE,qEAAqE;IACrE,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAEtB,6EAA6E;IAC7E,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC5C,IAAI,CAAC,GAAG,CAAC,KAAK;YAAE,OAAO,CAAC,6BAA6B;QACrD,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAEhB,wCAAwC;QACxC,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;QAC3C,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YACxG,iBAAiB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC1C,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,+DAA+D,SAAS,CAAC,YAAY,IAAI;gBACxF,0CAA0C,EAC3C,SAAS,CACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,sCAAsC;YACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,yDAAyD,EAAE,MAAM,CAAC,CAAC;YACjF,OAAO;QACR,CAAC;QAED,2DAA2D;QAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1E,IAAI,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,GAAG,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,oEAAoE;QACpE,2EAA2E;QAC3E,IAAI,YAAY,CAAC,UAAU,IAAI,YAAY,CAAC,mBAAmB,EAAE,CAAC;YACjE,KAAK,kBAAkB,CAAC;gBACvB,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;gBACjD,iBAAiB,EAAE,YAAY,CAAC,UAAU;gBAC1C,0BAA0B,EAAE,YAAY,CAAC,mBAAmB;aAC5D,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACb,4CAA4C;YAC7C,CAAC,CAAC,CAAC;QACJ,CAAC;QAED,wEAAwE;QACxE,sDAAsD;QACtD,IAAI,YAAY,CAAC,mBAAmB,EAAE,CAAC;YACtC,IAAI,CAAC;gBACJ,MAAM,sBAAsB,CAAC;oBAC5B,0BAA0B,EAAE,YAAY,CAAC,mBAAmB;oBAC5D,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;iBACjD,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,EAAE,CAAC;oBAClD,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;gBAC/C,CAAC;YACF,CAAC;QACF,CAAC;QAED,kFAAkF;QAClF,uEAAuE;QACvE,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACJ,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;gBAChC,MAAM,iBAAiB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACnD,MAAM,UAAU,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;gBACtD,IAAI,UAAU;oBAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,GAAG,EAAE,CAAC;oBACpD,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;gBAClD,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,IAAI,SAAS,EAAE,CAAC;QACf,2CAA2C;QAC3C,0EAA0E;QAC1E,gFAAgF;QAChF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAY,CAAC,UAAU,CAAC,CAAC,CAAC;QACxE,kBAAkB,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC/C,0CAA0C;QAC1C,0DAA0D;IAC3D,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;IAEpE,6EAA6E;IAC7E,yEAAyE;IACzE,wEAAwE;IACxE,sEAAsE;IACtE,uEAAuE;IACvE,wEAAwE;IACxE,mEAAmE;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IACnF,wBAAwB,CAAC,EAAE,EAAE;QAC5B,iBAAiB,EAAE,WAAW;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;KAClD,CAAC,CAAC;IAEH,4EAA4E;IAC5E,wEAAwE;IACxE,sEAAsE;IACtE,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;QAC7B,0BAA0B,CAAC,EAAE,EAAE;YAC9B,OAAO,EAAE,QAAQ;YACjB,iBAAiB,EAAE,YAAY,CAAC,UAAU;SAC1C,CAAC,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,GAAG,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,qCAAqC,CAAC;QACxD,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAEnC,CAAC;QACF,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;AACF,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Discover project name from package.json:name, falling back to cwd basename.
3
+ *
4
+ * Tries to read <cwd>/package.json and parse the `name` field. If the file is
5
+ * absent, malformed, or missing the name field, returns `path.basename(cwd)`.
6
+ */
7
+ export declare function discoverProjectName(cwd: string): string;
8
+ export interface ProjectContextProject {
9
+ name: string;
10
+ prefix: string;
11
+ description?: string;
12
+ stack?: string[];
13
+ commands?: {
14
+ test?: string;
15
+ build?: string;
16
+ deploy?: string;
17
+ };
18
+ }
19
+ export interface ProjectContextArchitecture {
20
+ frameworks?: {
21
+ backend?: string;
22
+ frontend?: string;
23
+ database?: string;
24
+ };
25
+ dataAccess?: string;
26
+ deployment?: string;
27
+ entrypoints?: string[];
28
+ }
29
+ export interface ProjectContextWorkflow {
30
+ testCommand?: string;
31
+ lintCommand?: string;
32
+ buildCommand?: string;
33
+ }
34
+ export interface ProjectContextKnowledgeBase {
35
+ path?: string;
36
+ indexFile?: string;
37
+ }
38
+ export interface ProjectContext {
39
+ project: ProjectContextProject;
40
+ architecture?: ProjectContextArchitecture;
41
+ workflow?: ProjectContextWorkflow;
42
+ knowledgeBase?: ProjectContextKnowledgeBase;
43
+ }
44
+ /** Minimal discovery results passed from Phase 2 */
45
+ export interface DiscoveryResults {
46
+ projectName?: string;
47
+ prefix?: string;
48
+ description?: string;
49
+ stack?: string[];
50
+ testCommand?: string;
51
+ lintCommand?: string;
52
+ buildCommand?: string;
53
+ backendFramework?: string;
54
+ frontendFramework?: string;
55
+ database?: string;
56
+ deployment?: string;
57
+ dataAccess?: string;
58
+ kbPath?: string;
59
+ }
60
+ export interface ForgeConfig {
61
+ project?: {
62
+ name?: string;
63
+ prefix?: string;
64
+ };
65
+ paths?: {
66
+ engineering?: string;
67
+ forgeRoot?: string;
68
+ };
69
+ }
70
+ /**
71
+ * Build a ProjectContext from discovery results and forge config.
72
+ *
73
+ * Merges discoveryResults with config data. Config project.name/prefix take
74
+ * precedence over discovery if both are present (config was set interactively).
75
+ */
76
+ export declare function buildProjectContext(discoveryResults: DiscoveryResults, config: ForgeConfig): ProjectContext;
77
+ /**
78
+ * Validate a ProjectContext object structurally. Throws with a descriptive
79
+ * error if required fields are missing.
80
+ */
81
+ export declare function validateProjectContext(ctx: unknown): asserts ctx is ProjectContext;
82
+ /**
83
+ * Write project-context.json to <cwd>/.forge/project-context.json
84
+ */
85
+ export declare function writeProjectContext(cwd: string, ctx: ProjectContext): void;
86
+ export interface CalibrationBaseline {
87
+ lastCalibrated: string;
88
+ version: string;
89
+ masterIndexHash: string | null;
90
+ sprintsCovered: number;
91
+ }
92
+ /**
93
+ * Compute a calibration baseline snapshot for /forge:init Phase 2.
94
+ *
95
+ * @param cwd - project working directory
96
+ * @param kbPath - relative path to the knowledge base directory (e.g. "engineering")
97
+ * @param bundledPluginVersion - version string from package.json forge.bundledVersion
98
+ */
99
+ export declare function computeCalibrationBaseline(cwd: string, kbPath: string, bundledPluginVersion: string): CalibrationBaseline;
@@ -0,0 +1,163 @@
1
+ // init-context.ts — project-name discovery, project-context.json construction,
2
+ // and calibration baseline computation for /forge:init.
3
+ //
4
+ // Per INIT_PARITY_SPEC.md §9 and PLAN.md Phase C.
5
+ // Iron Law 6: no shell-string interpolation.
6
+ import * as crypto from "node:crypto";
7
+ import * as fs from "node:fs";
8
+ import * as path from "node:path";
9
+ // ── Project name discovery ─────────────────────────────────────────────────
10
+ /**
11
+ * Discover project name from package.json:name, falling back to cwd basename.
12
+ *
13
+ * Tries to read <cwd>/package.json and parse the `name` field. If the file is
14
+ * absent, malformed, or missing the name field, returns `path.basename(cwd)`.
15
+ */
16
+ export function discoverProjectName(cwd) {
17
+ const pkgPath = path.join(cwd, "package.json");
18
+ try {
19
+ const raw = fs.readFileSync(pkgPath, "utf8");
20
+ const pkg = JSON.parse(raw);
21
+ if (pkg &&
22
+ typeof pkg === "object" &&
23
+ "name" in pkg &&
24
+ typeof pkg.name === "string") {
25
+ const name = pkg.name;
26
+ if (name.trim())
27
+ return name.trim();
28
+ }
29
+ }
30
+ catch {
31
+ // ENOENT or JSON parse error — fall through to basename
32
+ }
33
+ return path.basename(cwd);
34
+ }
35
+ /**
36
+ * Build a ProjectContext from discovery results and forge config.
37
+ *
38
+ * Merges discoveryResults with config data. Config project.name/prefix take
39
+ * precedence over discovery if both are present (config was set interactively).
40
+ */
41
+ export function buildProjectContext(discoveryResults, config) {
42
+ const name = config.project?.name ?? discoveryResults.projectName ?? "";
43
+ const prefix = config.project?.prefix ?? discoveryResults.prefix ?? "";
44
+ const ctx = {
45
+ project: {
46
+ name,
47
+ prefix,
48
+ },
49
+ };
50
+ if (discoveryResults.description) {
51
+ ctx.project.description = discoveryResults.description;
52
+ }
53
+ if (discoveryResults.stack && discoveryResults.stack.length > 0) {
54
+ ctx.project.stack = discoveryResults.stack;
55
+ }
56
+ const testCmd = discoveryResults.testCommand ?? "";
57
+ const buildCmd = discoveryResults.buildCommand ?? "";
58
+ const lintCmd = discoveryResults.lintCommand ?? "";
59
+ if (testCmd || buildCmd) {
60
+ ctx.project.commands = {
61
+ ...(testCmd ? { test: testCmd } : {}),
62
+ ...(buildCmd ? { build: buildCmd } : {}),
63
+ };
64
+ }
65
+ const hasArch = discoveryResults.backendFramework ??
66
+ discoveryResults.frontendFramework ??
67
+ discoveryResults.database ??
68
+ discoveryResults.deployment ??
69
+ discoveryResults.dataAccess;
70
+ if (hasArch) {
71
+ ctx.architecture = {};
72
+ const frameworks = {};
73
+ if (discoveryResults.backendFramework)
74
+ frameworks.backend = discoveryResults.backendFramework;
75
+ if (discoveryResults.frontendFramework)
76
+ frameworks.frontend = discoveryResults.frontendFramework;
77
+ if (discoveryResults.database)
78
+ frameworks.database = discoveryResults.database;
79
+ if (Object.keys(frameworks).length > 0)
80
+ ctx.architecture.frameworks = frameworks;
81
+ if (discoveryResults.dataAccess)
82
+ ctx.architecture.dataAccess = discoveryResults.dataAccess;
83
+ if (discoveryResults.deployment)
84
+ ctx.architecture.deployment = discoveryResults.deployment;
85
+ }
86
+ const hasWorkflow = testCmd || lintCmd || buildCmd;
87
+ if (hasWorkflow) {
88
+ ctx.workflow = {
89
+ ...(testCmd ? { testCommand: testCmd } : {}),
90
+ ...(lintCmd ? { lintCommand: lintCmd } : {}),
91
+ ...(buildCmd ? { buildCommand: buildCmd } : {}),
92
+ };
93
+ }
94
+ const kbPath = discoveryResults.kbPath ?? config.paths?.engineering ?? "engineering";
95
+ ctx.knowledgeBase = {
96
+ path: kbPath,
97
+ indexFile: `${kbPath}/MASTER_INDEX.md`,
98
+ };
99
+ return ctx;
100
+ }
101
+ /**
102
+ * Validate a ProjectContext object structurally. Throws with a descriptive
103
+ * error if required fields are missing.
104
+ */
105
+ export function validateProjectContext(ctx) {
106
+ if (!ctx || typeof ctx !== "object") {
107
+ throw new Error("project-context validation failed: not an object");
108
+ }
109
+ const record = ctx;
110
+ if (!record.project || typeof record.project !== "object") {
111
+ throw new Error("project-context validation failed: missing required field 'project'");
112
+ }
113
+ const project = record.project;
114
+ if (typeof project.name !== "string" || !project.name.trim()) {
115
+ throw new Error("project-context validation failed: project.name is missing or empty");
116
+ }
117
+ if (typeof project.prefix !== "string" || !project.prefix.trim()) {
118
+ throw new Error("project-context validation failed: project.prefix is missing or empty");
119
+ }
120
+ }
121
+ /**
122
+ * Write project-context.json to <cwd>/.forge/project-context.json
123
+ */
124
+ export function writeProjectContext(cwd, ctx) {
125
+ const filePath = path.join(cwd, ".forge", "project-context.json");
126
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
127
+ fs.writeFileSync(filePath, JSON.stringify(ctx, null, 2) + "\n", "utf8");
128
+ }
129
+ /**
130
+ * Compute a calibration baseline snapshot for /forge:init Phase 2.
131
+ *
132
+ * @param cwd - project working directory
133
+ * @param kbPath - relative path to the knowledge base directory (e.g. "engineering")
134
+ * @param bundledPluginVersion - version string from package.json forge.bundledVersion
135
+ */
136
+ export function computeCalibrationBaseline(cwd, kbPath, bundledPluginVersion) {
137
+ const baseline = {
138
+ lastCalibrated: new Date().toISOString(),
139
+ version: bundledPluginVersion,
140
+ masterIndexHash: null,
141
+ sprintsCovered: 0,
142
+ };
143
+ // Compute SHA-256 of MASTER_INDEX.md if it exists
144
+ const masterIndexPath = path.join(cwd, kbPath, "MASTER_INDEX.md");
145
+ try {
146
+ const content = fs.readFileSync(masterIndexPath, "utf8");
147
+ baseline.masterIndexHash = crypto.createHash("sha256").update(content, "utf8").digest("hex");
148
+ }
149
+ catch {
150
+ // File not yet present — leave as null (init just started Phase 2)
151
+ }
152
+ // Count sprint directories
153
+ const sprintsDir = path.join(cwd, kbPath, "sprints");
154
+ try {
155
+ const entries = fs.readdirSync(sprintsDir, { withFileTypes: true });
156
+ baseline.sprintsCovered = entries.filter((e) => e.isDirectory()).length;
157
+ }
158
+ catch {
159
+ // Sprints dir not yet created — leave as 0
160
+ }
161
+ return baseline;
162
+ }
163
+ //# sourceMappingURL=init-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-context.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/init-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /** Canonical progress record written to .forge/init-progress.json */
2
+ export interface InitProgress {
3
+ lastPhase: 1 | 2 | 3 | 4;
4
+ timestamp: string;
5
+ }
6
+ export type ReadProgressResult = {
7
+ kind: "none";
8
+ } | {
9
+ kind: "stale";
10
+ reason: string;
11
+ } | {
12
+ kind: "malformed";
13
+ } | {
14
+ kind: "valid";
15
+ progress: InitProgress;
16
+ };
17
+ /**
18
+ * Read the init-progress checkpoint file.
19
+ *
20
+ * Returns:
21
+ * - `{ kind: "none" }` — file does not exist
22
+ * - `{ kind: "malformed" }` — file exists but JSON parse failed
23
+ * - `{ kind: "stale", reason }` — file is a legacy 12-phase checkpoint
24
+ * - `{ kind: "valid", progress }` — clean 4-phase checkpoint
25
+ */
26
+ export declare function readInitProgress(cwd: string): ReadProgressResult;
27
+ /**
28
+ * Write a progress checkpoint. Called at the end of each completed phase.
29
+ *
30
+ * @param cwd - project working directory
31
+ * @param lastPhase - completed phase number (1, 2, or 3; 4 is written then deleted)
32
+ * @param timestamp - ISO 8601 timestamp; defaults to now
33
+ */
34
+ export declare function writeInitProgress(cwd: string, lastPhase: 1 | 2 | 3 | 4, timestamp?: string): void;
35
+ /**
36
+ * Delete the init-progress checkpoint. Called at the end of Phase 4
37
+ * to signal successful completion.
38
+ */
39
+ export declare function deleteInitProgress(cwd: string): void;