@xano/sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/CHANGELOG.md +788 -0
  2. package/LICENSE +21 -0
  3. package/README.md +541 -0
  4. package/dist/.build-fingerprint +1 -0
  5. package/dist/agent-file-refresh-ZEMK33AX.js +38 -0
  6. package/dist/answer-shape-K67TAAPY.js +33 -0
  7. package/dist/backend-dir-2U53CIAL.js +39 -0
  8. package/dist/backend-slot-7QXW2QYC.js +28 -0
  9. package/dist/bin.d.ts +1 -0
  10. package/dist/bin.js +255 -0
  11. package/dist/branch-NCRNWQBQ.js +61 -0
  12. package/dist/branch-commands-ACIRCEQJ.js +79 -0
  13. package/dist/bundle.d.ts +223 -0
  14. package/dist/bundle.js +153 -0
  15. package/dist/capture-WAXPD7DR.js +41 -0
  16. package/dist/chunk-27GWNP2I.js +23 -0
  17. package/dist/chunk-2CMJZDCL.js +177 -0
  18. package/dist/chunk-2EZ3ZJZZ.js +302 -0
  19. package/dist/chunk-2GNFDZA2.js +390 -0
  20. package/dist/chunk-2MNLRIOX.js +11 -0
  21. package/dist/chunk-2TFRR6JV.js +104 -0
  22. package/dist/chunk-2ZUEE4EK.js +408 -0
  23. package/dist/chunk-36JUQZVQ.js +22 -0
  24. package/dist/chunk-3DRXWLJ5.js +83 -0
  25. package/dist/chunk-3JDU4VRL.js +137 -0
  26. package/dist/chunk-3KZCLN4Z.js +241 -0
  27. package/dist/chunk-3LDULPRE.js +168 -0
  28. package/dist/chunk-3M4LFYNQ.js +111 -0
  29. package/dist/chunk-3XI5CTUE.js +22 -0
  30. package/dist/chunk-3YW23UFH.js +50 -0
  31. package/dist/chunk-45UIT5T2.js +862 -0
  32. package/dist/chunk-4BW2SG2N.js +46 -0
  33. package/dist/chunk-4KHEMC32.js +79 -0
  34. package/dist/chunk-4POWHT2K.js +321 -0
  35. package/dist/chunk-4Q2GN7NW.js +192 -0
  36. package/dist/chunk-5A2PLKZB.js +70 -0
  37. package/dist/chunk-5FBYXK5P.js +159 -0
  38. package/dist/chunk-5HVXPTU4.js +323 -0
  39. package/dist/chunk-5QU2P5CA.js +304 -0
  40. package/dist/chunk-5V5XU32D.js +191 -0
  41. package/dist/chunk-5ZSO4T2G.js +10 -0
  42. package/dist/chunk-622HUCZT.js +10 -0
  43. package/dist/chunk-65HWOMGV.js +177 -0
  44. package/dist/chunk-6ELFRN3P.js +365 -0
  45. package/dist/chunk-6HO3NCSJ.js +1055 -0
  46. package/dist/chunk-6IUMKYWI.js +457 -0
  47. package/dist/chunk-6KEB3C3U.js +65 -0
  48. package/dist/chunk-6MR5TI5V.js +987 -0
  49. package/dist/chunk-6NNTNXN7.js +157 -0
  50. package/dist/chunk-6PBR37LN.js +97 -0
  51. package/dist/chunk-6QXLMMT3.js +155 -0
  52. package/dist/chunk-6ZGJCBZS.js +224 -0
  53. package/dist/chunk-73IVBKMA.js +250 -0
  54. package/dist/chunk-7G3CTU7I.js +286 -0
  55. package/dist/chunk-A3UDOZB6.js +222 -0
  56. package/dist/chunk-A6E77GDW.js +85 -0
  57. package/dist/chunk-AHJWCYQO.js +660 -0
  58. package/dist/chunk-AKNCFVKZ.js +36 -0
  59. package/dist/chunk-AM4FKL4J.js +237 -0
  60. package/dist/chunk-AN6BL47T.js +26 -0
  61. package/dist/chunk-AOSYVMUS.js +147 -0
  62. package/dist/chunk-APWXY5SL.js +182 -0
  63. package/dist/chunk-AWEIIR2U.js +218 -0
  64. package/dist/chunk-AWQ7BQTQ.js +73 -0
  65. package/dist/chunk-BAUZOWGX.js +393 -0
  66. package/dist/chunk-BHACRS6R.js +940 -0
  67. package/dist/chunk-BWPNT55T.js +680 -0
  68. package/dist/chunk-C6RIMRU4.js +187 -0
  69. package/dist/chunk-CGVQZXYG.js +263 -0
  70. package/dist/chunk-CIMQZRRE.js +162 -0
  71. package/dist/chunk-CJHQKJU4.js +113 -0
  72. package/dist/chunk-CTMO46PK.js +1897 -0
  73. package/dist/chunk-D53J55C5.js +106 -0
  74. package/dist/chunk-D7VGG3WS.js +90 -0
  75. package/dist/chunk-DAD3ONIS.js +245 -0
  76. package/dist/chunk-DGWHAVRG.js +162 -0
  77. package/dist/chunk-DX4QR4B2.js +483 -0
  78. package/dist/chunk-EHP3WPEG.js +21 -0
  79. package/dist/chunk-ELP2HMXC.js +432 -0
  80. package/dist/chunk-ERVIASGL.js +21 -0
  81. package/dist/chunk-ET4Y4XCB.js +865 -0
  82. package/dist/chunk-ETO6LGLD.js +4750 -0
  83. package/dist/chunk-EUUUMY7J.js +24 -0
  84. package/dist/chunk-FQJ2TTHP.js +218 -0
  85. package/dist/chunk-FQOF7E2E.js +133 -0
  86. package/dist/chunk-FWD7AL6N.js +21 -0
  87. package/dist/chunk-FXFV3KU6.js +138 -0
  88. package/dist/chunk-FXRQOWTE.js +171 -0
  89. package/dist/chunk-G554NZNI.js +210 -0
  90. package/dist/chunk-GSGDWJB5.js +13 -0
  91. package/dist/chunk-H2V3N23D.js +66 -0
  92. package/dist/chunk-H5C7MBCR.js +159 -0
  93. package/dist/chunk-HHN734BU.js +371 -0
  94. package/dist/chunk-HRVBLCVJ.js +243 -0
  95. package/dist/chunk-HVRUQXGD.js +1264 -0
  96. package/dist/chunk-I4F5TCJH.js +130 -0
  97. package/dist/chunk-IDOTCMDV.js +57 -0
  98. package/dist/chunk-IGOLHKWF.js +427 -0
  99. package/dist/chunk-JGE7CAWB.js +148 -0
  100. package/dist/chunk-JTUKLCXS.js +92 -0
  101. package/dist/chunk-JZGVVJSI.js +66 -0
  102. package/dist/chunk-K4WX6UUU.js +923 -0
  103. package/dist/chunk-K5BBGTYZ.js +217 -0
  104. package/dist/chunk-K6RXBGUB.js +427 -0
  105. package/dist/chunk-KTSDSD36.js +165 -0
  106. package/dist/chunk-L5JYN3NM.js +1038 -0
  107. package/dist/chunk-LIEOKXKD.js +354 -0
  108. package/dist/chunk-LLNZGEFK.js +51 -0
  109. package/dist/chunk-LPECSJ2J.js +55 -0
  110. package/dist/chunk-LQCMKAJ7.js +413 -0
  111. package/dist/chunk-LRN4ZJCQ.js +1145 -0
  112. package/dist/chunk-MJ4ZVHKN.js +17 -0
  113. package/dist/chunk-MXHSQOC4.js +3061 -0
  114. package/dist/chunk-N5GKCWE5.js +367 -0
  115. package/dist/chunk-NA3PXMEF.js +10 -0
  116. package/dist/chunk-NAQDMEHV.js +76 -0
  117. package/dist/chunk-NWKXM5RD.js +109 -0
  118. package/dist/chunk-NZOWWHU5.js +196 -0
  119. package/dist/chunk-OHX6MIUZ.js +184 -0
  120. package/dist/chunk-OOXWYAA4.js +15 -0
  121. package/dist/chunk-OPHB5ORL.js +1990 -0
  122. package/dist/chunk-OXA6PSZT.js +1725 -0
  123. package/dist/chunk-P2HAGF6H.js +73 -0
  124. package/dist/chunk-PTHVMXZI.js +3036 -0
  125. package/dist/chunk-PZ5AY32C.js +10 -0
  126. package/dist/chunk-Q325JKYB.js +189 -0
  127. package/dist/chunk-Q7DGTQ5G.js +255 -0
  128. package/dist/chunk-QCNYHBL7.js +601 -0
  129. package/dist/chunk-QO6BVGS5.js +145 -0
  130. package/dist/chunk-QXTKSOFI.js +76 -0
  131. package/dist/chunk-ROY4YAEQ.js +66 -0
  132. package/dist/chunk-RTJRZFFY.js +447 -0
  133. package/dist/chunk-SAVJUS2X.js +128 -0
  134. package/dist/chunk-SFLHVCKX.js +173 -0
  135. package/dist/chunk-STSFNCY4.js +127 -0
  136. package/dist/chunk-SWBF2LTK.js +170 -0
  137. package/dist/chunk-T5KELPAR.js +109 -0
  138. package/dist/chunk-TFFGOFVZ.js +1481 -0
  139. package/dist/chunk-TLHIFK4M.js +256 -0
  140. package/dist/chunk-TLQE7ZN3.js +156 -0
  141. package/dist/chunk-TPHWJ7UG.js +1981 -0
  142. package/dist/chunk-TRJCALW3.js +291 -0
  143. package/dist/chunk-TTEIYD5P.js +133 -0
  144. package/dist/chunk-U64O2MXY.js +407 -0
  145. package/dist/chunk-UCQ2VUTG.js +630 -0
  146. package/dist/chunk-UTI5G6OJ.js +44 -0
  147. package/dist/chunk-UVHDMMIP.js +188 -0
  148. package/dist/chunk-UZ6QQWJT.js +120 -0
  149. package/dist/chunk-VAX3UZOY.js +686 -0
  150. package/dist/chunk-W3HBUKFO.js +57 -0
  151. package/dist/chunk-WKQLGKCL.js +2823 -0
  152. package/dist/chunk-WQFNASK4.js +560 -0
  153. package/dist/chunk-WRBKLYSJ.js +224 -0
  154. package/dist/chunk-WTPZRR4I.js +17 -0
  155. package/dist/chunk-WZDJ2LLX.js +2385 -0
  156. package/dist/chunk-X2NL4KUO.js +14 -0
  157. package/dist/chunk-X4DVXBFY.js +38 -0
  158. package/dist/chunk-X677DMZM.js +7050 -0
  159. package/dist/chunk-XBKMWY7F.js +612 -0
  160. package/dist/chunk-XNCP4KYO.js +78 -0
  161. package/dist/chunk-XVBGLISP.js +35 -0
  162. package/dist/chunk-XW6KISBB.js +1192 -0
  163. package/dist/chunk-YGZHHAAB.js +8156 -0
  164. package/dist/chunk-YHEFQUQB.js +186 -0
  165. package/dist/chunk-YLDALTWZ.js +653 -0
  166. package/dist/chunk-YU4HSQW7.js +229 -0
  167. package/dist/chunk-ZDPP6RKB.js +27 -0
  168. package/dist/chunk-ZFDZKNGG.js +194 -0
  169. package/dist/chunk-ZIY7RNUT.js +49 -0
  170. package/dist/chunk-ZYJP6BOO.js +30 -0
  171. package/dist/cli.d.ts +1111 -0
  172. package/dist/cli.js +165 -0
  173. package/dist/codegen-command-VR2GWR6C.js +173 -0
  174. package/dist/codegen.d.ts +115 -0
  175. package/dist/codegen.js +19 -0
  176. package/dist/commands-GJMJ4XYZ.js +76 -0
  177. package/dist/completion-ZQLO6PB6.js +738 -0
  178. package/dist/config-MBYGCAFK.js +136 -0
  179. package/dist/deploy-command-JVZPWHMK.js +180 -0
  180. package/dist/deploy-source-3W45CXMP.js +81 -0
  181. package/dist/dev-env-sync-HN44K4D5.js +188 -0
  182. package/dist/diagnostics-UEAAHWVF.js +30 -0
  183. package/dist/display-name-hint-ABBPVQIR.js +46 -0
  184. package/dist/emit-CyhBDxli.d.ts +7007 -0
  185. package/dist/env-example-refresh-ET5HMMDW.js +126 -0
  186. package/dist/env-pull-command-TNMNB3CV.js +323 -0
  187. package/dist/env-target-O4HRKTGZ.js +40 -0
  188. package/dist/env-var-command-ZIRDCAZA.js +427 -0
  189. package/dist/ephemeral-P7F3PMAD.js +54 -0
  190. package/dist/ephemeral-command-CLJJKOFT.js +592 -0
  191. package/dist/ephemeral-state-PYCBSOGX.js +61 -0
  192. package/dist/file-lock-PT74GWYW.js +10 -0
  193. package/dist/generate-command-AYEOLA26.js +510 -0
  194. package/dist/gitignore-3SJ3WNRG.js +51 -0
  195. package/dist/guards-4EBNCZDC.js +162 -0
  196. package/dist/hosted-file-PSHJB3HX.js +28 -0
  197. package/dist/impersonate-command-5JAS3WSV.js +152 -0
  198. package/dist/import-EQSFU6JC.js +19 -0
  199. package/dist/index.d.ts +5470 -0
  200. package/dist/index.js +371 -0
  201. package/dist/init-command-X2FR4UAK.js +125 -0
  202. package/dist/init-modules-RY7UHAOL.js +50 -0
  203. package/dist/init-web-M4YZSZK6.js +42 -0
  204. package/dist/internal.d.ts +179 -0
  205. package/dist/internal.js +2634 -0
  206. package/dist/io-RC56QSN5.js +26 -0
  207. package/dist/keep-data-merge-7MPLVAVI.js +1119 -0
  208. package/dist/lambda-config-reconcile-OUZ4OYAB.js +116 -0
  209. package/dist/landed-753YLJ5H.js +40 -0
  210. package/dist/landing-record-SU52SKXU.js +61 -0
  211. package/dist/live-diff-YONW2VI3.js +65 -0
  212. package/dist/local-engine-choice-CH5X3W7E.js +79 -0
  213. package/dist/local-engine-command-Z3OL7VOD.js +766 -0
  214. package/dist/local-engine-config-5U3SC434.js +39 -0
  215. package/dist/local-engine-deploy-PCQ4SNPB.js +39 -0
  216. package/dist/local-engine-process-EHTE5LLU.js +63 -0
  217. package/dist/local-engine-state-A4FTRFAF.js +32 -0
  218. package/dist/local-engine-update-check-6L645VBL.js +162 -0
  219. package/dist/lock-MRRHW5GS.js +87 -0
  220. package/dist/lock-commands-2QG25HL7.js +963 -0
  221. package/dist/login-command-QPYRWOXZ.js +538 -0
  222. package/dist/logout-command-WOIQLDP6.js +56 -0
  223. package/dist/loop-ALIZLOSX.js +191 -0
  224. package/dist/marketplace-command-K5YL42NO.js +977 -0
  225. package/dist/marketplace-resolve-LY32JES5.js +40 -0
  226. package/dist/meta-client-YXGPW53C.js +244 -0
  227. package/dist/module-manifest-JFGHU2TC.js +38 -0
  228. package/dist/near-key.d.ts +13 -0
  229. package/dist/near-key.js +8 -0
  230. package/dist/node.d.ts +95 -0
  231. package/dist/node.js +969 -0
  232. package/dist/operation-outcome-TZSESNC7.js +51 -0
  233. package/dist/output-target-AL3I44GG.js +47 -0
  234. package/dist/package-manager-PRAHUSCN.js +34 -0
  235. package/dist/plan-disclosure-6G4MLZKD.js +114 -0
  236. package/dist/plugin-contributions-WRNY5ABG.js +28 -0
  237. package/dist/plugin-prompt-4VA3B4FF.js +20 -0
  238. package/dist/plugin-questions-JTSYA74Q.js +24 -0
  239. package/dist/plugin.d.ts +396 -0
  240. package/dist/plugin.js +1 -0
  241. package/dist/preflight-command-2T5Z36MI.js +321 -0
  242. package/dist/profile-command-AH3PIM4X.js +800 -0
  243. package/dist/profile-pointer-GRWJU3YD.js +31 -0
  244. package/dist/profile-select-74TRDEPD.js +23 -0
  245. package/dist/project-dependency-KSH63ODT.js +35 -0
  246. package/dist/project-sdk-REPPOIBD.js +24 -0
  247. package/dist/promote-command-PCWT5N6S.js +140 -0
  248. package/dist/prompt-II3F3LND.js +27 -0
  249. package/dist/publish-command-TTDUUJI5.js +414 -0
  250. package/dist/pull-command-VBO7C4S3.js +161 -0
  251. package/dist/pull-superseded-GJWLG7XO.js +20 -0
  252. package/dist/release-command-N4ZPKMHR.js +146 -0
  253. package/dist/release-ns-command-3KFDMZ6G.js +1745 -0
  254. package/dist/response-HlXahv4K.d.ts +925 -0
  255. package/dist/retry-command-AS5EVREX.js +34 -0
  256. package/dist/routes-manifest-SNWUVBT6.js +43 -0
  257. package/dist/runtime-XETHVF33.js +14 -0
  258. package/dist/scaffold.d.ts +1911 -0
  259. package/dist/scaffold.js +107 -0
  260. package/dist/secrets-file-LVZD6IIM.js +56 -0
  261. package/dist/secrets-fill-command-TTCPSVXN.js +218 -0
  262. package/dist/seed-VU7C3QYS.js +46 -0
  263. package/dist/sent-writes-N7X4OVXT.js +22 -0
  264. package/dist/source-resolve-S2XA3XZF.js +83 -0
  265. package/dist/static-host-B2Y6AG3W.js +352 -0
  266. package/dist/status-command-RUDXTF7I.js +554 -0
  267. package/dist/store-6VNCD4D7.js +20 -0
  268. package/dist/store-ARM6VMO5.js +98 -0
  269. package/dist/store-DuYfzKlW.d.ts +3144 -0
  270. package/dist/suggest-6FOOYKHG.js +12 -0
  271. package/dist/sveltekit.d.ts +154 -0
  272. package/dist/sveltekit.js +109 -0
  273. package/dist/sync-contributions-UCEROO26.js +415 -0
  274. package/dist/table-ENAVMITR.js +42 -0
  275. package/dist/tables-command-GUPXXSB5.js +156 -0
  276. package/dist/tenant-IIHPOHGP.js +42 -0
  277. package/dist/tenant-command-D5HGI2X4.js +965 -0
  278. package/dist/test-command-TIKZMDPZ.js +476 -0
  279. package/dist/tests-BGGIOK3L.js +26 -0
  280. package/dist/token-NICJUTMT.js +72 -0
  281. package/dist/toolchain-hooks-GHKLUJOH.js +96 -0
  282. package/dist/toolchain-modules-5EAZUONB.js +24 -0
  283. package/dist/tracked-backend-EIBUMDZA.js +80 -0
  284. package/dist/update-check-2W2NLDTC.js +136 -0
  285. package/dist/upgrade-command-QHNFWM7O.js +531 -0
  286. package/dist/verify-rollout-DRCK5TDD.js +61 -0
  287. package/dist/whoami-command-STGINTXH.js +51 -0
  288. package/dist/workspace-2CLHU2LK.js +93 -0
  289. package/dist/workspace-binding-56PIIPCP.js +54 -0
  290. package/dist/workspace-command-JEXQETJD.js +535 -0
  291. package/dist/workspace-env-F2RFMSC5.js +70 -0
  292. package/dist/workspace-export-OJSH2HIW.js +21 -0
  293. package/dist/writable-VA7OISSK.js +25 -0
  294. package/dist/xano-ICFUSPFR.js +42 -0
  295. package/dist/xanosdk-import-GN42TO2B.js +56 -0
  296. package/dist/xanosdk-project-S6DXJONQ.js +41 -0
  297. package/dist/xdo-CxDr2Q1C.d.ts +1371 -0
  298. package/guides/README.md +33 -0
  299. package/guides/authoring.md +921 -0
  300. package/guides/cli.md +401 -0
  301. package/guides/codegen.md +177 -0
  302. package/guides/codes.md +404 -0
  303. package/guides/coverage.md +74 -0
  304. package/guides/deploying.md +1525 -0
  305. package/guides/environment.md +400 -0
  306. package/guides/marketplace.md +415 -0
  307. package/guides/module-contract.md +558 -0
  308. package/guides/object-kinds.md +433 -0
  309. package/guides/project-structure.md +43 -0
  310. package/guides/scaffold.md +351 -0
  311. package/guides/typed-frontend.md +242 -0
  312. package/llms/client.md +63 -0
  313. package/llms/errors.md +56 -0
  314. package/llms/fields.md +176 -0
  315. package/llms/filters.md +183 -0
  316. package/llms/kinds-agent-mcp.md +30 -0
  317. package/llms/kinds-core.md +100 -0
  318. package/llms/kinds-knowledge.md +20 -0
  319. package/llms/kinds-realtime.md +76 -0
  320. package/llms/lambda.md +94 -0
  321. package/llms/legacy.md +44 -0
  322. package/llms/lock.md +40 -0
  323. package/llms/object-kinds.md +34 -0
  324. package/llms/statements-calls.md +62 -0
  325. package/llms/statements-catalog.md +320 -0
  326. package/llms/statements-data.md +66 -0
  327. package/llms/statements-runtime.md +68 -0
  328. package/llms/tests.md +59 -0
  329. package/llms/toolchain.md +16 -0
  330. package/llms/triggers.md +36 -0
  331. package/llms/values.md +29 -0
  332. package/llms-full.txt +2085 -0
  333. package/llms.txt +493 -0
  334. package/manifest.json +11224 -0
  335. package/package.json +162 -0
  336. package/types/lambda-globals.d.ts +129 -0
