gaunt-sloth 2.0.0-alpha.23 → 2.0.0-alpha.24
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.
- package/README.md +29 -14
- package/cli.js +5 -2
- package/dist/cli.js +22 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/adkEvalRunner.js +1 -1
- package/dist/commands/adkEvalRunner.js.map +1 -1
- package/dist/commands/agUiEvalRunner.d.ts +20 -3
- package/dist/commands/agUiEvalRunner.js +136 -32
- package/dist/commands/agUiEvalRunner.js.map +1 -1
- package/dist/commands/batchCommand.js +5 -0
- package/dist/commands/batchCommand.js.map +1 -1
- package/dist/commands/commandUtils.d.ts +1 -0
- package/dist/commands/commandUtils.js +2 -1
- package/dist/commands/commandUtils.js.map +1 -1
- package/dist/commands/configCommand.d.ts +6 -2
- package/dist/commands/configCommand.js +63 -4
- package/dist/commands/configCommand.js.map +1 -1
- package/dist/commands/configSetup.d.ts +0 -1
- package/dist/commands/configSetup.js +6 -36
- package/dist/commands/configSetup.js.map +1 -1
- package/dist/commands/execCommand.js +6 -0
- package/dist/commands/execCommand.js.map +1 -1
- package/dist/commands/firstRunDialog.d.ts +4 -4
- package/dist/commands/firstRunDialog.js +6 -6
- package/dist/commands/firstRunDialog.js.map +1 -1
- package/dist/commands/historyCommand.js +6 -1
- package/dist/commands/historyCommand.js.map +1 -1
- package/dist/commands/insightsCommand.js +4 -0
- package/dist/commands/insightsCommand.js.map +1 -1
- package/dist/commands/prCommand.js +9 -3
- package/dist/commands/prCommand.js.map +1 -1
- package/dist/commands/reviewCommand.js +17 -6
- package/dist/commands/reviewCommand.js.map +1 -1
- package/dist/commands/workflowCommand.js +4 -0
- package/dist/commands/workflowCommand.js.map +1 -1
- package/dist/tui/components/App.js +7 -7
- package/dist/tui/components/App.js.map +1 -1
- package/dist/tui/components/PromptInput.d.ts +1 -1
- package/dist/tui/components/PromptInput.js +1 -1
- package/dist/tui/components/PromptInput.js.map +1 -1
- package/dist/tui/components/SlashCommandMenu.d.ts +1 -1
- package/dist/tui/tuiSessionModule.js +27 -3
- package/dist/tui/tuiSessionModule.js.map +1 -1
- package/dist/tui/types.d.ts +1 -1
- package/dist/tui/viewModel.js +8 -8
- package/dist/tui/viewModel.js.map +1 -1
- package/package.json +7 -9
- package/dist/builtInToolsConfig.d.ts +0 -1
- package/dist/builtInToolsConfig.js +0 -2
- package/dist/builtInToolsConfig.js.map +0 -1
- package/dist/config.d.ts +0 -1
- package/dist/config.js +0 -2
- package/dist/config.js.map +0 -1
- package/dist/constants.d.ts +0 -1
- package/dist/constants.js +0 -2
- package/dist/constants.js.map +0 -1
- package/dist/core/GthAgentRunner.d.ts +0 -1
- package/dist/core/GthAgentRunner.js +0 -2
- package/dist/core/GthAgentRunner.js.map +0 -1
- package/dist/core/GthLangChainAgent.d.ts +0 -1
- package/dist/core/GthLangChainAgent.js +0 -2
- package/dist/core/GthLangChainAgent.js.map +0 -1
- package/dist/core/types.d.ts +0 -1
- package/dist/core/types.js +0 -2
- package/dist/core/types.js.map +0 -1
- package/dist/helpers/jira/jiraClient.d.ts +0 -1
- package/dist/helpers/jira/jiraClient.js +0 -2
- package/dist/helpers/jira/jiraClient.js.map +0 -1
- package/dist/mcp/OAuthClientProviderImpl.d.ts +0 -1
- package/dist/mcp/OAuthClientProviderImpl.js +0 -2
- package/dist/mcp/OAuthClientProviderImpl.js.map +0 -1
- package/dist/middleware/binaryContentInjectionMiddleware.d.ts +0 -1
- package/dist/middleware/binaryContentInjectionMiddleware.js +0 -2
- package/dist/middleware/binaryContentInjectionMiddleware.js.map +0 -1
- package/dist/middleware/registry.d.ts +0 -1
- package/dist/middleware/registry.js +0 -2
- package/dist/middleware/registry.js.map +0 -1
- package/dist/middleware/reviewRateMiddleware.d.ts +0 -1
- package/dist/middleware/reviewRateMiddleware.js +0 -2
- package/dist/middleware/reviewRateMiddleware.js.map +0 -1
- package/dist/middleware/types.d.ts +0 -1
- package/dist/middleware/types.js +0 -2
- package/dist/middleware/types.js.map +0 -1
- package/dist/modules/a2a/A2AClientWrapper.d.ts +0 -1
- package/dist/modules/a2a/A2AClientWrapper.js +0 -2
- package/dist/modules/a2a/A2AClientWrapper.js.map +0 -1
- package/dist/modules/apiAgUiModule.d.ts +0 -1
- package/dist/modules/apiAgUiModule.js +0 -2
- package/dist/modules/apiAgUiModule.js.map +0 -1
- package/dist/modules/interactiveSessionModule.d.ts +0 -1
- package/dist/modules/interactiveSessionModule.js +0 -2
- package/dist/modules/interactiveSessionModule.js.map +0 -1
- package/dist/modules/reviewModule.d.ts +0 -1
- package/dist/modules/reviewModule.js +0 -2
- package/dist/modules/reviewModule.js.map +0 -1
- package/dist/modules/types.d.ts +0 -1
- package/dist/modules/types.js +0 -2
- package/dist/modules/types.js.map +0 -1
- package/dist/presets/anthropic.d.ts +0 -1
- package/dist/presets/anthropic.js +0 -2
- package/dist/presets/anthropic.js.map +0 -1
- package/dist/presets/deepseek.d.ts +0 -1
- package/dist/presets/deepseek.js +0 -2
- package/dist/presets/deepseek.js.map +0 -1
- package/dist/presets/fake.d.ts +0 -1
- package/dist/presets/fake.js +0 -2
- package/dist/presets/fake.js.map +0 -1
- package/dist/presets/google-genai.d.ts +0 -1
- package/dist/presets/google-genai.js +0 -2
- package/dist/presets/google-genai.js.map +0 -1
- package/dist/presets/groq.d.ts +0 -1
- package/dist/presets/groq.js +0 -2
- package/dist/presets/groq.js.map +0 -1
- package/dist/presets/openai.d.ts +0 -1
- package/dist/presets/openai.js +0 -2
- package/dist/presets/openai.js.map +0 -1
- package/dist/presets/openrouter.d.ts +0 -1
- package/dist/presets/openrouter.js +0 -2
- package/dist/presets/openrouter.js.map +0 -1
- package/dist/presets/vertexai.d.ts +0 -1
- package/dist/presets/vertexai.js +0 -2
- package/dist/presets/vertexai.js.map +0 -1
- package/dist/presets/xai.d.ts +0 -1
- package/dist/presets/xai.js +0 -2
- package/dist/presets/xai.js.map +0 -1
- package/dist/providers/file.d.ts +0 -1
- package/dist/providers/file.js +0 -2
- package/dist/providers/file.js.map +0 -1
- package/dist/providers/ghIssueProvider.d.ts +0 -1
- package/dist/providers/ghIssueProvider.js +0 -2
- package/dist/providers/ghIssueProvider.js.map +0 -1
- package/dist/providers/ghPrDiffProvider.d.ts +0 -1
- package/dist/providers/ghPrDiffProvider.js +0 -2
- package/dist/providers/ghPrDiffProvider.js.map +0 -1
- package/dist/providers/jiraIssueLegacyProvider.d.ts +0 -1
- package/dist/providers/jiraIssueLegacyProvider.js +0 -2
- package/dist/providers/jiraIssueLegacyProvider.js.map +0 -1
- package/dist/providers/jiraIssueProvider.d.ts +0 -1
- package/dist/providers/jiraIssueProvider.js +0 -2
- package/dist/providers/jiraIssueProvider.js.map +0 -1
- package/dist/providers/text.d.ts +0 -1
- package/dist/providers/text.js +0 -2
- package/dist/providers/text.js.map +0 -1
- package/dist/providers/types.d.ts +0 -1
- package/dist/providers/types.js +0 -2
- package/dist/providers/types.js.map +0 -1
- package/dist/state/artifactStore.d.ts +0 -1
- package/dist/state/artifactStore.js +0 -2
- package/dist/state/artifactStore.js.map +0 -1
- package/dist/tools/A2AAgentTool.d.ts +0 -1
- package/dist/tools/A2AAgentTool.js +0 -2
- package/dist/tools/A2AAgentTool.js.map +0 -1
- package/dist/tools/GthCustomToolkit.d.ts +0 -1
- package/dist/tools/GthCustomToolkit.js +0 -2
- package/dist/tools/GthCustomToolkit.js.map +0 -1
- package/dist/tools/GthDevToolkit.d.ts +0 -1
- package/dist/tools/GthDevToolkit.js +0 -2
- package/dist/tools/GthDevToolkit.js.map +0 -1
- package/dist/tools/GthFileSystemToolkit.d.ts +0 -1
- package/dist/tools/GthFileSystemToolkit.js +0 -2
- package/dist/tools/GthFileSystemToolkit.js.map +0 -1
- package/dist/tools/binaryUtils.d.ts +0 -1
- package/dist/tools/binaryUtils.js +0 -2
- package/dist/tools/binaryUtils.js.map +0 -1
- package/dist/tools/gthJiraLogWorkTool.d.ts +0 -3
- package/dist/tools/gthJiraLogWorkTool.js +0 -37
- package/dist/tools/gthJiraLogWorkTool.js.map +0 -1
- package/dist/tools/gthStatusUpdateTool.d.ts +0 -1
- package/dist/tools/gthStatusUpdateTool.js +0 -2
- package/dist/tools/gthStatusUpdateTool.js.map +0 -1
- package/dist/tools/gthWebFetchTool.d.ts +0 -1
- package/dist/tools/gthWebFetchTool.js +0 -2
- package/dist/tools/gthWebFetchTool.js.map +0 -1
- package/dist/tools/showA2UISurfaceTool.d.ts +0 -1
- package/dist/tools/showA2UISurfaceTool.js +0 -2
- package/dist/tools/showA2UISurfaceTool.js.map +0 -1
- package/dist/tui/slashCommands.d.ts +0 -317
- package/dist/tui/slashCommands.js +0 -569
- package/dist/tui/slashCommands.js.map +0 -1
- package/dist/utils/ProgressIndicator.d.ts +0 -1
- package/dist/utils/ProgressIndicator.js +0 -2
- package/dist/utils/ProgressIndicator.js.map +0 -1
- package/dist/utils/aiignoreUtils.d.ts +0 -1
- package/dist/utils/aiignoreUtils.js +0 -2
- package/dist/utils/aiignoreUtils.js.map +0 -1
- package/dist/utils/binaryOutputUtils.d.ts +0 -1
- package/dist/utils/binaryOutputUtils.js +0 -2
- package/dist/utils/binaryOutputUtils.js.map +0 -1
- package/dist/utils/consoleUtils.d.ts +0 -1
- package/dist/utils/consoleUtils.js +0 -2
- package/dist/utils/consoleUtils.js.map +0 -1
- package/dist/utils/debugUtils.d.ts +0 -1
- package/dist/utils/debugUtils.js +0 -2
- package/dist/utils/debugUtils.js.map +0 -1
- package/dist/utils/fileUtils.d.ts +0 -1
- package/dist/utils/fileUtils.js +0 -2
- package/dist/utils/fileUtils.js.map +0 -1
- package/dist/utils/globalConfigUtils.d.ts +0 -1
- package/dist/utils/globalConfigUtils.js +0 -2
- package/dist/utils/globalConfigUtils.js.map +0 -1
- package/dist/utils/llmUtils.d.ts +0 -1
- package/dist/utils/llmUtils.js +0 -2
- package/dist/utils/llmUtils.js.map +0 -1
- package/dist/utils/mcpUtils.d.ts +0 -1
- package/dist/utils/mcpUtils.js +0 -2
- package/dist/utils/mcpUtils.js.map +0 -1
- package/dist/utils/stringUtils.d.ts +0 -1
- package/dist/utils/stringUtils.js +0 -2
- package/dist/utils/stringUtils.js.map +0 -1
- package/dist/utils/systemUtils.d.ts +0 -1
- package/dist/utils/systemUtils.js +0 -2
- package/dist/utils/systemUtils.js.map +0 -1
- package/dist/utils/vertexaiUtils.d.ts +0 -1
- package/dist/utils/vertexaiUtils.js +0 -2
- package/dist/utils/vertexaiUtils.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,37 +1,52 @@
|
|
|
1
1
|
# gaunt-sloth
|
|
2
2
|
|
|
3
|
-
The main CLI application for Gaunt Sloth
|
|
3
|
+
The main CLI application for Gaunt Sloth — the fat package that turns the `@gaunt-sloth/*`
|
|
4
|
+
libraries into the `gth` command.
|
|
4
5
|
|
|
5
6
|
## Contents
|
|
6
7
|
|
|
7
|
-
- CLI entry point
|
|
8
|
-
- Commands: `ask`, `review`, `pr`, `chat`, `code`, `init`, `get`, `api
|
|
9
|
-
|
|
8
|
+
- CLI entry point, commander-based command registration, and the Ink TUI
|
|
9
|
+
- Commands: `ask`, `review`, `pr`, `chat`, `code`, `exec`, `init`, `config`, `get`, `api`,
|
|
10
|
+
`batch`, `eval`, `workflow`, `history`, `insights`, `models` — see
|
|
11
|
+
[docs/COMMANDS.md](https://github.com/pukeko-robotics/gaunt-sloth/blob/main/docs/COMMANDS.md)
|
|
10
12
|
- Vendor package wiring (all LangChain provider packages)
|
|
11
|
-
- Integration tests
|
|
12
13
|
|
|
13
14
|
## CLI Binaries
|
|
14
15
|
|
|
15
|
-
The package registers
|
|
16
|
+
The package registers three equivalent binary aliases:
|
|
16
17
|
|
|
17
|
-
- `
|
|
18
|
-
- `
|
|
19
|
-
- `
|
|
20
|
-
- `gaunt-sloth-assistant` (back-compat alias for the former package name)
|
|
18
|
+
- `gth` (primary)
|
|
19
|
+
- `gsloth` (long-form alias)
|
|
20
|
+
- `gaunt-sloth` (package-name alias)
|
|
21
21
|
|
|
22
22
|
## Dependencies
|
|
23
23
|
|
|
24
24
|
- `@gaunt-sloth/core`
|
|
25
25
|
- `@gaunt-sloth/agent`
|
|
26
26
|
- `@gaunt-sloth/review`
|
|
27
|
+
- `@gaunt-sloth/batch`
|
|
28
|
+
- `@gaunt-sloth/eval-reporter-junit`
|
|
27
29
|
- `commander`
|
|
28
|
-
- All LangChain vendor packages (anthropic, google
|
|
30
|
+
- All LangChain vendor packages (anthropic, google, groq, openai, xai, etc.)
|
|
29
31
|
|
|
30
32
|
This is the only package in the workspace that pulls in AI vendor dependencies directly. All other packages treat vendors as optional peers.
|
|
31
33
|
|
|
32
|
-
##
|
|
34
|
+
## Not a library
|
|
33
35
|
|
|
34
|
-
|
|
36
|
+
This package deliberately exports **no importable modules** — its `exports` map exposes only
|
|
37
|
+
`./package.json`. It is the CLI product: install it globally and run `gth`. To embed Gaunt Sloth
|
|
38
|
+
functionality in your own code, depend on the scoped packages instead — they are the supported
|
|
39
|
+
embeddable surface:
|
|
40
|
+
|
|
41
|
+
- [`@gaunt-sloth/core`](https://www.npmjs.com/package/@gaunt-sloth/core) — config resolution and
|
|
42
|
+
the provider factory
|
|
43
|
+
- [`@gaunt-sloth/agent`](https://www.npmjs.com/package/@gaunt-sloth/agent) — the agent runtime,
|
|
44
|
+
tools, and the AG-UI/ACP servers
|
|
45
|
+
- [`@gaunt-sloth/review`](https://www.npmjs.com/package/@gaunt-sloth/review) — programmatic code
|
|
46
|
+
review (see its README for a worked embed example)
|
|
47
|
+
|
|
48
|
+
(Until 2.0 the app exposed a `./*` deep-path wildcard over a tree of re-export shims; the shims
|
|
49
|
+
are gone and the wildcard with them.)
|
|
35
50
|
|
|
36
51
|
## Installation
|
|
37
52
|
|
|
@@ -94,6 +109,6 @@ the same `command` + `args` pair.
|
|
|
94
109
|
|
|
95
110
|
- [`@gaunt-sloth/core`](https://www.npmjs.com/package/@gaunt-sloth/core) — Core utilities, config, and agent infrastructure ([source](https://github.com/pukeko-robotics/gaunt-sloth/tree/main/packages/core))
|
|
96
111
|
- [`@gaunt-sloth/agent`](https://www.npmjs.com/package/@gaunt-sloth/agent) — Agent runtime, built-in tools, API/AG-UI/ACP server ([source](https://github.com/pukeko-robotics/gaunt-sloth/tree/main/packages/agent))
|
|
97
|
-
- [`@gaunt-sloth/review`](https://www.npmjs.com/package/@gaunt-sloth/review) — Review
|
|
112
|
+
- [`@gaunt-sloth/review`](https://www.npmjs.com/package/@gaunt-sloth/review) — Review engine with content/requirement sources (GitHub, Jira, file, text) and standalone CLI ([source](https://github.com/pukeko-robotics/gaunt-sloth/tree/main/packages/review))
|
|
98
113
|
- [`@gaunt-sloth/batch`](https://www.npmjs.com/package/@gaunt-sloth/batch) — Batch / eval / workflow runtime ([source](https://github.com/pukeko-robotics/gaunt-sloth/tree/main/packages/batch))
|
|
99
114
|
- [`gaunt-sloth`](https://www.npmjs.com/package/gaunt-sloth) — Main CLI application (this package) ([source](https://github.com/pukeko-robotics/gaunt-sloth/tree/main/packages/app))
|
package/cli.js
CHANGED
|
@@ -42,8 +42,11 @@ if (process.argv.includes('--acp-agent')) {
|
|
|
42
42
|
}
|
|
43
43
|
} else {
|
|
44
44
|
// This is a minimalistic entry point that sets the installDir in systemUtils
|
|
45
|
-
// and delegates to the compiled TypeScript code in dist/cli.js
|
|
46
|
-
|
|
45
|
+
// and delegates to the compiled TypeScript code in dist/cli.js.
|
|
46
|
+
// systemUtils lives in @gaunt-sloth/core (the app-side re-export shim died in
|
|
47
|
+
// GS2-2 B4); importing it from core directly binds the same module instance
|
|
48
|
+
// the rest of the app reads, so setEntryPoint state is shared as before.
|
|
49
|
+
const { setEntryPoint } = await import('@gaunt-sloth/core/utils/systemUtils.js');
|
|
47
50
|
|
|
48
51
|
// Set the installation directory in systemUtils
|
|
49
52
|
setEntryPoint(import.meta.url);
|
package/dist/cli.js
CHANGED
|
@@ -15,12 +15,17 @@ import { configCommand } from '#src/commands/configCommand.js';
|
|
|
15
15
|
import { historyCommand } from '#src/commands/historyCommand.js';
|
|
16
16
|
import { insightsCommand } from '#src/commands/insightsCommand.js';
|
|
17
17
|
import { modelsCommand } from '#src/commands/modelsCommand.js';
|
|
18
|
-
import { argv, getSlothVersion, readStdin } from '@gaunt-sloth/core/utils/systemUtils.js';
|
|
18
|
+
import { argv, exit, getSlothVersion, readStdin } from '@gaunt-sloth/core/utils/systemUtils.js';
|
|
19
19
|
import { commandSkipsStdin, resolveInvokedCommandName } from '#src/utils/stdinPolicy.js';
|
|
20
|
-
import { coerceBooleanOrString } from '@gaunt-sloth/core/utils/consoleUtils.js';
|
|
20
|
+
import { coerceBooleanOrString, displayError } from '@gaunt-sloth/core/utils/consoleUtils.js';
|
|
21
|
+
import { installCrashHandler } from '@gaunt-sloth/core/utils/crashHandler.js';
|
|
22
|
+
// GS2-48 — install the process-level crash handler as early as possible, so an uncaughtException /
|
|
23
|
+
// unhandledRejection anywhere in the run writes a redacted debug snapshot to ~/.gsloth/debug-dumps/
|
|
24
|
+
// before the process dies. Idempotent and inert on a normal exit.
|
|
25
|
+
installCrashHandler();
|
|
21
26
|
const program = new Command();
|
|
22
27
|
program
|
|
23
|
-
.name('
|
|
28
|
+
.name('gth')
|
|
24
29
|
.description('Gaunt Sloth reviewing your PRs')
|
|
25
30
|
.version(getSlothVersion())
|
|
26
31
|
.option('--verbose', 'Set LangChain/LangGraph to verbose mode, ' +
|
|
@@ -28,6 +33,8 @@ program
|
|
|
28
33
|
'Consider using debugLog from config.ts for less intrusive debug logging.')
|
|
29
34
|
.option('-c, --config <path>', 'Path to custom configuration file')
|
|
30
35
|
.option('-i, --identity-profile <identity>', 'Identity profile (separate config and prompts)')
|
|
36
|
+
.option('--profile <name>', 'Named config profile to run under (alias of --identity-profile; ' +
|
|
37
|
+
'create one with `gth config profile create <name>`)')
|
|
31
38
|
.option('-w, --write-output-to-file <value>', 'Write output to file. Accepts true/false or a filename. Shortcuts: -wn or -w0 for false.')
|
|
32
39
|
.option('--tui', 'Force the interactive Ink TUI for chat/code sessions (overrides CI auto-off)')
|
|
33
40
|
.option('--no-tui', 'Force the plain readline session for chat/code (disable the TUI)')
|
|
@@ -48,8 +55,18 @@ if (program.getOptionValue('config')) {
|
|
|
48
55
|
// Set a custom config path
|
|
49
56
|
cliConfigOverrides.customConfigPath = program.getOptionValue('config');
|
|
50
57
|
}
|
|
51
|
-
|
|
52
|
-
|
|
58
|
+
// `--profile` (GS2-33) is the friendly alias of `-i/--identity-profile`: both select a named profile
|
|
59
|
+
// block (`.gsloth/.gsloth-settings/<name>/`). If BOTH are given and disagree, that is a mistake worth
|
|
60
|
+
// surfacing rather than silently picking one; identical values are harmless.
|
|
61
|
+
const identityProfileOpt = program.getOptionValue('identityProfile');
|
|
62
|
+
const profileOpt = program.getOptionValue('profile');
|
|
63
|
+
if (identityProfileOpt && profileOpt && identityProfileOpt !== profileOpt) {
|
|
64
|
+
displayError(`Conflicting profiles: --identity-profile "${identityProfileOpt}" and --profile "${profileOpt}". ` +
|
|
65
|
+
'Pass only one (they are aliases).');
|
|
66
|
+
exit(1);
|
|
67
|
+
}
|
|
68
|
+
if (profileOpt ?? identityProfileOpt) {
|
|
69
|
+
cliConfigOverrides.identityProfile = profileOpt ?? identityProfileOpt;
|
|
53
70
|
}
|
|
54
71
|
// Tri-state TUI flag: leave `tui` undefined (auto-detect) unless the user explicitly passed
|
|
55
72
|
// `--tui` or `--no-tui`. Commander's `--no-tui` defaults the value to `true`, so we key off
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAGzF,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAE9E,mGAAmG;AACnG,oGAAoG;AACpG,kEAAkE;AAClE,mBAAmB,EAAE,CAAC;AAEtB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,gCAAgC,CAAC;KAC7C,OAAO,CAAC,eAAe,EAAE,CAAC;KAC1B,MAAM,CACL,WAAW,EACX,2CAA2C;IACzC,kEAAkE;IAClE,0EAA0E,CAC7E;KACA,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;KAClE,MAAM,CAAC,mCAAmC,EAAE,gDAAgD,CAAC;KAC7F,MAAM,CACL,kBAAkB,EAClB,kEAAkE;IAChE,qDAAqD,CACxD;KACA,MAAM,CACL,oCAAoC,EACpC,0FAA0F,CAC3F;KACA,MAAM,CAAC,OAAO,EAAE,8EAA8E,CAAC;KAC/F,MAAM,CAAC,UAAU,EAAE,kEAAkE,CAAC;KACtF,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAChD,SAAS,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAErD,MAAM,kBAAkB,GAA+B,EAAE,CAAC;AAE1D,mDAAmD;AACnD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;IACtC;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC;AACpC,CAAC;AACD,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrC,2BAA2B;IAC3B,kBAAkB,CAAC,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACzE,CAAC;AACD,qGAAqG;AACrG,sGAAsG;AACtG,6EAA6E;AAC7E,MAAM,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AACrE,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACrD,IAAI,kBAAkB,IAAI,UAAU,IAAI,kBAAkB,KAAK,UAAU,EAAE,CAAC;IAC1E,YAAY,CACV,6CAA6C,kBAAkB,oBAAoB,UAAU,KAAK;QAChG,mCAAmC,CACtC,CAAC;IACF,IAAI,CAAC,CAAC,CAAC,CAAC;AACV,CAAC;AACD,IAAI,UAAU,IAAI,kBAAkB,EAAE,CAAC;IACrC,kBAAkB,CAAC,eAAe,GAAG,UAAU,IAAI,kBAAkB,CAAC;AACxE,CAAC;AAED,4FAA4F;AAC5F,4FAA4F;AAC5F,mFAAmF;AACnF,IAAI,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;IAClD,kBAAkB,CAAC,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAEhE,qEAAqE;AACrE,oEAAoE;AACpE,6EAA6E;AAC7E,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;AACnD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;IAC1B,kBAAkB,CAAC,iBAAiB,GAAG,OAAO,CAAC;AACjD,CAAC;AAED,sEAAsE;AACtE,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,aAAa,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAC3C,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACvC,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACxC,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACzC,YAAY,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAC1C,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACzC,eAAe,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAC7C,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACzC,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACzC,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACxC,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACxC,aAAa,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAC3C,mGAAmG;AACnG,gGAAgG;AAChG,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,oGAAoG;AACpG,2EAA2E;AAC3E,aAAa,CAAC,OAAO,CAAC,CAAC;AAEvB,8FAA8F;AAC9F,kGAAkG;AAClG,mGAAmG;AACnG,6FAA6F;AAC7F,+FAA+F;AAC/F,kGAAkG;AAClG,cAAc;AACd,MAAM,cAAc,GAAG,yBAAyB,CAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EACjD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CACpC,CAAC;AACF,IAAI,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;IACtC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A2AClientWrapper } from '
|
|
1
|
+
import { A2AClientWrapper } from '@gaunt-sloth/agent/modules/a2a/A2AClientWrapper.js';
|
|
2
2
|
/** Production factory: a real {@link A2AClientWrapper} over the target's A2A endpoint, adapted to the
|
|
3
3
|
* narrow {@link AdkA2AClient} shape via its context-threading {@link A2AClientWrapper.sendMessageWithContext}. */
|
|
4
4
|
export const defaultAdkClientFactory = (target) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adkEvalRunner.js","sourceRoot":"","sources":["../../src/commands/adkEvalRunner.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"adkEvalRunner.js","sourceRoot":"","sources":["../../src/commands/adkEvalRunner.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAC;AA0BtF;kHACkH;AAClH,MAAM,CAAC,MAAM,uBAAuB,GAAqB,CAAC,MAAM,EAAE,EAAE;IAClE,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC;QACnC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,WAAW;QACtC,QAAQ,EAAE,MAAM,CAAC,GAAG;KACrB,CAAC,CAAC;IACH,OAAO;QACL,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC;KAC9E,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAsB,EACtB,YAAY,GAAqB,uBAAuB;IAExD,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAsB,EACtB,YAAY,GAAqB,uBAAuB;IAExD,OAAO,KAAK,EAAE,YAAY,EAAE,EAAE;QAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAqB,EAAE,CAAC;QACtC,IAAI,SAA6B,CAAC;QAElC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC1F,yFAAyF;gBACzF,IAAI,QAAQ,CAAC,SAAS;oBAAE,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;gBACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,IAAI,CAAC;oBACZ,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;gBACH,uFAAuF;gBACvF,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -35,16 +35,33 @@ export type AgUiClientFactory = (target: AgUiAgentTarget) => AgUiClient;
|
|
|
35
35
|
/** The `fetch` seam — global `fetch` in production, a fake in tests (so the real POST-body
|
|
36
36
|
* construction + SSE decode are exercised with no network). */
|
|
37
37
|
export type FetchLike = typeof fetch;
|
|
38
|
+
/**
|
|
39
|
+
* Default deadline for one AG-UI run (fetch + full SSE decode). The runner has no configured
|
|
40
|
+
* timeout, so this bounds a server that hangs at EITHER phase — one that accepts the POST but never
|
|
41
|
+
* sends response headers (the `fetch` await never returns) OR one that opens the stream but never
|
|
42
|
+
* emits `RUN_FINISHED`: past it the case FAILS with a clear error instead of wedging the process.
|
|
43
|
+
* Injectable per-client for tests.
|
|
44
|
+
*/
|
|
45
|
+
export declare const AG_UI_RUN_TIMEOUT_MS = 120000;
|
|
38
46
|
/**
|
|
39
47
|
* Create a real {@link AgUiClient} that drives the target's AG-UI run endpoint over HTTP/SSE. Each
|
|
40
48
|
* `run` POSTs a `RunAgentInput` to `{url}/agents/{agentId}/run` and decodes the SSE response via
|
|
41
|
-
* {@link decodeAgUiStream}. A non-2xx response, an absent body, a `RUN_ERROR` event,
|
|
42
|
-
* stream all throw — the runner builders contain that into a
|
|
49
|
+
* {@link decodeAgUiStream}. A non-2xx response, an absent body, a `RUN_ERROR` event, a truncated
|
|
50
|
+
* stream, or a run that exceeds `timeoutMs` all throw — the runner builders contain that into a
|
|
51
|
+
* failed cell (`ok:false`).
|
|
52
|
+
*
|
|
53
|
+
* The WHOLE run is bounded by `timeoutMs` (default {@link AG_UI_RUN_TIMEOUT_MS}) via a single
|
|
54
|
+
* deadline armed BEFORE the fetch. BOTH phases are raced against it: the `fetch` await (so a server
|
|
55
|
+
* that accepts the POST but never sends response headers is bounded too) AND the SSE decode (so a
|
|
56
|
+
* body that opens but never ends still fails the case rather than hanging). Racing — not the abort
|
|
57
|
+
* signal — is the load-bearing mechanism, since a transport may ignore the abort; on timeout the
|
|
58
|
+
* `AbortController` is fired anyway to free a real socket. On a non-200 the unread body is cancelled
|
|
59
|
+
* first so its socket is released.
|
|
43
60
|
*
|
|
44
61
|
* `fetchImpl` defaults to global `fetch`; tests pass a fake returning a synthetic SSE `Response` so
|
|
45
62
|
* the body construction + decode are exercised without a network or a live server.
|
|
46
63
|
*/
|
|
47
|
-
export declare function createAgUiClient(target: AgUiAgentTarget, fetchImpl?: FetchLike): AgUiClient;
|
|
64
|
+
export declare function createAgUiClient(target: AgUiAgentTarget, fetchImpl?: FetchLike, timeoutMs?: number): AgUiClient;
|
|
48
65
|
/** Production factory: a real HTTP/SSE {@link AgUiClient} over the target's AG-UI endpoint. */
|
|
49
66
|
export declare const defaultAgUiClientFactory: AgUiClientFactory;
|
|
50
67
|
/**
|
|
@@ -32,13 +32,20 @@ import { randomUUID } from 'node:crypto';
|
|
|
32
32
|
import { EventType } from '@ag-ui/core';
|
|
33
33
|
/**
|
|
34
34
|
* Decode an AG-UI SSE stream into an {@link AgUiRunResult}. The reference encoder frames each event
|
|
35
|
-
* as `data: <json>\n\n` (`@ag-ui/encoder`),
|
|
36
|
-
*
|
|
37
|
-
*
|
|
35
|
+
* as `data: <json>\n\n` (`@ag-ui/encoder`), but a non-reference server may delimit frames with a
|
|
36
|
+
* lone `\n` — so we split on ANY newline boundary (a blank line from a `\n\n` separator just yields
|
|
37
|
+
* an empty payload that is ignored, so both framings decode identically). Each frame's `data:`
|
|
38
|
+
* payload is JSON-parsed and the relevant event types folded:
|
|
39
|
+
* - `TEXT_MESSAGE_CONTENT` → append `delta` to the CURRENT assistant message (keyed by `messageId`).
|
|
38
40
|
* - `TOOL_CALL_START` → capture `toolCallName` into `tools`.
|
|
39
41
|
* - `RUN_ERROR` → remember the message; the run FAILED.
|
|
40
42
|
* - `RUN_FINISHED` → the terminal success signal.
|
|
41
43
|
*
|
|
44
|
+
* A run may emit MORE THAN ONE assistant message (each a distinct `messageId`). Their texts are kept
|
|
45
|
+
* as separate parts and joined with a newline, so two messages read as `a\nb` rather than a
|
|
46
|
+
* run-together `ab`; a single message (all deltas sharing one `messageId`, or none set) stays a
|
|
47
|
+
* single part with no spurious delimiter.
|
|
48
|
+
*
|
|
42
49
|
* Throws on `RUN_ERROR` OR on a stream that ends without a terminal `RUN_FINISHED` (a truncated /
|
|
43
50
|
* malformed stream is a failed run, not an "empty answer" success). Non-JSON frames (SSE comments /
|
|
44
51
|
* keep-alives) are ignored. The throw is contained by the runner builders below into `ok:false`.
|
|
@@ -46,7 +53,11 @@ import { EventType } from '@ag-ui/core';
|
|
|
46
53
|
async function decodeAgUiStream(body) {
|
|
47
54
|
const decoder = new TextDecoder();
|
|
48
55
|
let buffer = '';
|
|
49
|
-
|
|
56
|
+
// One text part per distinct assistant message (by `messageId`); joined with `\n` at the end so
|
|
57
|
+
// multiple assistant messages are delimited rather than butt-joined.
|
|
58
|
+
const answerParts = [];
|
|
59
|
+
let currentMessageId;
|
|
60
|
+
let startedAnswer = false;
|
|
50
61
|
const tools = [];
|
|
51
62
|
let runError;
|
|
52
63
|
let sawRunFinished = false;
|
|
@@ -68,8 +79,17 @@ async function decodeAgUiStream(body) {
|
|
|
68
79
|
}
|
|
69
80
|
switch (event.type) {
|
|
70
81
|
case EventType.TEXT_MESSAGE_CONTENT:
|
|
71
|
-
if (typeof event.delta === 'string')
|
|
72
|
-
|
|
82
|
+
if (typeof event.delta === 'string') {
|
|
83
|
+
const messageId = typeof event.messageId === 'string' ? event.messageId : undefined;
|
|
84
|
+
// A new `messageId` (once we already have text) starts a distinct assistant message —
|
|
85
|
+
// open a fresh part so the final `join('\n')` delimits it from the previous one.
|
|
86
|
+
if (!startedAnswer || messageId !== currentMessageId) {
|
|
87
|
+
answerParts.push('');
|
|
88
|
+
currentMessageId = messageId;
|
|
89
|
+
startedAnswer = true;
|
|
90
|
+
}
|
|
91
|
+
answerParts[answerParts.length - 1] += event.delta;
|
|
92
|
+
}
|
|
73
93
|
break;
|
|
74
94
|
case EventType.TOOL_CALL_START:
|
|
75
95
|
if (typeof event.toolCallName === 'string')
|
|
@@ -83,15 +103,26 @@ async function decodeAgUiStream(body) {
|
|
|
83
103
|
break;
|
|
84
104
|
}
|
|
85
105
|
};
|
|
106
|
+
// Fold every COMPLETE line out of the buffer (a line ends at the next `\n`), tolerating both
|
|
107
|
+
// `\n\n` and lone-`\n` frame boundaries; the trailing partial line stays buffered for the next
|
|
108
|
+
// chunk. Reference-encoder JSON payloads contain no raw newline (they are escaped), so splitting
|
|
109
|
+
// on every `\n` never bisects a payload.
|
|
110
|
+
const flushCompleteLines = () => {
|
|
111
|
+
let nl;
|
|
112
|
+
while ((nl = buffer.indexOf('\n')) !== -1) {
|
|
113
|
+
let line = buffer.slice(0, nl);
|
|
114
|
+
buffer = buffer.slice(nl + 1);
|
|
115
|
+
if (line.endsWith('\r'))
|
|
116
|
+
line = line.slice(0, -1);
|
|
117
|
+
handleFrame(line);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
86
120
|
for await (const chunk of body) {
|
|
87
121
|
buffer += decoder.decode(chunk, { stream: true });
|
|
88
|
-
|
|
89
|
-
while ((sep = buffer.indexOf('\n\n')) !== -1) {
|
|
90
|
-
handleFrame(buffer.slice(0, sep));
|
|
91
|
-
buffer = buffer.slice(sep + 2);
|
|
92
|
-
}
|
|
122
|
+
flushCompleteLines();
|
|
93
123
|
}
|
|
94
124
|
buffer += decoder.decode();
|
|
125
|
+
flushCompleteLines();
|
|
95
126
|
if (buffer.trim().length > 0)
|
|
96
127
|
handleFrame(buffer);
|
|
97
128
|
if (runError !== undefined) {
|
|
@@ -100,42 +131,115 @@ async function decodeAgUiStream(body) {
|
|
|
100
131
|
if (!sawRunFinished) {
|
|
101
132
|
throw new Error('AG-UI stream ended without a terminal RUN_FINISHED event (truncated or malformed stream).');
|
|
102
133
|
}
|
|
103
|
-
return { answer, tools };
|
|
134
|
+
return { answer: answerParts.join('\n'), tools };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Default deadline for one AG-UI run (fetch + full SSE decode). The runner has no configured
|
|
138
|
+
* timeout, so this bounds a server that hangs at EITHER phase — one that accepts the POST but never
|
|
139
|
+
* sends response headers (the `fetch` await never returns) OR one that opens the stream but never
|
|
140
|
+
* emits `RUN_FINISHED`: past it the case FAILS with a clear error instead of wedging the process.
|
|
141
|
+
* Injectable per-client for tests.
|
|
142
|
+
*/
|
|
143
|
+
export const AG_UI_RUN_TIMEOUT_MS = 120_000;
|
|
144
|
+
/** Cancel a response body so its socket is released. Used on the paths where we do NOT read the body
|
|
145
|
+
* (a non-200), where leaving it undrained would leak the connection. Guards `cancel` presence (a
|
|
146
|
+
* synthetic test body may omit it) and swallows errors (an already-closed/errored stream has nothing
|
|
147
|
+
* to release). */
|
|
148
|
+
async function releaseBody(body) {
|
|
149
|
+
if (body && typeof body.cancel === 'function') {
|
|
150
|
+
try {
|
|
151
|
+
await body.cancel();
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// Already closed / errored — nothing to release.
|
|
155
|
+
}
|
|
156
|
+
}
|
|
104
157
|
}
|
|
105
158
|
/**
|
|
106
159
|
* Create a real {@link AgUiClient} that drives the target's AG-UI run endpoint over HTTP/SSE. Each
|
|
107
160
|
* `run` POSTs a `RunAgentInput` to `{url}/agents/{agentId}/run` and decodes the SSE response via
|
|
108
|
-
* {@link decodeAgUiStream}. A non-2xx response, an absent body, a `RUN_ERROR` event,
|
|
109
|
-
* stream all throw — the runner builders contain that into a
|
|
161
|
+
* {@link decodeAgUiStream}. A non-2xx response, an absent body, a `RUN_ERROR` event, a truncated
|
|
162
|
+
* stream, or a run that exceeds `timeoutMs` all throw — the runner builders contain that into a
|
|
163
|
+
* failed cell (`ok:false`).
|
|
164
|
+
*
|
|
165
|
+
* The WHOLE run is bounded by `timeoutMs` (default {@link AG_UI_RUN_TIMEOUT_MS}) via a single
|
|
166
|
+
* deadline armed BEFORE the fetch. BOTH phases are raced against it: the `fetch` await (so a server
|
|
167
|
+
* that accepts the POST but never sends response headers is bounded too) AND the SSE decode (so a
|
|
168
|
+
* body that opens but never ends still fails the case rather than hanging). Racing — not the abort
|
|
169
|
+
* signal — is the load-bearing mechanism, since a transport may ignore the abort; on timeout the
|
|
170
|
+
* `AbortController` is fired anyway to free a real socket. On a non-200 the unread body is cancelled
|
|
171
|
+
* first so its socket is released.
|
|
110
172
|
*
|
|
111
173
|
* `fetchImpl` defaults to global `fetch`; tests pass a fake returning a synthetic SSE `Response` so
|
|
112
174
|
* the body construction + decode are exercised without a network or a live server.
|
|
113
175
|
*/
|
|
114
|
-
export function createAgUiClient(target, fetchImpl = fetch) {
|
|
176
|
+
export function createAgUiClient(target, fetchImpl = fetch, timeoutMs = AG_UI_RUN_TIMEOUT_MS) {
|
|
115
177
|
const base = target.url.replace(/\/+$/, '');
|
|
116
178
|
const endpoint = `${base}/agents/${encodeURIComponent(target.agentId)}/run`;
|
|
117
179
|
return {
|
|
118
180
|
async run(input) {
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
181
|
+
const controller = new AbortController();
|
|
182
|
+
const TIMEOUT = Symbol('ag-ui-run-timeout');
|
|
183
|
+
const timeoutError = () => new Error(`AG-UI run exceeded ${timeoutMs}ms without a terminal RUN_FINISHED (stalled server).`);
|
|
184
|
+
// Arm the deadline BEFORE the fetch so it bounds the WHOLE run, not just the post-headers
|
|
185
|
+
// decode: a server that accepts the POST but never sends response headers hangs in the
|
|
186
|
+
// `fetch` await, and a body that opens but never ends hangs in the decode. Each phase is RACED
|
|
187
|
+
// against this one deadline — the transport may ignore an abort, so only the race guarantees
|
|
188
|
+
// we settle. The abort is fired INSIDE the timeout branches (after TIMEOUT has already won the
|
|
189
|
+
// race), so a real fetch's `AbortError` can't beat our clean timeout message.
|
|
190
|
+
let timer;
|
|
191
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
192
|
+
timer = setTimeout(() => resolve(TIMEOUT), timeoutMs);
|
|
131
193
|
});
|
|
132
|
-
|
|
133
|
-
|
|
194
|
+
try {
|
|
195
|
+
const fetchPromise = fetchImpl(endpoint, {
|
|
196
|
+
method: 'POST',
|
|
197
|
+
headers: { 'Content-Type': 'application/json', Accept: 'text/event-stream' },
|
|
198
|
+
body: JSON.stringify({
|
|
199
|
+
threadId: input.threadId,
|
|
200
|
+
runId: input.runId,
|
|
201
|
+
messages: input.messages,
|
|
202
|
+
// The eval declares no client-fulfilled frontend tools; an empty array makes the server
|
|
203
|
+
// serve the run from its own statically-configured agent.
|
|
204
|
+
tools: [],
|
|
205
|
+
forwardedProps: {},
|
|
206
|
+
}),
|
|
207
|
+
signal: controller.signal,
|
|
208
|
+
});
|
|
209
|
+
const opened = await Promise.race([fetchPromise, timeoutPromise]);
|
|
210
|
+
if (opened === TIMEOUT) {
|
|
211
|
+
// Pre-headers hang: the POST was accepted but no response headers ever arrived. Attach a
|
|
212
|
+
// swallow FIRST so the fetch's eventual abort-rejection has a handler, then abort to free
|
|
213
|
+
// a real socket, and fail with the clear timeout error. A genuine pre-deadline
|
|
214
|
+
// network/transport error instead rejects the race on its own and surfaces distinctly.
|
|
215
|
+
void fetchPromise.catch(() => undefined);
|
|
216
|
+
controller.abort();
|
|
217
|
+
throw timeoutError();
|
|
218
|
+
}
|
|
219
|
+
const response = opened;
|
|
220
|
+
if (!response.ok) {
|
|
221
|
+
// Drain the unread body so the socket is released before failing the case.
|
|
222
|
+
await releaseBody(response.body);
|
|
223
|
+
throw new Error(`AG-UI server responded ${response.status} ${response.statusText || ''}`.trim());
|
|
224
|
+
}
|
|
225
|
+
if (!response.body) {
|
|
226
|
+
throw new Error('AG-UI server returned no response body to stream.');
|
|
227
|
+
}
|
|
228
|
+
const decodePromise = decodeAgUiStream(response.body);
|
|
229
|
+
const settled = await Promise.race([decodePromise, timeoutPromise]);
|
|
230
|
+
if (settled === TIMEOUT) {
|
|
231
|
+
// The stream opened but never emitted RUN_FINISHED. Swallow the decode's eventual
|
|
232
|
+
// abort-rejection FIRST, then abort the fetch to free the real socket, and fail clearly.
|
|
233
|
+
void decodePromise.catch(() => undefined);
|
|
234
|
+
controller.abort();
|
|
235
|
+
throw timeoutError();
|
|
236
|
+
}
|
|
237
|
+
return settled;
|
|
134
238
|
}
|
|
135
|
-
|
|
136
|
-
|
|
239
|
+
finally {
|
|
240
|
+
if (timer)
|
|
241
|
+
clearTimeout(timer);
|
|
137
242
|
}
|
|
138
|
-
return decodeAgUiStream(response.body);
|
|
139
243
|
},
|
|
140
244
|
};
|
|
141
245
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agUiEvalRunner.js","sourceRoot":"","sources":["../../src/commands/agUiEvalRunner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAkDxC
|
|
1
|
+
{"version":3,"file":"agUiEvalRunner.js","sourceRoot":"","sources":["../../src/commands/agUiEvalRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -203,6 +203,11 @@ export function batchCommand(program, commandLineConfigOverrides) {
|
|
|
203
203
|
.option('--retry <n>', 'Retry a failed cell up to n times (default: 0, no retry)', parseIntOption)
|
|
204
204
|
.option('-o, --output <dir>', 'Directory to write structured per-cell JSON + results.json summary to ' +
|
|
205
205
|
'(default: a timestamped dir alongside other gth reports)')
|
|
206
|
+
.addHelpText('after', '\n' +
|
|
207
|
+
'Examples:\n' +
|
|
208
|
+
' $ gsloth batch prompts/classify.md --models claude-sonnet-4-5,gpt-4o,gemini-2.5-pro\n' +
|
|
209
|
+
' $ gsloth batch prompts/triage.md --over data/tickets.csv -j 8\n' +
|
|
210
|
+
' $ gsloth batch prompts/triage.md --over data/tickets.jsonl --models claude-sonnet-4-5,gpt-4o --retry 2 -o out/triage\n')
|
|
206
211
|
.action(async (script, options) => {
|
|
207
212
|
const config = await initConfig(commandLineConfigOverrides);
|
|
208
213
|
// Specific `.js` subpaths (not the bare package root) — matches the house convention
|
|
@@ -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":"AACA,OAAO,EAA8B,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,sCAAsC,CAAC;AAgB9C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,wBAAwB,CAC/B,UAAqB,EACrB,0BAAsD;IAEtD,MAAM,cAAc,GAAG,IAAI,GAAG,EAA8B,CAAC;IAE7D,OAAO,CAAC,KAAyB,EAAsB,EAAE;QACvD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,UAAU,CAAC,EAAE,GAAG,0BAA0B,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9D,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAoBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAqB,EACrB,QAAgB,EAChB,0BAAsD,EACtD,OAAiC;IAEjC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,yCAAyC,CAAC,CAAC;IAClF,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAC5E,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,gDAAgD,CAAC,CAAC;IAE/F,MAAM,sBAAsB,GAAG,wBAAwB,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;IAEhG,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAc;YAC5B,GAAG,WAAW;YACd,4BAA4B,EAAE,KAAK;YACnC,iBAAiB,EAAE,KAAK;SACzB,CAAC;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE7F,0FAA0F;QAC1F,6FAA6F;QAC7F,0FAA0F;QAC1F,8FAA8F;QAC9F,0CAA0C;QAC1C,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,aAAa,CACvF,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE,EAAE,EACpC,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,EACT,OAAO,CAAC,OAAO;YACf,wEAAwE;YACxE,6BAA6B;YAC7B,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CACxC,CAAC;YACF,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sFAAsF;YACtF,2FAA2F;YAC3F,wDAAwD;YACxD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACtF,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;YACnC,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,yFAAyF;gBACzF,yCAAyC;gBACzC,cAAc,CACZ,qCAAqC,IAAI,CAAC,EAAE,IAAI;oBAC9C,GAAG,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CACnF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,MAAiB,EACjB,QAAgB,EAChB,OAAiC;IAEjC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,2CAA2C,CAAC,CAAC;IACtF,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAC5E,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,gDAAgD,CAAC,CAAC;IAE/F,MAAM,UAAU,GAAc;QAC5B,GAAG,MAAM;QACT,4BAA4B,EAAE,KAAK;QACnC,iBAAiB,EAAE,KAAK;KACzB,CAAC;IAEF,OAAO,KAAK,EAAE,YAAY,EAAE,EAAE;QAC5B,+FAA+F;QAC/F,0DAA0D;QAC1D,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC3C,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CACxE,CAAC;QAEF,uFAAuF;QACvF,yFAAyF;QACzF,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,eAAe,CACjC,GAAG,OAAO,CAAC,YAAY,eAAe,EACtC,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,EACT,OAAO,CAAC,OAAO,EACf,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CACxC,CAAC;YACF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC1F,EAAE;gBACF,MAAM;gBACN,WAAW;gBACX,YAAY;gBACZ,KAAK;gBACL,WAAW;gBACX,KAAK;aACN,CAAC,CAAC,CAAC;QACN,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;YACnC,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,gFAAgF;gBAChF,cAAc,CACZ,6CAA6C;oBAC3C,GAAG,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CACnF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,iBAAiB,CAAC,MAA0B;IAC1D,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM;SAChB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,qBAAqB;IACnC,OAAO,iBAAiB,CAAC,OAAO,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAgB,EAChB,0BAAsD;IAEtD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CACV,uFAAuF;QACrF,4FAA4F,CAC/F;SACA,QAAQ,CAAC,UAAU,EAAE,iEAAiE,CAAC;SACvF,MAAM,CACL,eAAe,EACf,kFAAkF;QAChF,qFAAqF;QACrF,2CAA2C,CAC9C;SACA,MAAM,CACL,iBAAiB,EACjB,+FAA+F,CAChG;SACA,MAAM,CAAC,uBAAuB,EAAE,qBAAqB,EAAE,cAAc,CAAC;SACtE,MAAM,CACL,aAAa,EACb,0DAA0D,EAC1D,cAAc,CACf;SACA,MAAM,CACL,oBAAoB,EACpB,wEAAwE;QACtE,0DAA0D,CAC7D;SACA,WAAW,CACV,OAAO,EACP,IAAI;QACF,aAAa;QACb,yFAAyF;QACzF,mEAAmE;QACnE,0HAA0H,CAC7H;SACA,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAA4B,EAAE,EAAE;QAC7D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,0BAA0B,CAAC,CAAC;QAE5D,qFAAqF;QACrF,2FAA2F;QAC3F,qFAAqF;QACrF,wFAAwF;QACxF,4DAA4D;QAC5D,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;QACrE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAC1E,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAC7E,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAE1E,MAAM,aAAa,GAAG,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;YACvB,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,0BAA0B,EAAE;YACzF,OAAO,EAAE,MAAM;YACf,YAAY,EAAE,OAAO;YACrB,eAAe,EAAE,QAAQ;YACzB,UAAU,EAAE,0BAA0B;SACvC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;YAC1C,OAAO;YACP,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,IAAI,qBAAqB,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAErD,cAAc,CACZ,mBAAmB,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,mBAAmB;YACnE,sBAAsB,SAAS,EAAE,CACpC,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,kFAAkF;YAClF,wEAAwE;YACxE,cAAc,CACZ,GAAG,OAAO,CAAC,MAAM,yBAAyB,SAAS,4BAA4B,CAChF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -15,6 +15,7 @@ export type RequirementSourceType = keyof typeof REQUIREMENTS_SOURCES;
|
|
|
15
15
|
*/
|
|
16
16
|
export declare const CONTENT_SOURCES: {
|
|
17
17
|
readonly github: '@gaunt-sloth/review/sources/ghPrDiffSource.js';
|
|
18
|
+
readonly git: '@gaunt-sloth/review/sources/gitDiffSource.js';
|
|
18
19
|
readonly text: '@gaunt-sloth/review/sources/textSource.js';
|
|
19
20
|
readonly file: '@gaunt-sloth/review/sources/fileSource.js';
|
|
20
21
|
};
|
|
@@ -15,6 +15,7 @@ export const REQUIREMENTS_SOURCES = {
|
|
|
15
15
|
*/
|
|
16
16
|
export const CONTENT_SOURCES = {
|
|
17
17
|
github: '@gaunt-sloth/review/sources/ghPrDiffSource.js',
|
|
18
|
+
git: '@gaunt-sloth/review/sources/gitDiffSource.js',
|
|
18
19
|
text: '@gaunt-sloth/review/sources/textSource.js',
|
|
19
20
|
file: '@gaunt-sloth/review/sources/fileSource.js',
|
|
20
21
|
};
|
|
@@ -24,7 +25,7 @@ export async function getRequirementsFromSource(requirementSource, requirementsI
|
|
|
24
25
|
}
|
|
25
26
|
export async function getContentFromSource(contentSource, contentId, config) {
|
|
26
27
|
const content = await getFromSource(contentSource, contentId, (config?.contentSourceConfig ?? {})[contentSource], CONTENT_SOURCES);
|
|
27
|
-
return wrapContent(content, contentSource, contentSource === 'github' ? 'GitHub diff' : 'content');
|
|
28
|
+
return wrapContent(content, contentSource, contentSource === 'github' ? 'GitHub diff' : contentSource === 'git' ? 'git diff' : 'content');
|
|
28
29
|
}
|
|
29
30
|
async function getFromSource(source, id,
|
|
30
31
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandUtils.js","sourceRoot":"","sources":["../../src/commands/commandUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,aAAa,EAAE,sDAAsD;IACrE,IAAI,EAAE,gDAAgD;IACtD,MAAM,EAAE,8CAA8C;IACtD,IAAI,EAAE,2CAA2C;IACjD,IAAI,EAAE,2CAA2C;CACzC,CAAC;AAIX;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,+CAA+C;IACvD,IAAI,EAAE,2CAA2C;IACjD,IAAI,EAAE,2CAA2C;CACzC,CAAC;AAIX,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,iBAAoD,EACpD,cAAkC,EAClC,MAAiB;IAEjB,MAAM,YAAY,GAAG,MAAM,aAAa,CACtC,iBAAiB,EACjB,cAAc,EACd,CAAC,MAAM,EAAE,uBAAuB,IAAI,EAAE,CAAC,CAAC,iBAA2B,CAAC,EACpE,oBAAoB,CACrB,CAAC;IACF,OAAO,WAAW,CAAC,YAAY,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,aAA4C,EAC5C,SAA6B,EAC7B,MAAiB;IAEjB,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC,aAAa,EACb,SAAS,EACT,CAAC,MAAM,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAC,aAAuB,CAAC,EAC5D,eAAe,CAChB,CAAC;IACF,OAAO,WAAW,CAChB,OAAO,EACP,aAAa,EACb,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"commandUtils.js","sourceRoot":"","sources":["../../src/commands/commandUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,aAAa,EAAE,sDAAsD;IACrE,IAAI,EAAE,gDAAgD;IACtD,MAAM,EAAE,8CAA8C;IACtD,IAAI,EAAE,2CAA2C;IACjD,IAAI,EAAE,2CAA2C;CACzC,CAAC;AAIX;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,+CAA+C;IACvD,GAAG,EAAE,8CAA8C;IACnD,IAAI,EAAE,2CAA2C;IACjD,IAAI,EAAE,2CAA2C;CACzC,CAAC;AAIX,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,iBAAoD,EACpD,cAAkC,EAClC,MAAiB;IAEjB,MAAM,YAAY,GAAG,MAAM,aAAa,CACtC,iBAAiB,EACjB,cAAc,EACd,CAAC,MAAM,EAAE,uBAAuB,IAAI,EAAE,CAAC,CAAC,iBAA2B,CAAC,EACpE,oBAAoB,CACrB,CAAC;IACF,OAAO,WAAW,CAAC,YAAY,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,aAA4C,EAC5C,SAA6B,EAC7B,MAAiB;IAEjB,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC,aAAa,EACb,SAAS,EACT,CAAC,MAAM,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAC,aAAuB,CAAC,EAC5D,eAAe,CAChB,CAAC;IACF,OAAO,WAAW,CAChB,OAAO,EACP,aAAa,EACb,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAC9F,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,MAA6D,EAC7D,EAAsB;AACtB,8DAA8D;AAC9D,MAAW,EACX,sBAA4E;IAE5E,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,oCAAoC;QACpC,IAAI,sBAAsB,CAAC,MAA6C,CAAC,EAAE,CAAC;YAC1E,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAA6C,CAAC,CAAC;YACzF,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACzC,OAAO,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,mBAAmB,MAAM,0BAA0B,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACxC,yCAAyC;QACzC,OAAO,MAAO,MAAsD,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -17,8 +17,12 @@ export declare function redactConfigForPrint(config: GthConfig): Record<string,
|
|
|
17
17
|
* JSON object (machine-readable); the default adds a source header.
|
|
18
18
|
* - `gth config validate` — validate the effective raw config against the schema WITHOUT building
|
|
19
19
|
* the LLM. Unknown keys warn; a schema violation prints a path-scoped message and exits non-zero.
|
|
20
|
+
* - `gth config profile create <name>` (GS2-33) — scaffold a new named profile
|
|
21
|
+
* (`.gsloth/.gsloth-settings/<name>/.gsloth.config.json`) seeded from the current effective config
|
|
22
|
+
* (or a minimal template), schema-validated before it is written. Select it later with
|
|
23
|
+
* `--profile <name>` (or reuse it inside a subagent via the `subagents` config).
|
|
20
24
|
*
|
|
21
|
-
*
|
|
22
|
-
* `commandLineConfigOverrides`.
|
|
25
|
+
* `print` / `validate` honour the global `--config` / `--identity-profile` (`--profile`) overrides
|
|
26
|
+
* via `commandLineConfigOverrides`.
|
|
23
27
|
*/
|
|
24
28
|
export declare function configCommand(program: Command, commandLineConfigOverrides: CommandLineConfigOverrides): void;
|