dexto 1.5.5 → 1.5.6

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 (62) hide show
  1. package/dist/agents/agent-template.yml +1 -1
  2. package/dist/agents/coding-agent/coding-agent.yml +2 -2
  3. package/dist/agents/podcast-agent/podcast-agent.yml +1 -1
  4. package/dist/cli/commands/index.d.ts +1 -0
  5. package/dist/cli/commands/index.d.ts.map +1 -1
  6. package/dist/cli/commands/index.js +1 -0
  7. package/dist/cli/commands/interactive-commands/commands.d.ts.map +1 -1
  8. package/dist/cli/commands/interactive-commands/commands.js +2 -0
  9. package/dist/cli/commands/interactive-commands/export/index.d.ts +13 -0
  10. package/dist/cli/commands/interactive-commands/export/index.d.ts.map +1 -0
  11. package/dist/cli/commands/interactive-commands/export/index.js +21 -0
  12. package/dist/cli/commands/interactive-commands/general-commands.d.ts.map +1 -1
  13. package/dist/cli/commands/interactive-commands/general-commands.js +1 -0
  14. package/dist/cli/commands/interactive-commands/system/system-commands.d.ts.map +1 -1
  15. package/dist/cli/commands/interactive-commands/system/system-commands.js +2 -3
  16. package/dist/cli/commands/setup.js +102 -23
  17. package/dist/cli/commands/sync-agents.d.ts +44 -0
  18. package/dist/cli/commands/sync-agents.d.ts.map +1 -0
  19. package/dist/cli/commands/sync-agents.js +483 -0
  20. package/dist/cli/ink-cli/InkCLIRefactored.d.ts +14 -1
  21. package/dist/cli/ink-cli/InkCLIRefactored.d.ts.map +1 -1
  22. package/dist/cli/ink-cli/InkCLIRefactored.js +7 -2
  23. package/dist/cli/ink-cli/components/StatusBar.d.ts +5 -1
  24. package/dist/cli/ink-cli/components/StatusBar.d.ts.map +1 -1
  25. package/dist/cli/ink-cli/components/StatusBar.js +16 -4
  26. package/dist/cli/ink-cli/components/TodoPanel.d.ts +11 -8
  27. package/dist/cli/ink-cli/components/TodoPanel.d.ts.map +1 -1
  28. package/dist/cli/ink-cli/components/TodoPanel.js +38 -36
  29. package/dist/cli/ink-cli/components/chat/Header.d.ts.map +1 -1
  30. package/dist/cli/ink-cli/components/chat/Header.js +1 -1
  31. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.js +1 -1
  32. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts.map +1 -1
  33. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.js +13 -4
  34. package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts.map +1 -1
  35. package/dist/cli/ink-cli/components/modes/StaticCLI.js +1 -1
  36. package/dist/cli/ink-cli/components/overlays/ExportWizard.d.ts +22 -0
  37. package/dist/cli/ink-cli/components/overlays/ExportWizard.d.ts.map +1 -0
  38. package/dist/cli/ink-cli/components/overlays/ExportWizard.js +308 -0
  39. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.js +1 -1
  40. package/dist/cli/ink-cli/constants/tips.js +2 -2
  41. package/dist/cli/ink-cli/containers/InputContainer.d.ts.map +1 -1
  42. package/dist/cli/ink-cli/containers/InputContainer.js +1 -0
  43. package/dist/cli/ink-cli/containers/OverlayContainer.d.ts.map +1 -1
  44. package/dist/cli/ink-cli/containers/OverlayContainer.js +5 -1
  45. package/dist/cli/ink-cli/hooks/useCLIState.d.ts.map +1 -1
  46. package/dist/cli/ink-cli/hooks/useCLIState.js +1 -0
  47. package/dist/cli/ink-cli/hooks/useInputOrchestrator.d.ts.map +1 -1
  48. package/dist/cli/ink-cli/hooks/useInputOrchestrator.js +5 -0
  49. package/dist/cli/ink-cli/state/initialState.d.ts.map +1 -1
  50. package/dist/cli/ink-cli/state/initialState.js +1 -0
  51. package/dist/cli/ink-cli/state/types.d.ts +14 -1
  52. package/dist/cli/ink-cli/state/types.d.ts.map +1 -1
  53. package/dist/cli/ink-cli/utils/commandOverlays.d.ts.map +1 -1
  54. package/dist/cli/ink-cli/utils/commandOverlays.js +1 -0
  55. package/dist/cli/ink-cli/utils/messageFormatting.js +2 -2
  56. package/dist/cli/utils/api-key-setup.d.ts.map +1 -1
  57. package/dist/cli/utils/api-key-setup.js +13 -90
  58. package/dist/cli/utils/version-check.d.ts +45 -0
  59. package/dist/cli/utils/version-check.d.ts.map +1 -0
  60. package/dist/cli/utils/version-check.js +195 -0
  61. package/dist/index.js +60 -31
  62. package/package.json +7 -7
