@sayknow-cli/coding-agent 0.3.1 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/bin/skc.js +4 -0
  2. package/dist/types/cli/mcp-cli.d.ts +25 -0
  3. package/dist/types/cli/plugin-cli.d.ts +2 -0
  4. package/dist/types/cli.d.ts +6 -0
  5. package/dist/types/commands/mcp.d.ts +70 -0
  6. package/dist/types/commands/plugin.d.ts +6 -0
  7. package/dist/types/commands/session.d.ts +6 -0
  8. package/dist/types/config/keybindings.d.ts +2 -2
  9. package/dist/types/config/model-profile-activation.d.ts +8 -1
  10. package/dist/types/config/model-profiles.d.ts +2 -2
  11. package/dist/types/config/model-registry.d.ts +3 -3
  12. package/dist/types/config/models-config-schema.d.ts +0 -5
  13. package/dist/types/config/settings-schema.d.ts +79 -68
  14. package/dist/types/deep-interview/plaintext-gate-guard.d.ts +11 -0
  15. package/dist/types/export/html/template.generated.d.ts +1 -1
  16. package/dist/types/extensibility/skc-plugins/compiler.d.ts +19 -0
  17. package/dist/types/extensibility/skc-plugins/constrained-hooks.d.ts +29 -0
  18. package/dist/types/extensibility/skc-plugins/index.d.ts +9 -0
  19. package/dist/types/extensibility/skc-plugins/injection.d.ts +9 -0
  20. package/dist/types/extensibility/skc-plugins/installer.d.ts +13 -0
  21. package/dist/types/extensibility/skc-plugins/mcp-policy.d.ts +26 -0
  22. package/dist/types/extensibility/skc-plugins/observability.d.ts +27 -0
  23. package/dist/types/extensibility/skc-plugins/prompt-appendix.d.ts +16 -0
  24. package/dist/types/extensibility/skc-plugins/registry.d.ts +32 -0
  25. package/dist/types/extensibility/skc-plugins/runtime-adapters.d.ts +64 -0
  26. package/dist/types/extensibility/skc-plugins/session-validation.d.ts +42 -0
  27. package/dist/types/extensibility/skc-plugins/types.d.ts +158 -2
  28. package/dist/types/extensibility/skc-plugins/validation.d.ts +8 -1
  29. package/dist/types/i18n/messages/en.d.ts +0 -1
  30. package/dist/types/main.d.ts +2 -0
  31. package/dist/types/modes/components/custom-editor.d.ts +1 -1
  32. package/dist/types/modes/components/model-selector.d.ts +8 -0
  33. package/dist/types/modes/components/settings-defs.d.ts +0 -1
  34. package/dist/types/modes/components/status-line/git-utils.d.ts +6 -0
  35. package/dist/types/modes/theme/defaults/index.d.ts +99 -0
  36. package/dist/types/modes/theme/theme.d.ts +1 -1
  37. package/dist/types/notifications/html-format.d.ts +11 -0
  38. package/dist/types/notifications/index.d.ts +149 -1
  39. package/dist/types/notifications/lifecycle-commands.d.ts +60 -0
  40. package/dist/types/notifications/lifecycle-control-runtime.d.ts +98 -0
  41. package/dist/types/notifications/lifecycle-orchestrator.d.ts +144 -0
  42. package/dist/types/notifications/operator-runtime.d.ts +52 -0
  43. package/dist/types/notifications/rate-limit-pool.d.ts +2 -0
  44. package/dist/types/notifications/recent-activity.d.ts +35 -0
  45. package/dist/types/notifications/telegram-daemon.d.ts +114 -16
  46. package/dist/types/notifications/telegram-reference.d.ts +3 -1
  47. package/dist/types/notifications/topic-registry.d.ts +12 -9
  48. package/dist/types/runtime-mcp/types.d.ts +7 -0
  49. package/dist/types/sdk.d.ts +2 -0
  50. package/dist/types/session/agent-session.d.ts +14 -4
  51. package/dist/types/session/blob-store.d.ts +25 -0
  52. package/dist/types/session/session-manager.d.ts +57 -0
  53. package/dist/types/skc-runtime/launch-tmux.d.ts +1 -0
  54. package/dist/types/skc-runtime/psmux-detect.d.ts +78 -0
  55. package/dist/types/skc-runtime/state-renderer.d.ts +5 -0
  56. package/dist/types/skc-runtime/team-runtime.d.ts +2 -0
  57. package/dist/types/skc-runtime/tmux-common.d.ts +30 -2
  58. package/dist/types/skc-runtime/tmux-sessions.d.ts +18 -0
  59. package/dist/types/skc-runtime/ultragoal-guard.d.ts +37 -1
  60. package/dist/types/skc-runtime/ultragoal-runtime.d.ts +80 -0
  61. package/dist/types/slash-commands/helpers/fast-status-report.d.ts +6 -0
  62. package/dist/types/system-prompt.d.ts +2 -0
  63. package/dist/types/task/executor.d.ts +9 -1
  64. package/dist/types/tools/browser/tab-supervisor.d.ts +31 -0
  65. package/dist/types/tools/composer-bash-policy.d.ts +14 -0
  66. package/dist/types/tools/computer-gc.d.ts +23 -0
  67. package/dist/types/tools/cron.d.ts +36 -61
  68. package/dist/types/tools/index.d.ts +3 -2
  69. package/dist/types/tools/resource-gc.d.ts +54 -0
  70. package/dist/types/utils/changelog.d.ts +1 -0
  71. package/dist/types/web/insane/url-guard.d.ts +6 -3
  72. package/dist/types/web/scrapers/types.d.ts +5 -0
  73. package/dist/types/web/scrapers/utils.d.ts +7 -1
  74. package/dist/types/web/search/index.d.ts +1 -0
  75. package/dist/types/web/search/providers/utils.d.ts +11 -4
  76. package/package.json +11 -9
  77. package/scripts/g004-tmux-smoke.ts +100 -0
  78. package/scripts/g005-daemon-smoke.ts +180 -0
  79. package/scripts/g011-daemon-path-smoke.ts +153 -0
  80. package/src/cli/args.ts +0 -1
  81. package/src/cli/fast-help.ts +29 -2
  82. package/src/cli/mcp-cli.ts +272 -0
  83. package/src/cli/plugin-cli.ts +66 -3
  84. package/src/cli/web-search-cli.ts +5 -0
  85. package/src/cli.ts +30 -12
  86. package/src/commands/mcp.ts +117 -0
  87. package/src/commands/plugin.ts +4 -0
  88. package/src/commands/session.ts +18 -0
  89. package/src/config/keybindings.ts +2 -2
  90. package/src/config/model-profile-activation.ts +62 -8
  91. package/src/config/model-profiles.ts +3 -4
  92. package/src/config/model-registry.ts +3 -6
  93. package/src/config/models-config-schema.ts +1 -1
  94. package/src/config/settings-schema.ts +88 -103
  95. package/src/deep-interview/plaintext-gate-guard.ts +94 -0
  96. package/src/defaults/skc/extensions/grok-cli-vendor/biome.json +1 -1
  97. package/src/defaults/skc/skills/deep-interview/SKILL.md +7 -6
  98. package/src/defaults/skc/skills/team/SKILL.md +5 -3
  99. package/src/defaults/skc/skills/ultragoal/SKILL.md +41 -13
  100. package/src/export/html/index.ts +2 -2
  101. package/src/export/html/template.generated.ts +1 -1
  102. package/src/export/html/template.js +0 -12
  103. package/src/extensibility/extensions/runner.ts +1 -0
  104. package/src/extensibility/skc-plugins/compiler.ts +351 -0
  105. package/src/extensibility/skc-plugins/constrained-hooks.ts +170 -0
  106. package/src/extensibility/skc-plugins/index.ts +9 -0
  107. package/src/extensibility/skc-plugins/injection.ts +109 -0
  108. package/src/extensibility/skc-plugins/installer.ts +434 -0
  109. package/src/extensibility/skc-plugins/loader.ts +3 -1
  110. package/src/extensibility/skc-plugins/mcp-policy.ts +239 -0
  111. package/src/extensibility/skc-plugins/observability.ts +84 -0
  112. package/src/extensibility/skc-plugins/paths.ts +1 -1
  113. package/src/extensibility/skc-plugins/prompt-appendix.ts +109 -0
  114. package/src/extensibility/skc-plugins/registry.ts +180 -0
  115. package/src/extensibility/skc-plugins/runtime-adapters.ts +234 -0
  116. package/src/extensibility/skc-plugins/schema.ts +250 -20
  117. package/src/extensibility/skc-plugins/session-validation.ts +147 -0
  118. package/src/extensibility/skc-plugins/types.ts +199 -3
  119. package/src/extensibility/skc-plugins/validation.ts +80 -0
  120. package/src/extensibility/skills.ts +15 -0
  121. package/src/goals/tools/goal-tool.ts +14 -1
  122. package/src/hooks/skill-state.ts +57 -0
  123. package/src/i18n/messages/de.ts +0 -1
  124. package/src/i18n/messages/en.ts +0 -1
  125. package/src/i18n/messages/es.ts +0 -1
  126. package/src/i18n/messages/fr.ts +0 -1
  127. package/src/i18n/messages/ja.ts +0 -1
  128. package/src/i18n/messages/ko.ts +0 -1
  129. package/src/i18n/messages/zh.ts +0 -1
  130. package/src/internal-urls/docs-index.generated.ts +14 -11
  131. package/src/main.ts +14 -3
  132. package/src/modes/bridge/bridge-mode.ts +11 -0
  133. package/src/modes/components/assistant-message.ts +49 -1
  134. package/src/modes/components/custom-editor.ts +2 -0
  135. package/src/modes/components/footer.ts +2 -3
  136. package/src/modes/components/hook-editor.ts +1 -1
  137. package/src/modes/components/hook-selector.ts +67 -43
  138. package/src/modes/components/model-selector.ts +65 -12
  139. package/src/modes/components/settings-defs.ts +1 -2
  140. package/src/modes/components/settings-selector.ts +2 -7
  141. package/src/modes/components/status-line/git-utils.ts +25 -0
  142. package/src/modes/components/status-line.ts +10 -11
  143. package/src/modes/components/welcome.ts +2 -3
  144. package/src/modes/controllers/extension-ui-controller.ts +0 -27
  145. package/src/modes/controllers/selector-controller.ts +59 -11
  146. package/src/modes/interactive-mode.ts +4 -1
  147. package/src/modes/shared/agent-wire/scopes.ts +1 -1
  148. package/src/modes/theme/defaults/gruvbox-dark.json +99 -0
  149. package/src/modes/theme/defaults/index.ts +2 -0
  150. package/src/modes/theme/theme.ts +0 -4
  151. package/src/modes/utils/hotkeys-markdown.ts +1 -1
  152. package/src/notifications/html-format.ts +38 -0
  153. package/src/notifications/index.ts +242 -12
  154. package/src/notifications/lifecycle-commands.ts +238 -0
  155. package/src/notifications/lifecycle-control-runtime.ts +405 -0
  156. package/src/notifications/lifecycle-orchestrator.ts +358 -0
  157. package/src/notifications/operator-runtime.ts +171 -0
  158. package/src/notifications/rate-limit-pool.ts +19 -0
  159. package/src/notifications/recent-activity.ts +132 -0
  160. package/src/notifications/telegram-daemon.ts +778 -257
  161. package/src/notifications/telegram-reference.ts +25 -7
  162. package/src/notifications/topic-registry.ts +23 -9
  163. package/src/prompts/agents/executor.md +2 -2
  164. package/src/prompts/system/system-prompt.md +2 -2
  165. package/src/prompts/tools/cron.md +5 -3
  166. package/src/prompts/tools/read.md +1 -1
  167. package/src/runtime-mcp/transports/stdio.ts +38 -4
  168. package/src/runtime-mcp/types.ts +7 -0
  169. package/src/sdk.ts +162 -10
  170. package/src/session/agent-session.ts +210 -74
  171. package/src/session/blob-store.ts +196 -8
  172. package/src/session/session-manager.ts +762 -12
  173. package/src/skc-runtime/launch-tmux.ts +68 -19
  174. package/src/skc-runtime/psmux-detect.ts +239 -0
  175. package/src/skc-runtime/state-renderer.ts +13 -0
  176. package/src/skc-runtime/team-runtime.ts +56 -23
  177. package/src/skc-runtime/tmux-common.ts +88 -4
  178. package/src/skc-runtime/tmux-sessions.ts +111 -9
  179. package/src/skc-runtime/ultragoal-guard.ts +192 -8
  180. package/src/skc-runtime/ultragoal-runtime.ts +296 -16
  181. package/src/slash-commands/builtin-registry.ts +23 -3
  182. package/src/slash-commands/helpers/fast-status-report.ts +13 -3
  183. package/src/slash-commands/helpers/parse.ts +2 -1
  184. package/src/system-prompt.ts +9 -0
  185. package/src/task/executor.ts +31 -7
  186. package/src/task/index.ts +2 -0
  187. package/src/tools/ask.ts +5 -1
  188. package/src/tools/bash.ts +9 -0
  189. package/src/tools/browser/tab-supervisor.ts +86 -2
  190. package/src/tools/composer-bash-policy.ts +96 -0
  191. package/src/tools/computer-gc.ts +66 -0
  192. package/src/tools/computer.ts +2 -0
  193. package/src/tools/cron.ts +75 -112
  194. package/src/tools/fetch.ts +18 -2
  195. package/src/tools/index.ts +5 -9
  196. package/src/tools/read.ts +25 -55
  197. package/src/tools/renderers.ts +0 -2
  198. package/src/tools/resource-gc.ts +291 -0
  199. package/src/tools/ultragoal-ask-guard.ts +7 -1
  200. package/src/utils/changelog.ts +8 -0
  201. package/src/web/insane/url-guard.ts +18 -14
  202. package/src/web/scrapers/types.ts +143 -45
  203. package/src/web/scrapers/utils.ts +70 -19
  204. package/src/web/search/index.ts +1 -0
  205. package/src/web/search/providers/utils.ts +22 -5
  206. package/vendor/insane-search/MANIFEST.json +3 -1
  207. package/vendor/insane-search/engine/__init__.py +14 -0
  208. package/vendor/insane-search/engine/content_safety.py +151 -0
  209. package/vendor/insane-search/engine/fetch_chain.py +32 -0
  210. package/vendor/insane-search/engine/tests/test_u8.py +216 -0
  211. package/dist/types/tools/inspect-image-renderer.d.ts +0 -26
  212. package/dist/types/tools/inspect-image.d.ts +0 -31
  213. package/src/prompts/tools/inspect-image-system.md +0 -20
  214. package/src/prompts/tools/inspect-image.md +0 -32
  215. package/src/tools/inspect-image-renderer.ts +0 -103
  216. package/src/tools/inspect-image.ts +0 -172
