specli 0.0.11 → 0.0.13

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 (335) hide show
  1. package/README.md +216 -325
  2. package/bin/cli.sh +27 -0
  3. package/dist/{src/ai → ai}/tools.d.ts +0 -1
  4. package/dist/ai/tools.js +161 -0
  5. package/dist/ai/tools.test.d.ts +1 -0
  6. package/dist/ai/tools.test.js +56 -0
  7. package/dist/{src/cli → cli}/auth-requirements.d.ts +0 -1
  8. package/dist/cli/auth-requirements.js +65 -0
  9. package/dist/cli/auth-requirements.test.d.ts +1 -0
  10. package/dist/cli/auth-requirements.test.js +16 -0
  11. package/dist/{src/cli → cli}/auth-schemes.d.ts +0 -1
  12. package/dist/cli/auth-schemes.js +112 -0
  13. package/dist/cli/auth-schemes.test.d.ts +1 -0
  14. package/dist/cli/auth-schemes.test.js +56 -0
  15. package/dist/{src/cli → cli}/capabilities.d.ts +0 -1
  16. package/dist/cli/capabilities.js +41 -0
  17. package/dist/cli/capabilities.test.d.ts +1 -0
  18. package/dist/cli/capabilities.test.js +84 -0
  19. package/dist/{src/cli → cli}/command-id.d.ts +0 -1
  20. package/dist/cli/command-id.js +8 -0
  21. package/dist/cli/command-id.test.d.ts +1 -0
  22. package/dist/cli/command-id.test.js +27 -0
  23. package/dist/{src/cli → cli}/command-index.d.ts +0 -1
  24. package/dist/cli/command-index.js +9 -0
  25. package/dist/{src/cli → cli}/command-model.d.ts +0 -1
  26. package/dist/cli/command-model.js +53 -0
  27. package/dist/cli/command-model.test.d.ts +1 -0
  28. package/dist/cli/command-model.test.js +40 -0
  29. package/dist/{src/cli → cli}/compile.d.ts +0 -1
  30. package/dist/cli/compile.js +79 -0
  31. package/dist/{src/cli → cli}/crypto.d.ts +0 -1
  32. package/dist/cli/crypto.js +9 -0
  33. package/dist/{src/cli → cli}/derive-name.d.ts +0 -1
  34. package/dist/cli/derive-name.js +96 -0
  35. package/dist/{src/cli → cli}/exec.d.ts +0 -1
  36. package/dist/cli/exec.js +50 -0
  37. package/dist/{src/cli → cli}/main.d.ts +0 -1
  38. package/dist/cli/main.js +177 -0
  39. package/dist/{src/cli → cli}/naming.d.ts +0 -1
  40. package/dist/cli/naming.js +191 -0
  41. package/dist/cli/naming.test.d.ts +1 -0
  42. package/dist/cli/naming.test.js +75 -0
  43. package/dist/{src/cli → cli}/operations.d.ts +0 -1
  44. package/dist/cli/operations.js +100 -0
  45. package/dist/cli/operations.test.d.ts +1 -0
  46. package/dist/cli/operations.test.js +51 -0
  47. package/dist/{src/cli → cli}/params.d.ts +0 -1
  48. package/dist/cli/params.js +36 -0
  49. package/dist/cli/params.test.d.ts +1 -0
  50. package/dist/cli/params.test.js +62 -0
  51. package/dist/{src/cli → cli}/pluralize.d.ts +0 -1
  52. package/dist/cli/pluralize.js +38 -0
  53. package/dist/{src/cli → cli}/positional.d.ts +0 -1
  54. package/dist/cli/positional.js +35 -0
  55. package/dist/cli/positional.test.d.ts +1 -0
  56. package/dist/cli/positional.test.js +60 -0
  57. package/dist/{src/cli → cli}/request-body.d.ts +0 -1
  58. package/dist/cli/request-body.js +44 -0
  59. package/dist/cli/request-body.test.d.ts +1 -0
  60. package/dist/cli/request-body.test.js +31 -0
  61. package/dist/{src/cli → cli}/runtime/argv.d.ts +0 -1
  62. package/dist/cli/runtime/argv.js +15 -0
  63. package/dist/{src/cli → cli}/runtime/auth/resolve.d.ts +0 -1
  64. package/dist/cli/runtime/auth/resolve.js +39 -0
  65. package/dist/{src/cli → cli}/runtime/body-flags.d.ts +0 -1
  66. package/dist/cli/runtime/body-flags.js +117 -0
  67. package/dist/cli/runtime/body-flags.test.d.ts +1 -0
  68. package/dist/cli/runtime/body-flags.test.js +192 -0
  69. package/dist/{src/cli → cli}/runtime/body.d.ts +0 -1
  70. package/dist/cli/runtime/body.js +16 -0
  71. package/dist/{src/cli → cli}/runtime/collect.d.ts +0 -1
  72. package/dist/cli/runtime/collect.js +3 -0
  73. package/dist/{src/cli → cli}/runtime/compat.d.ts +0 -1
  74. package/dist/cli/runtime/compat.js +78 -0
  75. package/dist/{src/cli → cli}/runtime/context.d.ts +0 -1
  76. package/dist/cli/runtime/context.js +44 -0
  77. package/dist/{src/cli → cli}/runtime/execute.d.ts +0 -1
  78. package/dist/cli/runtime/execute.js +106 -0
  79. package/dist/{src/cli → cli}/runtime/generated.d.ts +0 -1
  80. package/dist/cli/runtime/generated.js +168 -0
  81. package/dist/{src/cli → cli}/runtime/headers.d.ts +0 -1
  82. package/dist/cli/runtime/headers.js +30 -0
  83. package/dist/{src/cli → cli}/runtime/index.d.ts +0 -1
  84. package/dist/cli/runtime/index.js +3 -0
  85. package/dist/{src/cli → cli}/runtime/profile/secrets.d.ts +0 -1
  86. package/dist/cli/runtime/profile/secrets.js +53 -0
  87. package/dist/{src/cli → cli}/runtime/profile/store.d.ts +0 -1
  88. package/dist/cli/runtime/profile/store.js +63 -0
  89. package/dist/{src/cli → cli}/runtime/request.d.ts +0 -1
  90. package/dist/cli/runtime/request.js +283 -0
  91. package/dist/cli/runtime/request.test.d.ts +1 -0
  92. package/dist/cli/runtime/request.test.js +332 -0
  93. package/dist/{src/cli → cli}/runtime/server-url.d.ts +0 -1
  94. package/dist/cli/runtime/server-url.js +28 -0
  95. package/dist/{src/cli → cli}/runtime/template.d.ts +0 -1
  96. package/dist/cli/runtime/template.js +22 -0
  97. package/dist/cli/runtime/validate/ajv.d.ts +2 -0
  98. package/dist/cli/runtime/validate/ajv.js +11 -0
  99. package/dist/{src/cli → cli}/runtime/validate/coerce.d.ts +0 -1
  100. package/dist/cli/runtime/validate/coerce.js +63 -0
  101. package/dist/cli/runtime/validate/coerce.test.d.ts +1 -0
  102. package/dist/cli/runtime/validate/coerce.test.js +75 -0
  103. package/dist/{src/cli → cli}/runtime/validate/error.d.ts +0 -1
  104. package/dist/cli/runtime/validate/error.js +19 -0
  105. package/dist/{src/cli → cli}/runtime/validate/index.d.ts +0 -1
  106. package/dist/cli/runtime/validate/index.js +4 -0
  107. package/dist/{src/cli → cli}/runtime/validate/schema.d.ts +0 -1
  108. package/dist/cli/runtime/validate/schema.js +38 -0
  109. package/dist/{src/cli → cli}/schema-shape.d.ts +0 -1
  110. package/dist/cli/schema-shape.js +34 -0
  111. package/dist/{src/cli → cli}/schema.d.ts +0 -1
  112. package/dist/cli/schema.js +31 -0
  113. package/dist/{src/cli → cli}/server.d.ts +0 -1
  114. package/dist/cli/server.js +130 -0
  115. package/dist/cli/server.test.d.ts +1 -0
  116. package/dist/cli/server.test.js +49 -0
  117. package/dist/{src/cli → cli}/spec-id.d.ts +0 -1
  118. package/dist/cli/spec-id.js +8 -0
  119. package/dist/{src/cli → cli}/spec-loader.d.ts +0 -1
  120. package/dist/cli/spec-loader.js +40 -0
  121. package/dist/{src/cli → cli}/stable-json.d.ts +0 -1
  122. package/dist/cli/stable-json.js +29 -0
  123. package/dist/{src/cli → cli}/strings.d.ts +0 -1
  124. package/dist/cli/strings.js +20 -0
  125. package/dist/{src/cli → cli}/types.d.ts +0 -1
  126. package/dist/cli/types.js +3 -0
  127. package/dist/cli.d.ts +0 -1
  128. package/dist/cli.js +51 -2324
  129. package/dist/compiled.d.ts +2 -0
  130. package/{src/compiled.ts → dist/compiled.js} +8 -11
  131. package/dist/macros/env.d.ts +10 -0
  132. package/dist/macros/env.js +22 -0
  133. package/dist/macros/spec.d.ts +5 -0
  134. package/dist/macros/spec.js +16 -0
  135. package/package.json +17 -25
  136. package/bin/specli.js +0 -26
  137. package/cli.ts +0 -77
  138. package/dist/cli.d.ts.map +0 -1
  139. package/dist/cli.js.map +0 -53
  140. package/dist/index.d.ts +0 -2
  141. package/dist/index.d.ts.map +0 -1
  142. package/dist/index.js +0 -2032
  143. package/dist/index.js.map +0 -48
  144. package/dist/src/ai/tools.d.ts.map +0 -1
  145. package/dist/src/ai/tools.js +0 -1656
  146. package/dist/src/ai/tools.js.map +0 -45
  147. package/dist/src/cli/auth-requirements.d.ts.map +0 -1
  148. package/dist/src/cli/auth-requirements.js +0 -66
  149. package/dist/src/cli/auth-requirements.js.map +0 -10
  150. package/dist/src/cli/auth-schemes.d.ts.map +0 -1
  151. package/dist/src/cli/auth-schemes.js +0 -116
  152. package/dist/src/cli/auth-schemes.js.map +0 -11
  153. package/dist/src/cli/capabilities.d.ts.map +0 -1
  154. package/dist/src/cli/capabilities.js +0 -45
  155. package/dist/src/cli/capabilities.js.map +0 -10
  156. package/dist/src/cli/command-id.d.ts.map +0 -1
  157. package/dist/src/cli/command-id.js +0 -18
  158. package/dist/src/cli/command-id.js.map +0 -11
  159. package/dist/src/cli/command-index.d.ts.map +0 -1
  160. package/dist/src/cli/command-index.js +0 -15
  161. package/dist/src/cli/command-index.js.map +0 -10
  162. package/dist/src/cli/command-model.d.ts.map +0 -1
  163. package/dist/src/cli/command-model.js +0 -274
  164. package/dist/src/cli/command-model.js.map +0 -18
  165. package/dist/src/cli/compile.d.ts.map +0 -1
  166. package/dist/src/cli/compile.js +0 -146
  167. package/dist/src/cli/compile.js.map +0 -11
  168. package/dist/src/cli/crypto.d.ts.map +0 -1
  169. package/dist/src/cli/crypto.js +0 -15
  170. package/dist/src/cli/crypto.js.map +0 -10
  171. package/dist/src/cli/derive-name.d.ts.map +0 -1
  172. package/dist/src/cli/derive-name.js +0 -70
  173. package/dist/src/cli/derive-name.js.map +0 -10
  174. package/dist/src/cli/exec.d.ts.map +0 -1
  175. package/dist/src/cli/exec.js +0 -2077
  176. package/dist/src/cli/exec.js.map +0 -49
  177. package/dist/src/cli/main.d.ts.map +0 -1
  178. package/dist/src/cli/main.js +0 -2032
  179. package/dist/src/cli/main.js.map +0 -48
  180. package/dist/src/cli/naming.d.ts.map +0 -1
  181. package/dist/src/cli/naming.js +0 -216
  182. package/dist/src/cli/naming.js.map +0 -12
  183. package/dist/src/cli/operations.d.ts.map +0 -1
  184. package/dist/src/cli/operations.js +0 -103
  185. package/dist/src/cli/operations.js.map +0 -10
  186. package/dist/src/cli/params.d.ts.map +0 -1
  187. package/dist/src/cli/params.js +0 -79
  188. package/dist/src/cli/params.js.map +0 -12
  189. package/dist/src/cli/pluralize.d.ts.map +0 -1
  190. package/dist/src/cli/pluralize.js +0 -43
  191. package/dist/src/cli/pluralize.js.map +0 -10
  192. package/dist/src/cli/positional.d.ts.map +0 -1
  193. package/dist/src/cli/positional.js +0 -39
  194. package/dist/src/cli/positional.js.map +0 -10
  195. package/dist/src/cli/request-body.d.ts.map +0 -1
  196. package/dist/src/cli/request-body.js +0 -82
  197. package/dist/src/cli/request-body.js.map +0 -12
  198. package/dist/src/cli/runtime/argv.d.ts.map +0 -1
  199. package/dist/src/cli/runtime/argv.js +0 -22
  200. package/dist/src/cli/runtime/argv.js.map +0 -10
  201. package/dist/src/cli/runtime/auth/resolve.d.ts.map +0 -1
  202. package/dist/src/cli/runtime/auth/resolve.js +0 -38
  203. package/dist/src/cli/runtime/auth/resolve.js.map +0 -10
  204. package/dist/src/cli/runtime/body-flags.d.ts.map +0 -1
  205. package/dist/src/cli/runtime/body-flags.js +0 -86
  206. package/dist/src/cli/runtime/body-flags.js.map +0 -10
  207. package/dist/src/cli/runtime/body.d.ts.map +0 -1
  208. package/dist/src/cli/runtime/body.js +0 -40
  209. package/dist/src/cli/runtime/body.js.map +0 -11
  210. package/dist/src/cli/runtime/collect.d.ts.map +0 -1
  211. package/dist/src/cli/runtime/collect.js +0 -9
  212. package/dist/src/cli/runtime/collect.js.map +0 -10
  213. package/dist/src/cli/runtime/compat.d.ts.map +0 -1
  214. package/dist/src/cli/runtime/compat.js +0 -62
  215. package/dist/src/cli/runtime/compat.js.map +0 -10
  216. package/dist/src/cli/runtime/context.d.ts.map +0 -1
  217. package/dist/src/cli/runtime/context.js +0 -936
  218. package/dist/src/cli/runtime/context.js.map +0 -32
  219. package/dist/src/cli/runtime/execute.d.ts.map +0 -1
  220. package/dist/src/cli/runtime/execute.js +0 -670
  221. package/dist/src/cli/runtime/execute.js.map +0 -22
  222. package/dist/src/cli/runtime/generated.d.ts.map +0 -1
  223. package/dist/src/cli/runtime/generated.js +0 -869
  224. package/dist/src/cli/runtime/generated.js.map +0 -23
  225. package/dist/src/cli/runtime/headers.d.ts.map +0 -1
  226. package/dist/src/cli/runtime/headers.js +0 -36
  227. package/dist/src/cli/runtime/headers.js.map +0 -10
  228. package/dist/src/cli/runtime/index.d.ts.map +0 -1
  229. package/dist/src/cli/runtime/index.js +0 -1808
  230. package/dist/src/cli/runtime/index.js.map +0 -46
  231. package/dist/src/cli/runtime/profile/secrets.d.ts.map +0 -1
  232. package/dist/src/cli/runtime/profile/secrets.js +0 -51
  233. package/dist/src/cli/runtime/profile/secrets.js.map +0 -11
  234. package/dist/src/cli/runtime/profile/store.d.ts.map +0 -1
  235. package/dist/src/cli/runtime/profile/store.js +0 -102
  236. package/dist/src/cli/runtime/profile/store.js.map +0 -11
  237. package/dist/src/cli/runtime/request.d.ts.map +0 -1
  238. package/dist/src/cli/runtime/request.js +0 -571
  239. package/dist/src/cli/runtime/request.js.map +0 -21
  240. package/dist/src/cli/runtime/server-url.d.ts.map +0 -1
  241. package/dist/src/cli/runtime/server-url.js +0 -55
  242. package/dist/src/cli/runtime/server-url.js.map +0 -11
  243. package/dist/src/cli/runtime/template.d.ts.map +0 -1
  244. package/dist/src/cli/runtime/template.js +0 -29
  245. package/dist/src/cli/runtime/template.js.map +0 -10
  246. package/dist/src/cli/runtime/validate/ajv.d.ts +0 -3
  247. package/dist/src/cli/runtime/validate/ajv.d.ts.map +0 -1
  248. package/dist/src/cli/runtime/validate/ajv.js +0 -17
  249. package/dist/src/cli/runtime/validate/ajv.js.map +0 -10
  250. package/dist/src/cli/runtime/validate/coerce.d.ts.map +0 -1
  251. package/dist/src/cli/runtime/validate/coerce.js +0 -60
  252. package/dist/src/cli/runtime/validate/coerce.js.map +0 -10
  253. package/dist/src/cli/runtime/validate/error.d.ts.map +0 -1
  254. package/dist/src/cli/runtime/validate/error.js +0 -21
  255. package/dist/src/cli/runtime/validate/error.js.map +0 -10
  256. package/dist/src/cli/runtime/validate/index.d.ts.map +0 -1
  257. package/dist/src/cli/runtime/validate/index.js +0 -122
  258. package/dist/src/cli/runtime/validate/index.js.map +0 -13
  259. package/dist/src/cli/runtime/validate/schema.d.ts.map +0 -1
  260. package/dist/src/cli/runtime/validate/schema.js +0 -36
  261. package/dist/src/cli/runtime/validate/schema.js.map +0 -10
  262. package/dist/src/cli/schema-shape.d.ts.map +0 -1
  263. package/dist/src/cli/schema-shape.js +0 -41
  264. package/dist/src/cli/schema-shape.js.map +0 -10
  265. package/dist/src/cli/schema.d.ts.map +0 -1
  266. package/dist/src/cli/schema.js +0 -38
  267. package/dist/src/cli/schema.js.map +0 -10
  268. package/dist/src/cli/server.d.ts.map +0 -1
  269. package/dist/src/cli/server.js +0 -64
  270. package/dist/src/cli/server.js.map +0 -11
  271. package/dist/src/cli/spec-id.d.ts.map +0 -1
  272. package/dist/src/cli/spec-id.js +0 -21
  273. package/dist/src/cli/spec-id.js.map +0 -11
  274. package/dist/src/cli/spec-loader.d.ts.map +0 -1
  275. package/dist/src/cli/spec-loader.js +0 -110
  276. package/dist/src/cli/spec-loader.js.map +0 -15
  277. package/dist/src/cli/stable-json.d.ts.map +0 -1
  278. package/dist/src/cli/stable-json.js +0 -35
  279. package/dist/src/cli/stable-json.js.map +0 -10
  280. package/dist/src/cli/strings.d.ts.map +0 -1
  281. package/dist/src/cli/strings.js +0 -16
  282. package/dist/src/cli/strings.js.map +0 -10
  283. package/dist/src/cli/types.d.ts.map +0 -1
  284. package/dist/src/cli/types.js +0 -9
  285. package/dist/src/cli/types.js.map +0 -10
  286. package/index.ts +0 -1
  287. package/src/ai/tools.ts +0 -211
  288. package/src/cli/auth-requirements.ts +0 -91
  289. package/src/cli/auth-schemes.ts +0 -187
  290. package/src/cli/capabilities.ts +0 -88
  291. package/src/cli/command-id.ts +0 -16
  292. package/src/cli/command-index.ts +0 -19
  293. package/src/cli/command-model.ts +0 -128
  294. package/src/cli/compile.ts +0 -101
  295. package/src/cli/crypto.ts +0 -9
  296. package/src/cli/derive-name.ts +0 -101
  297. package/src/cli/exec.ts +0 -72
  298. package/src/cli/main.ts +0 -231
  299. package/src/cli/naming.ts +0 -224
  300. package/src/cli/operations.ts +0 -152
  301. package/src/cli/params.ts +0 -71
  302. package/src/cli/pluralize.ts +0 -41
  303. package/src/cli/positional.ts +0 -75
  304. package/src/cli/request-body.ts +0 -94
  305. package/src/cli/runtime/argv.ts +0 -14
  306. package/src/cli/runtime/auth/resolve.ts +0 -59
  307. package/src/cli/runtime/body-flags.ts +0 -176
  308. package/src/cli/runtime/body.ts +0 -24
  309. package/src/cli/runtime/collect.ts +0 -6
  310. package/src/cli/runtime/compat.ts +0 -89
  311. package/src/cli/runtime/context.ts +0 -62
  312. package/src/cli/runtime/execute.ts +0 -147
  313. package/src/cli/runtime/generated.ts +0 -242
  314. package/src/cli/runtime/headers.ts +0 -37
  315. package/src/cli/runtime/index.ts +0 -3
  316. package/src/cli/runtime/profile/secrets.ts +0 -83
  317. package/src/cli/runtime/profile/store.ts +0 -100
  318. package/src/cli/runtime/request.ts +0 -390
  319. package/src/cli/runtime/server-url.ts +0 -45
  320. package/src/cli/runtime/template.ts +0 -26
  321. package/src/cli/runtime/validate/ajv.ts +0 -13
  322. package/src/cli/runtime/validate/coerce.ts +0 -71
  323. package/src/cli/runtime/validate/error.ts +0 -29
  324. package/src/cli/runtime/validate/index.ts +0 -4
  325. package/src/cli/runtime/validate/schema.ts +0 -54
  326. package/src/cli/schema-shape.ts +0 -36
  327. package/src/cli/schema.ts +0 -76
  328. package/src/cli/server.ts +0 -88
  329. package/src/cli/spec-id.ts +0 -12
  330. package/src/cli/spec-loader.ts +0 -58
  331. package/src/cli/stable-json.ts +0 -35
  332. package/src/cli/strings.ts +0 -21
  333. package/src/cli/types.ts +0 -59
  334. package/src/macros/env.ts +0 -21
  335. package/src/macros/spec.ts +0 -17
