@credibledata/cred-cli 0.0.103 → 0.0.105

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 (430) hide show
  1. package/README.md +106 -1
  2. package/dist/agent-contract.spec.js +548 -0
  3. package/dist/agent-contract.spec.js.map +1 -0
  4. package/dist/browser.js +72 -0
  5. package/dist/browser.js.map +1 -0
  6. package/dist/browser.spec.js +125 -0
  7. package/dist/browser.spec.js.map +1 -0
  8. package/dist/client/api.js +4137 -1159
  9. package/dist/client/api.js.map +1 -1
  10. package/dist/client-codeassist/api.js +476 -0
  11. package/dist/client-codeassist/api.js.map +1 -0
  12. package/dist/client-codeassist/base.js +69 -0
  13. package/dist/client-codeassist/base.js.map +1 -0
  14. package/dist/client-codeassist/common.js +162 -0
  15. package/dist/client-codeassist/common.js.map +1 -0
  16. package/dist/client-codeassist/configuration.js +44 -0
  17. package/dist/client-codeassist/configuration.js.map +1 -0
  18. package/dist/client-codeassist/index.js +32 -0
  19. package/dist/client-codeassist/index.js.map +1 -0
  20. package/dist/clientconfiguration.js +17 -289
  21. package/dist/clientconfiguration.js.map +1 -1
  22. package/dist/clientconfiguration.spec.js +35 -96
  23. package/dist/clientconfiguration.spec.js.map +1 -1
  24. package/dist/commands/add.js +103 -3
  25. package/dist/commands/add.js.map +1 -1
  26. package/dist/commands/add.spec.js +113 -0
  27. package/dist/commands/add.spec.js.map +1 -0
  28. package/dist/commands/connection/createconnections.js +104 -7
  29. package/dist/commands/connection/createconnections.js.map +1 -1
  30. package/dist/commands/connection/createconnections.spec.js +35 -1
  31. package/dist/commands/connection/createconnections.spec.js.map +1 -1
  32. package/dist/commands/connection/deleteconnection.js +4 -2
  33. package/dist/commands/connection/deleteconnection.js.map +1 -1
  34. package/dist/commands/connection/deleteconnection.spec.js +6 -1
  35. package/dist/commands/connection/deleteconnection.spec.js.map +1 -1
  36. package/dist/commands/connection/listconnections.js +2 -0
  37. package/dist/commands/connection/listconnections.js.map +1 -1
  38. package/dist/commands/connection/updateconnection.js +365 -0
  39. package/dist/commands/connection/updateconnection.js.map +1 -0
  40. package/dist/commands/connection/updateconnection.spec.js +625 -0
  41. package/dist/commands/connection/updateconnection.spec.js.map +1 -0
  42. package/dist/commands/database/createdatabase.js +52 -0
  43. package/dist/commands/database/createdatabase.js.map +1 -0
  44. package/dist/commands/database/database.spec.js +267 -0
  45. package/dist/commands/database/database.spec.js.map +1 -0
  46. package/dist/commands/database/deletedatabase.js +91 -0
  47. package/dist/commands/database/deletedatabase.js.map +1 -0
  48. package/dist/commands/database/getdatabase.js +97 -0
  49. package/dist/commands/database/getdatabase.js.map +1 -0
  50. package/dist/commands/database/listdatabases.js +36 -0
  51. package/dist/commands/database/listdatabases.js.map +1 -0
  52. package/dist/commands/database/shared.js +125 -0
  53. package/dist/commands/database/shared.js.map +1 -0
  54. package/dist/commands/database/shared.spec.js +109 -0
  55. package/dist/commands/database/shared.spec.js.map +1 -0
  56. package/dist/commands/database/updatedatabase.js +39 -0
  57. package/dist/commands/database/updatedatabase.js.map +1 -0
  58. package/dist/commands/environment/createenvironment.js +59 -28
  59. package/dist/commands/environment/createenvironment.js.map +1 -1
  60. package/dist/commands/environment/createenvironment.spec.js +29 -0
  61. package/dist/commands/environment/createenvironment.spec.js.map +1 -1
  62. package/dist/commands/environment/deleteenvironment.js +3 -2
  63. package/dist/commands/environment/deleteenvironment.js.map +1 -1
  64. package/dist/commands/environment/deleteenvironment.spec.js +5 -1
  65. package/dist/commands/environment/deleteenvironment.spec.js.map +1 -1
  66. package/dist/commands/environment/getenvironment.js +1 -0
  67. package/dist/commands/environment/getenvironment.js.map +1 -1
  68. package/dist/commands/environment/listenvironments.js +40 -8
  69. package/dist/commands/environment/listenvironments.js.map +1 -1
  70. package/dist/commands/environment/listenvironments.spec.js +41 -2
  71. package/dist/commands/environment/listenvironments.spec.js.map +1 -1
  72. package/dist/commands/environment/setenvironment.js +145 -6
  73. package/dist/commands/environment/setenvironment.js.map +1 -1
  74. package/dist/commands/environment/setenvironment.spec.js +256 -8
  75. package/dist/commands/environment/setenvironment.spec.js.map +1 -1
  76. package/dist/commands/environment/updateenvironment.js +12 -8
  77. package/dist/commands/environment/updateenvironment.js.map +1 -1
  78. package/dist/commands/environment/updateenvironment.spec.js +36 -2
  79. package/dist/commands/environment/updateenvironment.spec.js.map +1 -1
  80. package/dist/commands/get.js +64 -1
  81. package/dist/commands/get.js.map +1 -1
  82. package/dist/commands/group/addmember.js +3 -1
  83. package/dist/commands/group/addmember.js.map +1 -1
  84. package/dist/commands/group/addmember.spec.js +7 -2
  85. package/dist/commands/group/addmember.spec.js.map +1 -1
  86. package/dist/commands/group/creategroup.js +2 -0
  87. package/dist/commands/group/creategroup.js.map +1 -1
  88. package/dist/commands/group/deletegroup.js +3 -1
  89. package/dist/commands/group/deletegroup.js.map +1 -1
  90. package/dist/commands/group/deletegroup.spec.js +7 -1
  91. package/dist/commands/group/deletegroup.spec.js.map +1 -1
  92. package/dist/commands/group/getgroup.js +2 -0
  93. package/dist/commands/group/getgroup.js.map +1 -1
  94. package/dist/commands/group/listgroups.js +2 -0
  95. package/dist/commands/group/listgroups.js.map +1 -1
  96. package/dist/commands/group/removemember.js +3 -1
  97. package/dist/commands/group/removemember.js.map +1 -1
  98. package/dist/commands/group/removemember.spec.js +7 -2
  99. package/dist/commands/group/removemember.spec.js.map +1 -1
  100. package/dist/commands/groupaccesstoken/deleteToken.js +2 -1
  101. package/dist/commands/groupaccesstoken/deleteToken.js.map +1 -1
  102. package/dist/commands/groupaccesstoken/groupContainer.js +2 -0
  103. package/dist/commands/groupaccesstoken/groupContainer.js.map +1 -1
  104. package/dist/commands/list.js +24 -4
  105. package/dist/commands/list.js.map +1 -1
  106. package/dist/commands/materialization/cancelrun.js +3 -1
  107. package/dist/commands/materialization/cancelrun.js.map +1 -1
  108. package/dist/commands/materialization/getindex.js +2 -0
  109. package/dist/commands/materialization/getindex.js.map +1 -1
  110. package/dist/commands/materialization/getmaterialization.js +2 -0
  111. package/dist/commands/materialization/getmaterialization.js.map +1 -1
  112. package/dist/commands/materialization/getpreaggregate.js +2 -0
  113. package/dist/commands/materialization/getpreaggregate.js.map +1 -1
  114. package/dist/commands/materialization/getrun.js +2 -0
  115. package/dist/commands/materialization/getrun.js.map +1 -1
  116. package/dist/commands/materialization/listindexes.js +2 -0
  117. package/dist/commands/materialization/listindexes.js.map +1 -1
  118. package/dist/commands/materialization/listmaterializations.js +2 -0
  119. package/dist/commands/materialization/listmaterializations.js.map +1 -1
  120. package/dist/commands/materialization/listpreaggregates.js +2 -0
  121. package/dist/commands/materialization/listpreaggregates.js.map +1 -1
  122. package/dist/commands/materialization/listruns.js +3 -1
  123. package/dist/commands/materialization/listruns.js.map +1 -1
  124. package/dist/commands/materialization/rerun.js +3 -1
  125. package/dist/commands/materialization/rerun.js.map +1 -1
  126. package/dist/commands/misc/inquirerHost.js +87 -0
  127. package/dist/commands/misc/inquirerHost.js.map +1 -0
  128. package/dist/commands/misc/inquirerHost.spec.js +91 -0
  129. package/dist/commands/misc/inquirerHost.spec.js.map +1 -0
  130. package/dist/commands/misc/login.js +348 -58
  131. package/dist/commands/misc/login.js.map +1 -1
  132. package/dist/commands/misc/login.spec.js +525 -7
  133. package/dist/commands/misc/login.spec.js.map +1 -1
  134. package/dist/commands/misc/logout.js +26 -3
  135. package/dist/commands/misc/logout.js.map +1 -1
  136. package/dist/commands/misc/logout.spec.js +52 -12
  137. package/dist/commands/misc/logout.spec.js.map +1 -1
  138. package/dist/commands/misc/resolveLoginTarget.spec.js +90 -0
  139. package/dist/commands/misc/resolveLoginTarget.spec.js.map +1 -0
  140. package/dist/commands/misc/scope.spec.js +108 -0
  141. package/dist/commands/misc/scope.spec.js.map +1 -0
  142. package/dist/commands/misc/set-access-token.js +1 -1
  143. package/dist/commands/misc/set-access-token.js.map +1 -1
  144. package/dist/commands/misc/set-access-token.spec.js +13 -2
  145. package/dist/commands/misc/set-access-token.spec.js.map +1 -1
  146. package/dist/commands/misc/setup.js +819 -0
  147. package/dist/commands/misc/setup.js.map +1 -0
  148. package/dist/commands/misc/setup.spec.js +783 -0
  149. package/dist/commands/misc/setup.spec.js.map +1 -0
  150. package/dist/commands/misc/status.js +168 -0
  151. package/dist/commands/misc/status.js.map +1 -0
  152. package/dist/commands/misc/status.spec.js +301 -0
  153. package/dist/commands/misc/status.spec.js.map +1 -0
  154. package/dist/commands/misc/token.js +57 -0
  155. package/dist/commands/misc/token.js.map +1 -0
  156. package/dist/commands/misc/token.spec.js +92 -0
  157. package/dist/commands/misc/token.spec.js.map +1 -0
  158. package/dist/commands/package/deletepackage.js +4 -2
  159. package/dist/commands/package/deletepackage.js.map +1 -1
  160. package/dist/commands/package/deletepackage.spec.js +7 -1
  161. package/dist/commands/package/deletepackage.spec.js.map +1 -1
  162. package/dist/commands/package/getpackage.js +142 -0
  163. package/dist/commands/package/getpackage.js.map +1 -0
  164. package/dist/commands/package/getpackage.spec.js +246 -0
  165. package/dist/commands/package/getpackage.spec.js.map +1 -0
  166. package/dist/commands/package/listpackages.js +2 -0
  167. package/dist/commands/package/listpackages.js.map +1 -1
  168. package/dist/commands/package/publish.archive.spec.js +570 -0
  169. package/dist/commands/package/publish.archive.spec.js.map +1 -0
  170. package/dist/commands/package/publish.js +780 -49
  171. package/dist/commands/package/publish.js.map +1 -1
  172. package/dist/commands/package/publish.spec.js +451 -8
  173. package/dist/commands/package/publish.spec.js.map +1 -1
  174. package/dist/commands/package/updatepackage.js +22 -19
  175. package/dist/commands/package/updatepackage.js.map +1 -1
  176. package/dist/commands/package/updatepackage.spec.js +36 -1
  177. package/dist/commands/package/updatepackage.spec.js.map +1 -1
  178. package/dist/commands/permission/createpermission.js +3 -1
  179. package/dist/commands/permission/createpermission.js.map +1 -1
  180. package/dist/commands/permission/deletepermission.js +6 -3
  181. package/dist/commands/permission/deletepermission.js.map +1 -1
  182. package/dist/commands/permission/getpermission.js +2 -0
  183. package/dist/commands/permission/getpermission.js.map +1 -1
  184. package/dist/commands/permission/listpermissions.js +2 -0
  185. package/dist/commands/permission/listpermissions.js.map +1 -1
  186. package/dist/commands/rm.js +21 -0
  187. package/dist/commands/rm.js.map +1 -1
  188. package/dist/commands/set.js +40 -6
  189. package/dist/commands/set.js.map +1 -1
  190. package/dist/commands/set.spec.js +123 -0
  191. package/dist/commands/set.spec.js.map +1 -0
  192. package/dist/commands/table/addtable.js +155 -0
  193. package/dist/commands/table/addtable.js.map +1 -0
  194. package/dist/commands/table/deletetable.js +45 -0
  195. package/dist/commands/table/deletetable.js.map +1 -0
  196. package/dist/commands/table/gettable.js +32 -0
  197. package/dist/commands/table/gettable.js.map +1 -0
  198. package/dist/commands/table/listtables.js +36 -0
  199. package/dist/commands/table/listtables.js.map +1 -0
  200. package/dist/commands/table/table.spec.js +304 -0
  201. package/dist/commands/table/table.spec.js.map +1 -0
  202. package/dist/commands/table/tablefile.js +195 -0
  203. package/dist/commands/table/tablefile.js.map +1 -0
  204. package/dist/commands/table/tablefile.spec.js +158 -0
  205. package/dist/commands/table/tablefile.spec.js.map +1 -0
  206. package/dist/commands/update.js +21 -0
  207. package/dist/commands/update.js.map +1 -1
  208. package/dist/commands/version/archive-unarchive-version.js +4 -2
  209. package/dist/commands/version/archive-unarchive-version.js.map +1 -1
  210. package/dist/commands/version/archive-unarchive-version.spec.js +6 -1
  211. package/dist/commands/version/archive-unarchive-version.spec.js.map +1 -1
  212. package/dist/commands/version/listversions.js +2 -0
  213. package/dist/commands/version/listversions.js.map +1 -1
  214. package/dist/common/UserGroupId.js +9 -4
  215. package/dist/common/UserGroupId.js.map +1 -1
  216. package/dist/common/UserGroupId.spec.js +5 -0
  217. package/dist/common/UserGroupId.spec.js.map +1 -1
  218. package/dist/constants.js +37 -143
  219. package/dist/constants.js.map +1 -1
  220. package/dist/index.js +487 -90
  221. package/dist/index.js.map +1 -1
  222. package/dist/logger.js +42 -9
  223. package/dist/logger.js.map +1 -1
  224. package/dist/session.js +56 -0
  225. package/dist/session.js.map +1 -0
  226. package/dist/session.spec.js +103 -0
  227. package/dist/session.spec.js.map +1 -0
  228. package/dist/setup-core/briefing.js +176 -0
  229. package/dist/setup-core/briefing.js.map +1 -0
  230. package/dist/setup-core/credstore.js +415 -0
  231. package/dist/setup-core/credstore.js.map +1 -0
  232. package/dist/setup-core/credstore.spec.js +238 -0
  233. package/dist/setup-core/credstore.spec.js.map +1 -0
  234. package/dist/setup-core/environments.js +267 -0
  235. package/dist/setup-core/environments.js.map +1 -0
  236. package/dist/setup-core/flow.e2e.js +165 -0
  237. package/dist/setup-core/flow.e2e.js.map +1 -0
  238. package/dist/setup-core/flow.js +765 -0
  239. package/dist/setup-core/flow.js.map +1 -0
  240. package/dist/setup-core/flow.spec.js +1348 -0
  241. package/dist/setup-core/flow.spec.js.map +1 -0
  242. package/dist/setup-core/folderconfig.js +283 -0
  243. package/dist/setup-core/folderconfig.js.map +1 -0
  244. package/dist/setup-core/git.js +97 -0
  245. package/dist/setup-core/git.js.map +1 -0
  246. package/dist/setup-core/host.js +77 -0
  247. package/dist/setup-core/host.js.map +1 -0
  248. package/dist/setup-core/importconnections.js +470 -0
  249. package/dist/setup-core/importconnections.js.map +1 -0
  250. package/dist/setup-core/importconnections.spec.js +594 -0
  251. package/dist/setup-core/importconnections.spec.js.map +1 -0
  252. package/dist/setup-core/liveness.js +94 -0
  253. package/dist/setup-core/liveness.js.map +1 -0
  254. package/dist/setup-core/liveness.spec.js +59 -0
  255. package/dist/setup-core/liveness.spec.js.map +1 -0
  256. package/dist/setup-core/localpublisherconfig.js +26 -0
  257. package/dist/setup-core/localpublisherconfig.js.map +1 -0
  258. package/dist/setup-core/localpublisherconfig.spec.js +29 -0
  259. package/dist/setup-core/localpublisherconfig.spec.js.map +1 -0
  260. package/dist/setup-core/mcpconfig.js +198 -0
  261. package/dist/setup-core/mcpconfig.js.map +1 -0
  262. package/dist/setup-core/mcpconfig.spec.js +205 -0
  263. package/dist/setup-core/mcpconfig.spec.js.map +1 -0
  264. package/dist/setup-core/packagemanifest.js +55 -0
  265. package/dist/setup-core/packagemanifest.js.map +1 -0
  266. package/dist/setup-core/ports.js +182 -0
  267. package/dist/setup-core/ports.js.map +1 -0
  268. package/dist/setup-core/ports.spec.js +173 -0
  269. package/dist/setup-core/ports.spec.js.map +1 -0
  270. package/dist/setup-core/publisherconfig.js +268 -0
  271. package/dist/setup-core/publisherconfig.js.map +1 -0
  272. package/dist/setup-core/publisherconfig.oracle.js +166 -0
  273. package/dist/setup-core/publisherconfig.oracle.js.map +1 -0
  274. package/dist/setup-core/publisherconfig.spec.js +277 -0
  275. package/dist/setup-core/publisherconfig.spec.js.map +1 -0
  276. package/dist/setup-core/publisherversion.js +26 -0
  277. package/dist/setup-core/publisherversion.js.map +1 -0
  278. package/dist/setup-core/readiness.spec.js +161 -0
  279. package/dist/setup-core/readiness.spec.js.map +1 -0
  280. package/dist/setup-core/readylines.js +169 -0
  281. package/dist/setup-core/readylines.js.map +1 -0
  282. package/dist/setup-core/readylines.spec.js +70 -0
  283. package/dist/setup-core/readylines.spec.js.map +1 -0
  284. package/dist/setup-core/refresh.js +348 -0
  285. package/dist/setup-core/refresh.js.map +1 -0
  286. package/dist/setup-core/refresh.spec.js +501 -0
  287. package/dist/setup-core/refresh.spec.js.map +1 -0
  288. package/dist/setup-core/skills.js +279 -0
  289. package/dist/setup-core/skills.js.map +1 -0
  290. package/dist/setup-core/skills.spec.js +334 -0
  291. package/dist/setup-core/skills.spec.js.map +1 -0
  292. package/dist/setup-core/supervisor.js +879 -0
  293. package/dist/setup-core/supervisor.js.map +1 -0
  294. package/dist/setup-core/supervisor.spec.js +833 -0
  295. package/dist/setup-core/supervisor.spec.js.map +1 -0
  296. package/dist/setup-core/writefile.js +61 -0
  297. package/dist/setup-core/writefile.js.map +1 -0
  298. package/dist/setup-core/writefile.spec.js +68 -0
  299. package/dist/setup-core/writefile.spec.js.map +1 -0
  300. package/dist/utils.js +409 -3
  301. package/dist/utils.js.map +1 -1
  302. package/dist/utils.spec.js +373 -2
  303. package/dist/utils.spec.js.map +1 -1
  304. package/dist/versioncheck-refresh.js +18 -0
  305. package/dist/versioncheck-refresh.js.map +1 -0
  306. package/dist/versioncheck.js +324 -0
  307. package/dist/versioncheck.js.map +1 -0
  308. package/dist/versioncheck.spec.js +587 -0
  309. package/dist/versioncheck.spec.js.map +1 -0
  310. package/node_modules/@credibledata/cli-auth/dist/index.d.ts +86 -0
  311. package/node_modules/@credibledata/cli-auth/dist/index.js +102 -0
  312. package/node_modules/@credibledata/cli-auth/package.json +19 -0
  313. package/package.json +18 -6
  314. package/.github/workflows/build.yml +0 -23
  315. package/.mocharc.json +0 -10
  316. package/.prettierignore +0 -2
  317. package/.prettierrc +0 -4
  318. package/README-DEV.md +0 -40
  319. package/coverage/coverage-summary.json +0 -40
  320. package/coverage/tmp/coverage-2152-1789496974457-0.json +0 -1
  321. package/coverage/tmp/coverage-2153-1789496954404-0.json +0 -1
  322. package/docker/Dockerfile.ci +0 -18
  323. package/docker-compose.yml +0 -18
  324. package/eslint.config.mjs +0 -45
  325. package/generate-client.sh +0 -27
  326. package/mocha.setup.ts +0 -4
  327. package/openapitools.json +0 -10
  328. package/src/client/.openapi-generator/FILES +0 -9
  329. package/src/client/.openapi-generator/VERSION +0 -1
  330. package/src/client/.openapi-generator-ignore +0 -23
  331. package/src/client/api.ts +0 -15999
  332. package/src/client/base.ts +0 -86
  333. package/src/client/common.ts +0 -150
  334. package/src/client/configuration.ts +0 -110
  335. package/src/client/git_push.sh +0 -57
  336. package/src/client/index.ts +0 -18
  337. package/src/clientconfiguration.spec.ts +0 -615
  338. package/src/clientconfiguration.ts +0 -364
  339. package/src/commands/add.ts +0 -191
  340. package/src/commands/connection/createconnections.spec.ts +0 -413
  341. package/src/commands/connection/createconnections.ts +0 -109
  342. package/src/commands/connection/deleteconnection.spec.ts +0 -189
  343. package/src/commands/connection/deleteconnection.ts +0 -57
  344. package/src/commands/connection/listconnections.spec.ts +0 -132
  345. package/src/commands/connection/listconnections.ts +0 -58
  346. package/src/commands/environment/createenvironment.spec.ts +0 -249
  347. package/src/commands/environment/createenvironment.ts +0 -73
  348. package/src/commands/environment/deleteenvironment.spec.ts +0 -152
  349. package/src/commands/environment/deleteenvironment.ts +0 -48
  350. package/src/commands/environment/getenvironment.spec.ts +0 -110
  351. package/src/commands/environment/getenvironment.ts +0 -43
  352. package/src/commands/environment/listenvironments.spec.ts +0 -123
  353. package/src/commands/environment/listenvironments.ts +0 -67
  354. package/src/commands/environment/setenvironment.spec.ts +0 -63
  355. package/src/commands/environment/setenvironment.ts +0 -14
  356. package/src/commands/environment/updateenvironment.spec.ts +0 -386
  357. package/src/commands/environment/updateenvironment.ts +0 -168
  358. package/src/commands/get.ts +0 -153
  359. package/src/commands/group/addmember.spec.ts +0 -257
  360. package/src/commands/group/addmember.ts +0 -85
  361. package/src/commands/group/creategroup.spec.ts +0 -146
  362. package/src/commands/group/creategroup.ts +0 -54
  363. package/src/commands/group/deletegroup.spec.ts +0 -120
  364. package/src/commands/group/deletegroup.ts +0 -45
  365. package/src/commands/group/getgroup.spec.ts +0 -129
  366. package/src/commands/group/getgroup.ts +0 -47
  367. package/src/commands/group/listgroups.spec.ts +0 -137
  368. package/src/commands/group/listgroups.ts +0 -45
  369. package/src/commands/group/removemember.spec.ts +0 -224
  370. package/src/commands/group/removemember.ts +0 -75
  371. package/src/commands/groupaccesstoken/createToken.spec.ts +0 -211
  372. package/src/commands/groupaccesstoken/createToken.ts +0 -72
  373. package/src/commands/groupaccesstoken/deleteToken.spec.ts +0 -147
  374. package/src/commands/groupaccesstoken/deleteToken.ts +0 -29
  375. package/src/commands/groupaccesstoken/groupContainer.ts +0 -83
  376. package/src/commands/groupaccesstoken/listTokens.spec.ts +0 -147
  377. package/src/commands/groupaccesstoken/listTokens.ts +0 -29
  378. package/src/commands/legacy.ts +0 -5
  379. package/src/commands/list.ts +0 -326
  380. package/src/commands/materialization/cancelrun.ts +0 -70
  381. package/src/commands/materialization/getindex.ts +0 -55
  382. package/src/commands/materialization/getmaterialization.ts +0 -57
  383. package/src/commands/materialization/getpreaggregate.ts +0 -58
  384. package/src/commands/materialization/getrun.ts +0 -55
  385. package/src/commands/materialization/listindexes.ts +0 -69
  386. package/src/commands/materialization/listmaterializations.ts +0 -53
  387. package/src/commands/materialization/listpreaggregates.ts +0 -74
  388. package/src/commands/materialization/listruns.ts +0 -77
  389. package/src/commands/materialization/rerun.ts +0 -123
  390. package/src/commands/misc/login.spec.ts +0 -371
  391. package/src/commands/misc/login.ts +0 -343
  392. package/src/commands/misc/logout.spec.ts +0 -32
  393. package/src/commands/misc/logout.ts +0 -9
  394. package/src/commands/misc/loopbackOAuth.ts +0 -127
  395. package/src/commands/misc/set-access-token.spec.ts +0 -95
  396. package/src/commands/misc/set-access-token.ts +0 -32
  397. package/src/commands/package/deletepackage.spec.ts +0 -164
  398. package/src/commands/package/deletepackage.ts +0 -58
  399. package/src/commands/package/listpackages.spec.ts +0 -163
  400. package/src/commands/package/listpackages.ts +0 -74
  401. package/src/commands/package/publish.spec.ts +0 -642
  402. package/src/commands/package/publish.ts +0 -236
  403. package/src/commands/package/updatepackage.spec.ts +0 -319
  404. package/src/commands/package/updatepackage.ts +0 -95
  405. package/src/commands/permission/createpermission.spec.ts +0 -507
  406. package/src/commands/permission/createpermission.ts +0 -181
  407. package/src/commands/permission/deletepermission.ts +0 -117
  408. package/src/commands/permission/getpermission.ts +0 -115
  409. package/src/commands/permission/listpermissions.ts +0 -101
  410. package/src/commands/permission/scope.ts +0 -180
  411. package/src/commands/rm.ts +0 -146
  412. package/src/commands/set.ts +0 -25
  413. package/src/commands/update.ts +0 -107
  414. package/src/commands/version/archive-unarchive-version.spec.ts +0 -456
  415. package/src/commands/version/archive-unarchive-version.ts +0 -108
  416. package/src/commands/version/listversions.spec.ts +0 -138
  417. package/src/commands/version/listversions.ts +0 -45
  418. package/src/common/UserGroupId.spec.ts +0 -115
  419. package/src/common/UserGroupId.ts +0 -137
  420. package/src/constants.spec.ts +0 -111
  421. package/src/constants.ts +0 -228
  422. package/src/index.ts +0 -378
  423. package/src/logger.spec.ts +0 -158
  424. package/src/logger.ts +0 -90
  425. package/src/polyfills/file.polyfill.ts +0 -6
  426. package/src/utils.spec.ts +0 -135
  427. package/src/utils.ts +0 -115
  428. package/src/validator.spec.ts +0 -51
  429. package/src/validator.ts +0 -44
  430. package/tsconfig.json +0 -17
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpconfig.spec.js","sourceRoot":"","sources":["../../src/setup-core/mcpconfig.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PACKAGE_MANIFEST_FILE = void 0;
7
+ exports.ensurePackageManifest = ensurePackageManifest;
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const writefile_1 = require("./writefile");
11
+ /**
12
+ * `publisher.json` — the file that makes a directory a *package* rather than a
13
+ * folder that happens to contain `.malloy` files.
14
+ *
15
+ * Without it the server loads the environment, finds the mounted directory, and
16
+ * then fails the package with *"Package manifest for … does not exist"* — which
17
+ * it reports as a load error while still binding both ports. So adopting an
18
+ * existing checkout (plan §5.4 source B) needs this written, and the plan did
19
+ * not say so: it assumed a directory a user points at is already a package,
20
+ * which is true for a clone of a published package and false for the loose
21
+ * folder of models that "use this directory" is mostly aimed at.
22
+ *
23
+ * Written only when absent. A package that already has a manifest keeps its own
24
+ * name, version, and description — those are the author's, not ours.
25
+ */
26
+ exports.PACKAGE_MANIFEST_FILE = "publisher.json";
27
+ function ensurePackageManifest(directory, fallbackName) {
28
+ const filePath = path_1.default.join(directory, exports.PACKAGE_MANIFEST_FILE);
29
+ try {
30
+ const parsed = JSON.parse(fs_1.default.readFileSync(filePath, "utf-8"));
31
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
32
+ const existingName = typeof parsed.name === "string" && parsed.name
33
+ ? parsed.name
34
+ : fallbackName;
35
+ return {
36
+ filePath,
37
+ action: "kept",
38
+ name: existingName,
39
+ missingVersion: typeof parsed.version !== "string" || !parsed.version,
40
+ };
41
+ }
42
+ // Present but not an object: fall through and replace it, since the
43
+ // server cannot load it either way.
44
+ }
45
+ catch (_a) {
46
+ // Absent or unparseable — write one.
47
+ }
48
+ // `version` is not optional in practice: `cred publish` sends it as the
49
+ // version id, and a manifest without one reached the server as
50
+ // `version undefined` and came back as a 500. `0.0.1` is the conventional
51
+ // first version; the author bumps it from there.
52
+ (0, writefile_1.writeFileAtomic)(filePath, `${JSON.stringify({ name: fallbackName, version: "0.0.1", description: "" }, null, 3)}\n`);
53
+ return { filePath, action: "created", name: fallbackName };
54
+ }
55
+ //# sourceMappingURL=packagemanifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packagemanifest.js","sourceRoot":"","sources":["../../src/setup-core/packagemanifest.ts"],"names":[],"mappings":";;;;;;AAkCA,sDAwCC;AA1ED,4CAAoB;AACpB,gDAAwB;AACxB,2CAA8C;AAE9C;;;;;;;;;;;;;;GAcG;AAEU,QAAA,qBAAqB,GAAG,gBAAgB,CAAC;AActD,SAAgB,qBAAqB,CAClC,SAAiB,EACjB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAAqB,CAAC,CAAC;IAE7D,IAAI,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9D,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClE,MAAM,YAAY,GACf,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI;gBAC3C,CAAC,CAAC,MAAM,CAAC,IAAI;gBACb,CAAC,CAAC,YAAY,CAAC;YACrB,OAAO;gBACJ,QAAQ;gBACR,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,YAAY;gBAClB,cAAc,EACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO;aAC1D,CAAC;QACL,CAAC;QACD,oEAAoE;QACpE,oCAAoC;IACvC,CAAC;IAAC,WAAM,CAAC;QACN,qCAAqC;IACxC,CAAC;IAED,wEAAwE;IACxE,+DAA+D;IAC/D,0EAA0E;IAC1E,iDAAiD;IACjD,IAAA,2BAAe,EACZ,QAAQ,EACR,GAAG,IAAI,CAAC,SAAS,CACd,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,EACzD,IAAI,EACJ,CAAC,CACH,IAAI,CACP,CAAC;IACF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DERIVED_RANGE = exports.MIN_UI_PORT = exports.MAX_UI_PORT = exports.MCP_OFFSET = exports.DEFAULT_MCP_PORT = exports.DEFAULT_UI_PORT = void 0;
16
+ exports.isPortFree = isPortFree;
17
+ exports.pairIsFree = pairIsFree;
18
+ exports.pairForUiPort = pairForUiPort;
19
+ exports.suggestFreePair = suggestFreePair;
20
+ exports.derivePairForDirectory = derivePairForDirectory;
21
+ exports.derivedCandidates = derivedCandidates;
22
+ exports.allocatePortPair = allocatePortPair;
23
+ const crypto_1 = __importDefault(require("crypto"));
24
+ const net_1 = __importDefault(require("net"));
25
+ /**
26
+ * Choosing the port pair a local Publisher session listens on.
27
+ *
28
+ * ## Why not just ask for an ephemeral port
29
+ *
30
+ * The server accepts `--port 0 --mcp_port 0` and reports what it bound, which
31
+ * looks like the easy answer to two sessions colliding. It is the wrong answer,
32
+ * and the server itself says so: with an ephemeral MCP port it refuses to write
33
+ * `.mcp.json` at all, because "the port changes from run to run and a saved
34
+ * config would be wrong next boot".
35
+ *
36
+ * That reasoning applies to us. `.mcp.json` is a file an agent reads tomorrow,
37
+ * not just for the length of this session. A port that moves every run turns it
38
+ * into a file that silently points at nothing — the failure shows up as an agent
39
+ * whose tools have quietly stopped working, which is far worse than a port
40
+ * conflict at startup.
41
+ *
42
+ * So ports must be *stable for a directory*: the same working directory gets the
43
+ * same pair every run, while two different directories get different pairs.
44
+ */
45
+ /** The ports a user recognises, and what we try first. */
46
+ exports.DEFAULT_UI_PORT = 4000;
47
+ exports.DEFAULT_MCP_PORT = 4040;
48
+ /**
49
+ * Where derived pairs are drawn from: the IANA dynamic/private range, above the
50
+ * registered range so we are not squatting on a service someone might install.
51
+ */
52
+ const DERIVED_RANGE_START = 49152;
53
+ const DERIVED_RANGE_END = 65500;
54
+ /** MCP sits this far above the UI port, mirroring the 4000/4040 default. */
55
+ exports.MCP_OFFSET = 40;
56
+ /** Step between pairs, so consecutive derived pairs cannot interleave. */
57
+ const DERIVED_STRIDE = exports.MCP_OFFSET * 2;
58
+ /**
59
+ * How many pairs the range holds. Derived once and shared by the hash and the
60
+ * fallback search, so they cannot disagree about where the range ends.
61
+ */
62
+ const DERIVED_SLOTS = Math.floor((DERIVED_RANGE_END - exports.MCP_OFFSET - DERIVED_RANGE_START) / DERIVED_STRIDE);
63
+ /** Is `port` free to bind on `host`? */
64
+ function isPortFree(port, host = "127.0.0.1") {
65
+ return new Promise((resolve) => {
66
+ const probe = net_1.default.createServer();
67
+ probe.once("error", () => resolve(false));
68
+ probe.once("listening", () => probe.close(() => resolve(true)));
69
+ // exclusive: do not share the port with another handle in this process,
70
+ // which would report free a port we cannot actually own.
71
+ probe.listen({ port, host, exclusive: true });
72
+ });
73
+ }
74
+ function pairIsFree(pair_1) {
75
+ return __awaiter(this, arguments, void 0, function* (pair, host = "127.0.0.1") {
76
+ // Sequential rather than concurrent: the two probes must not race each other
77
+ // for the same port when uiPort and mcpPort happen to be adjacent.
78
+ return ((yield isPortFree(pair.uiPort, host)) &&
79
+ (yield isPortFree(pair.mcpPort, host)));
80
+ });
81
+ }
82
+ /** The pair `--port` names: the UI port, and MCP the usual distance above it. */
83
+ function pairForUiPort(uiPort) {
84
+ return { uiPort, mcpPort: uiPort + exports.MCP_OFFSET };
85
+ }
86
+ /** The highest UI port `--port` accepts, so the MCP port above it is valid. */
87
+ exports.MAX_UI_PORT = 65535 - exports.MCP_OFFSET;
88
+ /** The lowest UI port `--port` accepts: above the privileged range. */
89
+ exports.MIN_UI_PORT = 1024;
90
+ /**
91
+ * A free pair to offer in a port-conflict error, so the fix names a number
92
+ * rather than telling the reader to go find one. The directory's own derived
93
+ * pairs, the ones `cred` would have picked itself; undefined when none in the
94
+ * first few is free.
95
+ */
96
+ function suggestFreePair(directory_1) {
97
+ return __awaiter(this, arguments, void 0, function* (directory, host = "127.0.0.1") {
98
+ for (const candidate of derivedCandidates(directory, 8)) {
99
+ if (yield pairIsFree(candidate, host))
100
+ return candidate;
101
+ }
102
+ return undefined;
103
+ });
104
+ }
105
+ /**
106
+ * The pair a given directory prefers, derived from its path.
107
+ *
108
+ * Deterministic so the same directory lands on the same pair every run, and
109
+ * spread out so two directories are unlikely to collide. Exported for tests and
110
+ * for the caller that wants to report the pair before binding it.
111
+ */
112
+ function derivePairForDirectory(directory) {
113
+ const digest = crypto_1.default.createHash("sha256").update(directory).digest();
114
+ const slot = digest.readUInt32BE(0) % DERIVED_SLOTS;
115
+ return pairForUiPort(DERIVED_RANGE_START + slot * DERIVED_STRIDE);
116
+ }
117
+ /**
118
+ * The pairs to try for a directory, in order, starting at its derived pair.
119
+ *
120
+ * Separate from the probing loop because it is the part with the arithmetic in
121
+ * it, and the part worth asserting directly: the sequence wraps to the bottom of
122
+ * the range rather than stopping at the top, so every directory gets the whole
123
+ * budget. The previous loop walked forward and broke at the range end, which
124
+ * gave a directory whose hash landed near 65500 one or two probes and then said
125
+ * "after 32 attempts".
126
+ *
127
+ * Never longer than the range holds, so `attempts` cannot make it repeat a pair
128
+ * and then report having tried more than it did.
129
+ */
130
+ function derivedCandidates(directory, attempts) {
131
+ const base = derivePairForDirectory(directory);
132
+ const baseSlot = (base.uiPort - DERIVED_RANGE_START) / DERIVED_STRIDE;
133
+ const budget = Math.max(0, Math.min(attempts, DERIVED_SLOTS));
134
+ const pairs = [];
135
+ for (let step = 0; step < budget; step++) {
136
+ pairs.push(pairForUiPort(DERIVED_RANGE_START +
137
+ ((baseSlot + step) % DERIVED_SLOTS) * DERIVED_STRIDE));
138
+ }
139
+ return pairs;
140
+ }
141
+ /** The top and bottom of the derived range, for tests that assert the wrap. */
142
+ exports.DERIVED_RANGE = {
143
+ start: DERIVED_RANGE_START,
144
+ end: DERIVED_RANGE_END,
145
+ stride: DERIVED_STRIDE,
146
+ slots: DERIVED_SLOTS,
147
+ };
148
+ /**
149
+ * Pick the pair this session should bind.
150
+ *
151
+ * Precedence, so a returning user keeps the URL they bookmarked:
152
+ * 1. `preferred` — the pair this directory used last, from `.credible/config.json`.
153
+ * 2. 4000/4040, the memorable default.
154
+ * 3. The pair derived from the directory path, then successive strides from it.
155
+ *
156
+ * @throws SetupError-worthy Error when nothing in the search window is free,
157
+ * which in practice means something is very wrong rather than busy.
158
+ */
159
+ function allocatePortPair(directory_1) {
160
+ return __awaiter(this, arguments, void 0, function* (directory, options = {}) {
161
+ var _a, _b, _c;
162
+ const host = (_a = options.host) !== null && _a !== void 0 ? _a : "127.0.0.1";
163
+ const attempts = (_b = options.attempts) !== null && _b !== void 0 ? _b : 32;
164
+ if (options.preferred && (yield pairIsFree(options.preferred, host))) {
165
+ return Object.assign(Object.assign({}, options.preferred), { derived: options.preferred.uiPort !== exports.DEFAULT_UI_PORT ||
166
+ options.preferred.mcpPort !== exports.DEFAULT_MCP_PORT });
167
+ }
168
+ const fallback = { uiPort: exports.DEFAULT_UI_PORT, mcpPort: exports.DEFAULT_MCP_PORT };
169
+ if (yield pairIsFree(fallback, host)) {
170
+ return Object.assign(Object.assign({}, fallback), { derived: false });
171
+ }
172
+ const candidates = derivedCandidates(directory, attempts);
173
+ for (const candidate of candidates) {
174
+ if (yield pairIsFree(candidate, host)) {
175
+ return Object.assign(Object.assign({}, candidate), { derived: true });
176
+ }
177
+ }
178
+ throw new Error(`Could not find a free port pair for ${directory} after ${candidates.length} attempts. ` +
179
+ `Fix: stop whatever is holding ports around ${(_c = candidates[0]) === null || _c === void 0 ? void 0 : _c.uiPort}, or free ${exports.DEFAULT_UI_PORT} and ${exports.DEFAULT_MCP_PORT}.`);
180
+ });
181
+ }
182
+ //# sourceMappingURL=ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/setup-core/ports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const chai_1 = require("chai");
16
+ const net_1 = __importDefault(require("net"));
17
+ const ports_1 = require("./ports");
18
+ /** Hold a port for the duration of one test. */
19
+ function occupy(port) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ const server = net_1.default.createServer();
22
+ yield new Promise((resolve, reject) => {
23
+ server.once("error", reject);
24
+ server.listen({ port, host: "127.0.0.1", exclusive: true }, () => resolve());
25
+ });
26
+ return () => new Promise((resolve) => server.close(() => resolve()));
27
+ });
28
+ }
29
+ describe("ports", () => {
30
+ describe("derivePairForDirectory", () => {
31
+ it("is deterministic — the same directory always gets the same pair", () => {
32
+ // This is the whole point. An ephemeral port would make `.mcp.json`
33
+ // wrong on the next boot, which is why the server refuses to write one.
34
+ const first = (0, ports_1.derivePairForDirectory)("/home/me/models");
35
+ const second = (0, ports_1.derivePairForDirectory)("/home/me/models");
36
+ (0, chai_1.expect)(first).to.eql(second);
37
+ });
38
+ it("gives different directories different pairs", () => {
39
+ (0, chai_1.expect)((0, ports_1.derivePairForDirectory)("/home/me/a")).to.not.eql((0, ports_1.derivePairForDirectory)("/home/me/b"));
40
+ });
41
+ it("keeps the MCP port 40 above the UI port, as the defaults do", () => {
42
+ const pair = (0, ports_1.derivePairForDirectory)("/home/me/models");
43
+ (0, chai_1.expect)(pair.mcpPort - pair.uiPort).to.equal(40);
44
+ });
45
+ it("stays inside the dynamic/private range", () => {
46
+ for (const dir of ["/a", "/b", "/c/d/e", "/very/long/path/indeed"]) {
47
+ const pair = (0, ports_1.derivePairForDirectory)(dir);
48
+ (0, chai_1.expect)(pair.uiPort).to.be.at.least(49152);
49
+ (0, chai_1.expect)(pair.mcpPort).to.be.at.most(65535);
50
+ }
51
+ });
52
+ });
53
+ describe("derivedCandidates", () => {
54
+ it("starts at the directory's own pair", () => {
55
+ (0, chai_1.expect)((0, ports_1.derivedCandidates)("/some/dir", 3)[0]).to.eql((0, ports_1.derivePairForDirectory)("/some/dir"));
56
+ });
57
+ it("gives every directory the whole budget, wrapping at the range end", () => {
58
+ // A directory whose hash lands near the top used to get one or two
59
+ // probes and then report "after 32 attempts": the search walked forward
60
+ // and broke as soon as a candidate would leave the range. Found by
61
+ // searching for the directory whose base IS the last slot, so the
62
+ // regression is exercised rather than described.
63
+ const lastSlotBase = ports_1.DERIVED_RANGE.start +
64
+ (ports_1.DERIVED_RANGE.slots - 1) * ports_1.DERIVED_RANGE.stride;
65
+ let atTop;
66
+ for (let i = 0; i < 200000 && !atTop; i++) {
67
+ if ((0, ports_1.derivePairForDirectory)(`/d${i}`).uiPort === lastSlotBase) {
68
+ atTop = `/d${i}`;
69
+ }
70
+ }
71
+ (0, chai_1.expect)(atTop, "no directory hashes to the last slot").to.be.a("string");
72
+ const candidates = (0, ports_1.derivedCandidates)(atTop, 32);
73
+ (0, chai_1.expect)(candidates).to.have.lengthOf(32);
74
+ (0, chai_1.expect)(candidates[0].uiPort).to.equal(lastSlotBase);
75
+ // The one after the last slot is the first, not a port outside the
76
+ // range and not the end of the search.
77
+ (0, chai_1.expect)(candidates[1].uiPort).to.equal(ports_1.DERIVED_RANGE.start);
78
+ for (const pair of candidates) {
79
+ (0, chai_1.expect)(pair.uiPort).to.be.at.least(ports_1.DERIVED_RANGE.start);
80
+ (0, chai_1.expect)(pair.mcpPort).to.be.at.most(ports_1.DERIVED_RANGE.end);
81
+ }
82
+ (0, chai_1.expect)(new Set(candidates.map((p) => p.uiPort)).size).to.equal(32);
83
+ });
84
+ it("never repeats a pair, however large the budget", () => {
85
+ // The error message counts what was tried, so a sequence longer than
86
+ // the range holds would claim probes it did not make.
87
+ const candidates = (0, ports_1.derivedCandidates)("/some/dir", ports_1.DERIVED_RANGE.slots + 50);
88
+ (0, chai_1.expect)(candidates).to.have.lengthOf(ports_1.DERIVED_RANGE.slots);
89
+ (0, chai_1.expect)(new Set(candidates.map((p) => p.uiPort)).size).to.equal(ports_1.DERIVED_RANGE.slots);
90
+ });
91
+ });
92
+ describe("isPortFree", () => {
93
+ it("reports an occupied port as not free", () => __awaiter(void 0, void 0, void 0, function* () {
94
+ const pair = (0, ports_1.derivePairForDirectory)("/isPortFree/test");
95
+ const release = yield occupy(pair.uiPort);
96
+ try {
97
+ (0, chai_1.expect)(yield (0, ports_1.isPortFree)(pair.uiPort)).to.equal(false);
98
+ }
99
+ finally {
100
+ yield release();
101
+ }
102
+ (0, chai_1.expect)(yield (0, ports_1.isPortFree)(pair.uiPort)).to.equal(true);
103
+ }));
104
+ });
105
+ describe("allocatePortPair", () => {
106
+ it("prefers the pair this directory used last, so the URL stays stable", () => __awaiter(void 0, void 0, void 0, function* () {
107
+ const preferred = { uiPort: 51000, mcpPort: 51040 };
108
+ const allocation = yield (0, ports_1.allocatePortPair)("/some/dir", { preferred });
109
+ (0, chai_1.expect)(allocation).to.eql(Object.assign(Object.assign({}, preferred), { derived: true }));
110
+ }));
111
+ it("falls back to the memorable default when there is no stored pair", () => __awaiter(void 0, void 0, void 0, function* () {
112
+ // Skip rather than fail if something on this machine already holds 4000
113
+ // — a false failure here would be about the developer's laptop, not the
114
+ // code.
115
+ if (!(yield (0, ports_1.isPortFree)(ports_1.DEFAULT_UI_PORT)) ||
116
+ !(yield (0, ports_1.isPortFree)(ports_1.DEFAULT_MCP_PORT))) {
117
+ return;
118
+ }
119
+ const allocation = yield (0, ports_1.allocatePortPair)("/some/dir");
120
+ (0, chai_1.expect)(allocation).to.eql({
121
+ uiPort: ports_1.DEFAULT_UI_PORT,
122
+ mcpPort: ports_1.DEFAULT_MCP_PORT,
123
+ derived: false,
124
+ });
125
+ }));
126
+ it("derives a pair when the stored one is taken", () => __awaiter(void 0, void 0, void 0, function* () {
127
+ const preferred = { uiPort: 51100, mcpPort: 51140 };
128
+ const release = yield occupy(preferred.uiPort);
129
+ try {
130
+ const allocation = yield (0, ports_1.allocatePortPair)("/derive/me", {
131
+ preferred,
132
+ });
133
+ (0, chai_1.expect)(allocation.uiPort).to.not.equal(preferred.uiPort);
134
+ }
135
+ finally {
136
+ yield release();
137
+ }
138
+ }));
139
+ it("never returns a pair whose MCP port is taken, even if the UI port is free", () => __awaiter(void 0, void 0, void 0, function* () {
140
+ // Both listeners come from one process; a half-free pair fails at boot
141
+ // with EADDRINUSE after setup has already claimed success.
142
+ const preferred = { uiPort: 51200, mcpPort: 51240 };
143
+ const release = yield occupy(preferred.mcpPort);
144
+ try {
145
+ const allocation = yield (0, ports_1.allocatePortPair)("/half/free", {
146
+ preferred,
147
+ });
148
+ (0, chai_1.expect)(allocation.mcpPort).to.not.equal(preferred.mcpPort);
149
+ }
150
+ finally {
151
+ yield release();
152
+ }
153
+ }));
154
+ it("gives up with an actionable message rather than searching forever", () => __awaiter(void 0, void 0, void 0, function* () {
155
+ let thrown;
156
+ try {
157
+ yield (0, ports_1.allocatePortPair)("/nowhere/free", {
158
+ preferred: { uiPort: 1, mcpPort: 2 },
159
+ attempts: 0,
160
+ // Port 4000/4040 may be free on this machine, so force the
161
+ // fallback path by pointing the probe at an unusable host.
162
+ host: "203.0.113.1",
163
+ });
164
+ }
165
+ catch (error) {
166
+ thrown = error;
167
+ }
168
+ (0, chai_1.expect)(thrown === null || thrown === void 0 ? void 0 : thrown.message).to.contain("Could not find a free port pair");
169
+ (0, chai_1.expect)(thrown === null || thrown === void 0 ? void 0 : thrown.message).to.contain("Fix:");
170
+ }));
171
+ });
172
+ });
173
+ //# sourceMappingURL=ports.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.spec.js","sourceRoot":"","sources":["../../src/setup-core/ports.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+BAA8B;AAC9B,8CAAsB;AACtB,mCAQiB;AAEjB,gDAAgD;AAChD,SAAe,MAAM,CAAC,IAAY;;QAC/B,MAAM,MAAM,GAAG,aAAG,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAC9D,OAAO,EAAE,CACX,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;CAAA;AAED,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACpB,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YACxE,oEAAoE;YACpE,wEAAwE;YACxE,MAAM,KAAK,GAAG,IAAA,8BAAsB,EAAC,iBAAiB,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,IAAA,8BAAsB,EAAC,iBAAiB,CAAC,CAAC;YACzD,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACpD,IAAA,aAAM,EAAC,IAAA,8BAAsB,EAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CACpD,IAAA,8BAAsB,EAAC,YAAY,CAAC,CACtC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;YACpE,MAAM,IAAI,GAAG,IAAA,8BAAsB,EAAC,iBAAiB,CAAC,CAAC;YACvD,IAAA,aAAM,EAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAC/C,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,wBAAwB,CAAC,EAAE,CAAC;gBAClE,MAAM,IAAI,GAAG,IAAA,8BAAsB,EAAC,GAAG,CAAC,CAAC;gBACzC,IAAA,aAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1C,IAAA,aAAM,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;QACJ,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC3C,IAAA,aAAM,EAAC,IAAA,yBAAiB,EAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAChD,IAAA,8BAAsB,EAAC,WAAW,CAAC,CACrC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YAC1E,mEAAmE;YACnE,wEAAwE;YACxE,mEAAmE;YACnE,kEAAkE;YAClE,iDAAiD;YACjD,MAAM,YAAY,GACf,qBAAa,CAAC,KAAK;gBACnB,CAAC,qBAAa,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,qBAAa,CAAC,MAAM,CAAC;YACpD,IAAI,KAAyB,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,IAAI,IAAA,8BAAsB,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;oBAC5D,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;gBACpB,CAAC;YACJ,CAAC;YACD,IAAA,aAAM,EAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC1D,QAAQ,CACV,CAAC;YAEF,MAAM,UAAU,GAAG,IAAA,yBAAiB,EAAC,KAAM,EAAE,EAAE,CAAC,CAAC;YACjD,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxC,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACpD,mEAAmE;YACnE,uCAAuC;YACvC,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAa,CAAC,KAAK,CAAC,CAAC;YAC3D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAA,aAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAa,CAAC,KAAK,CAAC,CAAC;gBACxD,IAAA,aAAM,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAa,CAAC,GAAG,CAAC,CAAC;YACzD,CAAC;YACD,IAAA,aAAM,EAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACvD,qEAAqE;YACrE,sDAAsD;YACtD,MAAM,UAAU,GAAG,IAAA,yBAAiB,EACjC,WAAW,EACX,qBAAa,CAAC,KAAK,GAAG,EAAE,CAC1B,CAAC;YACF,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAa,CAAC,KAAK,CAAC,CAAC;YACzD,IAAA,aAAM,EAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAC3D,qBAAa,CAAC,KAAK,CACrB,CAAC;QACL,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,sCAAsC,EAAE,GAAS,EAAE;YACnD,MAAM,IAAI,GAAG,IAAA,8BAAsB,EAAC,kBAAkB,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC;gBACF,IAAA,aAAM,EAAC,MAAM,IAAA,kBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC;oBAAS,CAAC;gBACR,MAAM,OAAO,EAAE,CAAC;YACnB,CAAC;YACD,IAAA,aAAM,EAAC,MAAM,IAAA,kBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC,CAAA,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,oEAAoE,EAAE,GAAS,EAAE;YACjF,MAAM,SAAS,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,MAAM,IAAA,wBAAgB,EAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACtE,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,iCAAM,SAAS,KAAE,OAAO,EAAE,IAAI,IAAG,CAAC;QAC9D,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,GAAS,EAAE;YAC/E,wEAAwE;YACxE,wEAAwE;YACxE,QAAQ;YACR,IACG,CAAC,CAAC,MAAM,IAAA,kBAAU,EAAC,uBAAe,CAAC,CAAC;gBACpC,CAAC,CAAC,MAAM,IAAA,kBAAU,EAAC,wBAAgB,CAAC,CAAC,EACtC,CAAC;gBACA,OAAO;YACV,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,IAAA,wBAAgB,EAAC,WAAW,CAAC,CAAC;YACvD,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;gBACvB,MAAM,EAAE,uBAAe;gBACvB,OAAO,EAAE,wBAAgB;gBACzB,OAAO,EAAE,KAAK;aAChB,CAAC,CAAC;QACN,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAS,EAAE;YAC1D,MAAM,SAAS,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC;gBACF,MAAM,UAAU,GAAG,MAAM,IAAA,wBAAgB,EAAC,YAAY,EAAE;oBACrD,SAAS;iBACX,CAAC,CAAC;gBACH,IAAA,aAAM,EAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC;oBAAS,CAAC;gBACR,MAAM,OAAO,EAAE,CAAC;YACnB,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,GAAS,EAAE;YACxF,uEAAuE;YACvE,2DAA2D;YAC3D,MAAM,SAAS,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,CAAC;gBACF,MAAM,UAAU,GAAG,MAAM,IAAA,wBAAgB,EAAC,YAAY,EAAE;oBACrD,SAAS;iBACX,CAAC,CAAC;gBACH,IAAA,aAAM,EAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC;oBAAS,CAAC;gBACR,MAAM,OAAO,EAAE,CAAC;YACnB,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,GAAS,EAAE;YAChF,IAAI,MAAyB,CAAC;YAC9B,IAAI,CAAC;gBACF,MAAM,IAAA,wBAAgB,EAAC,eAAe,EAAE;oBACrC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;oBACpC,QAAQ,EAAE,CAAC;oBACX,2DAA2D;oBAC3D,2DAA2D;oBAC3D,IAAI,EAAE,aAAa;iBACrB,CAAC,CAAC;YACN,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACd,MAAM,GAAG,KAAc,CAAC;YAC3B,CAAC;YACD,IAAA,aAAM,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YACtE,IAAA,aAAM,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC,CAAA,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC"}