package/bin/skc.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env bun
2
+ import { runCli } from "@sayknow-cli/coding-agent/cli";
3
+
4
+ await runCli(process.argv.slice(2));
@@ -0,0 +1,25 @@
1
+ import type { MCPServerConfig } from "../runtime-mcp/types";
2
+ export type MCPAction = "add" | "list" | "remove";
3
+ export interface MCPCommandArgs {
4
+ action: MCPAction;
5
+ name?: string;
6
+ commandArgs?: string[];
7
+ flags: {
8
+ project?: boolean;
9
+ force?: boolean;
10
+ json?: boolean;
11
+ type?: "stdio" | "http" | "sse";
12
+ command?: string;
13
+ url?: string;
14
+ arg?: string[];
15
+ env?: string[];
16
+ header?: string[];
17
+ cwd?: string;
18
+ timeout?: number;
19
+ };
20
+ cwd?: string;
21
+ }
22
+ export declare class MCPArgsError extends Error {
23
+ }
24
+ export declare function redactMCPServerConfig(config: MCPServerConfig): MCPServerConfig;
25
+ export declare function runMCPCommand(args: MCPCommandArgs): Promise<void>;
@@ -17,6 +17,8 @@ export interface PluginCommandArgs {
17
17
  disable?: string;
18
18
  set?: string;
19
19
  scope?: "user" | "project";
20
+ user?: boolean;
21
+ project?: boolean;
20
22
  };