@@ -1,86 +0,0 @@
1
- // src/cli/runtime/body-flags.ts
2
- function generateBodyFlags(schema, reservedFlags) {
3
- if (!schema || schema.type !== "object" || !schema.properties) {
4
- return [];
5
- }
6
- const flags = [];
7
- const requiredSet = new Set(schema.required ?? []);
8
- collectFlags(schema.properties, [], requiredSet, flags, reservedFlags);
9
- return flags;
10
- }
11
- function collectFlags(properties, pathPrefix, requiredAtRoot, out, reservedFlags) {
12
- for (const [name, propSchema] of Object.entries(properties)) {
13
- if (!name || typeof name !== "string")
14
- continue;
15
- if (!propSchema || typeof propSchema !== "object")
16
- continue;
17
- const path = [...pathPrefix, name];
18
- const flagName = `--${path.join(".")}`;
19
- if (reservedFlags.has(flagName))
20
- continue;
21
- const t = propSchema.type;
22
- if (t === "object" && propSchema.properties) {
23
- const nestedRequired = new Set(propSchema.required ?? []);
24
- collectFlags(propSchema.properties, path, nestedRequired, out, reservedFlags);
25
- } else if (t === "string" || t === "number" || t === "integer" || t === "boolean") {
26
- const isRequired = pathPrefix.length === 0 ? requiredAtRoot.has(name) : false;
27
- out.push({
28
- flag: flagName,
29
- path,
30
- type: t,
31
- description: propSchema.description ?? `Body field '${path.join(".")}'`,
32
- required: isRequired
33
- });
34
- }
35
- }
36
- }
37
- function parseDotNotationFlags(flagValues, flagDefs) {
38
- const result = {};
39
- for (const def of flagDefs) {
40
- const dotKey = def.path.join(".");
41
- const value = flagValues[dotKey];
42
- if (value === undefined)
43
- continue;
44
- setNestedValue(result, def.path, value, def.type);
45
- }
46
- return result;
47
- }
48
- function setNestedValue(obj, path, value, type) {
49
- let current = obj;
50
- for (let i = 0;i < path.length - 1; i++) {
51
- const key = path[i];
52
- if (!(key in current) || typeof current[key] !== "object") {
53
- current[key] = {};
54
- }
55
- current = current[key];
56
- }
57
- const finalKey = path[path.length - 1];
58
- if (type === "boolean") {
59
- current[finalKey] = true;
60
- } else if (type === "integer") {
61
- current[finalKey] = Number.parseInt(String(value), 10);
62
- } else if (type === "number") {
63
- current[finalKey] = Number(String(value));
64
- } else {
65
- current[finalKey] = String(value);
66
- }
67
- }
68
- function findMissingRequired(flagValues, flagDefs) {
69
- const missing = [];
70
- for (const def of flagDefs) {
71
- if (!def.required)
72
- continue;
73
- const dotKey = def.path.join(".");
74
- if (flagValues[dotKey] === undefined) {
75
- missing.push(dotKey);
76
- }
77
- }
78
- return missing;
79
- }
80
- export {
81
- parseDotNotationFlags,
82
- generateBodyFlags,
83
- findMissingRequired
84
- };
85
-
86
- //# debugId=0CD1D6E49259F68464756E2164756E21
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/cli/runtime/body-flags.ts"],
4
- "sourcesContent": [
5
- "/**\n * Body flag generation and parsing utilities.\n *\n * Generates CLI flags from JSON schema properties and parses\n * dot-notation flags back into nested objects.\n */\n\ntype JsonSchema = {\n\ttype?: string;\n\tproperties?: Record<string, JsonSchema>;\n\titems?: JsonSchema;\n\trequired?: string[];\n\tdescription?: string;\n};\n\nexport type BodyFlagDef = {\n\tflag: string; // e.g. \"--name\" or \"--address.street\"\n\tpath: string[]; // e.g. [\"name\"] or [\"address\", \"street\"]\n\ttype: \"string\" | \"number\" | \"integer\" | \"boolean\";\n\tdescription: string;\n\trequired: boolean;\n};\n\n/**\n * Generate flag definitions from a JSON schema.\n * Recursively handles nested objects using dot notation.\n */\nexport function generateBodyFlags(\n\tschema: JsonSchema | undefined,\n\treservedFlags: Set<string>,\n): BodyFlagDef[] {\n\tif (!schema || schema.type !== \"object\" || !schema.properties) {\n\t\treturn [];\n\t}\n\n\tconst flags: BodyFlagDef[] = [];\n\tconst requiredSet = new Set(schema.required ?? []);\n\n\tcollectFlags(schema.properties, [], requiredSet, flags, reservedFlags);\n\n\treturn flags;\n}\n\nfunction collectFlags(\n\tproperties: Record<string, JsonSchema>,\n\tpathPrefix: string[],\n\trequiredAtRoot: Set<string>,\n\tout: BodyFlagDef[],\n\treservedFlags: Set<string>,\n): void {\n\tfor (const [name, propSchema] of Object.entries(properties)) {\n\t\tif (!name || typeof name !== \"string\") continue;\n\t\tif (!propSchema || typeof propSchema !== \"object\") continue;\n\n\t\tconst path = [...pathPrefix, name];\n\t\tconst flagName = `--${path.join(\".\")}`;\n\n\t\t// Skip if this flag would conflict with an operation parameter\n\t\tif (reservedFlags.has(flagName)) continue;\n\n\t\tconst t = propSchema.type;\n\n\t\tif (t === \"object\" && propSchema.properties) {\n\t\t\t// Recurse into nested object\n\t\t\tconst nestedRequired = new Set(propSchema.required ?? []);\n\t\t\tcollectFlags(\n\t\t\t\tpropSchema.properties,\n\t\t\t\tpath,\n\t\t\t\tnestedRequired,\n\t\t\t\tout,\n\t\t\t\treservedFlags,\n\t\t\t);\n\t\t} else if (\n\t\t\tt === \"string\" ||\n\t\t\tt === \"number\" ||\n\t\t\tt === \"integer\" ||\n\t\t\tt === \"boolean\"\n\t\t) {\n\t\t\t// Leaf property - generate a flag\n\t\t\tconst isRequired =\n\t\t\t\tpathPrefix.length === 0 ? requiredAtRoot.has(name) : false;\n\n\t\t\tout.push({\n\t\t\t\tflag: flagName,\n\t\t\t\tpath,\n\t\t\t\ttype: t,\n\t\t\t\tdescription: propSchema.description ?? `Body field '${path.join(\".\")}'`,\n\t\t\t\trequired: isRequired,\n\t\t\t});\n\t\t}\n\t\t// Skip arrays and other complex types for now\n\t}\n}\n\n/**\n * Parse flag values with dot notation into a nested object.\n *\n * Example:\n * { \"address.street\": \"123 Main\", \"address.city\": \"NYC\", \"name\": \"Ada\" }\n * Becomes:\n * { address: { street: \"123 Main\", city: \"NYC\" }, name: \"Ada\" }\n */\nexport function parseDotNotationFlags(\n\tflagValues: Record<string, unknown>,\n\tflagDefs: BodyFlagDef[],\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (const def of flagDefs) {\n\t\t// Commander keeps dots in option names: --address.street -> \"address.street\"\n\t\tconst dotKey = def.path.join(\".\");\n\t\tconst value = flagValues[dotKey];\n\n\t\tif (value === undefined) continue;\n\n\t\tsetNestedValue(result, def.path, value, def.type);\n\t}\n\n\treturn result;\n}\n\n/**\n * Set a value at a nested path, creating intermediate objects as needed.\n */\nfunction setNestedValue(\n\tobj: Record<string, unknown>,\n\tpath: string[],\n\tvalue: unknown,\n\ttype: string,\n): void {\n\tlet current = obj;\n\n\tfor (let i = 0; i < path.length - 1; i++) {\n\t\tconst key = path[i] as string;\n\t\tif (!(key in current) || typeof current[key] !== \"object\") {\n\t\t\tcurrent[key] = {};\n\t\t}\n\t\tcurrent = current[key] as Record<string, unknown>;\n\t}\n\n\tconst finalKey = path[path.length - 1] as string;\n\n\t// Coerce value based on type\n\tif (type === \"boolean\") {\n\t\tcurrent[finalKey] = true;\n\t} else if (type === \"integer\") {\n\t\tcurrent[finalKey] = Number.parseInt(String(value), 10);\n\t} else if (type === \"number\") {\n\t\tcurrent[finalKey] = Number(String(value));\n\t} else {\n\t\tcurrent[finalKey] = String(value);\n\t}\n}\n\n/**\n * Check if all required fields are present.\n * Returns list of missing field paths.\n */\nexport function findMissingRequired(\n\tflagValues: Record<string, unknown>,\n\tflagDefs: BodyFlagDef[],\n): string[] {\n\tconst missing: string[] = [];\n\n\tfor (const def of flagDefs) {\n\t\tif (!def.required) continue;\n\n\t\t// Commander keeps dots in option names: --address.street -> \"address.street\"\n\t\tconst dotKey = def.path.join(\".\");\n\t\tif (flagValues[dotKey] === undefined) {\n\t\t\tmissing.push(dotKey);\n\t\t}\n\t}\n\n\treturn missing;\n}\n"
6
- ],
7
- "mappings": "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",
8
- "debugId": "0CD1D6E49259F68464756E2164756E21",
9
- "names": []
10
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../../src/cli/runtime/body.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC,wBAAsB,QAAQ,CAC7B,KAAK,EAAE,SAAS,GACd,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAAC,CAMtD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM3D"}
@@ -1,40 +0,0 @@
1
- // src/cli/runtime/compat.ts
2
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
- import { parse as parseYaml } from "yaml";
4
- var isBun = typeof globalThis.Bun !== "undefined";
5
- async function readFileText(path) {
6
- if (isBun) {
7
- return Bun.file(path).text();
8
- }
9
- return readFileSync(path, "utf-8");
10
- }
11
- function parseYamlContent(text) {
12
- if (isBun) {
13
- const { YAML } = globalThis.Bun;
14
- return YAML.parse(text);
15
- }
16
- return parseYaml(text);
17
- }
18
-
19
- // src/cli/runtime/body.ts
20
- async function loadBody(input) {
21
- if (input.kind === "none")
22
- return;
23
- if (input.kind === "data")
24
- return { raw: input.data };
25
- const text = await readFileText(input.path);
26
- return { raw: text };
27
- }
28
- function parseBodyAsJsonOrYaml(text) {
29
- const trimmed = text.trimStart();
30
- if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
31
- return JSON.parse(text);
32
- }
33
- return parseYamlContent(text);
34
- }
35
- export {
36
- parseBodyAsJsonOrYaml,
37
- loadBody
38
- };
39
-
40
- //# debugId=9F5BDD3591FC0D3E64756E2164756E21
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/cli/runtime/compat.ts", "../../../../src/cli/runtime/body.ts"],
4
- "sourcesContent": [
5
- "/**\n * Cross-runtime compatibility utilities for Bun and Node.js\n *\n * This module provides abstractions over Bun-specific APIs to allow\n * the exec command to run in Node.js while compile remains Bun-only.\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { parse as parseYaml } from \"yaml\";\n\n/**\n * Detect if we're running in Bun\n */\nexport const isBun = typeof globalThis.Bun !== \"undefined\";\n\n/**\n * Read a file's text content - works in both Bun and Node.js\n */\nexport async function readFileText(path: string): Promise<string> {\n\tif (isBun) {\n\t\treturn Bun.file(path).text();\n\t}\n\treturn readFileSync(path, \"utf-8\");\n}\n\n/**\n * Check if a file exists - works in both Bun and Node.js\n */\nexport async function fileExists(path: string): Promise<boolean> {\n\tif (isBun) {\n\t\treturn Bun.file(path).exists();\n\t}\n\treturn existsSync(path);\n}\n\n/**\n * Write text to a file - works in both Bun and Node.js\n */\nexport async function writeFileText(\n\tpath: string,\n\tcontent: string,\n): Promise<void> {\n\tif (isBun) {\n\t\tawait Bun.write(path, content);\n\t\treturn;\n\t}\n\twriteFileSync(path, content, \"utf-8\");\n}\n\n/**\n * Create directory recursively - works in both Bun and Node.js\n */\nexport async function mkdirp(path: string): Promise<void> {\n\tif (isBun) {\n\t\tawait Bun.$`mkdir -p ${path}`;\n\t\treturn;\n\t}\n\tmkdirSync(path, { recursive: true });\n}\n\n/**\n * Parse YAML content - works in both Bun and Node.js\n */\nexport function parseYamlContent(text: string): unknown {\n\tif (isBun) {\n\t\tconst { YAML } = globalThis.Bun;\n\t\treturn YAML.parse(text);\n\t}\n\treturn parseYaml(text);\n}\n\n/**\n * Read from stdin - works in both Bun and Node.js\n */\nexport async function readStdinText(): Promise<string> {\n\tif (isBun) {\n\t\treturn Bun.stdin.text();\n\t}\n\t// Node.js stdin reading\n\treturn new Promise((resolve, reject) => {\n\t\tlet data = \"\";\n\t\tprocess.stdin.setEncoding(\"utf8\");\n\t\tprocess.stdin.on(\"data\", (chunk) => {\n\t\t\tdata += chunk;\n\t\t});\n\t\tprocess.stdin.on(\"end\", () => resolve(data));\n\t\tprocess.stdin.on(\"error\", reject);\n\t});\n}\n",
6
- "import { parseYamlContent, readFileText } from \"./compat.ts\";\n\nexport type BodyInput =\n\t| { kind: \"none\" }\n\t| { kind: \"data\"; data: string }\n\t| { kind: \"file\"; path: string };\n\nexport async function loadBody(\n\tinput: BodyInput,\n): Promise<{ raw: string; json?: unknown } | undefined> {\n\tif (input.kind === \"none\") return undefined;\n\tif (input.kind === \"data\") return { raw: input.data };\n\n\tconst text = await readFileText(input.path);\n\treturn { raw: text };\n}\n\nexport function parseBodyAsJsonOrYaml(text: string): unknown {\n\tconst trimmed = text.trimStart();\n\tif (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) {\n\t\treturn JSON.parse(text);\n\t}\n\treturn parseYamlContent(text);\n}\n"
7
- ],
8
- "mappings": ";AAOA;AACA,kBAAS;AAKF,IAAM,QAAQ,OAAO,WAAW,QAAQ;AAK/C,eAAsB,YAAY,CAAC,MAA+B;AAAA,EACjE,IAAI,OAAO;AAAA,IACV,OAAO,IAAI,KAAK,IAAI,EAAE,KAAK;AAAA,EAC5B;AAAA,EACA,OAAO,aAAa,MAAM,OAAO;AAAA;AAyC3B,SAAS,gBAAgB,CAAC,MAAuB;AAAA,EACvD,IAAI,OAAO;AAAA,IACV,QAAQ,SAAS,WAAW;AAAA,IAC5B,OAAO,KAAK,MAAM,IAAI;AAAA,EACvB;AAAA,EACA,OAAO,UAAU,IAAI;AAAA;;;AC7DtB,eAAsB,QAAQ,CAC7B,OACuD;AAAA,EACvD,IAAI,MAAM,SAAS;AAAA,IAAQ;AAAA,EAC3B,IAAI,MAAM,SAAS;AAAA,IAAQ,OAAO,EAAE,KAAK,MAAM,KAAK;AAAA,EAEpD,MAAM,OAAO,MAAM,aAAa,MAAM,IAAI;AAAA,EAC1C,OAAO,EAAE,KAAK,KAAK;AAAA;AAGb,SAAS,qBAAqB,CAAC,MAAuB;AAAA,EAC5D,MAAM,UAAU,KAAK,UAAU;AAAA,EAC/B,IAAI,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,GAAG,GAAG;AAAA,IACvD,OAAO,KAAK,MAAM,IAAI;AAAA,EACvB;AAAA,EACA,OAAO,iBAAiB,IAAI;AAAA;",
9
- "debugId": "9F5BDD3591FC0D3E64756E2164756E21",
10
- "names": []
11
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../../../../src/cli/runtime/collect.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,GAC5B,MAAM,EAAE,CAEV"}
@@ -1,9 +0,0 @@
1
- // src/cli/runtime/collect.ts
2
- function collectRepeatable(value, previous) {
3
- return [...previous ?? [], value];
4
- }
5
- export {
6
- collectRepeatable
7
- };
8
-
9
- //# debugId=2D9C77C5781D4BD364756E2164756E21
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/cli/runtime/collect.ts"],
4
- "sourcesContent": [
5
- "export function collectRepeatable(\n\tvalue: string,\n\tprevious: string[] | undefined,\n): string[] {\n\treturn [...(previous ?? []), value];\n}\n"
6
- ],
7
- "mappings": ";AAAO,SAAS,iBAAiB,CAChC,OACA,UACW;AAAA,EACX,OAAO,CAAC,GAAI,YAAY,CAAC,GAAI,KAAK;AAAA;",
8
- "debugId": "2D9C77C5781D4BD364756E2164756E21",
9
- "names": []
10
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"compat.d.ts","sourceRoot":"","sources":["../../../../src/cli/runtime/compat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,eAAO,MAAM,KAAK,SAAwC,CAAC;AAE3D;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKhE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK/D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMtD;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAcrD"}
@@ -1,62 +0,0 @@
1
- // src/cli/runtime/compat.ts
2
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
- import { parse as parseYaml } from "yaml";
4
- var isBun = typeof globalThis.Bun !== "undefined";
5
- async function readFileText(path) {
6
- if (isBun) {
7
- return Bun.file(path).text();
8
- }
9
- return readFileSync(path, "utf-8");
10
- }
11
- async function fileExists(path) {
12
- if (isBun) {
13
- return Bun.file(path).exists();
14
- }
15
- return existsSync(path);
16
- }
17
- async function writeFileText(path, content) {
18
- if (isBun) {
19
- await Bun.write(path, content);
20
- return;
21
- }
22
- writeFileSync(path, content, "utf-8");
23
- }
24
- async function mkdirp(path) {
25
- if (isBun) {
26
- await Bun.$`mkdir -p ${path}`;
27
- return;
28
- }
29
- mkdirSync(path, { recursive: true });
30
- }
31
- function parseYamlContent(text) {
32
- if (isBun) {
33
- const { YAML } = globalThis.Bun;
34
- return YAML.parse(text);
35
- }
36
- return parseYaml(text);
37
- }
38
- async function readStdinText() {
39
- if (isBun) {
40
- return Bun.stdin.text();
41
- }
42
- return new Promise((resolve, reject) => {
43
- let data = "";
44
- process.stdin.setEncoding("utf8");
45
- process.stdin.on("data", (chunk) => {
46
- data += chunk;
47
- });
48
- process.stdin.on("end", () => resolve(data));
49
- process.stdin.on("error", reject);
50
- });
51
- }
52
- export {
53
- writeFileText,
54
- readStdinText,
55
- readFileText,
56
- parseYamlContent,
57
- mkdirp,
58
- isBun,
59
- fileExists
60
- };
61
-
62
- //# debugId=9FD9ABD74376328F64756E2164756E21
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/cli/runtime/compat.ts"],
4
- "sourcesContent": [
5
- "/**\n * Cross-runtime compatibility utilities for Bun and Node.js\n *\n * This module provides abstractions over Bun-specific APIs to allow\n * the exec command to run in Node.js while compile remains Bun-only.\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { parse as parseYaml } from \"yaml\";\n\n/**\n * Detect if we're running in Bun\n */\nexport const isBun = typeof globalThis.Bun !== \"undefined\";\n\n/**\n * Read a file's text content - works in both Bun and Node.js\n */\nexport async function readFileText(path: string): Promise<string> {\n\tif (isBun) {\n\t\treturn Bun.file(path).text();\n\t}\n\treturn readFileSync(path, \"utf-8\");\n}\n\n/**\n * Check if a file exists - works in both Bun and Node.js\n */\nexport async function fileExists(path: string): Promise<boolean> {\n\tif (isBun) {\n\t\treturn Bun.file(path).exists();\n\t}\n\treturn existsSync(path);\n}\n\n/**\n * Write text to a file - works in both Bun and Node.js\n */\nexport async function writeFileText(\n\tpath: string,\n\tcontent: string,\n): Promise<void> {\n\tif (isBun) {\n\t\tawait Bun.write(path, content);\n\t\treturn;\n\t}\n\twriteFileSync(path, content, \"utf-8\");\n}\n\n/**\n * Create directory recursively - works in both Bun and Node.js\n */\nexport async function mkdirp(path: string): Promise<void> {\n\tif (isBun) {\n\t\tawait Bun.$`mkdir -p ${path}`;\n\t\treturn;\n\t}\n\tmkdirSync(path, { recursive: true });\n}\n\n/**\n * Parse YAML content - works in both Bun and Node.js\n */\nexport function parseYamlContent(text: string): unknown {\n\tif (isBun) {\n\t\tconst { YAML } = globalThis.Bun;\n\t\treturn YAML.parse(text);\n\t}\n\treturn parseYaml(text);\n}\n\n/**\n * Read from stdin - works in both Bun and Node.js\n */\nexport async function readStdinText(): Promise<string> {\n\tif (isBun) {\n\t\treturn Bun.stdin.text();\n\t}\n\t// Node.js stdin reading\n\treturn new Promise((resolve, reject) => {\n\t\tlet data = \"\";\n\t\tprocess.stdin.setEncoding(\"utf8\");\n\t\tprocess.stdin.on(\"data\", (chunk) => {\n\t\t\tdata += chunk;\n\t\t});\n\t\tprocess.stdin.on(\"end\", () => resolve(data));\n\t\tprocess.stdin.on(\"error\", reject);\n\t});\n}\n"
6
- ],
7
- "mappings": ";AAOA;AACA,kBAAS;AAKF,IAAM,QAAQ,OAAO,WAAW,QAAQ;AAK/C,eAAsB,YAAY,CAAC,MAA+B;AAAA,EACjE,IAAI,OAAO;AAAA,IACV,OAAO,IAAI,KAAK,IAAI,EAAE,KAAK;AAAA,EAC5B;AAAA,EACA,OAAO,aAAa,MAAM,OAAO;AAAA;AAMlC,eAAsB,UAAU,CAAC,MAAgC;AAAA,EAChE,IAAI,OAAO;AAAA,IACV,OAAO,IAAI,KAAK,IAAI,EAAE,OAAO;AAAA,EAC9B;AAAA,EACA,OAAO,WAAW,IAAI;AAAA;AAMvB,eAAsB,aAAa,CAClC,MACA,SACgB;AAAA,EAChB,IAAI,OAAO;AAAA,IACV,MAAM,IAAI,MAAM,MAAM,OAAO;AAAA,IAC7B;AAAA,EACD;AAAA,EACA,cAAc,MAAM,SAAS,OAAO;AAAA;AAMrC,eAAsB,MAAM,CAAC,MAA6B;AAAA,EACzD,IAAI,OAAO;AAAA,IACV,MAAM,IAAI,aAAa;AAAA,IACvB;AAAA,EACD;AAAA,EACA,UAAU,MAAM,EAAE,WAAW,KAAK,CAAC;AAAA;AAM7B,SAAS,gBAAgB,CAAC,MAAuB;AAAA,EACvD,IAAI,OAAO;AAAA,IACV,QAAQ,SAAS,WAAW;AAAA,IAC5B,OAAO,KAAK,MAAM,IAAI;AAAA,EACvB;AAAA,EACA,OAAO,UAAU,IAAI;AAAA;AAMtB,eAAsB,aAAa,GAAoB;AAAA,EACtD,IAAI,OAAO;AAAA,IACV,OAAO,IAAI,MAAM,KAAK;AAAA,EACvB;AAAA,EAEA,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,IACvC,IAAI,OAAO;AAAA,IACX,QAAQ,MAAM,YAAY,MAAM;AAAA,IAChC,QAAQ,MAAM,GAAG,QAAQ,CAAC,UAAU;AAAA,MACnC,QAAQ;AAAA,KACR;AAAA,IACD,QAAQ,MAAM,GAAG,OAAO,MAAM,QAAQ,IAAI,CAAC;AAAA,IAC3C,QAAQ,MAAM,GAAG,SAAS,MAAM;AAAA,GAChC;AAAA;",
8
- "debugId": "9FD9ABD74376328F64756E2164756E21",
9
- "names": []
10
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/cli/runtime/context.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,0BAA0B,GAAG;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B;;;;;;;;;;GA8C5E"}