dexto 1.14.4 → 2.0.0-beta.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 (253) hide show
  1. package/dist/cli/auth/billing.d.ts +0 -6
  2. package/dist/cli/auth/billing.d.ts.map +1 -1
  3. package/dist/cli/auth/billing.js +0 -23
  4. package/dist/cli/auth/constants.d.ts +3 -31
  5. package/dist/cli/auth/constants.d.ts.map +1 -1
  6. package/dist/cli/auth/constants.js +9 -33
  7. package/dist/cli/auth/index.d.ts +2 -9
  8. package/dist/cli/auth/index.d.ts.map +1 -1
  9. package/dist/cli/auth/index.js +2 -7
  10. package/dist/cli/auth/sign-in-runtime.d.ts +12 -0
  11. package/dist/cli/auth/sign-in-runtime.d.ts.map +1 -0
  12. package/dist/cli/auth/sign-in-runtime.js +59 -0
  13. package/dist/cli/cloud/app-scopes.d.ts +4 -0
  14. package/dist/cli/cloud/app-scopes.d.ts.map +1 -0
  15. package/dist/cli/cloud/app-scopes.js +19 -0
  16. package/dist/cli/cloud/command.d.ts +143 -0
  17. package/dist/cli/cloud/command.d.ts.map +1 -0
  18. package/dist/cli/cloud/command.js +202 -0
  19. package/dist/cli/cloud/commands/account.d.ts +11 -0
  20. package/dist/cli/cloud/commands/account.d.ts.map +1 -0
  21. package/dist/cli/cloud/commands/account.js +128 -0
  22. package/dist/cli/cloud/commands/agents.d.ts +3 -0
  23. package/dist/cli/cloud/commands/agents.d.ts.map +1 -0
  24. package/dist/cli/cloud/commands/agents.js +524 -0
  25. package/dist/cli/cloud/commands/api.d.ts +3 -0
  26. package/dist/cli/cloud/commands/api.d.ts.map +1 -0
  27. package/dist/cli/cloud/commands/api.js +26 -0
  28. package/dist/cli/cloud/commands/app-files.d.ts +29 -0
  29. package/dist/cli/cloud/commands/app-files.d.ts.map +1 -0
  30. package/dist/cli/cloud/commands/app-files.js +72 -0
  31. package/dist/cli/cloud/commands/automations.d.ts +3 -0
  32. package/dist/cli/cloud/commands/automations.d.ts.map +1 -0
  33. package/dist/cli/cloud/commands/automations.js +232 -0
  34. package/dist/cli/cloud/commands/chats.d.ts +3 -0
  35. package/dist/cli/cloud/commands/chats.d.ts.map +1 -0
  36. package/dist/cli/cloud/commands/chats.js +189 -0
  37. package/dist/cli/cloud/commands/data-deletions.d.ts +3 -0
  38. package/dist/cli/cloud/commands/data-deletions.d.ts.map +1 -0
  39. package/dist/cli/cloud/commands/data-deletions.js +54 -0
  40. package/dist/cli/cloud/commands/deploys.d.ts +10 -0
  41. package/dist/cli/cloud/commands/deploys.d.ts.map +1 -0
  42. package/dist/cli/cloud/commands/deploys.js +223 -0
  43. package/dist/cli/cloud/commands/drive.d.ts +12 -0
  44. package/dist/cli/cloud/commands/drive.d.ts.map +1 -0
  45. package/dist/cli/cloud/commands/drive.js +320 -0
  46. package/dist/cli/cloud/commands/files.d.ts +24 -0
  47. package/dist/cli/cloud/commands/files.d.ts.map +1 -0
  48. package/dist/cli/cloud/commands/files.js +282 -0
  49. package/dist/cli/cloud/commands/find.d.ts +3 -0
  50. package/dist/cli/cloud/commands/find.d.ts.map +1 -0
  51. package/dist/cli/cloud/commands/find.js +63 -0
  52. package/dist/cli/cloud/commands/models.d.ts +3 -0
  53. package/dist/cli/cloud/commands/models.d.ts.map +1 -0
  54. package/dist/cli/cloud/commands/models.js +248 -0
  55. package/dist/cli/cloud/commands/profile.d.ts +3 -0
  56. package/dist/cli/cloud/commands/profile.d.ts.map +1 -0
  57. package/dist/cli/cloud/commands/profile.js +119 -0
  58. package/dist/cli/cloud/commands/projects.d.ts +5 -0
  59. package/dist/cli/cloud/commands/projects.d.ts.map +1 -0
  60. package/dist/cli/cloud/commands/projects.js +66 -0
  61. package/dist/cli/cloud/commands/publish.d.ts +3 -0
  62. package/dist/cli/cloud/commands/publish.d.ts.map +1 -0
  63. package/dist/cli/cloud/commands/publish.js +138 -0
  64. package/dist/cli/cloud/commands/sandboxes.d.ts +3 -0
  65. package/dist/cli/cloud/commands/sandboxes.d.ts.map +1 -0
  66. package/dist/cli/cloud/commands/sandboxes.js +265 -0
  67. package/dist/cli/cloud/commands/secrets.d.ts +3 -0
  68. package/dist/cli/cloud/commands/secrets.d.ts.map +1 -0
  69. package/dist/cli/cloud/commands/secrets.js +110 -0
  70. package/dist/cli/cloud/commands/skills.d.ts +3 -0
  71. package/dist/cli/cloud/commands/skills.d.ts.map +1 -0
  72. package/dist/cli/cloud/commands/skills.js +202 -0
  73. package/dist/cli/cloud/commands/web.d.ts +3 -0
  74. package/dist/cli/cloud/commands/web.d.ts.map +1 -0
  75. package/dist/cli/cloud/commands/web.js +53 -0
  76. package/dist/cli/cloud/commands/workspace-apps.d.ts +58 -0
  77. package/dist/cli/cloud/commands/workspace-apps.d.ts.map +1 -0
  78. package/dist/cli/cloud/commands/workspace-apps.js +656 -0
  79. package/dist/cli/cloud/commands/workspace.d.ts +36 -0
  80. package/dist/cli/cloud/commands/workspace.d.ts.map +1 -0
  81. package/dist/cli/cloud/commands/workspace.js +279 -0
  82. package/dist/cli/cloud/connection.d.ts +33 -0
  83. package/dist/cli/cloud/connection.d.ts.map +1 -0
  84. package/dist/cli/cloud/connection.js +38 -0
  85. package/dist/cli/cloud/events.d.ts +63 -0
  86. package/dist/cli/cloud/events.d.ts.map +1 -0
  87. package/dist/cli/cloud/events.js +72 -0
  88. package/dist/cli/cloud/host.d.ts +9 -0
  89. package/dist/cli/cloud/host.d.ts.map +1 -0
  90. package/dist/cli/cloud/host.js +105 -0
  91. package/dist/cli/cloud/local-chats.d.ts +73 -0
  92. package/dist/cli/cloud/local-chats.d.ts.map +1 -0
  93. package/dist/cli/cloud/local-chats.js +441 -0
  94. package/dist/cli/cloud/output.d.ts +34 -0
  95. package/dist/cli/cloud/output.d.ts.map +1 -0
  96. package/dist/cli/cloud/output.js +76 -0
  97. package/dist/cli/cloud/run.d.ts +26 -0
  98. package/dist/cli/cloud/run.d.ts.map +1 -0
  99. package/dist/cli/cloud/run.js +444 -0
  100. package/dist/cli/cloud/runtime.d.ts +33 -0
  101. package/dist/cli/cloud/runtime.d.ts.map +1 -0
  102. package/dist/cli/cloud/runtime.js +86 -0
  103. package/dist/cli/cloud/tar.d.ts +9 -0
  104. package/dist/cli/cloud/tar.d.ts.map +1 -0
  105. package/dist/cli/cloud/tar.js +69 -0
  106. package/dist/cli/cloud/transfer.d.ts +13 -0
  107. package/dist/cli/cloud/transfer.d.ts.map +1 -0
  108. package/dist/cli/cloud/transfer.js +35 -0
  109. package/dist/cli/cloud/v1.d.ts +19 -0
  110. package/dist/cli/cloud/v1.d.ts.map +1 -0
  111. package/dist/cli/cloud/v1.js +65 -0
  112. package/dist/cli/cloud/zip.d.ts +8 -0
  113. package/dist/cli/cloud/zip.d.ts.map +1 -0
  114. package/dist/cli/cloud/zip.js +66 -0
  115. package/dist/cli/commands/auth/sign-in-commands.d.ts +62 -0
  116. package/dist/cli/commands/auth/sign-in-commands.d.ts.map +1 -0
  117. package/dist/cli/commands/auth/sign-in-commands.js +247 -0
  118. package/dist/cli/commands/auth/sign-in-context.d.ts +16 -0
  119. package/dist/cli/commands/auth/sign-in-context.d.ts.map +1 -0
  120. package/dist/cli/commands/auth/sign-in-context.js +68 -0
  121. package/dist/cli/commands/cloud/register.d.ts +5 -0
  122. package/dist/cli/commands/cloud/register.d.ts.map +1 -1
  123. package/dist/cli/commands/cloud/register.js +42 -24
  124. package/dist/cli/commands/create-app.js +5 -6
  125. package/dist/cli/commands/create-image.d.ts.map +1 -1
  126. package/dist/cli/commands/create-image.js +9 -10
  127. package/dist/cli/commands/index.d.ts +0 -2
  128. package/dist/cli/commands/index.d.ts.map +1 -1
  129. package/dist/cli/commands/index.js +0 -2
  130. package/dist/cli/commands/init.d.ts +0 -2
  131. package/dist/cli/commands/init.d.ts.map +1 -1
  132. package/dist/cli/commands/init.js +5 -26
  133. package/dist/cli/commands/run/headless.js +2 -2
  134. package/dist/cli/commands/run/output.d.ts +29 -10
  135. package/dist/cli/commands/run/output.d.ts.map +1 -1
  136. package/dist/cli/commands/run/output.js +44 -22
  137. package/dist/cli/commands/run/register.d.ts.map +1 -1
  138. package/dist/cli/commands/run/register.js +21 -9
  139. package/dist/cli/commands/session/register.d.ts.map +1 -1
  140. package/dist/cli/commands/session/register.js +51 -21
  141. package/dist/cli/commands/session-commands.js +1 -1
  142. package/dist/cli/commands/setup.js +17 -14
  143. package/dist/cli/help-json.d.ts +22 -0
  144. package/dist/cli/help-json.d.ts.map +1 -0
  145. package/dist/cli/help-json.js +20 -0
  146. package/dist/cli/modes/cli.d.ts.map +1 -1
  147. package/dist/cli/modes/cli.js +42 -9
  148. package/dist/cli/modes/server.js +8 -8
  149. package/dist/cli/modes/web.js +3 -3
  150. package/dist/cli/utils/dexto-auth-check.d.ts +1 -1
  151. package/dist/cli/utils/dexto-auth-check.d.ts.map +1 -1
  152. package/dist/cli/utils/dexto-auth-check.js +4 -5
  153. package/dist/cli/utils/dexto-setup.d.ts +4 -5
  154. package/dist/cli/utils/dexto-setup.d.ts.map +1 -1
  155. package/dist/cli/utils/dexto-setup.js +17 -14
  156. package/dist/cli/utils/provider-setup.js +1 -1
  157. package/dist/cli/utils/scaffolding-utils.d.ts +9 -3
  158. package/dist/cli/utils/scaffolding-utils.d.ts.map +1 -1
  159. package/dist/cli/utils/scaffolding-utils.js +48 -40
  160. package/dist/cli/utils/version-check.d.ts.map +1 -1
  161. package/dist/cli/utils/version-check.js +2 -1
  162. package/dist/index-main.js +33 -65
  163. package/package.json +8 -7
  164. package/dist/cli/auth/api-client.d.ts +0 -125
  165. package/dist/cli/auth/api-client.d.ts.map +0 -1
  166. package/dist/cli/auth/api-client.js +0 -585
  167. package/dist/cli/auth/device.d.ts +0 -14
  168. package/dist/cli/auth/device.d.ts.map +0 -1
  169. package/dist/cli/auth/device.js +0 -84
  170. package/dist/cli/auth/dexto-api-key.d.ts +0 -34
  171. package/dist/cli/auth/dexto-api-key.d.ts.map +0 -1
  172. package/dist/cli/auth/dexto-api-key.js +0 -160
  173. package/dist/cli/auth/login-persistence.d.ts +0 -15
  174. package/dist/cli/auth/login-persistence.d.ts.map +0 -1
  175. package/dist/cli/auth/login-persistence.js +0 -72
  176. package/dist/cli/auth/oauth.d.ts +0 -39
  177. package/dist/cli/auth/oauth.d.ts.map +0 -1
  178. package/dist/cli/auth/oauth.js +0 -434
  179. package/dist/cli/auth/service.d.ts +0 -24
  180. package/dist/cli/auth/service.d.ts.map +0 -1
  181. package/dist/cli/auth/service.js +0 -161
  182. package/dist/cli/auth/types.d.ts +0 -11
  183. package/dist/cli/auth/types.d.ts.map +0 -1
  184. package/dist/cli/auth/types.js +0 -1
  185. package/dist/cli/cloud-chat.d.ts +0 -18
  186. package/dist/cli/cloud-chat.d.ts.map +0 -1
  187. package/dist/cli/cloud-chat.js +0 -734
  188. package/dist/cli/commands/auth/index.d.ts +0 -4
  189. package/dist/cli/commands/auth/index.d.ts.map +0 -1
  190. package/dist/cli/commands/auth/index.js +0 -4
  191. package/dist/cli/commands/auth/login.d.ts +0 -12
  192. package/dist/cli/commands/auth/login.d.ts.map +0 -1
  193. package/dist/cli/commands/auth/login.js +0 -153
  194. package/dist/cli/commands/auth/logout.d.ts +0 -5
  195. package/dist/cli/commands/auth/logout.d.ts.map +0 -1
  196. package/dist/cli/commands/auth/logout.js +0 -81
  197. package/dist/cli/commands/auth/register.d.ts +0 -3
  198. package/dist/cli/commands/auth/register.d.ts.map +0 -1
  199. package/dist/cli/commands/auth/register.js +0 -96
  200. package/dist/cli/commands/auth/status.d.ts +0 -2
  201. package/dist/cli/commands/auth/status.d.ts.map +0 -1
  202. package/dist/cli/commands/auth/status.js +0 -22
  203. package/dist/cli/commands/billing/index.d.ts +0 -2
  204. package/dist/cli/commands/billing/index.d.ts.map +0 -1
  205. package/dist/cli/commands/billing/index.js +0 -2
  206. package/dist/cli/commands/billing/register.d.ts +0 -3
  207. package/dist/cli/commands/billing/register.d.ts.map +0 -1
  208. package/dist/cli/commands/billing/register.js +0 -20
  209. package/dist/cli/commands/billing/status.d.ts +0 -8
  210. package/dist/cli/commands/billing/status.d.ts.map +0 -1
  211. package/dist/cli/commands/billing/status.js +0 -71
  212. package/dist/cli/commands/cloud/discovery.d.ts +0 -17
  213. package/dist/cli/commands/cloud/discovery.d.ts.map +0 -1
  214. package/dist/cli/commands/cloud/discovery.js +0 -88
  215. package/dist/cli/commands/deploy/client.d.ts +0 -113
  216. package/dist/cli/commands/deploy/client.d.ts.map +0 -1
  217. package/dist/cli/commands/deploy/client.js +0 -519
  218. package/dist/cli/commands/deploy/config.d.ts +0 -37
  219. package/dist/cli/commands/deploy/config.d.ts.map +0 -1
  220. package/dist/cli/commands/deploy/config.js +0 -144
  221. package/dist/cli/commands/deploy/entry-agent.d.ts +0 -3
  222. package/dist/cli/commands/deploy/entry-agent.d.ts.map +0 -1
  223. package/dist/cli/commands/deploy/entry-agent.js +0 -70
  224. package/dist/cli/commands/deploy/index.d.ts +0 -12
  225. package/dist/cli/commands/deploy/index.d.ts.map +0 -1
  226. package/dist/cli/commands/deploy/index.js +0 -370
  227. package/dist/cli/commands/deploy/links.d.ts +0 -3
  228. package/dist/cli/commands/deploy/links.d.ts.map +0 -1
  229. package/dist/cli/commands/deploy/links.js +0 -53
  230. package/dist/cli/commands/deploy/register.d.ts +0 -6
  231. package/dist/cli/commands/deploy/register.d.ts.map +0 -1
  232. package/dist/cli/commands/deploy/register.js +0 -128
  233. package/dist/cli/commands/deploy/snapshot.d.ts +0 -12
  234. package/dist/cli/commands/deploy/snapshot.d.ts.map +0 -1
  235. package/dist/cli/commands/deploy/snapshot.js +0 -76
  236. package/dist/cli/commands/deploy/state.d.ts +0 -13
  237. package/dist/cli/commands/deploy/state.d.ts.map +0 -1
  238. package/dist/cli/commands/deploy/state.js +0 -122
  239. package/dist/cli/commands/span/register.d.ts +0 -6
  240. package/dist/cli/commands/span/register.d.ts.map +0 -1
  241. package/dist/cli/commands/span/register.js +0 -25
  242. package/dist/cli/commands/trace/client.d.ts +0 -98
  243. package/dist/cli/commands/trace/client.d.ts.map +0 -1
  244. package/dist/cli/commands/trace/client.js +0 -150
  245. package/dist/cli/commands/trace/format.d.ts +0 -5
  246. package/dist/cli/commands/trace/format.d.ts.map +0 -1
  247. package/dist/cli/commands/trace/format.js +0 -58
  248. package/dist/cli/commands/trace/index.d.ts +0 -21
  249. package/dist/cli/commands/trace/index.d.ts.map +0 -1
  250. package/dist/cli/commands/trace/index.js +0 -49
  251. package/dist/cli/commands/trace/register.d.ts +0 -6
  252. package/dist/cli/commands/trace/register.d.ts.map +0 -1
  253. package/dist/cli/commands/trace/register.js +0 -71