21
23
  }
22
24
  /**
@@ -1,3 +1,9 @@
1
1
  #!/usr/bin/env bun
2
+ /**
3
+ * CLI entry point — registers all commands explicitly and delegates to the
4
+ * lightweight CLI runner from pi-utils.
5
+ */
6
+ import { type CommandEntry } from "@sayknow-cli/utils/cli";
7
+ export declare const commands: CommandEntry[];
2
8
  /** Run the CLI with the given argv (no `process.argv` prefix). */
3
9
  export declare function runCli(argv: string[]): Promise<void>;
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Direct MCP server registration for standalone SKC.
3
+ */
4
+ import { Command } from "@sayknow-cli/utils/cli";
5
+ import { type MCPAction } from "../cli/mcp-cli";
6
+ export default class MCP extends Command {
7
+ static description: string;
8
+ static delegateHelp: boolean;
9
+ static examples: string[];
10
+ static args: {
11
+ action: import("@sayknow-cli/utils/cli").ArgDescriptor & {
12
+ description: string;
13
+ required: false;
14
+ options: MCPAction[];
15
+ };
16
+ name: import("@sayknow-cli/utils/cli").ArgDescriptor & {
17
+ description: string;
18
+ required: false;
19
+ };
20
+ commandArgs: import("@sayknow-cli/utils/cli").ArgDescriptor & {
21
+ description: string;
22
+ required: false;
23
+ multiple: true;
24
+ };
25
+ };
26
+ static flags: {
27
+ project: import("@sayknow-cli/utils/cli").FlagDescriptor<"boolean"> & {
28
+ description: string;
29
+ };
30
+ force: import("@sayknow-cli/utils/cli").FlagDescriptor<"boolean"> & {
31
+ description: string;
32
+ default: boolean;
33
+ };
34
+ json: import("@sayknow-cli/utils/cli").FlagDescriptor<"boolean"> & {
35
+ char: string;
36
+ description: string;
37
+ default: boolean;
38
+ };
39
+ type: import("@sayknow-cli/utils/cli").FlagDescriptor<"string"> & {
40
+ description: string;
41
+ options: string[];
42
+ };
43
+ command: import("@sayknow-cli/utils/cli").FlagDescriptor<"string"> & {
44
+ description: string;
45
+ };
46
+ url: import("@sayknow-cli/utils/cli").FlagDescriptor<"string"> & {
47
+ description: string;
48
+ };
49
+ arg: import("@sayknow-cli/utils/cli").FlagDescriptor<"string"> & {
50
+ description: string;
51
+ multiple: true;
52
+ };
53
+ env: import("@sayknow-cli/utils/cli").FlagDescriptor<"string"> & {
54
+ description: string;
55
+ multiple: true;
56
+ };
57
+ header: import("@sayknow-cli/utils/cli").FlagDescriptor<"string"> & {
58
+ description: string;
59
+ multiple: true;
60
+ };
61
+ cwd: import("@sayknow-cli/utils/cli").FlagDescriptor<"string"> & {
62
+ description: string;
63
+ };
64
+ timeout: import("@sayknow-cli/utils/cli").FlagDescriptor<"integer"> & {
65
+ description: string;
66
+ };
67
+ };
68
+ run(): Promise<void>;
69
+ private printHelp;
70
+ }
@@ -47,6 +47,12 @@ export default class Plugin extends Command {
47
47
  description: string;
48
48
  options: string[];
49
49
  };
