dexto 1.14.5 → 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 (256) 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/dist/webui/assets/index-D9xiOs62.js +1649 -0
  164. package/dist/webui/index.html +1 -1
  165. package/package.json +15 -14
  166. package/dist/cli/auth/api-client.d.ts +0 -125
  167. package/dist/cli/auth/api-client.d.ts.map +0 -1
  168. package/dist/cli/auth/api-client.js +0 -585
  169. package/dist/cli/auth/device.d.ts +0 -14
  170. package/dist/cli/auth/device.d.ts.map +0 -1
  171. package/dist/cli/auth/device.js +0 -84
  172. package/dist/cli/auth/dexto-api-key.d.ts +0 -34
  173. package/dist/cli/auth/dexto-api-key.d.ts.map +0 -1
  174. package/dist/cli/auth/dexto-api-key.js +0 -160
  175. package/dist/cli/auth/login-persistence.d.ts +0 -15
  176. package/dist/cli/auth/login-persistence.d.ts.map +0 -1
  177. package/dist/cli/auth/login-persistence.js +0 -72
  178. package/dist/cli/auth/oauth.d.ts +0 -39
  179. package/dist/cli/auth/oauth.d.ts.map +0 -1
  180. package/dist/cli/auth/oauth.js +0 -434
  181. package/dist/cli/auth/service.d.ts +0 -24
  182. package/dist/cli/auth/service.d.ts.map +0 -1
  183. package/dist/cli/auth/service.js +0 -161
  184. package/dist/cli/auth/types.d.ts +0 -11
  185. package/dist/cli/auth/types.d.ts.map +0 -1
  186. package/dist/cli/auth/types.js +0 -1
  187. package/dist/cli/cloud-chat.d.ts +0 -18
  188. package/dist/cli/cloud-chat.d.ts.map +0 -1
  189. package/dist/cli/cloud-chat.js +0 -734
  190. package/dist/cli/commands/auth/index.d.ts +0 -4
  191. package/dist/cli/commands/auth/index.d.ts.map +0 -1
  192. package/dist/cli/commands/auth/index.js +0 -4
  193. package/dist/cli/commands/auth/login.d.ts +0 -12
  194. package/dist/cli/commands/auth/login.d.ts.map +0 -1
  195. package/dist/cli/commands/auth/login.js +0 -153
  196. package/dist/cli/commands/auth/logout.d.ts +0 -5
  197. package/dist/cli/commands/auth/logout.d.ts.map +0 -1
  198. package/dist/cli/commands/auth/logout.js +0 -81
  199. package/dist/cli/commands/auth/register.d.ts +0 -3
  200. package/dist/cli/commands/auth/register.d.ts.map +0 -1
  201. package/dist/cli/commands/auth/register.js +0 -96
  202. package/dist/cli/commands/auth/status.d.ts +0 -2
  203. package/dist/cli/commands/auth/status.d.ts.map +0 -1
  204. package/dist/cli/commands/auth/status.js +0 -22
  205. package/dist/cli/commands/billing/index.d.ts +0 -2
  206. package/dist/cli/commands/billing/index.d.ts.map +0 -1
  207. package/dist/cli/commands/billing/index.js +0 -2
  208. package/dist/cli/commands/billing/register.d.ts +0 -3
  209. package/dist/cli/commands/billing/register.d.ts.map +0 -1
  210. package/dist/cli/commands/billing/register.js +0 -20
  211. package/dist/cli/commands/billing/status.d.ts +0 -8
  212. package/dist/cli/commands/billing/status.d.ts.map +0 -1
  213. package/dist/cli/commands/billing/status.js +0 -71
  214. package/dist/cli/commands/cloud/discovery.d.ts +0 -17
  215. package/dist/cli/commands/cloud/discovery.d.ts.map +0 -1
  216. package/dist/cli/commands/cloud/discovery.js +0 -88
  217. package/dist/cli/commands/deploy/client.d.ts +0 -113
  218. package/dist/cli/commands/deploy/client.d.ts.map +0 -1
  219. package/dist/cli/commands/deploy/client.js +0 -519
  220. package/dist/cli/commands/deploy/config.d.ts +0 -37
  221. package/dist/cli/commands/deploy/config.d.ts.map +0 -1
  222. package/dist/cli/commands/deploy/config.js +0 -144
  223. package/dist/cli/commands/deploy/entry-agent.d.ts +0 -3
  224. package/dist/cli/commands/deploy/entry-agent.d.ts.map +0 -1
  225. package/dist/cli/commands/deploy/entry-agent.js +0 -70
  226. package/dist/cli/commands/deploy/index.d.ts +0 -12
  227. package/dist/cli/commands/deploy/index.d.ts.map +0 -1
  228. package/dist/cli/commands/deploy/index.js +0 -370
  229. package/dist/cli/commands/deploy/links.d.ts +0 -3
  230. package/dist/cli/commands/deploy/links.d.ts.map +0 -1
  231. package/dist/cli/commands/deploy/links.js +0 -53
  232. package/dist/cli/commands/deploy/register.d.ts +0 -6
  233. package/dist/cli/commands/deploy/register.d.ts.map +0 -1
  234. package/dist/cli/commands/deploy/register.js +0 -128
  235. package/dist/cli/commands/deploy/snapshot.d.ts +0 -12
  236. package/dist/cli/commands/deploy/snapshot.d.ts.map +0 -1
  237. package/dist/cli/commands/deploy/snapshot.js +0 -76
  238. package/dist/cli/commands/deploy/state.d.ts +0 -13
  239. package/dist/cli/commands/deploy/state.d.ts.map +0 -1
  240. package/dist/cli/commands/deploy/state.js +0 -122
  241. package/dist/cli/commands/span/register.d.ts +0 -6
  242. package/dist/cli/commands/span/register.d.ts.map +0 -1
  243. package/dist/cli/commands/span/register.js +0 -25
  244. package/dist/cli/commands/trace/client.d.ts +0 -98
  245. package/dist/cli/commands/trace/client.d.ts.map +0 -1
  246. package/dist/cli/commands/trace/client.js +0 -150
  247. package/dist/cli/commands/trace/format.d.ts +0 -5
  248. package/dist/cli/commands/trace/format.d.ts.map +0 -1
  249. package/dist/cli/commands/trace/format.js +0 -58
  250. package/dist/cli/commands/trace/index.d.ts +0 -21
  251. package/dist/cli/commands/trace/index.d.ts.map +0 -1
  252. package/dist/cli/commands/trace/index.js +0 -49
  253. package/dist/cli/commands/trace/register.d.ts +0 -6
  254. package/dist/cli/commands/trace/register.d.ts.map +0 -1
  255. package/dist/cli/commands/trace/register.js +0 -71
  256. package/dist/webui/assets/index-DEfRFmFT.js +0 -1667
