@hoilab/ada-cli 0.84.21 → 0.84.22
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/CHANGELOG.md +20 -0
- package/README.es.md +163 -0
- package/README.md +99 -652
- package/dist/cli/args.d.ts +3 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +11 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +2 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/home-screen.d.ts.map +1 -1
- package/dist/cli/home-screen.js +2 -2
- package/dist/cli/home-screen.js.map +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +9 -3
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +57 -7
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +449 -73
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +4 -3
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +3 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +4 -3
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +41 -32
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/defaults.d.ts +1 -0
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js +9 -0
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/engine-personality.d.ts +12 -0
- package/dist/core/engine-personality.d.ts.map +1 -0
- package/dist/core/engine-personality.js +53 -0
- package/dist/core/engine-personality.js.map +1 -0
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +10 -5
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +23 -4
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +2 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/memory-engine/audit-export.d.ts +54 -0
- package/dist/core/memory-engine/audit-export.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-export.js +85 -0
- package/dist/core/memory-engine/audit-export.js.map +1 -0
- package/dist/core/memory-engine/audit.d.ts.map +1 -1
- package/dist/core/memory-engine/audit.js +7 -8
- package/dist/core/memory-engine/audit.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +2 -3
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +148 -50
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
- package/dist/core/memory-engine/inverted-index.js +67 -10
- package/dist/core/memory-engine/inverted-index.js.map +1 -1
- package/dist/core/memory-engine/keychain.d.ts.map +1 -1
- package/dist/core/memory-engine/keychain.js +1 -6
- package/dist/core/memory-engine/keychain.js.map +1 -1
- package/dist/core/memory-engine/observation-store.d.ts +1 -0
- package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
- package/dist/core/memory-engine/observation-store.js +37 -8
- package/dist/core/memory-engine/observation-store.js.map +1 -1
- package/dist/core/memory-engine/scanner.d.ts.map +1 -1
- package/dist/core/memory-engine/scanner.js +25 -5
- package/dist/core/memory-engine/scanner.js.map +1 -1
- package/dist/core/memory-engine/security.d.ts.map +1 -1
- package/dist/core/memory-engine/security.js +131 -23
- package/dist/core/memory-engine/security.js.map +1 -1
- package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
- package/dist/core/memory-engine/session-indexer.js +8 -2
- package/dist/core/memory-engine/session-indexer.js.map +1 -1
- package/dist/core/memory-engine/tools.d.ts +2 -2
- package/dist/core/memory-engine/tools.d.ts.map +1 -1
- package/dist/core/memory-engine/tools.js +14 -7
- package/dist/core/memory-engine/tools.js.map +1 -1
- package/dist/core/memory-engine/vault.d.ts.map +1 -1
- package/dist/core/memory-engine/vault.js +2 -2
- package/dist/core/memory-engine/vault.js.map +1 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +2 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-resolver.d.ts +1 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +12 -6
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +2 -1
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +11 -6
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/pi-manifest.d.ts.map +1 -1
- package/dist/core/pi-manifest.js +2 -1
- package/dist/core/pi-manifest.js.map +1 -1
- package/dist/core/prompt-optimizer.d.ts +53 -0
- package/dist/core/prompt-optimizer.d.ts.map +1 -0
- package/dist/core/prompt-optimizer.js +138 -0
- package/dist/core/prompt-optimizer.js.map +1 -0
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js +1 -1
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +2 -1
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader.d.ts +50 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +233 -7
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts +8 -0
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +11 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +2 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-diagnostics.d.ts +9 -0
- package/dist/core/settings-diagnostics.d.ts.map +1 -0
- package/dist/core/settings-diagnostics.js +21 -0
- package/dist/core/settings-diagnostics.js.map +1 -0
- package/dist/core/settings-manager.d.ts +52 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +204 -10
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +51 -33
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +2 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts +0 -5
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +2 -5
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +20 -4
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +2 -2
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
- package/dist/core/tools/project-memory-tool.js +4 -1
- package/dist/core/tools/project-memory-tool.js.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +2 -1
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/workflows/agent-runner.d.ts +86 -0
- package/dist/core/workflows/agent-runner.d.ts.map +1 -0
- package/dist/core/workflows/agent-runner.js +225 -0
- package/dist/core/workflows/agent-runner.js.map +1 -0
- package/dist/core/workflows/builtins.d.ts +41 -0
- package/dist/core/workflows/builtins.d.ts.map +1 -0
- package/dist/core/workflows/builtins.js +282 -0
- package/dist/core/workflows/builtins.js.map +1 -0
- package/dist/core/workflows/goal-engine/engine.d.ts +134 -0
- package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/engine.js +462 -0
- package/dist/core/workflows/goal-engine/engine.js.map +1 -0
- package/dist/core/workflows/goal-engine/errors.d.ts +7 -0
- package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/errors.js +9 -0
- package/dist/core/workflows/goal-engine/errors.js.map +1 -0
- package/dist/core/workflows/goal-engine/index.d.ts +13 -0
- package/dist/core/workflows/goal-engine/index.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/index.js +8 -0
- package/dist/core/workflows/goal-engine/index.js.map +1 -0
- package/dist/core/workflows/goal-engine/persistence.d.ts +31 -0
- package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/persistence.js +145 -0
- package/dist/core/workflows/goal-engine/persistence.js.map +1 -0
- package/dist/core/workflows/goal-engine/prompts.d.ts +37 -0
- package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/prompts.js +131 -0
- package/dist/core/workflows/goal-engine/prompts.js.map +1 -0
- package/dist/core/workflows/goal-engine/state.d.ts +41 -0
- package/dist/core/workflows/goal-engine/state.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/state.js +397 -0
- package/dist/core/workflows/goal-engine/state.js.map +1 -0
- package/dist/core/workflows/goal-engine/tools.d.ts +31 -0
- package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/tools.js +211 -0
- package/dist/core/workflows/goal-engine/tools.js.map +1 -0
- package/dist/core/workflows/goal-engine/types.d.ts +286 -0
- package/dist/core/workflows/goal-engine/types.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/types.js +17 -0
- package/dist/core/workflows/goal-engine/types.js.map +1 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts +23 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js +72 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -0
- package/dist/core/workflows/graph-sync.d.ts +67 -0
- package/dist/core/workflows/graph-sync.d.ts.map +1 -0
- package/dist/core/workflows/graph-sync.js +188 -0
- package/dist/core/workflows/graph-sync.js.map +1 -0
- package/dist/core/workflows/graph.d.ts +143 -0
- package/dist/core/workflows/graph.d.ts.map +1 -0
- package/dist/core/workflows/graph.js +319 -0
- package/dist/core/workflows/graph.js.map +1 -0
- package/dist/core/workflows/index.d.ts +18 -0
- package/dist/core/workflows/index.d.ts.map +1 -0
- package/dist/core/workflows/index.js +14 -0
- package/dist/core/workflows/index.js.map +1 -0
- package/dist/core/workflows/journal.d.ts +68 -0
- package/dist/core/workflows/journal.d.ts.map +1 -0
- package/dist/core/workflows/journal.js +83 -0
- package/dist/core/workflows/journal.js.map +1 -0
- package/dist/core/workflows/manager.d.ts +112 -0
- package/dist/core/workflows/manager.d.ts.map +1 -0
- package/dist/core/workflows/manager.js +327 -0
- package/dist/core/workflows/manager.js.map +1 -0
- package/dist/core/workflows/resolve-script.d.ts +35 -0
- package/dist/core/workflows/resolve-script.d.ts.map +1 -0
- package/dist/core/workflows/resolve-script.js +66 -0
- package/dist/core/workflows/resolve-script.js.map +1 -0
- package/dist/core/workflows/runtime.d.ts +49 -0
- package/dist/core/workflows/runtime.d.ts.map +1 -0
- package/dist/core/workflows/runtime.js +301 -0
- package/dist/core/workflows/runtime.js.map +1 -0
- package/dist/core/workflows/shared-store.d.ts +31 -0
- package/dist/core/workflows/shared-store.d.ts.map +1 -0
- package/dist/core/workflows/shared-store.js +80 -0
- package/dist/core/workflows/shared-store.js.map +1 -0
- package/dist/core/workflows/subagent-host.d.ts +50 -0
- package/dist/core/workflows/subagent-host.d.ts.map +1 -0
- package/dist/core/workflows/subagent-host.js +225 -0
- package/dist/core/workflows/subagent-host.js.map +1 -0
- package/dist/core/workflows/tool-workflow.d.ts +22 -0
- package/dist/core/workflows/tool-workflow.d.ts.map +1 -0
- package/dist/core/workflows/tool-workflow.js +120 -0
- package/dist/core/workflows/tool-workflow.js.map +1 -0
- package/dist/core/workflows/types.d.ts +142 -0
- package/dist/core/workflows/types.d.ts.map +1 -0
- package/dist/core/workflows/types.js +26 -0
- package/dist/core/workflows/types.js.map +1 -0
- package/dist/core/workflows/worktree.d.ts +42 -0
- package/dist/core/workflows/worktree.d.ts.map +1 -0
- package/dist/core/workflows/worktree.js +107 -0
- package/dist/core/workflows/worktree.js.map +1 -0
- package/dist/extensions/llama/index.d.ts.map +1 -1
- package/dist/extensions/llama/index.js +2 -0
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +6 -2
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/index.d.ts +16 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -11
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +4 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +20 -15
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +4 -3
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
- package/dist/modes/interactive/components/home-screen.js +2 -2
- package/dist/modes/interactive/components/home-screen.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +2 -3
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +16 -6
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/prompt-optimization.d.ts +16 -0
- package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -0
- package/dist/modes/interactive/components/prompt-optimization.js +46 -0
- package/dist/modes/interactive/components/prompt-optimization.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +19 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +247 -46
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.js +165 -0
- package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +8 -3
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +29 -3
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +2 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +24 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +677 -34
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +4 -3
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts +16 -13
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js +20 -6
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +173 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +29 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +1 -1
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/skills/ada-engine/SKILL.md +153 -0
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +2 -1
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/management-http.d.ts +5 -3
- package/dist/utils/management-http.d.ts.map +1 -1
- package/dist/utils/management-http.js +14 -10
- package/dist/utils/management-http.js.map +1 -1
- package/dist/utils/text.d.ts +8 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +9 -0
- package/dist/utils/text.js.map +1 -0
- package/docs/compaction.md +15 -0
- package/docs/custom-provider.md +5 -2
- package/docs/extensions.md +11 -2
- package/docs/json.md +7 -2
- package/docs/llama-cpp.md +2 -0
- package/docs/models.md +8 -2
- package/docs/rpc.md +9 -3
- package/docs/settings.md +2 -2
- package/docs/skills.md +4 -3
- package/examples/extensions/border-status-editor.ts +1 -1
- package/examples/extensions/git-checkpoint.ts +2 -2
- package/examples/extensions/notify.ts +3 -1
- package/examples/extensions/subagent/README.md +1 -1
- package/examples/extensions/subagent/index.ts +6 -1
- package/examples/extensions/titlebar-spinner.ts +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/06-extensions.ts +1 -1
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +2 -12
- package/package.json +3 -3
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getSupportedThinkingLevels } from "@earendil-works/pi-ai";
|
|
2
|
+
import { Container, getCapabilities, SettingsList, Spacer, Text, } from "@earendil-works/pi-tui";
|
|
2
3
|
import { formatHttpIdleTimeoutMs, HTTP_IDLE_TIMEOUT_CHOICES } from "../../../core/http-dispatcher.js";
|
|
3
|
-
import {
|
|
4
|
+
import { getSettingsListTheme, parseAutoThemeSetting, theme } from "../theme/theme.js";
|
|
4
5
|
import { DynamicBorder } from "./dynamic-border.js";
|
|
5
6
|
import { keyDisplayText } from "./keybinding-hints.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
7
|
+
import { SelectSubmenu, SteppedSubmenu } from "./settings-submenu.js";
|
|
8
|
+
const NO_DEFAULT_MODEL_VALUE = "__none__";
|
|
9
|
+
const NO_DEFAULT_MODEL_LABEL = "not set";
|
|
10
|
+
const MODEL_PICKER_LAYOUT = { minPrimaryColumnWidth: 12, maxPrimaryColumnWidth: 46 };
|
|
10
11
|
const THINKING_DESCRIPTIONS = {
|
|
11
12
|
off: "No reasoning",
|
|
12
13
|
minimal: "Very brief reasoning (~1k tokens)",
|
|
@@ -54,43 +55,44 @@ class WarningSettingsSubmenu extends Container {
|
|
|
54
55
|
this.settingsList.handleInput(data);
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
58
|
+
const CLEAR_OVERRIDE_VALUE = "__clear__";
|
|
59
|
+
function modelSettingKey(model) {
|
|
60
|
+
return `${model.provider}/${model.id}`;
|
|
61
|
+
}
|
|
62
|
+
function modelDisplayLabel(model) {
|
|
63
|
+
return `${model.id} [${model.provider}]`;
|
|
64
|
+
}
|
|
65
|
+
function defaultModelDisplayValue(key, model, overrides) {
|
|
66
|
+
const label = model ? modelDisplayLabel(model) : key;
|
|
67
|
+
const override = overrides[key];
|
|
68
|
+
return override ? `${label} \u00b7 ${override}` : label;
|
|
69
|
+
}
|
|
70
|
+
function modelThinkingOverridesSummary(overrides) {
|
|
71
|
+
const count = Object.keys(overrides).length;
|
|
72
|
+
if (count === 0)
|
|
73
|
+
return "none";
|
|
74
|
+
return `${count} configured`;
|
|
75
|
+
}
|
|
76
|
+
function modelItemLabel(model) {
|
|
77
|
+
return `${model.id} ${theme.fg("muted", `[${model.provider}]`)}`;
|
|
78
|
+
}
|
|
79
|
+
function defaultModelItems(models, overrides) {
|
|
80
|
+
return [...models]
|
|
81
|
+
.sort((a, b) => {
|
|
82
|
+
const providerCompare = a.provider.localeCompare(b.provider);
|
|
83
|
+
if (providerCompare !== 0)
|
|
84
|
+
return providerCompare;
|
|
85
|
+
return (a.name || a.id).localeCompare(b.name || b.id);
|
|
86
|
+
})
|
|
87
|
+
.map((model) => {
|
|
88
|
+
const key = modelSettingKey(model);
|
|
89
|
+
const override = overrides?.[key];
|
|
90
|
+
return {
|
|
91
|
+
value: key,
|
|
92
|
+
label: modelItemLabel(model),
|
|
93
|
+
description: override ?? undefined,
|
|
79
94
|
};
|
|
80
|
-
|
|
81
|
-
if (onSelectionChange) {
|
|
82
|
-
this.selectList.onSelectionChange = (item) => {
|
|
83
|
-
onSelectionChange(item.value);
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
this.addChild(this.selectList);
|
|
87
|
-
// Hint
|
|
88
|
-
this.addChild(new Spacer(1));
|
|
89
|
-
this.addChild(new Text(theme.fg("dim", " Enter to select · Esc to go back"), 0, 0));
|
|
90
|
-
}
|
|
91
|
-
handleInput(data) {
|
|
92
|
-
this.selectList.handleInput(data);
|
|
93
|
-
}
|
|
95
|
+
});
|
|
94
96
|
}
|
|
95
97
|
function themeItems(availableThemes) {
|
|
96
98
|
return availableThemes.map((name) => ({ value: name, label: name }));
|
|
@@ -271,7 +273,14 @@ export class SettingsSelectorComponent extends Container {
|
|
|
271
273
|
super();
|
|
272
274
|
const supportsImages = getCapabilities().images;
|
|
273
275
|
const followUpKey = keyDisplayText("app.message.followUp");
|
|
276
|
+
const cycleThinkingKey = keyDisplayText("app.thinking.cycle");
|
|
274
277
|
let currentWarnings = { ...config.warnings };
|
|
278
|
+
const currentModelThinkingLevels = { ...config.modelThinkingLevels };
|
|
279
|
+
let lastSelectedDefaultModel;
|
|
280
|
+
const defaultModelByValue = new Map(config.availableDefaultModels.map((model) => [modelSettingKey(model), model]));
|
|
281
|
+
let currentDefaultModelKey = defaultModelByValue.has(config.defaultModel)
|
|
282
|
+
? config.defaultModel
|
|
283
|
+
: undefined;
|
|
275
284
|
const items = [
|
|
276
285
|
{
|
|
277
286
|
id: "autocompact",
|
|
@@ -301,6 +310,38 @@ export class SettingsSelectorComponent extends Container {
|
|
|
301
310
|
currentValue: config.transport,
|
|
302
311
|
values: ["sse", "websocket", "websocket-cached", "auto"],
|
|
303
312
|
},
|
|
313
|
+
{
|
|
314
|
+
id: "default-model",
|
|
315
|
+
label: "Default model",
|
|
316
|
+
description: "Startup model for new sessions",
|
|
317
|
+
currentValue: defaultModelDisplayValue(config.defaultModel, defaultModelByValue.get(config.defaultModel), currentModelThinkingLevels),
|
|
318
|
+
submenu: (currentValue, done) => {
|
|
319
|
+
const fresh = defaultModelItems(config.availableDefaultModels, currentModelThinkingLevels);
|
|
320
|
+
const options = fresh.length > 0
|
|
321
|
+
? fresh
|
|
322
|
+
: [
|
|
323
|
+
{
|
|
324
|
+
value: NO_DEFAULT_MODEL_VALUE,
|
|
325
|
+
label: "No models available",
|
|
326
|
+
description: "Log in to a provider or configure an API key first",
|
|
327
|
+
},
|
|
328
|
+
];
|
|
329
|
+
return new SelectSubmenu("Default Model", "Select the model to use when starting new sessions", options, currentValue === NO_DEFAULT_MODEL_LABEL ? NO_DEFAULT_MODEL_VALUE : currentValue, (value) => {
|
|
330
|
+
const model = defaultModelByValue.get(value);
|
|
331
|
+
if (!model) {
|
|
332
|
+
done();
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
void callbacks.onDefaultModelChange(model).then(() => {
|
|
336
|
+
lastSelectedDefaultModel = model;
|
|
337
|
+
currentDefaultModelKey = value;
|
|
338
|
+
done(defaultModelDisplayValue(value, model, currentModelThinkingLevels), {
|
|
339
|
+
navigateTo: "model-thinking",
|
|
340
|
+
});
|
|
341
|
+
}, () => done());
|
|
342
|
+
}, () => done(), undefined, { searchable: true, layout: MODEL_PICKER_LAYOUT });
|
|
343
|
+
},
|
|
344
|
+
},
|
|
304
345
|
{
|
|
305
346
|
id: "http-idle-timeout",
|
|
306
347
|
label: "HTTP idle timeout",
|
|
@@ -325,7 +366,7 @@ export class SettingsSelectorComponent extends Container {
|
|
|
325
366
|
{
|
|
326
367
|
id: "cache-miss-notices",
|
|
327
368
|
label: "Cache miss notices",
|
|
328
|
-
description: "Show transcript notices for significant prompt-cache misses",
|
|
369
|
+
description: "Show transcript notices for significant prompt-cache misses and compaction costs",
|
|
329
370
|
currentValue: config.showCacheMissNotices ? "true" : "false",
|
|
330
371
|
values: ["true", "false"],
|
|
331
372
|
},
|
|
@@ -383,10 +424,10 @@ export class SettingsSelectorComponent extends Container {
|
|
|
383
424
|
},
|
|
384
425
|
{
|
|
385
426
|
id: "thinking",
|
|
386
|
-
label: "
|
|
387
|
-
description:
|
|
427
|
+
label: "Default thinking level",
|
|
428
|
+
description: `Startup reasoning depth for thinking-capable models. ${cycleThinkingKey} cycles in-session.`,
|
|
388
429
|
currentValue: config.thinkingLevel,
|
|
389
|
-
submenu: (currentValue, done) => new SelectSubmenu("Thinking Level", "Select reasoning depth
|
|
430
|
+
submenu: (currentValue, done) => new SelectSubmenu("Default Thinking Level", "Select the reasoning depth to use when starting new sessions", config.availableThinkingLevels.map((level) => ({
|
|
390
431
|
value: level,
|
|
391
432
|
label: level,
|
|
392
433
|
description: THINKING_DESCRIPTIONS[level],
|
|
@@ -395,6 +436,104 @@ export class SettingsSelectorComponent extends Container {
|
|
|
395
436
|
done(value);
|
|
396
437
|
}, () => done()),
|
|
397
438
|
},
|
|
439
|
+
{
|
|
440
|
+
id: "model-thinking",
|
|
441
|
+
label: "Default thinking level per model",
|
|
442
|
+
description: `Override the default thinking level for specific models. ${cycleThinkingKey} cycles in-session.`,
|
|
443
|
+
currentValue: modelThinkingOverridesSummary(currentModelThinkingLevels),
|
|
444
|
+
submenu: (_currentValue, done) => {
|
|
445
|
+
const preselected = lastSelectedDefaultModel;
|
|
446
|
+
lastSelectedDefaultModel = undefined;
|
|
447
|
+
const steps = [
|
|
448
|
+
{
|
|
449
|
+
key: "model",
|
|
450
|
+
title: "Per-Model Thinking Level",
|
|
451
|
+
description: "Select a model to configure",
|
|
452
|
+
options: () => {
|
|
453
|
+
const sorted = [...config.availableDefaultModels].sort((a, b) => {
|
|
454
|
+
const aKey = modelSettingKey(a);
|
|
455
|
+
const bKey = modelSettingKey(b);
|
|
456
|
+
if (aKey === currentDefaultModelKey)
|
|
457
|
+
return -1;
|
|
458
|
+
if (bKey === currentDefaultModelKey)
|
|
459
|
+
return 1;
|
|
460
|
+
const pc = a.provider.localeCompare(b.provider);
|
|
461
|
+
if (pc !== 0)
|
|
462
|
+
return pc;
|
|
463
|
+
return (a.name || a.id).localeCompare(b.name || b.id);
|
|
464
|
+
});
|
|
465
|
+
const items = sorted.map((model) => {
|
|
466
|
+
const key = modelSettingKey(model);
|
|
467
|
+
const override = currentModelThinkingLevels[key];
|
|
468
|
+
return {
|
|
469
|
+
value: key,
|
|
470
|
+
label: modelItemLabel(model),
|
|
471
|
+
description: override ?? undefined,
|
|
472
|
+
};
|
|
473
|
+
});
|
|
474
|
+
if (items.length === 0) {
|
|
475
|
+
items.push({
|
|
476
|
+
value: "__none__",
|
|
477
|
+
label: "No models available",
|
|
478
|
+
description: "Log in to a provider or configure an API key first",
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
return items;
|
|
482
|
+
},
|
|
483
|
+
preselect: () => currentDefaultModelKey,
|
|
484
|
+
searchable: true,
|
|
485
|
+
layout: MODEL_PICKER_LAYOUT,
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
key: "level",
|
|
489
|
+
title: (ctx) => {
|
|
490
|
+
const m = defaultModelByValue.get(ctx.model);
|
|
491
|
+
return `Thinking Level for ${m ? modelDisplayLabel(m) : ctx.model}`;
|
|
492
|
+
},
|
|
493
|
+
description: "Select default thinking level for this model",
|
|
494
|
+
options: (ctx) => {
|
|
495
|
+
const model = defaultModelByValue.get(ctx.model);
|
|
496
|
+
if (!model)
|
|
497
|
+
return [];
|
|
498
|
+
const levels = (model.reasoning ? getSupportedThinkingLevels(model) : ["off"]);
|
|
499
|
+
const items = levels.map((level) => ({
|
|
500
|
+
value: level,
|
|
501
|
+
label: level,
|
|
502
|
+
description: THINKING_DESCRIPTIONS[level],
|
|
503
|
+
}));
|
|
504
|
+
if (currentModelThinkingLevels[ctx.model] !== undefined) {
|
|
505
|
+
items.push({
|
|
506
|
+
value: CLEAR_OVERRIDE_VALUE,
|
|
507
|
+
label: "(clear override)",
|
|
508
|
+
description: `Revert to global default (${config.thinkingLevel})`,
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
return items;
|
|
512
|
+
},
|
|
513
|
+
preselect: (ctx) => currentModelThinkingLevels[ctx.model],
|
|
514
|
+
},
|
|
515
|
+
];
|
|
516
|
+
const summary = () => modelThinkingOverridesSummary(currentModelThinkingLevels);
|
|
517
|
+
return new SteppedSubmenu(steps, (selections) => {
|
|
518
|
+
const model = defaultModelByValue.get(selections.model);
|
|
519
|
+
if (!model)
|
|
520
|
+
return;
|
|
521
|
+
if (selections.level === CLEAR_OVERRIDE_VALUE) {
|
|
522
|
+
callbacks.onModelThinkingLevelRemove(model.provider, model.id);
|
|
523
|
+
delete currentModelThinkingLevels[selections.model];
|
|
524
|
+
}
|
|
525
|
+
else {
|
|
526
|
+
callbacks.onModelThinkingLevelChange(model.provider, model.id, selections.level);
|
|
527
|
+
currentModelThinkingLevels[selections.model] = selections.level;
|
|
528
|
+
}
|
|
529
|
+
}, () => {
|
|
530
|
+
this.settingsList.updateValue("default-model", defaultModelDisplayValue(currentDefaultModelKey ?? config.defaultModel, defaultModelByValue.get(currentDefaultModelKey ?? config.defaultModel), currentModelThinkingLevels));
|
|
531
|
+
done(summary());
|
|
532
|
+
}, preselected
|
|
533
|
+
? { startAtStep: 1, initialContext: { model: modelSettingKey(preselected) } }
|
|
534
|
+
: { loop: true });
|
|
535
|
+
},
|
|
536
|
+
},
|
|
398
537
|
{
|
|
399
538
|
id: "tui-mode",
|
|
400
539
|
label: "TUI mode",
|
|
@@ -477,6 +616,50 @@ export class SettingsSelectorComponent extends Container {
|
|
|
477
616
|
currentValue: config.memoryMode ?? "policy",
|
|
478
617
|
values: ["policy", "inject"],
|
|
479
618
|
});
|
|
619
|
+
// ── Ada Intelligence Engine (tras memory-mode) ──
|
|
620
|
+
const engineAnchor = items.findIndex((item) => item.id === "memory-mode");
|
|
621
|
+
items.splice(engineAnchor + 1, 0, {
|
|
622
|
+
id: "engine-goal",
|
|
623
|
+
label: "Goal Engine",
|
|
624
|
+
description: "Bucle autónomo con fases TDD, juez obligatorio y frenos (goals con /goal)",
|
|
625
|
+
currentValue: config.goalEngineEnabled ? "true" : "false",
|
|
626
|
+
values: ["true", "false"],
|
|
627
|
+
});
|
|
628
|
+
items.splice(engineAnchor + 2, 0, {
|
|
629
|
+
id: "engine-goal-tier",
|
|
630
|
+
label: "Goal work tier",
|
|
631
|
+
description: "Modelo de las fases de trabajo: main = por defecto; cheap = el más barato conectado",
|
|
632
|
+
currentValue: config.goalWorkTier,
|
|
633
|
+
values: ["main", "cheap"],
|
|
634
|
+
});
|
|
635
|
+
items.splice(engineAnchor + 3, 0, {
|
|
636
|
+
id: "engine-goal-turns",
|
|
637
|
+
label: "Goal max turns",
|
|
638
|
+
description: "Freno: turnos máximos por goal antes de abortar",
|
|
639
|
+
currentValue: String(config.goalMaxTurns),
|
|
640
|
+
values: ["10", "15", "25", "50", "100"],
|
|
641
|
+
});
|
|
642
|
+
items.splice(engineAnchor + 4, 0, {
|
|
643
|
+
id: "engine-workflows",
|
|
644
|
+
label: "Workflows",
|
|
645
|
+
description: "Orquestación paralela sandboxeada (/workflow, tool workflow)",
|
|
646
|
+
currentValue: config.workflowsEnabled ? "true" : "false",
|
|
647
|
+
values: ["true", "false"],
|
|
648
|
+
});
|
|
649
|
+
items.splice(engineAnchor + 5, 0, {
|
|
650
|
+
id: "engine-repeat",
|
|
651
|
+
label: "Subtask retries",
|
|
652
|
+
description: "Reintentos de una sub-tarea fallida antes de pausar el goal (repeat detector)",
|
|
653
|
+
currentValue: String(config.goalRepeatTolerance),
|
|
654
|
+
values: ["1", "2", "3", "5"],
|
|
655
|
+
});
|
|
656
|
+
items.splice(engineAnchor + 6, 0, {
|
|
657
|
+
id: "prompt-optimizer",
|
|
658
|
+
label: "Prompt optimizer",
|
|
659
|
+
description: "Mejora automática de tu petición antes del modelo (auto = sin preguntar; clarify = pregunta primero; off = desactivado)",
|
|
660
|
+
currentValue: config.promptOptimizerMode,
|
|
661
|
+
values: ["auto", "clarify", "off"],
|
|
662
|
+
});
|
|
480
663
|
// Skill commands toggle (insert after memory-mode)
|
|
481
664
|
const memoryModeIndex = items.findIndex((item) => item.id === "memory-mode");
|
|
482
665
|
items.splice(memoryModeIndex + 1, 0, {
|
|
@@ -565,6 +748,24 @@ export class SettingsSelectorComponent extends Container {
|
|
|
565
748
|
case "memory-mode":
|
|
566
749
|
callbacks.onMemoryModeChange(newValue);
|
|
567
750
|
break;
|
|
751
|
+
case "engine-goal":
|
|
752
|
+
callbacks.onGoalEngineEnabledChange(newValue === "true");
|
|
753
|
+
break;
|
|
754
|
+
case "engine-goal-tier":
|
|
755
|
+
callbacks.onGoalWorkTierChange(newValue);
|
|
756
|
+
break;
|
|
757
|
+
case "engine-goal-turns":
|
|
758
|
+
callbacks.onGoalMaxTurnsChange(parseInt(newValue, 10) || 25);
|
|
759
|
+
break;
|
|
760
|
+
case "engine-workflows":
|
|
761
|
+
callbacks.onWorkflowsEnabledChange(newValue === "true");
|
|
762
|
+
break;
|
|
763
|
+
case "engine-repeat":
|
|
764
|
+
callbacks.onRepeatToleranceChange(parseInt(newValue, 10) || 3);
|
|
765
|
+
break;
|
|
766
|
+
case "prompt-optimizer":
|
|
767
|
+
callbacks.onPromptOptimizerModeChange(newValue);
|
|
768
|
+
break;
|
|
568
769
|
case "skill-commands":
|
|
569
770
|
callbacks.onEnableSkillCommandsChange(newValue === "true");
|
|
570
771
|
break;
|