50
+ user: import("@sayknow-cli/utils/cli").FlagDescriptor<"boolean"> & {
51
+ description: string;
52
+ };
53
+ project: import("@sayknow-cli/utils/cli").FlagDescriptor<"boolean"> & {
54
+ description: string;
55
+ };
50
56
  };
51
57
  run(): Promise<void>;
52
58
  }
@@ -18,6 +18,12 @@ export default class Session extends Command {
18
18
  description: string;
19
19
  default: boolean;
20
20
  };
21
+ "session-id": import("@sayknow-cli/utils/cli").FlagDescriptor<"string"> & {
22
+ description: string;
23
+ };
24
+ "state-file": import("@sayknow-cli/utils/cli").FlagDescriptor<"string"> & {
25
+ description: string;
26
+ };
21
27
  };
22
28
  static examples: string[];
23
29
  run(): Promise<void>;
@@ -230,8 +230,8 @@ export declare const KEYBINDINGS: {
230
230
  readonly description: "Open external editor";
231
231
  };
232
232
  readonly "app.message.followUp": {
233
- readonly defaultKeys: "ctrl+enter";
234
- readonly description: "Send follow-up message";
233
+ readonly defaultKeys: [];
234
+ readonly description: "Send follow-up message (no default; Ctrl+Enter inserts a newline)";
235
235
  };