@@ -77,5 +77,5 @@ storage:
77
77
  # Tool confirmation configuration - auto-approve for better development experience
78
78
  toolConfirmation:
79
79
  mode: auto-approve
80
- timeout: 120000
80
+ # timeout: omitted = infinite wait
81
81
  allowedToolsStorage: memory
@@ -103,7 +103,7 @@ storage:
103
103
 
104
104
  toolConfirmation:
105
105
  mode: manual
106
- timeout: 120000
106
+ # timeout: omitted = infinite wait (no timeout for CLI)
107
107
  allowedToolsStorage: storage # Persist allowed tools across sessions
108
108
 
109
109
  # Tool policies optimized for coding workflows
@@ -135,7 +135,7 @@ compaction:
135
135
  # Elicitation configuration - required for ask_user tool
136
136
  elicitation:
137
137
  enabled: true
138
- timeout: 120000
138
+ # timeout: omitted = infinite wait (no timeout for CLI)
139
139
 
140
140
  # Internal tools - core tools that are always available
141
141
  internalTools:
@@ -170,7 +170,7 @@ storage:
170
170
 
171
171
  toolConfirmation:
172
172
  mode: auto-approve
173
- timeout: 30000
173
+ # timeout: omitted = infinite wait
174
174
  allowedToolsStorage: memory
175
175
 
176
176
  # Prompts - podcast and audio generation examples shown as clickable buttons in WebUI
@@ -6,4 +6,5 @@ export { handleInstallCommand, type InstallCommandOptions } from './install.js';
6
6
  export { handleUninstallCommand, type UninstallCommandOptions } from './uninstall.js';
7
7
  export { handleListAgentsCommand, type ListAgentsCommandOptions, type ListAgentsCommandOptionsInput, } from './list-agents.js';
8
8
  export { handleWhichCommand, type WhichCommandOptions } from './which.js';
9
+ export { handleSyncAgentsCommand, shouldPromptForSync, markSyncDismissed, clearSyncDismissed, type SyncAgentsCommandOptions, } from './sync-agents.js';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,0BAA0B,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,KAAK,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EACH,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,GACrC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,0BAA0B,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,KAAK,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EACH,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,GACrC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EACH,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,wBAAwB,GAChC,MAAM,kBAAkB,CAAC"}
@@ -8,3 +8,4 @@ export { handleInstallCommand } from './install.js';
8
8
  export { handleUninstallCommand } from './uninstall.js';
9
9
  export { handleListAgentsCommand, } from './list-agents.js';
10
10
  export { handleWhichCommand } from './which.js';
11
+ export { handleSyncAgentsCommand, shouldPromptForSync, markSyncDismissed, clearSyncDismissed, } from './sync-agents.js';
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/interactive-commands/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAYnF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,iBAAiB,EAAO,CAAC;AAsCpD;;;;;GAKG;AACH,wBAAsB,cAAc,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,UAAU,EACjB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAyD/B;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,iBAAiB,EAAE,CAEpD"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/interactive-commands/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAanF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,iBAAiB,EAAO,CAAC;AAuCpD;;;;;GAKG;AACH,wBAAsB,cAAc,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,UAAU,EACjB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAyD/B;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,iBAAiB,EAAE,CAEpD"}
@@ -21,6 +21,7 @@
21
21
  // Import modular command definitions
22
22
  import { generalCommands, createHelpCommand } from './general-commands.js';
23
23
  import { searchCommand, resumeCommand, renameCommand } from './session/index.js';
24
+ import { exportCommand } from './export/index.js';
24
25
  import { modelCommands } from './model/index.js';
25
26
  import { mcpCommands } from './mcp/index.js';
26
27
  import { systemCommands } from './system/index.js';
