@numa-tech/numa 1.12.8 → 1.12.11

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 (75) hide show
  1. package/README.md +140 -16
  2. package/dist/ai-registry/commands.js +33 -33
  3. package/dist/ai-registry/commands.js.map +1 -1
  4. package/dist/app-config.d.ts +0 -1
  5. package/dist/app-config.js +4 -2
  6. package/dist/app-config.js.map +1 -1
  7. package/dist/application-candidates/client.d.ts +167 -0
  8. package/dist/application-candidates/client.js +103 -0
  9. package/dist/application-candidates/client.js.map +1 -0
  10. package/dist/application-candidates/commands.d.ts +13 -0
  11. package/dist/application-candidates/commands.js +225 -0
  12. package/dist/application-candidates/commands.js.map +1 -0
  13. package/dist/application-candidates/schemas.d.ts +171 -0
  14. package/dist/application-candidates/schemas.js +80 -0
  15. package/dist/application-candidates/schemas.js.map +1 -0
  16. package/dist/application-onboarding/client.d.ts +256 -0
  17. package/dist/application-onboarding/client.js +213 -0
  18. package/dist/application-onboarding/client.js.map +1 -0
  19. package/dist/application-onboarding/commands.d.ts +64 -0
  20. package/dist/application-onboarding/commands.js +694 -0
  21. package/dist/application-onboarding/commands.js.map +1 -0
  22. package/dist/application-onboarding/errors.d.ts +11 -0
  23. package/dist/application-onboarding/errors.js +51 -0
  24. package/dist/application-onboarding/errors.js.map +1 -0
  25. package/dist/application-onboarding/schemas.d.ts +1167 -0
  26. package/dist/application-onboarding/schemas.js +459 -0
  27. package/dist/application-onboarding/schemas.js.map +1 -0
  28. package/dist/application-onboarding/scm-credentials.d.ts +8 -0
  29. package/dist/application-onboarding/scm-credentials.js +98 -0
  30. package/dist/application-onboarding/scm-credentials.js.map +1 -0
  31. package/dist/application-onboarding/tui-model.d.ts +131 -0
  32. package/dist/application-onboarding/tui-model.js +554 -0
  33. package/dist/application-onboarding/tui-model.js.map +1 -0
  34. package/dist/application-onboarding/tui.d.ts +14 -0
  35. package/dist/application-onboarding/tui.js +554 -0
  36. package/dist/application-onboarding/tui.js.map +1 -0
  37. package/dist/authorization/access-request-client.d.ts +45 -0
  38. package/dist/authorization/access-request-client.js +93 -0
  39. package/dist/authorization/access-request-client.js.map +1 -0
  40. package/dist/authorization/access-request-commands.d.ts +25 -0
  41. package/dist/authorization/access-request-commands.js +196 -0
  42. package/dist/authorization/access-request-commands.js.map +1 -0
  43. package/dist/authorization/access-request-schemas.d.ts +123 -0
  44. package/dist/authorization/access-request-schemas.js +67 -0
  45. package/dist/authorization/access-request-schemas.js.map +1 -0
  46. package/dist/authorization/client.d.ts +50 -0
  47. package/dist/authorization/client.js +113 -0
  48. package/dist/authorization/client.js.map +1 -0
  49. package/dist/authorization/commands.d.ts +40 -0
  50. package/dist/authorization/commands.js +296 -0
  51. package/dist/authorization/commands.js.map +1 -0
  52. package/dist/authorization/errors.d.ts +13 -0
  53. package/dist/authorization/errors.js +70 -0
  54. package/dist/authorization/errors.js.map +1 -0
  55. package/dist/authorization/schemas.d.ts +187 -0
  56. package/dist/authorization/schemas.js +101 -0
  57. package/dist/authorization/schemas.js.map +1 -0
  58. package/dist/cli.js +44 -8
  59. package/dist/cli.js.map +1 -1
  60. package/dist/command-catalog.js +270 -26
  61. package/dist/command-catalog.js.map +1 -1
  62. package/dist/web-console-page.d.ts +1 -1
  63. package/dist/web-console-page.js +1 -1
  64. package/dist/web-console.js +6 -5
  65. package/dist/web-console.js.map +1 -1
  66. package/examples/ai-registry/README.md +18 -0
  67. package/examples/ai-registry/nacos-instance.username-password.example.json +25 -0
  68. package/package.json +4 -4
  69. package/skills/numa-ai-registry/SKILL.md +5 -5
  70. package/skills/numa-ai-registry/evals/evals.json +1 -1
  71. package/skills/numa-ai-registry/references/command-contract.md +22 -22
  72. package/skills/numa-cli/SKILL.md +44 -0
  73. package/skills/numa-cli/agents/openai.yaml +4 -0
  74. package/skills/numa-cli/evals/evals.json +35 -0
  75. package/skills/numa-cli/references/pipeline-release.md +107 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui-model.js","sourceRoot":"","sources":["../../src/application-onboarding/tui-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mCAAmC,EAAE,MAAM,cAAc,CAAC;AAUnE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM;IACN,mBAAmB;IACnB,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,UAAU;IACV,QAAQ;IACR,WAAW;CACH,CAAC;AA2EX,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,IAAI;QACJ,WAAW,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1D,UAAU,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;QACrC,UAAU,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE;QACtD,QAAQ,EAAE;YACR,eAAe,EAAE,IAAI;YACrB,KAAK,EAAE,CAAC,SAAS,CAAC;YAClB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;QAC1B,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;QACb,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC;QAC9B,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,CAAC;QAChB,OAAO,EAAE;YACP,WAAW,EAAE,EAAE;YACf,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,EAAE;YAChB,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,eAAe,EAAE,EAAE;YACnB,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE,EAAE;SACX;QACD,IAAI,EAAE,KAAK;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAyB,EACzB,MAA2B;IAE3B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,kBAAkB,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,cAAc,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;YAClF,MAAM,KAAK,GAAqB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACpF,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC/F,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YAClD,OAAO;gBACL,GAAG,KAAK;gBACR,KAAK,EAAE,aAAa;gBACpB,KAAK;gBACL,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;gBACtD,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;gBACpD,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,SAAS;aACjB,CAAC;QACJ,CAAC;QACD,KAAK,WAAW,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACpG,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC3F,CAAC;QACD,KAAK,gBAAgB,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvD,OAAO;gBACL,GAAG,KAAK;gBACR,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;gBAC7D,UAAU,EAAE,CAAC;gBACb,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC;gBACvC,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,EAAE;gBACd,IAAI,EAAE,KAAK;gBACX,YAAY,EAAE,SAAS;gBACvB,KAAK,EAAE,SAAS;aACjB,CAAC;QACJ,CAAC;QACD,KAAK,UAAU;YACb,OAAO;gBACL,GAAG,KAAK;gBACR,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC9D,UAAU,EAAE,CAAC;gBACb,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,EAAE;aACf,CAAC;QACJ,KAAK,YAAY;YACf,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClH,KAAK,YAAY;YACf,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACjF,KAAK,aAAa;YAChB,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;QACjE,KAAK,WAAW;YACd,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QACtD,KAAK,iBAAiB;YACpB,OAAO,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnF,KAAK,WAAW;YACd,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,eAAe,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACnF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,IAAI,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa;oBAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;YAClG,OAAO;gBACL,GAAG,KAAK;gBACR,MAAM;gBACN,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;aAC3G,CAAC;QACJ,CAAC;QACD,KAAK,gBAAgB;YACnB,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACzF,KAAK,kBAAkB;YACrB,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAClF,KAAK,mBAAmB;YACtB,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACpF,KAAK,MAAM;YACT,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACnG,KAAK,SAAS;YACZ,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,KAAK,iBAAiB;YACpB,OAAO,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACpD,KAAK,QAAQ;YACX,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC3E,KAAK,OAAO;YACV,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACtG,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB,EAAE,KAA8B;IAC7E,OAAO;QACL,GAAG,KAAK;QACR,KAAK;QACL,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,SAAS;QACzB,YAAY,EAAE,SAAS;QACvB,KAAK,EAAE,SAAS;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,OAAsB,EAAE,MAA8B;IAC1E,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW;QACtD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;QACvC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS;QAChD,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY;QACzD,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK;QACpC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;QAC1C,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe;QAClE,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY;QACzD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;QACvC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB;QACrE,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,KAAK,SAAS;YAC7D,CAAC,CAAC,MAAM,CAAC,oBAAoB;YAC7B,CAAC,CAAC,OAAO,CAAC,oBAAoB;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAA0B;IACzD,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrG,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC;IACvE,OAAO;QACL,GAAG,IAAI;QACP,GAAG,QAAQ;QACX,aAAa,EAAE,OAAO,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;QACjF,UAAU,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC9E,UAAU,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC9E,QAAQ,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;KACzE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAyB;IACtD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;IAC1E,IAAI,IAAI,KAAK,mBAAmB;QAAE,OAAO;YACvC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE;YACnH,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACrF,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE;YACvE,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,EAAE;YACrI,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE;SAC7F,CAAC;IACF,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO;YAC/B,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC7H,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACnI,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;YAC5I,EAAE,IAAI,EAAE,kCAAkC,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACjJ,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE;SAC7E,CAAC;IACF,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC9B,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;SAC7F,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,MAAM,GAAkB,CAAC;gBAC7B,IAAI,EAAE,2BAA2B;gBACjC,KAAK,EAAE,gBAAgB;gBACvB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,cAAc,CAAC,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;aAC/F,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,KAAK,YAAY,CAAC;QAClG,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,GAAG,MAAM;gBACjD,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACjG,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACnF,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE;aAC5E,CAAC;QACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,CAAC;SACtE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,MAAM;YACf;gBACE,IAAI,EAAE,uBAAuB;gBAC7B,KAAK,EAAE,iCAAiC;gBACxC,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,cAAc,CAAC,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;aAC3F;YACD,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;YACzI,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE;SAC5E,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5I,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACxD,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,SAAS,CAAC;eACzD,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAC3E,CAAC;QACF,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvI,OAAO;YACL;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,2BAA2B;gBAClC,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC;aACjD;YACD,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,EAAE;YACzH,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;oBACpB,IAAI,EAAE,yBAAyB;oBAC/B,KAAK,EAAE,iBAAiB;oBACxB,IAAI,EAAE,QAAiB;oBACvB,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;iBAC3F,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACR,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,MAAM,EAAE;SACnF,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO;YAC9B,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;YAChF,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE;YACjE,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE;YAC9E,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;SAC7E,CAAC;IACF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAA6B,EAAE,IAAY;IACrE,IAAI,OAAO,GAAY,IAAI,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QACxF,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAA6B,EAAE,IAAY;IAClE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAkB,EAAE,KAA8B;IAClF,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7F,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAkB,EAAE,KAAa;IAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,eAAe,CAAC,GAAG,KAAK,CAAC,KAAK,8BAA8B,EAAE,0BAA0B,CAAC,CAAC;QACtG,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAC9D,MAAM,IAAI,eAAe,CAAC,GAAG,KAAK,CAAC,KAAK,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,0BAA0B,CAAC,CAAC;QACxJ,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,eAAe,CAAC,GAAG,KAAK,CAAC,KAAK,yBAAyB,EAAE,0BAA0B,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,eAAe,CAAC,wDAAwD,EAAE,0BAA0B,CAAC,CAAC;QAClH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,eAAe,CAAC,GAAG,KAAK,CAAC,KAAK,+BAA+B,EAAE,0BAA0B,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,OAAO,IAAI,SAAS,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAA8B;IACtE,MAAM,MAAM,GAAG,mCAAmC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,eAAe,CACvB,4CAA4C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,eAAe,GAAG,EACxG,+BAA+B,CAChC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAyB,EACzB,KAAkB,EAClB,SAAiB;IAEjB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC;IACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC;QAChC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACxC,CAAC,CAAC,CAAC,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAE,CAAC,KAAK,CAAC;IAC3C,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAA8B,EAC9B,YAA4C,EAC5C,UAAkB;IAElB,IAAI,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,uBAAuB,EAAE,UAAU,IAAI,SAAS,CAAC,CAAC;IACnF,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC;IAChG,IAAI,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC;IAC/B,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,yBAAyB,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,CAAC;IACrG,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;IACrF,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;IACjE,OAAO,YAAY,CAAC,MAAM,EAAE,0BAA0B,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAA8B,EAC9B,QAA6C;IAE7C,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,YAAY,CAAC,KAAK,EAAE,uBAAuB,EAAE,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAA8B,EAC9B,SAAyC;IAEzC,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,CAAC;IAC5E,IAAI,CAAC,QAAQ;QAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC3H,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;IACzE,OAAO,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,uBAAuB,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAyB,EAAE,eAAuB;IACzF,IAAI,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;IAC1E,MAAM,WAAW,GAAG,CAAC,IAAY,EAAQ,EAAE;QACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC;IAC/E,CAAC,CAAC;IACF,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAChC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAChC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,oBAAoB,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IACzH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,sBAAsB,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAC7H,WAAW,CAAC,2BAA2B,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,KAAK,YAAY,CAAC;IAClG,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACjC,WAAW,CAAC,sBAAsB,CAAC,CAAC;QACpC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,uBAAuB,CAAC,CAAC;QACrC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IACD,WAAW,CAAC,sBAAsB,CAAC,CAAC;IACpC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,WAAW,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC,CAAC;QAC9H,IAAI,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA+B,EAAE,KAA8B,EAAE,IAAY;IACzG,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClI,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,eAAe,CAAC,CAAC;IAC1F,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC/E,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI;YAAE,SAAS;QACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,QAAQ,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,oBAAoB,CAAC,CAAC;QACzG,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC;eACpF,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,cAAc,QAAQ,GAAG,CAAC,CAAC;QACjH,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,qBAAqB,CAAC,CAAC;QAC5G,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,oBAAoB,CAAC,CAAC;QACpG,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,qBAAqB,CAAC,CAAC;QAChJ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACnH,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,mBAAmB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACvE,IAAI,CAAC;gBAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,uCAAuC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,mCAAmC,CAAC,CAAC;YAAC,CAAC;QAC5M,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAA+B;IACzD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAyB;IACvD,OAAO,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC;AAClE,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA0B;IACrD,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,WAAiC,CAAC,CAAC;IAClF,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7B,OAAO,CAAC,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7G,CAAC,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAC7B,CAAC,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,YAAY,CAAC,IAA6B,EAAE,IAAY,EAAE,KAAc;IAC/E,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,OAAO,GAAG,OAAO,CAAC,IAAI,CAA4B,CAAC;IACrD,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;;QACzC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,KAA8B;IACjD,OAAO,UAAU,CAAC,KAAK,CAA4B,CAAC;AACtD,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAgC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1H,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5F,CAAC;AAED,SAAS,OAAO,CAAC,MAAgB;IAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,cAAc,CAAC,OAAwB,EAAE,OAAe;IAC/D,OAAO,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;QAC/D,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,gBAAgB,EAAE,EAAE,GAAG,OAAO,CAAC;QACrE,CAAC,CAAC,OAAO,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,IAA6B;IAC/C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7H,CAAC;AAED,SAAS,aAAa,CAAC,IAA6B;IAClD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,aAAa,CAAC,KAAqC;IAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC;gBACN,KAAK;gBACL,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;aACvG,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA6B,EAAE,IAAY;IACpE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,OAAe,EAAE,OAAe;IAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAA8B;IAC7D,OAAO,KAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,OAAO,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAChG,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { OnboardingApi } from "./client.js";