236
236
  readonly "app.message.queue": {
237
237
  readonly defaultKeys: "alt+enter";
@@ -1,7 +1,7 @@
1
1
  import type { ThinkingLevel } from "@sayknow-cli/agent-core";
2
2
  import type { Api, Model } from "@sayknow-cli/ai";
3
3
  import type { AgentSession } from "../session/agent-session";
4
- import { type ModelRegistry } from "./model-registry";
4
+ import { type ModelRegistry, type SkcModelAssignmentTargetId } from "./model-registry";
5
5
  import type { Settings } from "./settings";
6
6
  type ModelProfileActivationSession = Pick<AgentSession, "model" | "thinkingLevel" | "sessionId"> & {
7
7
  setModelTemporary?: AgentSession["setModelTemporary"];
@@ -40,6 +40,13 @@ export interface PreparedModelProfileActivation {
40
40
  */
41
41
  previousSessionDefaultModel: string | undefined;
42
42
  }
43
+ export interface MaterializeModelProfileAssignmentOptions {
44
+ session: Pick<ModelProfileActivationSession, "model" | "thinkingLevel" | "setActiveModelProfile" | "getActiveModelProfile">;
45
+ settings: Pick<Settings, "clearOverride" | "get" | "override" | "set">;
46
+ role: SkcModelAssignmentTargetId;
47
+ selector: string;
48
+ }
49
+ export declare function materializeActiveModelProfileAssignment(options: MaterializeModelProfileAssignmentOptions): boolean;
43
50
  export declare function formatModelProfileCredentialError(profileName: string, providers: readonly string[]): string;
44
51
  export declare function prepareModelProfileActivation(options: PrepareModelProfileActivationOptions): Promise<PreparedModelProfileActivation>;
45
52
  export declare function applyPreparedModelProfileActivation(prepared: PreparedModelProfileActivation, options?: {
@@ -20,8 +20,8 @@ export interface ModelProfileDefinition {
20
20
  }
21
21
  export interface ResolvedProfileBinding {
22
22
  defaultSelector?: string;
23
- modelRoles: Partial<Record<"vision", string>>;
24
- agentModelOverrides: Partial<Record<Exclude<ModelProfileRole, "default" | "vision">, string>>;
23
+ modelRoles: Record<string, string>;
24
+ agentModelOverrides: Partial<Record<Exclude<ModelProfileRole, "default">, string>>;
25
25
  }
26
26
  export declare function deriveModelProfileMappedProviders(definition: Pick<ModelProfileDefinition, "modelMapping">): string[];
27
27
  export declare function aggregateModelProfileRequiredProviders(requiredProviders: readonly string[], definition: Pick<ModelProfileDefinition, "modelMapping">): string[];
@@ -11,7 +11,7 @@ import { type Settings } from "./settings";
11
11
  export type { CanonicalModelIndex, CanonicalModelRecord, CanonicalModelVariant, ModelEquivalenceConfig };
12
12
  export declare const kNoAuth = "N/A";
13
13
  export declare function isAuthenticated(apiKey: string | undefined | null): apiKey is string;
14
- export type ModelRole = "default" | "vision";
14
+ export type ModelRole = "default";
15
15
  export interface ModelRoleInfo {
16
16
  tag?: string;
17
17
  name: string;
@@ -19,7 +19,7 @@ export interface ModelRoleInfo {
19
19
  }
20
20
  export declare const MODEL_ROLES: Record<ModelRole, ModelRoleInfo>;
21
21
  export declare const MODEL_ROLE_IDS: ModelRole[];
22
- export type SkcModelAssignmentTargetId = "default" | "vision" | "executor" | "architect" | "planner" | "critic";
22
+ export type SkcModelAssignmentTargetId = "default" | "executor" | "architect" | "planner" | "critic";
23
23
  export interface SkcModelAssignmentTargetInfo extends ModelRoleInfo {
24
24
  id: SkcModelAssignmentTargetId;
25
25
  settingsPath: "modelRoles" | "task.agentModelOverrides";
@@ -268,7 +268,7 @@ export declare const ModelsConfigFile: ConfigFile<{
268
268
  profiles?: Record<string, {
269
269
  required_providers: string[];
270
270
  display_name?: string | undefined;
271
- model_mapping: Partial<Record<"architect" | "critic" | "default" | "executor" | "planner" | "vision", string>>;
271
+ model_mapping: Partial<Record<"architect" | "critic" | "default" | "executor" | "planner", string>>;
272
272
  }> | undefined;
273
273
  }>;
274
274
  /** Provider override config (baseUrl, headers, apiKey, compat, transport) without custom models */
@@ -68,7 +68,6 @@ export declare const ProfileRoleSchema: z.ZodEnum<{
68
68
  default: "default";
69
69
  executor: "executor";
70
70
  planner: "planner";
71
- vision: "vision";
72
71
  }>;
73
72
  export declare const ProfileModelSelectorSchema: z.ZodString;
74
73
  export declare const ProfileModelMappingSchema: z.ZodRecord<z.ZodEnum<{
@@ -77,7 +76,6 @@ export declare const ProfileModelMappingSchema: z.ZodRecord<z.ZodEnum<{
77
76
  default: "default";
78
77
  executor: "executor";
79
78
  planner: "planner";
80
- vision: "vision";
81
79
  }> & z.core.$partial, z.ZodString>;
82
80
  export declare const ProfileDefinitionSchema: z.ZodObject<{
83
81
  required_providers: z.ZodArray<z.ZodString>;
@@ -88,7 +86,6 @@ export declare const ProfileDefinitionSchema: z.ZodObject<{
88
86
  default: "default";
89
87
  executor: "executor";
90
88
  planner: "planner";
91
- vision: "vision";
92
89
  }> & z.core.$partial, z.ZodString>;
93
90
  }, z.core.$strict>;
94
91
  export declare const ProfilesSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -100,7 +97,6 @@ export declare const ProfilesSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
100
97
  default: "default";
101
98
  executor: "executor";
102
99
  planner: "planner";
103
- vision: "vision";
104
100
  }> & z.core.$partial, z.ZodString>;
105
101
  }, z.core.$strict>>;
106
102
  export declare const ModelOverrideSchema: z.ZodObject<{
@@ -691,7 +687,6 @@ export declare const ModelsConfigSchema: z.ZodObject<{
691
687
  default: "default";
692
688
  executor: "executor";
693
689
  planner: "planner";
694
- vision: "vision";
695
690
  }> & z.core.$partial, z.ZodString>;
696
691
  }, z.core.$strict>>>;
697
692
  }, z.core.$strict>;
@@ -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" | "notifications" | "context" | "memory" | "editing" | "tools" | "tasks" | "providers";
13
+ export type SettingTab = "appearance" | "model" | "interaction" | "context" | "memory" | "editing" | "tools" | "tasks" | "providers";
14
14
  /** Tab display metadata - icon is resolved via theme.symbol() */
15
15
  export type TabMetadata = {
16
16
  label: string;
@@ -56,13 +56,10 @@ interface UiString extends UiBase {
56
56
  * - Omitted → renders as a free text input.
57
57
  */
58
58
  options?: ReadonlyArray<SubmenuOption> | "runtime";
59
- /** When true, the value is masked in the settings list display but edited in full. */
60
- secret?: boolean;
61
59
  }
62
60
  /** Wide ui shape exposed to consumers that walk the schema generically. */
63
61
  export type AnyUiMetadata = UiBase & {
64
62
  options?: ReadonlyArray<SubmenuOption> | "runtime";
65
- secret?: boolean;
66
63
  };
67
64
  interface BooleanDef {
68
65
  type: "boolean";
@@ -124,94 +121,39 @@ export declare const SETTINGS_SCHEMA: {
124
121
  readonly "notifications.enabled": {
125
122
  readonly type: "boolean";
126
123
  readonly default: false;
127
- readonly ui: {
128
- readonly tab: "notifications";
129
- readonly label: "Enabled";
130
- readonly description: "Master switch for notifications. Requires at least one adapter (Telegram/Discord/Slack) configured with a token and a chat/channel to actually deliver.";
131
- };
132
124
  };
133
125
  readonly "notifications.telegram.botToken": {
134
126
  readonly type: "string";
135
127
  readonly default: undefined;
136
- readonly ui: {
137
- readonly tab: "notifications";
138
- readonly label: "Telegram bot token";
139
- readonly description: "Telegram BotFather HTTP API token. Stored locally; shown masked.";
140
- readonly secret: true;
141
- };
142
128
  };
143
129
  readonly "notifications.telegram.chatId": {
144
130
  readonly type: "string";
145
131
  readonly default: undefined;
146
- readonly ui: {
147
- readonly tab: "notifications";
148
- readonly label: "Telegram chat ID";
149
- readonly description: "Target chat. For end-to-end per-session delivery this must be a forum-enabled supergroup the bot can manage; a private chat id is only enough for setup/status.";
150
- };
151
132
  };
152
133
  readonly "notifications.discord.botToken": {
153
134
  readonly type: "string";
154
135
  readonly default: undefined;
155
- readonly ui: {
156
- readonly tab: "notifications";
157
- readonly label: "Discord bot token";
158
- readonly description: "Discord bot token for the notifications adapter. Stored locally; shown masked.";
159
- readonly secret: true;
160
- };
161
136
  };
162
137
  readonly "notifications.discord.channelId": {
163
138
  readonly type: "string";
164
139
  readonly default: undefined;
165
- readonly ui: {
166
- readonly tab: "notifications";
167
- readonly label: "Discord channel ID";
168
- readonly description: "Discord channel that receives notifications and routes replies back.";
169
- };
170
140
  };
171
141
  readonly "notifications.slack.botToken": {
172
142
  readonly type: "string";
173
143
  readonly default: undefined;
174
- readonly ui: {
175
- readonly tab: "notifications";
176
- readonly label: "Slack bot token";
177
- readonly description: "Slack bot token for the notifications adapter. Stored locally; shown masked.";
178
- readonly secret: true;
179
- };
180
144
  };
181
145
  readonly "notifications.slack.channelId": {
182
146
  readonly type: "string";
183
147
  readonly default: undefined;
184
- readonly ui: {
185
- readonly tab: "notifications";
186
- readonly label: "Slack channel ID";
187
- readonly description: "Slack channel that receives notifications and routes replies back.";
188
- };
189
148
  };
190
149
  readonly "notifications.redact": {
191
150
  readonly type: "boolean";
192
151
  readonly default: false;
193
- readonly ui: {
194
- readonly tab: "notifications";
195
- readonly label: "Redact";
196
- readonly description: "Strip idle summaries and streamed content before remote delivery. Ask prompts are always sent so they remain answerable.";
197
- };
198
152
  };
199
153
  readonly "notifications.verbosity": {
200
154
  readonly type: "string";
201
155
  readonly default: "lean";
202
156
  readonly validate: (value: string) => value is "lean" | "verbose";
203
- readonly ui: {
204
- readonly tab: "notifications";
205
- readonly label: "Verbosity";
206
- readonly description: "How much session context to stream to Telegram.";
207
- readonly options: readonly [{
208
- readonly value: "lean";
209
- readonly label: "Lean";
210
- }, {
211
- readonly value: "verbose";
212
- readonly label: "Verbose";
213
- }];
214
- };
215
157
  };
216
158
  readonly "notifications.daemon.idleTimeoutMs": {
217
159
  readonly type: "number";
@@ -2550,15 +2492,6 @@ export declare const SETTINGS_SCHEMA: {
2550
2492
  readonly description: "Enable the recipe tool when a justfile / package.json / Cargo.toml / Makefile / Taskfile is present";
2551
2493
  };
2552
2494
  };
2553
- readonly "inspect_image.enabled": {
2554
- readonly type: "boolean";
2555
- readonly default: false;
2556
- readonly ui: {
2557
- readonly tab: "tools";
2558
- readonly label: "Inspect Image";
2559
- readonly description: "Enable the inspect_image tool, delegating image understanding to a vision-capable model";
2560
- };
2561
- };
2562
2495
  readonly "checkpoint.enabled": {
2563
2496
  readonly type: "boolean";
2564
2497
  readonly default: false;
@@ -2652,6 +2585,16 @@ export declare const SETTINGS_SCHEMA: {
2652
2585
  readonly description: "Ordered fallback web search providers after the active model native provider";
2653
2586
  };
2654
2587
  };
2588
+ readonly "web_search.timeout": {
2589
+ readonly type: "number";
2590
+ readonly default: 300;
2591
+ readonly validate: (value: number) => boolean;
2592
+ readonly ui: {
2593
+ readonly tab: "tools";
2594
+ readonly label: "Web Search Timeout";
2595
+ readonly description: "Hard timeout in seconds for a single web search request (default 300)";
2596
+ };
2597
+ };
2655
2598
  readonly "browser.enabled": {
2656
2599
  readonly type: "boolean";
2657
2600
  readonly default: true;
@@ -2679,6 +2622,45 @@ export declare const SETTINGS_SCHEMA: {
2679
2622
  readonly description: "Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android)";
2680
2623
  };
2681
2624
  };
2625
+ readonly "browser.gc.enabled": {
2626
+ readonly type: "boolean";
2627
+ readonly default: true;
2628
+ readonly ui: {
2629
+ readonly tab: "tools";
2630
+ readonly label: "Browser Tab GC";
2631
+ readonly description: "Automatically reclaim idle, unheld SKC-managed headless/spawned browser tabs.";
2632
+ };
2633
+ };
2634
+ readonly "browser.gc.idleMs": {
2635
+ readonly type: "number";
2636
+ readonly default: 300000;
2637
+ readonly validate: (value: number) => boolean;
2638
+ readonly ui: {
2639
+ readonly tab: "tools";
2640
+ readonly label: "Browser Tab GC Idle (ms)";
2641
+ readonly description: "Evict headless/spawned tabs idle longer than this many milliseconds.";
2642
+ };
2643
+ };
2644
+ readonly "browser.gc.rssLimitMb": {
2645
+ readonly type: "number";
2646
+ readonly default: 1536;
2647
+ readonly validate: (value: number) => boolean;
2648
+ readonly ui: {
2649
+ readonly tab: "tools";
2650
+ readonly label: "Browser Tab GC RSS Limit (MB)";
2651
+ readonly description: "Parent-process RSS (MB) above which idle tabs are opportunistically evicted LRU.";
2652
+ };
2653
+ };
2654
+ readonly "resourceGc.sweepIntervalMs": {
2655
+ readonly type: "number";
2656
+ readonly default: 30000;
2657
+ readonly validate: (value: number) => boolean;
2658
+ readonly ui: {
2659
+ readonly tab: "tools";
2660
+ readonly label: "Resource GC Sweep Interval (ms)";
2661
+ readonly description: "How often the resource GC sweeps browser tabs and stale screenshot directories.";
2662
+ };
2663
+ };
2682
2664
  readonly "computer.enabled": {
2683
2665
  readonly type: "boolean";
2684
2666
  readonly default: false;
@@ -2733,6 +2715,35 @@ export declare const SETTINGS_SCHEMA: {
2733
2715
  readonly description: "Persist audit records for enabled computer-use actions.";
2734
2716
  };
2735
2717
  };
2718
+ readonly "computer.screenshotGc.enabled": {
2719
+ readonly type: "boolean";
2720
+ readonly default: true;
2721
+ readonly ui: {
2722
+ readonly tab: "tools";
2723
+ readonly label: "Computer Screenshot GC";
2724
+ readonly description: "Delete stale computer-use screenshot fallback directories on disk.";
2725
+ };
2726
+ };
2727
+ readonly "computer.screenshotGc.staleMs": {
2728
+ readonly type: "number";
2729
+ readonly default: 43200000;
2730
+ readonly validate: (value: number) => boolean;
2731
+ readonly ui: {
2732
+ readonly tab: "tools";
2733
+ readonly label: "Computer Screenshot GC Stale Age (ms)";
2734
+ readonly description: "Remove screenshot fallback directories whose mtime is older than this many milliseconds.";
2735
+ };
2736
+ };
2737
+ readonly "computer.screenshotGc.scanIntervalMs": {
2738
+ readonly type: "number";
2739
+ readonly default: 1800000;
2740
+ readonly validate: (value: number) => boolean;
2741
+ readonly ui: {
2742
+ readonly tab: "tools";
2743
+ readonly label: "Computer Screenshot GC Scan Interval (ms)";
2744
+ readonly description: "Minimum interval between os.tmpdir scans for stale screenshot directories.";
2745
+ };
2746
+ };
2736
2747
  readonly "tools.intentTracing": {
2737
2748
  readonly type: "boolean";
2738
2749
  readonly default: true;
@@ -0,0 +1,11 @@
1
+ export type DeepInterviewPlaintextAskLeakOption = "Yes, crystallize" | "Adjust wording" | "Missing scope";
2
+ export type DeepInterviewPlaintextAskLeakResult = {
3
+ kind: "deep_interview_plaintext_ask_leak";
4
+ matchedOptions: DeepInterviewPlaintextAskLeakOption[];
5
+ signals: {
6
+ optionsHeading: true;
7
+ restateIntent: true;
8
+ deepInterviewContext: boolean;
9
+ };
10
+ };
11
+ export declare function detectDeepInterviewPlaintextAskLeak(text: string): DeepInterviewPlaintextAskLeakResult | null;