gaunt-sloth 2.0.0-beta.1 → 2.0.0-beta.11

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 (108) hide show
  1. package/LICENSE +6 -6
  2. package/dist/cli.js +24 -5
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/apiCommand.js +25 -6
  5. package/dist/commands/apiCommand.js.map +1 -1
  6. package/dist/commands/askCommand.js +1 -1
  7. package/dist/commands/askCommand.js.map +1 -1
  8. package/dist/commands/batchCommand.js +10 -5
  9. package/dist/commands/batchCommand.js.map +1 -1
  10. package/dist/commands/chatCommand.js +8 -17
  11. package/dist/commands/chatCommand.js.map +1 -1
  12. package/dist/commands/codeCommand.js +11 -15
  13. package/dist/commands/codeCommand.js.map +1 -1
  14. package/dist/commands/commandIntrospection.d.ts +1 -1
  15. package/dist/commands/commandIntrospection.js +1 -1
  16. package/dist/commands/configSetup.d.ts +13 -1
  17. package/dist/commands/configSetup.js +27 -6
  18. package/dist/commands/configSetup.js.map +1 -1
  19. package/dist/commands/evalCommand.js +63 -9
  20. package/dist/commands/evalCommand.js.map +1 -1
  21. package/dist/commands/execCommand.js +1 -1
  22. package/dist/commands/execCommand.js.map +1 -1
  23. package/dist/commands/firstRunDialog.d.ts +12 -4
  24. package/dist/commands/firstRunDialog.js +64 -16
  25. package/dist/commands/firstRunDialog.js.map +1 -1
  26. package/dist/commands/historyCommand.d.ts +19 -4
  27. package/dist/commands/historyCommand.js +212 -12
  28. package/dist/commands/historyCommand.js.map +1 -1
  29. package/dist/commands/initCommand.d.ts +11 -1
  30. package/dist/commands/initCommand.js +21 -4
  31. package/dist/commands/initCommand.js.map +1 -1
  32. package/dist/commands/insightsCommand.d.ts +4 -4
  33. package/dist/commands/insightsCommand.js +26 -8
  34. package/dist/commands/insightsCommand.js.map +1 -1
  35. package/dist/commands/prCommand.js +13 -1
  36. package/dist/commands/prCommand.js.map +1 -1
  37. package/dist/commands/prDiscovery.js +53 -1
  38. package/dist/commands/prDiscovery.js.map +1 -1
  39. package/dist/commands/resumeOption.d.ts +28 -0
  40. package/dist/commands/resumeOption.js +42 -0
  41. package/dist/commands/resumeOption.js.map +1 -0
  42. package/dist/commands/reviewCommand.js +12 -1
  43. package/dist/commands/reviewCommand.js.map +1 -1
  44. package/dist/modules/sessionConfigs.d.ts +16 -0
  45. package/dist/modules/sessionConfigs.js +47 -0
  46. package/dist/modules/sessionConfigs.js.map +1 -0
  47. package/dist/modules/startSession.d.ts +2 -2
  48. package/dist/modules/startSession.js +25 -6
  49. package/dist/modules/startSession.js.map +1 -1
  50. package/dist/tui/components/App.d.ts +0 -6
  51. package/dist/tui/components/App.js +602 -70
  52. package/dist/tui/components/App.js.map +1 -1
  53. package/dist/tui/components/ApprovalPrompt.d.ts +57 -33
  54. package/dist/tui/components/ApprovalPrompt.js +61 -140
  55. package/dist/tui/components/ApprovalPrompt.js.map +1 -1
  56. package/dist/tui/components/ApprovalRequestPanel.d.ts +40 -0
  57. package/dist/tui/components/ApprovalRequestPanel.js +63 -0
  58. package/dist/tui/components/ApprovalRequestPanel.js.map +1 -0
  59. package/dist/tui/components/DebugPanel.d.ts +11 -0
  60. package/dist/tui/components/DebugPanel.js +17 -1
  61. package/dist/tui/components/DebugPanel.js.map +1 -1
  62. package/dist/tui/components/LiveTurn.d.ts +20 -1
  63. package/dist/tui/components/LiveTurn.js +73 -23
  64. package/dist/tui/components/LiveTurn.js.map +1 -1
  65. package/dist/tui/components/NegotiationPanel.d.ts +39 -0
  66. package/dist/tui/components/NegotiationPanel.js +63 -0
  67. package/dist/tui/components/NegotiationPanel.js.map +1 -0
  68. package/dist/tui/components/NoticeBar.js +10 -2
  69. package/dist/tui/components/NoticeBar.js.map +1 -1
  70. package/dist/tui/components/PromptEditor.d.ts +12 -0
  71. package/dist/tui/components/PromptEditor.js +20 -0
  72. package/dist/tui/components/PromptEditor.js.map +1 -1
  73. package/dist/tui/components/PromptInput.d.ts +14 -1
  74. package/dist/tui/components/PromptInput.js +44 -3
  75. package/dist/tui/components/PromptInput.js.map +1 -1
  76. package/dist/tui/components/SelectList.d.ts +2 -8
  77. package/dist/tui/components/SelectList.js +4 -18
  78. package/dist/tui/components/SelectList.js.map +1 -1
  79. package/dist/tui/components/SlashCommandMenu.d.ts +25 -2
  80. package/dist/tui/components/SlashCommandMenu.js +45 -8
  81. package/dist/tui/components/SlashCommandMenu.js.map +1 -1
  82. package/dist/tui/components/StatusBar.d.ts +134 -17
  83. package/dist/tui/components/StatusBar.js +194 -19
  84. package/dist/tui/components/StatusBar.js.map +1 -1
  85. package/dist/tui/components/TranscriptViewport.js +28 -5
  86. package/dist/tui/components/TranscriptViewport.js.map +1 -1
  87. package/dist/tui/debugRender.d.ts +1 -1
  88. package/dist/tui/debugRender.js +1 -1
  89. package/dist/tui/fixtureAgent.d.ts +5 -0
  90. package/dist/tui/fixtureAgent.js +74 -1
  91. package/dist/tui/fixtureAgent.js.map +1 -1
  92. package/dist/tui/listWindow.d.ts +41 -0
  93. package/dist/tui/listWindow.js +61 -0
  94. package/dist/tui/listWindow.js.map +1 -0
  95. package/dist/tui/textRows.d.ts +6 -0
  96. package/dist/tui/textRows.js +135 -0
  97. package/dist/tui/textRows.js.map +1 -0
  98. package/dist/tui/transcriptWindow.d.ts +13 -0
  99. package/dist/tui/transcriptWindow.js +94 -12
  100. package/dist/tui/transcriptWindow.js.map +1 -1
  101. package/dist/tui/tuiSessionModule.d.ts +45 -19
  102. package/dist/tui/tuiSessionModule.js +363 -35
  103. package/dist/tui/tuiSessionModule.js.map +1 -1
  104. package/dist/tui/types.d.ts +137 -7
  105. package/dist/tui/viewModel.d.ts +127 -3
  106. package/dist/tui/viewModel.js +100 -10
  107. package/dist/tui/viewModel.js.map +1 -1
  108. package/package.json +17 -17
