@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,188 @@
1
+ import {
2
+ reachableInline,
3
+ reachableLines,
4
+ readReachableWorkspaces,
5
+ workspaceIdFix
6
+ } from "./chunk-KTSDSD36.js";
7
+ import {
8
+ credentialRejected,
9
+ getAccessToken
10
+ } from "./chunk-ET4Y4XCB.js";
11
+ import {
12
+ CREDENTIAL_FILE_VERSION,
13
+ UPGRADE_REMEDY,
14
+ credentialFileFlag,
15
+ loginCommand,
16
+ readCredentialFile,
17
+ resolveAuthFilePath
18
+ } from "./chunk-XW6KISBB.js";
19
+ import {
20
+ fetchOrExplain,
21
+ httpFailure,
22
+ parseJsonAnswer
23
+ } from "./chunk-YLDALTWZ.js";
24
+ import {
25
+ profileSourceLabel,
26
+ selectionDocument
27
+ } from "./chunk-QXTKSOFI.js";
28
+ import {
29
+ formatFields,
30
+ isMachineOutput,
31
+ printHuman,
32
+ stdoutStyle,
33
+ warn,
34
+ writeJson
35
+ } from "./chunk-PTHVMXZI.js";
36
+ import {
37
+ shellQuote
38
+ } from "./chunk-5ZSO4T2G.js";
39
+
40
+ // src/emit/whoami-command.ts
41
+ var PROFILE_TIMEOUT_MS = 3e4;
42
+ function workspaceValue(ws, s) {
43
+ return `${ws.id}${ws.name === null ? "" : ` \xB7 ${ws.name}`} ${s.dim(`\xB7 ${ws.credential}`)}`;
44
+ }
45
+ function asString(v) {
46
+ return typeof v === "string" && v !== "" ? v : void 0;
47
+ }
48
+ function rejectedRemedy(auth, args) {
49
+ const p = auth.profile;
50
+ const command = rejectedFixCommand(auth, args);
51
+ if (p === void 0) {
52
+ return auth.credentialType === "token" ? "The meta API token in XANO_META_TOKEN was rejected \u2014 replace it with a valid token for XANO_INSTANCE_URL." : "The environment's refresh credential was rejected \u2014 replace XANO_REFRESH_TOKEN, or unset it to use a stored profile.";
53
+ }
54
+ const what = auth.credentialType === "token" ? "meta API token" : "session";
55
+ const head = `The instance rejected the ${what} stored for profile "${p.name}" (${profileSourceLabel(p.source, p.defaultIn)}). `;
56
+ if (command === null) {
57
+ const newer = args === void 0 ? void 0 : storedSignInTarget(args, p.name).newer;
58
+ return head + `The credential file at ${newer?.path} is version ${newer?.version}, newer than this CLI can write (${CREDENTIAL_FILE_VERSION}) \u2014 ${UPGRADE_REMEDY.replace(/ and try again\.$/, "")}, then replace it from the newer CLI.`;
59
+ }
60
+ return auth.credentialType === "token" ? head + `Replace it with \`${command}\`.` : head + `Sign in again with \`${command}\`.`;
61
+ }
62
+ function asRejectedCredential(err, auth, args) {
63
+ return credentialRejected(err, {
64
+ profile: auth.profile?.name ?? null,
65
+ credentialType: auth.credentialType,
66
+ instance: auth.instance,
67
+ workspaceId: auth.workspaceId,
68
+ signIn: rejectedFixCommand(auth, args)
69
+ });
70
+ }
71
+ function rejectedFixCommand(auth, args) {
72
+ const p = auth.profile;
73
+ if (p === void 0) return null;
74
+ const target = args === void 0 ? {} : storedSignInTarget(args, p.name);
75
+ if (target.newer !== void 0) return null;
76
+ return auth.credentialType === "token" ? `xanosdk profile add ${shellQuote(p.name)}${credentialFileFlag(target.path)} --instance ${auth.instance} --workspace-id ${auth.workspaceId} --force` : loginCommand(p.name, target, ["--force"]).replace(/^xanosdk login(?! --profile)/, `xanosdk login --profile ${shellQuote(p.name)}`);
77
+ }
78
+ function storedSignInTarget(args, profile) {
79
+ let path;
80
+ try {
81
+ path = resolveAuthFilePath(args);
82
+ } catch {
83
+ return {};
84
+ }
85
+ try {
86
+ const file = readCredentialFile(path);
87
+ const raw = file?.profiles[profile];
88
+ return {
89
+ path,
90
+ origin: typeof raw?.auth_host === "string" ? raw.auth_host : void 0,
91
+ ...file !== null && file.version > CREDENTIAL_FILE_VERSION ? { newer: { path, version: file.version } } : {}
92
+ };
93
+ } catch {
94
+ return { path };
95
+ }
96
+ }
97
+ async function fetchProfile(args) {
98
+ const auth = await getAccessToken(args);
99
+ const { access_token, instance } = auth;
100
+ const url = new URL("/api:meta/auth/me", instance);
101
+ const res = await fetchOrExplain(
102
+ url.href,
103
+ {
104
+ headers: { Authorization: `Bearer ${access_token}` },
105
+ signal: AbortSignal.timeout(PROFILE_TIMEOUT_MS)
106
+ },
107
+ "whoami",
108
+ PROFILE_TIMEOUT_MS
109
+ );
110
+ const text = await res.text();
111
+ if (!res.ok) {
112
+ const head = httpFailure("whoami", res, text);
113
+ if (res.status === 401 || res.status === 403) {
114
+ throw asRejectedCredential(new Error(`${head}
115
+ ${rejectedRemedy(auth, args)}`), auth, args);
116
+ }
117
+ throw Object.assign(new Error(head), { status: res.status });
118
+ }
119
+ const data = parseJsonAnswer(text, "whoami", url.href) ?? {};
120
+ return {
121
+ instance,
122
+ user: {
123
+ id: typeof data.id === "number" ? data.id : void 0,
124
+ name: asString(data.name),
125
+ email: asString(data.email)
126
+ },
127
+ workspaceId: auth.workspaceId,
128
+ workspace: await pinnedWorkspace(auth),
129
+ profile: auth.profile ?? null
130
+ };
131
+ }
132
+ async function pinnedWorkspace(auth) {
133
+ const view = { id: auth.workspaceId, name: null, credential: auth.credentialType };
134
+ const all = await readReachableWorkspaces(auth, PROFILE_TIMEOUT_MS);
135
+ if (all === void 0) return view;
136
+ const match = all.find((w) => w.id === auth.workspaceId);
137
+ if (match !== void 0) return { ...view, name: match.name ?? null };
138
+ if (all.length === 0) return view;
139
+ const reach = reachableLines(all);
140
+ warn(`This credential cannot see workspace ${auth.workspaceId}. ${workspaceIdFix(auth)}.`, "workspace.unreachable", [
141
+ `Workspaces you can reach:
142
+ ${reach}`
143
+ ]);
144
+ return {
145
+ ...view,
146
+ note: `this credential cannot see workspace ${auth.workspaceId} \u2014 the ids it can: ${reachableInline(all)}`
147
+ };
148
+ }
149
+ function signedInValue(user, s) {
150
+ const who = [user?.name, user?.email && `<${user.email}>`].filter(Boolean).join(" ");
151
+ const id = user?.id !== void 0 ? ` ${s.dim(`\xB7 id ${user.id}`)}` : "";
152
+ return who !== "" ? `${who}${id}` : s.dim("(unknown user)");
153
+ }
154
+ function profileValue(profile, s) {
155
+ return profile === null ? s.dim("from the environment \xB7 no stored profile") : `${profile.name} ${s.dim(`\xB7 ${profileSourceLabel(profile.source, profile.defaultIn)}`)}`;
156
+ }
157
+ function prettyProfile(p) {
158
+ const s = stdoutStyle();
159
+ return "\n" + formatFields([
160
+ ["Signed in", signedInValue(p.user, s)],
161
+ ["Instance", s.bold(s.cyan(p.instance))],
162
+ ["Workspace", workspaceValue(p.workspace, s)],
163
+ ["Profile", profileValue(p.profile, s)]
164
+ ]);
165
+ }
166
+ async function runWhoamiCommand(args) {
167
+ const profile = await fetchProfile(args).catch(async (err) => {
168
+ const { unansweredRead } = await import("./source-resolve-S2XA3XZF.js");
169
+ throw unansweredRead(err, "read the signed-in user", "workspace");
170
+ });
171
+ if (isMachineOutput(args)) {
172
+ writeJson({ ...profile, profile: selectionDocument(profile.profile) });
173
+ } else {
174
+ printHuman(prettyProfile(profile));
175
+ }
176
+ }
177
+
178
+ export {
179
+ workspaceValue,
180
+ rejectedRemedy,
181
+ asRejectedCredential,
182
+ rejectedFixCommand,
183
+ fetchProfile,
184
+ signedInValue,
185
+ profileValue,
186
+ runWhoamiCommand
187
+ };
188
+ //# sourceMappingURL=chunk-UVHDMMIP.js.map
@@ -0,0 +1,120 @@
1
+ import {
2
+ listTenants
3
+ } from "./chunk-A3UDOZB6.js";
4
+ import {
5
+ listEphemeral
6
+ } from "./chunk-7G3CTU7I.js";
7
+ import {
8
+ shellWord
9
+ } from "./chunk-FWD7AL6N.js";
10
+ import {
11
+ safeText
12
+ } from "./chunk-PTHVMXZI.js";
13
+
14
+ // src/emit/display-name-hint.ts
15
+ function isShared(owner) {
16
+ return typeof owner === "object" && owner !== null && "owners" in owner;
17
+ }
18
+ function ownerRow(kind, r) {
19
+ const parts = [r.state, r.url, r.deployedReleaseId === void 0 ? void 0 : `last release #${r.deployedReleaseId}`].filter(
20
+ (p) => p !== void 0 && p !== ""
21
+ );
22
+ return { kind, name: r.name, detail: parts.join(", ") };
23
+ }
24
+ async function listedOwners(auth, kind, display) {
25
+ const rows = kind === "tenant" ? await listTenants(auth, { workspaceId: auth.workspaceId }) : await listEphemeral(auth, { parentWorkspaceId: auth.workspaceId });
26
+ return rows.filter((t) => t.display === display && t.name !== display).map((r) => ownerRow(kind, r));
27
+ }
28
+ function asOwner(rows) {
29
+ if (rows.length === 0) return void 0;
30
+ return rows.length === 1 ? rows[0].name : { owners: rows };
31
+ }
32
+ async function displayNameOwner(auth, kind, display) {
33
+ try {
34
+ return asOwner(await listedOwners(auth, kind, display));
35
+ } catch {
36
+ return void 0;
37
+ }
38
+ }
39
+ function sharedDisplayHint(display, shared, fix) {
40
+ const kinds = new Set(shared.owners.map((o) => o.kind));
41
+ const noun = kinds.size === 1 ? `${[...kinds][0]}s` : "backends";
42
+ return `"${safeText(display)}" is the display name of ${shared.owners.length} ${noun} \u2014 commands take a name, so pick the one you mean:` + shared.owners.map((o) => `
43
+ ${o.kind} "${safeText(o.name)}"${o.detail === "" ? "" : ` (${safeText(o.detail)})`}: ${fix(o)}`).join("");
44
+ }
45
+ async function nearBackendName(auth, kinds, name, strict = false) {
46
+ const { suggestAll } = await import("./suggest-6FOOYKHG.js");
47
+ const rows = [];
48
+ for (const kind of kinds) {
49
+ const read = kind === "tenant" ? listTenants(auth, { workspaceId: auth.workspaceId }) : listEphemeral(auth, { parentWorkspaceId: auth.workspaceId });
50
+ rows.push(...(strict ? await read : await read.catch(() => [])).map((r) => ({ ...r, kind })));
51
+ }
52
+ const displayed = rows.filter((r) => r.display !== void 0 && r.display !== "" && r.display !== r.name && r.display !== name);
53
+ const near = suggestAll(name, [...rows.map((r) => r.name).filter((n) => n !== name), ...displayed.map((r) => r.display)]);
54
+ if (near.length === 0) return void 0;
55
+ const isName = (hit) => rows.some((r) => r.name === hit);
56
+ const ownersOf = (hit) => isName(hit) ? [hit] : displayed.filter((r) => r.display === hit).map((r) => r.name);
57
+ const names = [...new Set(near.flatMap(ownersOf))];
58
+ const kindOf = (n) => rows.find((r) => r.name === n).kind;
59
+ const first = near[0];
60
+ const displays = {};
61
+ for (const hit of near) if (!isName(hit)) {
62
+ for (const owner of ownersOf(hit)) if (!near.includes(owner)) displays[owner] ??= hit;
63
+ }
64
+ const mixed = new Set(names.map(kindOf)).size > 1;
65
+ return {
66
+ kind: kindOf(names[0]),
67
+ name: names[0],
68
+ ...isName(first) ? {} : { display: first },
69
+ ...names.length > 1 ? {
70
+ names,
71
+ ...Object.keys(displays).length > 0 ? { displays } : {},
72
+ ...mixed ? { kinds: Object.fromEntries(names.map((n) => [n, kindOf(n)])) } : {}
73
+ } : {}
74
+ };
75
+ }
76
+ function nearBackendLabel(near) {
77
+ if (near.names !== void 0 && near.names.length > 1) {
78
+ if (near.kinds !== void 0) return near.names.map((n) => `${near.kinds[n] ?? near.kind} "${safeText(n)}"`).join(" or ");
79
+ return `${near.kind} ${near.names.map((n) => `"${safeText(n)}"`).join(" or ")}`;
80
+ }
81
+ return `${near.kind} "${safeText(near.name)}"${near.display === void 0 ? "" : ` (display name "${safeText(near.display)}")`}`;
82
+ }
83
+ function nearBackendLines(near, fix) {
84
+ if (near.names === void 0 || near.names.length < 2) return `
85
+ Did you mean ${nearBackendLabel(near)}? ${fix(near.name)}`;
86
+ return near.names.map((n) => {
87
+ const display = near.displays?.[n];
88
+ return `
89
+ Did you mean ${near.kinds?.[n] ?? near.kind} "${safeText(n)}"${display === void 0 ? "" : ` (display name "${safeText(display)}")`}? ${fix(n)}`;
90
+ }).join("");
91
+ }
92
+ function sentenceCase(text) {
93
+ return text.charAt(0).toUpperCase() + text.slice(1);
94
+ }
95
+ async function displayNameOwnerOfEither(auth, display) {
96
+ const rows = [];
97
+ for (const kind of ["tenant", "ephemeral"]) rows.push(...await listedOwners(auth, kind, display).catch(() => []));
98
+ if (rows.length === 0) return void 0;
99
+ return rows.length === 1 ? { kind: rows[0].kind, name: rows[0].name } : { owners: rows };
100
+ }
101
+ function displayNameHint(kind, display, name, fix) {
102
+ return `"${safeText(display)}" is the display name of ${kind} "${safeText(name)}" \u2014 ${fix}`;
103
+ }
104
+ function selectorFix(kind, name, typo = false) {
105
+ return `${typo ? "the selector is" : "a selector takes its name:"} \`${kind}:${shellWord(name)}\`.`;
106
+ }
107
+
108
+ export {
109
+ isShared,
110
+ displayNameOwner,
111
+ sharedDisplayHint,
112
+ nearBackendName,
113
+ nearBackendLabel,
114
+ nearBackendLines,
115
+ sentenceCase,
116
+ displayNameOwnerOfEither,
117
+ displayNameHint,
118
+ selectorFix
119
+ };
120
+ //# sourceMappingURL=chunk-UZ6QQWJT.js.map