@@ -1,55 +1,63 @@
1
1
  import fs from 'fs-extra';
2
2
  import path from 'path';
3
- import { existsSync, readFileSync } from 'node:fs';
3
+ import { existsSync, readFileSync, realpathSync } from 'node:fs';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  import chalk from 'chalk';
6
6
  import { getDextoPackageRoot } from '@dexto/agent-management';
7
7
  import { executeWithTimeout } from './execute.js';
8
8
  import { textOrExit } from './prompt-helpers.js';
9
9
  import { getPackageManager, getPackageManagerInstallCommand } from './package-mgmt.js';
10
- function readVersionFromPackageJson(packageJsonPath) {
11
- if (!existsSync(packageJsonPath)) {
12
- return undefined;
13
- }
14
- try {
15
- const content = readFileSync(packageJsonPath, 'utf-8');
16
- const pkg = JSON.parse(content);
17
- if (typeof pkg.version === 'string' && pkg.version.length > 0) {
18
- return pkg.version;
19
- }
20
- }
21
- catch {
22
- // Ignore parse/read errors and fall back.
23
- }
24
- return undefined;
25
- }
26
- function resolveCliPackageVersion() {
10
+ /** The installed dexto package's folder: the package.json above this module, or the standalone binary's. */
11
+ function cliPackageRoot() {
27
12
  const scriptDir = path.dirname(fileURLToPath(import.meta.url));
28
- const localPackageJsonPath = path.resolve(scriptDir, '../../../package.json');
29
- const localVersion = readVersionFromPackageJson(localPackageJsonPath);
30
- if (localVersion) {
31
- return localVersion;
32
- }
13
+ const local = path.resolve(scriptDir, '../../..');
14
+ if (existsSync(path.join(local, 'package.json')))
15
+ return local;
33
16
  const packageRoot = getDextoPackageRoot();
34
- if (packageRoot) {
35
- const packageJsonPath = path.join(packageRoot, 'package.json');
36
- const packageVersion = readVersionFromPackageJson(packageJsonPath);
37
- if (packageVersion) {
38
- return packageVersion;
17
+ if (packageRoot !== undefined && existsSync(path.join(packageRoot, 'package.json')))
18
+ return packageRoot;
19
+ throw new Error("Could not find the dexto CLI's package.json");
20
+ }
21
+ /**
22
+ * The package.json of the copy of `packageName` the CLI at `cliRoot` loads: the first in the
23
+ * node_modules folders above it, as ES modules resolve (never NODE_PATH or global folders).
24
+ */
25
+ function installedPackage(packageName, cliRoot) {
26
+ for (let dir = realpathSync(cliRoot);; dir = path.dirname(dir)) {
27
+ const packageJson = path.join(dir, 'node_modules', packageName, 'package.json');
28
+ if (path.basename(dir) !== 'node_modules' && existsSync(packageJson)) {
29
+ const pkg = JSON.parse(readFileSync(packageJson, 'utf-8'));
30
+ if (typeof pkg === 'object' && pkg !== null)
31
+ return { ...pkg };
39
32
  }
33
+ if (path.dirname(dir) === dir)
34
+ return null;
40
35
  }
41
- return process.env.DEXTO_CLI_VERSION;
42
36
  }
43
- const cliPackageVersion = resolveCliPackageVersion();
44
- export function getDextoCliVersion() {
45
- const version = process.env.DEXTO_CLI_VERSION ?? cliPackageVersion;
46
- if (!version) {
47
- throw new Error('Could not determine dexto CLI version');
48
- }
49
- return version;
37
+ function installedVersion(packageName, cliRoot) {
38
+ const version = installedPackage(packageName, cliRoot)?.version;
39
+ return typeof version === 'string' && version.length > 0 ? version : null;
40
+ }
41
+ /**
42
+ * The range a scaffolded project asks for `packageName` (an `@dexto/*` package): the version the
43
+ * CLI itself runs, since dexto versions apart from them. A package the CLI doesn't install, such as
44
+ * @dexto/image-bundler, takes @dexto/core's, as the @dexto/* packages version together.
45
+ */
46
+ export function dextoPackageRange(packageName, cliRoot = cliPackageRoot()) {
47
+ const version = installedVersion(packageName, cliRoot) ?? installedVersion('@dexto/core', cliRoot);
48
+ if (version === null)
49
+ throw new Error(`Could not find the @dexto/core the dexto CLI at ${cliRoot} runs`);
50
+ return `^${version}`;
50
51
  }
51
- export function getDextoVersionRange() {
52
- return `^${getDextoCliVersion()}`;
52
+ /** The range a scaffolded project asks for a peer of @dexto/core, such as zod: core's own. */
53
+ export function dextoPeerRange(peerName, cliRoot = cliPackageRoot()) {
54
+ const peers = installedPackage('@dexto/core', cliRoot)?.peerDependencies;
55
+ const range = typeof peers === 'object' && peers !== null
56
+ ? Object.entries(peers).find(([name]) => name === peerName)?.[1]
57
+ : undefined;
58
+ if (typeof range !== 'string')
59
+ throw new Error(`The @dexto/core the dexto CLI at ${cliRoot} runs has no ${peerName} peer`);
60
+ return range;
53
61
  }
54
62
  export function isLocalDependencySpecifier(specifier) {
55
63
  return (specifier.startsWith('.') ||
@@ -69,14 +77,14 @@ export function hasVersionInPackageSpecifier(specifier) {
69
77
  }
70
78
  return true;
71
79
  }
72
- export function pinDextoPackageIfUnversioned(specifier, versionRange) {
80
+ export function pinDextoPackageIfUnversioned(specifier, rangeFor) {
73
81
  if (isLocalDependencySpecifier(specifier))
74
82
  return specifier;
75
83
  if (!specifier.startsWith('@dexto/'))
76
84
  return specifier;
77
85
  if (hasVersionInPackageSpecifier(specifier))
78
86
  return specifier;
79
- return `${specifier}@${versionRange}`;
87
+ return `${specifier}@${rangeFor(specifier)}`;
80
88
  }
81
89
  /**
82
90
  * Validates a project name against the standard regex
@@ -1 +1 @@
1
- {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/version-check.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACzB;AAkJD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA6DxF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAatE"}
1
+ {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/version-check.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACzB;AAkJD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA6DxF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CActE"}
@@ -220,7 +220,8 @@ export async function checkForUpdates(currentVersion) {
220
220
  export function displayUpdateNotification(updateInfo) {
221
221
  const message = `Update available: ${chalk.gray(updateInfo.current)} ${chalk.gray('→')} ${chalk.green(updateInfo.latest)}\n` +
222
222
  `Run: ${chalk.cyan(updateInfo.updateCommand)}`;
223
- console.log(boxen(message, {
223
+ // A notice, not a result: stderr, so stdout stays what the command printed.
224
+ console.error(boxen(message, {
224
225
  padding: 1,
225
226
  margin: { top: 1, bottom: 1, left: 0, right: 0 },
226
227
  borderColor: 'yellow',
@@ -47,43 +47,31 @@ process.env.DEXTO_CLI_VERSION = cliVersion;
47
47
  import { logger, startLlmRegistryAutoUpdate, DextoAgent, isPath } from '@dexto/core';
48
48
  import { getAllSupportedModels, getProviderFromModel } from '@dexto/llm';
49
49
  import { applyImageDefaults, cleanNullValues, AgentConfigSchema, loadImage, resolveServicesFromConfig, toDextoAgentOptions, } from '@dexto/agent-config';
50
- import { registerConfiguredSkillPrompts, getDextoPackageRoot, resolveAgentPath, loadAgentConfig, findDextoProjectRoot, globalPreferencesExist, loadGlobalPreferences, resolveBundledScript, enrichAgentConfig, isDextoAuthEnabled, createModelAuthResolver, resolveApiKeyForProvider, getPrimaryApiKeyEnvVar, } from '@dexto/agent-management';
50
+ import { registerConfiguredSkillPrompts, getDextoPackageRoot, resolveAgentPath, loadAgentConfig, findDextoProjectRoot, globalPreferencesExist, loadGlobalPreferences, resolveBundledScript, enrichAgentConfig, isDextoAuthEnabled, createModelAuthResolver, dextoGateway, dextoMcp, resolveApiKeyForProvider, getPrimaryApiKeyEnvVar, } from '@dexto/agent-management';
51
51
  import { validateCliOptions, handleCliOptionsError } from './cli/utils/options.js';
52
52
  import { validateAgentConfig } from './cli/utils/config-validation.js';
53
53
  import { applyCLIOverrides, applyStartupLLMFallback, applyUserPreferences, } from './config/cli-overrides.js';
54
54
  import { registerRunCommand } from './cli/commands/run/register.js';
55
55
  import { registerSessionCommand } from './cli/commands/session/register.js';
56
56
  import { registerSearchCommand } from './cli/commands/search/register.js';
57
- import { registerAuthCommand } from './cli/commands/auth/register.js';
58
- import { registerBillingCommand } from './cli/commands/billing/register.js';
59
57
  import { registerCloudCommand } from './cli/commands/cloud/register.js';
58
+ import { isRootJsonHelp, rootHelpJson } from './cli/help-json.js';
60
59
  import { registerMcpCommand } from './cli/commands/mcp/register.js';
61
60
  import { registerImageCommand } from './cli/commands/image/register.js';
62
61
  import { registerPluginCommand } from './cli/commands/plugin/register.js';
63
62
  import { registerAgentsCommand } from './cli/commands/agents/register.js';
64
- import { registerDeployCommand } from './cli/commands/deploy/register.js';
65
- import { registerSpanCommand } from './cli/commands/span/register.js';
66
- import { registerTraceCommand } from './cli/commands/trace/register.js';
67
63
  import { registerInitCommand } from './cli/commands/init.js';
68
64
  import { ensureImageImporterConfigured } from './cli/utils/image-importer.js';
69
65
  const program = new Command();
70
- let dextoApiKeyBootstrapped = false;
66
+ let earlierSignInsCarriedOver = false;
71
67
  let versionCheckPromise = null;
72
68
  let llmRegistryAutoUpdateStarted = false;
73
- async function ensureDextoApiKeyBootstrap() {
74
- if (dextoApiKeyBootstrapped) {
69
+ async function ensureDextoSignInsCarriedOver() {
70
+ if (earlierSignInsCarriedOver)
75
71
  return;
76
- }
77
- if (!isDextoAuthEnabled()) {
78
- dextoApiKeyBootstrapped = true;
79
- return;
80
- }
81
- const { getDextoApiKey } = await import('./cli/auth/index.js');
82
- const dextoApiKey = await getDextoApiKey();
83
- if (dextoApiKey) {
84
- process.env.DEXTO_API_KEY = dextoApiKey;
85
- }
86
- dextoApiKeyBootstrapped = true;
72
+ const { carryOverEarlierSignIns } = await import('./cli/commands/auth/sign-in-context.js');
73
+ await carryOverEarlierSignIns();
74
+ earlierSignInsCarriedOver = true;
87
75
  }
88
76
  async function getVersionCheckResult() {
89
77
  if (!versionCheckPromise) {
@@ -105,7 +93,6 @@ program
105
93
  .description('AI-powered CLI and WebUI for interacting with MCP servers.')
106
94
  .version(cliVersion, '-v, --version', 'output the current version')
107
95
  .option('-a, --agent <id|path>', 'Agent ID or path to agent config file')
108
- .option('--cloud-agent <id>', 'Connect the interactive CLI to a deployed cloud agent by ID')
109
96
  .option('-p, --prompt <text>', 'Start the interactive CLI and immediately run the prompt')
110
97
  .option('-s, --strict', 'Require all server connections to succeed')
111
98
  .option('--no-verbose', 'Disable verbose output')
@@ -147,9 +134,6 @@ program
147
134
  }
148
135
  }));
149
136
  registerImageCommand({ program });
150
- registerDeployCommand({ program });
151
- registerSpanCommand({ program });
152
- registerTraceCommand({ program });
153
137
  registerInitCommand({ program });
154
138
  // 4) `init-app` SUB-COMMAND
155
139
  program
@@ -296,7 +280,7 @@ registerPluginCommand({ program });
296
280
  async function bootstrapAgentFromGlobalOpts(options) {
297
281
  const { mode, modelOverride } = options;
298
282
  const isHeadlessRun = mode === 'headless-run';
299
- await ensureDextoApiKeyBootstrap();
283
+ await ensureDextoSignInsCarriedOver();
300
284
  await ensureImageImporterConfigured();
301
285
  const globalOpts = program.opts();
302
286
  const effectiveModel = modelOverride ?? globalOpts.model;
@@ -359,6 +343,8 @@ async function bootstrapAgentFromGlobalOpts(options) {
359
343
  logLevel: isHeadlessRun ? 'error' : 'info',
360
344
  workspaceRoot,
361
345
  });
346
+ // Signed in: the session gets the Dexto MCP's tools beside the person's own servers.
347
+ enrichedConfig.mcpServers = dextoMcp.withDextoMcpServer(enrichedConfig.mcpServers, await dextoMcp.dextoMcpServer(dextoGateway.defaultDextoGatewayOptions()));
362
348
  if (isHeadlessRun) {
363
349
  // Force silent transport in headless mode even when agent config defines logger settings.
364
350
  // `dexto run` owns stderr formatting and should be the only writer.
@@ -383,6 +369,7 @@ async function bootstrapAgentFromGlobalOpts(options) {
383
369
  hostContext: { workspaceRoot },
384
370
  overrides: {
385
371
  authResolver: createModelAuthResolver(),
372
+ mcpAuthProviderFactory: dextoMcp.withDextoMcpAuth(null, dextoGateway.defaultDextoGatewayOptions()),
386
373
  },
387
374
  }));
388
375
  agent.setApprovalHandler((request) => handleHeadlessApproval(request, agent, undefined));
@@ -410,8 +397,6 @@ const runtimeCommandContext = {
410
397
  registerRunCommand(runtimeCommandContext);
411
398
  registerSessionCommand(runtimeCommandContext);
412
399
  registerSearchCommand(runtimeCommandContext);
413
- registerAuthCommand(runtimeCommandContext);
414
- registerBillingCommand(runtimeCommandContext);
415
400
  registerCloudCommand(program);
416
401
  registerMcpCommand({ program });
417
402
  // 13) Main dexto CLI - Interactive (CLI) or run in other modes (--mode web/server/mcp)
@@ -424,9 +409,9 @@ program
424
409
  ' dexto --prompt "query" Start interactive CLI and run the prompt\n' +
425
410
  ' dexto run "query" Run one-off headless task\n\n' +
426
411
  'Session Management Commands:\n' +
427
- ' dexto session list List all sessions\n' +
428
- ' dexto session history [id] Show session history\n' +
429
- ' dexto session delete <id> Delete a session\n' +
412
+ " dexto chat list List this machine's chats\n" +
413
+ " dexto chat history [id] Show a chat's messages\n" +
414
+ ' dexto chat delete <id> Delete a chat\n' +
430
415
  ' dexto search <query> Search across sessions\n' +
431
416
  ' Options: --session <id>, --role <user|assistant>, --limit <n>\n\n' +
432
417
  'Agent Selection:\n' +
@@ -442,7 +427,7 @@ program
442
427
  ' dexto --mode mcp Run as MCP server\n\n' +
443
428
  'Docs: https://cli.dexto.ai')
444
429
  .action(withAnalytics('main', async () => {
445
- await ensureDextoApiKeyBootstrap();
430
+ await ensureDextoSignInsCarriedOver();
446
431
  await ensureImageImporterConfigured();
447
432
  ensureLlmRegistryAutoUpdateStarted();
448
433
  // ——— ENV CHECK (optional) ———
@@ -483,9 +468,9 @@ program
483
468
  // the first positional argument as an agent name to avoid ambiguity with prompts.
484
469
  // ——— FORCE CLI MODE FOR PROMPT/SESSION FLAGS ———
485
470
  // If a prompt or session flag was provided, force CLI mode.
486
- const modeForcedByChatFlags = Boolean(initialPrompt || opts.continue || opts.resume || opts.cloudAgent);
471
+ const modeForcedByChatFlags = Boolean(initialPrompt || opts.continue || opts.resume);
487
472
  if (modeForcedByChatFlags && opts.mode !== 'cli') {
488
- console.error(`ℹ️ Forcing CLI mode due to --prompt/--continue/--resume/--cloud-agent.`);
473
+ console.error(`ℹ️ Forcing CLI mode due to --prompt/--continue/--resume.`);
489
474
  console.error(` Original mode: ${opts.mode} → Overridden to: cli`);
490
475
  opts.mode = 'cli';
491
476
  }
@@ -495,28 +480,6 @@ program
495
480
  console.error('💡 For non-interactive runs, use `dexto run "<prompt>"`, or use --mode server for automation.');
496
481
  safeExit('main', 1, 'no-tty');
497
482
  }
498
- if (opts.cloudAgent) {
499
- if (opts.agent) {
500
- console.error('❌ `--agent` and `--cloud-agent` are mutually exclusive. Use one chat target at a time.');
501
- safeExit('main', 1, 'cloud-agent-conflict');
502
- }
503
- try {
504
- const { startCloudChatCli } = await import('./cli/cloud-chat.js');
505
- await startCloudChatCli({
506
- cloudAgentId: String(opts.cloudAgent),
507
- ...(initialPrompt ? { initialPrompt } : {}),
508
- ...(opts.resume ? { resume: String(opts.resume) } : {}),
509
- ...(opts.continue ? { continueMostRecent: true } : {}),
510
- });
511
- safeExit('main', 0);
512
- }
513
- catch (err) {
514
- if (err instanceof ExitSignal)
515
- throw err;
516
- console.error(`❌ Cloud chat failed: ${err}`);
517
- safeExit('main', 1, 'cloud-chat-error');
518
- }
519
- }
520
483
  // ——— Infer provider & API key from model ———
521
484
  if (opts.model) {
522
485
  if (opts.model.includes('/')) {
@@ -668,14 +631,11 @@ program
668
631
  const authCheck = await checkDextoAuthState(opts.interactive !== false, agentId);
669
632
  if (!authCheck.shouldContinue) {
670
633
  if (authCheck.action === 'login') {
671
- // User wants to log in - run login flow then restart
672
- const { handleLoginCommand } = await import('./cli/commands/auth/login.js');
673
- await handleLoginCommand();
674
- // Verify key was actually provisioned (provisionKeys silently catches errors)
675
- const { canUseDextoProvider } = await import('./cli/utils/dexto-setup.js');
634
+ const { canUseDextoProvider, signInForDextoModels } = await import('./cli/utils/dexto-setup.js');
635
+ await signInForDextoModels();
676
636
  if (!(await canUseDextoProvider())) {
677
- console.error('\n❌ API key provisioning failed. Please try again or run `dexto setup` to use a different provider.\n');
678
- safeExit('main', 1, 'dexto-key-provisioning-failed');
637
+ console.error("\n❌ Signed in, but Dexto models can't run yet: allow spending credits when asked, or run `dexto setup` to use a different provider.\n");
638
+ safeExit('main', 1, 'dexto-models-not-ready');
679
639
  }
680
640
  // After login, continue with startup (preferences unchanged, now authenticated)
681
641
  }
@@ -777,6 +737,8 @@ program
777
737
  logLevel: 'info', // CLI uses info-level logging for visibility
778
738
  workspaceRoot,
779
739
  });
740
+ // Signed in: the session gets the Dexto MCP's tools beside the person's own servers.
741
+ enrichedConfig.mcpServers = dextoMcp.withDextoMcpServer(enrichedConfig.mcpServers, await dextoMcp.dextoMcpServer(dextoGateway.defaultDextoGatewayOptions()));
780
742
  // Validate enriched config + preflight credentials.
781
743
  // - Interactive modes (web/cli): warn and continue when credentials are missing
782
744
  // - Headless modes (server/mcp): treat missing credentials as errors
@@ -855,11 +817,13 @@ program
855
817
  // isInteractiveMode is already defined above for validateAgentConfig
856
818
  const { createFileSessionLoggerFactory } = await import('./utils/session-logger-factory.js');
857
819
  const sessionLoggerFactory = createFileSessionLoggerFactory();
858
- const mcpAuthProviderFactory = opts.mode === 'cli'
820
+ // The Dexto MCP authorizes with the sign-in in every mode; other servers' own
821
+ // OAuth needs the interactive CLI.
822
+ const mcpAuthProviderFactory = dextoMcp.withDextoMcpAuth(opts.mode === 'cli'
859
823
  ? (await import('./cli/mcp/oauth-factory.js')).createMcpAuthProviderFactory({
860
824
  logger,
861
825
  })
862
- : null;
826
+ : null, dextoGateway.defaultDextoGatewayOptions());
863
827
  const services = await resolveServicesFromConfig(validatedConfig, image, {
864
828
  workspaceRoot,
865
829
  });
@@ -916,4 +880,8 @@ program
916
880
  });
917
881
  }, { timeoutMs: 0 }));
918
882
  // 14) PARSE & EXECUTE
919
- program.parseAsync(process.argv);
883
+ // `dexto --help --json`: the commands and exit codes as JSON, for agents.
884
+ if (isRootJsonHelp(process.argv.slice(2)))
885
+ process.stdout.write(`${JSON.stringify(rootHelpJson(program), null, 2)}\n`);
886
+ else
887
+ program.parseAsync(process.argv);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dexto",
3
- "version": "1.14.4",
3
+ "version": "2.0.0-beta.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "dexto": "./dist/index.js"
@@ -35,17 +35,18 @@
35
35
  "yaml": "^2.8.3",
36
36
  "zod": "^4.3.6",
37
37
  "@dexto/agent-config": "1.14.4",
38
- "@dexto/agent-management": "1.14.4",
39
- "@dexto/analytics": "1.14.4",
38
+ "@dexto/analytics": "1.15.0-beta.0",
40
39
  "@dexto/client-sdk": "1.14.4",
41
40
  "@dexto/core": "1.14.4",
42
- "@dexto/image-local": "1.14.4",
43
- "@dexto/image-logger-agent": "1.14.4",
41
+ "@dexto/cloud-client": "1.15.0-beta.0",
42
+ "@dexto/agent-management": "1.15.0-beta.0",
43
+ "@dexto/image-local": "1.15.0-beta.0",
44
+ "@dexto/image-logger-agent": "1.15.0-beta.0",
44
45
  "@dexto/llm": "1.14.4",
45
46
  "@dexto/registry": "1.14.4",
46
- "@dexto/server": "1.14.4",
47
+ "@dexto/server": "1.15.0-beta.0",
47
48
  "@dexto/storage": "1.14.4",
48
- "@dexto/tui": "1.14.4"
49
+ "@dexto/tui": "1.15.0-beta.0"
49
50
  },
50
51
  "devDependencies": {
51
52
  "@types/ws": "^8.5.11",
@@ -1,125 +0,0 @@
1
- import type { AuthenticatedUser } from './types.js';
2
- export interface DeviceCodeStartResponse {
3
- deviceCode: string;
4
- userCode: string;
5
- verificationUrl: string;
6
- verificationUrlComplete: string | null;
7
- expiresIn: number;
8
- interval: number;
9
- }
10
- export interface DeviceCodeApiKeyResponse {
11
- id: string;
12
- keyDisplay: string;
13
- name: string;
14
- scopes: string[];
15
- status: string;
16
- fullKey: string;
17
- }
18
- export type DeviceCodePollResponse = {
19
- status: 'pending';
20
- } | {
21
- status: 'slowDown';
22
- } | {
23
- status: 'expired';
24
- } | {
25
- status: 'denied';
26
- } | {
27
- status: 'transientError';
28
- } | {
29
- status: 'approved';
30
- apiKey: DeviceCodeApiKeyResponse;
31
- };
32
- export interface UsageSummaryResponse {
33
- balance_usd: number;
34
- last_30_days: {
35
- since: string;
36
- total_cost_usd: number;
37
- total_usage_events: number;
38
- };
39
- recent_model_usage: Array<{
40
- timestamp: string;
41
- model: string;
42
- cost_usd: number;
43
- input_tokens: number;
44
- output_tokens: number;
45
- }>;
46
- }
47
- export interface BillingBalanceResponse {
48
- creditsUsd: number;
49
- }
50
- export interface BillingCheckoutSessionResponse {
51
- checkoutUrl: string;
52
- checkoutSessionId: string;
53
- }
54
- interface RequestOptions {
55
- signal?: AbortSignal | undefined;
56
- }
57
- /**
58
- * Dexto API client for key management
59
- */
60
- export declare class DextoApiClient {
61
- private readonly platformBaseUrl;
62
- private readonly publicApiBaseUrl;
63
- private readonly timeoutMs;
64
- constructor(baseUrl?: string | {
65
- gatewayBaseUrl?: string | undefined;
66
- platformBaseUrl?: string | undefined;
67
- publicApiBaseUrl?: string | undefined;
68
- });
69
- private createRequestSignal;
70
- private getPlatformUrl;
71
- private getPublicApiUrl;
72
- private listPlatformApiKeys;
73
- private createPlatformApiKey;
74
- private deletePlatformApiKey;
75
- /**
76
- * Validate if a Dexto API key is valid
77
- */
78
- validateDextoApiKey(apiKey: string): Promise<boolean>;
79
- /**
80
- * Provision Dexto API key and always return a usable secret key value.
81
- * @param regenerate - If true, delete existing key(s) and create a new one
82
- */
83
- provisionDextoApiKey(authToken: string, name?: string, regenerate?: boolean): Promise<{
84
- dextoApiKey: string;
85
- keyId: string;
86
- }>;
87
- /**
88
- * Get usage summary (balance + last 30 days + recent model activity)
89
- */
90
- getUsageSummary(apiKey: string): Promise<UsageSummaryResponse>;
91
- /**
92
- * Get the current Dexto billing balance for the authenticated user.
93
- */
94
- getBillingBalance(authToken: string, options: RequestOptions): Promise<BillingBalanceResponse>;
95
- /**
96
- * Create a hosted top-up checkout session for the authenticated user.
97
- */
98
- createBillingCheckoutSession(authToken: string, options: {
99
- creditsUsd: number;
100
- returnUrl?: string | undefined;
101
- signal?: AbortSignal | undefined;
102
- }): Promise<BillingCheckoutSessionResponse>;
103
- /**
104
- * Start device code login at the platform.
105
- */
106
- startDeviceCodeLogin(client?: string, options?: RequestOptions): Promise<DeviceCodeStartResponse>;
107
- /**
108
- * Poll the platform for device-code login completion.
109
- */
110
- pollDeviceCodeLogin(deviceCode: string, options?: RequestOptions): Promise<DeviceCodePollResponse>;
111
- /**
112
- * Fetch Supabase user profile for a bearer token.
113
- */
114
- fetchSupabaseUser(accessToken: string, options?: RequestOptions): Promise<AuthenticatedUser | undefined>;
115
- /**
116
- * Validate Supabase access token by checking if /auth/v1/user resolves.
117
- */
118
- validateSupabaseAccessToken(accessToken: string, options?: RequestOptions): Promise<boolean>;
119
- }
120
- /**
121
- * Get default Dexto API client
122
- */
123
- export declare function getDextoApiClient(): DextoApiClient;
124
- export {};
125
- //# sourceMappingURL=api-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/cli/auth/api-client.ts"],"names":[],"mappings":"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"}