package/LICENSE CHANGED
@@ -1,7 +1,7 @@
1
- Copyright 2025-present Andrew Kondratev
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
-
5
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
-
1
+ Copyright 2025-present Andrew Kondratev
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
7
  THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/dist/cli.js CHANGED
@@ -13,11 +13,13 @@ import { apiCommand } from '#src/commands/apiCommand.js';
13
13
  import { getCommand } from '#src/commands/getCommand.js';
14
14
  import { configCommand } from '#src/commands/configCommand.js';
15
15
  import { historyCommand } from '#src/commands/historyCommand.js';
16
+ import { RESUMABLE_COMMANDS, resumeOption, rootResumeRefusalMessage, } from '#src/commands/resumeOption.js';
16
17
  import { insightsCommand } from '#src/commands/insightsCommand.js';
17
18
  import { modelsCommand } from '#src/commands/modelsCommand.js';
18
19
  import { argv, exit, getSlothVersion, readStdin } from '@gaunt-sloth/core/utils/systemUtils.js';
19
20
  import { commandSkipsStdin, resolveInvokedCommandName } from '#src/utils/stdinPolicy.js';
20
21
  import { guardProgramConfigErrors } from '#src/utils/configErrorGuard.js';
22
+ import { CONFLICTING_CONFIG_SOURCES_MESSAGE } from '@gaunt-sloth/core/config.js';
21
23
  import { coerceBooleanOrString, displayError } from '@gaunt-sloth/core/utils/consoleUtils.js';
22
24
  import { installCrashHandler } from '@gaunt-sloth/core/utils/crashHandler.js';
23
25
  // GS2-48 — install the process-level crash handler as early as possible, so an uncaughtException /
@@ -41,6 +43,9 @@ program
41
43
  .option('--tui', 'Force the interactive Ink TUI for chat/code sessions ' +
42
44
  '(overrides GTH_NO_TUI, the tui config key and CI auto-off)')
43
45
  .option('--no-tui', 'Force the plain readline session for chat/code (disable the TUI)')
46
+ // GS2-20 — on the root so the bare `gth` (a code session) can resume too; `chat` and `code`
47
+ // carry the same option themselves.
48
+ .addOption(resumeOption())
44
49
  .addOption(new Option('--nopipe').hideHelp(true))
45
50
  .addOption(new Option('--no-pipe').hideHelp(true));
46
51
  const cliConfigOverrides = {};
@@ -60,11 +65,12 @@ if (program.getOptionValue('config')) {
60
65
  }
61
66
  // CFG-56 — `-g/--global` and `-c/--config` both choose WHERE configuration comes from, and
