ostacky 0.5.4 → 0.5.6

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 (835) hide show
  1. package/README.md +34 -9
  2. package/assets/agents/ostacky.md +109 -29
  3. package/assets/commands/install-stack.md +222 -88
  4. package/assets/mcp/ostacky-controller/index.js +639 -999
  5. package/assets/mcp/ostacky-controller/node_modules/.package-lock.json +42 -0
  6. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/LICENSE +216 -0
  7. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/README.md +40 -0
  8. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/auth-BUWfrB3C.d.cts +8198 -0
  9. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/auth-BUWfrB3C.d.cts.map +1 -0
  10. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/auth-CEFpHq32.cjs +2862 -0
  11. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/auth-CEFpHq32.cjs.map +1 -0
  12. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/auth-CNbu4K4a.d.mts +8198 -0
  13. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/auth-CNbu4K4a.d.mts.map +1 -0
  14. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/auth-DFgbUATV.mjs +1653 -0
  15. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/auth-DFgbUATV.mjs.map +1 -0
  16. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/index.cjs +174 -0
  17. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/index.d.cts +2 -0
  18. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/index.d.mts +2 -0
  19. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/index.mjs +3 -0
  20. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/internal.cjs +199 -0
  21. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/internal.d.cts +87 -0
  22. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/internal.d.cts.map +1 -0
  23. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/internal.d.mts +87 -0
  24. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/internal.d.mts.map +1 -0
  25. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/internal.mjs +3 -0
  26. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/package.json +85 -0
  27. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/LICENSE +216 -0
  28. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/README.md +30 -0
  29. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/ajvProvider-B_4czhCS.d.cts +1054 -0
  30. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/ajvProvider-B_4czhCS.d.cts.map +1 -0
  31. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/ajvProvider-BdSo9BII.d.mts +1054 -0
  32. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/ajvProvider-BdSo9BII.d.mts.map +1 -0
  33. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/ajvProvider-Brn-Q2J_.cjs +7086 -0
  34. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/ajvProvider-Brn-Q2J_.cjs.map +1 -0
  35. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/ajvProvider-CplOkyLC.mjs +7069 -0
  36. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/ajvProvider-CplOkyLC.mjs.map +1 -0
  37. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-BYRW5af5.d.mts +59 -0
  38. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-BYRW5af5.d.mts.map +1 -0
  39. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-Bd-iTHAF.mjs +970 -0
  40. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-Bd-iTHAF.mjs.map +1 -0
  41. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-D9GAttn8.d.cts +59 -0
  42. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-D9GAttn8.d.cts.map +1 -0
  43. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-ojcZaap3.cjs +976 -0
  44. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-ojcZaap3.cjs.map +1 -0
  45. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/chunk-Bnu9O96Y.cjs +60 -0
  46. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/chunk-Br0eD_fh.mjs +42 -0
  47. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-BRM5MGf9.d.cts +4015 -0
  48. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-BRM5MGf9.d.cts.map +1 -0
  49. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-D93NefGZ.d.mts +4013 -0
  50. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-D93NefGZ.d.mts.map +1 -0
  51. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.cjs +1990 -0
  52. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.cjs.map +1 -0
  53. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.d.cts +732 -0
  54. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.d.cts.map +1 -0
  55. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.d.mts +732 -0
  56. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.d.mts.map +1 -0
  57. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.mjs +1813 -0
  58. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.mjs.map +1 -0
  59. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/mcp-Ctiu4nBa.mjs +1884 -0
  60. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/mcp-Ctiu4nBa.mjs.map +1 -0
  61. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/mcp-CzU40gwu.cjs +1963 -0
  62. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/mcp-CzU40gwu.cjs.map +1 -0
  63. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.cjs +23 -0
  64. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.cjs.map +1 -0
  65. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.d.cts +11 -0
  66. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.d.cts.map +1 -0
  67. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.d.mts +11 -0
  68. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.d.mts.map +1 -0
  69. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.mjs +22 -0
  70. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.mjs.map +1 -0
  71. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsNode.cjs +12 -0
  72. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsNode.d.cts +3 -0
  73. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsNode.d.mts +3 -0
  74. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsNode.mjs +4 -0
  75. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.cjs +30 -0
  76. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.cjs.map +1 -0
  77. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.d.cts +10 -0
  78. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.d.cts.map +1 -0
  79. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.d.mts +10 -0
  80. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.d.mts.map +1 -0
  81. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.mjs +29 -0
  82. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.mjs.map +1 -0
  83. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/src-D5Nfqtoz.mjs +7502 -0
  84. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/src-D5Nfqtoz.mjs.map +1 -0
  85. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/src-D9A7ArDn.cjs +8000 -0
  86. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/src-D9A7ArDn.cjs.map +1 -0
  87. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.cjs +564 -0
  88. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.cjs.map +1 -0
  89. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.d.cts +107 -0
  90. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.d.cts.map +1 -0
  91. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.d.mts +107 -0
  92. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.d.mts.map +1 -0
  93. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.mjs +562 -0
  94. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.mjs.map +1 -0
  95. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/types-DsbMXNFL.d.cts +1099 -0
  96. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/types-DsbMXNFL.d.cts.map +1 -0
  97. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/types-mS0yxCL0.d.mts +1099 -0
  98. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/types-mS0yxCL0.d.mts.map +1 -0
  99. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/ajv.cjs +5 -0
  100. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/ajv.d.cts +2 -0
  101. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/ajv.d.mts +2 -0
  102. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/ajv.mjs +3 -0
  103. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/cfWorker.cjs +3 -0
  104. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/cfWorker.d.cts +2 -0
  105. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/cfWorker.d.mts +2 -0
  106. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/cfWorker.mjs +3 -0
  107. package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/package.json +160 -0
  108. package/assets/mcp/ostacky-controller/node_modules/zod/LICENSE +21 -0
  109. package/assets/mcp/ostacky-controller/node_modules/zod/README.md +191 -0
  110. package/assets/mcp/ostacky-controller/node_modules/zod/index.cjs +33 -0
  111. package/assets/mcp/ostacky-controller/node_modules/zod/index.d.cts +4 -0
  112. package/assets/mcp/ostacky-controller/node_modules/zod/index.d.ts +4 -0
  113. package/assets/mcp/ostacky-controller/node_modules/zod/index.js +4 -0
  114. package/assets/mcp/ostacky-controller/node_modules/zod/locales/index.cjs +17 -0
  115. package/assets/mcp/ostacky-controller/node_modules/zod/locales/index.d.cts +1 -0
  116. package/assets/mcp/ostacky-controller/node_modules/zod/locales/index.d.ts +1 -0
  117. package/assets/mcp/ostacky-controller/node_modules/zod/locales/index.js +1 -0
  118. package/assets/mcp/ostacky-controller/node_modules/zod/locales/package.json +7 -0
  119. package/assets/mcp/ostacky-controller/node_modules/zod/mini/index.cjs +32 -0
  120. package/assets/mcp/ostacky-controller/node_modules/zod/mini/index.d.cts +3 -0
  121. package/assets/mcp/ostacky-controller/node_modules/zod/mini/index.d.ts +3 -0
  122. package/assets/mcp/ostacky-controller/node_modules/zod/mini/index.js +3 -0
  123. package/assets/mcp/ostacky-controller/node_modules/zod/mini/package.json +7 -0
  124. package/assets/mcp/ostacky-controller/node_modules/zod/package.json +135 -0
  125. package/assets/mcp/ostacky-controller/node_modules/zod/src/index.ts +4 -0
  126. package/assets/mcp/ostacky-controller/node_modules/zod/src/locales/index.ts +1 -0
  127. package/assets/mcp/ostacky-controller/node_modules/zod/src/mini/index.ts +3 -0
  128. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/ZodError.ts +330 -0
  129. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  130. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  131. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  132. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  133. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  134. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  135. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  136. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  137. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  138. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/errors.ts +13 -0
  139. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/external.ts +6 -0
  140. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  141. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  142. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  143. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  144. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  145. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/helpers/util.ts +224 -0
  146. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/index.ts +4 -0
  147. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/locales/en.ts +124 -0
  148. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/standard-schema.ts +113 -0
  149. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  150. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  151. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  152. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  153. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  154. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  155. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  156. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  157. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  158. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  159. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  160. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
  161. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  162. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  163. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  164. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  165. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  166. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  167. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  168. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  169. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  170. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  171. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/function.test.ts +261 -0
  172. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  173. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  174. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  175. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  176. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  177. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  178. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  179. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  180. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  181. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
  182. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  183. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  184. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  185. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  186. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  187. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  188. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  189. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  190. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  191. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  192. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  193. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  194. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  195. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  196. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  197. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  198. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  199. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  200. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  201. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  202. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  203. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  204. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  205. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  206. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  207. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  208. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  209. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  210. package/assets/mcp/ostacky-controller/node_modules/zod/src/v3/types.ts +5138 -0
  211. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/checks.ts +32 -0
  212. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  213. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/compat.ts +70 -0
  214. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/errors.ts +82 -0
  215. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/external.ts +52 -0
  216. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/from-json-schema.ts +659 -0
  217. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/index.ts +5 -0
  218. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/iso.ts +90 -0
  219. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/parse.ts +82 -0
  220. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/schemas.ts +2672 -0
  221. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  222. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
  223. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  224. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/assignability.test.ts +216 -0
  225. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  226. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  227. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  228. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  229. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
  230. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/catch.test.ts +326 -0
  231. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  232. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
  233. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/codec.test.ts +703 -0
  234. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  235. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
  236. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  237. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
  238. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
  239. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/default.test.ts +409 -0
  240. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  241. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  242. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +197 -0
  243. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +694 -0
  244. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  245. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +807 -0
  246. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  247. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
  248. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
  249. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  250. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +895 -0
  251. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
  252. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  253. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/global-config.test.ts +39 -0
  254. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
  255. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
  256. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
  257. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
  258. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +46 -0
  259. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
  260. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  261. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
  262. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/locales_ka.test.ts +29 -0
  263. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/locales_ro.test.ts +24 -0
  264. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
  265. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  266. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  267. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
  268. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  269. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/number.test.ts +325 -0
  270. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/object.test.ts +717 -0
  271. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/optional.test.ts +333 -0
  272. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/partial.test.ts +450 -0
  273. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
  274. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
  275. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
  276. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +26 -0
  277. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +351 -0
  278. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  279. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  280. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  281. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  282. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/record.test.ts +717 -0
  283. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +631 -0
  284. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/refine.test.ts +633 -0
  285. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
  286. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
  287. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
  288. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
  289. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/string.test.ts +1224 -0
  290. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
  291. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
  292. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  293. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +3125 -0
  294. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/transform.test.ts +378 -0
  295. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/tuple.test.ts +496 -0
  296. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/union.test.ts +273 -0
  297. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
  298. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  299. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  300. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/api.ts +1823 -0
  301. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/checks.ts +1293 -0
  302. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/config.ts +15 -0
  303. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/core.ts +153 -0
  304. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/doc.ts +44 -0
  305. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/errors.ts +455 -0
  306. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/index.ts +16 -0
  307. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
  308. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/json-schema-processors.ts +666 -0
  309. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/json-schema.ts +147 -0
  310. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/parse.ts +195 -0
  311. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/regexes.ts +190 -0
  312. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/registries.ts +105 -0
  313. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/schemas.ts +4730 -0
  314. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
  315. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
  316. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  317. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  318. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/locales/el.test.ts +215 -0
  319. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  320. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
  321. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +72 -0
  322. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
  323. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/locales/hr.test.ts +163 -0
  324. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
  325. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  326. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  327. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +105 -0
  328. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +125 -0
  329. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  330. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/to-json-schema.ts +622 -0
  331. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/util.ts +983 -0
  332. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/versions.ts +5 -0
  333. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/core/zsf.ts +323 -0
  334. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/index.ts +4 -0
  335. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ar.ts +115 -0
  336. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/az.ts +111 -0
  337. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/be.ts +176 -0
  338. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/bg.ts +128 -0
  339. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ca.ts +116 -0
  340. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/cs.ts +118 -0
  341. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/da.ts +123 -0
  342. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/de.ts +116 -0
  343. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/el.ts +121 -0
  344. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/en.ts +123 -0
  345. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/eo.ts +118 -0
  346. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/es.ts +141 -0
  347. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/fa.ts +126 -0
  348. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/fi.ts +121 -0
  349. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
  350. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/fr.ts +132 -0
  351. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/he.ts +246 -0
  352. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/hr.ts +131 -0
  353. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/hu.ts +117 -0
  354. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/hy.ts +164 -0
  355. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/id.ts +115 -0
  356. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/index.ts +52 -0
  357. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/is.ts +119 -0
  358. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/it.ts +116 -0
  359. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ja.ts +114 -0
  360. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ka.ts +123 -0
  361. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/kh.ts +7 -0
  362. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/km.ts +119 -0
  363. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ko.ts +121 -0
  364. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/lt.ts +239 -0
  365. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/mk.ts +118 -0
  366. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ms.ts +115 -0
  367. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/nl.ts +121 -0
  368. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/no.ts +116 -0
  369. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ota.ts +117 -0
  370. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/pl.ts +118 -0
  371. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ps.ts +126 -0
  372. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/pt.ts +116 -0
  373. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ro.ts +129 -0
  374. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ru.ts +176 -0
  375. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/sl.ts +118 -0
  376. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/sv.ts +119 -0
  377. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ta.ts +118 -0
  378. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/th.ts +119 -0
  379. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/tr.ts +111 -0
  380. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ua.ts +7 -0
  381. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/uk.ts +117 -0
  382. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/ur.ts +119 -0
  383. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/uz.ts +117 -0
  384. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/vi.ts +117 -0
  385. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/yo.ts +124 -0
  386. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
  387. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
  388. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/checks.ts +32 -0
  389. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/coerce.ts +27 -0
  390. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/external.ts +41 -0
  391. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/index.ts +3 -0
  392. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/iso.ts +66 -0
  393. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/parse.ts +14 -0
  394. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/schemas.ts +1947 -0
  395. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
  396. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  397. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
  398. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  399. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/codec.test.ts +548 -0
  400. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  401. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  402. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
  403. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/index.test.ts +993 -0
  404. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  405. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
  406. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  407. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +325 -0
  408. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
  409. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4/mini/tests/string.test.ts +352 -0
  410. package/assets/mcp/ostacky-controller/node_modules/zod/src/v4-mini/index.ts +3 -0
  411. package/assets/mcp/ostacky-controller/node_modules/zod/v3/ZodError.cjs +138 -0
  412. package/assets/mcp/ostacky-controller/node_modules/zod/v3/ZodError.d.cts +164 -0
  413. package/assets/mcp/ostacky-controller/node_modules/zod/v3/ZodError.d.ts +164 -0
  414. package/assets/mcp/ostacky-controller/node_modules/zod/v3/ZodError.js +133 -0
  415. package/assets/mcp/ostacky-controller/node_modules/zod/v3/errors.cjs +17 -0
  416. package/assets/mcp/ostacky-controller/node_modules/zod/v3/errors.d.cts +5 -0
  417. package/assets/mcp/ostacky-controller/node_modules/zod/v3/errors.d.ts +5 -0
  418. package/assets/mcp/ostacky-controller/node_modules/zod/v3/errors.js +9 -0
  419. package/assets/mcp/ostacky-controller/node_modules/zod/v3/external.cjs +22 -0
  420. package/assets/mcp/ostacky-controller/node_modules/zod/v3/external.d.cts +6 -0
  421. package/assets/mcp/ostacky-controller/node_modules/zod/v3/external.d.ts +6 -0
  422. package/assets/mcp/ostacky-controller/node_modules/zod/v3/external.js +6 -0
  423. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  424. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  425. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  426. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  427. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  428. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  429. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  430. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  431. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  432. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  433. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  434. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  435. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  436. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  437. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  438. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  439. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  440. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  441. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  442. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  443. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/util.cjs +137 -0
  444. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/util.d.cts +85 -0
  445. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/util.d.ts +85 -0
  446. package/assets/mcp/ostacky-controller/node_modules/zod/v3/helpers/util.js +133 -0
  447. package/assets/mcp/ostacky-controller/node_modules/zod/v3/index.cjs +33 -0
  448. package/assets/mcp/ostacky-controller/node_modules/zod/v3/index.d.cts +4 -0
  449. package/assets/mcp/ostacky-controller/node_modules/zod/v3/index.d.ts +4 -0
  450. package/assets/mcp/ostacky-controller/node_modules/zod/v3/index.js +4 -0
  451. package/assets/mcp/ostacky-controller/node_modules/zod/v3/locales/en.cjs +112 -0
  452. package/assets/mcp/ostacky-controller/node_modules/zod/v3/locales/en.d.cts +3 -0
  453. package/assets/mcp/ostacky-controller/node_modules/zod/v3/locales/en.d.ts +3 -0
  454. package/assets/mcp/ostacky-controller/node_modules/zod/v3/locales/en.js +109 -0
  455. package/assets/mcp/ostacky-controller/node_modules/zod/v3/package.json +7 -0
  456. package/assets/mcp/ostacky-controller/node_modules/zod/v3/standard-schema.cjs +2 -0
  457. package/assets/mcp/ostacky-controller/node_modules/zod/v3/standard-schema.d.cts +102 -0
  458. package/assets/mcp/ostacky-controller/node_modules/zod/v3/standard-schema.d.ts +102 -0
  459. package/assets/mcp/ostacky-controller/node_modules/zod/v3/standard-schema.js +1 -0
  460. package/assets/mcp/ostacky-controller/node_modules/zod/v3/types.cjs +3777 -0
  461. package/assets/mcp/ostacky-controller/node_modules/zod/v3/types.d.cts +1034 -0
  462. package/assets/mcp/ostacky-controller/node_modules/zod/v3/types.d.ts +1034 -0
  463. package/assets/mcp/ostacky-controller/node_modules/zod/v3/types.js +3695 -0
  464. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/checks.cjs +33 -0
  465. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/checks.d.cts +1 -0
  466. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/checks.d.ts +1 -0
  467. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/checks.js +1 -0
  468. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/coerce.cjs +47 -0
  469. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  470. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  471. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/coerce.js +17 -0
  472. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/compat.cjs +61 -0
  473. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/compat.d.cts +50 -0
  474. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/compat.d.ts +50 -0
  475. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/compat.js +31 -0
  476. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/errors.cjs +74 -0
  477. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/errors.d.cts +30 -0
  478. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/errors.d.ts +30 -0
  479. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/errors.js +48 -0
  480. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/external.cjs +73 -0
  481. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/external.d.cts +16 -0
  482. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/external.d.ts +16 -0
  483. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/external.js +20 -0
  484. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/from-json-schema.cjs +625 -0
  485. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
  486. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
  487. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/from-json-schema.js +599 -0
  488. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/index.cjs +33 -0
  489. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/index.d.cts +4 -0
  490. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/index.d.ts +4 -0
  491. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/index.js +4 -0
  492. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/iso.cjs +60 -0
  493. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/iso.d.cts +22 -0
  494. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/iso.d.ts +22 -0
  495. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/iso.js +30 -0
  496. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/package.json +7 -0
  497. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/parse.cjs +41 -0
  498. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/parse.d.cts +31 -0
  499. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/parse.d.ts +31 -0
  500. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/parse.js +15 -0
  501. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/schemas.cjs +1511 -0
  502. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/schemas.d.cts +767 -0
  503. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/schemas.d.ts +767 -0
  504. package/assets/mcp/ostacky-controller/node_modules/zod/v4/classic/schemas.js +1395 -0
  505. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/api.cjs +1227 -0
  506. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/api.d.cts +325 -0
  507. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/api.d.ts +325 -0
  508. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/api.js +1087 -0
  509. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/checks.cjs +601 -0
  510. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/checks.d.cts +278 -0
  511. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/checks.d.ts +278 -0
  512. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/checks.js +575 -0
  513. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/core.cjs +85 -0
  514. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/core.d.cts +70 -0
  515. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/core.d.ts +70 -0
  516. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/core.js +78 -0
  517. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/doc.cjs +39 -0
  518. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/doc.d.cts +14 -0
  519. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/doc.d.ts +14 -0
  520. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/doc.js +35 -0
  521. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/errors.cjs +216 -0
  522. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/errors.d.cts +221 -0
  523. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/errors.d.ts +221 -0
  524. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/errors.js +185 -0
  525. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/index.cjs +47 -0
  526. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/index.d.cts +16 -0
  527. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/index.d.ts +16 -0
  528. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/index.js +16 -0
  529. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
  530. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
  531. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
  532. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/json-schema-generator.js +95 -0
  533. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/json-schema-processors.cjs +644 -0
  534. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
  535. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
  536. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/json-schema-processors.js +601 -0
  537. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/json-schema.cjs +2 -0
  538. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/json-schema.d.cts +88 -0
  539. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/json-schema.d.ts +88 -0
  540. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/json-schema.js +1 -0
  541. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/package.json +7 -0
  542. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/parse.cjs +131 -0
  543. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/parse.d.cts +49 -0
  544. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/parse.d.ts +49 -0
  545. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/parse.js +93 -0
  546. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/regexes.cjs +172 -0
  547. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/regexes.d.cts +85 -0
  548. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/regexes.d.ts +85 -0
  549. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/regexes.js +139 -0
  550. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/registries.cjs +56 -0
  551. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/registries.d.cts +35 -0
  552. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/registries.d.ts +35 -0
  553. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/registries.js +51 -0
  554. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/schemas.cjs +2270 -0
  555. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/schemas.d.cts +1184 -0
  556. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/schemas.d.ts +1184 -0
  557. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/schemas.js +2239 -0
  558. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  559. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
  560. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
  561. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/standard-schema.js +1 -0
  562. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/to-json-schema.cjs +457 -0
  563. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
  564. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
  565. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/to-json-schema.js +448 -0
  566. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/util.cjs +734 -0
  567. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/util.d.cts +200 -0
  568. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/util.d.ts +200 -0
  569. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/util.js +674 -0
  570. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/versions.cjs +8 -0
  571. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/versions.d.cts +5 -0
  572. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/versions.d.ts +5 -0
  573. package/assets/mcp/ostacky-controller/node_modules/zod/v4/core/versions.js +5 -0
  574. package/assets/mcp/ostacky-controller/node_modules/zod/v4/index.cjs +22 -0
  575. package/assets/mcp/ostacky-controller/node_modules/zod/v4/index.d.cts +3 -0
  576. package/assets/mcp/ostacky-controller/node_modules/zod/v4/index.d.ts +3 -0
  577. package/assets/mcp/ostacky-controller/node_modules/zod/v4/index.js +3 -0
  578. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ar.cjs +133 -0
  579. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ar.d.cts +5 -0
  580. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ar.d.ts +4 -0
  581. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ar.js +106 -0
  582. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/az.cjs +132 -0
  583. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/az.d.cts +5 -0
  584. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/az.d.ts +4 -0
  585. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/az.js +105 -0
  586. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/be.cjs +183 -0
  587. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/be.d.cts +5 -0
  588. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/be.d.ts +4 -0
  589. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/be.js +156 -0
  590. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/bg.cjs +147 -0
  591. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/bg.d.cts +5 -0
  592. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/bg.d.ts +4 -0
  593. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/bg.js +120 -0
  594. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ca.cjs +134 -0
  595. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ca.d.cts +5 -0
  596. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ca.d.ts +4 -0
  597. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ca.js +107 -0
  598. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/cs.cjs +138 -0
  599. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/cs.d.cts +5 -0
  600. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/cs.d.ts +4 -0
  601. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/cs.js +111 -0
  602. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/da.cjs +142 -0
  603. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/da.d.cts +5 -0
  604. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/da.d.ts +4 -0
  605. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/da.js +115 -0
  606. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/de.cjs +135 -0
  607. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/de.d.cts +5 -0
  608. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/de.d.ts +4 -0
  609. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/de.js +108 -0
  610. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/el.cjs +136 -0
  611. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/el.d.cts +5 -0
  612. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/el.d.ts +4 -0
  613. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/el.js +109 -0
  614. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/en.cjs +140 -0
  615. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/en.d.cts +5 -0
  616. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/en.d.ts +4 -0
  617. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/en.js +113 -0
  618. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/eo.cjs +136 -0
  619. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/eo.d.cts +5 -0
  620. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/eo.d.ts +4 -0
  621. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/eo.js +109 -0
  622. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/es.cjs +159 -0
  623. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/es.d.cts +5 -0
  624. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/es.d.ts +4 -0
  625. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/es.js +132 -0
  626. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fa.cjs +141 -0
  627. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fa.d.cts +5 -0
  628. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fa.d.ts +4 -0
  629. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fa.js +114 -0
  630. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fi.cjs +139 -0
  631. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fi.d.cts +5 -0
  632. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fi.d.ts +4 -0
  633. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fi.js +112 -0
  634. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
  635. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
  636. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  637. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fr-CA.js +107 -0
  638. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fr.cjs +152 -0
  639. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fr.d.cts +5 -0
  640. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fr.d.ts +4 -0
  641. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/fr.js +125 -0
  642. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/he.cjs +241 -0
  643. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/he.d.cts +5 -0
  644. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/he.d.ts +4 -0
  645. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/he.js +214 -0
  646. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/hr.cjs +149 -0
  647. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/hr.d.cts +5 -0
  648. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/hr.d.ts +4 -0
  649. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/hr.js +122 -0
  650. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/hu.cjs +135 -0
  651. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/hu.d.cts +5 -0
  652. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/hu.d.ts +4 -0
  653. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/hu.js +108 -0
  654. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/hy.cjs +174 -0
  655. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/hy.d.cts +5 -0
  656. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/hy.d.ts +4 -0
  657. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/hy.js +147 -0
  658. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/id.cjs +133 -0
  659. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/id.d.cts +5 -0
  660. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/id.d.ts +4 -0
  661. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/id.js +106 -0
  662. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/index.cjs +111 -0
  663. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/index.d.cts +52 -0
  664. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/index.d.ts +52 -0
  665. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/index.js +52 -0
  666. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/is.cjs +136 -0
  667. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/is.d.cts +5 -0
  668. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/is.d.ts +4 -0
  669. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/is.js +109 -0
  670. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/it.cjs +135 -0
  671. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/it.d.cts +5 -0
  672. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/it.d.ts +4 -0
  673. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/it.js +108 -0
  674. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ja.cjs +134 -0
  675. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ja.d.cts +5 -0
  676. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ja.d.ts +4 -0
  677. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ja.js +107 -0
  678. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ka.cjs +139 -0
  679. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ka.d.cts +5 -0
  680. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ka.d.ts +4 -0
  681. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ka.js +112 -0
  682. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/kh.cjs +12 -0
  683. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/kh.d.cts +5 -0
  684. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/kh.d.ts +5 -0
  685. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/kh.js +5 -0
  686. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/km.cjs +137 -0
  687. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/km.d.cts +5 -0
  688. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/km.d.ts +4 -0
  689. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/km.js +110 -0
  690. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ko.cjs +138 -0
  691. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ko.d.cts +5 -0
  692. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ko.d.ts +4 -0
  693. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ko.js +111 -0
  694. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/lt.cjs +230 -0
  695. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/lt.d.cts +5 -0
  696. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/lt.d.ts +4 -0
  697. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/lt.js +203 -0
  698. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/mk.cjs +136 -0
  699. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/mk.d.cts +5 -0
  700. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/mk.d.ts +4 -0
  701. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/mk.js +109 -0
  702. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ms.cjs +134 -0
  703. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ms.d.cts +5 -0
  704. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ms.d.ts +4 -0
  705. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ms.js +107 -0
  706. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/nl.cjs +137 -0
  707. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/nl.d.cts +5 -0
  708. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/nl.d.ts +4 -0
  709. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/nl.js +110 -0
  710. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/no.cjs +135 -0
  711. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/no.d.cts +5 -0
  712. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/no.d.ts +4 -0
  713. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/no.js +108 -0
  714. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ota.cjs +136 -0
  715. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ota.d.cts +5 -0
  716. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ota.d.ts +4 -0
  717. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ota.js +109 -0
  718. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/package.json +7 -0
  719. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/pl.cjs +136 -0
  720. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/pl.d.cts +5 -0
  721. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/pl.d.ts +4 -0
  722. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/pl.js +109 -0
  723. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ps.cjs +141 -0
  724. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ps.d.cts +5 -0
  725. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ps.d.ts +4 -0
  726. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ps.js +114 -0
  727. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/pt.cjs +135 -0
  728. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/pt.d.cts +5 -0
  729. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/pt.d.ts +4 -0
  730. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/pt.js +108 -0
  731. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ro.cjs +146 -0
  732. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ro.d.cts +5 -0
  733. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ro.d.ts +4 -0
  734. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ro.js +119 -0
  735. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ru.cjs +183 -0
  736. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ru.d.cts +5 -0
  737. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ru.d.ts +4 -0
  738. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ru.js +156 -0
  739. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/sl.cjs +136 -0
  740. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/sl.d.cts +5 -0
  741. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/sl.d.ts +4 -0
  742. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/sl.js +109 -0
  743. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/sv.cjs +137 -0
  744. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/sv.d.cts +5 -0
  745. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/sv.d.ts +4 -0
  746. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/sv.js +110 -0
  747. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ta.cjs +137 -0
  748. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ta.d.cts +5 -0
  749. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ta.d.ts +4 -0
  750. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ta.js +110 -0
  751. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/th.cjs +137 -0
  752. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/th.d.cts +5 -0
  753. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/th.d.ts +4 -0
  754. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/th.js +110 -0
  755. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/tr.cjs +132 -0
  756. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/tr.d.cts +5 -0
  757. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/tr.d.ts +4 -0
  758. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/tr.js +105 -0
  759. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ua.cjs +12 -0
  760. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ua.d.cts +5 -0
  761. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ua.d.ts +5 -0
  762. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ua.js +5 -0
  763. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/uk.cjs +135 -0
  764. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/uk.d.cts +5 -0
  765. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/uk.d.ts +4 -0
  766. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/uk.js +108 -0
  767. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ur.cjs +137 -0
  768. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ur.d.cts +5 -0
  769. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ur.d.ts +4 -0
  770. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/ur.js +110 -0
  771. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/uz.cjs +137 -0
  772. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/uz.d.cts +5 -0
  773. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/uz.d.ts +4 -0
  774. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/uz.js +110 -0
  775. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/vi.cjs +135 -0
  776. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/vi.d.cts +5 -0
  777. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/vi.d.ts +4 -0
  778. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/vi.js +108 -0
  779. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/yo.cjs +134 -0
  780. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/yo.d.cts +5 -0
  781. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/yo.d.ts +4 -0
  782. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/yo.js +107 -0
  783. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
  784. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
  785. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  786. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/zh-CN.js +109 -0
  787. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
  788. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
  789. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  790. package/assets/mcp/ostacky-controller/node_modules/zod/v4/locales/zh-TW.js +107 -0
  791. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/checks.cjs +34 -0
  792. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/checks.d.cts +1 -0
  793. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/checks.d.ts +1 -0
  794. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/checks.js +1 -0
  795. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/coerce.cjs +52 -0
  796. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  797. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  798. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/coerce.js +22 -0
  799. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/external.cjs +63 -0
  800. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/external.d.cts +13 -0
  801. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/external.d.ts +13 -0
  802. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/external.js +14 -0
  803. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/index.cjs +32 -0
  804. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/index.d.cts +3 -0
  805. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/index.d.ts +3 -0
  806. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/index.js +3 -0
  807. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/iso.cjs +64 -0
  808. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/iso.d.cts +22 -0
  809. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/iso.d.ts +22 -0
  810. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/iso.js +34 -0
  811. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/package.json +7 -0
  812. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/parse.cjs +16 -0
  813. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/parse.d.cts +1 -0
  814. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/parse.d.ts +1 -0
  815. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/parse.js +1 -0
  816. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/schemas.cjs +1083 -0
  817. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/schemas.d.cts +445 -0
  818. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/schemas.d.ts +445 -0
  819. package/assets/mcp/ostacky-controller/node_modules/zod/v4/mini/schemas.js +961 -0
  820. package/assets/mcp/ostacky-controller/node_modules/zod/v4/package.json +7 -0
  821. package/assets/mcp/ostacky-controller/node_modules/zod/v4-mini/index.cjs +32 -0
  822. package/assets/mcp/ostacky-controller/node_modules/zod/v4-mini/index.d.cts +3 -0
  823. package/assets/mcp/ostacky-controller/node_modules/zod/v4-mini/index.d.ts +3 -0
  824. package/assets/mcp/ostacky-controller/node_modules/zod/v4-mini/index.js +3 -0
  825. package/assets/mcp/ostacky-controller/node_modules/zod/v4-mini/package.json +7 -0
  826. package/assets/mcp/ostacky-controller/package-lock.json +50 -0
  827. package/assets/mcp/ostacky-controller/package.json +6 -2
  828. package/assets/skills/question-validation/SKILL.md +77 -0
  829. package/dist/cli.js +760 -191
  830. package/dist/mcp/ask-user-server/index.js +19657 -0
  831. package/dist/mcp/ostacky-controller/index.js +20045 -0
  832. package/manifest.json +28 -28
  833. package/package.json +4 -2
  834. package/assets/mcp/ask-user-server/index.js +0 -382
  835. package/assets/mcp/ask-user-server/package.json +0 -6
