@pellux/goodvibes-sdk 0.18.28 → 0.18.30
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/dist/_internal/platform/agents/orchestrator-runner.js +1 -1
- package/dist/_internal/platform/bookmarks/manager.d.ts +1 -1
- package/dist/_internal/platform/bookmarks/manager.d.ts.map +1 -1
- package/dist/_internal/platform/channels/surface-registry.js +3 -3
- package/dist/_internal/platform/config/api-keys.d.ts +29 -0
- package/dist/_internal/platform/config/api-keys.d.ts.map +1 -0
- package/dist/_internal/platform/config/api-keys.js +153 -0
- package/dist/_internal/platform/config/index.d.ts +1 -13
- package/dist/_internal/platform/config/index.d.ts.map +1 -1
- package/dist/_internal/platform/config/index.js +1 -138
- package/dist/_internal/platform/config/schema-domain-core.d.ts +1 -0
- package/dist/_internal/platform/config/schema-domain-core.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema-domain-core.js +7 -0
- package/dist/_internal/platform/config/schema-types.d.ts +3 -2
- package/dist/_internal/platform/config/schema-types.d.ts.map +1 -1
- package/dist/_internal/platform/config/tool-llm.d.ts.map +1 -1
- package/dist/_internal/platform/config/tool-llm.js +3 -0
- package/dist/_internal/platform/core/conversation-diff.d.ts +6 -2
- package/dist/_internal/platform/core/conversation-diff.d.ts.map +1 -1
- package/dist/_internal/platform/core/conversation.d.ts +13 -5
- package/dist/_internal/platform/core/conversation.d.ts.map +1 -1
- package/dist/_internal/platform/core/conversation.js +35 -1
- package/dist/_internal/platform/pairing/companion-token.d.ts +45 -0
- package/dist/_internal/platform/pairing/companion-token.d.ts.map +1 -0
- package/dist/_internal/platform/pairing/companion-token.js +74 -0
- package/dist/_internal/platform/pairing/connection-info.d.ts +10 -0
- package/dist/_internal/platform/pairing/connection-info.d.ts.map +1 -0
- package/dist/_internal/platform/pairing/connection-info.js +27 -0
- package/dist/_internal/platform/pairing/index.d.ts +6 -0
- package/dist/_internal/platform/pairing/index.d.ts.map +1 -0
- package/dist/_internal/platform/pairing/index.js +3 -0
- package/dist/_internal/platform/pairing/qr-generator.d.ts +20 -0
- package/dist/_internal/platform/pairing/qr-generator.d.ts.map +1 -0
- package/dist/_internal/platform/pairing/qr-generator.js +452 -0
- package/dist/_internal/platform/plugins/loader.d.ts +5 -1
- package/dist/_internal/platform/plugins/loader.d.ts.map +1 -1
- package/dist/_internal/platform/plugins/loader.js +7 -3
- package/dist/_internal/platform/runtime/bootstrap-hook-bridge.d.ts +10 -0
- package/dist/_internal/platform/runtime/bootstrap-hook-bridge.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/bootstrap-hook-bridge.js +143 -0
- package/dist/_internal/platform/runtime/diagnostics/panels/panel-resources.d.ts +5 -5
- package/dist/_internal/platform/runtime/diagnostics/panels/panel-resources.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/diagnostics/panels/panel-resources.js +3 -3
- package/dist/_internal/platform/runtime/diagnostics/types.d.ts +26 -13
- package/dist/_internal/platform/runtime/diagnostics/types.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/diagnostics/types.js +4 -2
- package/dist/_internal/platform/runtime/mutable-runtime-state.d.ts +14 -0
- package/dist/_internal/platform/runtime/mutable-runtime-state.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/mutable-runtime-state.js +1 -0
- package/dist/_internal/platform/runtime/ops/playbooks/permission-deadlock.js +2 -2
- package/dist/_internal/platform/runtime/perf/component-contracts.d.ts +114 -0
- package/dist/_internal/platform/runtime/perf/component-contracts.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/perf/component-contracts.js +104 -0
- package/dist/_internal/platform/runtime/perf/component-health-monitor.d.ts +98 -0
- package/dist/_internal/platform/runtime/perf/component-health-monitor.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/perf/component-health-monitor.js +248 -0
- package/dist/_internal/platform/runtime/perf/index.d.ts +6 -3
- package/dist/_internal/platform/runtime/perf/index.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/perf/index.js +4 -2
- package/dist/_internal/platform/runtime/perf/panel-contracts.d.ts +6 -90
- package/dist/_internal/platform/runtime/perf/panel-contracts.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/perf/panel-contracts.js +4 -83
- package/dist/_internal/platform/runtime/perf/panel-health-monitor.d.ts +4 -88
- package/dist/_internal/platform/runtime/perf/panel-health-monitor.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/perf/panel-health-monitor.js +4 -236
- package/dist/_internal/platform/runtime/service-queries.d.ts +3 -0
- package/dist/_internal/platform/runtime/service-queries.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/service-queries.js +1 -0
- package/dist/_internal/platform/runtime/services.d.ts +2 -2
- package/dist/_internal/platform/runtime/services.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/services.js +3 -3
- package/dist/_internal/platform/runtime/session-return-context.js +1 -1
- package/dist/_internal/platform/runtime/shell-command-services.d.ts +2 -2
- package/dist/_internal/platform/runtime/shell-command-services.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/shell-command-services.js +2 -2
- package/dist/_internal/platform/runtime/shell-command-workspace.d.ts +2 -2
- package/dist/_internal/platform/runtime/shell-command-workspace.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/shell-command-workspace.js +2 -2
- package/dist/_internal/platform/runtime/store/domains/index.d.ts +2 -0
- package/dist/_internal/platform/runtime/store/domains/index.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/store/domains/index.js +1 -0
- package/dist/_internal/platform/runtime/store/selectors/index.d.ts +27 -14
- package/dist/_internal/platform/runtime/store/selectors/index.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/store/selectors/index.js +35 -25
- package/dist/_internal/platform/runtime/store/state.d.ts +3 -4
- package/dist/_internal/platform/runtime/store/state.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/store/state.js +3 -4
- package/dist/_internal/platform/runtime/system-message-policy.d.ts +18 -0
- package/dist/_internal/platform/runtime/system-message-policy.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/system-message-policy.js +35 -0
- package/dist/_internal/platform/utils/clipboard.d.ts +3 -2
- package/dist/_internal/platform/utils/clipboard.d.ts.map +1 -1
- package/dist/_internal/platform/utils/clipboard.js +0 -17
- package/dist/_internal/platform/utils/notify.d.ts.map +1 -1
- package/dist/_internal/platform/utils/notify.js +4 -1
- package/dist/_internal/platform/utils/terminal-width.d.ts +13 -0
- package/dist/_internal/platform/utils/terminal-width.d.ts.map +1 -1
- package/dist/_internal/platform/utils/terminal-width.js +13 -0
- package/dist/_internal/platform/version.js +1 -1
- package/package.json +1 -1
- package/dist/_internal/platform/core/history.d.ts +0 -22
- package/dist/_internal/platform/core/history.d.ts.map +0 -1
- package/dist/_internal/platform/core/history.js +0 -43
- package/dist/_internal/platform/types/grid.d.ts +0 -27
- package/dist/_internal/platform/types/grid.d.ts.map +0 -1
- package/dist/_internal/platform/types/grid.js +0 -26
- package/dist/_internal/platform/utils/splash-lines.d.ts +0 -8
- package/dist/_internal/platform/utils/splash-lines.d.ts.map +0 -1
- package/dist/_internal/platform/utils/splash-lines.js +0 -32
|
@@ -264,7 +264,7 @@ export async function runAgentTask(context, record) {
|
|
|
264
264
|
const toolTokens = toolDefinitions.length > 0
|
|
265
265
|
? estimateTokens(JSON.stringify(toolDefinitions))
|
|
266
266
|
: 0;
|
|
267
|
-
conversation = new ConversationManager(
|
|
267
|
+
conversation = new ConversationManager();
|
|
268
268
|
conversation.addUserMessage(record.task);
|
|
269
269
|
let systemPrompt = buildOrchestratorSystemPrompt(record, undefined, context);
|
|
270
270
|
let continueLoop = true;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* BookmarkEntry - Metadata for a saved bookmark.
|
|
3
3
|
*/
|
|
4
4
|
export interface BookmarkEntry {
|
|
5
|
-
/** Stable
|
|
5
|
+
/** Stable key identifying the block (e.g. 'msg_3_code_1'). */
|
|
6
6
|
key: string;
|
|
7
7
|
/** Human-readable label (block type + short excerpt). */
|
|
8
8
|
label: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/bookmarks/manager.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/bookmarks/manager.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM;IAI3B;;;OAGG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAcnD;;OAEG;IACI,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzC;;OAEG;IACI,IAAI,IAAI,aAAa,EAAE;IAI9B;;OAEG;IACI,KAAK,IAAI,IAAI;IAIpB;;;OAGG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAgBzD;;OAEG;IACI,cAAc,IAAI,MAAM,EAAE;IAYjC;;OAEG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAclD"}
|
|
@@ -27,7 +27,7 @@ export class SurfaceRegistry {
|
|
|
27
27
|
const pluginDescriptors = this.pluginRegistry?.listDescriptors() ?? [];
|
|
28
28
|
const enabledForSurface = (surface) => {
|
|
29
29
|
if (surface === 'tui')
|
|
30
|
-
return
|
|
30
|
+
return this.configManager.getCategory('surfaces').tui?.enabled !== false;
|
|
31
31
|
if (surface === 'web')
|
|
32
32
|
return Boolean(this.configManager.get('web.enabled') || this.configManager.get('controlPlane.enabled'));
|
|
33
33
|
if (surface === 'slack')
|
|
@@ -104,8 +104,8 @@ export class SurfaceRegistry {
|
|
|
104
104
|
id: 'surface:tui',
|
|
105
105
|
kind: 'tui',
|
|
106
106
|
label: 'Terminal UI',
|
|
107
|
-
enabled:
|
|
108
|
-
state: 'healthy',
|
|
107
|
+
enabled: enabledForSurface('tui'),
|
|
108
|
+
state: enabledForSurface('tui') ? 'healthy' : 'disabled',
|
|
109
109
|
configuredAt,
|
|
110
110
|
lastSeenAt: configuredAt,
|
|
111
111
|
capabilities: ['ingress', 'egress', 'session_binding'],
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API key resolution for all supported providers.
|
|
3
|
+
*
|
|
4
|
+
* Platform-level code — no surface/TUI dependencies.
|
|
5
|
+
* Used by every GoodVibes surface (TUI, CLI, web, etc.).
|
|
6
|
+
*
|
|
7
|
+
* Provides:
|
|
8
|
+
* - loadEnvApiKeys() — synchronous env-var scan, returns configured keys
|
|
9
|
+
* - getConfiguredApiKeys() — public alias for loadEnvApiKeys
|
|
10
|
+
* - resolveApiKeys() — three-tier async resolution: env → SecretsManager → skip
|
|
11
|
+
*/
|
|
12
|
+
import { SecretsManager } from './secrets.js';
|
|
13
|
+
/**
|
|
14
|
+
* Returns all provider API keys that are currently set in the environment.
|
|
15
|
+
* Pure env-var read — synchronous, no I/O.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getConfiguredApiKeys(): Record<string, string>;
|
|
18
|
+
/**
|
|
19
|
+
* resolveApiKeys — three-tier async resolution for all provider API keys.
|
|
20
|
+
*
|
|
21
|
+
* Resolution order per key:
|
|
22
|
+
* 1. Environment variable (process.env)
|
|
23
|
+
* 2. SecretsManager hierarchy-aware stores (secure preferred, plaintext policy-aware)
|
|
24
|
+
* 3. Omitted from result (null → skip)
|
|
25
|
+
*
|
|
26
|
+
* Returns a map of provider → apiKey for all providers where a key is found.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveApiKeys(secrets: Pick<SecretsManager, 'get'>): Promise<Record<string, string>>;
|
|
29
|
+
//# sourceMappingURL=api-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-keys.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/api-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE7D;AAwDD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,GACnC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkEjC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API key resolution for all supported providers.
|
|
3
|
+
*
|
|
4
|
+
* Platform-level code — no surface/TUI dependencies.
|
|
5
|
+
* Used by every GoodVibes surface (TUI, CLI, web, etc.).
|
|
6
|
+
*
|
|
7
|
+
* Provides:
|
|
8
|
+
* - loadEnvApiKeys() — synchronous env-var scan, returns configured keys
|
|
9
|
+
* - getConfiguredApiKeys() — public alias for loadEnvApiKeys
|
|
10
|
+
* - resolveApiKeys() — three-tier async resolution: env → SecretsManager → skip
|
|
11
|
+
*/
|
|
12
|
+
import { SecretsManager } from './secrets.js';
|
|
13
|
+
/**
|
|
14
|
+
* Returns all provider API keys that are currently set in the environment.
|
|
15
|
+
* Pure env-var read — synchronous, no I/O.
|
|
16
|
+
*/
|
|
17
|
+
export function getConfiguredApiKeys() {
|
|
18
|
+
return loadEnvApiKeys();
|
|
19
|
+
}
|
|
20
|
+
function loadEnvApiKeys() {
|
|
21
|
+
const keys = {};
|
|
22
|
+
const mapping = {
|
|
23
|
+
openai: 'OPENAI_API_KEY',
|
|
24
|
+
anthropic: 'ANTHROPIC_API_KEY',
|
|
25
|
+
gemini: 'GEMINI_API_KEY',
|
|
26
|
+
inceptionlabs: 'INCEPTION_API_KEY',
|
|
27
|
+
openrouter: 'OPENROUTER_API_KEY',
|
|
28
|
+
aihubmix: 'AIHUBMIX_API_KEY',
|
|
29
|
+
groq: 'GROQ_API_KEY',
|
|
30
|
+
cerebras: 'CEREBRAS_API_KEY',
|
|
31
|
+
mistral: 'MISTRAL_API_KEY',
|
|
32
|
+
'ollama-cloud': 'OLLAMA_CLOUD_API_KEY',
|
|
33
|
+
// Note: also checked as OLLAMA_API_KEY below
|
|
34
|
+
huggingface: 'HF_API_KEY',
|
|
35
|
+
nvidia: 'NVIDIA_API_KEY',
|
|
36
|
+
llm7: 'LLM7_API_KEY',
|
|
37
|
+
deepseek: 'DEEPSEEK_API_KEY',
|
|
38
|
+
fireworks: 'FIREWORKS_API_KEY',
|
|
39
|
+
'github-copilot': 'COPILOT_GITHUB_TOKEN',
|
|
40
|
+
'microsoft-foundry': 'AZURE_OPENAI_API_KEY',
|
|
41
|
+
minimax: 'MINIMAX_API_KEY',
|
|
42
|
+
moonshot: 'MOONSHOT_API_KEY',
|
|
43
|
+
qianfan: 'QIANFAN_API_KEY',
|
|
44
|
+
qwen: 'QWEN_API_KEY',
|
|
45
|
+
sglang: 'SGLANG_API_KEY',
|
|
46
|
+
stepfun: 'STEPFUN_API_KEY',
|
|
47
|
+
together: 'TOGETHER_API_KEY',
|
|
48
|
+
venice: 'VENICE_API_KEY',
|
|
49
|
+
volcengine: 'VOLCANO_ENGINE_API_KEY',
|
|
50
|
+
xai: 'XAI_API_KEY',
|
|
51
|
+
xiaomi: 'XIAOMI_API_KEY',
|
|
52
|
+
zai: 'ZAI_API_KEY',
|
|
53
|
+
'cloudflare-ai-gateway': 'CLOUDFLARE_AI_GATEWAY_API_KEY',
|
|
54
|
+
'vercel-ai-gateway': 'AI_GATEWAY_API_KEY',
|
|
55
|
+
litellm: 'LITELLM_API_KEY',
|
|
56
|
+
'copilot-proxy': 'COPILOT_PROXY_API_KEY',
|
|
57
|
+
};
|
|
58
|
+
for (const [prov, envVar] of Object.entries(mapping)) {
|
|
59
|
+
let value = process.env[envVar];
|
|
60
|
+
// Fallback env var names
|
|
61
|
+
if (!value && prov === 'gemini')
|
|
62
|
+
value = process.env['GOOGLE_API_KEY'] ?? process.env['GOOGLE_GEMINI_API_KEY'];
|
|
63
|
+
if (!value && prov === 'openai')
|
|
64
|
+
value = process.env['OPENAI_KEY'];
|
|
65
|
+
if (!value && prov === 'anthropic')
|
|
66
|
+
value = process.env['CLAUDE_API_KEY'];
|
|
67
|
+
if (!value && prov === 'ollama-cloud')
|
|
68
|
+
value = process.env['OLLAMA_API_KEY'];
|
|
69
|
+
if (!value && prov === 'huggingface')
|
|
70
|
+
value = process.env['HUGGINGFACE_API_KEY'] ?? process.env['HF_TOKEN'];
|
|
71
|
+
if (!value && prov === 'github-copilot')
|
|
72
|
+
value = process.env['GH_TOKEN'] ?? process.env['GITHUB_TOKEN'];
|
|
73
|
+
if (!value && prov === 'qwen')
|
|
74
|
+
value = process.env['DASHSCOPE_API_KEY'] ?? process.env['MODELSTUDIO_API_KEY'];
|
|
75
|
+
if (!value && prov === 'zai')
|
|
76
|
+
value = process.env['Z_AI_API_KEY'];
|
|
77
|
+
if (value)
|
|
78
|
+
keys[prov] = value;
|
|
79
|
+
}
|
|
80
|
+
return keys;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* resolveApiKeys — three-tier async resolution for all provider API keys.
|
|
84
|
+
*
|
|
85
|
+
* Resolution order per key:
|
|
86
|
+
* 1. Environment variable (process.env)
|
|
87
|
+
* 2. SecretsManager hierarchy-aware stores (secure preferred, plaintext policy-aware)
|
|
88
|
+
* 3. Omitted from result (null → skip)
|
|
89
|
+
*
|
|
90
|
+
* Returns a map of provider → apiKey for all providers where a key is found.
|
|
91
|
+
*/
|
|
92
|
+
export async function resolveApiKeys(secrets) {
|
|
93
|
+
const mapping = [
|
|
94
|
+
{ prov: 'openai', envVars: ['OPENAI_API_KEY', 'OPENAI_KEY'] },
|
|
95
|
+
{ prov: 'anthropic', envVars: ['ANTHROPIC_API_KEY', 'CLAUDE_API_KEY'] },
|
|
96
|
+
{ prov: 'gemini', envVars: ['GEMINI_API_KEY', 'GOOGLE_API_KEY', 'GOOGLE_GEMINI_API_KEY'] },
|
|
97
|
+
{ prov: 'inceptionlabs', envVars: ['INCEPTION_API_KEY'] },
|
|
98
|
+
{ prov: 'openrouter', envVars: ['OPENROUTER_API_KEY'] },
|
|
99
|
+
{ prov: 'aihubmix', envVars: ['AIHUBMIX_API_KEY'] },
|
|
100
|
+
{ prov: 'groq', envVars: ['GROQ_API_KEY'] },
|
|
101
|
+
{ prov: 'cerebras', envVars: ['CEREBRAS_API_KEY'] },
|
|
102
|
+
{ prov: 'mistral', envVars: ['MISTRAL_API_KEY'] },
|
|
103
|
+
{ prov: 'ollama-cloud', envVars: ['OLLAMA_CLOUD_API_KEY', 'OLLAMA_API_KEY'] },
|
|
104
|
+
{ prov: 'huggingface', envVars: ['HF_API_KEY', 'HUGGINGFACE_API_KEY', 'HF_TOKEN'] },
|
|
105
|
+
{ prov: 'nvidia', envVars: ['NVIDIA_API_KEY'] },
|
|
106
|
+
{ prov: 'llm7', envVars: ['LLM7_API_KEY'] },
|
|
107
|
+
{ prov: 'deepseek', envVars: ['DEEPSEEK_API_KEY'] },
|
|
108
|
+
{ prov: 'fireworks', envVars: ['FIREWORKS_API_KEY'] },
|
|
109
|
+
{ prov: 'github-copilot', envVars: ['COPILOT_GITHUB_TOKEN', 'GH_TOKEN', 'GITHUB_TOKEN'] },
|
|
110
|
+
{ prov: 'microsoft-foundry', envVars: ['AZURE_OPENAI_API_KEY'] },
|
|
111
|
+
{ prov: 'minimax', envVars: ['MINIMAX_API_KEY'] },
|
|
112
|
+
{ prov: 'moonshot', envVars: ['MOONSHOT_API_KEY'] },
|
|
113
|
+
{ prov: 'qianfan', envVars: ['QIANFAN_API_KEY'] },
|
|
114
|
+
{ prov: 'qwen', envVars: ['QWEN_API_KEY', 'DASHSCOPE_API_KEY', 'MODELSTUDIO_API_KEY'] },
|
|
115
|
+
{ prov: 'sglang', envVars: ['SGLANG_API_KEY'] },
|
|
116
|
+
{ prov: 'stepfun', envVars: ['STEPFUN_API_KEY'] },
|
|
117
|
+
{ prov: 'together', envVars: ['TOGETHER_API_KEY'] },
|
|
118
|
+
{ prov: 'venice', envVars: ['VENICE_API_KEY'] },
|
|
119
|
+
{ prov: 'volcengine', envVars: ['VOLCANO_ENGINE_API_KEY'] },
|
|
120
|
+
{ prov: 'xai', envVars: ['XAI_API_KEY'] },
|
|
121
|
+
{ prov: 'xiaomi', envVars: ['XIAOMI_API_KEY'] },
|
|
122
|
+
{ prov: 'zai', envVars: ['ZAI_API_KEY', 'Z_AI_API_KEY'] },
|
|
123
|
+
{ prov: 'cloudflare-ai-gateway', envVars: ['CLOUDFLARE_AI_GATEWAY_API_KEY'] },
|
|
124
|
+
{ prov: 'vercel-ai-gateway', envVars: ['AI_GATEWAY_API_KEY'] },
|
|
125
|
+
{ prov: 'litellm', envVars: ['LITELLM_API_KEY'] },
|
|
126
|
+
{ prov: 'copilot-proxy', envVars: ['COPILOT_PROXY_API_KEY'] },
|
|
127
|
+
];
|
|
128
|
+
const result = {};
|
|
129
|
+
for (const { prov, envVars } of mapping) {
|
|
130
|
+
// Tier 1: environment variables
|
|
131
|
+
let value = null;
|
|
132
|
+
for (const envVar of envVars) {
|
|
133
|
+
if (process.env[envVar]) {
|
|
134
|
+
value = process.env[envVar];
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Tier 2: SecretsManager hierarchy-aware secure/plaintext stores
|
|
139
|
+
if (value === null) {
|
|
140
|
+
for (const envVar of envVars) {
|
|
141
|
+
const stored = await secrets.get(envVar);
|
|
142
|
+
if (stored !== null) {
|
|
143
|
+
value = stored;
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (value !== null) {
|
|
149
|
+
result[prov] = value;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
@@ -12,7 +12,6 @@ export { DEFAULT_CONFIG, CONFIG_SCHEMA } from '@pellux/goodvibes-sdk/platform/co
|
|
|
12
12
|
export { ConfigError } from '@pellux/goodvibes-sdk/platform/types/errors';
|
|
13
13
|
import { ConfigManager } from './manager.js';
|
|
14
14
|
import type { GoodVibesConfig } from '@pellux/goodvibes-sdk/platform/config/schema';
|
|
15
|
-
import { SecretsManager } from './secrets.js';
|
|
16
15
|
export declare function getConfigSnapshot(configManager: Pick<ConfigManager, 'getRaw'>): Readonly<GoodVibesConfig>;
|
|
17
16
|
export declare function getConfiguredModelId(configManager: Pick<ConfigManager, 'get'>): string;
|
|
18
17
|
export declare function getConfiguredProviderId(configManager: Pick<ConfigManager, 'get'>): string;
|
|
@@ -20,16 +19,5 @@ export declare function getConfiguredEmbeddingProviderId(configManager: Pick<Con
|
|
|
20
19
|
export declare function isAutoApproveEnabled(configManager: Pick<ConfigManager, 'get'>): boolean;
|
|
21
20
|
export declare function getWorkingDirectory(configManager: Pick<ConfigManager, 'getWorkingDirectory'>): string | null;
|
|
22
21
|
export declare function getConfiguredSystemPrompt(configManager: Pick<ConfigManager, 'get'>): string | undefined;
|
|
23
|
-
export
|
|
24
|
-
/**
|
|
25
|
-
* resolveApiKeys — three-tier async resolution for all provider API keys.
|
|
26
|
-
*
|
|
27
|
-
* Resolution order per key:
|
|
28
|
-
* 1. Environment variable (process.env)
|
|
29
|
-
* 2. SecretsManager hierarchy-aware stores (secure preferred, plaintext policy-aware)
|
|
30
|
-
* 3. Omitted from result (null → skip)
|
|
31
|
-
*
|
|
32
|
-
* Returns a map of provider → apiKey for all providers where a key is found.
|
|
33
|
-
*/
|
|
34
|
-
export declare function resolveApiKeys(secrets: Pick<SecretsManager, 'get'>): Promise<Record<string, string>>;
|
|
22
|
+
export { getConfiguredApiKeys, resolveApiKeys } from './api-keys.js';
|
|
35
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACzM,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACzM,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAIpF,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAEzG;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM,CAEtF;AAED,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM,CAEzF;AAED,wBAAgB,gCAAgC,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM,CAElG;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,OAAO,CAEvF;AAED,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC,GAAG,MAAM,GAAG,IAAI,CAE5G;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM,GAAG,SAAS,CASvG;AAED,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -10,7 +10,6 @@ export { DEFAULT_CONFIG, CONFIG_SCHEMA } from '@pellux/goodvibes-sdk/platform/co
|
|
|
10
10
|
export { ConfigError } from '@pellux/goodvibes-sdk/platform/types/errors';
|
|
11
11
|
import { readFileSync } from 'fs';
|
|
12
12
|
import { ConfigManager } from './manager.js';
|
|
13
|
-
import { SecretsManager } from './secrets.js';
|
|
14
13
|
import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
|
|
15
14
|
import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
|
|
16
15
|
export function getConfigSnapshot(configManager) {
|
|
@@ -43,140 +42,4 @@ export function getConfiguredSystemPrompt(configManager) {
|
|
|
43
42
|
return undefined;
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
|
-
export
|
|
47
|
-
return loadEnvApiKeys();
|
|
48
|
-
}
|
|
49
|
-
function loadEnvApiKeys() {
|
|
50
|
-
const keys = {};
|
|
51
|
-
const mapping = {
|
|
52
|
-
openai: 'OPENAI_API_KEY',
|
|
53
|
-
anthropic: 'ANTHROPIC_API_KEY',
|
|
54
|
-
gemini: 'GEMINI_API_KEY',
|
|
55
|
-
inceptionlabs: 'INCEPTION_API_KEY',
|
|
56
|
-
openrouter: 'OPENROUTER_API_KEY',
|
|
57
|
-
aihubmix: 'AIHUBMIX_API_KEY',
|
|
58
|
-
groq: 'GROQ_API_KEY',
|
|
59
|
-
cerebras: 'CEREBRAS_API_KEY',
|
|
60
|
-
mistral: 'MISTRAL_API_KEY',
|
|
61
|
-
'ollama-cloud': 'OLLAMA_CLOUD_API_KEY',
|
|
62
|
-
// Note: also checked as OLLAMA_API_KEY below
|
|
63
|
-
huggingface: 'HF_API_KEY',
|
|
64
|
-
nvidia: 'NVIDIA_API_KEY',
|
|
65
|
-
llm7: 'LLM7_API_KEY',
|
|
66
|
-
deepseek: 'DEEPSEEK_API_KEY',
|
|
67
|
-
fireworks: 'FIREWORKS_API_KEY',
|
|
68
|
-
'github-copilot': 'COPILOT_GITHUB_TOKEN',
|
|
69
|
-
'microsoft-foundry': 'AZURE_OPENAI_API_KEY',
|
|
70
|
-
minimax: 'MINIMAX_API_KEY',
|
|
71
|
-
moonshot: 'MOONSHOT_API_KEY',
|
|
72
|
-
qianfan: 'QIANFAN_API_KEY',
|
|
73
|
-
qwen: 'QWEN_API_KEY',
|
|
74
|
-
sglang: 'SGLANG_API_KEY',
|
|
75
|
-
stepfun: 'STEPFUN_API_KEY',
|
|
76
|
-
together: 'TOGETHER_API_KEY',
|
|
77
|
-
venice: 'VENICE_API_KEY',
|
|
78
|
-
volcengine: 'VOLCANO_ENGINE_API_KEY',
|
|
79
|
-
xai: 'XAI_API_KEY',
|
|
80
|
-
xiaomi: 'XIAOMI_API_KEY',
|
|
81
|
-
zai: 'ZAI_API_KEY',
|
|
82
|
-
'cloudflare-ai-gateway': 'CLOUDFLARE_AI_GATEWAY_API_KEY',
|
|
83
|
-
'vercel-ai-gateway': 'AI_GATEWAY_API_KEY',
|
|
84
|
-
litellm: 'LITELLM_API_KEY',
|
|
85
|
-
'copilot-proxy': 'COPILOT_PROXY_API_KEY',
|
|
86
|
-
};
|
|
87
|
-
for (const [prov, envVar] of Object.entries(mapping)) {
|
|
88
|
-
let value = process.env[envVar];
|
|
89
|
-
// Fallback env var names
|
|
90
|
-
if (!value && prov === 'gemini')
|
|
91
|
-
value = process.env['GOOGLE_API_KEY'] ?? process.env['GOOGLE_GEMINI_API_KEY'];
|
|
92
|
-
if (!value && prov === 'openai')
|
|
93
|
-
value = process.env['OPENAI_KEY'];
|
|
94
|
-
if (!value && prov === 'anthropic')
|
|
95
|
-
value = process.env['CLAUDE_API_KEY'];
|
|
96
|
-
if (!value && prov === 'ollama-cloud')
|
|
97
|
-
value = process.env['OLLAMA_API_KEY'];
|
|
98
|
-
if (!value && prov === 'huggingface')
|
|
99
|
-
value = process.env['HUGGINGFACE_API_KEY'] ?? process.env['HF_TOKEN'];
|
|
100
|
-
if (!value && prov === 'github-copilot')
|
|
101
|
-
value = process.env['GH_TOKEN'] ?? process.env['GITHUB_TOKEN'];
|
|
102
|
-
if (!value && prov === 'qwen')
|
|
103
|
-
value = process.env['DASHSCOPE_API_KEY'] ?? process.env['MODELSTUDIO_API_KEY'];
|
|
104
|
-
if (!value && prov === 'zai')
|
|
105
|
-
value = process.env['Z_AI_API_KEY'];
|
|
106
|
-
if (value)
|
|
107
|
-
keys[prov] = value;
|
|
108
|
-
}
|
|
109
|
-
return keys;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* resolveApiKeys — three-tier async resolution for all provider API keys.
|
|
113
|
-
*
|
|
114
|
-
* Resolution order per key:
|
|
115
|
-
* 1. Environment variable (process.env)
|
|
116
|
-
* 2. SecretsManager hierarchy-aware stores (secure preferred, plaintext policy-aware)
|
|
117
|
-
* 3. Omitted from result (null → skip)
|
|
118
|
-
*
|
|
119
|
-
* Returns a map of provider → apiKey for all providers where a key is found.
|
|
120
|
-
*/
|
|
121
|
-
export async function resolveApiKeys(secrets) {
|
|
122
|
-
const mapping = [
|
|
123
|
-
{ prov: 'openai', envVars: ['OPENAI_API_KEY', 'OPENAI_KEY'] },
|
|
124
|
-
{ prov: 'anthropic', envVars: ['ANTHROPIC_API_KEY', 'CLAUDE_API_KEY'] },
|
|
125
|
-
{ prov: 'gemini', envVars: ['GEMINI_API_KEY', 'GOOGLE_API_KEY', 'GOOGLE_GEMINI_API_KEY'] },
|
|
126
|
-
{ prov: 'inceptionlabs', envVars: ['INCEPTION_API_KEY'] },
|
|
127
|
-
{ prov: 'openrouter', envVars: ['OPENROUTER_API_KEY'] },
|
|
128
|
-
{ prov: 'aihubmix', envVars: ['AIHUBMIX_API_KEY'] },
|
|
129
|
-
{ prov: 'groq', envVars: ['GROQ_API_KEY'] },
|
|
130
|
-
{ prov: 'cerebras', envVars: ['CEREBRAS_API_KEY'] },
|
|
131
|
-
{ prov: 'mistral', envVars: ['MISTRAL_API_KEY'] },
|
|
132
|
-
{ prov: 'ollama-cloud', envVars: ['OLLAMA_CLOUD_API_KEY', 'OLLAMA_API_KEY'] },
|
|
133
|
-
{ prov: 'huggingface', envVars: ['HF_API_KEY', 'HUGGINGFACE_API_KEY', 'HF_TOKEN'] },
|
|
134
|
-
{ prov: 'nvidia', envVars: ['NVIDIA_API_KEY'] },
|
|
135
|
-
{ prov: 'llm7', envVars: ['LLM7_API_KEY'] },
|
|
136
|
-
{ prov: 'deepseek', envVars: ['DEEPSEEK_API_KEY'] },
|
|
137
|
-
{ prov: 'fireworks', envVars: ['FIREWORKS_API_KEY'] },
|
|
138
|
-
{ prov: 'github-copilot', envVars: ['COPILOT_GITHUB_TOKEN', 'GH_TOKEN', 'GITHUB_TOKEN'] },
|
|
139
|
-
{ prov: 'microsoft-foundry', envVars: ['AZURE_OPENAI_API_KEY'] },
|
|
140
|
-
{ prov: 'minimax', envVars: ['MINIMAX_API_KEY'] },
|
|
141
|
-
{ prov: 'moonshot', envVars: ['MOONSHOT_API_KEY'] },
|
|
142
|
-
{ prov: 'qianfan', envVars: ['QIANFAN_API_KEY'] },
|
|
143
|
-
{ prov: 'qwen', envVars: ['QWEN_API_KEY', 'DASHSCOPE_API_KEY', 'MODELSTUDIO_API_KEY'] },
|
|
144
|
-
{ prov: 'sglang', envVars: ['SGLANG_API_KEY'] },
|
|
145
|
-
{ prov: 'stepfun', envVars: ['STEPFUN_API_KEY'] },
|
|
146
|
-
{ prov: 'together', envVars: ['TOGETHER_API_KEY'] },
|
|
147
|
-
{ prov: 'venice', envVars: ['VENICE_API_KEY'] },
|
|
148
|
-
{ prov: 'volcengine', envVars: ['VOLCANO_ENGINE_API_KEY'] },
|
|
149
|
-
{ prov: 'xai', envVars: ['XAI_API_KEY'] },
|
|
150
|
-
{ prov: 'xiaomi', envVars: ['XIAOMI_API_KEY'] },
|
|
151
|
-
{ prov: 'zai', envVars: ['ZAI_API_KEY', 'Z_AI_API_KEY'] },
|
|
152
|
-
{ prov: 'cloudflare-ai-gateway', envVars: ['CLOUDFLARE_AI_GATEWAY_API_KEY'] },
|
|
153
|
-
{ prov: 'vercel-ai-gateway', envVars: ['AI_GATEWAY_API_KEY'] },
|
|
154
|
-
{ prov: 'litellm', envVars: ['LITELLM_API_KEY'] },
|
|
155
|
-
{ prov: 'copilot-proxy', envVars: ['COPILOT_PROXY_API_KEY'] },
|
|
156
|
-
];
|
|
157
|
-
const result = {};
|
|
158
|
-
for (const { prov, envVars } of mapping) {
|
|
159
|
-
// Tier 1: environment variables
|
|
160
|
-
let value = null;
|
|
161
|
-
for (const envVar of envVars) {
|
|
162
|
-
if (process.env[envVar]) {
|
|
163
|
-
value = process.env[envVar];
|
|
164
|
-
break;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
// Tier 2: SecretsManager hierarchy-aware secure/plaintext stores
|
|
168
|
-
if (value === null) {
|
|
169
|
-
for (const envVar of envVars) {
|
|
170
|
-
const stored = await secrets.get(envVar);
|
|
171
|
-
if (stored !== null) {
|
|
172
|
-
value = stored;
|
|
173
|
-
break;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
if (value !== null) {
|
|
178
|
-
result[prov] = value;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
return result;
|
|
182
|
-
}
|
|
45
|
+
export { getConfiguredApiKeys, resolveApiKeys } from './api-keys.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-domain-core.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/schema-domain-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"schema-domain-core.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/schema-domain-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoH9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,uBAAuB,EAmX3D,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,uBAAuB,EA+H3D,CAAC"}
|
|
@@ -82,6 +82,7 @@ export const coreConfigDefaults = {
|
|
|
82
82
|
httpListener: false,
|
|
83
83
|
},
|
|
84
84
|
tools: {
|
|
85
|
+
llmEnabled: false,
|
|
85
86
|
llmProvider: '',
|
|
86
87
|
llmModel: '',
|
|
87
88
|
autoHeal: false,
|
|
@@ -499,6 +500,12 @@ export const coreTailConfigSettings = [
|
|
|
499
500
|
default: false,
|
|
500
501
|
description: 'Enable HTTP webhook listener for receiving external events',
|
|
501
502
|
},
|
|
503
|
+
{
|
|
504
|
+
key: 'tools.llmEnabled',
|
|
505
|
+
type: 'boolean',
|
|
506
|
+
default: false,
|
|
507
|
+
description: 'Enable dedicated tool LLM for internal operations (off = tools use the main conversation model only when needed)',
|
|
508
|
+
},
|
|
502
509
|
{
|
|
503
510
|
key: 'tools.llmProvider',
|
|
504
511
|
type: 'string',
|
|
@@ -294,6 +294,7 @@ export interface GoodVibesConfig {
|
|
|
294
294
|
httpListener: boolean;
|
|
295
295
|
};
|
|
296
296
|
tools: {
|
|
297
|
+
llmEnabled: boolean;
|
|
297
298
|
llmProvider: string;
|
|
298
299
|
llmModel: string;
|
|
299
300
|
autoHeal: boolean;
|
|
@@ -334,7 +335,7 @@ export interface ConfigSetting {
|
|
|
334
335
|
validate?: (value: unknown) => boolean;
|
|
335
336
|
}
|
|
336
337
|
/** Dot-path config keys for all settings. */
|
|
337
|
-
export type ConfigKey = 'display.stream' | 'display.lineNumbers' | 'display.collapseThreshold' | 'display.theme' | 'display.showThinking' | 'display.showReasoningSummary' | 'display.showTokenSpeed' | 'display.showToolPreview' | 'provider.reasoningEffort' | 'provider.model' | 'provider.provider' | 'provider.embeddingProvider' | 'provider.systemPromptFile' | 'behavior.autoApprove' | 'behavior.autoCompactThreshold' | 'behavior.staleContextWarnings' | 'behavior.saveHistory' | 'behavior.notifyOnComplete' | 'behavior.suggestAlternativeOnProviderFail' | 'behavior.hitlMode' | 'behavior.returnContextMode' | 'behavior.guidanceMode' | 'storage.secretPolicy' | 'permissions.mode' | 'permissions.tools.read' | 'permissions.tools.write' | 'permissions.tools.edit' | 'permissions.tools.exec' | 'permissions.tools.find' | 'permissions.tools.fetch' | 'permissions.tools.analyze' | 'permissions.tools.inspect' | 'permissions.tools.agent' | 'permissions.tools.state' | 'permissions.tools.workflow' | 'permissions.tools.registry' | 'permissions.tools.delegate' | 'permissions.tools.mcp' | 'orchestration.recursionEnabled' | 'orchestration.maxActiveAgents' | 'orchestration.maxDepth' | 'sandbox.replIsolation' | 'sandbox.mcpIsolation' | 'sandbox.windowsMode' | 'sandbox.vmBackend' | 'sandbox.qemuBinary' | 'sandbox.qemuImagePath' | 'sandbox.qemuExecWrapper' | 'sandbox.qemuGuestHost' | 'sandbox.qemuGuestPort' | 'sandbox.qemuGuestUser' | 'sandbox.qemuWorkspacePath' | 'sandbox.qemuSessionMode' | 'ui.voiceEnabled' | 'ui.systemMessages' | 'ui.operationalMessages' | 'ui.wrfcMessages' | 'release.channel' | 'danger.daemon' | 'danger.httpListener' | 'tools.llmProvider' | 'tools.llmModel' | 'tools.autoHeal' | 'tools.defaultTokenBudget' | 'tools.hooksFile' | 'wrfc.scoreThreshold' | 'wrfc.maxFixAttempts' | 'wrfc.autoCommit' | 'cache.enabled' | 'cache.stableTtl' | 'cache.monitorHitRate' | 'cache.hitRateWarningThreshold' | 'helper.enabled' | 'helper.globalProvider' | 'helper.globalModel' | 'automation.enabled' | 'automation.maxConcurrentRuns' | 'automation.runHistoryLimit' | 'automation.defaultTimeoutMs' | 'automation.catchUpWindowMinutes' | 'automation.failureCooldownMs' | 'automation.deleteAfterRun' | 'controlPlane.enabled' | 'controlPlane.host' | 'controlPlane.port' | 'controlPlane.baseUrl' | 'controlPlane.streamMode' | 'controlPlane.allowRemote' | 'controlPlane.trustProxy' | 'controlPlane.tls.mode' | 'controlPlane.tls.certFile' | 'controlPlane.tls.keyFile' | 'httpListener.host' | 'httpListener.port' | 'httpListener.trustProxy' | 'httpListener.tls.mode' | 'httpListener.tls.certFile' | 'httpListener.tls.keyFile' | 'web.enabled' | 'web.host' | 'web.port' | 'web.publicBaseUrl' | 'web.staticAssetsDir' | 'surfaces.slack.enabled' | 'surfaces.slack.signingSecret' | 'surfaces.slack.botToken' | 'surfaces.slack.appToken' | 'surfaces.slack.defaultChannel' | 'surfaces.slack.workspaceId' | 'surfaces.discord.enabled' | 'surfaces.discord.publicKey' | 'surfaces.discord.botToken' | 'surfaces.discord.applicationId' | 'surfaces.discord.defaultChannelId' | 'surfaces.discord.guildId' | 'surfaces.ntfy.enabled' | 'surfaces.ntfy.baseUrl' | 'surfaces.ntfy.topic' | 'surfaces.ntfy.token' | 'surfaces.ntfy.defaultPriority' | 'surfaces.webhook.enabled' | 'surfaces.webhook.defaultTarget' | 'surfaces.webhook.timeoutMs' | 'surfaces.webhook.secret' | 'surfaces.telegram.enabled' | 'surfaces.telegram.botToken' | 'surfaces.telegram.webhookSecret' | 'surfaces.telegram.defaultChatId' | 'surfaces.telegram.botUsername' | 'surfaces.telegram.mode' | 'surfaces.googleChat.enabled' | 'surfaces.googleChat.webhookUrl' | 'surfaces.googleChat.verificationToken' | 'surfaces.googleChat.appId' | 'surfaces.googleChat.spaceId' | 'surfaces.signal.enabled' | 'surfaces.signal.bridgeUrl' | 'surfaces.signal.account' | 'surfaces.signal.token' | 'surfaces.signal.defaultRecipient' | 'surfaces.whatsapp.enabled' | 'surfaces.whatsapp.provider' | 'surfaces.whatsapp.accessToken' | 'surfaces.whatsapp.verifyToken' | 'surfaces.whatsapp.signingSecret' | 'surfaces.whatsapp.phoneNumberId' | 'surfaces.whatsapp.businessAccountId' | 'surfaces.whatsapp.defaultRecipient' | 'surfaces.imessage.enabled' | 'surfaces.imessage.bridgeUrl' | 'surfaces.imessage.account' | 'surfaces.imessage.token' | 'surfaces.imessage.defaultChatId' | 'surfaces.msteams.enabled' | 'surfaces.msteams.appId' | 'surfaces.msteams.appPassword' | 'surfaces.msteams.tenantId' | 'surfaces.msteams.serviceUrl' | 'surfaces.msteams.botId' | 'surfaces.msteams.defaultConversationId' | 'surfaces.msteams.defaultChannelId' | 'surfaces.bluebubbles.enabled' | 'surfaces.bluebubbles.serverUrl' | 'surfaces.bluebubbles.password' | 'surfaces.bluebubbles.account' | 'surfaces.bluebubbles.defaultChatGuid' | 'surfaces.mattermost.enabled' | 'surfaces.mattermost.baseUrl' | 'surfaces.mattermost.botToken' | 'surfaces.mattermost.teamId' | 'surfaces.mattermost.defaultChannelId' | 'surfaces.matrix.enabled' | 'surfaces.matrix.homeserverUrl' | 'surfaces.matrix.accessToken' | 'surfaces.matrix.userId' | 'surfaces.matrix.defaultRoomId' | 'watchers.enabled' | 'watchers.pollIntervalMs' | 'watchers.heartbeatIntervalMs' | 'watchers.recoveryWindowMinutes' | 'service.enabled' | 'service.autostart' | 'service.restartOnFailure' | 'service.platform' | 'service.serviceName' | 'service.logPath' | 'network.outboundTls.mode' | 'network.outboundTls.customCaFile' | 'network.outboundTls.customCaDir' | 'network.outboundTls.allowInsecureLocalhost' | 'network.remoteFetch.allowPrivateHosts';
|
|
338
|
+
export type ConfigKey = 'display.stream' | 'display.lineNumbers' | 'display.collapseThreshold' | 'display.theme' | 'display.showThinking' | 'display.showReasoningSummary' | 'display.showTokenSpeed' | 'display.showToolPreview' | 'provider.reasoningEffort' | 'provider.model' | 'provider.provider' | 'provider.embeddingProvider' | 'provider.systemPromptFile' | 'behavior.autoApprove' | 'behavior.autoCompactThreshold' | 'behavior.staleContextWarnings' | 'behavior.saveHistory' | 'behavior.notifyOnComplete' | 'behavior.suggestAlternativeOnProviderFail' | 'behavior.hitlMode' | 'behavior.returnContextMode' | 'behavior.guidanceMode' | 'storage.secretPolicy' | 'permissions.mode' | 'permissions.tools.read' | 'permissions.tools.write' | 'permissions.tools.edit' | 'permissions.tools.exec' | 'permissions.tools.find' | 'permissions.tools.fetch' | 'permissions.tools.analyze' | 'permissions.tools.inspect' | 'permissions.tools.agent' | 'permissions.tools.state' | 'permissions.tools.workflow' | 'permissions.tools.registry' | 'permissions.tools.delegate' | 'permissions.tools.mcp' | 'orchestration.recursionEnabled' | 'orchestration.maxActiveAgents' | 'orchestration.maxDepth' | 'sandbox.replIsolation' | 'sandbox.mcpIsolation' | 'sandbox.windowsMode' | 'sandbox.vmBackend' | 'sandbox.qemuBinary' | 'sandbox.qemuImagePath' | 'sandbox.qemuExecWrapper' | 'sandbox.qemuGuestHost' | 'sandbox.qemuGuestPort' | 'sandbox.qemuGuestUser' | 'sandbox.qemuWorkspacePath' | 'sandbox.qemuSessionMode' | 'ui.voiceEnabled' | 'ui.systemMessages' | 'ui.operationalMessages' | 'ui.wrfcMessages' | 'release.channel' | 'danger.daemon' | 'danger.httpListener' | 'tools.llmEnabled' | 'tools.llmProvider' | 'tools.llmModel' | 'tools.autoHeal' | 'tools.defaultTokenBudget' | 'tools.hooksFile' | 'wrfc.scoreThreshold' | 'wrfc.maxFixAttempts' | 'wrfc.autoCommit' | 'cache.enabled' | 'cache.stableTtl' | 'cache.monitorHitRate' | 'cache.hitRateWarningThreshold' | 'helper.enabled' | 'helper.globalProvider' | 'helper.globalModel' | 'automation.enabled' | 'automation.maxConcurrentRuns' | 'automation.runHistoryLimit' | 'automation.defaultTimeoutMs' | 'automation.catchUpWindowMinutes' | 'automation.failureCooldownMs' | 'automation.deleteAfterRun' | 'controlPlane.enabled' | 'controlPlane.host' | 'controlPlane.port' | 'controlPlane.baseUrl' | 'controlPlane.streamMode' | 'controlPlane.allowRemote' | 'controlPlane.trustProxy' | 'controlPlane.tls.mode' | 'controlPlane.tls.certFile' | 'controlPlane.tls.keyFile' | 'httpListener.host' | 'httpListener.port' | 'httpListener.trustProxy' | 'httpListener.tls.mode' | 'httpListener.tls.certFile' | 'httpListener.tls.keyFile' | 'web.enabled' | 'web.host' | 'web.port' | 'web.publicBaseUrl' | 'web.staticAssetsDir' | 'surfaces.slack.enabled' | 'surfaces.slack.signingSecret' | 'surfaces.slack.botToken' | 'surfaces.slack.appToken' | 'surfaces.slack.defaultChannel' | 'surfaces.slack.workspaceId' | 'surfaces.discord.enabled' | 'surfaces.discord.publicKey' | 'surfaces.discord.botToken' | 'surfaces.discord.applicationId' | 'surfaces.discord.defaultChannelId' | 'surfaces.discord.guildId' | 'surfaces.ntfy.enabled' | 'surfaces.ntfy.baseUrl' | 'surfaces.ntfy.topic' | 'surfaces.ntfy.token' | 'surfaces.ntfy.defaultPriority' | 'surfaces.webhook.enabled' | 'surfaces.webhook.defaultTarget' | 'surfaces.webhook.timeoutMs' | 'surfaces.webhook.secret' | 'surfaces.telegram.enabled' | 'surfaces.telegram.botToken' | 'surfaces.telegram.webhookSecret' | 'surfaces.telegram.defaultChatId' | 'surfaces.telegram.botUsername' | 'surfaces.telegram.mode' | 'surfaces.googleChat.enabled' | 'surfaces.googleChat.webhookUrl' | 'surfaces.googleChat.verificationToken' | 'surfaces.googleChat.appId' | 'surfaces.googleChat.spaceId' | 'surfaces.signal.enabled' | 'surfaces.signal.bridgeUrl' | 'surfaces.signal.account' | 'surfaces.signal.token' | 'surfaces.signal.defaultRecipient' | 'surfaces.whatsapp.enabled' | 'surfaces.whatsapp.provider' | 'surfaces.whatsapp.accessToken' | 'surfaces.whatsapp.verifyToken' | 'surfaces.whatsapp.signingSecret' | 'surfaces.whatsapp.phoneNumberId' | 'surfaces.whatsapp.businessAccountId' | 'surfaces.whatsapp.defaultRecipient' | 'surfaces.imessage.enabled' | 'surfaces.imessage.bridgeUrl' | 'surfaces.imessage.account' | 'surfaces.imessage.token' | 'surfaces.imessage.defaultChatId' | 'surfaces.msteams.enabled' | 'surfaces.msteams.appId' | 'surfaces.msteams.appPassword' | 'surfaces.msteams.tenantId' | 'surfaces.msteams.serviceUrl' | 'surfaces.msteams.botId' | 'surfaces.msteams.defaultConversationId' | 'surfaces.msteams.defaultChannelId' | 'surfaces.bluebubbles.enabled' | 'surfaces.bluebubbles.serverUrl' | 'surfaces.bluebubbles.password' | 'surfaces.bluebubbles.account' | 'surfaces.bluebubbles.defaultChatGuid' | 'surfaces.mattermost.enabled' | 'surfaces.mattermost.baseUrl' | 'surfaces.mattermost.botToken' | 'surfaces.mattermost.teamId' | 'surfaces.mattermost.defaultChannelId' | 'surfaces.matrix.enabled' | 'surfaces.matrix.homeserverUrl' | 'surfaces.matrix.accessToken' | 'surfaces.matrix.userId' | 'surfaces.matrix.defaultRoomId' | 'watchers.enabled' | 'watchers.pollIntervalMs' | 'watchers.heartbeatIntervalMs' | 'watchers.recoveryWindowMinutes' | 'service.enabled' | 'service.autostart' | 'service.restartOnFailure' | 'service.platform' | 'service.serviceName' | 'service.logPath' | 'network.outboundTls.mode' | 'network.outboundTls.customCaFile' | 'network.outboundTls.customCaDir' | 'network.outboundTls.allowInsecureLocalhost' | 'network.remoteFetch.allowPrivateHosts';
|
|
338
339
|
/** Maps a ConfigKey to its value type. */
|
|
339
|
-
export type ConfigValue<K extends ConfigKey> = K extends 'display.stream' ? boolean : K extends 'display.lineNumbers' ? LineNumberMode : K extends 'display.collapseThreshold' ? number : K extends 'display.theme' ? string : K extends 'display.showThinking' ? boolean : K extends 'display.showReasoningSummary' ? boolean : K extends 'display.showTokenSpeed' ? boolean : K extends 'display.showToolPreview' ? boolean : K extends 'provider.reasoningEffort' ? 'instant' | 'low' | 'medium' | 'high' : K extends 'provider.model' ? string : K extends 'provider.provider' ? string : K extends 'provider.embeddingProvider' ? string : K extends 'provider.systemPromptFile' ? string : K extends 'behavior.autoApprove' ? boolean : K extends 'behavior.autoCompactThreshold' ? number : K extends 'behavior.staleContextWarnings' ? boolean : K extends 'behavior.saveHistory' ? boolean : K extends 'behavior.notifyOnComplete' ? boolean : K extends 'behavior.suggestAlternativeOnProviderFail' ? boolean : K extends 'behavior.hitlMode' ? 'quiet' | 'balanced' | 'operator' : K extends 'behavior.returnContextMode' ? 'off' | 'local' | 'assisted' : K extends 'behavior.guidanceMode' ? 'off' | 'minimal' | 'guided' : K extends 'storage.secretPolicy' ? 'plaintext_allowed' | 'preferred_secure' | 'require_secure' : K extends 'permissions.mode' ? PermissionMode : K extends 'permissions.tools.read' ? PermissionAction : K extends 'permissions.tools.write' ? PermissionAction : K extends 'permissions.tools.edit' ? PermissionAction : K extends 'permissions.tools.exec' ? PermissionAction : K extends 'permissions.tools.find' ? PermissionAction : K extends 'permissions.tools.fetch' ? PermissionAction : K extends 'permissions.tools.analyze' ? PermissionAction : K extends 'permissions.tools.inspect' ? PermissionAction : K extends 'permissions.tools.agent' ? PermissionAction : K extends 'permissions.tools.state' ? PermissionAction : K extends 'permissions.tools.workflow' ? PermissionAction : K extends 'permissions.tools.registry' ? PermissionAction : K extends 'permissions.tools.delegate' ? PermissionAction : K extends 'permissions.tools.mcp' ? PermissionAction : K extends 'orchestration.recursionEnabled' ? boolean : K extends 'orchestration.maxActiveAgents' ? number : K extends 'orchestration.maxDepth' ? number : K extends 'sandbox.replIsolation' ? 'shared-vm' | 'per-runtime-vm' : K extends 'sandbox.mcpIsolation' ? 'disabled' | 'shared-vm' | 'hybrid' | 'per-server-vm' : K extends 'sandbox.windowsMode' ? 'native-basic' | 'require-wsl' : K extends 'sandbox.vmBackend' ? 'local' | 'qemu' : K extends 'sandbox.qemuBinary' ? string : K extends 'sandbox.qemuImagePath' ? string : K extends 'sandbox.qemuExecWrapper' ? string : K extends 'sandbox.qemuGuestHost' ? string : K extends 'sandbox.qemuGuestPort' ? number : K extends 'sandbox.qemuGuestUser' ? string : K extends 'sandbox.qemuWorkspacePath' ? string : K extends 'sandbox.qemuSessionMode' ? 'attach' | 'launch-per-command' : K extends 'ui.voiceEnabled' ? boolean : K extends 'ui.systemMessages' ? 'panel' | 'conversation' | 'both' : K extends 'ui.operationalMessages' ? 'panel' | 'conversation' | 'both' : K extends 'ui.wrfcMessages' ? 'panel' | 'conversation' | 'both' : K extends 'release.channel' ? 'stable' | 'preview' : K extends 'danger.daemon' ? boolean : K extends 'danger.httpListener' ? boolean : K extends 'tools.llmProvider' ? string : K extends 'tools.llmModel' ? string : K extends 'tools.autoHeal' ? boolean : K extends 'tools.defaultTokenBudget' ? number : K extends 'tools.hooksFile' ? string : K extends 'wrfc.scoreThreshold' ? number : K extends 'wrfc.maxFixAttempts' ? number : K extends 'wrfc.autoCommit' ? boolean : K extends 'cache.enabled' ? boolean : K extends 'cache.stableTtl' ? '5m' | '1h' : K extends 'cache.monitorHitRate' ? boolean : K extends 'cache.hitRateWarningThreshold' ? number : K extends 'helper.enabled' ? boolean : K extends 'helper.globalProvider' ? string : K extends 'helper.globalModel' ? string : K extends 'automation.enabled' ? boolean : K extends 'automation.maxConcurrentRuns' ? number : K extends 'automation.runHistoryLimit' ? number : K extends 'automation.defaultTimeoutMs' ? number : K extends 'automation.catchUpWindowMinutes' ? number : K extends 'automation.failureCooldownMs' ? number : K extends 'automation.deleteAfterRun' ? boolean : K extends 'controlPlane.enabled' ? boolean : K extends 'controlPlane.host' ? string : K extends 'controlPlane.port' ? number : K extends 'controlPlane.baseUrl' ? string : K extends 'controlPlane.streamMode' ? 'sse' | 'websocket' | 'both' : K extends 'controlPlane.allowRemote' ? boolean : K extends 'controlPlane.trustProxy' ? boolean : K extends 'controlPlane.tls.mode' ? 'off' | 'proxy' | 'direct' : K extends 'controlPlane.tls.certFile' ? string : K extends 'controlPlane.tls.keyFile' ? string : K extends 'httpListener.host' ? string : K extends 'httpListener.port' ? number : K extends 'httpListener.trustProxy' ? boolean : K extends 'httpListener.tls.mode' ? 'off' | 'proxy' | 'direct' : K extends 'httpListener.tls.certFile' ? string : K extends 'httpListener.tls.keyFile' ? string : K extends 'web.enabled' ? boolean : K extends 'web.host' ? string : K extends 'web.port' ? number : K extends 'web.publicBaseUrl' ? string : K extends 'web.staticAssetsDir' ? string : K extends 'surfaces.slack.enabled' ? boolean : K extends 'surfaces.slack.signingSecret' ? string : K extends 'surfaces.slack.botToken' ? string : K extends 'surfaces.slack.appToken' ? string : K extends 'surfaces.slack.defaultChannel' ? string : K extends 'surfaces.slack.workspaceId' ? string : K extends 'surfaces.discord.enabled' ? boolean : K extends 'surfaces.discord.publicKey' ? string : K extends 'surfaces.discord.botToken' ? string : K extends 'surfaces.discord.applicationId' ? string : K extends 'surfaces.discord.defaultChannelId' ? string : K extends 'surfaces.discord.guildId' ? string : K extends 'surfaces.ntfy.enabled' ? boolean : K extends 'surfaces.ntfy.baseUrl' ? string : K extends 'surfaces.ntfy.topic' ? string : K extends 'surfaces.ntfy.token' ? string : K extends 'surfaces.ntfy.defaultPriority' ? number : K extends 'surfaces.webhook.enabled' ? boolean : K extends 'surfaces.webhook.defaultTarget' ? string : K extends 'surfaces.webhook.timeoutMs' ? number : K extends 'surfaces.webhook.secret' ? string : K extends 'surfaces.telegram.enabled' ? boolean : K extends 'surfaces.telegram.botToken' ? string : K extends 'surfaces.telegram.webhookSecret' ? string : K extends 'surfaces.telegram.defaultChatId' ? string : K extends 'surfaces.telegram.botUsername' ? string : K extends 'surfaces.telegram.mode' ? 'webhook' | 'polling' : K extends 'surfaces.googleChat.enabled' ? boolean : K extends 'surfaces.googleChat.webhookUrl' ? string : K extends 'surfaces.googleChat.verificationToken' ? string : K extends 'surfaces.googleChat.appId' ? string : K extends 'surfaces.googleChat.spaceId' ? string : K extends 'surfaces.signal.enabled' ? boolean : K extends 'surfaces.signal.bridgeUrl' ? string : K extends 'surfaces.signal.account' ? string : K extends 'surfaces.signal.token' ? string : K extends 'surfaces.signal.defaultRecipient' ? string : K extends 'surfaces.whatsapp.enabled' ? boolean : K extends 'surfaces.whatsapp.provider' ? 'meta-cloud' | 'bridge' : K extends 'surfaces.whatsapp.accessToken' ? string : K extends 'surfaces.whatsapp.verifyToken' ? string : K extends 'surfaces.whatsapp.signingSecret' ? string : K extends 'surfaces.whatsapp.phoneNumberId' ? string : K extends 'surfaces.whatsapp.businessAccountId' ? string : K extends 'surfaces.whatsapp.defaultRecipient' ? string : K extends 'surfaces.imessage.enabled' ? boolean : K extends 'surfaces.imessage.bridgeUrl' ? string : K extends 'surfaces.imessage.account' ? string : K extends 'surfaces.imessage.token' ? string : K extends 'surfaces.imessage.defaultChatId' ? string : K extends 'surfaces.msteams.enabled' ? boolean : K extends 'surfaces.msteams.appId' ? string : K extends 'surfaces.msteams.appPassword' ? string : K extends 'surfaces.msteams.tenantId' ? string : K extends 'surfaces.msteams.serviceUrl' ? string : K extends 'surfaces.msteams.botId' ? string : K extends 'surfaces.msteams.defaultConversationId' ? string : K extends 'surfaces.msteams.defaultChannelId' ? string : K extends 'surfaces.bluebubbles.enabled' ? boolean : K extends 'surfaces.bluebubbles.serverUrl' ? string : K extends 'surfaces.bluebubbles.password' ? string : K extends 'surfaces.bluebubbles.account' ? string : K extends 'surfaces.bluebubbles.defaultChatGuid' ? string : K extends 'surfaces.mattermost.enabled' ? boolean : K extends 'surfaces.mattermost.baseUrl' ? string : K extends 'surfaces.mattermost.botToken' ? string : K extends 'surfaces.mattermost.teamId' ? string : K extends 'surfaces.mattermost.defaultChannelId' ? string : K extends 'surfaces.matrix.enabled' ? boolean : K extends 'surfaces.matrix.homeserverUrl' ? string : K extends 'surfaces.matrix.accessToken' ? string : K extends 'surfaces.matrix.userId' ? string : K extends 'surfaces.matrix.defaultRoomId' ? string : K extends 'watchers.enabled' ? boolean : K extends 'watchers.pollIntervalMs' ? number : K extends 'watchers.heartbeatIntervalMs' ? number : K extends 'watchers.recoveryWindowMinutes' ? number : K extends 'service.enabled' ? boolean : K extends 'service.autostart' ? boolean : K extends 'service.restartOnFailure' ? boolean : K extends 'service.platform' ? 'auto' | 'systemd' | 'launchd' | 'windows' | 'manual' : K extends 'service.serviceName' ? string : K extends 'service.logPath' ? string : K extends 'network.outboundTls.mode' ? 'bundled' | 'bundled+custom' | 'custom' : K extends 'network.outboundTls.customCaFile' ? string : K extends 'network.outboundTls.customCaDir' ? string : K extends 'network.outboundTls.allowInsecureLocalhost' ? boolean : K extends 'network.remoteFetch.allowPrivateHosts' ? boolean : never;
|
|
340
|
+
export type ConfigValue<K extends ConfigKey> = K extends 'display.stream' ? boolean : K extends 'display.lineNumbers' ? LineNumberMode : K extends 'display.collapseThreshold' ? number : K extends 'display.theme' ? string : K extends 'display.showThinking' ? boolean : K extends 'display.showReasoningSummary' ? boolean : K extends 'display.showTokenSpeed' ? boolean : K extends 'display.showToolPreview' ? boolean : K extends 'provider.reasoningEffort' ? 'instant' | 'low' | 'medium' | 'high' : K extends 'provider.model' ? string : K extends 'provider.provider' ? string : K extends 'provider.embeddingProvider' ? string : K extends 'provider.systemPromptFile' ? string : K extends 'behavior.autoApprove' ? boolean : K extends 'behavior.autoCompactThreshold' ? number : K extends 'behavior.staleContextWarnings' ? boolean : K extends 'behavior.saveHistory' ? boolean : K extends 'behavior.notifyOnComplete' ? boolean : K extends 'behavior.suggestAlternativeOnProviderFail' ? boolean : K extends 'behavior.hitlMode' ? 'quiet' | 'balanced' | 'operator' : K extends 'behavior.returnContextMode' ? 'off' | 'local' | 'assisted' : K extends 'behavior.guidanceMode' ? 'off' | 'minimal' | 'guided' : K extends 'storage.secretPolicy' ? 'plaintext_allowed' | 'preferred_secure' | 'require_secure' : K extends 'permissions.mode' ? PermissionMode : K extends 'permissions.tools.read' ? PermissionAction : K extends 'permissions.tools.write' ? PermissionAction : K extends 'permissions.tools.edit' ? PermissionAction : K extends 'permissions.tools.exec' ? PermissionAction : K extends 'permissions.tools.find' ? PermissionAction : K extends 'permissions.tools.fetch' ? PermissionAction : K extends 'permissions.tools.analyze' ? PermissionAction : K extends 'permissions.tools.inspect' ? PermissionAction : K extends 'permissions.tools.agent' ? PermissionAction : K extends 'permissions.tools.state' ? PermissionAction : K extends 'permissions.tools.workflow' ? PermissionAction : K extends 'permissions.tools.registry' ? PermissionAction : K extends 'permissions.tools.delegate' ? PermissionAction : K extends 'permissions.tools.mcp' ? PermissionAction : K extends 'orchestration.recursionEnabled' ? boolean : K extends 'orchestration.maxActiveAgents' ? number : K extends 'orchestration.maxDepth' ? number : K extends 'sandbox.replIsolation' ? 'shared-vm' | 'per-runtime-vm' : K extends 'sandbox.mcpIsolation' ? 'disabled' | 'shared-vm' | 'hybrid' | 'per-server-vm' : K extends 'sandbox.windowsMode' ? 'native-basic' | 'require-wsl' : K extends 'sandbox.vmBackend' ? 'local' | 'qemu' : K extends 'sandbox.qemuBinary' ? string : K extends 'sandbox.qemuImagePath' ? string : K extends 'sandbox.qemuExecWrapper' ? string : K extends 'sandbox.qemuGuestHost' ? string : K extends 'sandbox.qemuGuestPort' ? number : K extends 'sandbox.qemuGuestUser' ? string : K extends 'sandbox.qemuWorkspacePath' ? string : K extends 'sandbox.qemuSessionMode' ? 'attach' | 'launch-per-command' : K extends 'ui.voiceEnabled' ? boolean : K extends 'ui.systemMessages' ? 'panel' | 'conversation' | 'both' : K extends 'ui.operationalMessages' ? 'panel' | 'conversation' | 'both' : K extends 'ui.wrfcMessages' ? 'panel' | 'conversation' | 'both' : K extends 'release.channel' ? 'stable' | 'preview' : K extends 'danger.daemon' ? boolean : K extends 'danger.httpListener' ? boolean : K extends 'tools.llmEnabled' ? boolean : K extends 'tools.llmProvider' ? string : K extends 'tools.llmModel' ? string : K extends 'tools.autoHeal' ? boolean : K extends 'tools.defaultTokenBudget' ? number : K extends 'tools.hooksFile' ? string : K extends 'wrfc.scoreThreshold' ? number : K extends 'wrfc.maxFixAttempts' ? number : K extends 'wrfc.autoCommit' ? boolean : K extends 'cache.enabled' ? boolean : K extends 'cache.stableTtl' ? '5m' | '1h' : K extends 'cache.monitorHitRate' ? boolean : K extends 'cache.hitRateWarningThreshold' ? number : K extends 'helper.enabled' ? boolean : K extends 'helper.globalProvider' ? string : K extends 'helper.globalModel' ? string : K extends 'automation.enabled' ? boolean : K extends 'automation.maxConcurrentRuns' ? number : K extends 'automation.runHistoryLimit' ? number : K extends 'automation.defaultTimeoutMs' ? number : K extends 'automation.catchUpWindowMinutes' ? number : K extends 'automation.failureCooldownMs' ? number : K extends 'automation.deleteAfterRun' ? boolean : K extends 'controlPlane.enabled' ? boolean : K extends 'controlPlane.host' ? string : K extends 'controlPlane.port' ? number : K extends 'controlPlane.baseUrl' ? string : K extends 'controlPlane.streamMode' ? 'sse' | 'websocket' | 'both' : K extends 'controlPlane.allowRemote' ? boolean : K extends 'controlPlane.trustProxy' ? boolean : K extends 'controlPlane.tls.mode' ? 'off' | 'proxy' | 'direct' : K extends 'controlPlane.tls.certFile' ? string : K extends 'controlPlane.tls.keyFile' ? string : K extends 'httpListener.host' ? string : K extends 'httpListener.port' ? number : K extends 'httpListener.trustProxy' ? boolean : K extends 'httpListener.tls.mode' ? 'off' | 'proxy' | 'direct' : K extends 'httpListener.tls.certFile' ? string : K extends 'httpListener.tls.keyFile' ? string : K extends 'web.enabled' ? boolean : K extends 'web.host' ? string : K extends 'web.port' ? number : K extends 'web.publicBaseUrl' ? string : K extends 'web.staticAssetsDir' ? string : K extends 'surfaces.slack.enabled' ? boolean : K extends 'surfaces.slack.signingSecret' ? string : K extends 'surfaces.slack.botToken' ? string : K extends 'surfaces.slack.appToken' ? string : K extends 'surfaces.slack.defaultChannel' ? string : K extends 'surfaces.slack.workspaceId' ? string : K extends 'surfaces.discord.enabled' ? boolean : K extends 'surfaces.discord.publicKey' ? string : K extends 'surfaces.discord.botToken' ? string : K extends 'surfaces.discord.applicationId' ? string : K extends 'surfaces.discord.defaultChannelId' ? string : K extends 'surfaces.discord.guildId' ? string : K extends 'surfaces.ntfy.enabled' ? boolean : K extends 'surfaces.ntfy.baseUrl' ? string : K extends 'surfaces.ntfy.topic' ? string : K extends 'surfaces.ntfy.token' ? string : K extends 'surfaces.ntfy.defaultPriority' ? number : K extends 'surfaces.webhook.enabled' ? boolean : K extends 'surfaces.webhook.defaultTarget' ? string : K extends 'surfaces.webhook.timeoutMs' ? number : K extends 'surfaces.webhook.secret' ? string : K extends 'surfaces.telegram.enabled' ? boolean : K extends 'surfaces.telegram.botToken' ? string : K extends 'surfaces.telegram.webhookSecret' ? string : K extends 'surfaces.telegram.defaultChatId' ? string : K extends 'surfaces.telegram.botUsername' ? string : K extends 'surfaces.telegram.mode' ? 'webhook' | 'polling' : K extends 'surfaces.googleChat.enabled' ? boolean : K extends 'surfaces.googleChat.webhookUrl' ? string : K extends 'surfaces.googleChat.verificationToken' ? string : K extends 'surfaces.googleChat.appId' ? string : K extends 'surfaces.googleChat.spaceId' ? string : K extends 'surfaces.signal.enabled' ? boolean : K extends 'surfaces.signal.bridgeUrl' ? string : K extends 'surfaces.signal.account' ? string : K extends 'surfaces.signal.token' ? string : K extends 'surfaces.signal.defaultRecipient' ? string : K extends 'surfaces.whatsapp.enabled' ? boolean : K extends 'surfaces.whatsapp.provider' ? 'meta-cloud' | 'bridge' : K extends 'surfaces.whatsapp.accessToken' ? string : K extends 'surfaces.whatsapp.verifyToken' ? string : K extends 'surfaces.whatsapp.signingSecret' ? string : K extends 'surfaces.whatsapp.phoneNumberId' ? string : K extends 'surfaces.whatsapp.businessAccountId' ? string : K extends 'surfaces.whatsapp.defaultRecipient' ? string : K extends 'surfaces.imessage.enabled' ? boolean : K extends 'surfaces.imessage.bridgeUrl' ? string : K extends 'surfaces.imessage.account' ? string : K extends 'surfaces.imessage.token' ? string : K extends 'surfaces.imessage.defaultChatId' ? string : K extends 'surfaces.msteams.enabled' ? boolean : K extends 'surfaces.msteams.appId' ? string : K extends 'surfaces.msteams.appPassword' ? string : K extends 'surfaces.msteams.tenantId' ? string : K extends 'surfaces.msteams.serviceUrl' ? string : K extends 'surfaces.msteams.botId' ? string : K extends 'surfaces.msteams.defaultConversationId' ? string : K extends 'surfaces.msteams.defaultChannelId' ? string : K extends 'surfaces.bluebubbles.enabled' ? boolean : K extends 'surfaces.bluebubbles.serverUrl' ? string : K extends 'surfaces.bluebubbles.password' ? string : K extends 'surfaces.bluebubbles.account' ? string : K extends 'surfaces.bluebubbles.defaultChatGuid' ? string : K extends 'surfaces.mattermost.enabled' ? boolean : K extends 'surfaces.mattermost.baseUrl' ? string : K extends 'surfaces.mattermost.botToken' ? string : K extends 'surfaces.mattermost.teamId' ? string : K extends 'surfaces.mattermost.defaultChannelId' ? string : K extends 'surfaces.matrix.enabled' ? boolean : K extends 'surfaces.matrix.homeserverUrl' ? string : K extends 'surfaces.matrix.accessToken' ? string : K extends 'surfaces.matrix.userId' ? string : K extends 'surfaces.matrix.defaultRoomId' ? string : K extends 'watchers.enabled' ? boolean : K extends 'watchers.pollIntervalMs' ? number : K extends 'watchers.heartbeatIntervalMs' ? number : K extends 'watchers.recoveryWindowMinutes' ? number : K extends 'service.enabled' ? boolean : K extends 'service.autostart' ? boolean : K extends 'service.restartOnFailure' ? boolean : K extends 'service.platform' ? 'auto' | 'systemd' | 'launchd' | 'windows' | 'manual' : K extends 'service.serviceName' ? string : K extends 'service.logPath' ? string : K extends 'network.outboundTls.mode' ? 'bundled' | 'bundled+custom' | 'custom' : K extends 'network.outboundTls.customCaFile' ? string : K extends 'network.outboundTls.customCaDir' ? string : K extends 'network.outboundTls.allowInsecureLocalhost' ? boolean : K extends 'network.remoteFetch.allowPrivateHosts' ? boolean : never;
|
|
340
341
|
//# sourceMappingURL=schema-types.d.ts.map
|