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
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env bun
2
+ export {};
@@ -1,9 +1,7 @@
1
1
  #!/usr/bin/env bun
2
-
3
- import { main } from "./cli/main.ts";
4
- import { env, envRequired } from "./macros/env.ts" with { type: "macro" };
5
- import { loadSpec } from "./macros/spec.ts" with { type: "macro" };
6
-
2
+ import { main } from "./cli/main.js";
3
+ import { env, envRequired } from "./macros/env.js" with { type: "macro" };
4
+ import { loadSpec } from "./macros/spec.js" with { type: "macro" };
7
5
  // This entrypoint is intended to be compiled.
8
6
  // All values are embedded via Bun macros at bundle-time.
9
7
  const embeddedSpecText = await loadSpec(envRequired("SPECLI_SPEC"));
@@ -11,11 +9,10 @@ const cliName = env("SPECLI_NAME");
11
9
  const server = env("SPECLI_SERVER");
12
10
  const serverVars = env("SPECLI_SERVER_VARS");
13
11
  const auth = env("SPECLI_AUTH");
14
-
15
12
  await main(process.argv, {
16
- embeddedSpecText,
17
- cliName,
18
- server,
19
- serverVars: serverVars ? serverVars.split(",") : undefined,
20
- auth,
13
+ embeddedSpecText,
14
+ cliName,
15
+ server,
16
+ serverVars: serverVars ? serverVars.split(",") : undefined,
17
+ auth,
21
18
  });
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Bun macro: reads an environment variable at bundle-time.
3
+ * Returns undefined if the env var is not set.
4
+ */
5
+ export declare function env(name: string): string | undefined;
6
+ /**
7
+ * Bun macro: reads a required environment variable at bundle-time.
8
+ * Throws if the env var is not set.
9
+ */
10
+ export declare function envRequired(name: string): string;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Bun macro: reads an environment variable at bundle-time.
3
+ * Returns undefined if the env var is not set.
4
+ */
5
+ export function env(name) {
6
+ if (!name)
7
+ throw new Error("env macro: missing variable name");
8
+ return process.env[name];
9
+ }
10
+ /**
11
+ * Bun macro: reads a required environment variable at bundle-time.
12
+ * Throws if the env var is not set.
13
+ */
14
+ export function envRequired(name) {
15
+ if (!name)
16
+ throw new Error("envRequired macro: missing variable name");
17
+ const value = process.env[name];
18
+ if (value === undefined) {
19
+ throw new Error(`Missing required env var: ${name}`);
20
+ }
21
+ return value;
22
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Bun macro: loads an OpenAPI spec from a URL or file path at bundle-time.
3
+ * The spec text is inlined into the bundle.
4
+ */
5
+ export declare function loadSpec(spec: string): Promise<string>;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Bun macro: loads an OpenAPI spec from a URL or file path at bundle-time.
3
+ * The spec text is inlined into the bundle.
4
+ */
5
+ export async function loadSpec(spec) {
6
+ if (!spec)
7
+ throw new Error("loadSpec macro: missing spec path/URL");
8
+ if (/^https?:\/\//i.test(spec)) {
9
+ const res = await fetch(spec);
10
+ if (!res.ok) {
11
+ throw new Error(`Failed to fetch spec: ${res.status} ${res.statusText}`);
12
+ }
13
+ return await res.text();
14
+ }
15
+ return await Bun.file(spec).text();
16
+ }
package/package.json CHANGED
@@ -1,40 +1,26 @@
1
1
  {
2
2
  "name": "specli",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "type": "module",
5
- "main": "./dist/index.js",
6
5
  "module": "./dist/index.js",
7
6
  "types": "./dist/index.d.ts",
8
7
  "bin": {
9
- "specli": "./bin/specli.js"
8
+ "specli": "./bin/cli.sh"
10
9
  },
11
10
  "exports": {
12
- ".": {
13
- "bun": "./index.ts",
14
- "import": {
15
- "types": "./dist/index.d.ts",
16
- "default": "./dist/index.js"
17
- }
18
- },
19
11
  "./ai/tools": {
20
- "bun": "./src/ai/tools.ts",
21
- "import": {
22
- "types": "./dist/src/ai/tools.d.ts",
23
- "default": "./dist/src/ai/tools.js"
24
- }
12
+ "import": "./dist/ai/tools.js",
13
+ "types": "./dist/ai/tools.d.ts"
25
14
  }
26
15
  },
27
16
  "files": [
28
- "dist",
29
17
  "bin",
30
- "cli.ts",
31
- "index.ts",
32
- "src",
33
- "!**/*.test.ts"
18
+ "dist",
19
+ "README.md"
34
20
  ],
35
21
  "scripts": {
36
- "build": "bun run scripts/build.ts",
37
- "prepublishOnly": "bun run build",
22
+ "build": "tsc",
23
+ "prepublishOnly": "tsc",
38
24
  "lint": "biome ci",
39
25
  "lint:check": "biome check --write --unsafe",
40
26
  "lint:format": "biome format --write",
@@ -42,9 +28,11 @@
42
28
  },
43
29
  "devDependencies": {
44
30
  "@biomejs/biome": "^2.3.11",
31
+ "@tsconfig/node22": "^22.0.5",
45
32
  "@types/bun": "^1.3.6",
46
33
  "@types/node": "^22.19.7",
47
- "@typescript/native-preview": "^7.0.0-dev.20260120.1"
34
+ "@typescript/native-preview": "^7.0.0-dev.20260122.3",
35
+ "typescript": "^5.9.3"
48
36
  },
49
37
  "dependencies": {
50
38
  "@apidevtools/swagger-parser": "^12.1.0",
@@ -55,7 +43,11 @@
55
43
  "yaml": "^2.8.2"
56
44
  },
57
45
  "peerDependencies": {
58
- "ai": "^6.0.42",
59
- "zod": "^4.3.5"
46
+ "ai": "^6.0.0",
47
+ "zod": "^4.0.0"
48
+ },
49
+ "repository": {
50
+ "type": "git",
51
+ "url": "https://github.com/AndrewBarba/specli.git"
60
52
  }
61
53
  }
package/bin/specli.js DELETED
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env node
2
- import { spawn } from "node:child_process";
3
-
4
- const isBun = typeof globalThis.Bun !== "undefined";
5
- const isCompileCommand = process.argv.includes("compile");
6
-
7
- if (!isBun && isCompileCommand) {
8
- // Re-run with Bun for compile command
9
- const child = spawn("bun", process.argv.slice(1), {
10
- stdio: "inherit",
11
- });
12
- child.on("close", (code) => process.exit(code ?? 0));
13
- child.on("error", (err) => {
14
- if (err.code === "ENOENT") {
15
- console.error("Error: The 'compile' command requires Bun.");
16
- console.error("Install Bun: https://bun.sh");
17
- process.exit(1);
18
- }
19
- throw err;
20
- });
21
- } else {
22
- // Run the CLI directly
23
- const root = new URL("..", import.meta.url).pathname;
24
- const entry = isBun ? `${root}cli.ts` : `${root}dist/cli.js`;
25
- await import(entry);
26
- }
package/cli.ts DELETED
@@ -1,77 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { Command } from "commander";
4
-
5
- function collect(value: string, previous: string[] = []): string[] {
6
- return previous.concat([value]);
7
- }
8
-
9
- const program = new Command();
10
-
11
- program.name("specli").description("Generate CLIs from OpenAPI specs");
12
-
13
- // ─────────────────────────────────────────────────────────────
14
- // exec command - runs spec dynamically (works in both Bun and Node.js)
15
- // ─────────────────────────────────────────────────────────────
16
- program
17
- .command("exec <spec>")
18
- .description("Execute commands from an OpenAPI spec")
19
- .option("--server <url>", "Override server/base URL")
20
- .option(
21
- "--server-var <name=value>",
22
- "Server variable (repeatable)",
23
- collect,
24
- [],
25
- )
26
- .option("--auth <scheme>", "Select auth scheme")
27
- .option("--bearer-token <token>", "Bearer token")
28
- .option("--oauth-token <token>", "OAuth token")
29
- .option("--username <username>", "Basic auth username")
30
- .option("--password <password>", "Basic auth password")
31
- .option("--api-key <key>", "API key value")
32
- .option("--profile <name>", "Profile name")
33
- .option("--json", "Machine-readable output")
34
- .allowUnknownOption()
35
- .allowExcessArguments()
36
- .action(async (spec, options, command) => {
37
- const { execCommand } = await import("./src/cli/exec.ts");
38
- await execCommand(spec, options, command.args);
39
- });
40
-
41
- // ─────────────────────────────────────────────────────────────
42
- // compile command - creates standalone binary (Bun only)
43
- // ─────────────────────────────────────────────────────────────
44
- program
45
- .command("compile <spec>")
46
- .description(
47
- "Compile an OpenAPI spec into a standalone CLI binary (requires Bun)",
48
- )
49
- .option("--name <name>", "Binary name (default: derived from spec)")
50
- .option("--outfile <path>", "Output path (default: ./dist/<name>)")
51
- .option("--target <target>", "Bun compile target (e.g. bun-linux-x64)")
52
- .option("--minify", "Enable minification")
53
- .option("--bytecode", "Enable bytecode compilation")
54
- .option("--no-dotenv", "Disable .env autoload")
55
- .option("--no-bunfig", "Disable bunfig.toml autoload")
56
- .option("--define <k=v>", "Build-time constant (repeatable)", collect, [])
57
- .option("--server <url>", "Default server URL (embedded)")
58
- .option(
59
- "--server-var <k=v>",
60
- "Default server variable (repeatable, embedded)",
61
- collect,
62
- [],
63
- )
64
- .option("--auth <scheme>", "Default auth scheme (embedded)")
65
- .action(async (spec, options) => {
66
- // Check if running in Bun
67
- if (typeof globalThis.Bun === "undefined") {
68
- console.error("Error: The 'compile' command requires Bun.");
69
- console.error("Install Bun: https://bun.sh");
70
- console.error("Then run: bunx specli compile <spec>");
71
- process.exit(1);
72
- }
73
- const { compileCommand } = await import("./src/cli/compile.ts");
74
- await compileCommand(spec, options);
75
- });
76
-
77
- await program.parseAsync(process.argv);
package/dist/cli.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":""}