@@ -1,22 +1,24 @@
1
1
  import { withAnalytics, safeExit, ExitSignal } from '../../../analytics/wrapper.js';
2
2
  export function registerSessionCommand({ program, bootstrapAgentFromGlobalOpts, }) {
3
- const sessionCommand = program.command('session').description('Manage chat sessions');
4
- sessionCommand
3
+ const chatCommand = program
4
+ .command('chat')
5
+ .description("Your chats: this machine's sessions, and other agents' chats into Dexto");
6
+ chatCommand
5
7
  .command('list')
6
- .description('List all sessions')
7
- .action(withAnalytics('session list', async () => {
8
+ .description("List this machine's chats")
9
+ .action(withAnalytics('chat list', async () => {
8
10
  let agent = null;
9
11
  try {
10
12
  agent = await bootstrapAgentFromGlobalOpts({ mode: 'non-interactive' });
11
13
  const { handleSessionListCommand } = await import('../session-commands.js');
12
14
  await handleSessionListCommand(agent);
13
- safeExit('session list', 0);
15
+ safeExit('chat list', 0);
14
16
  }
15
17
  catch (err) {
16
18
  if (err instanceof ExitSignal)
17
19
  throw err;
18
- console.error(`❌ dexto session list command failed: ${err}`);
19
- safeExit('session list', 1, 'error');
20
+ console.error(`❌ dexto chat list command failed: ${err}`);
21
+ safeExit('chat list', 1, 'error');
20
22
  }
21
23
  finally {
22
24
  if (agent) {
@@ -24,23 +26,23 @@ export function registerSessionCommand({ program, bootstrapAgentFromGlobalOpts,
24
26
  }
25
27
  }
26
28
  }));
27
- sessionCommand
29
+ chatCommand
28
30
  .command('history')
29
- .description('Show session history')
30
- .argument('[sessionId]', 'Session ID (defaults to current session)')
31
- .action(withAnalytics('session history', async (sessionId) => {
31
+ .description("Show a chat's messages")
32
+ .argument('[sessionId]', 'The chat (default: the current one)')
33
+ .action(withAnalytics('chat history', async (sessionId) => {
32
34
  let agent = null;
33
35
  try {
34
36
  agent = await bootstrapAgentFromGlobalOpts({ mode: 'non-interactive' });
35
37
  const { handleSessionHistoryCommand } = await import('../session-commands.js');
36
38
  await handleSessionHistoryCommand(agent, sessionId);
37
- safeExit('session history', 0);
39
+ safeExit('chat history', 0);
38
40
  }
39
41
  catch (err) {
40
42
  if (err instanceof ExitSignal)
41
43
  throw err;
42
- console.error(`❌ dexto session history command failed: ${err}`);
43
- safeExit('session history', 1, 'error');
44
+ console.error(`❌ dexto chat history command failed: ${err}`);
45
+ safeExit('chat history', 1, 'error');
44
46
  }
45
47
  finally {
46
48
  if (agent) {
@@ -48,23 +50,23 @@ export function registerSessionCommand({ program, bootstrapAgentFromGlobalOpts,
48
50
  }
49
51
  }
50
52
  }));
51
- sessionCommand
53
+ chatCommand
52
54
  .command('delete')
53
- .description('Delete a session')
54
- .argument('<sessionId>', 'Session ID to delete')
55
- .action(withAnalytics('session delete', async (sessionId) => {
55
+ .description('Delete a chat')
56
+ .argument('<sessionId>', 'The chat to delete')
57
+ .action(withAnalytics('chat delete', async (sessionId) => {
56
58
  let agent = null;
57
59
  try {
58
60
  agent = await bootstrapAgentFromGlobalOpts({ mode: 'non-interactive' });
59
61
  const { handleSessionDeleteCommand } = await import('../session-commands.js');
60
62
  await handleSessionDeleteCommand(agent, sessionId);
61
- safeExit('session delete', 0);
63
+ safeExit('chat delete', 0);
62
64
  }
63
65
  catch (err) {
64
66
  if (err instanceof ExitSignal)
65
67
  throw err;
66
- console.error(`❌ dexto session delete command failed: ${err}`);
67
- safeExit('session delete', 1, 'error');
68
+ console.error(`❌ dexto chat delete command failed: ${err}`);
69
+ safeExit('chat delete', 1, 'error');
68
70
  }
69
71
  finally {
70
72
  if (agent) {
@@ -72,4 +74,32 @@ export function registerSessionCommand({ program, bootstrapAgentFromGlobalOpts,
72
74
  }
73
75
  }
74
76
  }));
77
+ // Claude Code and Codex chats on this machine, and importing them into Dexto, run on the
78
+ // cloud command engine with its own options; analytics records only the command name.
79
+ for (const [word, description] of [
80
+ ['local', 'List Claude Code and Codex chats on this machine that Dexto can import'],
81
+ ['import', 'Import Claude Code or Codex chats into Dexto'],
82
+ ])
83
+ chatCommand
84
+ .command(word)
85
+ .description(description)
86
+ .helpOption(false)
87
+ .passThroughOptions()
88
+ .allowUnknownOption()
89
+ .allowExcessArguments()
90
+ .argument('[args...]')
91
+ .action(async (args) => {
92
+ await withAnalytics(`chat ${word}`, async () => {
93
+ const [{ runCloud }, { nodeCloudHost }] = await Promise.all([
94
+ import('../../cloud/run.js'),
95
+ import('../../cloud/host.js'),
96
+ ]);
97
+ const code = await runCloud(nodeCloudHost(new AbortController().signal), [
98
+ 'chat',
99
+ word,
100
+ ...args,
101
+ ]);
102
+ safeExit(`chat ${word}`, code);
103
+ })();
104
+ });
75
105
  }
@@ -117,7 +117,7 @@ export async function handleSessionHistoryCommand(agent, sessionId) {
117
117
  catch (error) {
118
118
  if (error instanceof Error && error.message.includes('not found')) {
119
119
  console.log(chalk.red(`❌ Session not found: ${sessionId || 'current'}`));
120
- console.log(chalk.gray(' Use `dexto session list` to see available sessions'));
120
+ console.log(chalk.gray(' Use `dexto chat list` to see available sessions'));
121
121
  }
122
122
  else if (error instanceof Error && error.message !== 'No sessions found') {
123
123
  logger.error(`Failed to get session history: ${error.message}`, null, 'red');
@@ -3,14 +3,13 @@ import chalk from 'chalk';
3
3
  import { z } from 'zod';
4
4
  import { acceptsAnyModel, getDefaultModelForProvider, getReasoningProfile, getSupportedModels, isValidProviderModel, LLM_PROVIDERS, LLM_REGISTRY, requiresApiKey, supportsCustomModels, } from '@dexto/llm';
5
5
  import { getCuratedModelsForProvider, logger, resolveApiKeyForProvider } from '@dexto/core';
6
- import { createInitialPreferences, saveGlobalPreferences, loadGlobalPreferences, getGlobalPreferencesPath, updateGlobalPreferences, setActiveModel, isDextoAuthEnabled, loadCustomModels, saveCustomModel, deleteCustomModel, globalPreferencesExist, getDefaultModelAuthProfile, loadModelAuthProfilesSync, } from '@dexto/agent-management';
6
+ import { createInitialPreferences, saveGlobalPreferences, loadGlobalPreferences, getGlobalPreferencesPath, updateGlobalPreferences, setActiveModel, isDextoAuthEnabled, loadCustomModels, saveCustomModel, deleteCustomModel, globalPreferencesExist, getDefaultModelAuthProfile, loadModelAuthProfilesSync, dextoGateway, } from '@dexto/agent-management';
7
7
  import { interactiveApiKeySetup, hasApiKeyConfigured } from '../utils/api-key-setup.js';
8
8
  import { selectProvider, getProviderDisplayName, getProviderEnvVar, providerRequiresBaseURL, getDefaultModel, } from '../utils/provider-setup.js';
9
9
  import { setupLocalModels, setupOllamaModels, hasSelectedModel, getModelFromResult, } from '../utils/local-model-setup.js';
10
10
  import { requiresSetup } from '../utils/setup-utils.js';
11
- import { canUseDextoProvider } from '../utils/dexto-setup.js';
12
- import { handleAutoLogin } from './auth/login.js';
13
- import { loadAuth, getBillingBalanceForCurrentLogin, openDextoBillingPage } from '../auth/index.js';
11
+ import { canUseDextoProvider, signInForDextoModels } from '../utils/dexto-setup.js';
12
+ import { openBrowserUrl } from '../auth/browser-launch.js';
14
13
  import { DEXTO_CREDITS_URL } from '../auth/constants.js';
15
14
  import * as p from '@clack/prompts';
16
15
  import { capture } from '../../analytics/index.js';
@@ -446,11 +445,11 @@ async function handleDextoProviderSetup(options = {}) {
446
445
  return false;
447
446
  };
448
447
  console.log(chalk.magenta('\n★ Dexto Nova Setup\n'));
449
- // Check if user already has DEXTO_API_KEY
448
+ // Signed in with permission to spend credits, or DEXTO_API_KEY
450
449
  const hasKey = await canUseDextoProvider();
451
450
  if (!hasKey) {
452
451
  p.note(`Dexto gives you instant access to ${chalk.cyan('all AI models')} with a single account.\n\n` +
453
- `We'll guide you through device-code login.`, 'Login Required');
452
+ `We'll sign you in with your browser, or a code over SSH.`, 'Login Required');
454
453
  const shouldLogin = await p.confirm({
455
454
  message: 'Continue with Dexto login?',
456
455
  initialValue: true,
@@ -459,10 +458,10 @@ async function handleDextoProviderSetup(options = {}) {
459
458
  return abort('Setup cancelled');
460
459
  }
461
460
  try {
462
- await handleAutoLogin();
463
- // Verify key was actually provisioned (provisionKeys silently catches errors)
461
+ await signInForDextoModels();
462
+ // Consent can leave out spending credits, and an organization can have no Cloud project.
464
463
  if (!(await canUseDextoProvider())) {
465
- p.log.error('API key provisioning failed. Please try again or use `dexto setup` with a different provider.');
464
+ p.log.error("Signed in, but Dexto models can't run yet: allow spending credits when asked, and make sure your organization has a Cloud project. Or use `dexto setup` with a different provider.");
466
465
  return abort('Setup cancelled', 1);
467
466
  }
468
467
  p.log.success('Login successful! Continuing with setup...');
@@ -474,9 +473,12 @@ async function handleDextoProviderSetup(options = {}) {
474
473
  }
475
474
  }
476
475
  else {
477
- const auth = await loadAuth();
478
- const userLabel = auth?.email || auth?.userId || 'unknown';
479
- p.log.success(`Logged in to Dexto as: ${userLabel}`);
476
+ const [{ describeSignIn }, { nodeSignInContext }] = await Promise.all([
477
+ import('./auth/sign-in-commands.js'),
478
+ import('./auth/sign-in-context.js'),
479
+ ]);
480
+ const signedInAs = await describeSignIn(await nodeSignInContext());
481
+ p.log.success(`Signed in to Dexto as ${signedInAs ?? 'unknown'}`);
480
482
  }
481
483
  const balance = await getCreditsBalance();
482
484
  if (balance !== null) {
@@ -608,7 +610,7 @@ async function handleDextoProviderSetup(options = {}) {
608
610
  }
609
611
  async function openCreditsPage() {
610
612
  try {
611
- await openDextoBillingPage({});
613
+ await openBrowserUrl(DEXTO_CREDITS_URL);
612
614
  }
613
615
  catch (error) {
614
616
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -618,7 +620,8 @@ async function openCreditsPage() {
618
620
  }
619
621
  async function getCreditsBalance() {
620
622
  try {
621
- return await getBillingBalanceForCurrentLogin();
623
+ const summary = await dextoGateway.dextoBillingSummary(dextoGateway.defaultDextoGatewayOptions());
624
+ return summary?.balanceUsd ?? null;
622
625
  }
623
626
  catch {
624
627
  return null;
@@ -0,0 +1,22 @@
1
+ import type { Command } from 'commander';
2
+ /** `--help` (or `-h`) with `--json`, and nothing else. */
3
+ export declare function isRootJsonHelp(args: readonly string[]): boolean;
4
+ export declare function rootHelpJson(program: Command): {
5
+ usage: string[];
6
+ commands: {
7
+ name: string;
8
+ summary: string;
9
+ help: string;
10
+ }[];
11
+ output: string;
12
+ exit_codes: {
13
+ readonly '0': "done";
14
+ readonly '1': "failed";
15
+ readonly '2': "usage or invalid input";
16
+ readonly '3': "needs sign-in or permission";
17
+ readonly '4': "needs confirmation: pass --yes once your person has agreed";
18
+ readonly '5': "not found";
19
+ readonly '6': "waiting on a person, such as an approval";
20
+ };
21
+ };
22
+ //# sourceMappingURL=help-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-json.d.ts","sourceRoot":"","sources":["../../src/cli/help-json.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAM/D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;EAW5C"}
@@ -0,0 +1,20 @@
1
+ // `dexto --help --json`: the commands and the frozen exit codes, for agents.
2
+ import { EXIT_CODE_MEANINGS } from './cloud/command.js';
3
+ /** `--help` (or `-h`) with `--json`, and nothing else. */
4
+ export function isRootJsonHelp(args) {
5
+ return (args.length === 2 &&
6
+ args.includes('--json') &&
7
+ (args.includes('--help') || args.includes('-h')));
8
+ }
9
+ export function rootHelpJson(program) {
10
+ return {
11
+ usage: ['dexto [prompt]', 'dexto <command> [options]'],
12
+ commands: program.commands.map((command) => ({
13
+ name: command.name(),
14
+ summary: command.description(),
15
+ help: `dexto ${command.name()} --help --json`,
16
+ })),
17
+ output: 'JSON when stdout isn\'t a terminal; failures as {"error":{"code","message","fix"}} on stderr.',
18
+ exit_codes: EXIT_CODE_MEANINGS,
19
+ };
20
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/cli/modes/cli.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAuBpD,wBAAsB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA2QxE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/cli/modes/cli.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAuBpD,wBAAsB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA+SxE"}
@@ -133,7 +133,7 @@ export async function runCliMode(context) {
133
133
  const existing = await agent.getSession(opts.resume);
134
134
  if (!existing) {
135
135
  console.error(`❌ Session '${opts.resume}' not found`);
136
- console.error('💡 Use `dexto session list` to see available sessions');
136
+ console.error('💡 Use `dexto chat list` to see available sessions');
137
137
  safeExit('main', 1, 'resume-failed');
138
138
  }
139
139
  cliSessionId = opts.resume;
@@ -166,12 +166,14 @@ export async function runCliMode(context) {
166
166
  console.info = noOp;
167
167
  let inkError = undefined;
168
168
  try {
169
- const [{ startInkCliRefactored, setTuiRuntimeServices }, { registerGracefulShutdown }, { applyLayeredEnvironmentLoading }, { getProviderDisplayName, isValidApiKeyFormat, getProviderInstructions }, { performDeviceCodeLogin, persistDeviceApiKeyLoginResult, ensureDextoApiKeyForAuthToken, loadAuth, storeAuth, removeAuth, removeDextoApiKeyFromEnv, buildDextoBillingUrl, openDextoBillingPage, }, { isUsingDextoCredits }, { canUseDextoProvider }, { capture },] = await Promise.all([
169
+ const [{ startInkCliRefactored, setTuiRuntimeServices }, { registerGracefulShutdown }, { applyLayeredEnvironmentLoading }, { getProviderDisplayName, isValidApiKeyFormat, getProviderInstructions }, { buildDextoBillingUrl, openDextoBillingPage }, { describeSignIn, login, logout }, { nodeSignInContext }, { isUsingDextoCredits }, { canUseDextoProvider }, { capture },] = await Promise.all([
170
170
  import('@dexto/tui'),
171
171
  import('../../utils/graceful-shutdown.js'),
172
172
  import('../../utils/env.js'),
173
173
  import('../utils/provider-setup.js'),
174
174
  import('../auth/index.js'),
175
+ import('../commands/auth/sign-in-commands.js'),
176
+ import('../commands/auth/sign-in-context.js'),
175
177
  import('../../config/effective-llm.js'),
176
178
  import('../utils/dexto-setup.js'),
177
179
  import('../../analytics/index.js'),
@@ -185,17 +187,48 @@ export async function runCliMode(context) {
185
187
  getProviderDisplayName,
186
188
  isValidApiKeyFormat,
187
189
  getProviderInstructions,
188
- performDeviceCodeLogin,
189
- persistDeviceApiKeyLoginResult,
190
- ensureDextoApiKeyForAuthToken,
191
- loadAuth,
192
- storeAuth,
193
- removeAuth,
194
- removeDextoApiKeyFromEnv,
190
+ currentSignIn: async () => describeSignIn(await nodeSignInContext({
191
+ result: () => undefined,
192
+ confirm: async () => false,
193
+ note: () => undefined,
194
+ signal: new AbortController().signal,
195
+ })),
196
+ signIn: async ({ signal, onNote }) => {
197
+ const printed = [];
198
+ await login(await nodeSignInContext({
199
+ result: (_value, text) => printed.push(text),
200
+ confirm: async () => false,
201
+ note: onNote,
202
+ signal,
203
+ }), {
204
+ profile: null,
205
+ org: null,
206
+ device: false,
207
+ browser: true,
208
+ scopes: [],
209
+ apiKey: null,
210
+ });
211
+ return printed.join('\n');
212
+ },
213
+ signOut: async () => {
214
+ const said = [];
215
+ await logout(await nodeSignInContext({
216
+ result: (_value, text) => said.push(text),
217
+ confirm: async () => false,
218
+ note: (text) => said.push(text),
219
+ signal: new AbortController().signal,
220
+ }), { profile: null });
221
+ return said.join('\n');
222
+ },
195
223
  isUsingDextoCredits,
196
224
  canUseDextoProvider,
197
225
  buildDextoBillingUrl,
198
226
  openDextoBillingPage,
227
+ dextoCreditBalance: async () => {
228
+ const { dextoGateway } = await import('@dexto/agent-management');
229
+ const summary = await dextoGateway.dextoBillingSummary(dextoGateway.defaultDextoGatewayOptions());
230
+ return summary?.balanceUsd ?? null;
231
+ },
199
232
  });
200
233
  await startInkCliRefactored(agent, cliSessionId, {
201
234
  updateInfo: cliUpdateInfo ?? undefined,
@@ -19,15 +19,15 @@ export async function runServerMode(context) {
19
19
  })();
20
20
  const apiPort = getPort(process.env.PORT, defaultPort, 'PORT');
21
21
  const apiUrl = process.env.DEXTO_URL ?? `http://localhost:${apiPort}`;
22
- console.log('🌐 Starting server (REST APIs + SSE)...');
22
+ console.error('🌐 Starting server (REST APIs + SSE)...');
23
23
  await startHonoApiServer(agent, apiPort, agentCard, derivedAgentId, resolvedPath, workspaceRoot);
24
- console.log(`✅ Server running at ${apiUrl}`);
25
- console.log('Available endpoints:');
26
- console.log(' POST /api/message - Send async message');
27
- console.log(' POST /api/message-sync - Send sync message');
28
- console.log(' POST /api/reset - Reset conversation');
29
- console.log(' GET /api/mcp/servers - List MCP servers');
30
- console.log(' SSE support available for real-time events');
24
+ console.error(`✅ Server running at ${apiUrl}`);
25
+ console.error('Available endpoints:');
26
+ console.error(' POST /api/message - Send async message');
27
+ console.error(' POST /api/message-sync - Send sync message');
28
+ console.error(' POST /api/reset - Reset conversation');
29
+ console.error(' GET /api/mcp/servers - List MCP servers');
30
+ console.error(' SSE support available for real-time events');
31
31
  const serverUpdateInfo = await getVersionCheckResult();
32
32
  if (serverUpdateInfo) {
33
33
  const { displayUpdateNotification } = await import('../utils/version-check.js');
@@ -31,7 +31,7 @@ export async function runWebMode(context) {
31
31
  }
32
32
  const webUIConfig = webRoot ? { analytics: await getWebUIAnalyticsConfig() } : undefined;
33
33
  await startHonoApiServer(agent, port, agent.config.agentCard || {}, derivedAgentId, resolvedPath, workspaceRoot, webRoot, webUIConfig);
34
- console.log(chalk.green(`✅ Server running at ${serverUrl}`));
34
+ console.error(chalk.green(`✅ Server running at ${serverUrl}`));
35
35
  const webUpdateInfo = await getVersionCheckResult();
36
36
  if (webUpdateInfo) {
37
37
  const { displayUpdateNotification } = await import('../utils/version-check.js');
@@ -41,10 +41,10 @@ export async function runWebMode(context) {
41
41
  try {
42
42
  const { default: open } = await import('open');
43
43
  await open(serverUrl, { wait: false });
44
- console.log(chalk.green(`🌐 Opened WebUI in browser: ${serverUrl}`));
44
+ console.error(chalk.green(`🌐 Opened WebUI in browser: ${serverUrl}`));
45
45
  }
46
46
  catch (_error) {
47
- console.log(chalk.yellow(`💡 WebUI is available at: ${serverUrl}`));
47
+ console.error(chalk.yellow(`💡 WebUI is available at: ${serverUrl}`));
48
48
  }
49
49
  }
50
50
  }
@@ -42,7 +42,7 @@ export interface DextoAuthCheckResult {
42
42
  * const result = await checkDextoAuthState(true, 'coding-agent');
43
43
  * if (!result.shouldContinue) {
44
44
  * if (result.action === 'login') {
45
- * await handleLoginCommand();
45
+ * await signInForDextoModels();
46
46
  * } else if (result.action === 'setup') {
47
47
  * await handleSetupCommand();
48
48
  * }
@@ -1 +1 @@
1
- {"version":3,"file":"dexto-auth-check.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/dexto-auth-check.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAOH,MAAM,WAAW,oBAAoB;IACjC,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,mBAAmB,CACrC,WAAW,GAAE,OAAc,EAC3B,OAAO,GAAE,MAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAoE/B"}
1
+ {"version":3,"file":"dexto-auth-check.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/dexto-auth-check.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAOH,MAAM,WAAW,oBAAoB;IACjC,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,mBAAmB,CACrC,WAAW,GAAE,OAAc,EAC3B,OAAO,GAAE,MAAuB,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAmE/B"}
@@ -25,7 +25,7 @@
25
25
  */
26
26
  import chalk from 'chalk';
27
27
  import * as p from '@clack/prompts';
28
- import { isAuthenticated } from '../auth/index.js';
28
+ import { canUseDextoProvider } from './dexto-setup.js';
29
29
  import { getEffectiveLLMConfig } from '../../config/effective-llm.js';
30
30
  /**
31
31
  * Check if user is configured to use Dexto Nova credits but is not authenticated.
@@ -43,7 +43,7 @@ import { getEffectiveLLMConfig } from '../../config/effective-llm.js';
43
43
  * const result = await checkDextoAuthState(true, 'coding-agent');
44
44
  * if (!result.shouldContinue) {
45
45
  * if (result.action === 'login') {
46
- * await handleLoginCommand();
46
+ * await signInForDextoModels();
47
47
  * } else if (result.action === 'setup') {
48
48
  * await handleSetupCommand();
49
49
  * }
@@ -57,9 +57,8 @@ export async function checkDextoAuthState(interactive = true, agentId = 'coding-
57
57
  if (!effectiveLLM || effectiveLLM.provider !== 'dexto-nova') {
58
58
  return { shouldContinue: true };
59
59
  }
60
- // Using dexto-nova provider - check if authenticated
61
- const authenticated = await isAuthenticated();
62
- if (authenticated) {
60
+ // Using dexto-nova provider - check the sign-in can run Dexto models
61
+ if (await canUseDextoProvider()) {
63
62
  return { shouldContinue: true };
64
63
  }
65
64
  // User is configured for Dexto Nova credits but not logged in
@@ -1,8 +1,7 @@
1
+ export { canUseDextoProvider } from '@dexto/agent-management';
1
2
  /**
2
- * Check if user can use Dexto provider.
3
- * Requires BOTH:
4
- * 1. User has usable Dexto auth state from `dexto login`
5
- * 2. Has DEXTO_API_KEY (from auth config or environment)
3
+ * Signs in to Dexto asking to spend credits (`cloud:write`), as choosing Dexto models needs. A
4
+ * sign-in that only reads keeps what it had and gains that.
6
5
  */
7
- export declare function canUseDextoProvider(): Promise<boolean>;
6
+ export declare function signInForDextoModels(): Promise<void>;
8
7
  //# sourceMappingURL=dexto-setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dexto-setup.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/dexto-setup.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ5D"}
1
+ {"version":3,"file":"dexto-setup.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/dexto-setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAa1D"}
@@ -1,17 +1,20 @@
1
- // packages/cli/src/cli/utils/dexto-setup.ts
2
- import { getDextoApiKey, isAuthenticated } from '../auth/index.js';
1
+ // Setting this machine up for Dexto models: whether they can run, and signing in so they can.
2
+ export { canUseDextoProvider } from '@dexto/agent-management';
3
3
  /**
4
- * Check if user can use Dexto provider.
5
- * Requires BOTH:
6
- * 1. User has usable Dexto auth state from `dexto login`
7
- * 2. Has DEXTO_API_KEY (from auth config or environment)
4
+ * Signs in to Dexto asking to spend credits (`cloud:write`), as choosing Dexto models needs. A
5
+ * sign-in that only reads keeps what it had and gains that.
8
6
  */
9
- export async function canUseDextoProvider() {
10
- const authenticated = await isAuthenticated();
11
- if (!authenticated)
12
- return false;
13
- const apiKey = await getDextoApiKey();
14
- if (!apiKey)
15
- return false;
16
- return true;
7
+ export async function signInForDextoModels() {
8
+ const [{ login }, { nodeSignInContext }] = await Promise.all([
9
+ import('../commands/auth/sign-in-commands.js'),
10
+ import('../commands/auth/sign-in-context.js'),
11
+ ]);
12
+ await login(await nodeSignInContext(), {
13
+ profile: null,
14
+ org: null,
15
+ device: false,
16
+ browser: true,
17
+ scopes: ['cloud:write'],
18
+ apiKey: null,
19
+ });
17
20
  }
@@ -260,7 +260,7 @@ export async function selectProvider() {
260
260
  */
261
261
  export function getProviderDisplayName(provider) {
262
262
  if (provider === 'dexto-nova')
263
- return 'Dexto Nova';
263
+ return 'Dexto';
264
264
  if (isLLMProvider(provider)) {
265
265
  return PROVIDER_REGISTRY[provider]?.label || provider;
266
266
  }
@@ -1,9 +1,15 @@
1
1
  import * as p from '@clack/prompts';
2
- export declare function getDextoCliVersion(): string;
3
- export declare function getDextoVersionRange(): string;
2
+ /**
3
+ * The range a scaffolded project asks for `packageName` (an `@dexto/*` package): the version the
4
+ * CLI itself runs, since dexto versions apart from them. A package the CLI doesn't install, such as
5
+ * @dexto/image-bundler, takes @dexto/core's, as the @dexto/* packages version together.
6
+ */
7
+ export declare function dextoPackageRange(packageName: string, cliRoot?: string): string;
8
+ /** The range a scaffolded project asks for a peer of @dexto/core, such as zod: core's own. */
9
+ export declare function dextoPeerRange(peerName: string, cliRoot?: string): string;
4
10
  export declare function isLocalDependencySpecifier(specifier: string): boolean;
5
11
  export declare function hasVersionInPackageSpecifier(specifier: string): boolean;
6
- export declare function pinDextoPackageIfUnversioned(specifier: string, versionRange: string): string;
12
+ export declare function pinDextoPackageIfUnversioned(specifier: string, rangeFor: (packageName: string) => string): string;
7
13
  /**
8
14
  * Validates a project name against the standard regex
9
15
  * @param name - The project name to validate
@@ -1 +1 @@
1
- {"version":3,"file":"scaffolding-utils.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/scaffolding-utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AA8CpC,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAOrE;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAYvE;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAK5F;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMpE;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACtC,WAAW,GAAE,MAA2B,EACxC,aAAa,GAAE,MAAiD,GACjE,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACjC,WAAW,EAAE,MAAM,EACnB,iBAAiB,GAAE,MAAM,EAAO,GACjC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACjC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,GAClC,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB7F;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB/E;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;IACF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B,EACD,cAAc,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE"}
1
+ {"version":3,"file":"scaffolding-utils.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/scaffolding-utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAqCpC;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,MAAM,CAMjG;AAED,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,MAAM,CAS3F;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAOrE;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAYvE;AAED,wBAAgB,4BAA4B,CACxC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAC1C,MAAM,CAKR;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMpE;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACtC,WAAW,GAAE,MAA2B,EACxC,aAAa,GAAE,MAAiD,GACjE,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACjC,WAAW,EAAE,MAAM,EACnB,iBAAiB,GAAE,MAAM,EAAO,GACjC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACjC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,GAClC,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB7F;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB/E;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;IACF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B,EACD,cAAc,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE"}