2
+ import type { OnboardingMode, OnboardingSession } from "./schemas.js";
3
+ import { type OnboardingTuiState, type WizardCatalog } from "./tui-model.js";
4
+ export { ONBOARDING_STEPS, applyTemplateDefaults, applyRepositorySelection, assertCredentialFreeDraft, fieldsForState, initialOnboardingTuiState, reduceOnboardingTuiState, safeTerminalWidth, validateTemplateParameters, validateWizardBeforeStep } from "./tui-model.js";
5
+ export type { OnboardingTuiAction, OnboardingTuiState } from "./tui-model.js";
6
+ export declare function saveWizardStep(client: OnboardingApi, state: OnboardingTuiState, stepIndex: number): Promise<{
7
+ session: OnboardingSession;
8
+ reloadedAfterConflict: boolean;
9
+ }>;
10
+ export declare function loadTuiRepositories(client: Pick<OnboardingApi, "listRepositories">, connectionCode: string, search?: string, cursor?: string): Promise<Pick<WizardCatalog, "repositories" | "repositoryStatus" | "repositoryNextCursor">>;
11
+ export declare function runOnboardingTui(client: OnboardingApi, options?: {
12
+ sessionNo?: string;
13
+ mode?: OnboardingMode;
14
+ }): Promise<void>;
@@ -0,0 +1,554 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { randomUUID } from "node:crypto";
3
+ import { useEffect, useMemo, useState } from "react";
4
+ import { Box, Text, render, useApp, useInput } from "ink";
5
+ import { OnboardingError, sanitizeOnboardingOutput } from "./errors.js";
6
+ import { ONBOARDING_STEPS, applyRepositorySelection, applyTemplateDefaults, assertCredentialFreeDraft, currentStepCode, cycleFieldValue, displayFieldValue, draftAsJsonValue, fieldsForState, initialOnboardingTuiState, parseFieldInput, reduceOnboardingTuiState, safeTerminalWidth, stringAt, validateTemplateParameters, validateWizardBeforeStep, valueAtPath } from "./tui-model.js";
7
+ export { ONBOARDING_STEPS, applyTemplateDefaults, applyRepositorySelection, assertCredentialFreeDraft, fieldsForState, initialOnboardingTuiState, reduceOnboardingTuiState, safeTerminalWidth, validateTemplateParameters, validateWizardBeforeStep } from "./tui-model.js";
8
+ export async function saveWizardStep(client, state, stepIndex) {
9
+ const session = state.session;
10
+ if (!session)
11
+ throw new OnboardingError("Create or load a session first.", "onboarding_session_required");
12
+ assertCredentialFreeDraft(state.draft);
13
+ const validationErrors = stepIndex >= state.stepIndex
14
+ ? validateWizardBeforeStep(state, stepIndex)
15
+ : [];
16
+ if (validationErrors.length) {
17
+ throw new OnboardingError(validationErrors.join(" "), "onboarding_draft_invalid");
18
+ }
19
+ try {
20
+ return {
21
+ session: await client.updateSession(session.sessionNo, {
22
+ revision: session.revision,
23
+ currentStep: ONBOARDING_STEPS[stepIndex],
24
+ draft: draftAsJsonValue(state.draft)
25
+ }),
26
+ reloadedAfterConflict: false
27
+ };
28
+ }
29
+ catch (error) {
30
+ if (!isRevisionConflict(error))
31
+ throw error;
32
+ return { session: await client.getSession(session.sessionNo), reloadedAfterConflict: true };
33
+ }
34
+ }
35
+ export async function loadTuiRepositories(client, connectionCode, search, cursor) {
36
+ try {
37
+ const response = await client.listRepositories(connectionCode, { search, cursor, limit: 50 });
38
+ return {
39
+ repositories: response.items,
40
+ repositoryNextCursor: response.hasMore ? response.nextCursor : null,
41
+ repositoryStatus: response.items.length
42
+ ? `Loaded ${response.items.length} repositories${response.hasMore ? "; another page is available with n" : ""}. Use ←/→ on externalId or press e to enter one manually.`
43
+ : "Provider returned no repositories; externalId and expectedHead may still be entered manually."
44
+ };
45
+ }
46
+ catch (error) {
47
+ if (error instanceof OnboardingError && error.status === 501) {
48
+ return {
49
+ repositories: [],
50
+ repositoryNextCursor: null,
51
+ repositoryStatus: `${error.code}: repository browsing is not installed; enter stable externalId and expectedHead manually.`
52
+ };
53
+ }
54
+ throw error;
55
+ }
56
+ }
57
+ export async function runOnboardingTui(client, options = {}) {
58
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
59
+ throw new OnboardingError("Application onboarding TUI requires an interactive terminal.", "onboarding_tui_required");
60
+ }
61
+ const instance = render(_jsx(OnboardingWorkbench, { client: client, sessionNo: options.sessionNo, mode: options.mode }));
62
+ await instance.waitUntilExit();
63
+ }
64
+ function OnboardingWorkbench(props) {
65
+ const { exit } = useApp();
66
+ const [state, setState] = useState(initialOnboardingTuiState);
67
+ const dispatch = (action) => setState((current) => reduceOnboardingTuiState(current, action));
68
+ const fields = useMemo(() => fieldsForState(state), [state]);
69
+ const selectedField = fields[Math.min(state.fieldIndex, Math.max(0, fields.length - 1))];
70
+ useEffect(() => {
71
+ let active = true;
72
+ void loadBootstrap(props.client, props.sessionNo)
73
+ .then((loaded) => {
74
+ if (!active)
75
+ return;
76
+ dispatch({
77
+ type: "BOOTSTRAP_LOADED",
78
+ capabilities: loaded.capabilities,
79
+ catalog: loaded.catalog,
80
+ preferredMode: props.mode
81
+ });
82
+ if (loaded.session)
83
+ dispatch({ type: "SESSION_LOADED", session: loaded.session });
84
+ if (loaded.events.length)
85
+ dispatch({ type: "EVENTS_LOADED", events: loaded.events });
86
+ })
87
+ .catch((error) => {
88
+ if (active)
89
+ dispatch({ type: "ERROR", value: errorMessage(error) });
90
+ });
91
+ return () => { active = false; };
92
+ }, [props.client, props.sessionNo, props.mode]);
93
+ useEffect(() => {
94
+ const session = state.session;
95
+ if (!session || currentStepCode(state) !== "EXECUTION" || !isActiveState(session.state))
96
+ return;
97
+ let active = true;
98
+ const timer = setInterval(() => {
99
+ void refreshSession(props.client, state)
100
+ .then(({ session: next, events }) => {
101
+ if (!active)
102
+ return;
103
+ dispatch({ type: "SESSION_LOADED", session: next });
104
+ dispatch({ type: "EVENTS_LOADED", events });
105
+ })
106
+ .catch((error) => {
107
+ if (active)
108
+ dispatch({ type: "ERROR", value: errorMessage(error) });
109
+ });
110
+ }, 2_000);
111
+ return () => { active = false; clearInterval(timer); };
112
+ }, [props.client, state.session?.sessionNo, state.session?.state, state.stepIndex, state.afterSequence]);
113
+ const execute = (operation, notice) => {
114
+ dispatch({ type: "BUSY", value: true, notice });
115
+ void operation().catch((error) => dispatch({ type: "ERROR", value: errorMessage(error) }));
116
+ };
117
+ const saveAtStep = async (stepIndex) => {
118
+ const result = await saveWizardStep(props.client, state, stepIndex);
119
+ dispatch({ type: "SESSION_LOADED", session: result.session });
120
+ if (result.reloadedAfterConflict) {
121
+ throw new OnboardingError("Draft revision conflicted with another client. The latest server draft was reloaded; review and re-enter local changes.", "onboarding_revision_reloaded", 409);
122
+ }
123
+ return result.session;
124
+ };
125
+ const navigate = (direction) => {
126
+ const target = Math.min(ONBOARDING_STEPS.length - 1, Math.max(0, state.stepIndex + direction));
127
+ if (target === state.stepIndex)
128
+ return;
129
+ if (!state.session || !draftMutable(state.session.state)) {
130
+ dispatch({ type: "SET_STEP", index: target });
131
+ return;
132
+ }
133
+ execute(async () => {
134
+ await saveAtStep(target);
135
+ dispatch({ type: "NOTICE", value: `Saved revision and moved to ${ONBOARDING_STEPS[target]}.` });
136
+ }, `Saving ${ONBOARDING_STEPS[target]}…`);
137
+ };
138
+ const commitEditor = () => {
139
+ if (!selectedField)
140
+ return;
141
+ try {
142
+ const value = parseFieldInput(selectedField, state.editBuffer);
143
+ let nextDraft = setViaReducerPreview(state, selectedField.path, value);
144
+ if (selectedField.path === "technology.parameters" && state.session?.mode === "NEW") {
145
+ const errors = validateTemplateParameters(nextDraft, state.catalog.templates);
146
+ if (errors.length)
147
+ throw new OnboardingError(errors.join(" "), "onboarding_template_parameters_invalid");
148
+ }
149
+ assertCredentialFreeDraft(nextDraft);
150
+ dispatch({ type: "SET_DRAFT", draft: nextDraft });
151
+ dispatch({ type: "NOTICE", value: `${selectedField.label} updated locally; save or change step to persist.` });
152
+ }
153
+ catch (error) {
154
+ dispatch({ type: "ERROR", value: errorMessage(error) });
155
+ }
156
+ };
157
+ const chooseField = (direction) => {
158
+ if (!selectedField)
159
+ return;
160
+ let draft = cycleFieldValue(state, selectedField, direction);
161
+ if (selectedField.path === "technology.templateCode") {
162
+ const selected = state.catalog.templates.find((item) => stringValue(item.code) === stringAt(draft, selectedField.path));
163
+ draft = applyTemplateDefaults(draft, selected);
164
+ }
165
+ if (selectedField.path === "technology.stackCode" || selectedField.path === "technology.repoMode") {
166
+ draft = setViaReducerPreview({ ...state, draft }, "technology.templateCode", undefined);
167
+ draft = setViaReducerPreview({ ...state, draft }, "technology.parameters", {});
168
+ }
169
+ if (selectedField.path === "repository.connectionCode") {
170
+ draft = setViaReducerPreview({ ...state, draft }, "repository.externalId", undefined);
171
+ dispatch({
172
+ type: "CATALOG_LOADED",
173
+ catalog: {
174
+ repositories: [],
175
+ repositoryNextCursor: null,
176
+ repositoryStatus: "Connection changed; press f to query repositories or enter externalId manually."
177
+ }
178
+ });
179
+ }
180
+ if (selectedField.path === "repository.externalId") {
181
+ const externalId = stringAt(draft, "repository.externalId");
182
+ draft = applyRepositorySelection(draft, state.catalog.repositories, externalId);
183
+ }
184
+ assertCredentialFreeDraft(draft);
185
+ dispatch({ type: "SET_DRAFT", draft });
186
+ };
187
+ const fetchRepositories = (nextPage = false) => {
188
+ const connectionCode = stringAt(state.draft, "repository.connectionCode");
189
+ if (!connectionCode) {
190
+ dispatch({ type: "ERROR", value: "Select an SCM connection first." });
191
+ return;
192
+ }
193
+ const cursor = nextPage ? state.catalog.repositoryNextCursor ?? undefined : undefined;
194
+ if (nextPage && !cursor) {
195
+ dispatch({ type: "NOTICE", value: "There is no additional repository page to load." });
196
+ return;
197
+ }
198
+ execute(async () => {
199
+ const result = await loadTuiRepositories(props.client, connectionCode, stringAt(state.draft, "repository.name") || undefined, cursor);
200
+ const repositories = nextPage
201
+ ? deduplicateRepositories([...state.catalog.repositories, ...result.repositories])
202
+ : result.repositories;
203
+ dispatch({ type: "CATALOG_LOADED", catalog: { ...result, repositories } });
204
+ if (result.repositoryStatus?.includes("not installed")) {
205
+ dispatch({ type: "NOTICE", value: "Repository provider browsing is unavailable; manual externalId and expectedHead remain enabled." });
206
+ }
207
+ }, "Loading repositories…");
208
+ };
209
+ const runPreflight = () => {
210
+ execute(async () => {
211
+ const saved = await saveAtStep(ONBOARDING_STEPS.indexOf("REVIEW"));
212
+ const result = await props.client.preflight(saved.sessionNo);
213
+ dispatch({ type: "PREFLIGHT_LOADED", preflight: result });
214
+ const latest = await props.client.getSession(saved.sessionNo);
215
+ dispatch({ type: "SESSION_LOADED", session: latest });
216
+ dispatch({ type: "PREFLIGHT_LOADED", preflight: result });
217
+ dispatch({
218
+ type: "NOTICE",
219
+ value: result.blockingErrors.length
220
+ ? `Preflight found ${result.blockingErrors.length} blocking issue(s).`
221
+ : `Preflight locked plan ${result.planHash ?? "without a hash"}.`
222
+ });
223
+ }, "Saving and running server preflight…");
224
+ };
225
+ const requestApply = () => {
226
+ const planHash = state.preflight?.planHash ?? state.session?.planHash;
227
+ if (!planHash || !state.preflight) {
228
+ dispatch({ type: "ERROR", value: "Run preflight and review its plan hash first." });
229
+ return;
230
+ }
231
+ if (state.preflight.blockingErrors.length) {
232
+ dispatch({ type: "ERROR", value: "Resolve all blocking preflight issues before apply." });
233
+ return;
234
+ }
235
+ const key = state.idempotencyKey ?? randomUUID();
236
+ dispatch({ type: "IDEMPOTENCY_KEY", value: key });
237
+ dispatch({ type: "CONFIRM", value: "APPLY" });
238
+ };
239
+ const confirmApply = () => {
240
+ const session = state.session;
241
+ const planHash = state.preflight?.planHash ?? session?.planHash;
242
+ const key = state.idempotencyKey;
243
+ if (!session || !planHash || !key)
244
+ return;
245
+ execute(async () => {
246
+ await props.client.apply(session.sessionNo, { planHash, idempotencyKey: key });
247
+ const refreshed = await refreshSession(props.client, { ...state, afterSequence: 0 });
248
+ dispatch({ type: "SESSION_LOADED", session: refreshed.session });
249
+ dispatch({ type: "EVENTS_LOADED", events: refreshed.events });
250
+ dispatch({ type: "SET_STEP", index: ONBOARDING_STEPS.indexOf("EXECUTION") });
251
+ dispatch({ type: "NOTICE", value: `Apply accepted. Reuse idempotency key ${key} if the response becomes uncertain.` });
252
+ }, "Submitting the locked plan…");
253
+ };
254
+ const executionAction = (action) => {
255
+ const session = state.session;
256
+ if (!session)
257
+ return;
258
+ execute(async () => {
259
+ if (action === "assessment") {
260
+ const assessment = await props.client.getAssessment(session.sessionNo);
261
+ dispatch({ type: "ASSESSMENT_LOADED", assessment });
262
+ dispatch({ type: "NOTICE", value: "Standardization assessment loaded." });
263
+ return;
264
+ }
265
+ if (action !== "refresh") {
266
+ await props.client[action](session.sessionNo);
267
+ }
268
+ const refreshed = await refreshSession(props.client, state);
269
+ dispatch({ type: "SESSION_LOADED", session: refreshed.session });
270
+ dispatch({ type: "EVENTS_LOADED", events: refreshed.events });
271
+ dispatch({ type: "NOTICE", value: `${action} completed using server state.` });
272
+ }, `${action}…`);
273
+ };
274
+ useInput((input, key) => {
275
+ if (state.editing) {
276
+ if (key.return)
277
+ commitEditor();
278
+ else if (key.escape)
279
+ dispatch({ type: "STOP_EDIT" });
280
+ else if (key.backspace || key.delete)
281
+ dispatch({ type: "EDIT_BUFFER", value: state.editBuffer.slice(0, -1) });
282
+ else if (!key.ctrl && !key.meta && input && !/[\u0000-\u001f\u007f]/u.test(input)) {
283
+ dispatch({ type: "EDIT_BUFFER", value: `${state.editBuffer}${input}` });
284
+ }
285
+ return;
286
+ }
287
+ if (state.confirmation) {
288
+ if (input.toLowerCase() === "n" || key.escape)
289
+ dispatch({ type: "CONFIRM" });
290
+ else if (input.toLowerCase() === "y") {
291
+ if (state.confirmation === "APPLY")
292
+ confirmApply();
293
+ else if (state.session)
294
+ execute(async () => {
295
+ await props.client.cancel(state.session.sessionNo);
296
+ const refreshed = await refreshSession(props.client, state);
297
+ dispatch({ type: "SESSION_LOADED", session: refreshed.session });
298
+ dispatch({ type: "EVENTS_LOADED", events: refreshed.events });
299
+ dispatch({ type: "SET_STEP", index: ONBOARDING_STEPS.indexOf("EXECUTION") });
300
+ dispatch({ type: "NOTICE", value: "Server accepted cancellation; completed resources were not rolled back." });
301
+ }, "Cancelling…");
302
+ }
303
+ return;
304
+ }
305
+ if (input === "q") {
306
+ exit();
307
+ return;
308
+ }
309
+ if (state.busy || state.phase === "LOADING")
310
+ return;
311
+ if (state.phase === "SELECT_MODE") {
312
+ if (key.upArrow || key.leftArrow)
313
+ dispatch({ type: "MODE_MOVE", direction: -1 });
314
+ else if (key.downArrow || key.rightArrow)
315
+ dispatch({ type: "MODE_MOVE", direction: 1 });
316
+ else if (key.return)
317
+ execute(async () => {
318
+ const session = await props.client.createSession(state.modes[state.modeIndex]);
319
+ dispatch({ type: "SESSION_LOADED", session });
320
+ dispatch({ type: "NOTICE", value: `Draft ${session.sessionNo} created; use ] to progress through all nine steps.` });
321
+ }, "Creating resumable server draft…");
322
+ return;
323
+ }
324
+ if (state.phase !== "SESSION" || !state.session)
325
+ return;
326
+ const step = currentStepCode(state);
327
+ if (input === "[")
328
+ navigate(-1);
329
+ else if (input === "]")
330
+ navigate(1);
331
+ else if (key.upArrow)
332
+ dispatch({ type: "MOVE_FIELD", direction: -1, maximum: fields.length });
333
+ else if (key.downArrow)
334
+ dispatch({ type: "MOVE_FIELD", direction: 1, maximum: fields.length });
335
+ else if ((key.leftArrow || key.rightArrow) && selectedField
336
+ && (["select", "boolean", "choiceOrText"].includes(selectedField.kind) || Boolean(selectedField.choices?.length))) {
337
+ chooseField(key.leftArrow ? -1 : 1);
338
+ }
339
+ else if ((key.return || input === "e") && selectedField) {
340
+ if (selectedField.kind === "boolean")
341
+ chooseField(1);
342
+ else if (selectedField.kind === "select" && input !== "e")
343
+ chooseField(1);
344
+ else
345
+ dispatch({ type: "START_EDIT", value: rawEditorValue(selectedField, state.draft) });
346
+ }
347
+ else if (input === "s" && draftMutable(state.session.state)) {
348
+ execute(async () => {
349
+ await saveAtStep(state.stepIndex);
350
+ dispatch({ type: "NOTICE", value: `Draft saved at ${step}.` });
351
+ }, "Saving draft…");
352
+ }
353
+ else if (input === "f" && step === "SOURCE_CONTROL")
354
+ fetchRepositories(false);
355
+ else if (input === "n" && step === "SOURCE_CONTROL")
356
+ fetchRepositories(true);
357
+ else if (input === "g" && step === "STANDARDIZATION")
358
+ executionAction("assessment");
359
+ else if (input === "p" && step === "REVIEW")
360
+ runPreflight();
361
+ else if (input === "a" && step === "REVIEW")
362
+ requestApply();
363
+ else if (step === "EXECUTION" && input === "r")
364
+ executionAction("refresh");
365
+ else if (step === "EXECUTION" && input === "u")
366
+ executionAction("resume");
367
+ else if (step === "EXECUTION" && input === "t")
368
+ executionAction("retry");
369
+ else if (step === "EXECUTION" && input === "e")
370
+ executionAction("reassess");
371
+ else if (step === "EXECUTION" && input === "x" && !["COMPLETED", "CANCELLED"].includes(state.session.state)) {
372
+ dispatch({ type: "CONFIRM", value: "CANCEL" });
373
+ }
374
+ });
375
+ return _jsx(WizardView, { state: state, fields: fields });
376
+ }
377
+ function WizardView(props) {
378
+ const { state, fields } = props;
379
+ const width = safeTerminalWidth(process.stdout.columns);
380
+ const compact = width < 72;
381
+ const step = ONBOARDING_STEPS[state.stepIndex] ?? "MODE";
382
+ return _jsxs(Box, { width: width, minHeight: Math.max(14, (process.stdout.rows || 26) - 1), flexDirection: "column", borderStyle: "round", borderColor: "cyan", children: [_jsxs(Box, { paddingX: 1, justifyContent: "space-between", children: [_jsx(Text, { bold: true, color: "cyan", children: "NUMA / APP ONBOARDING" }), !compact ? _jsx(Text, { children: "server-authoritative \u00B7 revision-safe" }) : null] }), _jsx(Box, { paddingX: 1, borderStyle: "single", borderLeft: false, borderRight: false, flexDirection: "column", children: state.phase === "SESSION" && state.session ? _jsxs(_Fragment, { children: [_jsxs(Text, { children: [state.session.sessionNo, " \u00B7 ", _jsx(Text, { color: "cyan", children: state.session.mode }), " \u00B7 ", _jsx(Text, { color: sessionColor(state.session.state), children: state.session.state }), " \u00B7 rev ", state.session.revision] }), _jsx(Text, { wrap: "truncate-end", children: ONBOARDING_STEPS.map((item, index) => index === state.stepIndex ? `[${index + 1}:${shortStep(item)}]` : `${index + 1}:${shortStep(item)}`).join(" ") })] }) : _jsx(Text, { children: "Select mode to create a resumable server session." }) }), _jsxs(Box, { paddingX: 1, paddingY: compact ? 0 : 1, flexDirection: "column", flexGrow: 1, children: [state.phase === "LOADING" ? _jsx(Text, { color: "yellow", children: "Loading capabilities and approved catalogs\u2026" }) : null, state.phase === "SELECT_MODE" ? _jsx(ModeView, { state: state }) : null, state.phase === "SESSION" && state.session ? _jsx(StepView, { state: state, fields: fields, compact: compact }) : null, state.phase === "ERROR" ? _jsx(Text, { color: "red", children: state.error ?? "Unable to start onboarding." }) : null] }), _jsxs(Box, { paddingX: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: footerHelp(state, fields) }), state.editing ? _jsxs(Text, { color: "cyan", children: ["\u203A ", state.editBuffer, _jsx(Text, { inverse: true, children: " " })] }) : null, state.busy ? _jsx(Text, { color: "yellow", children: state.notice ?? "Working…" }) : null, !state.busy && state.notice ? _jsx(Text, { color: "green", wrap: "truncate-end", children: state.notice }) : null, state.error ? _jsx(Text, { color: "red", wrap: "wrap", children: state.error }) : null, state.confirmation === "APPLY" ? _jsxs(Text, { bold: true, color: "yellow", wrap: "wrap", children: ["Apply locked plan ", state.preflight?.planHash, " with idempotency key ", state.idempotencyKey, "? y / n"] }) : null, state.confirmation === "CANCEL" ? _jsx(Text, { bold: true, color: "yellow", children: "Cancel pending work without rolling back completed resources? y / n" }) : null] })] });
383
+ }
384
+ function ModeView({ state }) {
385
+ return _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "1 / 9 \u00B7 MODE" }), state.modes.map((mode, index) => _jsxs(Text, { color: index === state.modeIndex ? "cyan" : undefined, children: [index === state.modeIndex ? "›" : " ", " ", mode, " \u00B7 ", mode === "NEW" ? "template bootstrap or monorepo module" : "existing repository standardization"] }, mode)), _jsx(Text, { dimColor: true, children: "\u2191\u2193 select \u00B7 Enter create session" })] });
386
+ }
387
+ function StepView(props) {
388
+ const { state, fields, compact } = props;
389
+ const step = currentStepCode(state);
390
+ return _jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { bold: true, children: [state.stepIndex + 1, " / 9 \u00B7 ", step] }), step === "MODE" ? _jsxs(Text, { children: ["Mode is immutable after session creation: ", state.session?.mode] }) : null, fields.length ? _jsx(Box, { marginTop: compact ? 0 : 1, flexDirection: "column", children: fields.map((field, index) => _jsxs(Text, { color: index === state.fieldIndex ? "cyan" : undefined, wrap: "truncate-end", children: [index === state.fieldIndex ? "›" : " ", " ", field.label, field.required ? " *" : "", ": ", displayFieldValue(field, state.draft)] }, field.path)) }) : null, step === "SOURCE_CONTROL" ? _jsx(SourceStatus, { state: state }) : null, step === "TECHNOLOGY" ? _jsx(TechnologyStatus, { state: state }) : null, step === "STANDARDIZATION" ? _jsx(StandardizationStatus, { state: state }) : null, step === "REVIEW" ? _jsx(ReviewStatus, { state: state, compact: compact }) : null, step === "EXECUTION" ? _jsx(ExecutionStatus, { state: state, compact: compact }) : null, state.catalog.errors.length ? _jsxs(Text, { color: "yellow", wrap: "wrap", children: ["Catalog warnings: ", state.catalog.errors.join(" · ")] }) : null, state.dirty ? _jsx(Text, { color: "yellow", children: "Local draft has unsaved changes." }) : null, state.session?.currentStep && !ONBOARDING_STEPS.includes(state.session.currentStep)
391
+ ? _jsxs(Text, { color: "yellow", children: ["Server returned unknown currentStep ", state.session.currentStep, "; displaying it safely and using a conservative local step."] })
392
+ : null] });
393
+ }
394
+ function SourceStatus({ state }) {
395
+ if (state.session?.mode !== "EXISTING" && stringAt(state.draft, "technology.repoMode") !== "ADD_MODULE")
396
+ return null;
397
+ return _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Press f to query provider repositories. Selection copies externalId and headRevision\u2192expectedHead. On 501, enter both manually; URLs and credentials remain forbidden." }), state.catalog.repositoryStatus ? _jsx(Text, { color: state.catalog.repositoryStatus.includes("NOT_INSTALLED") ? "yellow" : "cyan", children: state.catalog.repositoryStatus }) : null] });
398
+ }
399
+ function TechnologyStatus({ state }) {
400
+ if (state.session?.mode !== "NEW")
401
+ return null;
402
+ const errors = stringAt(state.draft, "technology.templateCode")
403
+ ? validateTemplateParameters(state.draft, state.catalog.templates)
404
+ : [];
405
+ const template = state.catalog.templates.find((item) => stringValue(item.code) === stringAt(state.draft, "technology.templateCode"));
406
+ const schema = objectValue(template?.parameterSchema);
407
+ const required = Array.isArray(schema.required) ? schema.required.map(String) : [];
408
+ return _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Changing template resets parameters and applies registry defaults. Edit JSON to satisfy required/type/enum/pattern constraints." }), required.length ? _jsxs(Text, { children: ["Required template parameters: ", required.join(", ")] }) : null, errors.length ? errors.slice(0, 5).map((error) => _jsxs(Text, { color: "yellow", children: ["\u2022 ", error] }, error)) : null] });
409
+ }
410
+ function StandardizationStatus({ state }) {
411
+ if (state.session?.mode === "NEW") {
412
+ return _jsx(Text, { dimColor: true, children: "Template render/build/secret-scan evidence remains pending until the approved runner emits server events." });
413
+ }
414
+ if (!state.assessment)
415
+ return _jsx(Text, { dimColor: true, children: "Press g to load the immutable commit/policy assessment. Missing Phase 3 capability is shown as an error, never as PASS." });
416
+ return _jsxs(Text, { wrap: "wrap", children: ["Assessment: ", JSON.stringify(sanitizeOnboardingOutput(state.assessment)).slice(0, 1_500)] });
417
+ }
418
+ function ReviewStatus({ state, compact }) {
419
+ const preflight = state.preflight;
420
+ return _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { wrap: "wrap", children: ["Draft preview: ", JSON.stringify(sanitizeOnboardingOutput(state.draft), null, compact ? 0 : 2).slice(0, compact ? 1_200 : 3_500)] }), !preflight ? _jsx(Text, { dimColor: true, children: "Press p to save REVIEW and run server preflight." }) : _jsxs(_Fragment, { children: [_jsxs(Text, { children: ["Plan hash: ", _jsx(Text, { color: preflight.planHash ? "cyan" : "yellow", children: preflight.planHash ?? "not generated" })] }), _jsxs(Text, { children: ["Blocking: ", preflight.blockingErrors.length, " \u00B7 Warnings: ", preflight.warnings.length] }), preflight.blockingErrors.slice(0, 8).map((issue, index) => _jsxs(Text, { color: "red", children: ["\u2022 ", issueText(issue)] }, `b-${index}`)), preflight.warnings.slice(0, 8).map((issue, index) => _jsxs(Text, { color: "yellow", children: ["\u2022 ", issueText(issue)] }, `w-${index}`)), !preflight.blockingErrors.length && preflight.planHash ? _jsx(Text, { dimColor: true, children: "Press a, inspect plan hash/idempotency key, then y to apply." }) : null] })] });
421
+ }
422
+ function ExecutionStatus({ state, compact }) {
423
+ const maximum = compact ? 7 : 12;
424
+ return _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [state.idempotencyKey ? _jsxs(Text, { color: "yellow", children: ["Idempotency key: ", state.idempotencyKey] }) : null, _jsx(Text, { dimColor: true, children: "Only server session state and events determine completion. Active sessions refresh every 2 seconds." }), state.events.length ? state.events.slice(-maximum).map((event) => _jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { dimColor: true, children: ["#", event.sequenceNo] }), " ", event.stepCode ?? event.eventType, " ", _jsx(Text, { color: event.stepState === "FAILED" ? "red" : event.stepState === "SUCCEEDED" ? "green" : "yellow", children: event.stepState ?? "" }), " ", String(sanitizeOnboardingOutput(event.message))] }, event.sequenceNo)) : _jsx(Text, { dimColor: true, children: "No server events yet." })] });
425
+ }
426
+ async function loadBootstrap(client, sessionNo) {
427
+ const [capabilities, connections, stacks, templates, teams, systems, businessDomains, environments, session, events] = await Promise.all([
428
+ client.getCapabilities(),
429
+ settleCatalog("SCM connections", () => client.listScmConnections()),
430
+ settleCatalog("technology stacks", () => client.listTechnologyStacks({ status: "ACTIVE" })),
431
+ settleCatalog("templates", () => client.listTemplates()),
432
+ settleCatalog("teams", () => client.listCatalogOptions("team")),
433
+ settleCatalog("systems", () => client.listCatalogOptions("system")),
434
+ settleCatalog("business domains", () => client.listCatalogOptions("business-domain")),
435
+ settleCatalog("environments", () => client.listCatalogOptions("environment")),
436
+ sessionNo ? client.getSession(sessionNo) : Promise.resolve(undefined),
437
+ sessionNo ? client.getEvents(sessionNo, 0) : Promise.resolve({ items: [], nextSequence: 0 })
438
+ ]);
439
+ return {
440
+ capabilities,
441
+ catalog: {
442
+ connections: connections.items,
443
+ stacks: stacks.items,
444
+ templates: templates.items,
445
+ teams: teams.items,
446
+ systems: systems.items,
447
+ businessDomains: businessDomains.items,
448
+ environments: environments.items,
449
+ errors: [
450
+ connections.error,
451
+ stacks.error,
452
+ templates.error,
453
+ teams.error,
454
+ systems.error,
455
+ businessDomains.error,
456
+ environments.error
457
+ ].filter((item) => Boolean(item))
458
+ },
459
+ session,
460
+ events: events.items
461
+ };
462
+ }
463
+ async function settleCatalog(label, request) {
464
+ try {
465
+ return await request();
466
+ }
467
+ catch (error) {
468
+ return { items: [], error: `${label}: ${errorMessage(error)}` };
469
+ }
470
+ }
471
+ async function refreshSession(client, state) {
472
+ const sessionNo = state.session?.sessionNo;
473
+ if (!sessionNo)
474
+ throw new OnboardingError("Session is required.", "onboarding_session_required");
475
+ const [session, events] = await Promise.all([
476
+ client.getSession(sessionNo),
477
+ client.getEvents(sessionNo, state.afterSequence)
478
+ ]);
479
+ return { session, events: events.items };
480
+ }
481
+ function setViaReducerPreview(state, path, value) {
482
+ return reduceOnboardingTuiState(state, { type: "SET_DRAFT_VALUE", path, value }).draft;
483
+ }
484
+ function rawEditorValue(field, draft) {
485
+ const value = valueAtPath(draft, field.path);
486
+ if (field.kind === "json")
487
+ return JSON.stringify(value ?? {}, null, 0);
488
+ if (field.kind === "tiers")
489
+ return Array.isArray(value) ? value.join(",") : "";
490
+ return value == null ? "" : String(value);
491
+ }
492
+ function footerHelp(state, fields) {
493
+ if (state.phase === "SELECT_MODE")
494
+ return "↑↓ mode · Enter create · q quit";
495
+ if (state.phase !== "SESSION")
496
+ return "q quit";
497
+ const step = currentStepCode(state);
498
+ const fieldHelp = fields.length ? "↑↓ field · ←→ choose · Enter/e edit" : "";
499
+ const stepHelp = "[ previous · ] save+next · s save";
500
+ const action = step === "SOURCE_CONTROL" ? " · f repositories · n next page"
501
+ : step === "STANDARDIZATION" ? " · g assessment"
502
+ : step === "REVIEW" ? " · p preflight · a apply"
503
+ : step === "EXECUTION" ? " · r refresh · u resume · t retry · e reassess · x cancel"
504
+ : "";
505
+ return `${fieldHelp}${fieldHelp ? " · " : ""}${stepHelp}${action} · q quit`;
506
+ }
507
+ function errorMessage(error) {
508
+ return error instanceof Error ? error.message : String(error);
509
+ }
510
+ function isRevisionConflict(error) {
511
+ return error instanceof OnboardingError
512
+ && (error.status === 409 || /REVISION_CONFLICT/iu.test(error.code));
513
+ }
514
+ function draftMutable(state) {
515
+ return ["DRAFT", "READY", "PLANNED"].includes(state);
516
+ }
517
+ function isActiveState(state) {
518
+ return ["RUNNING", "WAITING_EXTERNAL", "VERIFYING"].includes(state);
519
+ }
520
+ function issueText(issue) {
521
+ if (issue && typeof issue === "object" && !Array.isArray(issue)) {
522
+ const item = issue;
523
+ return [item.path, item.code, item.message].filter(Boolean).map(String).join(" · ") || JSON.stringify(sanitizeOnboardingOutput(issue));
524
+ }
525
+ return String(sanitizeOnboardingOutput(issue));
526
+ }
527
+ function objectValue(value) {
528
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
529
+ }
530
+ function stringValue(value) {
531
+ return typeof value === "string" ? value : typeof value === "number" ? String(value) : "";
532
+ }
533
+ function deduplicateRepositories(items) {
534
+ const byExternalId = new Map();
535
+ for (const item of items) {
536
+ const externalId = stringValue(item.externalId ?? item.id);
537
+ if (externalId)
538
+ byExternalId.set(externalId, item);
539
+ }
540
+ return [...byExternalId.values()];
541
+ }
542
+ function shortStep(step) {
543
+ return step.replace("BASIC_INFORMATION", "BASIC").replace("SOURCE_CONTROL", "SCM").replace("STANDARDIZATION", "STANDARD");
544
+ }
545
+ function sessionColor(state) {
546
+ if (state === "COMPLETED")
547
+ return "green";
548
+ if (state === "FAILED" || state === "CANCELLED")
549
+ return "red";
550
+ if (state === "RUNNING" || state === "VERIFYING")
551
+ return "cyan";
552
+ return "yellow";
553
+ }
554
+ //# sourceMappingURL=tui.js.map