62
67
  // honouring either one makes the other a silent no-op. Refuse the pair here, before anything is
63
- // read, rather than quietly loading one source while the user watches for the other.
68
+ // read, rather than quietly loading one source while the user watches for the other. The loader
69
+ // refuses the same pair wherever config is built (CFG-57), so an embedder is covered too; both
70
+ // speak the one shared sentence.
64
71
  if (program.getOptionValue('global')) {
65
72
  if (cliConfigOverrides.customConfigPath) {
66
- displayError('--global and --config select conflicting configuration sources ' +
67
- '(the global config in ~/.gsloth versus the named file). Pass only one.');
73
+ displayError(CONFLICTING_CONFIG_SOURCES_MESSAGE);
68
74
  exit(1);
69
75
  }
70
76
  cliConfigOverrides.global = true;
@@ -97,7 +103,7 @@ if (coerced !== undefined) {
97
103
  cliConfigOverrides.writeOutputToFile = coerced;
98
104
  }
99
105
  // Initialize all commands - they will handle their own config loading
100
- initCommand(program);
106
+ initCommand(program, cliConfigOverrides);
101
107
  reviewCommand(program, cliConfigOverrides);
102
108
  prCommand(program, cliConfigOverrides);
103
109
  askCommand(program, cliConfigOverrides);
@@ -112,7 +118,9 @@ getCommand(program, cliConfigOverrides);
112
118
  configCommand(program, cliConfigOverrides);
113
119
  // GS2-7 (B20) — read-only, local history/insights surfaces. They resolve their own DB path (global
114
120
  // default or --db) and do not build the LLM, so they stay decoupled from config/provider setup.
115
- historyCommand(program);
121
+ // GS2-20 — `history resume <id>` is the exception: it starts a session, so it takes the overrides
122
+ // the session commands take.
123
+ historyCommand(program, cliConfigOverrides);
116
124
  insightsCommand(program);
117
125
  // GS2-6 (B16) — model catalog: lists providers/models enriched with models.dev cost/limit metadata.
118
126
  // Read-only; enrichment never gates what `/v1/models` reports as callable.
@@ -128,6 +136,17 @@ const invokedCommand = resolveInvokedCommandName(program.commands.map((command)
128
136
  if (commandSkipsStdin(invokedCommand)) {
129
137
  program.setOptionValue('nopipe', true);
130
138
  }
139
+ // GS2-20 — the root `--resume` belongs to the bare command (a code session) and rides along for
140
+ // `chat`/`code`; in front of any other subcommand it would be accepted and silently dropped, and a
141
+ // fresh `ask`/`exec` would run as though nothing had been asked. Refused here, once, before the
142
+ // subcommand's action can run: a typed intent is never answered with a different command.
143
+ const rootResume = program.getOptionValue('resume');
144
+ if (rootResume !== undefined &&
145
+ invokedCommand !== undefined &&
146
+ !RESUMABLE_COMMANDS.has(invokedCommand)) {
147
+ displayError(rootResumeRefusalMessage(invokedCommand, rootResume));
148
+ exit(1);
149
+ }
131
150
  // CFG-35 — the config loader raises a catchable error when a provider has no resolvable API key,
132
151
  // so programmatic callers can classify it. For a person at a terminal there is nothing to classify,
133
152
  // so the `gth` CLI makes the terminating choice here, once, instead of in every command action.
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,40 @@
1
1
  import { initConfig } from '@gaunt-sloth/core/config.js';
2
2
  import { displayError } from '@gaunt-sloth/core/utils/consoleUtils.js';
3
3
  import { setExitCode } from '@gaunt-sloth/core/utils/systemUtils.js';
4
+ import { parseIntOption } from '#src/commands/cliOptionParsers.js';
4
5
  export function apiCommand(program, commandLineConfigOverrides) {
5
6
  const api = program.command('api').description('Start an API server for Gaunt Sloth');
6
7
  api
7
8
  .command('ag-ui')
8
9
  .description('Start an AG-UI protocol HTTP server')
9
- .option('--port <port>', 'Port to listen on')
10
- .addHelpText('after', '\n' + 'Examples:\n' + ' $ gth api ag-ui\n' + ' $ gth api ag-ui --port 4000\n')
10
+ // CFG-62: the strict parser, as on `batch -j`, so `--port abc` is refused at parse time instead
11
+ // of `parseInt` handing the server `NaN`, and `--port 10abc` is refused instead of becoming 10.
12
+ .option('--port <port>', 'Port to listen on', parseIntOption)
13
+ // CFG-67: the server binds loopback unless this says otherwise, so exposing an unauthenticated
14
+ // agent endpoint to the network is something someone typed rather than something they inherited.
15
+ .option('--host <host>', 'Interface to bind. Default 127.0.0.1 (this machine only); 0.0.0.0 — or :: for IPv6 as well — accepts connections from the network')
16
+ // OPS-16: the browser origin is the other half of the port. A launcher that moves the web
17
+ // client knows its new origin and cannot rewrite the config file pinning the old one, so
18
+ // without this flag the client relocates and every request it makes is refused by a preflight
19
+ // naming an origin it no longer has.
20
+ .option('--cors-origin <origin>', 'Browser origin allowed to call this server, over commands.api.cors.allowOrigin. One origin, not a list')
21
+ .addHelpText('after', '\n' +
22
+ 'Examples:\n' +
23
+ ' $ gth api ag-ui\n' +
24
+ ' $ gth api ag-ui --port 4000\n' +
25
+ ' $ gth api ag-ui --host 0.0.0.0 --port 4000\n' +
26
+ ' $ gth api ag-ui --port 4000 --cors-origin http://localhost:5556\n')
11
27
  .action(async (options) => {
12
28
  try {
13
29
  const config = await initConfig(commandLineConfigOverrides);
14
- const port = options.port
15
- ? parseInt(options.port, 10)
16
- : (config.commands?.api?.port ?? 3000);
30
+ // `??`, not a truthiness check: the option is a number now, and `--port 0` (let the OS pick)
31
+ // must stay port 0 rather than falling through to the configured port.
32
+ const port = options.port ?? config.commands?.api?.port ?? 3000;
17
33
  const { startAgUiServer } = await import('@gaunt-sloth/agent/modules/apiAgUiModule.js');
18
- await startAgUiServer(config, port);
34
+ // The host's precedence — flag, then `commands.api.host`, then loopback — is resolved by
35
+ // the server rather than here, so a programmatic caller gets the same safe default and
36
+ // the two doors onto this server cannot drift. The CORS origin travels the same way.
37
+ await startAgUiServer(config, port, options.host, options.corsOrigin);
19
38
  }
20
39
  catch (error) {
21
40
  displayError(error instanceof Error ? error.message : String(error));
@@ -1 +1 @@
1
- {"version":3,"file":"apiCommand.js","sourceRoot":"","sources":["../../src/commands/apiCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAErE,MAAM,UAAU,UAAU,CACxB,OAAgB,EAChB,0BAAsD;IAEtD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;IAEtF,GAAG;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC;SAC5C,WAAW,CACV,OAAO,EACP,IAAI,GAAG,aAAa,GAAG,qBAAqB,GAAG,iCAAiC,CACjF;SACA,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,0BAA0B,CAAC,CAAC;YAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;gBACvB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC5B,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;YAEzC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,6CAA6C,CAAC,CAAC;YACxF,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACrE,WAAW,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"apiCommand.js","sourceRoot":"","sources":["../../src/commands/apiCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,MAAM,UAAU,UAAU,CACxB,OAAgB,EAChB,0BAAsD;IAEtD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;IAEtF,GAAG;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qCAAqC,CAAC;QACnD,gGAAgG;QAChG,gGAAgG;SAC/F,MAAM,CAAC,eAAe,EAAE,mBAAmB,EAAE,cAAc,CAAC;QAC7D,+FAA+F;QAC/F,iGAAiG;SAChG,MAAM,CACL,eAAe,EACf,mIAAmI,CACpI;QACD,0FAA0F;QAC1F,yFAAyF;QACzF,8FAA8F;QAC9F,qCAAqC;SACpC,MAAM,CACL,wBAAwB,EACxB,wGAAwG,CACzG;SACA,WAAW,CACV,OAAO,EACP,IAAI;QACF,aAAa;QACb,qBAAqB;QACrB,iCAAiC;QACjC,gDAAgD;QAChD,qEAAqE,CACxE;SACA,MAAM,CAAC,KAAK,EAAE,OAA8D,EAAE,EAAE;QAC/E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,0BAA0B,CAAC,CAAC;YAC5D,6FAA6F;YAC7F,uEAAuE;YACvE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC;YAEhE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,6CAA6C,CAAC,CAAC;YACxF,yFAAyF;YACzF,uFAAuF;YACvF,qFAAqF;YACrF,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACrE,WAAW,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -77,7 +77,7 @@ export function askCommand(program, commandLineConfigOverrides) {
77
77
  let ok = false;
78
78
  try {
79
79
  ({ ok } = await runSingleShot('ASK', getAskSystemPrompt(config), content.join('\n'), config, createResolvers(), 'ask',
80
- // ask defaults to the lean backend; an explicit config.agent.backend overrides it.
80
+ // ask asks for the lean backend, the only one shipped; config.agent.backend names no other.
81
81
  resolveAgentFactory(config, 'lean')));
82
82
  }
83
83
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"askCommand.js","sourceRoot":"","sources":["../../src/commands/askCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"askCommand.js","sourceRoot":"","sources":["../../src/commands/askCommand.ts"],"names":[],"mappings":"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"}
@@ -78,11 +78,13 @@ export async function buildProductionRunCell(baseConfig, preamble, commandLineCo
78
78
  // an orphaned-process leak, one per cell.
79
79
  const resolvers = createResolvers();
80
80
  try {
81
- const { ok, answer, tokensInput, tokensOutput, tools, toolResults } = await runSingleShot(`${options.sourcePrefix}-${cell.id}`, preamble, content, cellConfig, resolvers, options.command,
82
- // batch/eval default to the lean backend, same as exec/ask; an explicit
83
- // config.agent.backend wins.
81
+ const { ok, answer, tokensInput, tokensOutput, tools, toolResults, advertisedTools } = await runSingleShot(`${options.sourcePrefix}-${cell.id}`, preamble, content, cellConfig, resolvers, options.command,
82
+ // batch/eval ask for the lean backend, same as exec/ask — the only one shipped;
83
+ // config.agent.backend names no other.
84
84
  resolveAgentFactory(cellConfig, 'lean'), { displayCommand: options.displayCommand });
85
- return { ok, answer, tokensInput, tokensOutput, tools, toolResults };
85
+ // BATCH-32: `advertisedTools` is threaded through with the rest — it is `gth eval`'s coverage
86
+ // denominator, and this adapter is the only place the agent's inventory can reach the runner.
87
+ return { ok, answer, tokensInput, tokensOutput, tools, toolResults, advertisedTools };
86
88
  }
87
89
  catch (error) {
88
90
  // runSingleShot itself is documented to never throw for a normal LLM/tool failure (it
@@ -137,13 +139,16 @@ export async function buildProductionRunConversation(config, preamble, options)
137
139
  const resolvers = createResolvers();
138
140
  try {
139
141
  const turns = await runConversation(`${options.sourcePrefix}-conversation`, preamble, wrapped, cellConfig, resolvers, options.command, resolveAgentFactory(cellConfig, 'lean'), { displayCommand: options.displayCommand });
140
- return turns.map(({ ok, answer, tokensInput, tokensOutput, tools, toolResults, error }) => ({
142
+ // BATCH-32: `advertisedTools` rides along per turn (the same inventory on each — the
143
+ // conversation builds its agent once), so a multi-turn suite contributes a denominator too.
144
+ return turns.map(({ ok, answer, tokensInput, tokensOutput, tools, toolResults, advertisedTools, error, }) => ({
141
145
  ok,
142
146
  answer,
143
147
  tokensInput,
144
148
  tokensOutput,
145
149
  tools,
146
150
  toolResults,
151
+ advertisedTools,
147
152
  error,
148
153
  }));
149
154
  }
@@ -1 +1 @@
1
- {"version":3,"file":"batchCommand.js","sourceRoot":"","sources":["../../src/commands/batchCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batchCommand.js","sourceRoot":"","sources":["../../src/commands/batchCommand.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,21 @@
1
1
  import { startSession } from '#src/modules/startSession.js';
2
- import { readChatPrompt } from '@gaunt-sloth/core/utils/llmUtils.js';
2
+ import { CHAT_SESSION_CONFIG } from '#src/modules/sessionConfigs.js';
3
+ import { resumeOption, sessionOptionsFor } from '#src/commands/resumeOption.js';
3
4
  export function chatCommand(program, commandLineConfigOverrides) {
4
- const sessionConfig = {
5
- mode: 'chat',
6
- readModePrompt: readChatPrompt,
7
- description: 'Start an interactive chat session with Gaunt Sloth',
8
- readyMessage: '\nGaunt Sloth is ready to chat. Type your prompt.',
9
- // [[TUI-C79]] — this row is shared by BOTH surfaces (the Ink dock composes it with
10
- // TUI_HINT_SUFFIX; the readline session prints it as-is), so every clause has to be true on
11
- // both. `exit` is: it needs no condition on either surface, in any state. `Ctrl+C` no longer
12
- // is — on the TUI it scraps a draft first and stops a turn second, and it only leaves from the
13
- // bottom of that ladder — and no accurate short wording exists for a fixed row, so the clause
14
- // is dropped rather than qualified. `/help` is the reference, and lists Ctrl+C per context.
15
- exitMessage: "Type 'exit' to leave chat · /help for commands\n",
16
- };
17
5
  // Chat command (REL-3: the no-subcommand default is now `code`, registered in codeCommand)
18
6
  program
19
7
  .command('chat')
20
8
  .description('Start an interactive chat session with Gaunt Sloth')
21
9
  .argument('[message]', 'Initial message to start the chat')
10
+ // GS2-20 — re-enter a recorded conversation in chat mode.
11
+ .addOption(resumeOption())
22
12
  .addHelpText('after', '\n' +
23
13
  'Examples:\n' +
24
14
  ' $ gth chat\n' +
25
- ' $ gth chat "Let\'s discuss the architecture of this project"\n')
26
- .action(async (message) => {
27
- await startSession(sessionConfig, commandLineConfigOverrides, message);
15
+ ' $ gth chat "Let\'s discuss the architecture of this project"\n' +
16
+ ' $ gth chat --resume 42\n')
17
+ .action(async (message, options) => {
18
+ await startSession(CHAT_SESSION_CONFIG, commandLineConfigOverrides, message, sessionOptionsFor(program, options));
28
19
  });
29
20
  }
30
21
  //# sourceMappingURL=chatCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatCommand.js","sourceRoot":"","sources":["../../src/commands/chatCommand.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErE,MAAM,UAAU,WAAW,CACzB,OAAgB,EAChB,0BAAsD;IAEtD,MAAM,aAAa,GAAkB;QACnC,IAAI,EAAE,MAAM;QACZ,cAAc,EAAE,cAAc;QAC9B,WAAW,EAAE,oDAAoD;QACjE,YAAY,EAAE,mDAAmD;QACjE,mFAAmF;QACnF,4FAA4F;QAC5F,6FAA6F;QAC7F,+FAA+F;QAC/F,8FAA8F;QAC9F,4FAA4F;QAC5F,WAAW,EAAE,kDAAkD;KAChE,CAAC;IACF,2FAA2F;IAC3F,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,oDAAoD,CAAC;SACjE,QAAQ,CAAC,WAAW,EAAE,mCAAmC,CAAC;SAC1D,WAAW,CACV,OAAO,EACP,IAAI;QACF,aAAa;QACb,gBAAgB;QAChB,kEAAkE,CACrE;SACA,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAChC,MAAM,YAAY,CAAC,aAAa,EAAE,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"chatCommand.js","sourceRoot":"","sources":["../../src/commands/chatCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGhF,MAAM,UAAU,WAAW,CACzB,OAAgB,EAChB,0BAAsD;IAEtD,2FAA2F;IAC3F,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,oDAAoD,CAAC;SACjE,QAAQ,CAAC,WAAW,EAAE,mCAAmC,CAAC;QAC3D,0DAA0D;SACzD,SAAS,CAAC,YAAY,EAAE,CAAC;SACzB,WAAW,CACV,OAAO,EACP,IAAI;QACF,aAAa;QACb,gBAAgB;QAChB,kEAAkE;QAClE,4BAA4B,CAC/B;SACA,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAA4B,EAAE,EAAE;QAC9D,MAAM,YAAY,CAChB,mBAAmB,EACnB,0BAA0B,EAC1B,OAAO,EACP,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CACpC,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,30 +1,26 @@
1
1
  import { startSession } from '#src/modules/startSession.js';
2
- import { readCodePrompt } from '@gaunt-sloth/core/utils/llmUtils.js';
2
+ import { CODE_SESSION_CONFIG } from '#src/modules/sessionConfigs.js';
3
+ import { resumeOption, sessionOptionsFor } from '#src/commands/resumeOption.js';
3
4
  export function codeCommand(program, commandLineConfigOverrides) {
4
- const sessionConfig = {
5
- mode: 'code',
6
- readModePrompt: readCodePrompt,
7
- description: 'Interactively write code with sloth (has full file system access within your project)',
8
- readyMessage: '\nGaunt Sloth is ready to code. Type your prompt.',
9
- // [[TUI-C79]] — the same shared-row rule as `chatCommand`: `exit` is the one route that is true
10
- // on both surfaces in every state, `Ctrl+C` is a three-meaning key on the TUI and cannot be
11
- // stated accurately in a fixed row, and `/help` is where the per-context version lives.
12
- exitMessage: "Type 'exit' to leave the code session · /help for commands\n",
13
- };
14
5
  // REL-3: bare `gth` (no subcommand) now defaults to the agentic code session.
6
+ // GS2-20 — `gth --resume <id>` is the root option (see cli.ts), read here because the bare form
7
+ // has no subcommand of its own to carry it.
15
8
  program.action(async () => {
16
- await startSession(sessionConfig, commandLineConfigOverrides);
9
+ await startSession(CODE_SESSION_CONFIG, commandLineConfigOverrides, undefined, sessionOptionsFor(program, {}));
17
10
  });
18
11
  program
19
12
  .command('code')
20
13
  .description('Interactively write code with sloth (has full file system access within your project)')
21
14
  .argument('[message]', 'Initial message to start the code session')
15
+ // GS2-20 — re-enter a recorded conversation in code mode.
16
+ .addOption(resumeOption())
22
17
  .addHelpText('after', '\n' +
23
18
  'Examples:\n' +
24
19
  ' $ gth code\n' +
25
- ' $ gth code "Help me refactor the authentication module"\n')
26
- .action(async (message) => {
27
- await startSession(sessionConfig, commandLineConfigOverrides, message);
20
+ ' $ gth code "Help me refactor the authentication module"\n' +
21
+ ' $ gth code --resume 42\n')
22
+ .action(async (message, options) => {
23
+ await startSession(CODE_SESSION_CONFIG, commandLineConfigOverrides, message, sessionOptionsFor(program, options));
28
24
  });
29
25
  }
30
26
  //# sourceMappingURL=codeCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codeCommand.js","sourceRoot":"","sources":["../../src/commands/codeCommand.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErE,MAAM,UAAU,WAAW,CACzB,OAAgB,EAChB,0BAAsD;IAEtD,MAAM,aAAa,GAAkB;QACnC,IAAI,EAAE,MAAM;QACZ,cAAc,EAAE,cAAc;QAC9B,WAAW,EACT,uFAAuF;QACzF,YAAY,EAAE,mDAAmD;QACjE,gGAAgG;QAChG,4FAA4F;QAC5F,wFAAwF;QACxF,WAAW,EAAE,8DAA8D;KAC5E,CAAC;IAEF,8EAA8E;IAC9E,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,YAAY,CAAC,aAAa,EAAE,0BAA0B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,uFAAuF,CACxF;SACA,QAAQ,CAAC,WAAW,EAAE,2CAA2C,CAAC;SAClE,WAAW,CACV,OAAO,EACP,IAAI;QACF,aAAa;QACb,gBAAgB;QAChB,6DAA6D,CAChE;SACA,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAChC,MAAM,YAAY,CAAC,aAAa,EAAE,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"codeCommand.js","sourceRoot":"","sources":["../../src/commands/codeCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGhF,MAAM,UAAU,WAAW,CACzB,OAAgB,EAChB,0BAAsD;IAEtD,8EAA8E;IAC9E,gGAAgG;IAChG,4CAA4C;IAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,YAAY,CAChB,mBAAmB,EACnB,0BAA0B,EAC1B,SAAS,EACT,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAC/B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,uFAAuF,CACxF;SACA,QAAQ,CAAC,WAAW,EAAE,2CAA2C,CAAC;QACnE,0DAA0D;SACzD,SAAS,CAAC,YAAY,EAAE,CAAC;SACzB,WAAW,CACV,OAAO,EACP,IAAI;QACF,aAAa;QACb,gBAAgB;QAChB,6DAA6D;QAC7D,4BAA4B,CAC/B;SACA,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAA4B,EAAE,EAAE;QAC9D,MAAM,YAAY,CAChB,mBAAmB,EACnB,0BAA0B,EAC1B,OAAO,EACP,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CACpC,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -8,7 +8,7 @@ export declare function getExecSystemPrompt(config: GthConfig): string;
8
8
  /**
9
9
  * The system prompt a `review` / `pr` run sends.
10
10
  *
11
- * Composed from the same segments, in the same order, that the agent backends compose for these
11
+ * Composed from the same segments, in the same order, that the agent composes for these
12
12
  * commands — backstory + guidelines + the review instructions (the `review`/`pr` mode prompt) +
13
13
  * system prompt. `commandIntrospectionReviewPrompt.spec.ts` pins the two against each other, so a
14
14
  * change to what a review run is given cannot leave `gth get system-prompt review` reporting the
@@ -15,7 +15,7 @@ export function getExecSystemPrompt(config) {
15
15
  /**
16
16
  * The system prompt a `review` / `pr` run sends.
17
17
  *
18
- * Composed from the same segments, in the same order, that the agent backends compose for these
18
+ * Composed from the same segments, in the same order, that the agent composes for these
19
19
  * commands — backstory + guidelines + the review instructions (the `review`/`pr` mode prompt) +
20
20
  * system prompt. `commandIntrospectionReviewPrompt.spec.ts` pins the two against each other, so a
21
21
  * change to what a review run is given cannot leave `gth get system-prompt review` reporting the
@@ -1,4 +1,16 @@
1
- export declare function createProjectConfig(configType: string, force?: boolean): Promise<void>;
1
+ /**
2
+ * Where {@link createProjectConfig} writes the scaffolded config. Mirrors {@link ConfigScope}
3
+ * (firstRunDialog.ts) but as a destination the scriptable `gth init <provider>` path is told
4
+ * rather than a choice it asks for: `global: true` selects `~/.gsloth/` (or its named profile
5
+ * dir); `global: false`/omitted keeps the existing project default.
6
+ */
7
+ export interface CreateProjectConfigDest {
8
+ /** Write into the global `~/.gsloth` tree instead of the project's `.gsloth/`. */
9
+ global?: boolean;
10
+ /** Named profile subdirectory within `.gsloth-settings/` (project or global, per `global`). */
11
+ identityProfile?: string;
12
+ }
13
+ export declare function createProjectConfig(configType: string, force?: boolean, dest?: CreateProjectConfigDest): Promise<void>;
2
14
  /**
3
15
  * Ensures that the .gsloth directory exists in the project root.
4
16
  * Creates it if it does not exist.
@@ -1,29 +1,50 @@
1
1
  import { GSLOTH_DIR, USER_PROJECT_CONFIG_JSON } from '@gaunt-sloth/core/constants.js';
2
- import { availableDefaultConfigs } from '@gaunt-sloth/core/config.js';
2
+ import { availableDefaultConfigs, validateProfileName, } from '@gaunt-sloth/core/config.js';
3
3
  import { resolveInitModel } from '@gaunt-sloth/core/providers/modelDiscovery.js';
4
4
  import { displayError, displayInfo, displayWarning } from '@gaunt-sloth/core/utils/consoleUtils.js';
5
5
  import { getGslothConfigWritePath } from '@gaunt-sloth/review/utils/fileUtils.js';
6
+ import { getGlobalGslothConfigWritePath } from '@gaunt-sloth/core/utils/globalConfigUtils.js';
6
7
  import { exit, getCurrentWorkDir } from '@gaunt-sloth/core/utils/systemUtils.js';
7
8
  import { existsSync, mkdirSync } from 'node:fs';
8
9
  import { resolve } from 'node:path';
9
- export async function createProjectConfig(configType, force = false) {
10
+ export async function createProjectConfig(configType, force = false, dest = {}) {
10
11
  if (!availableDefaultConfigs.includes(configType)) {
11
12
  displayError(`Unknown config type: ${configType}. Available options: ${availableDefaultConfigs.join(', ')}`);
12
13
  exit(1);
13
14
  }
14
- ensureGslothDir();
15
- displayInfo(`Setting up your project\n`);
15
+ // GS2-33 — a bad profile name must never reach a mkdir or a write.
16
+ let identityProfile = dest.identityProfile;
17
+ if (identityProfile !== undefined) {
18
+ try {
19
+ identityProfile = validateProfileName(identityProfile);
20
+ }
21
+ catch (err) {
22
+ displayError(err instanceof Error ? err.message : String(err));
23
+ exit(1);
24
+ return;
25
+ }
26
+ }
27
+ const global = !!dest.global;
28
+ if (global) {
29
+ displayInfo(`Setting up your global configuration\n`);
30
+ }
31
+ else {
32
+ ensureGslothDir();
33
+ displayInfo(`Setting up your project\n`);
34
+ }
16
35
  // GS2-43: `gth init` scaffolds the config file ONLY. The planted `.gsloth.guidelines.md` /
17
36
  // `.gsloth.review.md` templates are gone — the bundled defaults (empty guidelines, a complete
18
37
  // review prompt) apply until the user creates their own files or points `prompts.*` elsewhere.
19
38
  // Without --force, keep an existing config (and say so honestly) rather than running
20
39
  // the provider init, whose no-clobber write would silently skip and leave a misleading trail.
21
- const configPath = getGslothConfigWritePath(USER_PROJECT_CONFIG_JSON);
40
+ const configPath = global
41
+ ? getGlobalGslothConfigWritePath(USER_PROJECT_CONFIG_JSON, identityProfile)
42
+ : getGslothConfigWritePath(USER_PROJECT_CONFIG_JSON, identityProfile);
22
43
  if (!force && existsSync(configPath)) {
23
44
  displayWarning(`${configPath} already exists and was kept (not overwritten). Re-run with --force to overwrite it.`);
24
45
  return;
25
46
  }
26
- displayInfo(`Creating project config for ${configType}`);
47
+ displayInfo(`Creating ${global ? 'global ' : 'project '}config for ${configType}`);
27
48
  // CFG-14: resolve the model to write from live `/v1/models` discovery when a key/daemon is
28
49
  // present (a verified-present id, never a speculative literal). When live discovery is
29
50
  // impossible this returns undefined and `init` omits `model`, deferring to the provider's
@@ -1 +1 @@
1
- {"version":3,"file":"configSetup.js","sourceRoot":"","sources":["../../src/commands/configSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAmB,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAmB,MAAM,+CAA+C,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACpG,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAkB,EAAE,KAAK,GAAG,KAAK;IACzE,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,UAAwB,CAAC,EAAE,CAAC;QAChE,YAAY,CACV,wBAAwB,UAAU,wBAAwB,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/F,CAAC;QACF,IAAI,CAAC,CAAC,CAAC,CAAC;IACV,CAAC;IAED,eAAe,EAAE,CAAC;IAElB,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAEzC,2FAA2F;IAC3F,8FAA8F;IAC9F,+FAA+F;IAC/F,qFAAqF;IACrF,8FAA8F;IAC9F,MAAM,UAAU,GAAG,wBAAwB,CAAC,wBAAwB,CAAC,CAAC;IACtE,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,cAAc,CACZ,GAAG,UAAU,sFAAsF,CACpG,CAAC;QACF,OAAO;IACT,CAAC;IAED,WAAW,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;IACzD,2FAA2F;IAC3F,uFAAuF;IACvF,0FAA0F;IAC1F,gGAAgG;IAChG,kCAAkC;IAClC,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,UAAwB,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,+BAA+B,UAAU,KAAK,CAAC,CAAC;IAClF,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,WAAW,CAAC,WAAW,UAAU,YAAY,CAAC,CAAC;IACjD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"configSetup.js","sourceRoot":"","sources":["../../src/commands/configSetup.ts"],"names":[],"mappings":"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"}