@@ -0,0 +1,601 @@
1
+ import {
2
+ findRelease,
3
+ listReleases
4
+ } from "./chunk-2ZUEE4EK.js";
5
+ import {
6
+ isSignatureRefusal
7
+ } from "./chunk-AN6BL47T.js";
8
+ import {
9
+ resolveEphemeralName
10
+ } from "./chunk-SWBF2LTK.js";
11
+ import {
12
+ displayNameHint,
13
+ displayNameOwner,
14
+ isShared,
15
+ nearBackendLines,
16
+ nearBackendName,
17
+ selectorFix,
18
+ sentenceCase,
19
+ sharedDisplayHint
20
+ } from "./chunk-UZ6QQWJT.js";
21
+ import {
22
+ getTenant,
23
+ tenantHasWorkspace
24
+ } from "./chunk-A3UDOZB6.js";
25
+ import {
26
+ clearEngineRecordsNamed,
27
+ getEngineRecord,
28
+ listEngineRecords
29
+ } from "./chunk-3M4LFYNQ.js";
30
+ import {
31
+ assertLoopbackUrl
32
+ } from "./chunk-AM4FKL4J.js";
33
+ import {
34
+ clearEnvironment,
35
+ getEnvironment,
36
+ readEphemeralState
37
+ } from "./chunk-5QU2P5CA.js";
38
+ import {
39
+ getEphemeral,
40
+ isExpired
41
+ } from "./chunk-7G3CTU7I.js";
42
+ import {
43
+ pipedYes
44
+ } from "./chunk-T5KELPAR.js";
45
+ import {
46
+ contextFlags
47
+ } from "./chunk-NAQDMEHV.js";
48
+ import {
49
+ TransportError,
50
+ UNTRUSTED_CERTIFICATE,
51
+ bindingFor,
52
+ certificateFailureCode,
53
+ isTimeoutError,
54
+ lastRateLimitRetryAfter
55
+ } from "./chunk-YLDALTWZ.js";
56
+ import {
57
+ CliError,
58
+ EXIT_SOURCE_UNRESOLVABLE,
59
+ safeText
60
+ } from "./chunk-PTHVMXZI.js";
61
+ import {
62
+ suggest,
63
+ suggestAll
64
+ } from "./chunk-UTI5G6OJ.js";
65
+ import {
66
+ shellQuote
67
+ } from "./chunk-5ZSO4T2G.js";
68
+
69
+ // src/emit/name-normalisation.ts
70
+ function differOnlyInNormalisation(a, b) {
71
+ return a !== b && a.normalize("NFC") === b.normalize("NFC");
72
+ }
73
+ function differingCodePoints(a, b) {
74
+ const x = [...a];
75
+ const y = [...b];
76
+ let start = 0;
77
+ while (start < x.length && start < y.length && x[start] === y[start]) start++;
78
+ let end = 0;
79
+ while (end < x.length - start && end < y.length - start && x[x.length - 1 - end] === y[y.length - 1 - end]) end++;
80
+ const points = (chars) => chars.slice(start, chars.length - end).map((c) => `U+${c.codePointAt(0).toString(16).toUpperCase().padStart(4, "0")}`).join(" ");
81
+ return [points(x), points(y)];
82
+ }
83
+ function normalisationNote(typed, candidate) {
84
+ if (!differOnlyInNormalisation(typed, candidate)) return "";
85
+ const [here, there] = differingCodePoints(candidate, typed);
86
+ return ` (it differs from what was typed only in Unicode normalisation: ${here} there, ${there} typed)`;
87
+ }
88
+ function orNamesNoted(typed, names) {
89
+ const q = names.map((n) => `"${safeText(n)}"${normalisationNote(typed, n)}`);
90
+ return q.length <= 1 ? q[0] ?? "" : `${q.slice(0, -1).join(", ")} or ${q[q.length - 1]}`;
91
+ }
92
+
93
+ // src/emit/source-resolve.ts
94
+ var SourceError = class extends Error {
95
+ constructor(message, liveness, kind, suggestion, suggestions) {
96
+ super(message);
97
+ this.liveness = liveness;
98
+ this.kind = kind;
99
+ this.suggestion = suggestion;
100
+ this.suggestions = suggestions;
101
+ this.name = "SourceError";
102
+ }
103
+ liveness;
104
+ kind;
105
+ suggestion;
106
+ suggestions;
107
+ exitCode = EXIT_SOURCE_UNRESOLVABLE;
108
+ };
109
+ var NO_CREDENTIAL = () => Promise.reject(new Error("Internal: a hosted source was resolved without a credential provider."));
110
+ function actualKind(resolved) {
111
+ return resolved.kind === "tenant" && resolved.target.tenantType === "ephemeral" ? "ephemeral" : resolved.kind;
112
+ }
113
+ function describeBackend(resolved) {
114
+ const kind = actualKind(resolved);
115
+ const { label, display } = resolved.target;
116
+ const shown = display !== void 0 && display !== "" && display !== label ? ` (${JSON.stringify(display)})` : "";
117
+ switch (kind) {
118
+ case "ephemeral":
119
+ case "tenant":
120
+ return `${kind} ${JSON.stringify(label)}${shown}`;
121
+ case "workspace":
122
+ return "your workspace";
123
+ case "local-engine":
124
+ return resolved.provenance === "local-engine" ? "your local engine" : `local engine ${JSON.stringify(label)}`;
125
+ default:
126
+ return label;
127
+ }
128
+ }
129
+ function isTransportFailure(err) {
130
+ if (err instanceof TransportError) return true;
131
+ if (isTimeoutError(err) || isTimeoutError(err?.cause)) return true;
132
+ if (!(err instanceof Error)) return false;
133
+ return /could not reach|did not answer|timed out|network|ECONNREFUSED|ENOTFOUND|fetch failed/i.test(
134
+ err.message
135
+ ) || err.name === "TimeoutError" || err.name === "AbortError";
136
+ }
137
+ function isServerError(err) {
138
+ if (isSignatureRefusal(err)) return false;
139
+ const status = err?.status;
140
+ return typeof status === "number" && (status >= 500 && status < 600 || status === RATE_LIMITED);
141
+ }
142
+ var RATE_LIMITED = 429;
143
+ function isRateLimited(err) {
144
+ if (err?.status === RATE_LIMITED) return true;
145
+ const first = err instanceof Error ? err.message.split("\n")[0] ?? "" : "";
146
+ return /\bfailed \(429\b/.test(first);
147
+ }
148
+ function rateLimitedCause() {
149
+ const after = lastRateLimitRetryAfter();
150
+ return `Rate limited${after === void 0 ? "" : ` \u2014 retry after ${after}s`}`;
151
+ }
152
+ function unansweredCause(err) {
153
+ if (certificateFailureCode(err) !== void 0) return "A certificate problem";
154
+ if (isTransportFailure(err)) return "A network failure";
155
+ if (isRateLimited(err)) return rateLimitedCause();
156
+ return "A server error";
157
+ }
158
+ function rateLimitedFailure(err) {
159
+ if (!(err instanceof Error) || err instanceof SourceError || !isRateLimited(err)) return err;
160
+ if (err.exitCode !== void 0 || err.code === "SDK_USAGE") return err;
161
+ const [first = "", ...rest] = err.message.trim().split("\n");
162
+ const failed = new LookupFailedError(
163
+ `${first.trim().replace(/[.:]$/, "")}. ${rateLimitedCause()}: the instance turned this request away before acting on it, so it changed nothing`,
164
+ "unreachable",
165
+ "workspace",
166
+ void 0,
167
+ "Once the wait is over"
168
+ );
169
+ if (rest.length > 0) {
170
+ failed.trailer = `
171
+ ${rest.join("\n")}`;
172
+ failed.message += failed.trailer;
173
+ }
174
+ failed.cause = err;
175
+ return failed;
176
+ }
177
+ function unansweredRead(err, what, kind) {
178
+ if (err instanceof LookupFailedError) return err;
179
+ const transport = isTransportFailure(err);
180
+ if (!transport && !isServerError(err)) return err;
181
+ const message = (err instanceof Error ? err.message : String(err)).trim();
182
+ const head = (message.split("\n")[0] ?? message).trim().replace(/[.:]$/, "");
183
+ const failed = new LookupFailedError(
184
+ `Could not ${what} \u2014 ${head}. ${unansweredCause(err)} \u2014 nothing was changed`,
185
+ "unreachable",
186
+ kind
187
+ );
188
+ failed.cause = err;
189
+ return failed;
190
+ }
191
+ function isUnansweredLookup(err) {
192
+ return isTransportFailure(err) || isServerError(err);
193
+ }
194
+ function clearStale(auth, name, cwd) {
195
+ const tracked = getEnvironment(readEphemeralState(cwd), auth);
196
+ if (tracked?.name === name) return clearEnvironment(cwd, auth);
197
+ return false;
198
+ }
199
+ function listHint(kind) {
200
+ switch (kind) {
201
+ // With this run's credential flags: the list a bare command reads is the
202
+ // machine default account's, not the one this run looked in.
203
+ case "ephemeral":
204
+ return `\`xanosdk ephemeral list${contextFlags()}\` shows the ones that exist`;
205
+ // `tenant:<name>` reaches both kinds, and `tenant list` shows only the
206
+ // standard ones — so a miss names both lists.
207
+ case "tenant":
208
+ return `\`xanosdk tenant list${contextFlags()}\` and \`xanosdk ephemeral list${contextFlags()}\` show the ones that exist`;
209
+ case "release":
210
+ return `\`xanosdk release list${contextFlags()}\` shows the ones that exist`;
211
+ case "local-engine":
212
+ return "`xanosdk local-engine list` shows the ones that are running";
213
+ default:
214
+ return "";
215
+ }
216
+ }
217
+ function gone(kind, name) {
218
+ return new SourceError(`No ${kind} named "${name}". ${listHint(kind)}.`, "gone", kind);
219
+ }
220
+ var LookupFailedError = class _LookupFailedError extends SourceError {
221
+ constructor(head, liveness, kind, rerun = "run this command again", when = head.includes(UNTRUSTED_CERTIFICATE) ? "Once the certificate is trusted" : "Once it is reachable") {
222
+ super(`${head}, and this run exits 8. ${when}, ${rerun}.`, liveness, kind);
223
+ this.head = head;
224
+ this.when = when;
225
+ }
226
+ head;
227
+ when;
228
+ /** Lines below the rerun sentence, carried into {@link withRerun}'s message. */
229
+ trailer = "";
230
+ /** The same failure naming `command` (with `tail`, e.g. " as you ran it") as the rerun. */
231
+ withRerun(command, tail = "", note = "") {
232
+ const next = new _LookupFailedError(this.head, this.liveness, this.kind, `run \`${command}\` again${tail}`, this.when);
233
+ next.message += `${note}${this.trailer}`;
234
+ next.trailer = this.trailer;
235
+ return next;
236
+ }
237
+ };
238
+ function lookupFailed(kind, name, err) {
239
+ const message = (err instanceof Error ? err.message : String(err)).trim();
240
+ const head = err instanceof TransportError ? message.split("\n")[0] ?? message : message;
241
+ const detail = head.trim().replace(/[.:]$/, "");
242
+ return new LookupFailedError(
243
+ `Could not look up ${kind} "${name}": ${detail}. ${unansweredCause(err)}, not a missing ${kind} \u2014 nothing was created or changed`,
244
+ "unreachable",
245
+ kind
246
+ );
247
+ }
248
+ async function lookupEphemeral(auth, name) {
249
+ try {
250
+ return await getEphemeral(auth, { parentWorkspaceId: auth.workspaceId, name });
251
+ } catch (err) {
252
+ if (isUnansweredLookup(err)) throw lookupFailed("ephemeral", name, err);
253
+ throw err;
254
+ }
255
+ }
256
+ function unreachable(kind, name, detail) {
257
+ return new SourceError(
258
+ `The ${kind} "${name}" exists but is not answering: ${detail} Nothing was created \u2014 retry, or check the instance.`,
259
+ "unreachable",
260
+ kind
261
+ );
262
+ }
263
+ async function goneWithHint(err, auth, kind, name, deps) {
264
+ const replaced = kind === "tenant" ? deps.getTenant !== void 0 : deps.getEphemeral !== void 0;
265
+ const lookup = deps.displayNameOf ?? (replaced ? void 0 : displayNameOwner);
266
+ const spell = deps.displayNameFix ?? selectorFix;
267
+ const kinds = kind === "tenant" ? ["tenant", "ephemeral"] : [kind];
268
+ const rows = [];
269
+ if (lookup !== void 0) {
270
+ for (const k of kinds) rows.push(...ownerRows(k, await lookup(auth, k, name).catch(() => void 0)));
271
+ }
272
+ const fixKind = (row) => kind === "tenant" ? "tenant" : row.kind;
273
+ if (rows.length > 1) return sharedDisplayError(err, name, { owners: rows }, (row) => spell(fixKind(row), row.name, true));
274
+ const only = rows[0];
275
+ if (only !== void 0) {
276
+ const fix2 = spell(fixKind(only), only.name);
277
+ return new SourceError(`${err.message}
278
+ ${displayNameHint(only.kind, name, only.name, fix2)}`, err.liveness, err.kind, only.name);
279
+ }
280
+ const nearOf = deps.nearNameOf ?? (lookup === displayNameOwner ? nearBackendName : void 0);
281
+ const near = nearOf === void 0 ? void 0 : await nearOf(auth, kind === "tenant" ? ["tenant", "ephemeral"] : [kind], name).catch(() => void 0);
282
+ if (near === void 0) return err;
283
+ const fix = (n) => sentenceCase(spell(kind === "tenant" ? "tenant" : near.kind, n, true));
284
+ return new SourceError(`${err.message}${nearBackendLines(near, fix)}`, err.liveness, err.kind, near.name, near.names);
285
+ }
286
+ function ownerRows(kind, owner) {
287
+ if (owner === void 0) return [];
288
+ return isShared(owner) ? [...owner.owners] : [{ kind, name: owner, detail: "" }];
289
+ }
290
+ function sharedDisplayError(err, display, shared, fix) {
291
+ const names = shared.owners.map((o) => o.name);
292
+ return new SourceError(`${err.message}
293
+ ${sharedDisplayHint(display, shared, fix)}`, err.liveness, err.kind, names[0], names);
294
+ }
295
+ async function releaseGone(auth, name, deps) {
296
+ const err = gone("release", name);
297
+ const namesOf = deps.releaseNamesOf ?? (deps.findRelease === void 0 ? releaseNames : void 0);
298
+ if (namesOf === void 0) return err;
299
+ const near = suggestAll(name, (await namesOf(auth).catch(() => [])).filter((n) => n !== name));
300
+ return near.length === 0 ? err : new SourceError(`${err.message}
301
+ Did you mean ${orNamesNoted(name, near)}?`, err.liveness, err.kind, near[0], near);
302
+ }
303
+ async function refuseWorkspaceless(resolved, mode, hasWorkspace = tenantHasWorkspace) {
304
+ if (resolved.kind !== "tenant" || resolved.target.tenantType === "ephemeral" || resolved.backend?.kind !== "hosted") return;
305
+ if (await hasWorkspace(resolved.backend.auth, resolved.target.base)) return;
306
+ throw tenantNoWorkspace(resolved.target.env ?? resolved.target.label, resolved.target.display, mode);
307
+ }
308
+ function tenantNoWorkspace(tenant, display, mode) {
309
+ const flags = contextFlags();
310
+ const t = shellQuote(tenant);
311
+ const shown = display !== void 0 && display !== "" && display !== tenant ? ` (${JSON.stringify(display)})` : "";
312
+ const named = `Tenant ${JSON.stringify(tenant)}${shown}`;
313
+ const why = `a tenant on its own domain gets its workspace when its first release lands`;
314
+ const land = `\`xanosdk tenant deploy ${t} <release>${pipedYes()}${flags}\` (\`xanosdk release list${flags}\` names them)`;
315
+ if (mode === "read") {
316
+ return new SourceError(
317
+ `${named} has no workspace yet, so there is nothing to read: ${why}. Land one first: ${land}.`,
318
+ "gone",
319
+ "tenant"
320
+ );
321
+ }
322
+ return new CliError(
323
+ "SDK_USAGE",
324
+ `${named} has no workspace yet, so there is nothing to write to: ${why}. Nothing was written.
325
+ Land a release on it first: ${land}, then run this again.`,
326
+ { details: { reason: "tenant-has-no-workspace", tenant } }
327
+ );
328
+ }
329
+ async function releaseNames(auth) {
330
+ return (await listReleases(auth, { workspaceId: auth.workspaceId })).map((r) => r.name);
331
+ }
332
+ async function resolveSource(source, credential, deps = {}) {
333
+ const cwd = deps.cwd ?? process.cwd();
334
+ if (source.kind === "local-engine") return resolveLocalEngine(source.name, cwd, deps);
335
+ const auth = await credential();
336
+ const hosted = await resolveHosted(auth, source, cwd, deps);
337
+ return {
338
+ ...hosted,
339
+ backend: {
340
+ kind: "hosted",
341
+ auth,
342
+ // An ephemeral and a tenant are each their own host, where workspace 1
343
+ // never matches the credential's and so proves nothing about the binding.
344
+ // A release is an object on the parent, addressed like the workspace.
345
+ binding: bindingFor(auth, hosted.target.workspaceId, hosted.kind === "ephemeral" || hosted.kind === "tenant")
346
+ },
347
+ bearer: auth
348
+ };
349
+ }
350
+ async function resolveHosted(auth, source, cwd, deps) {
351
+ const get = deps.getEphemeral ?? getEphemeral;
352
+ const tenant = deps.getTenant ?? getTenant;
353
+ const release = deps.findRelease ?? findRelease;
354
+ switch (source.kind) {
355
+ case "workspace":
356
+ return {
357
+ kind: "workspace",
358
+ provenance: "workspace",
359
+ target: {
360
+ base: auth.instance.replace(/\/$/, ""),
361
+ workspaceId: auth.workspaceId,
362
+ label: "your workspace"
363
+ }
364
+ };
365
+ case "ephemeral": {
366
+ const name = await resolveEphemeralName(auth, source.name, cwd);
367
+ let summary;
368
+ try {
369
+ summary = await get(auth, { parentWorkspaceId: auth.workspaceId, name });
370
+ } catch (err) {
371
+ if (isUnansweredLookup(err)) {
372
+ throw lookupFailed("ephemeral", name, err);
373
+ }
374
+ throw err;
375
+ }
376
+ if (summary === null) {
377
+ const cleared = clearStale(auth, name, cwd);
378
+ if (cleared) {
379
+ throw new SourceError(
380
+ `No ephemeral named "${name}" \u2014 this project's ephemeral was deleted (cleared this project's record of it). Run \`xanosdk deploy${contextFlags()}\` to create a fresh one.`,
381
+ "gone",
382
+ "ephemeral"
383
+ );
384
+ }
385
+ throw await goneWithHint(
386
+ new SourceError(
387
+ `No ephemeral named "${name}". ${listHint("ephemeral")}${cleared ? " (cleared this project's record of it)" : ""}.`,
388
+ "gone",
389
+ "ephemeral"
390
+ ),
391
+ auth,
392
+ "ephemeral",
393
+ name,
394
+ deps
395
+ );
396
+ }
397
+ if (isExpired(summary.expiresAt)) {
398
+ const cleared = clearStale(auth, name, cwd);
399
+ throw new SourceError(
400
+ `Ephemeral "${name}" has expired. Run \`xanosdk deploy${contextFlags()}\` to create a fresh one${cleared ? " (cleared this project's record of it)" : ""}.`,
401
+ "expired",
402
+ "ephemeral"
403
+ );
404
+ }
405
+ if (summary.url === void 0) {
406
+ throw unreachable("ephemeral", name, "it reports no URL.");
407
+ }
408
+ return {
409
+ kind: "ephemeral",
410
+ provenance: `ephemeral:${name}`,
411
+ // An env's own internal workspace id is always 1, addressed at its own
412
+ // base — which may carry a path prefix, so callers append to it.
413
+ target: {
414
+ base: summary.url.replace(/\/$/, ""),
415
+ workspaceId: 1,
416
+ label: name,
417
+ env: name,
418
+ ...summary.display !== void 0 ? { display: summary.display } : {}
419
+ }
420
+ };
421
+ }
422
+ case "tenant": {
423
+ let summary;
424
+ try {
425
+ summary = await tenant(auth, { workspaceId: auth.workspaceId, name: source.name });
426
+ } catch (err) {
427
+ if (isUnansweredLookup(err)) throw lookupFailed("tenant", source.name, err);
428
+ throw err;
429
+ }
430
+ if (summary === null) throw await goneWithHint(gone("tenant", source.name), auth, "tenant", source.name, deps);
431
+ if (summary.state !== void 0 && !/^(ok|active|ready|running)$/i.test(summary.state)) {
432
+ throw unreachable("tenant", source.name, `its state is "${summary.state}".`);
433
+ }
434
+ if (summary.url === void 0) throw unreachable("tenant", source.name, "it reports no URL.");
435
+ const tenantBase = summary.url.replace(/\/$/, "");
436
+ const mode = deps.workspaceless ?? "read";
437
+ const hasWorkspace = deps.hasWorkspace ?? (deps.getTenant === void 0 ? tenantHasWorkspace : void 0);
438
+ if (mode !== "any" && summary.type !== "ephemeral" && hasWorkspace !== void 0 && !await hasWorkspace(auth, tenantBase)) {
439
+ throw tenantNoWorkspace(source.name, summary.display, mode);
440
+ }
441
+ return {
442
+ kind: "tenant",
443
+ provenance: `tenant:${source.name}`,
444
+ target: {
445
+ base: tenantBase,
446
+ workspaceId: 1,
447
+ label: source.name,
448
+ env: source.name,
449
+ tenantType: summary.type,
450
+ ...summary.display !== void 0 ? { display: summary.display } : {}
451
+ }
452
+ };
453
+ }
454
+ case "release": {
455
+ let found;
456
+ try {
457
+ found = await release(auth, { workspaceId: auth.workspaceId, name: source.name });
458
+ } catch (err) {
459
+ if (isUnansweredLookup(err))
460
+ throw lookupFailed("release", source.name, err);
461
+ throw err;
462
+ }
463
+ if (found === null) throw await releaseGone(auth, source.name, deps);
464
+ if (!found.hasResource) {
465
+ throw new SourceError(
466
+ `Release "${source.name}" exists but its stored contents are missing. Cut it again from a live environment.`,
467
+ "gone",
468
+ "release"
469
+ );
470
+ }
471
+ return {
472
+ kind: "release",
473
+ provenance: `release:${source.name}`,
474
+ // A release is an object on the parent, not a place to send calls.
475
+ target: {
476
+ base: auth.instance.replace(/\/$/, ""),
477
+ workspaceId: auth.workspaceId,
478
+ label: source.name
479
+ },
480
+ release: found
481
+ };
482
+ }
483
+ }
484
+ }
485
+ async function resolveLocalEngine(named, cwd, deps) {
486
+ const env = deps.env ?? process.env;
487
+ const name = named !== void 0 && named !== "" ? named : getEngineRecord(cwd, env)?.name;
488
+ if (name === void 0) {
489
+ throw new SourceError(
490
+ `No local engine is recorded for this project, and no name was given.
491
+ Run \`xanosdk deploy --local-engine\` to stand one up, or name one from \`xanosdk local-engine list\`.` + (deps.deployFallback !== false ? ` Meanwhile \`xanosdk deploy${contextFlags()}\` still deploys to an ephemeral.` : ""),
492
+ "gone",
493
+ "local-engine"
494
+ );
495
+ }
496
+ const running = await (deps.listEngines ?? defaultEnumeration(env, cwd))();
497
+ if (running === void 0) {
498
+ throw new SourceError(
499
+ `No engine is cached on this machine, so nothing here can find "${name}".
500
+ Run \`xanosdk deploy --local-engine\` to fetch one.` + (deps.deployFallback !== false ? ` Meanwhile \`xanosdk deploy${contextFlags()}\` still deploys to an ephemeral.` : ""),
501
+ "gone",
502
+ "local-engine"
503
+ );
504
+ }
505
+ const stale = !running.some((e) => e.name === name) && listEngineRecords(env).some((r) => r.name === name);
506
+ const sweep = deps.sweepOrphans ?? (deps.listEngines === void 0 ? defaultSweep(env) : void 0);
507
+ const swept = stale && sweep !== void 0 ? await sweep() : [];
508
+ const engine = liveEngine(name, running, env, deps.deployFallback !== false, swept, deps.bareName === true);
509
+ return {
510
+ kind: "local-engine",
511
+ provenance: named !== void 0 && named !== "" ? `local-engine:${name}` : "local-engine",
512
+ target: {
513
+ base: engine.url.replace(/\/$/, ""),
514
+ workspaceId: engine.workspaceId,
515
+ label: named !== void 0 && named !== "" ? name : "your local engine"
516
+ },
517
+ backend: { kind: "local", engine },
518
+ // The ENUMERATION's url and token, never a record's: a restarted engine
519
+ // binds a fresh port and re-mints its bearer.
520
+ bearer: { access_token: engine.token, instance: engine.url }
521
+ };
522
+ }
523
+ function liveEngine(name, running, env, deployFallback, swept = [], bareName = false) {
524
+ const recorded = listEngineRecords(env).some((r) => r.name === name);
525
+ const engine = running.find((e) => e.name === name);
526
+ if (engine === void 0) {
527
+ const near = suggest(name, running.map((e) => e.name));
528
+ throw engineNotRunning(
529
+ name,
530
+ recorded ? clearEngineRecordsNamed(name, env).length : 0,
531
+ deployFallback,
532
+ near === void 0 || bareName ? near : `local-engine:${near}`,
533
+ swept
534
+ );
535
+ }
536
+ try {
537
+ assertLoopbackUrl(
538
+ engine.url,
539
+ recorded ? "The engine recorded for this project" : `The engine named "${name}"`
540
+ );
541
+ } catch (err) {
542
+ throw new SourceError(err.message, "unreachable", "local-engine");
543
+ }
544
+ return engine;
545
+ }
546
+ function engineNotRunning(name, clearedProjects, deployFallback = true, nearest, swept = []) {
547
+ const said = [
548
+ ...clearedProjects === 0 ? [] : [clearedProjects === 1 ? "cleared its local record" : `cleared its record in ${clearedProjects} projects`],
549
+ ...swept.length === 0 ? [] : [`stopped ${swept.length === 1 ? "a process" : `${swept.length} processes`} it left running (pid ${swept.join(", ")})`]
550
+ ];
551
+ const tail = said.length === 0 ? "" : ` (${said.join("; ")})`;
552
+ return new SourceError(
553
+ `Local engine "${name}" is not running${tail}.
554
+ ` + // A one-letter slip on a name nobody types by hand — say which one runs.
555
+ (nearest !== void 0 ? `Did you mean \`${nearest}\`? It is running.
556
+ ` : "") + `${listHint("local-engine")}, and \`xanosdk deploy --local-engine\` stands one up.` + (deployFallback ? ` Meanwhile \`xanosdk deploy${contextFlags()}\` still deploys to an ephemeral.` : ""),
557
+ "gone",
558
+ "local-engine",
559
+ nearest
560
+ );
561
+ }
562
+ function defaultSweep(env) {
563
+ return async () => {
564
+ const { stopOrphanedEngineProcesses } = await import("./local-engine-process-EHTE5LLU.js");
565
+ return stopOrphanedEngineProcesses({ env }).stopped;
566
+ };
567
+ }
568
+ function defaultEnumeration(env, cwd) {
569
+ return async () => {
570
+ const { cachedEngineEntry, listEngines } = await import("./local-engine-process-EHTE5LLU.js");
571
+ const entry = cachedEngineEntry(env, cwd);
572
+ return entry === void 0 ? void 0 : listEngines({ entry, env });
573
+ };
574
+ }
575
+
576
+ export {
577
+ differOnlyInNormalisation,
578
+ differingCodePoints,
579
+ normalisationNote,
580
+ orNamesNoted,
581
+ SourceError,
582
+ NO_CREDENTIAL,
583
+ actualKind,
584
+ describeBackend,
585
+ isTransportFailure,
586
+ isServerError,
587
+ isRateLimited,
588
+ rateLimitedCause,
589
+ unansweredCause,
590
+ rateLimitedFailure,
591
+ unansweredRead,
592
+ isUnansweredLookup,
593
+ LookupFailedError,
594
+ lookupFailed,
595
+ lookupEphemeral,
596
+ refuseWorkspaceless,
597
+ tenantNoWorkspace,
598
+ releaseNames,
599
+ resolveSource
600
+ };
601
+ //# sourceMappingURL=chunk-QCNYHBL7.js.map