package/dist/cli.js CHANGED
@@ -161,7 +161,7 @@ var require_picocolors = __commonJS((exports, module) => {
161
161
  // package.json
162
162
  var package_default = {
163
163
  name: "ostacky",
164
- version: "0.5.4",
164
+ version: "0.5.6",
165
165
  description: "Instalador interactivo de agentes y comandos para OpenCode",
166
166
  type: "module",
167
167
  bin: {
@@ -169,9 +169,11 @@ var package_default = {
169
169
  },
170
170
  scripts: {
171
171
  dev: "bun run src/cli.ts",
172
- build: "bun build src/cli.ts --target=node --format=esm --outfile dist/cli.js && bun scripts/add-shebang.ts",
172
+ build: "bun build src/cli.ts --target=node --format=esm --outfile dist/cli.js && bun scripts/bundle-mcp.ts && bun scripts/add-shebang.ts",
173
173
  start: "node dist/cli.js",
174
174
  test: "bun test",
175
+ "hash:check": "bun run scripts/update-manifest-hashes.ts --check",
176
+ "hash:update": "bun run scripts/update-manifest-hashes.ts",
175
177
  prepublishOnly: "bun run build"
176
178
  },
177
179
  files: [
@@ -874,18 +876,19 @@ var L2 = () => {
874
876
 
875
877
  // src/prompts.ts
876
878
  import { join as join5 } from "path";
879
+ import { existsSync as existsSync4 } from "fs";
877
880
  // manifest.json
878
881
  var manifest_default = {
879
- version: "0.5.4",
882
+ version: "0.5.6",
880
883
  repo: "JaimeHoracio/Ostacky",
881
- tag: "v0.5.3",
884
+ tag: "v0.5.6",
882
885
  agents: [
883
886
  {
884
887
  name: "ostacky",
885
888
  file: "assets/agents/ostacky.md",
886
889
  description: "Orquestador principal con ruteo por nivel de impacto, máquina de estados persistida (controller MCP), edición segura con 3 outcomes, y delegación en OpenSpec + Superpowers",
887
- version: "0.5.4",
888
- sha256: "92c533260f1747f660be123d699c227b77b3f36e3c8f33929a6f470b56fef6dc"
890
+ version: "0.5.6",
891
+ sha256: "e9848ba26a932a7c2b78c998d750e4d011f95085899bab95cb6410cf74802ff3"
889
892
  }
890
893
  ],
891
894
  commands: [
@@ -893,31 +896,24 @@ var manifest_default = {
893
896
  name: "install-stack",
894
897
  file: "assets/commands/install-stack.md",
895
898
  description: "Instala el stack tecnológico del proyecto (CodeGraph, skills, OpenSpec, Engram, Context7, controller MCP)",
896
- version: "0.5.4",
897
- sha256: "e8b75efe505766d47dd4d38cfb055b6801552cd457d99bce018c196a346e4560"
899
+ version: "0.5.6",
900
+ sha256: "95f207e63015a6772cf60b3d8dd8878d0fb65229be925ec8c3d234c570553f29"
898
901
  },
899
902
  {
900
903
  name: "opsx-sync",
901
904
  file: "assets/commands/opsx-sync.md",
902
905
  description: "Sincroniza delta specs del change activo sin inicializar CodeGraph si ya existe índice",
903
- version: "0.5.4",
906
+ version: "0.5.6",
904
907
  sha256: "ed9948f1910743b672e1dfad496bc96972a224a98b063232be39290d43068c50"
905
908
  }
906
909
  ],
907
910
  mcpServers: [
908
- {
909
- name: "ask-user-server",
910
- file: "assets/mcp/ask-user-server/",
911
- description: "MCP server con tool ask_user para consultar al usuario con bloqueo de ejecución",
912
- version: "0.5.4",
913
- sha256: "eae84bbf9addb839160dee64a7e1e8bc8f34f4520e02c9a2900c741003986258"
914
- },
915
911
  {
916
912
  name: "ostacky-controller",
917
913
  file: "assets/mcp/ostacky-controller/",
918
- description: "Máquina de estados persistida para Ostacky: validación de transiciones, consumo de decisiones, autorización de side effects, edición segura y snapshots reutilizables",
919
- version: "0.5.4",
920
- sha256: "a24e94655cc88d0f99b9a913f12b32a1bb6c634c9a72d92cb4706b147b686760"
914
+ description: "Máquina de estados persistida para Ostacky: 13 tools MCP para ciclo completo de request (start_request → discovery → route → execution → sync → done), edición segura con validación de transiciones y persistencia atómica",
915
+ version: "0.5.6",
916
+ sha256: "70b8eaec4248cffb90a19625a8ff99dcc9cfe9e678c25093358a31409975aeb0"
921
917
  }
922
918
  ],
923
919
  skills: [
@@ -925,78 +921,85 @@ var manifest_default = {
925
921
  name: "execution-mode-evaluation",
926
922
  file: "assets/skills/execution-mode-evaluation/SKILL.md",
927
923
  description: "Skill de análisis de modo de ejecución — output reconciliado con controller snapshot contract (recommendation field)",
928
- version: "0.5.4",
924
+ version: "0.5.6",
929
925
  sha256: "1063bc501b284d84daa181198cfb8194beff481594ba9931e6bbd46d89cfdabd"
930
926
  },
931
927
  {
932
928
  name: "brainstorming",
933
929
  file: "assets/skills/brainstorming/SKILL.md",
934
930
  description: "Skill de descubrimiento y exploración (Superpowers)",
935
- version: "0.5.4",
931
+ version: "0.5.6",
936
932
  sha256: "ad15458c54912007ae3f708c698a11f0a4a58e2a7c7860a1ae8874db573c9e98"
937
933
  },
938
934
  {
939
935
  name: "writing-plans",
940
936
  file: "assets/skills/writing-plans/SKILL.md",
941
937
  description: "Skill de planificación de implementación (Superpowers) — execution handoff removido, Ostacky decide modo de ejecución",
942
- version: "0.5.4",
938
+ version: "0.5.6",
943
939
  sha256: "ff242e9205666f74dc1b28bf19bd77270d46dcc5c322d643faa49aabf8e8d096"
944
940
  },
945
941
  {
946
942
  name: "tdd",
947
943
  file: "assets/skills/tdd/SKILL.md",
948
944
  description: "Skill de test-driven development (Superpowers)",
949
- version: "0.5.4",
945
+ version: "0.5.6",
950
946
  sha256: "7eacd8ee81dc5c0b85065c0392e37ee10314661f7edb59dd8e70a9e0dae8f371"
951
947
  },
952
948
  {
953
949
  name: "subagent-driven-development",
954
950
  file: "assets/skills/subagent-driven-development/SKILL.md",
955
951
  description: "Skill de ejecución con subagentes (Superpowers) — ejecuta solo después de confirmación del coordinador Ostacky",
956
- version: "0.5.4",
952
+ version: "0.5.6",
957
953
  sha256: "a9e6c9070f63dcac0a065a1abd91c9218fa07e201f594d1ce5f6a0dc0bfa0674"
958
954
  },
959
955
  {
960
956
  name: "dispatching-parallel-agents",
961
957
  file: "assets/skills/dispatching-parallel-agents/SKILL.md",
962
958
  description: "Skill de dispatch paralelo de agentes (Superpowers)",
963
- version: "0.5.4",
959
+ version: "0.5.6",
964
960
  sha256: "281edf0c38f358497c7e2066fa8217a2ba3e2a39b4205c4af0c41d328fc035a1"
965
961
  },
966
962
  {
967
963
  name: "review",
968
964
  file: "assets/skills/review/SKILL.md",
969
965
  description: "Skill de revisión de código (Superpowers)",
970
- version: "0.5.4",
966
+ version: "0.5.6",
971
967
  sha256: "c78d3beff45e9bb6b5e9e1d7155910f379e082d7aaf3c61b90d651d09e0d2e2a"
972
968
  },
973
969
  {
974
970
  name: "openspec-explore",
975
971
  file: "assets/skills/openspec-explore/SKILL.md",
976
972
  description: "Skill de exploración pre-spec (OpenSpec)",
977
- version: "0.5.4",
973
+ version: "0.5.6",
978
974
  sha256: "1c75cab8672c2eb8b12f27a0b31f0b7fdb73c21c72583c1e8a566e09fe4108a6"
979
975
  },
980
976
  {
981
977
  name: "openspec-propose",
982
978
  file: "assets/skills/openspec-propose/SKILL.md",
983
979
  description: "Skill de generación de proposal (OpenSpec)",
984
- version: "0.5.4",
980
+ version: "0.5.6",
985
981
  sha256: "ab88e9aa22db09559ccf7987d08adc0469b7c6fbe46498e63a3b64926f19e66b"
986
982
  },
987
983
  {
988
984
  name: "openspec-apply-change",
989
985
  file: "assets/skills/openspec-apply-change/SKILL.md",
990
986
  description: "Skill de aplicación de change (OpenSpec)",
991
- version: "0.5.4",
987
+ version: "0.5.6",
992
988
  sha256: "847c2f88a66e8d5946c1fec422a5367c89eca5340839b659bbaaeb6f0bdac487"
993
989
  },
994
990
  {
995
991
  name: "openspec-archive-change",
996
992
  file: "assets/skills/openspec-archive-change/SKILL.md",
997
993
  description: "Skill de archivo de change (OpenSpec)",
998
- version: "0.5.4",
994
+ version: "0.5.6",
999
995
  sha256: "3d35905ec40a081b8fd77b144426e540c67b1f50cc5801b655313a4fdfaa087a"
996
+ },
997
+ {
998
+ name: "question-validation",
999
+ file: "assets/skills/question-validation/SKILL.md",
1000
+ description: "Valida que el agente use el tool nativo question en vez del MCP ask_user eliminado",
1001
+ version: "0.5.6",
1002
+ sha256: "1b3a9dca1fecbcc74371e2132660b1740b585bc26a80cf13040d333f4c5eb6f1"
1000
1003
  }
1001
1004
  ]
1002
1005
  };
@@ -1143,7 +1146,8 @@ import {
1143
1146
  statSync,
1144
1147
  copyFileSync,
1145
1148
  readFileSync as readFileSync3,
1146
- rmSync
1149
+ rmSync,
1150
+ createWriteStream
1147
1151
  } from "fs";
1148
1152
  import { createHash as createHash2 } from "crypto";
1149
1153
  import { join as join4, resolve, dirname as dirname3, relative } from "path";
@@ -1186,7 +1190,7 @@ function clearLockfile(opencodeRoot) {
1186
1190
  const lockfile = readLockfile(opencodeRoot);
1187
1191
  if (!lockfile) {
1188
1192
  writeLockfile(opencodeRoot, {
1189
- version: "0.5.4",
1193
+ version: "0.5.6",
1190
1194
  lockedAt: new Date().toISOString(),
1191
1195
  repo: "",
1192
1196
  tag: "",
@@ -1238,26 +1242,37 @@ function ensureOpenCodePaths(opencodeDir) {
1238
1242
  root: opencodeDir,
1239
1243
  agents: join4(opencodeDir, "agents"),
1240
1244
  commands: join4(opencodeDir, "commands"),
1241
- skills: join4(opencodeDir, "skills")
1245
+ skills: join4(opencodeDir, "skills"),
1246
+ mcp: join4(opencodeDir, "mcp"),
1247
+ tools: join4(opencodeDir, "tools")
1242
1248
  };
1243
- for (const dir of [paths.root, paths.agents, paths.commands, paths.skills]) {
1249
+ for (const dir of [paths.root, paths.agents, paths.commands, paths.skills, paths.mcp, paths.tools]) {
1244
1250
  if (!existsSync3(dir))
1245
1251
  mkdirSync2(dir, { recursive: true });
1246
1252
  }
1247
1253
  return paths;
1248
1254
  }
1255
+ function ensureToolDirs(toolsDir, toolNames) {
1256
+ for (const name of toolNames) {
1257
+ const dir = join4(toolsDir, name);
1258
+ if (!existsSync3(dir))
1259
+ mkdirSync2(dir, { recursive: true });
1260
+ }
1261
+ }
1249
1262
  function createOpenCodeDir(baseDir) {
1250
1263
  return ensureOpenCodePaths(join4(baseDir, ".opencode"));
1251
1264
  }
1252
- function copyDirRecursive(src, dest) {
1265
+ function copyDirRecursive(src, dest, skipGenerated = false) {
1253
1266
  if (!existsSync3(dest))
1254
1267
  mkdirSync2(dest, { recursive: true });
1255
1268
  for (const entry of readdirSync(src)) {
1269
+ if (skipGenerated && (entry === "node_modules" || entry === "package-lock.json"))
1270
+ continue;
1256
1271
  const srcPath = join4(src, entry);
1257
1272
  const destPath = join4(dest, entry);
1258
1273
  const stat = statSync(srcPath);
1259
1274
  if (stat.isDirectory()) {
1260
- copyDirRecursive(srcPath, destPath);
1275
+ copyDirRecursive(srcPath, destPath, skipGenerated);
1261
1276
  } else {
1262
1277
  copyFileSync(srcPath, destPath);
1263
1278
  }
@@ -1272,6 +1287,8 @@ function computeTreeHash(dir) {
1272
1287
  }
1273
1288
  function walkForHash(root, current, lines) {
1274
1289
  for (const entry of readdirSync(current)) {
1290
+ if (entry === "node_modules" || entry === "package-lock.json")
1291
+ continue;
1275
1292
  const full = join4(current, entry);
1276
1293
  const stat = statSync(full);
1277
1294
  if (stat.isDirectory()) {
@@ -1283,6 +1300,97 @@ function walkForHash(root, current, lines) {
1283
1300
  }
1284
1301
  }
1285
1302
  }
1303
+ function stripJsoncComments(text) {
1304
+ let result = "";
1305
+ let i = 0;
1306
+ let inString = false;
1307
+ while (i < text.length) {
1308
+ const char = text[i];
1309
+ const next = text[i + 1];
1310
+ if (inString) {
1311
+ if (char === "\\") {
1312
+ result += char + (next ?? "");
1313
+ i += 2;
1314
+ continue;
1315
+ }
1316
+ if (char === '"')
1317
+ inString = false;
1318
+ result += char;
1319
+ i++;
1320
+ continue;
1321
+ }
1322
+ if (char === '"') {
1323
+ inString = true;
1324
+ result += char;
1325
+ i++;
1326
+ continue;
1327
+ }
1328
+ if (char === "/" && next === "/") {
1329
+ while (i < text.length && text[i] !== `
1330
+ `)
1331
+ i++;
1332
+ continue;
1333
+ }
1334
+ if (char === "/" && next === "*") {
1335
+ i += 2;
1336
+ while (i < text.length && !(text[i] === "*" && text[i + 1] === "/"))
1337
+ i++;
1338
+ i += 2;
1339
+ continue;
1340
+ }
1341
+ result += char;
1342
+ i++;
1343
+ }
1344
+ return result.replace(/,\s*([}\]])/g, "$1");
1345
+ }
1346
+ function readOpenCodeConfig(configPath) {
1347
+ const raw = readFileSync3(configPath, "utf-8");
1348
+ try {
1349
+ return JSON.parse(stripJsoncComments(raw));
1350
+ } catch {
1351
+ return null;
1352
+ }
1353
+ }
1354
+ function writeOpenCodeConfig(configPath, config) {
1355
+ writeFileSync3(configPath, JSON.stringify(config, null, 2) + `
1356
+ `, "utf-8");
1357
+ }
1358
+ function ensureOpenCodeConfig(projectRoot) {
1359
+ const existing = findOpenCodeConfig(projectRoot);
1360
+ if (existing)
1361
+ return existing;
1362
+ const configPath = join4(projectRoot, "opencode.json");
1363
+ writeOpenCodeConfig(configPath, {
1364
+ $schema: "https://opencode.ai/config.json",
1365
+ mcp: {}
1366
+ });
1367
+ return configPath;
1368
+ }
1369
+ function setMcpEntry(name, entry) {
1370
+ const projectRoot = findProjectRoot();
1371
+ const configPath = ensureOpenCodeConfig(projectRoot);
1372
+ const config = readOpenCodeConfig(configPath);
1373
+ if (!config)
1374
+ return;
1375
+ if (!config.mcp)
1376
+ config.mcp = {};
1377
+ config.mcp[name] = entry;
1378
+ writeOpenCodeConfig(configPath, config);
1379
+ }
1380
+ function ensureMcpEntry(name, entry) {
1381
+ const projectRoot = findProjectRoot();
1382
+ const configPath = ensureOpenCodeConfig(projectRoot);
1383
+ const config = readOpenCodeConfig(configPath);
1384
+ if (!config)
1385
+ return;
1386
+ if (!config.mcp)
1387
+ config.mcp = {};
1388
+ const mcp = config.mcp;
1389
+ if (!mcp[name]) {
1390
+ mcp[name] = entry;
1391
+ writeOpenCodeConfig(configPath, config);
1392
+ }
1393
+ }
1286
1394
  function upsertLockfile(paths, type, item, manifest, contentHash) {
1287
1395
  const existing = readLockfile(paths.root) ?? {
1288
1396
  version: manifest.version,
@@ -1307,13 +1415,37 @@ function upsertLockfile(paths, type, item, manifest, contentHash) {
1307
1415
  existing.lockedAt = new Date().toISOString();
1308
1416
  writeLockfile(paths.root, existing);
1309
1417
  }
1418
+ function readBundledAsset(relativePath) {
1419
+ const fullPath = join4(PACKAGE_ROOT, relativePath);
1420
+ if (!existsSync3(fullPath))
1421
+ return null;
1422
+ return readFileSync3(fullPath, "utf-8");
1423
+ }
1310
1424
  async function installAgent(item, manifest, paths) {
1311
- const content = await downloadFile(manifest, item.file);
1425
+ let content;
1426
+ try {
1427
+ content = await downloadFile(manifest, item.file);
1428
+ } catch (downloadErr) {
1429
+ const bundled = readBundledAsset(item.file);
1430
+ if (bundled === null) {
1431
+ throw new Error(`Descarga falló (${downloadErr.message}) y el asset no está bundleado en ${item.file}`);
1432
+ }
1433
+ content = bundled;
1434
+ }
1312
1435
  writeFileSync3(join4(paths.agents, `${item.name}.md`), content, "utf-8");
1313
1436
  upsertLockfile(paths, "agents", item, manifest, sha256(content));
1314
1437
  }
1315
1438
  async function installCommand(item, manifest, paths) {
1316
- const content = await downloadFile(manifest, item.file);
1439
+ let content;
1440
+ try {
1441
+ content = await downloadFile(manifest, item.file);
1442
+ } catch (downloadErr) {
1443
+ const bundled = readBundledAsset(item.file);
1444
+ if (bundled === null) {
1445
+ throw new Error(`Descarga falló (${downloadErr.message}) y el asset no está bundleado en ${item.file}`);
1446
+ }
1447
+ content = bundled;
1448
+ }
1317
1449
  writeFileSync3(join4(paths.commands, `${item.name}.md`), content, "utf-8");
1318
1450
  upsertLockfile(paths, "commands", item, manifest, sha256(content));
1319
1451
  }
@@ -1346,27 +1478,37 @@ async function installMcpServer(item, manifest, paths) {
1346
1478
  ` + ` esperado: ${item.sha256}
1347
1479
  ` + ` recibido: ${treeHash}`);
1348
1480
  }
1349
- const dest = join4(paths.root, "mcp", item.name);
1481
+ const dest = join4(paths.mcp, item.name);
1350
1482
  if (existsSync3(dest)) {
1351
1483
  rmSync(dest, { recursive: true, force: true });
1352
1484
  }
1353
- copyDirRecursive(src, dest);
1354
- upsertLockfile(paths, "mcpServers", item, manifest, treeHash);
1355
- const projectRoot = findProjectRoot();
1356
- const configPath = findOpenCodeConfig(projectRoot);
1357
- if (configPath) {
1358
- const raw = readFileSync3(configPath, "utf-8");
1359
- const config = JSON.parse(raw);
1360
- if (!config.mcp)
1361
- config.mcp = {};
1362
- config.mcp[item.name] = {
1363
- type: "local",
1364
- command: ["node", `.opencode/mcp/${item.name}/index.js`],
1365
- enabled: true
1366
- };
1367
- writeFileSync3(configPath, JSON.stringify(config, null, 2) + `
1368
- `, "utf-8");
1485
+ mkdirSync2(dest, { recursive: true });
1486
+ const bundledPath = join4(PACKAGE_ROOT, "dist", "mcp", item.name, "index.js");
1487
+ if (existsSync3(bundledPath)) {
1488
+ copyFileSync(bundledPath, join4(dest, "index.js"));
1489
+ } else {
1490
+ copyDirRecursive(src, dest, true);
1491
+ const installCmd = isCommandAvailable("bun") ? "bun install --no-save" : "npm install --no-audit --no-fund";
1492
+ try {
1493
+ const output = execSync(installCmd, {
1494
+ cwd: dest,
1495
+ encoding: "utf-8",
1496
+ timeout: 60000
1497
+ });
1498
+ if (output)
1499
+ console.error(output);
1500
+ } catch (e2) {
1501
+ throw new Error(`MCP server "${item.name}" copiado pero ${installCmd} falló: ${e2.message}.
1502
+ ` + `Resolvé las dependencias manualmente:
1503
+ ` + ` cd .opencode/mcp/${item.name} && bun install`);
1504
+ }
1369
1505
  }
1506
+ upsertLockfile(paths, "mcpServers", item, manifest, treeHash);
1507
+ ensureMcpEntry(item.name, {
1508
+ type: "local",
1509
+ command: ["node", `.opencode/mcp/${item.name}/index.js`],
1510
+ enabled: true
1511
+ });
1370
1512
  }
1371
1513
  function findOpenCodeConfig(projectRoot) {
1372
1514
  const candidates = ["opencode.json", "opencode.jsonc"];
@@ -1378,7 +1520,7 @@ function findOpenCodeConfig(projectRoot) {
1378
1520
  return null;
1379
1521
  }
1380
1522
  function isMcpServerInstalled(name, paths) {
1381
- return existsSync3(join4(paths.root, "mcp", name, "index.js"));
1523
+ return existsSync3(join4(paths.mcp, name, "index.js"));
1382
1524
  }
1383
1525
  function isAgentInstalled(name, paths) {
1384
1526
  return existsSync3(join4(paths.agents, `${name}.md`));
@@ -1426,7 +1568,7 @@ function uninstallSkill(name, paths) {
1426
1568
  return true;
1427
1569
  }
1428
1570
  function uninstallMcpServer(name, paths) {
1429
- const dirPath = join4(paths.root, "mcp", name);
1571
+ const dirPath = join4(paths.mcp, name);
1430
1572
  try {
1431
1573
  if (existsSync3(dirPath)) {
1432
1574
  rmSync(dirPath, { recursive: true, force: true });
@@ -1437,18 +1579,17 @@ function uninstallMcpServer(name, paths) {
1437
1579
  const projectRoot = findProjectRoot();
1438
1580
  const configPath = findOpenCodeConfig(projectRoot);
1439
1581
  if (configPath) {
1440
- try {
1441
- const raw = readFileSync3(configPath, "utf-8");
1442
- const config = JSON.parse(raw);
1443
- if (config.mcp && config.mcp[name]) {
1444
- delete config.mcp[name];
1445
- if (Object.keys(config.mcp).length === 0) {
1582
+ const config = readOpenCodeConfig(configPath);
1583
+ if (config) {
1584
+ const mcp = config.mcp;
1585
+ if (mcp && mcp[name]) {
1586
+ delete mcp[name];
1587
+ if (Object.keys(mcp).length === 0) {
1446
1588
  delete config.mcp;
1447
1589
  }
1448
- writeFileSync3(configPath, JSON.stringify(config, null, 2) + `
1449
- `, "utf-8");
1590
+ writeOpenCodeConfig(configPath, config);
1450
1591
  }
1451
- } catch {}
1592
+ }
1452
1593
  }
1453
1594
  removeFromLockfile(paths.root, "mcpServers", name);
1454
1595
  return true;
@@ -1483,44 +1624,189 @@ function isCommandAvailable(cmd) {
1483
1624
  return false;
1484
1625
  }
1485
1626
  }
1486
- function installCodeGraph() {
1487
- if (!isCommandAvailable("codegraph")) {
1488
- try {
1489
- if (process.platform === "win32") {
1490
- execSync('powershell -c "irm https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.ps1 | iex"', { stdio: "inherit", timeout: 120000 });
1491
- } else {
1492
- execSync("curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh", { stdio: "inherit", timeout: 120000 });
1493
- }
1494
- if (!isCommandAvailable("codegraph")) {
1495
- return {
1496
- success: false,
1497
- message: "CodeGraph instalado pero no está en PATH. ¿Necesitás reiniciar la terminal?"
1498
- };
1627
+ function detectPlatformTarget() {
1628
+ const platform = process.platform;
1629
+ const arch = process.arch;
1630
+ let os;
1631
+ let cpu;
1632
+ if (platform === "darwin")
1633
+ os = "darwin";
1634
+ else if (platform === "linux")
1635
+ os = "linux";
1636
+ else if (platform === "win32")
1637
+ os = "win32";
1638
+ else
1639
+ return null;
1640
+ if (arch === "arm64")
1641
+ cpu = "arm64";
1642
+ else if (arch === "x64")
1643
+ cpu = "x64";
1644
+ else
1645
+ return null;
1646
+ return `${os}-${cpu}`;
1647
+ }
1648
+ function downloadToFile(url, dest, timeoutMs = 180000) {
1649
+ return new Promise((resolve2, reject) => {
1650
+ const file = createWriteStream(dest);
1651
+ const controller = new AbortController;
1652
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
1653
+ fetch(url, { signal: controller.signal, headers: { "User-Agent": "ostacky-installer" } }).then((res) => {
1654
+ if (!res.ok || !res.body) {
1655
+ reject(new Error(`HTTP ${res.status} ${res.statusText} descargando ${url}`));
1656
+ return;
1499
1657
  }
1658
+ const reader = res.body.getReader();
1659
+ const pump = ({ done, value }) => {
1660
+ if (done) {
1661
+ file.end();
1662
+ return Promise.resolve();
1663
+ }
1664
+ return new Promise((w2) => file.write(Buffer.from(value), () => w2())).then(() => reader.read().then(pump));
1665
+ };
1666
+ return reader.read().then(pump);
1667
+ }).then(() => {
1668
+ clearTimeout(timer);
1669
+ file.on("finish", () => resolve2());
1670
+ }).catch((err) => {
1671
+ clearTimeout(timer);
1672
+ file.destroy();
1673
+ try {
1674
+ unlinkSync(dest);
1675
+ } catch {}
1676
+ reject(err);
1677
+ });
1678
+ });
1679
+ }
1680
+ async function downloadAndExtract(url, destDir, stripComponents = 1, timeoutMs = 180000) {
1681
+ const tmp = join4(destDir, `.download-${Date.now()}`);
1682
+ if (!existsSync3(tmp))
1683
+ mkdirSync2(tmp, { recursive: true });
1684
+ const archivePath = join4(tmp, url.endsWith(".zip") ? "archive.zip" : "archive.tar.gz");
1685
+ try {
1686
+ await downloadToFile(url, archivePath, timeoutMs);
1687
+ if (!existsSync3(destDir))
1688
+ mkdirSync2(destDir, { recursive: true });
1689
+ if (process.platform === "win32" && url.endsWith(".zip")) {
1690
+ execSync(`powershell -NoProfile -Command "Expand-Archive -Path '${archivePath}' -DestinationPath '${destDir}' -Force"`, { stdio: "pipe", timeout: 60000 });
1691
+ } else {
1692
+ const stripArg = stripComponents > 0 ? `--strip-components=${stripComponents}` : "";
1693
+ execSync(`tar -xzf "${archivePath}" -C "${destDir}" ${stripArg}`, {
1694
+ stdio: "pipe",
1695
+ timeout: 60000
1696
+ });
1697
+ }
1698
+ } finally {
1699
+ try {
1700
+ rmSync(tmp, { recursive: true, force: true });
1701
+ } catch {}
1702
+ }
1703
+ }
1704
+ async function fetchLatestReleaseTag(repo) {
1705
+ try {
1706
+ const res = await fetch(`https://api.github.com/repos/${repo}/releases/latest`, {
1707
+ signal: AbortSignal.timeout(5000),
1708
+ headers: { "User-Agent": "ostacky-installer" }
1709
+ });
1710
+ if (res.ok) {
1711
+ const data = await res.json();
1712
+ return data.tag_name ?? null;
1713
+ }
1714
+ } catch {}
1715
+ try {
1716
+ const res = await fetch(`https://github.com/${repo}/releases/latest`, {
1717
+ redirect: "manual",
1718
+ signal: AbortSignal.timeout(5000),
1719
+ headers: { "User-Agent": "ostacky-installer" }
1720
+ });
1721
+ const loc = res.headers.get("location") ?? "";
1722
+ const m3 = loc.match(/releases\/tag\/(v[^/]+)$/);
1723
+ if (m3)
1724
+ return m3[1];
1725
+ } catch {}
1726
+ return null;
1727
+ }
1728
+ async function installCodeGraph(toolsDir) {
1729
+ const projectRoot = findProjectRoot();
1730
+ const cgToolDir = join4(toolsDir ?? join4(projectRoot, ".opencode", "tools"), "codegraph");
1731
+ if (!existsSync3(cgToolDir))
1732
+ mkdirSync2(cgToolDir, { recursive: true });
1733
+ const target = detectPlatformTarget();
1734
+ if (!target) {
1735
+ return {
1736
+ success: false,
1737
+ message: `Plataforma no soportada para descarga local: ${process.platform}/${process.arch}. Instalá CodeGraph manualmente.`
1738
+ };
1739
+ }
1740
+ const localBin = join4(cgToolDir, "bin", "codegraph");
1741
+ const localBinExe = localBin + (process.platform === "win32" ? ".exe" : "");
1742
+ if (existsSync3(localBinExe)) {
1743
+ try {
1744
+ execSync(`"${localBinExe}" --version`, { stdio: "pipe", timeout: 1e4 });
1745
+ } catch {
1746
+ try {
1747
+ rmSync(join4(cgToolDir, "bin"), { recursive: true, force: true });
1748
+ } catch {}
1749
+ }
1750
+ }
1751
+ if (!existsSync3(localBinExe)) {
1752
+ const tag = await fetchLatestReleaseTag("colbymchenry/codegraph");
1753
+ if (!tag) {
1754
+ return {
1755
+ success: false,
1756
+ message: "No se pudo obtener la última versión de CodeGraph desde GitHub."
1757
+ };
1758
+ }
1759
+ const ext = process.platform === "win32" ? "zip" : "tar.gz";
1760
+ const url = `https://github.com/colbymchenry/codegraph/releases/download/${tag}/codegraph-${target}.${ext}`;
1761
+ try {
1762
+ await downloadAndExtract(url, cgToolDir, 1, 180000);
1500
1763
  } catch (e2) {
1501
1764
  return {
1502
1765
  success: false,
1503
- message: `Error instalando CodeGraph: ${e2.message}`
1766
+ message: `Error descargando CodeGraph ${tag}: ${e2.message}`
1504
1767
  };
1505
1768
  }
1769
+ if (!existsSync3(localBinExe)) {
1770
+ return {
1771
+ success: false,
1772
+ message: `Descarga de CodeGraph ${tag} completada pero no se encontró el binario en ${localBinExe}.`
1773
+ };
1774
+ }
1775
+ if (process.platform !== "win32") {
1776
+ try {
1777
+ execSync(`chmod +x "${localBinExe}"`, { stdio: "pipe" });
1778
+ } catch {}
1779
+ }
1506
1780
  }
1507
1781
  try {
1508
- execSync("codegraph install --target=opencode --location=local --yes", {
1782
+ execSync(`"${localBinExe}" init -i`, { stdio: "pipe", timeout: 120000, cwd: projectRoot });
1783
+ } catch {}
1784
+ try {
1785
+ execSync(`"${localBinExe}" install --target opencode --location local --yes`, {
1509
1786
  stdio: "pipe",
1510
- timeout: 60000
1787
+ timeout: 30000,
1788
+ cwd: projectRoot
1511
1789
  });
1512
- execSync("codegraph init -i", { stdio: "pipe", timeout: 120000 });
1513
- return { success: true, message: "CodeGraph instalado y configurado para OpenCode" };
1514
- } catch (e2) {
1515
- return {
1516
- success: false,
1517
- message: `Error configurando CodeGraph: ${e2.message}`
1518
- };
1790
+ } catch {}
1791
+ const rootAgentsMd = join4(projectRoot, "AGENTS.md");
1792
+ if (existsSync3(rootAgentsMd)) {
1793
+ const dest = join4(cgToolDir, "AGENTS.md");
1794
+ try {
1795
+ copyFileSync(rootAgentsMd, dest);
1796
+ unlinkSync(rootAgentsMd);
1797
+ } catch {}
1519
1798
  }
1799
+ setMcpEntry("codegraph", {
1800
+ type: "local",
1801
+ command: [`.opencode/tools/codegraph/bin/codegraph`, "serve", "--mcp"],
1802
+ enabled: true
1803
+ });
1804
+ return { success: true, message: "CodeGraph instalado localmente en .opencode/tools/codegraph/ y configurado para OpenCode" };
1520
1805
  }
1521
1806
  function setupOpenSpec() {
1807
+ const npxCmd = isCommandAvailable("bun") ? "bunx" : "npx --yes";
1522
1808
  try {
1523
- execSync("npx --yes openspec init --tools opencode --force", {
1809
+ execSync(`${npxCmd} openspec init --tools opencode --force`, {
1524
1810
  stdio: "pipe",
1525
1811
  timeout: 120000
1526
1812
  });
@@ -1532,122 +1818,223 @@ function setupOpenSpec() {
1532
1818
  };
1533
1819
  }
1534
1820
  }
1535
- function installEngram() {
1536
- if (isCommandAvailable("engram")) {
1821
+ async function installEngram(toolsDir) {
1822
+ const projectRoot = findProjectRoot();
1823
+ const engramToolDir = join4(toolsDir ?? join4(projectRoot, ".opencode", "tools"), "engram");
1824
+ const engramBinDir = join4(engramToolDir, "bin");
1825
+ if (!existsSync3(engramBinDir))
1826
+ mkdirSync2(engramBinDir, { recursive: true });
1827
+ const target = detectPlatformTarget();
1828
+ if (!target) {
1829
+ return {
1830
+ success: false,
1831
+ message: `Plataforma no soportada para descarga local: ${process.platform}/${process.arch}. Instalá Engram manualmente.`
1832
+ };
1833
+ }
1834
+ const localBin = join4(engramBinDir, "engram" + (process.platform === "win32" ? ".exe" : ""));
1835
+ if (existsSync3(localBin)) {
1537
1836
  try {
1538
- execSync("engram setup opencode", { stdio: "pipe", timeout: 30000 });
1539
- return { success: true, message: "Engram ya instalado y configurado para OpenCode" };
1540
- } catch (e2) {
1837
+ execSync(`"${localBin}" --version`, { stdio: "pipe", timeout: 1e4 });
1838
+ } catch {
1839
+ try {
1840
+ unlinkSync(localBin);
1841
+ } catch {}
1842
+ }
1843
+ }
1844
+ if (!existsSync3(localBin)) {
1845
+ const tag = await fetchLatestReleaseTag("Gentleman-Programming/engram");
1846
+ if (!tag) {
1541
1847
  return {
1542
1848
  success: false,
1543
- message: `Error configurando Engram: ${e2.message}`
1849
+ message: "No se pudo obtener la última versión de Engram desde GitHub."
1544
1850
  };
1545
1851
  }
1546
- }
1547
- if (isCommandAvailable("go")) {
1852
+ const versionNum = tag.replace(/^v/, "");
1853
+ const [os, cpu] = target.split("-");
1854
+ const engramCpu = cpu === "x64" ? "amd64" : cpu;
1855
+ const ext = process.platform === "win32" ? "zip" : "tar.gz";
1856
+ const url = `https://github.com/Gentleman-Programming/engram/releases/download/${tag}/engram_${versionNum}_${os}_${engramCpu}.${ext}`;
1548
1857
  try {
1549
- execSync("go install github.com/Gentleman-Programming/engram/cmd/engram@latest", { stdio: "pipe", timeout: 120000 });
1550
- if (isCommandAvailable("engram")) {
1551
- execSync("engram setup opencode", { stdio: "pipe", timeout: 30000 });
1552
- return { success: true, message: "Engram instalado via go install y configurado" };
1858
+ await downloadAndExtract(url, engramToolDir, 0, 120000);
1859
+ } catch (e2) {
1860
+ return {
1861
+ success: false,
1862
+ message: `Error descargando Engram ${tag}: ${e2.message}`
1863
+ };
1864
+ }
1865
+ const extractedBin = join4(engramToolDir, "engram" + (process.platform === "win32" ? ".exe" : ""));
1866
+ if (existsSync3(extractedBin) && extractedBin !== localBin) {
1867
+ try {
1868
+ copyFileSync(extractedBin, localBin);
1869
+ unlinkSync(extractedBin);
1870
+ } catch {}
1871
+ }
1872
+ if (!existsSync3(localBin)) {
1873
+ const found = findBinaryInDir(engramToolDir, "engram");
1874
+ if (found && found !== localBin) {
1875
+ try {
1876
+ copyFileSync(found, localBin);
1877
+ if (process.platform !== "win32")
1878
+ execSync(`chmod +x "${localBin}"`, { stdio: "pipe" });
1879
+ } catch {}
1553
1880
  }
1554
- } catch {}
1881
+ }
1882
+ if (!existsSync3(localBin)) {
1883
+ return {
1884
+ success: false,
1885
+ message: `Descarga de Engram ${tag} completada pero no se encontró el binario en ${localBin}.`
1886
+ };
1887
+ }
1888
+ if (process.platform !== "win32") {
1889
+ try {
1890
+ execSync(`chmod +x "${localBin}"`, { stdio: "pipe" });
1891
+ } catch {}
1892
+ }
1555
1893
  }
1556
- if (isCommandAvailable("brew") && (process.platform === "darwin" || process.platform === "linux")) {
1557
- try {
1558
- execSync("brew install gentleman-programming/tap/engram", {
1559
- stdio: "pipe",
1560
- timeout: 120000
1561
- });
1562
- if (isCommandAvailable("engram")) {
1563
- execSync("engram setup opencode", { stdio: "pipe", timeout: 30000 });
1564
- return { success: true, message: "Engram instalado via Homebrew y configurado" };
1565
- }
1566
- } catch {}
1894
+ setMcpEntry("engram", {
1895
+ type: "local",
1896
+ command: [`.opencode/tools/engram/bin/engram`, "mcp"],
1897
+ enabled: true
1898
+ });
1899
+ try {
1900
+ execSync(`"${localBin}" setup opencode`, { stdio: "pipe", timeout: 30000 });
1901
+ } catch {}
1902
+ return { success: true, message: "Engram instalado localmente en .opencode/tools/engram/bin/ y configurado para OpenCode (MCP + plugin)" };
1903
+ }
1904
+ function findBinaryInDir(dir, name) {
1905
+ const entries = readdirSync(dir);
1906
+ for (const entry of entries) {
1907
+ const full = join4(dir, entry);
1908
+ const stat = statSync(full);
1909
+ if (stat.isDirectory()) {
1910
+ const found = findBinaryInDir(full, name);
1911
+ if (found)
1912
+ return found;
1913
+ } else if (entry === name || entry === name + ".exe") {
1914
+ return full;
1915
+ }
1567
1916
  }
1568
- return {
1569
- success: false,
1570
- message: `No se pudo instalar Engram automáticamente.
1571
- ` + ` - Tenés Go? Ejecutá: go install github.com/Gentleman-Programming/engram/cmd/engram@latest
1572
- ` + ` - O descargá el binario: https://github.com/Gentleman-Programming/engram/releases
1573
- ` + " - Después ejecutá: engram setup opencode"
1574
- };
1917
+ return null;
1575
1918
  }
1576
- function patchOpenCodeConfig() {
1919
+ function setupContext7(toolsDir) {
1577
1920
  const projectRoot = findProjectRoot();
1578
- const candidates = ["opencode.json", "opencode.jsonc"];
1579
- let configPath = null;
1580
- for (const name of candidates) {
1581
- const full = join4(projectRoot, name);
1582
- if (existsSync3(full)) {
1583
- configPath = full;
1584
- break;
1585
- }
1921
+ const ctx7ToolDir = join4(toolsDir ?? join4(projectRoot, ".opencode", "tools"), "context7");
1922
+ if (!existsSync3(ctx7ToolDir))
1923
+ mkdirSync2(ctx7ToolDir, { recursive: true });
1924
+ ensureMcpEntry("context7", {
1925
+ type: "remote",
1926
+ url: "https://mcp.context7.com/mcp",
1927
+ enabled: true
1928
+ });
1929
+ const npxCmd = isCommandAvailable("bun") ? "bunx" : "npx --yes";
1930
+ try {
1931
+ execSync(`${npxCmd} ctx7 setup --opencode`, {
1932
+ stdio: "pipe",
1933
+ timeout: 60000
1934
+ });
1935
+ return { success: true, message: "Context7 configurado (MCP + skill instalado)" };
1936
+ } catch {
1937
+ return {
1938
+ success: true,
1939
+ message: "Context7 MCP registrado (skill opcional no instalada — corrí `npx ctx7 setup --opencode` manualmente si la querés)"
1940
+ };
1586
1941
  }
1942
+ }
1943
+ function patchOpenCodeConfig() {
1944
+ const projectRoot = findProjectRoot();
1945
+ const configPath = findOpenCodeConfig(projectRoot);
1587
1946
  if (!configPath) {
1588
1947
  return {
1589
1948
  success: false,
1590
1949
  message: "No se encontró opencode.json ni opencode.jsonc"
1591
1950
  };
1592
1951
  }
1593
- try {
1594
- const raw = readFileSync3(configPath, "utf-8");
1595
- const config = JSON.parse(raw);
1596
- let changed = false;
1597
- if ("plugin" in config) {
1598
- delete config.plugin;
1599
- changed = true;
1600
- }
1601
- if (changed) {
1602
- writeFileSync3(configPath, JSON.stringify(config, null, 2) + `
1603
- `, "utf-8");
1604
- return { success: true, message: "Config actualizada (plugin legacy eliminado)" };
1605
- }
1606
- return { success: true, message: "Config de OpenCode ya está limpia" };
1607
- } catch (e2) {
1952
+ const config = readOpenCodeConfig(configPath);
1953
+ if (!config) {
1608
1954
  return {
1609
1955
  success: false,
1610
- message: `Error parcheando config: ${e2.message}`
1956
+ message: `Error parseando ${configPath}`
1611
1957
  };
1612
1958
  }
1959
+ let changed = false;
1960
+ if ("plugin" in config) {
1961
+ delete config.plugin;
1962
+ changed = true;
1963
+ }
1964
+ if (changed) {
1965
+ writeOpenCodeConfig(configPath, config);
1966
+ return { success: true, message: "Config actualizada (plugin legacy eliminado)" };
1967
+ }
1968
+ return { success: true, message: "Config de OpenCode ya está limpia" };
1613
1969
  }
1614
1970
  function uninstallEngramConfig() {
1615
1971
  const projectRoot = findProjectRoot();
1616
- const candidates = ["opencode.json", "opencode.jsonc"];
1617
- let configPath = null;
1618
- for (const name of candidates) {
1619
- const full = join4(projectRoot, name);
1620
- if (existsSync3(full)) {
1621
- configPath = full;
1622
- break;
1623
- }
1624
- }
1972
+ const configPath = findOpenCodeConfig(projectRoot);
1625
1973
  if (!configPath) {
1626
1974
  return { success: false, message: "No se encontró opencode.json ni opencode.jsonc" };
1627
1975
  }
1628
- try {
1629
- const raw = readFileSync3(configPath, "utf-8");
1630
- const config = JSON.parse(raw);
1631
- let changed = false;
1632
- if (config.mcp && "engram" in config.mcp) {
1633
- delete config.mcp.engram;
1634
- if (Object.keys(config.mcp).length === 0) {
1635
- delete config.mcp;
1636
- }
1637
- changed = true;
1638
- }
1639
- if (!changed) {
1640
- return { success: true, message: "Engram no estaba configurado en este proyecto" };
1976
+ const config = readOpenCodeConfig(configPath);
1977
+ if (!config) {
1978
+ return { success: false, message: `Error parseando ${configPath}` };
1979
+ }
1980
+ const mcp = config.mcp;
1981
+ if (mcp && "engram" in mcp) {
1982
+ delete mcp.engram;
1983
+ if (Object.keys(mcp).length === 0) {
1984
+ delete config.mcp;
1641
1985
  }
1642
- writeFileSync3(configPath, JSON.stringify(config, null, 2) + `
1643
- `, "utf-8");
1986
+ writeOpenCodeConfig(configPath, config);
1644
1987
  return { success: true, message: "Config de Engram eliminada de opencode.json" };
1645
- } catch (e2) {
1646
- return {
1647
- success: false,
1648
- message: `Error limpiando config de Engram: ${e2.message}`
1649
- };
1650
1988
  }
1989
+ return { success: true, message: "Engram no estaba configurado en este proyecto" };
1990
+ }
1991
+ function uninstallStackConfig(paths) {
1992
+ const projectRoot = findProjectRoot();
1993
+ const removed = [];
1994
+ const configPath = findOpenCodeConfig(projectRoot);
1995
+ if (configPath) {
1996
+ const config = readOpenCodeConfig(configPath);
1997
+ if (config) {
1998
+ const mcp = config.mcp;
1999
+ let changed = false;
2000
+ if (mcp) {
2001
+ for (const name of ["codegraph", "context7", "engram"]) {
2002
+ if (name in mcp) {
2003
+ delete mcp[name];
2004
+ removed.push(`mcp.${name}`);
2005
+ changed = true;
2006
+ }
2007
+ }
2008
+ if (Object.keys(mcp).length === 0) {
2009
+ delete config.mcp;
2010
+ changed = true;
2011
+ }
2012
+ }
2013
+ if (changed) {
2014
+ writeOpenCodeConfig(configPath, config);
2015
+ }
2016
+ }
2017
+ }
2018
+ const codegraphDir = join4(projectRoot, ".codegraph");
2019
+ if (existsSync3(codegraphDir)) {
2020
+ try {
2021
+ rmSync(codegraphDir, { recursive: true, force: true });
2022
+ removed.push(".codegraph/");
2023
+ } catch {}
2024
+ }
2025
+ if (existsSync3(paths.tools)) {
2026
+ try {
2027
+ rmSync(paths.tools, { recursive: true, force: true });
2028
+ removed.push(".opencode/tools/");
2029
+ } catch {}
2030
+ }
2031
+ if (removed.length === 0) {
2032
+ return { success: true, message: "No había configuración del stack para remover" };
2033
+ }
2034
+ return {
2035
+ success: true,
2036
+ message: `Removido: ${removed.join(", ")}. Los binarios globales (codegraph, engram) no se tocaron.`
2037
+ };
1651
2038
  }
1652
2039
 
1653
2040
  // src/prompts.ts
@@ -1686,11 +2073,11 @@ function printPostInstallSteps() {
1686
2073
  ].join(`
1687
2074
  `), "Próximos pasos");
1688
2075
  }
1689
- async function doInstallStack() {
2076
+ async function doInstallStack(toolsDir) {
1690
2077
  const spin = L2();
1691
2078
  let allOk = true;
1692
2079
  spin.start("Instalando CodeGraph...");
1693
- const cg = installCodeGraph();
2080
+ const cg = await installCodeGraph(toolsDir);
1694
2081
  spin.stop(cg.success ? `✓ ${cg.message}` : `✗ ${cg.message}`);
1695
2082
  if (!cg.success)
1696
2083
  allOk = false;
@@ -1700,10 +2087,15 @@ async function doInstallStack() {
1700
2087
  if (!os.success)
1701
2088
  allOk = false;
1702
2089
  spin.start("Instalando Engram...");
1703
- const eng = installEngram();
2090
+ const eng = await installEngram(toolsDir);
1704
2091
  spin.stop(eng.success ? `✓ ${eng.message}` : `✗ ${eng.message}`);
1705
2092
  if (!eng.success)
1706
2093
  allOk = false;
2094
+ spin.start("Configurando Context7...");
2095
+ const ctx = setupContext7(toolsDir);
2096
+ spin.stop(ctx.success ? `✓ ${ctx.message}` : `✗ ${ctx.message}`);
2097
+ if (!ctx.success)
2098
+ allOk = false;
1707
2099
  spin.start("Verificando configuración...");
1708
2100
  const cfg = patchOpenCodeConfig();
1709
2101
  spin.stop(cfg.success ? `✓ ${cfg.message}` : `✗ ${cfg.message}`);
@@ -1788,6 +2180,7 @@ function kindLabel(type) {
1788
2180
  async function doInstallAll(manifest, paths) {
1789
2181
  const spin = L2();
1790
2182
  let errors = 0;
2183
+ ensureToolDirs(paths.tools, ["codegraph", "engram", "context7"]);
1791
2184
  for (const agent of manifest.agents) {
1792
2185
  spin.start(`Descargando agente: ${agent.name} (${agent.version})`);
1793
2186
  try {
@@ -1828,14 +2221,14 @@ async function doInstallAll(manifest, paths) {
1828
2221
  errors++;
1829
2222
  }
1830
2223
  }
1831
- if (errors === 0) {
1832
- v2.info("Instalando stack de herramientas...");
1833
- await doInstallStack();
1834
- }
2224
+ v2.info("Instalando stack de herramientas...");
2225
+ await doInstallStack(paths.tools);
1835
2226
  const missingTools = [];
1836
- if (!isCommandAvailable("codegraph"))
2227
+ const codegraphBin = join5(paths.tools, "codegraph", "bin", "codegraph");
2228
+ const engramBin = join5(paths.tools, "engram", "bin", "engram");
2229
+ if (!existsSync4(codegraphBin))
1837
2230
  missingTools.push("CodeGraph");
1838
- if (!isCommandAvailable("engram"))
2231
+ if (!existsSync4(engramBin))
1839
2232
  missingTools.push("Engram");
1840
2233
  if (missingTools.length > 0) {
1841
2234
  v2.warn(`Faltan herramientas del stack: ${missingTools.join(", ")}.
@@ -1926,6 +2319,35 @@ async function doAddSkill(manifest, paths) {
1926
2319
  }
1927
2320
  }
1928
2321
  }
2322
+ async function doAddMcp(manifest, paths) {
2323
+ const lockfile = readLockfile(paths.root);
2324
+ const options = (manifest.mcpServers ?? []).map((m3) => {
2325
+ const installed = getInstalledVersion(lockfile, "mcpServers", m3.name);
2326
+ const hint = installed ? `v${installed} instalado — ${m3.description}` : m3.description;
2327
+ return { value: m3.name, label: `${m3.name} (v${m3.version})`, hint };
2328
+ });
2329
+ if (options.length === 0) {
2330
+ v2.info("No hay MCP servers disponibles en el manifest.");
2331
+ return;
2332
+ }
2333
+ const selected = await pe({
2334
+ message: "¿Qué MCP servers deseas instalar?",
2335
+ options,
2336
+ required: true
2337
+ });
2338
+ onCancel(selected);
2339
+ const spin = L2();
2340
+ for (const name of selected) {
2341
+ const item = manifest.mcpServers.find((m3) => m3.name === name);
2342
+ spin.start(`Instalando MCP server: ${name} (${item.version})`);
2343
+ try {
2344
+ await installMcpServer(item, manifest, paths);
2345
+ spin.stop(`MCP server instalado: ${name} (${item.version})`);
2346
+ } catch (e2) {
2347
+ spin.stop(`Error: ${e2.message}`);
2348
+ }
2349
+ }
2350
+ }
1929
2351
  async function doUpdate(manifest, paths) {
1930
2352
  const candidates = getUpdateCandidates(manifest, paths);
1931
2353
  if (candidates.length === 0) {
@@ -1983,6 +2405,8 @@ async function runInteractiveMenu() {
1983
2405
  { value: "agent", label: "Instalar agente" },
1984
2406
  { value: "command", label: "Instalar command" },
1985
2407
  { value: "skill", label: "Instalar skill" },
2408
+ { value: "mcp", label: "Instalar MCP server" },
2409
+ { value: "stack", label: "Instalar stack de herramientas (CodeGraph, Engram, Context7)" },
1986
2410
  { value: "update", label: "Actualizar instalación" },
1987
2411
  { value: "uninstall", label: "Desinstalar" },
1988
2412
  { value: "exit", label: "Salir" }
@@ -2010,6 +2434,17 @@ async function runInteractiveMenu() {
2010
2434
  printPostInstallSteps();
2011
2435
  fe("Listo.");
2012
2436
  break;
2437
+ case "mcp":
2438
+ await doAddMcp(manifest, paths);
2439
+ printPostInstallSteps();
2440
+ fe("Listo.");
2441
+ break;
2442
+ case "stack": {
2443
+ ensureToolDirs(paths.tools, ["codegraph", "engram", "context7"]);
2444
+ await doInstallStack(paths.tools);
2445
+ fe("Listo.");
2446
+ break;
2447
+ }
2013
2448
  case "update": {
2014
2449
  const latestManifest = await loadLatestManifest();
2015
2450
  await doUpdate(latestManifest, paths);
@@ -2073,6 +2508,52 @@ async function runAddSkillCommand() {
2073
2508
  printPostInstallSteps();
2074
2509
  fe("Listo.");
2075
2510
  }
2511
+ async function runAddMcpCommand() {
2512
+ we(" OpenCode Installer ");
2513
+ const manifest = await loadManifest();
2514
+ const paths = await resolveOpenCodePaths();
2515
+ if (!paths) {
2516
+ fe("Cancelado.");
2517
+ return;
2518
+ }
2519
+ await doAddMcp(manifest, paths);
2520
+ printPostInstallSteps();
2521
+ fe("Listo.");
2522
+ }
2523
+ async function runInstallStackCommand() {
2524
+ we(" OpenCode Installer — Stack ");
2525
+ const paths = await resolveOpenCodePaths();
2526
+ if (!paths) {
2527
+ fe("Cancelado.");
2528
+ return;
2529
+ }
2530
+ ensureToolDirs(paths.tools, ["codegraph", "engram", "context7"]);
2531
+ await doInstallStack(paths.tools);
2532
+ fe("Stack instalado.");
2533
+ }
2534
+ async function runUninstallStackCommand() {
2535
+ we(" OpenCode Installer — Stack ");
2536
+ const paths = await resolveOpenCodePaths();
2537
+ if (!paths) {
2538
+ fe("Cancelado.");
2539
+ return;
2540
+ }
2541
+ const confirm = await me({
2542
+ message: "¿Remover la configuración del stack (CodeGraph, Engram, Context7) del proyecto? Los binarios globales no se tocan."
2543
+ });
2544
+ onCancel(confirm);
2545
+ if (!confirm) {
2546
+ fe("Cancelado.");
2547
+ return;
2548
+ }
2549
+ const result = uninstallStackConfig(paths);
2550
+ if (result.success) {
2551
+ v2.success(result.message);
2552
+ } else {
2553
+ v2.warn(result.message);
2554
+ }
2555
+ fe("Stack desinstalado.");
2556
+ }
2076
2557
  async function runUpdateCommand() {
2077
2558
  we(" OpenCode Installer ");
2078
2559
  const manifest = await loadLatestManifest();
@@ -2101,7 +2582,7 @@ async function doUninstallTotal(paths) {
2101
2582
  pathsToDelete.push(join5(paths.skills, name));
2102
2583
  }
2103
2584
  for (const name of Object.keys(lockfile.mcpServers ?? {})) {
2104
- pathsToDelete.push(join5(paths.root, "mcp", name));
2585
+ pathsToDelete.push(join5(paths.mcp, name));
2105
2586
  }
2106
2587
  ye(pathsToDelete.join(`
2107
2588
  `), `Se eliminarán ${pathsToDelete.length} archivo(s) / directorio(s)`);
@@ -2221,14 +2702,46 @@ async function doUninstallSkill(paths) {
2221
2702
  }
2222
2703
  }
2223
2704
  }
2705
+ async function doUninstallMcp(paths) {
2706
+ const lockfile = readLockfile(paths.root);
2707
+ if (!lockfile) {
2708
+ v2.warn("No hay instalación registrada.");
2709
+ return;
2710
+ }
2711
+ const installed = Object.keys(lockfile.mcpServers ?? {});
2712
+ if (installed.length === 0) {
2713
+ v2.info("No hay MCP servers instalados.");
2714
+ return;
2715
+ }
2716
+ const options = installed.map((name) => ({
2717
+ value: name,
2718
+ label: name,
2719
+ hint: `v${lockfile.mcpServers[name].version}`
2720
+ }));
2721
+ const selected = await pe({
2722
+ message: "¿Qué MCP servers querés desinstalar?",
2723
+ options,
2724
+ required: true
2725
+ });
2726
+ onCancel(selected);
2727
+ for (const name of selected) {
2728
+ const ok = uninstallMcpServer(name, paths);
2729
+ if (ok) {
2730
+ v2.success(`MCP server eliminado: ${name}`);
2731
+ } else {
2732
+ v2.warn(`No se pudo eliminar el MCP server: ${name}`);
2733
+ }
2734
+ }
2735
+ }
2224
2736
  async function doUninstall(paths) {
2225
2737
  const scope = await de({
2226
2738
  message: "¿Qué querés desinstalar?",
2227
2739
  options: [
2228
- { value: "all", label: "Todo (agentes + commands + skills)" },
2740
+ { value: "all", label: "Todo (agentes + commands + skills + MCPs)" },
2229
2741
  { value: "agent", label: "Solo un agente" },
2230
2742
  { value: "command", label: "Solo un command" },
2231
- { value: "skill", label: "Solo una skill" }
2743
+ { value: "skill", label: "Solo una skill" },
2744
+ { value: "mcp", label: "Solo un MCP server" }
2232
2745
  ]
2233
2746
  });
2234
2747
  onCancel(scope);
@@ -2245,6 +2758,9 @@ async function doUninstall(paths) {
2245
2758
  case "skill":
2246
2759
  await doUninstallSkill(paths);
2247
2760
  break;
2761
+ case "mcp":
2762
+ await doUninstallMcp(paths);
2763
+ break;
2248
2764
  }
2249
2765
  }
2250
2766
  async function runUninstallCommand() {
@@ -2371,22 +2887,64 @@ async function runUninstallSkillCommand(name) {
2371
2887
  }
2372
2888
  fe("Listo.");
2373
2889
  }
2890
+ async function runUninstallMcpCommand(name) {
2891
+ we(" OpenCode Installer ");
2892
+ const paths = await resolveOpenCodePaths();
2893
+ if (!paths) {
2894
+ fe("Cancelado.");
2895
+ return;
2896
+ }
2897
+ if (name) {
2898
+ try {
2899
+ validateFilePath(name);
2900
+ } catch (e2) {
2901
+ v2.warn(`Nombre inválido: ${e2.message}`);
2902
+ return;
2903
+ }
2904
+ const lockfile = readLockfile(paths.root);
2905
+ if (!lockfile || !lockfile.mcpServers || !(name in lockfile.mcpServers)) {
2906
+ v2.warn(`${name} no está instalado.`);
2907
+ return;
2908
+ }
2909
+ const dirPath = join5(paths.mcp, name);
2910
+ ye(dirPath, `Se eliminará`);
2911
+ const confirm = await me({ message: `¿Borrar el MCP server "${name}"?` });
2912
+ onCancel(confirm);
2913
+ if (!confirm) {
2914
+ v2.info("Cancelado.");
2915
+ return;
2916
+ }
2917
+ const ok = uninstallMcpServer(name, paths);
2918
+ if (ok) {
2919
+ v2.success(`MCP server eliminado: ${name}`);
2920
+ } else {
2921
+ v2.warn(`No se pudo eliminar el MCP server: ${name}`);
2922
+ }
2923
+ } else {
2924
+ await doUninstallMcp(paths);
2925
+ }
2926
+ fe("Listo.");
2927
+ }
2374
2928
 
2375
2929
  // src/cli.ts
2376
2930
  var HELP = `
2377
- ostacky — Instalador de agentes, comandos y skills para OpenCode
2931
+ ostacky — Instalador de agentes, comandos, skills y MCPs para OpenCode
2378
2932
 
2379
2933
  Uso:
2380
2934
  npx ostacky Menú interactivo (instalación completa)
2381
- npx ostacky install Instalar TODO (agente + skills + CodeGraph + OpenSpec + Engram)
2935
+ npx ostacky install Instalar TODO (agente + skills + MCPs + CodeGraph + OpenSpec + Engram + Context7)
2382
2936
  npx ostacky add agent Agregar agente(s)
2383
2937
  npx ostacky add command Agregar command(s)
2384
2938
  npx ostacky add skill Agregar skill(s)
2939
+ npx ostacky add mcp Agregar MCP server(s)
2940
+ npx ostacky install-stack Instalar solo el stack de herramientas (CodeGraph, OpenSpec, Engram, Context7)
2941
+ npx ostacky uninstall-stack Remover la configuración del stack del proyecto
2385
2942
  npx ostacky update Actualizar instalación
2386
2943
  npx ostacky uninstall Desinstalar todo
2387
2944
  npx ostacky uninstall agent Desinstalar agente(s)
2388
2945
  npx ostacky uninstall command Desinstalar command(s)
2389
2946
  npx ostacky uninstall skill Desinstalar skill(s)
2947
+ npx ostacky uninstall mcp Desinstalar MCP server(s)
2390
2948
  npx ostacky --help Mostrar esta ayuda
2391
2949
  npx ostacky --version Mostrar versión
2392
2950
  `.trim();
@@ -2396,6 +2954,12 @@ async function main() {
2396
2954
  case "install":
2397
2955
  await runInstallCommand();
2398
2956
  break;
2957
+ case "install-stack":
2958
+ await runInstallStackCommand();
2959
+ break;
2960
+ case "uninstall-stack":
2961
+ await runUninstallStackCommand();
2962
+ break;
2399
2963
  case "add":
2400
2964
  if (subcmd === "agent") {
2401
2965
  await runAddAgentCommand();
@@ -2403,8 +2967,10 @@ async function main() {
2403
2967
  await runAddCommandCommand();
2404
2968
  } else if (subcmd === "skill") {
2405
2969
  await runAddSkillCommand();
2970
+ } else if (subcmd === "mcp") {
2971
+ await runAddMcpCommand();
2406
2972
  } else {
2407
- console.error(`Tipo desconocido: "${subcmd}". Usa 'agent', 'command' o 'skill'.`);
2973
+ console.error(`Tipo desconocido: "${subcmd}". Usa 'agent', 'command', 'skill' o 'mcp'.`);
2408
2974
  process.exit(1);
2409
2975
  }
2410
2976
  break;
@@ -2421,10 +2987,13 @@ async function main() {
2421
2987
  } else if (subcmd === "skill") {
2422
2988
  const name = process.argv[4];
2423
2989
  await runUninstallSkillCommand(name);
2990
+ } else if (subcmd === "mcp") {
2991
+ const name = process.argv[4];
2992
+ await runUninstallMcpCommand(name);
2424
2993
  } else if (subcmd === undefined) {
2425
2994
  await runUninstallCommand();
2426
2995
  } else {
2427
- console.error(`Subcomando desconocido: "${subcmd}". Usa 'agent', 'command', 'skill' o nada.`);
2996
+ console.error(`Subcomando desconocido: "${subcmd}". Usa 'agent', 'command', 'skill', 'mcp' o nada.`);
2428
2997
  process.exit(1);
2429
2998
  }
2430
2999
  break;