praxis-agent 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/application/background-agent-manager.d.ts +5 -0
- package/dist/application/background-agent-manager.js +21 -0
- package/dist/application/background-bash-manager.d.ts +14 -0
- package/dist/application/background-bash-manager.js +42 -4
- package/dist/application/background-task-runtime.d.ts +34 -0
- package/dist/application/background-task-runtime.js +59 -0
- package/dist/application/session-service.d.ts +21 -1
- package/dist/application/session-service.js +188 -17
- package/dist/application/session-worktree.d.ts +1 -0
- package/dist/application/session-worktree.js +13 -2
- package/dist/application/subagent-service.d.ts +3 -0
- package/dist/application/subagent-service.js +6 -0
- package/dist/application/workflow-manager.d.ts +70 -2
- package/dist/application/workflow-manager.js +21 -4
- package/dist/cli/agents-dashboard.d.ts +9 -0
- package/dist/cli/agents-dashboard.js +16 -5
- package/dist/cli/interactive.d.ts +41 -3
- package/dist/cli/interactive.js +1281 -183
- package/dist/cli/tui/claude-style.d.ts +31 -3
- package/dist/cli/tui/claude-style.js +165 -54
- package/dist/cli/tui/config-dashboard.d.ts +63 -0
- package/dist/cli/tui/config-dashboard.js +150 -0
- package/dist/cli/tui/config-settings.d.ts +32 -0
- package/dist/cli/tui/config-settings.js +276 -0
- package/dist/cli/tui/custom-themes.d.ts +21 -0
- package/dist/cli/tui/custom-themes.js +284 -0
- package/dist/cli/tui/file-picker.d.ts +3 -1
- package/dist/cli/tui/file-picker.js +8 -2
- package/dist/cli/tui/keybindings.js +0 -1
- package/dist/cli/tui/mcp-panel-controller.d.ts +32 -0
- package/dist/cli/tui/mcp-panel-controller.js +80 -0
- package/dist/cli/tui/mcp-panel-projector.d.ts +79 -0
- package/dist/cli/tui/mcp-panel-projector.js +181 -0
- package/dist/cli/tui/mcp-panel.d.ts +8 -0
- package/dist/cli/tui/mcp-panel.js +99 -0
- package/dist/cli/tui/recently-denied.d.ts +15 -0
- package/dist/cli/tui/recently-denied.js +19 -0
- package/dist/cli/tui/runtime-interactions.d.ts +17 -0
- package/dist/cli/tui/runtime-interactions.js +100 -0
- package/dist/cli/tui/runtime-settings.d.ts +40 -0
- package/dist/cli/tui/runtime-settings.js +84 -0
- package/dist/cli/tui/slash-commands.js +10 -0
- package/dist/cli/tui/task-panel.d.ts +53 -0
- package/dist/cli/tui/task-panel.js +204 -0
- package/dist/cli/tui/terminal-notifications.d.ts +10 -0
- package/dist/cli/tui/terminal-notifications.js +48 -0
- package/dist/cli/tui/terminal-setup.d.ts +24 -0
- package/dist/cli/tui/terminal-setup.js +618 -0
- package/dist/cli/tui/theme-settings.d.ts +8 -0
- package/dist/cli/tui/theme-settings.js +132 -0
- package/dist/cli/tui/theme.d.ts +53 -0
- package/dist/cli/tui/theme.js +265 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.js +97 -17
- package/dist/compatibility/claude/schema.js +2 -0
- package/dist/core/runtime.d.ts +12 -0
- package/dist/core/runtime.js +24 -0
- package/dist/maintenance/self-update.js +1 -1
- package/dist/mcp/claude-mcp-management.d.ts +6 -1
- package/dist/mcp/claude-mcp-management.js +191 -44
- package/dist/mcp/claude-mcp-oauth.js +2 -0
- package/dist/mcp/claude-mcp-tools.d.ts +31 -3
- package/dist/mcp/claude-mcp-tools.js +116 -34
- package/dist/permissions/claude-permission-resolver.d.ts +3 -0
- package/dist/permissions/claude-permission-resolver.js +42 -20
- package/dist/platform/claude-version.js +2 -1
- package/dist/plugins/claude-plugin-runtime.js +11 -3
- package/dist/tools/claude-interactive-tools.d.ts +7 -0
- package/dist/tools/claude-interactive-tools.js +21 -8
- package/dist/tools/claude-task-tools.d.ts +4 -0
- package/dist/tools/claude-task-tools.js +7 -0
- package/package.json +2 -1
- package/dist/application/background-agent-manager.d.ts.map +0 -1
- package/dist/application/background-agent-manager.js.map +0 -1
- package/dist/application/background-bash-manager.d.ts.map +0 -1
- package/dist/application/background-bash-manager.js.map +0 -1
- package/dist/application/background-task-id.d.ts.map +0 -1
- package/dist/application/background-task-id.js.map +0 -1
- package/dist/application/claude-project-purge.d.ts.map +0 -1
- package/dist/application/claude-project-purge.js.map +0 -1
- package/dist/application/managed-worktree.d.ts.map +0 -1
- package/dist/application/managed-worktree.js.map +0 -1
- package/dist/application/model-compactor.d.ts.map +0 -1
- package/dist/application/model-compactor.js.map +0 -1
- package/dist/application/scheduled-prompt-manager.d.ts.map +0 -1
- package/dist/application/scheduled-prompt-manager.js.map +0 -1
- package/dist/application/session-service.d.ts.map +0 -1
- package/dist/application/session-service.js.map +0 -1
- package/dist/application/session-worktree.d.ts.map +0 -1
- package/dist/application/session-worktree.js.map +0 -1
- package/dist/application/subagent-service.d.ts.map +0 -1
- package/dist/application/subagent-service.js.map +0 -1
- package/dist/application/tool-use-summary.d.ts.map +0 -1
- package/dist/application/tool-use-summary.js.map +0 -1
- package/dist/application/top-level-agent-manager.d.ts.map +0 -1
- package/dist/application/top-level-agent-manager.js.map +0 -1
- package/dist/application/workflow-manager.d.ts.map +0 -1
- package/dist/application/workflow-manager.js.map +0 -1
- package/dist/application/workflow-meta.d.ts.map +0 -1
- package/dist/application/workflow-meta.js.map +0 -1
- package/dist/application/workflow-runtime.d.ts.map +0 -1
- package/dist/application/workflow-runtime.js.map +0 -1
- package/dist/application/workflow-worktree.d.ts.map +0 -1
- package/dist/application/workflow-worktree.js.map +0 -1
- package/dist/cli/agents-dashboard.d.ts.map +0 -1
- package/dist/cli/agents-dashboard.js.map +0 -1
- package/dist/cli/controls.d.ts.map +0 -1
- package/dist/cli/controls.js.map +0 -1
- package/dist/cli/debug.d.ts.map +0 -1
- package/dist/cli/debug.js.map +0 -1
- package/dist/cli/interactive.d.ts.map +0 -1
- package/dist/cli/interactive.js.map +0 -1
- package/dist/cli/protocol.d.ts.map +0 -1
- package/dist/cli/protocol.js.map +0 -1
- package/dist/cli/tui/claude-style.d.ts.map +0 -1
- package/dist/cli/tui/claude-style.js.map +0 -1
- package/dist/cli/tui/clipboard.d.ts.map +0 -1
- package/dist/cli/tui/clipboard.js.map +0 -1
- package/dist/cli/tui/composer-editor.d.ts.map +0 -1
- package/dist/cli/tui/composer-editor.js.map +0 -1
- package/dist/cli/tui/composer-images.d.ts.map +0 -1
- package/dist/cli/tui/composer-images.js.map +0 -1
- package/dist/cli/tui/conversation-export.d.ts.map +0 -1
- package/dist/cli/tui/conversation-export.js.map +0 -1
- package/dist/cli/tui/external-editor.d.ts.map +0 -1
- package/dist/cli/tui/external-editor.js.map +0 -1
- package/dist/cli/tui/file-picker.d.ts.map +0 -1
- package/dist/cli/tui/file-picker.js.map +0 -1
- package/dist/cli/tui/git-diff.d.ts.map +0 -1
- package/dist/cli/tui/git-diff.js.map +0 -1
- package/dist/cli/tui/hook-settings.d.ts.map +0 -1
- package/dist/cli/tui/hook-settings.js.map +0 -1
- package/dist/cli/tui/keybindings.d.ts.map +0 -1
- package/dist/cli/tui/keybindings.js.map +0 -1
- package/dist/cli/tui/memory-files.d.ts.map +0 -1
- package/dist/cli/tui/memory-files.js.map +0 -1
- package/dist/cli/tui/permission-settings.d.ts.map +0 -1
- package/dist/cli/tui/permission-settings.js.map +0 -1
- package/dist/cli/tui/slash-commands.d.ts.map +0 -1
- package/dist/cli/tui/slash-commands.js.map +0 -1
- package/dist/cli/tui/terminal-suspend.d.ts.map +0 -1
- package/dist/cli/tui/terminal-suspend.js.map +0 -1
- package/dist/cli/tui/workspace-directories.d.ts.map +0 -1
- package/dist/cli/tui/workspace-directories.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/compatibility/claude/compaction.d.ts.map +0 -1
- package/dist/compatibility/claude/compaction.js.map +0 -1
- package/dist/compatibility/claude/context.d.ts.map +0 -1
- package/dist/compatibility/claude/context.js.map +0 -1
- package/dist/compatibility/claude/dynamic-context.d.ts.map +0 -1
- package/dist/compatibility/claude/dynamic-context.js.map +0 -1
- package/dist/compatibility/claude/file-history.d.ts.map +0 -1
- package/dist/compatibility/claude/file-history.js.map +0 -1
- package/dist/compatibility/claude/file-resources.d.ts.map +0 -1
- package/dist/compatibility/claude/file-resources.js.map +0 -1
- package/dist/compatibility/claude/fork.d.ts.map +0 -1
- package/dist/compatibility/claude/fork.js.map +0 -1
- package/dist/compatibility/claude/history.d.ts.map +0 -1
- package/dist/compatibility/claude/history.js.map +0 -1
- package/dist/compatibility/claude/ownership.d.ts.map +0 -1
- package/dist/compatibility/claude/ownership.js.map +0 -1
- package/dist/compatibility/claude/paths.d.ts.map +0 -1
- package/dist/compatibility/claude/paths.js.map +0 -1
- package/dist/compatibility/claude/pr-links.d.ts.map +0 -1
- package/dist/compatibility/claude/pr-links.js.map +0 -1
- package/dist/compatibility/claude/projection.d.ts.map +0 -1
- package/dist/compatibility/claude/projection.js.map +0 -1
- package/dist/compatibility/claude/schema.d.ts.map +0 -1
- package/dist/compatibility/claude/schema.js.map +0 -1
- package/dist/compatibility/claude/shared-resources.d.ts.map +0 -1
- package/dist/compatibility/claude/shared-resources.js.map +0 -1
- package/dist/compatibility/claude/sidechain.d.ts.map +0 -1
- package/dist/compatibility/claude/sidechain.js.map +0 -1
- package/dist/compatibility/claude/tool-links.d.ts.map +0 -1
- package/dist/compatibility/claude/tool-links.js.map +0 -1
- package/dist/compatibility/claude/translation.d.ts.map +0 -1
- package/dist/compatibility/claude/translation.js.map +0 -1
- package/dist/compatibility/claude/workflow-replay.d.ts.map +0 -1
- package/dist/compatibility/claude/workflow-replay.js.map +0 -1
- package/dist/compatibility/claude/workflow.d.ts.map +0 -1
- package/dist/compatibility/claude/workflow.js.map +0 -1
- package/dist/core/compaction.d.ts.map +0 -1
- package/dist/core/compaction.js.map +0 -1
- package/dist/core/context-budget.d.ts.map +0 -1
- package/dist/core/context-budget.js.map +0 -1
- package/dist/core/context.d.ts.map +0 -1
- package/dist/core/context.js.map +0 -1
- package/dist/core/runtime.d.ts.map +0 -1
- package/dist/core/runtime.js.map +0 -1
- package/dist/core/usage.d.ts.map +0 -1
- package/dist/core/usage.js.map +0 -1
- package/dist/extensions/claude-extension-tools.d.ts.map +0 -1
- package/dist/extensions/claude-extension-tools.js.map +0 -1
- package/dist/extensions/claude-extensions.d.ts.map +0 -1
- package/dist/extensions/claude-extensions.js.map +0 -1
- package/dist/hooks/claude-hook-tools.d.ts.map +0 -1
- package/dist/hooks/claude-hook-tools.js.map +0 -1
- package/dist/hooks/claude-hooks.d.ts.map +0 -1
- package/dist/hooks/claude-hooks.js.map +0 -1
- package/dist/maintenance/doctor.d.ts.map +0 -1
- package/dist/maintenance/doctor.js.map +0 -1
- package/dist/maintenance/self-update.d.ts.map +0 -1
- package/dist/maintenance/self-update.js.map +0 -1
- package/dist/mcp/claude-mcp-management.d.ts.map +0 -1
- package/dist/mcp/claude-mcp-management.js.map +0 -1
- package/dist/mcp/claude-mcp-oauth.d.ts.map +0 -1
- package/dist/mcp/claude-mcp-oauth.js.map +0 -1
- package/dist/mcp/claude-mcp-tools.d.ts.map +0 -1
- package/dist/mcp/claude-mcp-tools.js.map +0 -1
- package/dist/mcp/praxis-mcp-server.d.ts.map +0 -1
- package/dist/mcp/praxis-mcp-server.js.map +0 -1
- package/dist/permissions/claude-auto-classifier.d.ts.map +0 -1
- package/dist/permissions/claude-auto-classifier.js.map +0 -1
- package/dist/permissions/claude-permission-resolver.d.ts.map +0 -1
- package/dist/permissions/claude-permission-resolver.js.map +0 -1
- package/dist/persistence/claude-job-store.d.ts.map +0 -1
- package/dist/persistence/claude-job-store.js.map +0 -1
- package/dist/persistence/claude-scheduled-task-store.d.ts.map +0 -1
- package/dist/persistence/claude-scheduled-task-store.js.map +0 -1
- package/dist/persistence/claude-sidechain-store.d.ts.map +0 -1
- package/dist/persistence/claude-sidechain-store.js.map +0 -1
- package/dist/persistence/claude-task-store.d.ts.map +0 -1
- package/dist/persistence/claude-task-store.js.map +0 -1
- package/dist/persistence/claude-transcript-store.d.ts.map +0 -1
- package/dist/persistence/claude-transcript-store.js.map +0 -1
- package/dist/persistence/claude-workflow-store.d.ts.map +0 -1
- package/dist/persistence/claude-workflow-store.js.map +0 -1
- package/dist/persistence/in-memory-sidechain-store.d.ts.map +0 -1
- package/dist/persistence/in-memory-sidechain-store.js.map +0 -1
- package/dist/persistence/in-memory-transcript-store.d.ts.map +0 -1
- package/dist/persistence/in-memory-transcript-store.js.map +0 -1
- package/dist/platform/atomic-write.d.ts.map +0 -1
- package/dist/platform/atomic-write.js.map +0 -1
- package/dist/platform/bounded-process-runner.d.ts.map +0 -1
- package/dist/platform/bounded-process-runner.js.map +0 -1
- package/dist/platform/claude-version.d.ts.map +0 -1
- package/dist/platform/claude-version.js.map +0 -1
- package/dist/platform/command-shell.d.ts.map +0 -1
- package/dist/platform/command-shell.js.map +0 -1
- package/dist/platform/exclusive-file-lease.d.ts.map +0 -1
- package/dist/platform/exclusive-file-lease.js.map +0 -1
- package/dist/platform/sensitive-data.d.ts.map +0 -1
- package/dist/platform/sensitive-data.js.map +0 -1
- package/dist/platform/tmux-worktree.d.ts.map +0 -1
- package/dist/platform/tmux-worktree.js.map +0 -1
- package/dist/plugins/claude-plugin-eval-discovery.d.ts.map +0 -1
- package/dist/plugins/claude-plugin-eval-discovery.js.map +0 -1
- package/dist/plugins/claude-plugin-eval-graders.d.ts.map +0 -1
- package/dist/plugins/claude-plugin-eval-graders.js.map +0 -1
- package/dist/plugins/claude-plugin-eval-runner.d.ts.map +0 -1
- package/dist/plugins/claude-plugin-eval-runner.js.map +0 -1
- package/dist/plugins/claude-plugin-eval-schema.d.ts.map +0 -1
- package/dist/plugins/claude-plugin-eval-schema.js.map +0 -1
- package/dist/plugins/claude-plugin-eval.d.ts.map +0 -1
- package/dist/plugins/claude-plugin-eval.js.map +0 -1
- package/dist/plugins/claude-plugin-maintenance.d.ts.map +0 -1
- package/dist/plugins/claude-plugin-maintenance.js.map +0 -1
- package/dist/plugins/claude-plugin-marketplace.d.ts.map +0 -1
- package/dist/plugins/claude-plugin-marketplace.js.map +0 -1
- package/dist/plugins/claude-plugin-mcpb.d.ts.map +0 -1
- package/dist/plugins/claude-plugin-mcpb.js.map +0 -1
- package/dist/plugins/claude-plugin-runtime.d.ts.map +0 -1
- package/dist/plugins/claude-plugin-runtime.js.map +0 -1
- package/dist/providers/anthropic-compatible.d.ts.map +0 -1
- package/dist/providers/anthropic-compatible.js.map +0 -1
- package/dist/providers/environment.d.ts.map +0 -1
- package/dist/providers/environment.js.map +0 -1
- package/dist/providers/fallback-provider.d.ts.map +0 -1
- package/dist/providers/fallback-provider.js.map +0 -1
- package/dist/providers/openai-compatible.d.ts.map +0 -1
- package/dist/providers/openai-compatible.js.map +0 -1
- package/dist/tools/claude-interactive-tools.d.ts.map +0 -1
- package/dist/tools/claude-interactive-tools.js.map +0 -1
- package/dist/tools/claude-lsp-formatters.d.ts.map +0 -1
- package/dist/tools/claude-lsp-formatters.js.map +0 -1
- package/dist/tools/claude-lsp-tool.d.ts.map +0 -1
- package/dist/tools/claude-lsp-tool.js.map +0 -1
- package/dist/tools/claude-scheduled-tools.d.ts.map +0 -1
- package/dist/tools/claude-scheduled-tools.js.map +0 -1
- package/dist/tools/claude-task-tools.d.ts.map +0 -1
- package/dist/tools/claude-task-tools.js.map +0 -1
- package/dist/tools/claude-user-message.d.ts.map +0 -1
- package/dist/tools/claude-user-message.js.map +0 -1
- package/dist/tools/claude-workflow-tools.d.ts.map +0 -1
- package/dist/tools/claude-workflow-tools.js.map +0 -1
- package/dist/tools/claude-worktree-tools.d.ts.map +0 -1
- package/dist/tools/claude-worktree-tools.js.map +0 -1
- package/dist/tools/filtered-tool-registry.d.ts.map +0 -1
- package/dist/tools/filtered-tool-registry.js.map +0 -1
- package/dist/tools/glob.d.ts.map +0 -1
- package/dist/tools/glob.js.map +0 -1
- package/dist/tools/local-tools.d.ts.map +0 -1
- package/dist/tools/local-tools.js.map +0 -1
- package/dist/tools/notebook.d.ts.map +0 -1
- package/dist/tools/notebook.js.map +0 -1
- package/dist/tools/pdf.d.ts.map +0 -1
- package/dist/tools/pdf.js.map +0 -1
- package/dist/tools/web.d.ts.map +0 -1
- package/dist/tools/web.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -15,14 +15,15 @@ import { loadClaudeContextResources, loadClaudeSettings, loadClaudeSharedResourc
|
|
|
15
15
|
import { AgentRunCancelledError, } from './core/runtime.js';
|
|
16
16
|
import { projectTuiHooks, } from './cli/tui/hook-settings.js';
|
|
17
17
|
import { DEFAULT_CLI_CONTROLS, resolveCliControls } from './cli/controls.js';
|
|
18
|
+
import { applyRuntimeSettingDefaults, loadRuntimeSettings, runtimeSettingsSystemPrompt, } from './cli/tui/runtime-settings.js';
|
|
18
19
|
import { createCliDebugSink } from './cli/debug.js';
|
|
19
20
|
import { ClaudePermissionResolver, } from './permissions/claude-permission-resolver.js';
|
|
20
21
|
import { createClaudeModelAutoClassifier, defaultClaudeAutoModeConfig, loadClaudeAutoModeConfig, } from './permissions/claude-auto-classifier.js';
|
|
21
22
|
import { ClaudeExtensionPermissionResolver, ClaudeExtensionToolRegistry, } from './extensions/claude-extension-tools.js';
|
|
22
23
|
import { ClaudeExtensionCatalog } from './extensions/claude-extensions.js';
|
|
23
24
|
import { ClaudeHookRunner } from './hooks/claude-hooks.js';
|
|
24
|
-
import { ClaudeMcpToolRegistry } from './mcp/claude-mcp-tools.js';
|
|
25
|
-
import { ClaudeMcpManagement, mcpScope, } from './mcp/claude-mcp-management.js';
|
|
25
|
+
import { ClaudeMcpToolRegistry, } from './mcp/claude-mcp-tools.js';
|
|
26
|
+
import { ClaudeMcpManagement, filterDisabledMcpResources, mcpScope, } from './mcp/claude-mcp-management.js';
|
|
26
27
|
import { authenticateMcpServer, ClaudeMcpOAuthStore, mcpOAuthServerIdentity, readMcpClientSecret, } from './mcp/claude-mcp-oauth.js';
|
|
27
28
|
import { servePraxisMcpStdio } from './mcp/praxis-mcp-server.js';
|
|
28
29
|
import { detectInstalledClaudeVersion } from './platform/claude-version.js';
|
|
@@ -76,7 +77,7 @@ function fileResourceHeaders(environment, providerEnvironment, credential) {
|
|
|
76
77
|
: {}),
|
|
77
78
|
};
|
|
78
79
|
}
|
|
79
|
-
function createProviderForModel(apiKey, providerEnvironment, context, controls) {
|
|
80
|
+
function createProviderForModel(apiKey, providerEnvironment, context, controls, explicitThinkingControls) {
|
|
80
81
|
return (selectedModel) => {
|
|
81
82
|
const providerOptions = {
|
|
82
83
|
apiKey,
|
|
@@ -107,8 +108,8 @@ function createProviderForModel(apiKey, providerEnvironment, context, controls)
|
|
|
107
108
|
})
|
|
108
109
|
: new OpenAICompatibleProvider({
|
|
109
110
|
...providerOptions,
|
|
110
|
-
...(
|
|
111
|
-
|
|
111
|
+
...(explicitThinkingControls.thinking === undefined &&
|
|
112
|
+
explicitThinkingControls.maxThinkingTokens === undefined
|
|
112
113
|
? {}
|
|
113
114
|
: {
|
|
114
115
|
thinking: {
|
|
@@ -686,7 +687,7 @@ const consoleIO = {
|
|
|
686
687
|
isTTY: Boolean(process.stdin.isTTY && process.stdout.isTTY),
|
|
687
688
|
readStdinLines: () => process.stdin,
|
|
688
689
|
};
|
|
689
|
-
const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = false, approveRecovery, approveTool, agent, model: interactiveModel, effort: interactiveEffort, permissionMode: interactivePermissionMode, controls = DEFAULT_CLI_CONTROLS, interactive = false, sessionKind, signal, exposeToolRegistry = false, onElicitation, askUser, approvePlan, emitToolUseSummaries = false, cwd: requestedCwd, configRoot: requestedConfigRoot, environment, providerEnvironment: requestedProviderEnvironment, }) => {
|
|
690
|
+
const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = false, approveRecovery, approveTool, agent, model: interactiveModel, effort: interactiveEffort, permissionMode: interactivePermissionMode, isSessionActionApproved, controls = DEFAULT_CLI_CONTROLS, interactive = false, sessionKind, signal, exposeToolRegistry = false, onElicitation, askUser, approvePlan, emitToolUseSummaries = false, cwd: requestedCwd, configRoot: requestedConfigRoot, environment, providerEnvironment: requestedProviderEnvironment, }) => {
|
|
690
691
|
const runtimeEnvironment = requestedProviderEnvironment ?? process.env;
|
|
691
692
|
const claudeVersion = await detectInstalledClaudeVersion();
|
|
692
693
|
const cwd = requestedCwd ?? process.cwd();
|
|
@@ -696,14 +697,24 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
696
697
|
const claudeStatePath = requestedConfigRoot || configuredRoot
|
|
697
698
|
? join(configRoot, '.claude.json')
|
|
698
699
|
: resolve(homedir(), '.claude.json');
|
|
700
|
+
const runtimeSettings = controls.safeMode || controls.bare
|
|
701
|
+
? undefined
|
|
702
|
+
: await loadRuntimeSettings({ configRoot, statePath: claudeStatePath });
|
|
703
|
+
const runtimeSettingsPrompt = runtimeSettingsSystemPrompt(runtimeSettings);
|
|
699
704
|
const cli = await resolveCliControls({
|
|
700
|
-
...controls,
|
|
705
|
+
...applyRuntimeSettingDefaults(controls, runtimeSettings),
|
|
701
706
|
...(interactiveModel === undefined ? {} : { model: interactiveModel }),
|
|
702
707
|
...(interactiveEffort === undefined ? {} : { effort: interactiveEffort }),
|
|
703
708
|
...(interactivePermissionMode === undefined
|
|
704
709
|
? {}
|
|
705
710
|
: { permissionMode: interactivePermissionMode }),
|
|
706
711
|
}, cwd);
|
|
712
|
+
const effectiveAppendSystemPrompt = [
|
|
713
|
+
runtimeSettingsPrompt,
|
|
714
|
+
cli.appendSystemPrompt,
|
|
715
|
+
]
|
|
716
|
+
.filter((value) => value !== undefined)
|
|
717
|
+
.join('\n');
|
|
707
718
|
const debug = cli.debug !== undefined || cli.debugFile !== undefined
|
|
708
719
|
? createCliDebugSink(eventSink, {
|
|
709
720
|
cwd,
|
|
@@ -738,7 +749,7 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
738
749
|
if (!providerEnvironment) {
|
|
739
750
|
throw new Error('Provider environment is unavailable');
|
|
740
751
|
}
|
|
741
|
-
providerForModel = createProviderForModel(apiKey, providerEnvironment, context, cli);
|
|
752
|
+
providerForModel = createProviderForModel(apiKey, providerEnvironment, context, cli, controls);
|
|
742
753
|
const models = [model, ...(cli.fallbackModels ?? [])].filter((candidate, index, all) => all.indexOf(candidate) === index);
|
|
743
754
|
const createProvider = providerForModel;
|
|
744
755
|
const providers = models.map((candidate) => createProvider(candidate));
|
|
@@ -932,6 +943,7 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
932
943
|
allowedTools: cli.allowedTools,
|
|
933
944
|
disallowedTools: cli.disallowedTools,
|
|
934
945
|
permissionMode,
|
|
946
|
+
...(isSessionActionApproved ? { isSessionActionApproved } : {}),
|
|
935
947
|
...(permissionMode === 'auto'
|
|
936
948
|
? {
|
|
937
949
|
autoClassifier: createClaudeModelAutoClassifier(hostedToolProvider),
|
|
@@ -958,6 +970,13 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
958
970
|
additionalReadDirectories: [claudeBackgroundTaskParent(cwd)],
|
|
959
971
|
...(environment ? { environment } : {}),
|
|
960
972
|
});
|
|
973
|
+
const runtimeMcpResources = async (candidates) => {
|
|
974
|
+
const management = new ClaudeMcpManagement({
|
|
975
|
+
configRoot,
|
|
976
|
+
cwd: workspace.cwd(),
|
|
977
|
+
});
|
|
978
|
+
return filterDisabledMcpResources(candidates, await management.disabled());
|
|
979
|
+
};
|
|
961
980
|
const mcpTools = await ClaudeMcpToolRegistry.connect({
|
|
962
981
|
base: cli.bare
|
|
963
982
|
? localTools
|
|
@@ -965,11 +984,47 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
965
984
|
base: localTools,
|
|
966
985
|
provider: hostedToolProvider,
|
|
967
986
|
}),
|
|
968
|
-
resources: resources.mcp,
|
|
987
|
+
resources: await runtimeMcpResources(resources.mcp),
|
|
988
|
+
reloadResources: async () => {
|
|
989
|
+
if (cli.strictMcpConfig)
|
|
990
|
+
return runtimeMcpResources(cli.mcpResources);
|
|
991
|
+
const refreshed = await loadClaudeSharedResources({
|
|
992
|
+
configRoot,
|
|
993
|
+
cwd: workspace.cwd(),
|
|
994
|
+
claudeStatePath,
|
|
995
|
+
...(automaticSettingSources === undefined
|
|
996
|
+
? {}
|
|
997
|
+
: { settingSources: automaticSettingSources }),
|
|
998
|
+
});
|
|
999
|
+
return runtimeMcpResources([
|
|
1000
|
+
...refreshed.mcp,
|
|
1001
|
+
...pluginResources.mcp,
|
|
1002
|
+
...cli.mcpResources,
|
|
1003
|
+
]);
|
|
1004
|
+
},
|
|
969
1005
|
cwd,
|
|
970
1006
|
configRoot,
|
|
971
1007
|
onWarning: (message) => runtimeEventSink({ type: 'warning', message }),
|
|
972
1008
|
onPromptsChanged: (prompts) => extensions.setMcpPrompts(prompts),
|
|
1009
|
+
authenticateServer: async (name) => {
|
|
1010
|
+
const record = await new ClaudeMcpManagement({
|
|
1011
|
+
configRoot,
|
|
1012
|
+
cwd: workspace.cwd(),
|
|
1013
|
+
}).get(name);
|
|
1014
|
+
const server = mcpOAuthServerIdentity(record.name, record.config);
|
|
1015
|
+
const oauth = mcpOauthOptions(record.config);
|
|
1016
|
+
const clientSecret = oauth.clientId
|
|
1017
|
+
? await new ClaudeMcpOAuthStore({ configRoot }).readClientSecret(server)
|
|
1018
|
+
: undefined;
|
|
1019
|
+
await authenticateMcpServer({
|
|
1020
|
+
configRoot,
|
|
1021
|
+
server,
|
|
1022
|
+
...oauth,
|
|
1023
|
+
...(clientSecret ? { clientSecret } : {}),
|
|
1024
|
+
noBrowser: false,
|
|
1025
|
+
write: (message) => process.stdout.write(message),
|
|
1026
|
+
});
|
|
1027
|
+
},
|
|
973
1028
|
...(onElicitation ? { onElicitation } : {}),
|
|
974
1029
|
eventSink: runtimeEventSink,
|
|
975
1030
|
...(signal ? { signal } : {}),
|
|
@@ -1036,7 +1091,8 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
1036
1091
|
cli.tools.includes('default') ||
|
|
1037
1092
|
cli.tools.includes(name)) &&
|
|
1038
1093
|
!cli.disallowedTools.includes(name));
|
|
1039
|
-
const selectedWorkflowTools = workflowToolNames.filter((name) =>
|
|
1094
|
+
const selectedWorkflowTools = workflowToolNames.filter((name) => (runtimeSettings?.workflows ?? true) &&
|
|
1095
|
+
cli.sessionPersistence &&
|
|
1040
1096
|
!cli.bare &&
|
|
1041
1097
|
(cli.tools === undefined ||
|
|
1042
1098
|
cli.tools.includes('default') ||
|
|
@@ -1098,6 +1154,9 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
1098
1154
|
enabledTools: selectedInteractiveTools,
|
|
1099
1155
|
callbacks: { askUser, approvePlan },
|
|
1100
1156
|
permissionResolverForMode,
|
|
1157
|
+
settings: {
|
|
1158
|
+
useAutoModeDuringPlan: runtimeSettings?.useAutoModeDuringPlan ?? true,
|
|
1159
|
+
},
|
|
1101
1160
|
})
|
|
1102
1161
|
: undefined;
|
|
1103
1162
|
const service = new ClaudeSessionService({
|
|
@@ -1105,6 +1164,7 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
1105
1164
|
provider: hostedToolProvider,
|
|
1106
1165
|
...(providerForModel ? { providerForModel } : {}),
|
|
1107
1166
|
tools: filteredTools,
|
|
1167
|
+
mcp: mcpTools,
|
|
1108
1168
|
permissions,
|
|
1109
1169
|
permissionResolverForMode,
|
|
1110
1170
|
extensions,
|
|
@@ -1117,6 +1177,9 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
1117
1177
|
emitToolUseSummaries,
|
|
1118
1178
|
enableWorktrees: cli.worktreeRequested || selectedWorktreeTools.length > 0,
|
|
1119
1179
|
worktreeToolNames: selectedWorktreeTools,
|
|
1180
|
+
...(runtimeSettings
|
|
1181
|
+
? { worktreeBaseRef: runtimeSettings.worktreeBaseRef }
|
|
1182
|
+
: {}),
|
|
1120
1183
|
...(interactiveTools ? { interactiveTools } : {}),
|
|
1121
1184
|
...(hooks ? { hooks } : {}),
|
|
1122
1185
|
...(agent ? { agent } : {}),
|
|
@@ -1130,9 +1193,9 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
1130
1193
|
...(cli.systemPrompt === undefined
|
|
1131
1194
|
? {}
|
|
1132
1195
|
: { systemPrompt: cli.systemPrompt }),
|
|
1133
|
-
...(
|
|
1134
|
-
? {}
|
|
1135
|
-
: {
|
|
1196
|
+
...(effectiveAppendSystemPrompt
|
|
1197
|
+
? { appendSystemPrompt: effectiveAppendSystemPrompt }
|
|
1198
|
+
: {}),
|
|
1136
1199
|
}),
|
|
1137
1200
|
conditionalRuleResolver: new ClaudeConditionalRuleResolver({
|
|
1138
1201
|
loadResources: loadContextResources,
|
|
@@ -1142,7 +1205,9 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
1142
1205
|
: {}),
|
|
1143
1206
|
...(permissionApprover ? { approveTool: permissionApprover } : {}),
|
|
1144
1207
|
...(approveRecovery ? { approveRecovery } : {}),
|
|
1145
|
-
fileCheckpointing: runtimeEnvironment.CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING ===
|
|
1208
|
+
fileCheckpointing: runtimeEnvironment.CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING ===
|
|
1209
|
+
'true' || runtimeSettings?.checkpoints === true,
|
|
1210
|
+
autoCompact: runtimeSettings?.autoCompact ?? true,
|
|
1146
1211
|
fileRewindRoots: [
|
|
1147
1212
|
...cli.additionalDirectories,
|
|
1148
1213
|
...(memoryDirectory ? [memoryDirectory] : []),
|
|
@@ -1213,6 +1278,8 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
1213
1278
|
rewindPoints: (sessionId) => service.rewindPoints(sessionId),
|
|
1214
1279
|
changeCwd: (sessionId, cwd) => service.changeCwd(sessionId, cwd),
|
|
1215
1280
|
recordCdUsage: (sessionId) => service.recordCdUsage(sessionId),
|
|
1281
|
+
approveRecentlyDenied: (sessionId, display) => service.approveRecentlyDenied(sessionId, display),
|
|
1282
|
+
retryRecentlyDenied: (sessionId, display, retrySignal) => service.retryRecentlyDenied(sessionId, display, retrySignal),
|
|
1216
1283
|
answerSideQuestion: (sessionId, question, sideSignal, onDelta, permissionMode) => service.answerSideQuestion(sessionId, question, sideSignal, onDelta, permissionMode),
|
|
1217
1284
|
recordBtwUsage: (sessionId, permissionMode) => service.recordBtwUsage(sessionId, permissionMode),
|
|
1218
1285
|
recordBackgroundUsage: (sessionId, permissionMode) => service.recordBackgroundUsage(sessionId, permissionMode),
|
|
@@ -1257,6 +1324,13 @@ const createDefaultService = async ({ eventSink, requireProvider, hooksOnly = fa
|
|
|
1257
1324
|
source: definition.kind,
|
|
1258
1325
|
})),
|
|
1259
1326
|
hookConfiguration: async () => projectTuiHooks(settings),
|
|
1327
|
+
mcpInspect: () => service.mcpInspect(),
|
|
1328
|
+
mcpReconnect: (name) => service.mcpReconnect(name),
|
|
1329
|
+
mcpAuthenticate: (name) => service.mcpAuthenticate(name),
|
|
1330
|
+
mcpReload: () => service.mcpReload(),
|
|
1331
|
+
mcpTools: (name) => service.mcpTools(name),
|
|
1332
|
+
taskSnapshots: (sessionId) => service.taskSnapshots(sessionId),
|
|
1333
|
+
stopTask: (sessionId, taskId) => service.stopTask(sessionId, taskId),
|
|
1260
1334
|
agentDefinitions: () => extensions.agentDefinitions(),
|
|
1261
1335
|
inspect: (sessionId) => service.inspect(sessionId),
|
|
1262
1336
|
export: (sessionId) => service.export(sessionId),
|
|
@@ -1322,7 +1396,7 @@ const createDefaultAutoModeCritic = async ({ model }) => {
|
|
|
1322
1396
|
if (!apiKey || !selectedModel) {
|
|
1323
1397
|
throw new Error('PRAXIS_API_KEY and a model (--model or PRAXIS_MODEL) are required');
|
|
1324
1398
|
}
|
|
1325
|
-
return createProviderForModel(apiKey, parseProviderEnvironment(process.env), parseContextEnvironment(process.env), {})(selectedModel);
|
|
1399
|
+
return createProviderForModel(apiKey, parseProviderEnvironment(process.env), parseContextEnvironment(process.env), {}, {})(selectedModel);
|
|
1326
1400
|
};
|
|
1327
1401
|
const defaultPluginEvalRuntimeFactory = {
|
|
1328
1402
|
create: async (options) => {
|
|
@@ -1413,7 +1487,7 @@ const defaultPluginEvalJudge = {
|
|
|
1413
1487
|
const apiKey = environment.PRAXIS_API_KEY;
|
|
1414
1488
|
if (!apiKey)
|
|
1415
1489
|
throw new Error('PRAXIS_API_KEY is required for paid eval graders');
|
|
1416
|
-
const provider = createProviderForModel(apiKey, parseProviderEnvironment(environment), parseContextEnvironment(environment), {})(model);
|
|
1490
|
+
const provider = createProviderForModel(apiKey, parseProviderEnvironment(environment), parseContextEnvironment(environment), {}, {})(model);
|
|
1417
1491
|
const prompt = `You are an eval judge. Return only JSON matching {"passed":boolean,"explanation":string}.
|
|
1418
1492
|
|
|
1419
1493
|
Criteria:
|
|
@@ -1928,7 +2002,13 @@ async function executeSelfUpdateCommand(argv, io, dependencies) {
|
|
|
1928
2002
|
if (operands.length > 0) {
|
|
1929
2003
|
throw new Error(`${command} takes no operands`);
|
|
1930
2004
|
}
|
|
1931
|
-
const
|
|
2005
|
+
const runtimeSettings = await loadRuntimeSettings();
|
|
2006
|
+
const result = await dependencies.selfUpdate?.({
|
|
2007
|
+
operation: 'update',
|
|
2008
|
+
...(runtimeSettings.autoUpdatesChannel === 'latest'
|
|
2009
|
+
? {}
|
|
2010
|
+
: { target: runtimeSettings.autoUpdatesChannel }),
|
|
2011
|
+
});
|
|
1932
2012
|
if (!result)
|
|
1933
2013
|
throw new Error('Self-update unavailable');
|
|
1934
2014
|
if (json)
|
|
@@ -38,12 +38,14 @@ const FORKABLE_SYSTEM_SUBTYPES = new Set([
|
|
|
38
38
|
'away_summary',
|
|
39
39
|
'compact_boundary',
|
|
40
40
|
'local_command',
|
|
41
|
+
'permission_retry',
|
|
41
42
|
'stop_hook_summary',
|
|
42
43
|
'turn_duration',
|
|
43
44
|
]);
|
|
44
45
|
const APPENDABLE_SYSTEM_SUBTYPES = new Set([
|
|
45
46
|
'compact_boundary',
|
|
46
47
|
'local_command',
|
|
48
|
+
'permission_retry',
|
|
47
49
|
]);
|
|
48
50
|
const FORKABLE_ATTACHMENT_TYPES = new Set([
|
|
49
51
|
'agent_listing_delta',
|
package/dist/core/runtime.d.ts
CHANGED
|
@@ -167,6 +167,9 @@ export type RuntimeEvent = {
|
|
|
167
167
|
type: 'permission-decision';
|
|
168
168
|
callId: string;
|
|
169
169
|
behavior: PermissionBehavior;
|
|
170
|
+
reason?: string;
|
|
171
|
+
source?: 'auto-classifier' | 'rule' | 'mode' | 'default';
|
|
172
|
+
autoModeOutcome?: AutoModePermissionOutcome;
|
|
170
173
|
} | {
|
|
171
174
|
type: 'tool-result';
|
|
172
175
|
callId: string;
|
|
@@ -310,18 +313,27 @@ export interface PermissionResolutionContext {
|
|
|
310
313
|
messages?: readonly ModelMessage[];
|
|
311
314
|
signal?: AbortSignal;
|
|
312
315
|
}
|
|
316
|
+
export type PermissionDecisionSource = 'auto-classifier' | 'rule' | 'mode' | 'default';
|
|
317
|
+
export type AutoModePermissionOutcome = 'blocked' | 'unavailable';
|
|
313
318
|
export type PermissionDecision = {
|
|
314
319
|
behavior: 'allow';
|
|
320
|
+
source?: PermissionDecisionSource;
|
|
315
321
|
} | {
|
|
316
322
|
behavior: 'ask';
|
|
317
323
|
reason?: string;
|
|
324
|
+
source?: PermissionDecisionSource;
|
|
318
325
|
} | {
|
|
319
326
|
behavior: 'deny';
|
|
320
327
|
reason: string;
|
|
328
|
+
source?: PermissionDecisionSource;
|
|
321
329
|
};
|
|
322
330
|
export interface PermissionResolver {
|
|
323
331
|
resolve(call: ModelToolCall, context?: PermissionResolutionContext): PermissionDecision | Promise<PermissionDecision>;
|
|
324
332
|
}
|
|
333
|
+
export declare function annotatePermissionDecision<T extends PermissionDecision>(decision: T, source: PermissionDecisionSource): T;
|
|
334
|
+
export declare function permissionDecisionSource(decision: PermissionDecision): PermissionDecisionSource | undefined;
|
|
335
|
+
export declare function annotateAutoModePermissionOutcome<T extends PermissionDecision>(decision: T, outcome: AutoModePermissionOutcome): T;
|
|
336
|
+
export declare function autoModePermissionOutcome(decision: PermissionDecision): AutoModePermissionOutcome | undefined;
|
|
325
337
|
export interface AgentRunObserver {
|
|
326
338
|
assistantCompleted(message: {
|
|
327
339
|
content: string;
|
package/dist/core/runtime.js
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
const permissionDecisionSources = new WeakMap();
|
|
2
|
+
const autoModePermissionOutcomes = new WeakMap();
|
|
3
|
+
export function annotatePermissionDecision(decision, source) {
|
|
4
|
+
if (decision.source === undefined)
|
|
5
|
+
permissionDecisionSources.set(decision, source);
|
|
6
|
+
return decision;
|
|
7
|
+
}
|
|
8
|
+
export function permissionDecisionSource(decision) {
|
|
9
|
+
return decision.source ?? permissionDecisionSources.get(decision);
|
|
10
|
+
}
|
|
11
|
+
export function annotateAutoModePermissionOutcome(decision, outcome) {
|
|
12
|
+
autoModePermissionOutcomes.set(decision, outcome);
|
|
13
|
+
return decision;
|
|
14
|
+
}
|
|
15
|
+
export function autoModePermissionOutcome(decision) {
|
|
16
|
+
return autoModePermissionOutcomes.get(decision);
|
|
17
|
+
}
|
|
1
18
|
export class ModelProviderError extends Error {
|
|
2
19
|
name = 'ModelProviderError';
|
|
3
20
|
retryable;
|
|
@@ -446,10 +463,17 @@ export class AgentRuntime {
|
|
|
446
463
|
}
|
|
447
464
|
await this.requireRecoveryApproval(prepared, request);
|
|
448
465
|
const decision = await permissions.resolve(prepared, context);
|
|
466
|
+
const source = permissionDecisionSource(decision);
|
|
467
|
+
const autoModeOutcome = autoModePermissionOutcome(decision);
|
|
449
468
|
this.emit({
|
|
450
469
|
type: 'permission-decision',
|
|
451
470
|
callId: call.id,
|
|
452
471
|
behavior: decision.behavior,
|
|
472
|
+
...('reason' in decision && decision.reason !== undefined
|
|
473
|
+
? { reason: decision.reason }
|
|
474
|
+
: {}),
|
|
475
|
+
...(source === undefined ? {} : { source }),
|
|
476
|
+
...(autoModeOutcome === undefined ? {} : { autoModeOutcome }),
|
|
453
477
|
});
|
|
454
478
|
let allowed = decision.behavior === 'allow';
|
|
455
479
|
let denialReason;
|
|
@@ -41,7 +41,7 @@ export async function runSelfUpdate(options) {
|
|
|
41
41
|
}
|
|
42
42
|
const operation = options.operation;
|
|
43
43
|
const force = options.force === true;
|
|
44
|
-
const target = operation === 'install' ?
|
|
44
|
+
const target = requireTarget(options.target ?? (operation === 'install' ? 'stable' : 'latest'));
|
|
45
45
|
const npmExecutable = options.npmExecutable ?? (process.platform === 'win32' ? 'npm.cmd' : 'npm');
|
|
46
46
|
const spec = `${packageName}@${target}`;
|
|
47
47
|
const args = [
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ClaudeResourceScope } from '../compatibility/claude/shared-resources.js';
|
|
1
|
+
import { type ClaudeJsonResource, type ClaudeResourceScope } from '../compatibility/claude/shared-resources.js';
|
|
2
2
|
export type McpScope = ClaudeResourceScope;
|
|
3
3
|
export type McpServerConfig = Record<string, unknown>;
|
|
4
4
|
export interface McpServerRecord {
|
|
@@ -10,16 +10,21 @@ export interface McpServerRecord {
|
|
|
10
10
|
interface McpManagementOptions {
|
|
11
11
|
configRoot?: string;
|
|
12
12
|
cwd: string;
|
|
13
|
+
beforeCommit?: (path: string, attempt: number) => Promise<void>;
|
|
13
14
|
}
|
|
15
|
+
export declare function filterDisabledMcpResources(resources: readonly ClaudeJsonResource[], disabledNames: readonly string[]): readonly ClaudeJsonResource[];
|
|
14
16
|
export declare class ClaudeMcpManagement {
|
|
15
17
|
private readonly configRoot;
|
|
16
18
|
private readonly cwd;
|
|
19
|
+
private readonly beforeCommit?;
|
|
17
20
|
constructor(options: McpManagementOptions);
|
|
18
21
|
list(scope?: McpScope): Promise<McpServerRecord[]>;
|
|
19
22
|
get(name: string, scope?: McpScope): Promise<McpServerRecord>;
|
|
20
23
|
add(name: string, config: McpServerConfig, scope?: McpScope): Promise<McpServerRecord>;
|
|
21
24
|
remove(name: string, scope?: McpScope): Promise<McpServerRecord>;
|
|
22
25
|
resetProjectChoices(): Promise<void>;
|
|
26
|
+
disabled(): Promise<readonly string[]>;
|
|
27
|
+
setEnabled(name: string, scope: McpScope, enabled: boolean): Promise<void>;
|
|
23
28
|
private target;
|
|
24
29
|
private validateName;
|
|
25
30
|
}
|