@sayknow-cli/coding-agent 0.3.5 → 0.3.7
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 +76 -0
- package/dist/types/capability/mcp.d.ts +2 -0
- package/dist/types/cli/local-provider-smoke.d.ts +59 -0
- package/dist/types/cli/notify-cli.d.ts +1 -1
- package/dist/types/cli/telegram-cli.d.ts +13 -0
- package/dist/types/cli/update-cli.d.ts +24 -1
- package/dist/types/commands/local-provider.d.ts +34 -0
- package/dist/types/commands/telegram.d.ts +22 -0
- package/dist/types/config/keybindings.d.ts +12 -6
- package/dist/types/config/model-registry.d.ts +5 -0
- package/dist/types/config/models-config-schema.d.ts +5 -0
- package/dist/types/config/settings-schema.d.ts +284 -4
- package/dist/types/config/settings.d.ts +7 -0
- package/dist/types/config/telegram-autostart.d.ts +14 -0
- package/dist/types/config/telegram-env-bridge.d.ts +18 -0
- package/dist/types/coordinator-mcp/server.d.ts +8 -0
- package/dist/types/defaults/skc-defaults.d.ts +7 -0
- package/dist/types/discovery/cursor.d.ts +4 -1
- package/dist/types/discovery/index.d.ts +0 -1
- package/dist/types/discovery/windsurf.d.ts +3 -1
- package/dist/types/extensibility/extensions/types.d.ts +11 -0
- package/dist/types/i18n/messages/en.d.ts +1 -0
- package/dist/types/modes/components/custom-editor.d.ts +6 -1
- package/dist/types/modes/components/custom-model-preset-wizard.d.ts +1 -1
- package/dist/types/modes/components/hook-selector.d.ts +5 -0
- package/dist/types/modes/components/model-selector.d.ts +2 -0
- package/dist/types/modes/components/settings-selector.d.ts +5 -1
- package/dist/types/modes/components/skill-message.d.ts +1 -0
- package/dist/types/modes/components/status-line/types.d.ts +5 -7
- package/dist/types/modes/components/status-line.d.ts +15 -3
- package/dist/types/modes/components/two-column-body.d.ts +9 -0
- package/dist/types/modes/components/welcome.d.ts +9 -1
- package/dist/types/modes/controllers/command-controller.d.ts +1 -0
- package/dist/types/modes/controllers/input-controller.d.ts +6 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +10 -1
- package/dist/types/modes/interactive-mode.d.ts +2 -0
- package/dist/types/modes/prompt-action-autocomplete.d.ts +3 -0
- package/dist/types/modes/rpc/rpc-types.d.ts +1 -0
- package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +41 -7
- package/dist/types/modes/slash-command-visibility.d.ts +1 -0
- package/dist/types/modes/theme/theme.d.ts +1 -1
- package/dist/types/modes/tmux-scroll.d.ts +18 -0
- package/dist/types/modes/types.d.ts +5 -1
- package/dist/types/modes/utils/terminal-bell.d.ts +3 -0
- package/dist/types/notifications/daemon-paths.d.ts +9 -0
- package/dist/types/notifications/html-format.d.ts +2 -0
- package/dist/types/notifications/recent-activity.d.ts +5 -1
- package/dist/types/notifications/telegram-daemon-cli.d.ts +21 -4
- package/dist/types/notifications/telegram-daemon-control.d.ts +8 -0
- package/dist/types/notifications/telegram-daemon.d.ts +4 -10
- package/dist/types/notifications/telegram-reference.d.ts +4 -0
- package/dist/types/notifications/threaded-render.d.ts +1 -0
- package/dist/types/runtime-mcp/config-writer.d.ts +9 -0
- package/dist/types/runtime-mcp/config.d.ts +2 -0
- package/dist/types/runtime-mcp/loader.d.ts +2 -0
- package/dist/types/runtime-mcp/manager.d.ts +2 -0
- package/dist/types/runtime-mcp/types.d.ts +6 -0
- package/dist/types/sdk.d.ts +1 -1
- package/dist/types/skc-runtime/launch-tmux.d.ts +2 -2
- package/dist/types/skc-runtime/ralplan-runtime.d.ts +3 -2
- package/dist/types/skc-runtime/restricted-role-agent-bash.d.ts +1 -0
- package/dist/types/skc-runtime/session-state-sidecar.d.ts +5 -0
- package/dist/types/skc-runtime/state-writer.d.ts +1 -0
- package/dist/types/skc-runtime/team-runtime.d.ts +1 -1
- package/dist/types/skc-runtime/tmux-common.d.ts +12 -0
- package/dist/types/skc-runtime/ultragoal-guard.d.ts +7 -1
- package/dist/types/skc-runtime/ultragoal-runtime.d.ts +0 -4
- package/dist/types/slash-commands/types.d.ts +2 -0
- package/dist/types/system-prompt.d.ts +7 -0
- package/dist/types/tools/skill.d.ts +1 -1
- package/dist/types/utils/cmux-workspace.d.ts +52 -0
- package/dist/types/web/search/index.d.ts +4 -2
- package/dist/types/web/search/provider.d.ts +14 -0
- package/dist/types/web/search/providers/utils.d.ts +42 -13
- package/dist/types/web/search/render.d.ts +1 -0
- package/dist/types/workflow/workflow-intent-diff.d.ts +19 -0
- package/package.json +8 -8
- package/scripts/build-binary.ts +3 -0
- package/scripts/verify-insane-vendor.ts +0 -5
- package/src/capability/mcp.ts +2 -0
- package/src/cli/local-provider-smoke.ts +632 -0
- package/src/cli/notify-cli.ts +4 -2
- package/src/cli/telegram-cli.ts +156 -0
- package/src/cli/update-cli.ts +179 -13
- package/src/cli/web-search-cli.ts +5 -7
- package/src/cli.ts +20 -1
- package/src/commands/launch.ts +47 -2
- package/src/commands/local-provider.ts +62 -0
- package/src/commands/notify.ts +1 -1
- package/src/commands/ralplan.ts +1 -0
- package/src/commands/telegram.ts +47 -0
- package/src/config/keybindings.ts +15 -6
- package/src/config/mcp-schema.json +4 -0
- package/src/config/model-registry.ts +55 -1
- package/src/config/models-config-schema.ts +9 -0
- package/src/config/settings-schema.ts +256 -4
- package/src/config/settings.ts +11 -0
- package/src/config/telegram-autostart.ts +107 -0
- package/src/config/telegram-env-bridge.ts +92 -0
- package/src/coordinator-mcp/server.ts +276 -34
- package/src/defaults/skc/skills/ralplan/SKILL.md +29 -20
- package/src/defaults/skc/skills/ultragoal/SKILL.md +37 -112
- package/src/defaults/skc-defaults.ts +16 -0
- package/src/discovery/builtin.ts +12 -0
- package/src/discovery/cursor.ts +5 -84
- package/src/discovery/gemini.ts +3 -89
- package/src/discovery/index.ts +4 -1
- package/src/discovery/mcp-json.ts +11 -0
- package/src/discovery/opencode.ts +5 -122
- package/src/discovery/windsurf.ts +4 -82
- package/src/edit/read-file.ts +9 -1
- package/src/extensibility/extensions/runner.ts +2 -1
- package/src/extensibility/extensions/types.ts +11 -0
- package/src/extensibility/skills.ts +30 -2
- package/src/hooks/skill-state.ts +33 -73
- package/src/i18n/messages/de.ts +1 -0
- package/src/i18n/messages/en.ts +1 -0
- package/src/i18n/messages/es.ts +1 -0
- package/src/i18n/messages/fr.ts +1 -0
- package/src/i18n/messages/ja.settings.ts +28 -0
- package/src/i18n/messages/ja.ts +1 -0
- package/src/i18n/messages/ko.settings.ts +28 -0
- package/src/i18n/messages/ko.ts +1 -0
- package/src/i18n/messages/zh.settings.ts +28 -0
- package/src/i18n/messages/zh.ts +1 -0
- package/src/internal-urls/docs-index.generated.ts +12 -7
- package/src/main.ts +5 -2
- package/src/migrate/executor.ts +23 -6
- package/src/modes/acp/acp-agent.ts +7 -6
- package/src/modes/components/agent-dashboard.ts +3 -35
- package/src/modes/components/custom-editor.ts +26 -0
- package/src/modes/components/custom-model-preset-wizard.ts +30 -189
- package/src/modes/components/extensions/extension-dashboard.ts +2 -48
- package/src/modes/components/hook-selector.ts +21 -3
- package/src/modes/components/model-selector.ts +246 -11
- package/src/modes/components/session-observer-overlay.ts +3 -3
- package/src/modes/components/session-selector.ts +19 -9
- package/src/modes/components/settings-selector.ts +551 -11
- package/src/modes/components/skill-message.ts +18 -10
- package/src/modes/components/status-line/presets.ts +11 -0
- package/src/modes/components/status-line/segments.ts +16 -19
- package/src/modes/components/status-line/types.ts +6 -2
- package/src/modes/components/status-line.ts +281 -117
- package/src/modes/components/tree-selector.ts +28 -8
- package/src/modes/components/two-column-body.ts +36 -0
- package/src/modes/components/welcome.ts +165 -30
- package/src/modes/controllers/command-controller.ts +26 -2
- package/src/modes/controllers/event-controller.ts +102 -4
- package/src/modes/controllers/extension-ui-controller.ts +21 -2
- package/src/modes/controllers/input-controller.ts +214 -47
- package/src/modes/controllers/selector-controller.ts +35 -33
- package/src/modes/interactive-mode.ts +36 -30
- package/src/modes/prompt-action-autocomplete.ts +48 -8
- package/src/modes/rpc/rpc-types.ts +1 -0
- package/src/modes/shared/agent-wire/deep-interview-gate.ts +72 -15
- package/src/modes/shared/agent-wire/workflow-gate-schema.ts +20 -0
- package/src/modes/slash-command-visibility.ts +9 -0
- package/src/modes/theme/theme.ts +5 -1
- package/src/modes/tmux-scroll.ts +92 -0
- package/src/modes/types.ts +8 -1
- package/src/modes/utils/hotkeys-markdown.ts +5 -2
- package/src/modes/utils/terminal-bell.ts +48 -0
- package/src/modes/utils/ui-helpers.ts +76 -3
- package/src/notifications/daemon-paths.ts +22 -0
- package/src/notifications/html-format.ts +75 -1
- package/src/notifications/index.ts +32 -2
- package/src/notifications/lifecycle-control-runtime.ts +12 -3
- package/src/notifications/recent-activity.ts +32 -8
- package/src/notifications/telegram-daemon-cli.ts +125 -13
- package/src/notifications/telegram-daemon-control.ts +9 -0
- package/src/notifications/telegram-daemon.ts +88 -46
- package/src/notifications/telegram-reference.ts +36 -14
- package/src/notifications/threaded-render.ts +14 -6
- package/src/prompts/agents/architect.md +7 -4
- package/src/prompts/agents/critic.md +15 -6
- package/src/prompts/agents/planner.md +8 -3
- package/src/prompts/system/system-prompt.md +20 -2
- package/src/prompts/tools/bash.md +1 -1
- package/src/runtime-mcp/config-writer.ts +28 -0
- package/src/runtime-mcp/config.ts +7 -0
- package/src/runtime-mcp/loader.ts +3 -0
- package/src/runtime-mcp/manager.ts +3 -0
- package/src/runtime-mcp/types.ts +6 -0
- package/src/sdk.ts +10 -11
- package/src/session/agent-session.ts +103 -13
- package/src/session/session-manager.ts +58 -18
- package/src/skc-runtime/launch-tmux.ts +34 -8
- package/src/skc-runtime/launch-worktree.ts +16 -2
- package/src/skc-runtime/ralplan-runtime.ts +22 -6
- package/src/skc-runtime/restricted-role-agent-bash.ts +1 -0
- package/src/skc-runtime/session-state-sidecar.ts +167 -24
- package/src/skc-runtime/state-runtime.ts +8 -5
- package/src/skc-runtime/state-writer.ts +5 -5
- package/src/skc-runtime/team-runtime.ts +21 -6
- package/src/skc-runtime/tmux-common.ts +16 -0
- package/src/skc-runtime/tmux-sessions.ts +13 -9
- package/src/skc-runtime/ultragoal-guard.ts +150 -24
- package/src/skc-runtime/ultragoal-runtime.ts +16 -124
- package/src/skc-runtime/workflow-manifest.generated.json +0 -8
- package/src/skc-runtime/workflow-manifest.ts +0 -1
- package/src/slash-commands/builtin-registry.ts +136 -23
- package/src/slash-commands/types.ts +2 -0
- package/src/system-prompt.ts +8 -0
- package/src/task/executor.ts +5 -0
- package/src/tools/ast-grep.ts +10 -7
- package/src/tools/bash.ts +39 -14
- package/src/tools/index.ts +8 -1
- package/src/tools/skill.ts +1 -1
- package/src/utils/cmux-workspace.ts +233 -0
- package/src/utils/title-generator.ts +2 -0
- package/src/web/kagi.ts +1 -1
- package/src/web/parallel.ts +2 -2
- package/src/web/search/index.ts +137 -52
- package/src/web/search/provider.ts +80 -0
- package/src/web/search/providers/anthropic.ts +1 -1
- package/src/web/search/providers/brave.ts +1 -1
- package/src/web/search/providers/codex.ts +1 -1
- package/src/web/search/providers/duckduckgo.ts +1 -1
- package/src/web/search/providers/exa.ts +1 -1
- package/src/web/search/providers/gemini.ts +7 -3
- package/src/web/search/providers/jina.ts +1 -1
- package/src/web/search/providers/kimi.ts +6 -1
- package/src/web/search/providers/openai-compatible.ts +1 -1
- package/src/web/search/providers/parallel.ts +1 -1
- package/src/web/search/providers/perplexity.ts +2 -2
- package/src/web/search/providers/searxng.ts +1 -1
- package/src/web/search/providers/synthetic.ts +1 -1
- package/src/web/search/providers/tavily.ts +1 -1
- package/src/web/search/providers/utils.ts +67 -17
- package/src/web/search/providers/xai.ts +1 -1
- package/src/web/search/providers/zai.ts +1 -1
- package/src/web/search/render.ts +3 -0
- package/src/workflow/workflow-intent-diff.ts +199 -0
- package/vendor/insane-search/MANIFEST.json +1 -3
- package/vendor/insane-search/engine/tests/test_u1.py +0 -28
- package/vendor/insane-search/engine/transport.py +2 -3
- package/vendor/insane-search/engine/validators.py +0 -14
- package/src/defaults/skc/rules/ponytail.md +0 -68
|
@@ -10,7 +10,7 @@ import { type SkillDiscoverySettings } from "./skill-settings-defaults";
|
|
|
10
10
|
* settings.get("compaction.enabled") // => boolean
|
|
11
11
|
* settings.set("theme.dark", "red-octopus") // sync, saves in background
|
|
12
12
|
*/
|
|
13
|
-
export type SettingTab = "appearance" | "model" | "interaction" | "context" | "memory" | "editing" | "tools" | "tasks" | "providers";
|
|
13
|
+
export type SettingTab = "appearance" | "model" | "interaction" | "context" | "memory" | "editing" | "tools" | "tasks" | "providers" | "integrations";
|
|
14
14
|
/** Tab display metadata - icon is resolved via theme.symbol() */
|
|
15
15
|
export type TabMetadata = {
|
|
16
16
|
label: string;
|
|
@@ -160,6 +160,42 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
160
160
|
readonly default: 60000;
|
|
161
161
|
readonly validate: (value: number) => boolean;
|
|
162
162
|
};
|
|
163
|
+
readonly "notifications.terminalBell": {
|
|
164
|
+
readonly type: "boolean";
|
|
165
|
+
readonly default: false;
|
|
166
|
+
readonly ui: {
|
|
167
|
+
readonly tab: "interaction";
|
|
168
|
+
readonly label: "Terminal Bell";
|
|
169
|
+
readonly description: "Emit a BEL character for local terminal notifications. Windows Terminal may keep BEL silent depending on profile/system sound settings; use completion.notifyCommand for a PowerShell Console.Beep workaround.";
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
readonly "notifications.bellOnComplete": {
|
|
173
|
+
readonly type: "boolean";
|
|
174
|
+
readonly default: true;
|
|
175
|
+
readonly ui: {
|
|
176
|
+
readonly tab: "interaction";
|
|
177
|
+
readonly label: "Bell on Completion";
|
|
178
|
+
readonly description: "Ring the terminal bell when an agent turn completes";
|
|
179
|
+
};
|
|
180
|
+
};
|
|
181
|
+
readonly "notifications.bellOnApproval": {
|
|
182
|
+
readonly type: "boolean";
|
|
183
|
+
readonly default: true;
|
|
184
|
+
readonly ui: {
|
|
185
|
+
readonly tab: "interaction";
|
|
186
|
+
readonly label: "Bell on Approval";
|
|
187
|
+
readonly description: "Ring the terminal bell when a plan or approval prompt needs attention";
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
readonly "notifications.bellOnAsk": {
|
|
191
|
+
readonly type: "boolean";
|
|
192
|
+
readonly default: true;
|
|
193
|
+
readonly ui: {
|
|
194
|
+
readonly tab: "interaction";
|
|
195
|
+
readonly label: "Bell on Ask";
|
|
196
|
+
readonly description: "Ring the terminal bell when an ask/user-input prompt needs attention";
|
|
197
|
+
};
|
|
198
|
+
};
|
|
163
199
|
readonly autoResume: {
|
|
164
200
|
readonly type: "boolean";
|
|
165
201
|
readonly default: false;
|
|
@@ -358,7 +394,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
358
394
|
};
|
|
359
395
|
readonly "statusLine.preset": {
|
|
360
396
|
readonly type: "enum";
|
|
361
|
-
readonly values: readonly ["default", "minimal", "compact", "full", "nerd", "ascii", "custom"];
|
|
397
|
+
readonly values: readonly ["default", "default-usage", "minimal", "compact", "full", "nerd", "ascii", "custom"];
|
|
362
398
|
readonly default: "default";
|
|
363
399
|
readonly ui: {
|
|
364
400
|
readonly tab: "appearance";
|
|
@@ -368,6 +404,10 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
368
404
|
readonly value: "default";
|
|
369
405
|
readonly label: "Default";
|
|
370
406
|
readonly description: "Model, path, git, context, tokens, cost";
|
|
407
|
+
}, {
|
|
408
|
+
readonly value: "default-usage";
|
|
409
|
+
readonly label: "Default + Usage";
|
|
410
|
+
readonly description: "Default layout with provider usage quota";
|
|
371
411
|
}, {
|
|
372
412
|
readonly value: "minimal";
|
|
373
413
|
readonly label: "Minimal";
|
|
@@ -443,6 +483,28 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
443
483
|
readonly description: "Use the session name color for the editor border and status line gap";
|
|
444
484
|
};
|
|
445
485
|
};
|
|
486
|
+
readonly "statusLine.maxRows": {
|
|
487
|
+
readonly type: "number";
|
|
488
|
+
readonly default: 1;
|
|
489
|
+
readonly ui: {
|
|
490
|
+
readonly tab: "appearance";
|
|
491
|
+
readonly label: "Status Line Rows";
|
|
492
|
+
readonly description: "Maximum rows for the status line. When greater than 1, overflowing segments wrap onto additional rows instead of being dropped.";
|
|
493
|
+
readonly options: readonly [{
|
|
494
|
+
readonly value: "1";
|
|
495
|
+
readonly label: "1 row";
|
|
496
|
+
readonly description: "Single line; overflow is truncated (default)";
|
|
497
|
+
}, {
|
|
498
|
+
readonly value: "2";
|
|
499
|
+
readonly label: "2 rows";
|
|
500
|
+
readonly description: "Wrap overflow onto a second row";
|
|
501
|
+
}, {
|
|
502
|
+
readonly value: "3";
|
|
503
|
+
readonly label: "3 rows";
|
|
504
|
+
readonly description: "Wrap overflow across up to three rows";
|
|
505
|
+
}];
|
|
506
|
+
};
|
|
507
|
+
};
|
|
446
508
|
readonly "tools.artifactSpillThreshold": {
|
|
447
509
|
readonly type: "number";
|
|
448
510
|
readonly default: 50;
|
|
@@ -1344,6 +1406,15 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1344
1406
|
readonly description: "Notify when the agent completes";
|
|
1345
1407
|
};
|
|
1346
1408
|
};
|
|
1409
|
+
readonly "completion.notifyCommand": {
|
|
1410
|
+
readonly type: "string";
|
|
1411
|
+
readonly default: "";
|
|
1412
|
+
readonly ui: {
|
|
1413
|
+
readonly tab: "interaction";
|
|
1414
|
+
readonly label: "Completion Notification Command";
|
|
1415
|
+
readonly description: "Optional user-level shell command to run when an agent turn completes; receives SKC_NOTIFICATION_* environment variables. On Windows, this can call PowerShell [Console]::Beep when terminal BEL is silent.";
|
|
1416
|
+
};
|
|
1417
|
+
};
|
|
1347
1418
|
readonly "ask.timeout": {
|
|
1348
1419
|
readonly type: "number";
|
|
1349
1420
|
readonly default: 0;
|
|
@@ -2573,6 +2644,11 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2573
2644
|
readonly description: "Enable the web_search tool for web searching";
|
|
2574
2645
|
};
|
|
2575
2646
|
};
|
|
2647
|
+
readonly "web_search.provider": {
|
|
2648
|
+
readonly type: "enum";
|
|
2649
|
+
readonly values: readonly ["auto", "duckduckgo", "insane", "exa", "brave", "jina", "kimi", "zai", "anthropic", "perplexity", "gemini", "codex", "xai", "tavily", "parallel", "kagi", "synthetic", "searxng"];
|
|
2650
|
+
readonly default: "auto";
|
|
2651
|
+
};
|
|
2576
2652
|
readonly "web_search.fallback": {
|
|
2577
2653
|
readonly type: "array";
|
|
2578
2654
|
readonly default: string[];
|
|
@@ -2837,7 +2913,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2837
2913
|
readonly "tools.discoveryMode": {
|
|
2838
2914
|
readonly type: "enum";
|
|
2839
2915
|
readonly values: readonly ["off", "all"];
|
|
2840
|
-
readonly default: "
|
|
2916
|
+
readonly default: "all";
|
|
2841
2917
|
readonly ui: {
|
|
2842
2918
|
readonly tab: "tools";
|
|
2843
2919
|
readonly label: "Tool Discovery";
|
|
@@ -2850,7 +2926,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2850
2926
|
readonly ui: {
|
|
2851
2927
|
readonly tab: "tools";
|
|
2852
2928
|
readonly label: "Essential Tools Override";
|
|
2853
|
-
readonly description: "Override the always-loaded built-in tools (default: read, bash, edit). Leave empty to use defaults.";
|
|
2929
|
+
readonly description: "Override the always-loaded built-in tools (default: read, bash, edit, write, search, find). Leave empty to use defaults.";
|
|
2854
2930
|
};
|
|
2855
2931
|
};
|
|
2856
2932
|
readonly "mcp.enableProjectConfig": {
|
|
@@ -3590,6 +3666,180 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3590
3666
|
readonly description: "Score threshold (0\u2013100) above which block mode denies install. Default 60.";
|
|
3591
3667
|
};
|
|
3592
3668
|
};
|
|
3669
|
+
readonly "telegram.enabled": {
|
|
3670
|
+
readonly type: "boolean";
|
|
3671
|
+
readonly default: false;
|
|
3672
|
+
readonly ui: {
|
|
3673
|
+
readonly tab: "integrations";
|
|
3674
|
+
readonly label: "Telegram Remote";
|
|
3675
|
+
readonly description: "Enable two-way Telegram bot control of skc sessions";
|
|
3676
|
+
};
|
|
3677
|
+
};
|
|
3678
|
+
readonly "telegram.botToken": {
|
|
3679
|
+
readonly type: "string";
|
|
3680
|
+
readonly default: undefined;
|
|
3681
|
+
readonly ui: {
|
|
3682
|
+
readonly tab: "integrations";
|
|
3683
|
+
readonly label: "Bot Token";
|
|
3684
|
+
readonly description: "Telegram bot token from @BotFather (required when enabled)";
|
|
3685
|
+
};
|
|
3686
|
+
};
|
|
3687
|
+
readonly "telegram.allowedUserIds": {
|
|
3688
|
+
readonly type: "string";
|
|
3689
|
+
readonly default: undefined;
|
|
3690
|
+
readonly ui: {
|
|
3691
|
+
readonly tab: "integrations";
|
|
3692
|
+
readonly label: "Allowed User IDs";
|
|
3693
|
+
readonly description: "Comma-separated Telegram user IDs permitted to send commands";
|
|
3694
|
+
};
|
|
3695
|
+
};
|
|
3696
|
+
readonly "telegram.allowedChatIds": {
|
|
3697
|
+
readonly type: "string";
|
|
3698
|
+
readonly default: undefined;
|
|
3699
|
+
readonly ui: {
|
|
3700
|
+
readonly tab: "integrations";
|
|
3701
|
+
readonly label: "Allowed Chat IDs";
|
|
3702
|
+
readonly description: "Comma-separated Telegram chat IDs permitted to send commands";
|
|
3703
|
+
};
|
|
3704
|
+
};
|
|
3705
|
+
readonly "telegram.backend": {
|
|
3706
|
+
readonly type: "enum";
|
|
3707
|
+
readonly values: readonly ["coordinator", "rpc"];
|
|
3708
|
+
readonly default: "coordinator";
|
|
3709
|
+
readonly ui: {
|
|
3710
|
+
readonly tab: "integrations";
|
|
3711
|
+
readonly label: "Backend";
|
|
3712
|
+
readonly description: "Coordinator (multi-session lifecycle) or RPC (single persistent session)";
|
|
3713
|
+
readonly options: readonly [{
|
|
3714
|
+
readonly value: "coordinator";
|
|
3715
|
+
readonly label: "Coordinator";
|
|
3716
|
+
readonly description: "Multi-session lifecycle + observation";
|
|
3717
|
+
}, {
|
|
3718
|
+
readonly value: "rpc";
|
|
3719
|
+
readonly label: "RPC";
|
|
3720
|
+
readonly description: "Attach/detach to one persistent session socket";
|
|
3721
|
+
}];
|
|
3722
|
+
};
|
|
3723
|
+
};
|
|
3724
|
+
readonly "telegram.enableStop": {
|
|
3725
|
+
readonly type: "boolean";
|
|
3726
|
+
readonly default: false;
|
|
3727
|
+
readonly ui: {
|
|
3728
|
+
readonly tab: "integrations";
|
|
3729
|
+
readonly label: "Enable /stop";
|
|
3730
|
+
readonly description: "Allow graceful stop requests (adds the reports mutation class)";
|
|
3731
|
+
};
|
|
3732
|
+
};
|
|
3733
|
+
readonly "telegram.enableRich": {
|
|
3734
|
+
readonly type: "boolean";
|
|
3735
|
+
readonly default: true;
|
|
3736
|
+
readonly ui: {
|
|
3737
|
+
readonly tab: "integrations";
|
|
3738
|
+
readonly label: "Rich Messages";
|
|
3739
|
+
readonly description: "HTML formatting + inline keyboards";
|
|
3740
|
+
};
|
|
3741
|
+
};
|
|
3742
|
+
readonly "telegram.enablePush": {
|
|
3743
|
+
readonly type: "boolean";
|
|
3744
|
+
readonly default: false;
|
|
3745
|
+
readonly ui: {
|
|
3746
|
+
readonly tab: "integrations";
|
|
3747
|
+
readonly label: "Push Notifications";
|
|
3748
|
+
readonly description: "Follow/Mute subscriptions via coordinator event watch";
|
|
3749
|
+
};
|
|
3750
|
+
};
|
|
3751
|
+
readonly "telegram.registerCommands": {
|
|
3752
|
+
readonly type: "boolean";
|
|
3753
|
+
readonly default: true;
|
|
3754
|
+
readonly ui: {
|
|
3755
|
+
readonly tab: "integrations";
|
|
3756
|
+
readonly label: "Register Bot Menu";
|
|
3757
|
+
readonly description: "Register the Bot command menu at startup";
|
|
3758
|
+
};
|
|
3759
|
+
};
|
|
3760
|
+
readonly "telegram.presets": {
|
|
3761
|
+
readonly type: "string";
|
|
3762
|
+
readonly default: undefined;
|
|
3763
|
+
readonly ui: {
|
|
3764
|
+
readonly tab: "integrations";
|
|
3765
|
+
readonly label: "Session Presets";
|
|
3766
|
+
readonly description: "JSON array of {id, workdir, sessionCommand, taskTemplate?, taskMaxLen?}";
|
|
3767
|
+
};
|
|
3768
|
+
};
|
|
3769
|
+
readonly "telegram.rpcSocket": {
|
|
3770
|
+
readonly type: "string";
|
|
3771
|
+
readonly default: undefined;
|
|
3772
|
+
readonly ui: {
|
|
3773
|
+
readonly tab: "integrations";
|
|
3774
|
+
readonly label: "RPC Socket";
|
|
3775
|
+
readonly description: "Path to the skc launch --output rpc UNIX socket (RPC backend only)";
|
|
3776
|
+
};
|
|
3777
|
+
};
|
|
3778
|
+
readonly "telegram.stateDir": {
|
|
3779
|
+
readonly type: "string";
|
|
3780
|
+
readonly default: undefined;
|
|
3781
|
+
readonly ui: {
|
|
3782
|
+
readonly tab: "integrations";
|
|
3783
|
+
readonly label: "State Directory";
|
|
3784
|
+
readonly description: "Gateway state dir for reconnect/resync (required for RPC backend)";
|
|
3785
|
+
};
|
|
3786
|
+
};
|
|
3787
|
+
readonly "telegram.pollTimeoutSec": {
|
|
3788
|
+
readonly type: "number";
|
|
3789
|
+
readonly default: 30;
|
|
3790
|
+
};
|
|
3791
|
+
readonly "telegram.apiBase": {
|
|
3792
|
+
readonly type: "string";
|
|
3793
|
+
readonly default: undefined;
|
|
3794
|
+
};
|
|
3795
|
+
readonly "telegram.coordinatorCommand": {
|
|
3796
|
+
readonly type: "string";
|
|
3797
|
+
readonly default: "skc";
|
|
3798
|
+
};
|
|
3799
|
+
readonly "telegram.coordinatorArgs": {
|
|
3800
|
+
readonly type: "string";
|
|
3801
|
+
readonly default: "mcp-serve,coordinator";
|
|
3802
|
+
};
|
|
3803
|
+
readonly "telegram.enableEditMessageText": {
|
|
3804
|
+
readonly type: "boolean";
|
|
3805
|
+
readonly default: false;
|
|
3806
|
+
};
|
|
3807
|
+
readonly "telegram.richCallbackTtlMs": {
|
|
3808
|
+
readonly type: "number";
|
|
3809
|
+
readonly default: 600000;
|
|
3810
|
+
};
|
|
3811
|
+
readonly "telegram.richCallbackMaxTokens": {
|
|
3812
|
+
readonly type: "number";
|
|
3813
|
+
readonly default: 500;
|
|
3814
|
+
};
|
|
3815
|
+
readonly "telegram.defaultTaskMaxLen": {
|
|
3816
|
+
readonly type: "number";
|
|
3817
|
+
readonly default: 2000;
|
|
3818
|
+
};
|
|
3819
|
+
readonly "telegram.livenessMs": {
|
|
3820
|
+
readonly type: "number";
|
|
3821
|
+
readonly default: 60000;
|
|
3822
|
+
};
|
|
3823
|
+
readonly "telegram.followTtlMs": {
|
|
3824
|
+
readonly type: "number";
|
|
3825
|
+
readonly default: 86400000;
|
|
3826
|
+
};
|
|
3827
|
+
readonly "telegram.subscriptionsMax": {
|
|
3828
|
+
readonly type: "number";
|
|
3829
|
+
readonly default: 1000;
|
|
3830
|
+
};
|
|
3831
|
+
readonly "telegram.longPollMs": {
|
|
3832
|
+
readonly type: "number";
|
|
3833
|
+
readonly default: 25000;
|
|
3834
|
+
};
|
|
3835
|
+
readonly "telegram.digestThreshold": {
|
|
3836
|
+
readonly type: "number";
|
|
3837
|
+
readonly default: 5;
|
|
3838
|
+
};
|
|
3839
|
+
readonly "telegram.allowAttachSocketArg": {
|
|
3840
|
+
readonly type: "boolean";
|
|
3841
|
+
readonly default: false;
|
|
3842
|
+
};
|
|
3593
3843
|
};
|
|
3594
3844
|
type Schema = typeof SETTINGS_SCHEMA;
|
|
3595
3845
|
/** All valid setting paths */
|
|
@@ -3707,6 +3957,7 @@ export interface ExaSettings {
|
|
|
3707
3957
|
export interface StatusLineSettings {
|
|
3708
3958
|
preset: StatusLinePreset;
|
|
3709
3959
|
separator: StatusLineSeparatorStyle;
|
|
3960
|
+
maxRows: number;
|
|
3710
3961
|
showHookStatus: boolean;
|
|
3711
3962
|
showSkillHud: boolean;
|
|
3712
3963
|
leftSegments: StatusLineSegmentId[];
|
|
@@ -3761,6 +4012,34 @@ export interface NotificationsSettings {
|
|
|
3761
4012
|
idleTimeoutMs: number;
|
|
3762
4013
|
};
|
|
3763
4014
|
}
|
|
4015
|
+
export interface TelegramSettings {
|
|
4016
|
+
enabled: boolean;
|
|
4017
|
+
botToken: string | undefined;
|
|
4018
|
+
allowedUserIds: string | undefined;
|
|
4019
|
+
allowedChatIds: string | undefined;
|
|
4020
|
+
backend: "coordinator" | "rpc";
|
|
4021
|
+
enableStop: boolean;
|
|
4022
|
+
enableRich: boolean;
|
|
4023
|
+
enablePush: boolean;
|
|
4024
|
+
registerCommands: boolean;
|
|
4025
|
+
presets: string | undefined;
|
|
4026
|
+
rpcSocket: string | undefined;
|
|
4027
|
+
stateDir: string | undefined;
|
|
4028
|
+
pollTimeoutSec: number;
|
|
4029
|
+
apiBase: string | undefined;
|
|
4030
|
+
coordinatorCommand: string;
|
|
4031
|
+
coordinatorArgs: string;
|
|
4032
|
+
enableEditMessageText: boolean;
|
|
4033
|
+
richCallbackTtlMs: number;
|
|
4034
|
+
richCallbackMaxTokens: number;
|
|
4035
|
+
defaultTaskMaxLen: number;
|
|
4036
|
+
livenessMs: number;
|
|
4037
|
+
followTtlMs: number;
|
|
4038
|
+
subscriptionsMax: number;
|
|
4039
|
+
longPollMs: number;
|
|
4040
|
+
digestThreshold: number;
|
|
4041
|
+
allowAttachSocketArg: boolean;
|
|
4042
|
+
}
|
|
3764
4043
|
/** Map group prefix -> typed settings interface */
|
|
3765
4044
|
export interface GroupTypeMap {
|
|
3766
4045
|
compaction: CompactionSettings;
|
|
@@ -3779,6 +4058,7 @@ export interface GroupTypeMap {
|
|
|
3779
4058
|
modelTags: ModelTagsSettings;
|
|
3780
4059
|
cycleOrder: string[];
|
|
3781
4060
|
shellMinimizer: ShellMinimizerSettings;
|
|
4061
|
+
telegram: TelegramSettings;
|
|
3782
4062
|
notifications: NotificationsSettings;
|
|
3783
4063
|
}
|
|
3784
4064
|
export type GroupPrefix = keyof GroupTypeMap;
|
|
@@ -54,6 +54,13 @@ export declare class Settings {
|
|
|
54
54
|
* Returns the merged value from global + project + overrides, or the default.
|
|
55
55
|
*/
|
|
56
56
|
get<P extends SettingPath>(path: P): SettingValue<P>;
|
|
57
|
+
/**
|
|
58
|
+
* Get a setting value from the user/global config only.
|
|
59
|
+
*
|
|
60
|
+
* Use for machine-local command hooks and other settings that must not be
|
|
61
|
+
* activated by project-scoped config files.
|
|
62
|
+
*/
|
|
63
|
+
getGlobal<P extends SettingPath>(path: P): SettingValue<P> | undefined;
|
|
57
64
|
/** Check whether a setting is present in loaded settings/overrides rather than coming from schema defaults. */
|
|
58
65
|
has(path: SettingPath): boolean;
|
|
59
66
|
/**
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-start the Telegram Remote gateway when `telegram.enabled` is on.
|
|
3
|
+
*
|
|
4
|
+
* Called once during skc startup (interactive / persistent modes only — not
|
|
5
|
+
* `-p` print or auto-print). Spawns the gateway as a detached background
|
|
6
|
+
* process, tracks its PID so repeated skc invocations don't double-spawn,
|
|
7
|
+
* and redirects output to a log file under the config root.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* If `telegram.enabled` is true and the gateway is not already running, spawn
|
|
11
|
+
* it in the background. Never throws — failures are logged as warnings so the
|
|
12
|
+
* main skc session is unaffected.
|
|
13
|
+
*/
|
|
14
|
+
export declare function maybeAutostartTelegramRemote(): Promise<void>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge between skc settings (`telegram.*`) and the
|
|
3
|
+
* `@sayknow-cli/telegram-remote` gateway's environment-driven config
|
|
4
|
+
* (`loadConfigFromEnv` in packages/telegram-remote/src/config.ts).
|
|
5
|
+
*
|
|
6
|
+
* The gateway is a standalone process (`skc-telegram-remote`) that reads all
|
|
7
|
+
* configuration from `SKC_TELEGRAM_REMOTE_*` env vars. This module converts the
|
|
8
|
+
* typed settings group into those env vars so skc can spawn the gateway with a
|
|
9
|
+
* consistent, settings-page-driven configuration.
|
|
10
|
+
*/
|
|
11
|
+
import type { TelegramSettings } from "./settings-schema";
|
|
12
|
+
/** Convert telegram settings into the env-var map the gateway expects. */
|
|
13
|
+
export declare function telegramSettingsToEnv(s: TelegramSettings): Record<string, string>;
|
|
14
|
+
/**
|
|
15
|
+
* Validate telegram settings before spawning the gateway.
|
|
16
|
+
* Returns a list of human-readable error strings (empty when valid).
|
|
17
|
+
*/
|
|
18
|
+
export declare function validateTelegramSettings(s: TelegramSettings): string[];
|
|
@@ -45,6 +45,14 @@ interface LegacyHandlerOptions {
|
|
|
45
45
|
env?: NodeJS.ProcessEnv;
|
|
46
46
|
createSession?: () => unknown;
|
|
47
47
|
}
|
|
48
|
+
export declare const COORDINATOR_AWAIT_TURN_TIMEOUT_MAX_MS: number;
|
|
49
|
+
export declare const COORDINATOR_RUNTIME_PROMPT_ACK_TIMEOUT_MAX_MS: number;
|
|
50
|
+
export declare const COORDINATOR_EVENT_WATCH_TIMEOUT_MAX_MS = 30000;
|
|
51
|
+
export declare const COORDINATOR_POLL_INTERVAL_MAX_MS = 10000;
|
|
52
|
+
export declare function boundedAwaitTurnTimeoutMs(value: unknown): number;
|
|
53
|
+
export declare function boundedRuntimePromptAckTimeoutMs(value: unknown): number;
|
|
54
|
+
export declare function boundedEventWatchTimeoutMs(value: unknown): number;
|
|
55
|
+
export declare function boundedPollIntervalMs(value: unknown): number;
|
|
48
56
|
export declare function readCoordinatorArtifact(config: CoordinatorMcpConfig, args: {
|
|
49
57
|
path: unknown;
|
|
50
58
|
}): Promise<Record<string, unknown>>;
|
|
@@ -27,6 +27,13 @@ export type DefaultSkcDefinition = DefaultSkcSkillDefinition | DefaultSkcSkillFr
|
|
|
27
27
|
export interface InstallDefaultSkcDefinitionsOptions {
|
|
28
28
|
check?: boolean;
|
|
29
29
|
force?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Only rewrite default definition files that already exist on disk but whose
|
|
32
|
+
* content differs from the embedded defaults. Files that are absent are left
|
|
33
|
+
* absent (status "missing"). Used by `skc update` to refresh opted-in copies
|
|
34
|
+
* without materializing new on-disk copies for users who never installed them.
|
|
35
|
+
*/
|
|
36
|
+
refreshOnly?: boolean;
|
|
30
37
|
targetRoot?: string;
|
|
31
38
|
}
|
|
32
39
|
export type DefaultSkcDefinitionInstallFile = {
|
|
@@ -9,8 +9,11 @@
|
|
|
9
9
|
* - Project: .cursor/ (cwd only)
|
|
10
10
|
*
|
|
11
11
|
* Capabilities:
|
|
12
|
-
* - mcps: From mcp.json with mcpServers key
|
|
13
12
|
* - rules: From rules/*.mdc files with MDC frontmatter (description, globs, alwaysApply)
|
|
14
13
|
* - settings: From settings.json if present
|
|
14
|
+
*
|
|
15
|
+
* MCP servers are intentionally NOT inherited live from Cursor config: SKC owns
|
|
16
|
+
* MCP runtime execution. Use `skc mcp import cursor` to copy definitions into
|
|
17
|
+
* SKC's own mcp.json instead.
|
|
15
18
|
*/
|
|
16
19
|
export {};
|
|
@@ -28,7 +28,6 @@ import "./opencode";
|
|
|
28
28
|
import "./github";
|
|
29
29
|
import "./mcp-json";
|
|
30
30
|
import "./ssh";
|
|
31
|
-
import "./vscode";
|
|
32
31
|
import "./windsurf";
|
|
33
32
|
export { cacheStats, disableProvider, enableProvider, getAllCapabilitiesInfo, getAllProvidersInfo, getCapability, getCapabilityInfo, getDisabledProviders, getProviderInfo, initializeWithSettings, invalidate, isProviderEnabled, listCapabilities, loadCapability, reset, setDisabledProviders, } from "../capability";
|
|
34
33
|
export type { ContextFile } from "../capability/context-file";
|
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
* - Project: .windsurf
|
|
7
7
|
*
|
|
8
8
|
* Supports:
|
|
9
|
-
* - MCP servers from mcp_config.json
|
|
10
9
|
* - Rules from .windsurf/rules/*.md and ~/.codeium/windsurf/memories/global_rules.md
|
|
11
10
|
* - Legacy .windsurfrules file
|
|
11
|
+
*
|
|
12
|
+
* MCP servers are intentionally NOT inherited live from Windsurf config: SKC
|
|
13
|
+
* owns MCP runtime execution. Copy definitions into SKC's own mcp.json instead.
|
|
12
14
|
*/
|
|
13
15
|
export {};
|
|
@@ -76,6 +76,17 @@ export interface ExtensionUIDialogOptions {
|
|
|
76
76
|
optionLabel: string;
|
|
77
77
|
onSubmit: (text: string) => void;
|
|
78
78
|
};
|
|
79
|
+
/**
|
|
80
|
+
* Inline free-text input for a non-answer clarification action. It is
|
|
81
|
+
* separate from `customInput` so callers can distinguish "ask about these
|
|
82
|
+
* choices" from "provide my own answer". Empty/whitespace-only submissions
|
|
83
|
+
* may be rejected by the selector when `allowEmpty` is false.
|
|
84
|
+
*/
|
|
85
|
+
clarificationInput?: {
|
|
86
|
+
optionLabel: string;
|
|
87
|
+
onSubmit: (text: string) => void;
|
|
88
|
+
allowEmpty?: boolean;
|
|
89
|
+
};
|
|
79
90
|
}
|
|
80
91
|
/** Raw terminal input listener for extensions. */
|
|
81
92
|
export type TerminalInputHandler = (data: string) => {
|
|
@@ -36,6 +36,7 @@ export declare const en: {
|
|
|
36
36
|
readonly "settings.tab.tools": "Tools";
|
|
37
37
|
readonly "settings.tab.tasks": "Tasks";
|
|
38
38
|
readonly "settings.tab.providers": "Providers";
|
|
39
|
+
readonly "settings.tab.integrations": "Integrations";
|
|
39
40
|
readonly "settings.language.label": "Language";
|
|
40
41
|
readonly "settings.language.desc": "Interface language. Auto follows your system locale.";
|
|
41
42
|
readonly "help.usage": "USAGE";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Editor, type KeyId } from "@sayknow-cli/tui";
|
|
2
2
|
import { type AppKeybinding } from "../../config/keybindings";
|
|
3
|
-
type ConfigurableEditorAction = Extract<AppKeybinding, "app.interrupt" | "app.clear" | "app.exit" | "app.suspend" | "app.thinking.cycle" | "app.model.cycleForward" | "app.model.cycleBackward" | "app.model.select" | "app.model.selectTemporary" | "app.tools.expand" | "app.thinking.toggle" | "app.editor.external" | "app.history.search" | "app.message.dequeue" | "app.message.followUp" | "app.message.queue" | "app.clipboard.pasteImage" | "app.clipboard.copyPrompt">;
|
|
3
|
+
type ConfigurableEditorAction = Extract<AppKeybinding, "app.interrupt" | "app.clear" | "app.exit" | "app.suspend" | "app.thinking.cycle" | "app.commandPalette.open" | "app.model.cycleForward" | "app.model.cycleBackward" | "app.model.select" | "app.model.selectTemporary" | "app.tools.expand" | "app.thinking.toggle" | "app.editor.external" | "app.history.search" | "app.message.dequeue" | "app.message.followUp" | "app.message.queue" | "app.clipboard.pasteImage" | "app.clipboard.copyPrompt">;
|
|
4
4
|
type PastePendingClearReason = "timeout" | "queue-limit";
|
|
5
5
|
/**
|
|
6
6
|
* Custom editor that handles configurable app-level shortcuts for coding-agent.
|
|
@@ -19,6 +19,7 @@ export declare class CustomEditor extends Editor {
|
|
|
19
19
|
onClear?: () => void;
|
|
20
20
|
onExit?: () => void;
|
|
21
21
|
onCycleThinkingLevel?: () => void;
|
|
22
|
+
onOpenCommandPalette?: () => void;
|
|
22
23
|
onCycleModelForward?: () => void;
|
|
23
24
|
onCycleModelBackward?: () => void;
|
|
24
25
|
onSelectModel?: () => void;
|
|
@@ -43,6 +44,10 @@ export declare class CustomEditor extends Editor {
|
|
|
43
44
|
onQueue?: () => void;
|
|
44
45
|
/** Called when Caps Lock is pressed. */
|
|
45
46
|
onCapsLock?: () => void;
|
|
47
|
+
/** Called when PageUp/PageDown should scroll the transcript viewport instead of prompt history. */
|
|
48
|
+
onViewportPageScroll?: (direction: -1 | 1) => void;
|
|
49
|
+
/** Called before regular composer input should return the transcript viewport to the live bottom. */
|
|
50
|
+
onViewportFollowLive?: () => void;
|
|
46
51
|
setActionKeys(action: ConfigurableEditorAction, keys: KeyId[]): void;
|
|
47
52
|
/**
|
|
48
53
|
* Register a custom key handler. Extensions use this for shortcuts.
|
|
@@ -6,7 +6,7 @@ export interface CustomModelPresetWizardSubmit {
|
|
|
6
6
|
}
|
|
7
7
|
export declare class CustomModelPresetWizardComponent extends Container {
|
|
8
8
|
#private;
|
|
9
|
-
constructor(onSubmit: (input: CustomModelPresetWizardSubmit) => void, onCancel: () => void, onRender?: () => void);
|
|
9
|
+
constructor(snapshot: ModelProfileConfig, onSubmit: (input: CustomModelPresetWizardSubmit) => void, onCancel: () => void, onRender?: () => void);
|
|
10
10
|
setSubmitError(error: string): void;
|
|
11
11
|
handleInput(keyData: string): void;
|
|
12
12
|
}
|
|
@@ -33,6 +33,11 @@ export interface HookSelectorOptions {
|
|
|
33
33
|
optionLabel: string;
|
|
34
34
|
onSubmit: (text: string) => void;
|
|
35
35
|
};
|
|
36
|
+
clarificationInput?: {
|
|
37
|
+
optionLabel: string;
|
|
38
|
+
onSubmit: (text: string) => void;
|
|
39
|
+
allowEmpty?: boolean;
|
|
40
|
+
};
|
|
36
41
|
/**
|
|
37
42
|
* Autocomplete provider for the inline custom-input editor. When present,
|
|
38
43
|
* the "Other (type your own)" editor gains the same `@` file-link and `/`
|
|
@@ -3,6 +3,7 @@ import { type Model } from "@sayknow-cli/ai";
|
|
|
3
3
|
import { Container, Input, type TUI } from "@sayknow-cli/tui";
|
|
4
4
|
import type { ModelRegistry, SkcModelAssignmentTargetId } from "../../config/model-registry";
|
|
5
5
|
import { type ScopedModelSelection } from "../../config/model-resolver";
|
|
6
|
+
import type { ModelProfileConfig } from "../../config/models-config-schema";
|
|
6
7
|
import type { Settings } from "../../config/settings";
|
|
7
8
|
type ScopedModelItem = ScopedModelSelection;
|
|
8
9
|
export type ModelSelectorSelection = {
|
|
@@ -17,6 +18,7 @@ export type ModelSelectorSelection = {
|
|
|
17
18
|
setDefault: boolean;
|
|
18
19
|
} | {
|
|
19
20
|
kind: "createProfile";
|
|
21
|
+
profile: ModelProfileConfig;
|
|
20
22
|
} | {
|
|
21
23
|
kind: "login";
|
|
22
24
|
providerId: string;
|
|
@@ -4,6 +4,7 @@ import { Container, SettingsList } from "@sayknow-cli/tui";
|
|
|
4
4
|
import { type SettingPath } from "../../config/settings";
|
|
5
5
|
import type { StatusLinePreset, StatusLineSegmentId, StatusLineSeparatorStyle } from "../../config/settings-schema";
|
|
6
6
|
import { PluginSettingsComponent } from "./plugin-settings";
|
|
7
|
+
import type { StatusLineSegmentOptions } from "./status-line";
|
|
7
8
|
/**
|
|
8
9
|
* Dynamic context for settings that need runtime data.
|
|
9
10
|
* Some settings (like thinking level) are managed by the session, not Settings.
|
|
@@ -24,7 +25,10 @@ export interface StatusLinePreviewSettings {
|
|
|
24
25
|
leftSegments?: StatusLineSegmentId[];
|
|
25
26
|
rightSegments?: StatusLineSegmentId[];
|
|
26
27
|
separator?: StatusLineSeparatorStyle;
|
|
28
|
+
segmentOptions?: StatusLineSegmentOptions;
|
|
29
|
+
previewHighlightSegment?: StatusLineSegmentId;
|
|
27
30
|
sessionAccent?: boolean;
|
|
31
|
+
maxRows?: number;
|
|
28
32
|
}
|
|
29
33
|
export interface SettingsCallbacks {
|
|
30
34
|
/** Called when any setting value changes */
|
|
@@ -36,7 +40,7 @@ export interface SettingsCallbacks {
|
|
|
36
40
|
/** Called for status line preview while configuring */
|
|
37
41
|
onStatusLinePreview?: (settings: StatusLinePreviewSettings) => void;
|
|
38
42
|
/** Get current rendered status line for inline preview */
|
|
39
|
-
getStatusLinePreview?: () => string;
|
|
43
|
+
getStatusLinePreview?: (width?: number) => string;
|
|
40
44
|
/** Called when plugins change */
|
|
41
45
|
onPluginsChanged?: () => void;
|
|
42
46
|
/** Called when settings panel is closed */
|
|
@@ -44,14 +44,12 @@ export interface SegmentContext {
|
|
|
44
44
|
} | null;
|
|
45
45
|
};
|
|
46
46
|
usage: {
|
|
47
|
-
|
|
47
|
+
windows: Array<{
|
|
48
|
+
label: string;
|
|
48
49
|
percent: number;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
percent: number;
|
|
53
|
-
resetHours?: number;
|
|
54
|
-
};
|
|
50
|
+
resetValue?: number;
|
|
51
|
+
resetUnit?: "m" | "h";
|
|
52
|
+
}>;
|
|
55
53
|
} | null;
|
|
56
54
|
}
|
|
57
55
|
export interface RenderedSegment {
|