@@ -52,6 +53,7 @@ const baseCommands = [
52
53
  searchCommand, // /search - opens search overlay
53
54
  resumeCommand, // /resume - opens session selector overlay
54
55
  renameCommand, // /rename <title> - rename current session
56
+ exportCommand, // /export - opens export wizard overlay
55
57
  // Model management
56
58
  modelCommands, // /model - opens model selector overlay
57
59
  // MCP server management
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Export Command Module
3
+ *
4
+ * Provides the /export command for exporting conversation history.
5
+ * Always shows the interactive export wizard overlay.
6
+ */
7
+ import type { CommandDefinition } from '../command-parser.js';
8
+ /**
9
+ * Export command definition
10
+ * Always shows the interactive export wizard overlay (handled by ALWAYS_OVERLAY)
11
+ */
12
+ export declare const exportCommand: CommandDefinition;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/interactive-commands/export/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAwC,MAAM,sBAAsB,CAAC;AAGpG;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,iBAc3B,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Export Command Module
3
+ *
4
+ * Provides the /export command for exporting conversation history.
5
+ * Always shows the interactive export wizard overlay.
6
+ */
7
+ /**
8
+ * Export command definition
9
+ * Always shows the interactive export wizard overlay (handled by ALWAYS_OVERLAY)
10
+ */
11
+ export const exportCommand = {
12
+ name: 'export',
13
+ description: 'Export conversation to markdown or JSON',
14
+ usage: '/export',
15
+ category: 'Session',
16
+ handler: async (_args, _agent, _ctx) => {
17
+ // This handler is never called - export is in ALWAYS_OVERLAY
18
+ // which intercepts and shows the export wizard overlay instead
19
+ return true;
20
+ },
21
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"general-commands.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/interactive-commands/general-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAwC,MAAM,qBAAqB,CAAC;AAgGnG;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,iBAAiB,EAAE,GAAG,iBAAiB,CAgC9F;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAwZ9C,CAAC"}
1
+ {"version":3,"file":"general-commands.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/interactive-commands/general-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAwC,MAAM,qBAAqB,CAAC;AAgGnG;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,iBAAiB,EAAE,GAAG,iBAAiB,CAgC9F;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAyZ9C,CAAC"}
@@ -397,6 +397,7 @@ export const generalCommands = [
397
397
  name: 'Global',
398
398
  shortcuts: [
399
399
  { keys: 'Ctrl+C', description: 'Clear input, then exit (press twice)' },
400
+ { keys: 'Ctrl+T', description: 'Toggle task list (show/hide tasks)' },
400
401
  { keys: 'Escape', description: 'Cancel processing / close overlay' },
401
402
  ],
402
403
  },
@@ -1 +1 @@
1
- {"version":3,"file":"system-commands.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/interactive-commands/system/system-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAwC,MAAM,sBAAsB,CAAC;AAKpG;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,iBAAiB,EAyO7C,CAAC"}
1
+ {"version":3,"file":"system-commands.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/interactive-commands/system/system-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAwC,MAAM,sBAAsB,CAAC;AAKpG;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,iBAAiB,EAwO7C,CAAC"}
@@ -33,7 +33,7 @@ export const systemCommands = [
33
33
  const logFilePath = logger.getLogFilePath();
34
34
  console.log(chalk.bold.blue('\n📊 Logging Configuration:\n'));
35
35
  console.log(` Current level: ${chalk.green.bold(currentLevel)}`);
36
- if (logFilePath && process.env.DEXTO_PRIVACY_MODE !== 'true') {
36
+ if (logFilePath) {
37
37
  console.log(` Log file: ${chalk.cyan(logFilePath)}`);
38
38
  }
39
39
  console.log(chalk.gray('\n Available levels (from least to most verbose):'));
@@ -44,11 +44,10 @@ export const systemCommands = [
44
44
  console.log(` ${marker} ${levelText}`);
45
45
  });
46
46
  console.log(chalk.gray('\n 💡 Use /log <level> to change level (e.g., /log debug)\n'));
47
- const isPrivacyMode = process.env.DEXTO_PRIVACY_MODE === 'true';
48
47
  const output = [
49
48
  '\n📊 Logging Configuration:',
50
49
  `Current level: ${currentLevel}`,
51
- logFilePath && !isPrivacyMode ? `Log file: ${logFilePath}` : '',
50
+ logFilePath ? `Log file: ${logFilePath}` : '',
52
51
  '\nAvailable levels: error, warn, info, http, verbose, debug, silly',
53
52
  '💡 Use /log <level> to change level',
54
53
  ]
@@ -155,19 +155,90 @@ export async function handleSetupCommand(options) {
155
155
  await handleNonInteractiveSetup(validated);
156
156
  }
157
157
  /**
158
- * Quick start flow - uses Google Gemini with minimal prompts
158
+ * Quick start flow - pick a free provider with minimal prompts
159
159
  */
160
160
  async function handleQuickStart() {
161
- console.log(chalk.cyan('\n🚀 Quick Start with Google Gemini\n'));
161
+ console.log(chalk.cyan('\n🚀 Quick Start\n'));
162
162
  p.intro(chalk.cyan('Quick Setup'));
163
- const provider = 'google';
164
- const model = getDefaultModelForProvider(provider) || 'gemini-2.5-pro';
163
+ // Let user pick from popular free providers
164
+ const quickProvider = await p.select({
165
+ message: 'Choose a provider',
166
+ options: [
167
+ {
168
+ value: 'google',
169
+ label: `${chalk.green('●')} Google Gemini`,
170
+ hint: 'Free, 1M+ context (recommended)',
171
+ },
172
+ {
173
+ value: 'groq',
174
+ label: `${chalk.green('●')} Groq`,
175
+ hint: 'Free, ultra-fast',
176
+ },
177
+ {
178
+ value: 'local',
179
+ label: `${chalk.cyan('●')} Local Models`,
180
+ hint: 'Free, private, runs on your machine',
181
+ },
182
+ ],
183
+ });
184
+ if (p.isCancel(quickProvider)) {
185
+ p.cancel('Setup cancelled');
186
+ process.exit(0);
187
+ }
188
+ // Handle local models with dedicated setup flow
189
+ if (quickProvider === 'local') {
190
+ const localResult = await setupLocalModels();
191
+ if (!hasSelectedModel(localResult)) {
192
+ p.cancel('Setup cancelled');
193
+ process.exit(0);
194
+ }
195
+ const model = getModelFromResult(localResult);
196
+ // CLI mode confirmation for local
197
+ const useCli = await p.confirm({
198
+ message: 'Start in Terminal mode? (You can change this later)',
199
+ initialValue: true,
200
+ });
201
+ if (p.isCancel(useCli)) {
202
+ p.cancel('Setup cancelled');
203
+ process.exit(0);
204
+ }
205
+ const defaultMode = useCli ? 'cli' : await selectDefaultMode();
206
+ if (defaultMode === null) {
207
+ p.cancel('Setup cancelled');
208
+ process.exit(0);
209
+ }
210
+ // Sync the active model for local provider
211
+ await setActiveModel(model);
212
+ const preferences = createInitialPreferences({
213
+ provider: 'local',
214
+ model,
215
+ defaultMode,
216
+ setupCompleted: true,
217
+ apiKeyPending: false,
218
+ });
219
+ await saveGlobalPreferences(preferences);
220
+ capture('dexto_setup', {
221
+ provider: 'local',
222
+ model,
223
+ setupMode: 'interactive',
224
+ setupVariant: 'quick-start',
225
+ defaultMode,
226
+ apiKeySkipped: false,
227
+ });
228
+ showSetupComplete('local', model, defaultMode, false);
229
+ return;
230
+ }
231
+ // Cloud provider flow (google or groq)
232
+ const provider = quickProvider;
233
+ const model = getDefaultModelForProvider(provider) ||
234
+ (provider === 'google' ? 'gemini-2.5-pro' : 'llama-3.3-70b-versatile');
165
235
  const apiKeyVar = getProviderEnvVar(provider);
166
236
  let apiKeySkipped = false;
167
237
  // Check if API key exists
168
238
  const hasKey = hasApiKeyConfigured(provider);
169
239
  if (!hasKey) {
170
- p.note(`Google Gemini is ${chalk.green('free')} to use!\n\n` +
240
+ const providerName = getProviderDisplayName(provider);
241
+ p.note(`${providerName} is ${chalk.green('free')} to use!\n\n` +
171
242
  `We'll help you get an API key in just a few seconds.`, 'Free AI Access');
172
243
  const result = await interactiveApiKeySetup(provider, {
173
244
  exitOnCancel: false, // Don't exit - allow skipping
@@ -184,8 +255,16 @@ async function handleQuickStart() {
184
255
  else {
185
256
  p.log.success(`API key for ${getProviderDisplayName(provider)} already configured`);
186
257
  }
187
- // Ask about default mode
188
- const defaultMode = await selectDefaultMode();
258
+ // CLI mode confirmation
259
+ const useCli = await p.confirm({
260
+ message: 'Start in Terminal mode? (You can change this later)',
261
+ initialValue: true,
262
+ });
263
+ if (p.isCancel(useCli)) {
264
+ p.cancel('Setup cancelled');
265
+ process.exit(0);
266
+ }
267
+ const defaultMode = useCli ? 'cli' : await selectDefaultMode();
189
268
  // Handle cancellation
190
269
  if (defaultMode === null) {
191
270
  p.cancel('Setup cancelled');
@@ -262,13 +341,13 @@ async function wizardStepSetupType(state) {
262
341
  options: [
263
342
  {
264
343
  value: 'quick',
265
- label: `${chalk.green('')} Quick Start`,
266
- hint: 'Google Gemini (free) - recommended for new users',
344
+ label: `${chalk.green('')} Get started now`,
345
+ hint: 'Pick a free provider and start chatting',
267
346
  },
268
347
  {
269
348
  value: 'custom',
270
- label: `${chalk.blue('●')} Custom Setup`,
271
- hint: 'Choose your provider (OpenAI, Anthropic, Ollama, etc.)',
349
+ label: `${chalk.blue('●')} Choose my own provider`,
350
+ hint: 'OpenAI, Anthropic, local models, and more',
272
351
  },
273
352
  ],
274
353
  });
@@ -494,18 +573,18 @@ async function selectDefaultModeWithBack() {
494
573
  options: [
495
574
  {
496
575
  value: 'cli',
497
- label: `${chalk.green('●')} Terminal CLI`,
498
- hint: 'Interactive command-line interface (recommended)',
576
+ label: `${chalk.green('●')} Terminal`,
577
+ hint: 'Chat in your terminal (most popular)',
499
578
  },
500
579
  {
501
580
  value: 'web',
502
- label: `${chalk.blue('●')} Web UI`,
503
- hint: 'Opens in browser at localhost:3000',
581
+ label: `${chalk.blue('●')} Browser`,
582
+ hint: 'Web UI at localhost:3000',
504
583
  },
505
584
  {
506
585
  value: 'server',
507
- label: `${chalk.rgb(255, 165, 0)('●')} API Server`,
508
- hint: 'REST API for programmatic access',
586
+ label: `${chalk.cyan('●')} API Server`,
587
+ hint: 'REST API for integrations',
509
588
  },
510
589
  { value: '_back', label: chalk.gray('← Back'), hint: 'Go to previous step' },
511
590
  ],
@@ -892,18 +971,18 @@ async function selectDefaultMode() {
892
971
  options: [
893
972
  {
894
973
  value: 'cli',
895
- label: `${chalk.green('●')} Terminal CLI`,
896
- hint: 'Interactive command-line interface (recommended)',
974
+ label: `${chalk.green('●')} Terminal`,
975
+ hint: 'Chat in your terminal (most popular)',
897
976
  },
898
977
  {
899
978
  value: 'web',
900
- label: `${chalk.blue('●')} Web UI`,
901
- hint: 'Opens in browser at localhost:3000',
979
+ label: `${chalk.blue('●')} Browser`,
980
+ hint: 'Web UI at localhost:3000',
902
981
  },
903
982
  {
904
983
  value: 'server',
905
- label: `${chalk.rgb(255, 165, 0)('●')} API Server`,
906
- hint: 'REST API for programmatic access',
984
+ label: `${chalk.cyan('●')} API Server`,
985
+ hint: 'REST API for integrations',
907
986
  },
908
987
  ],
909
988
  });
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Options for the sync-agents command
3
+ */
4
+ export interface SyncAgentsCommandOptions {
5
+ /** Just list status without updating */
6
+ list?: boolean;
7
+ /** Update all without prompting */
8
+ force?: boolean;
9
+ /** Minimal output - used when called from startup prompt */
10
+ quiet?: boolean;
11
+ }
12
+ /**
13
+ * Mark sync as dismissed for current version
14
+ */
15
+ export declare function markSyncDismissed(currentVersion: string): Promise<void>;
16
+ /**
17
+ * Clear sync dismissed state (called after successful sync)
18
+ */
19
+ export declare function clearSyncDismissed(): Promise<void>;
20
+ /**
21
+ * Quick check if any installed agents have updates available
22
+ *
23
+ * Used at CLI startup to prompt for sync without full command output.
24
+ * Returns true if at least one installed agent differs from bundled
25
+ * AND the user hasn't dismissed the prompt for this version.
26
+ *
27
+ * @param currentVersion Current CLI version to check dismissal state
28
+ * @returns true if should prompt for sync
29
+ */
30
+ export declare function shouldPromptForSync(currentVersion: string): Promise<boolean>;
31
+ /**
32
+ * Main handler for the sync-agents command
33
+ *
34
+ * @param options Command options
35
+ *
36
+ * @example
37
+ * ```bash
38
+ * dexto sync-agents # Interactive - prompt for each
39
+ * dexto sync-agents --list # Show what would be updated
40
+ * dexto sync-agents --force # Update all without prompting
41
+ * ```
42
+ */
43
+ export declare function handleSyncAgentsCommand(options: SyncAgentsCommandOptions): Promise<void>;
44
+ //# sourceMappingURL=sync-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-agents.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sync-agents.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mCAAmC;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAgND;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAWxD;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA8BlF;AAoDD;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiO9F"}