ummaya 0.2.3 → 0.2.5
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 +17 -3
- package/bin/ummaya +10 -1
- package/npm-shrinkwrap.json +253 -2
- package/package.json +5 -1
- package/prompts/manifest.yaml +2 -2
- package/prompts/session_guidance_v1.md +3 -1
- package/prompts/system_v1.md +9 -7
- package/pyproject.toml +26 -7
- package/specs/2803-document-production-hardening/contracts/document-tools.schema.json +1043 -0
- package/src/ummaya/_canonical/__init__.py +2 -0
- package/src/ummaya/context/builder.py +17 -11
- package/src/ummaya/engine/engine.py +30 -113
- package/src/ummaya/engine/query.py +20 -0
- package/src/ummaya/evidence/__init__.py +44 -0
- package/src/ummaya/evidence/__main__.py +7 -0
- package/src/ummaya/evidence/dataset_contract.py +193 -0
- package/src/ummaya/evidence/document_authoring_cases.py +33 -0
- package/src/ummaya/evidence/document_harness.py +313 -0
- package/src/ummaya/evidence/document_viewer_ux.py +391 -0
- package/src/ummaya/evidence/gates.py +70 -0
- package/src/ummaya/evidence/json_types.py +20 -0
- package/src/ummaya/evidence/models.py +145 -0
- package/src/ummaya/evidence/output_payload.py +89 -0
- package/src/ummaya/evidence/payload_documents.py +233 -0
- package/src/ummaya/evidence/route_contracts.py +224 -0
- package/src/ummaya/evidence/route_helpers.py +150 -0
- package/src/ummaya/evidence/runner.py +177 -0
- package/src/ummaya/evidence/source_provenance.py +246 -0
- package/src/ummaya/evidence/source_provenance_redaction.py +176 -0
- package/src/ummaya/evidence/task_registry.py +264 -0
- package/src/ummaya/evidence/tool_layer.py +39 -0
- package/src/ummaya/evidence/tool_layer_models.py +151 -0
- package/src/ummaya/ipc/adapter_manifest_emitter.py +26 -10
- package/src/ummaya/ipc/document_intent_normalization.py +185 -0
- package/src/ummaya/ipc/frame_schema.py +52 -5
- package/src/ummaya/ipc/route_diagnostics.py +73 -0
- package/src/ummaya/ipc/stdio.py +2282 -417
- package/src/ummaya/llm/client.py +234 -59
- package/src/ummaya/llm/config.py +8 -3
- package/src/ummaya/llm/reasoning.py +84 -0
- package/src/ummaya/primitives/__init__.py +6 -2
- package/src/ummaya/primitives/delegation.py +1 -1
- package/src/ummaya/primitives/document.py +28 -0
- package/src/ummaya/settings.py +0 -3
- package/src/ummaya/tools/discovery_bridge.py +34 -2
- package/src/ummaya/tools/documents/__init__.py +297 -0
- package/src/ummaya/tools/documents/adapter_registry.py +487 -0
- package/src/ummaya/tools/documents/archive_container_probe.py +167 -0
- package/src/ummaya/tools/documents/artifact_store.py +454 -0
- package/src/ummaya/tools/documents/authoring.py +283 -0
- package/src/ummaya/tools/documents/baselines.py +114 -0
- package/src/ummaya/tools/documents/capability.py +331 -0
- package/src/ummaya/tools/documents/contracts.py +112 -0
- package/src/ummaya/tools/documents/conversion.py +521 -0
- package/src/ummaya/tools/documents/diff.py +275 -0
- package/src/ummaya/tools/documents/engines.py +163 -0
- package/src/ummaya/tools/documents/evaluation.py +291 -0
- package/src/ummaya/tools/documents/explicit_values.py +108 -0
- package/src/ummaya/tools/documents/fixtures.py +174 -0
- package/src/ummaya/tools/documents/format_completion_audit.py +471 -0
- package/src/ummaya/tools/documents/formats/__init__.py +2 -0
- package/src/ummaya/tools/documents/formats/archive.py +528 -0
- package/src/ummaya/tools/documents/formats/base.py +41 -0
- package/src/ummaya/tools/documents/formats/code_file.py +211 -0
- package/src/ummaya/tools/documents/formats/data_file.py +272 -0
- package/src/ummaya/tools/documents/formats/hwp.py +284 -0
- package/src/ummaya/tools/documents/formats/hwpx.py +1837 -0
- package/src/ummaya/tools/documents/formats/odf.py +435 -0
- package/src/ummaya/tools/documents/formats/ooxml.py +1030 -0
- package/src/ummaya/tools/documents/formats/passive.py +766 -0
- package/src/ummaya/tools/documents/formats/pdf.py +702 -0
- package/src/ummaya/tools/documents/formats/text_web.py +268 -0
- package/src/ummaya/tools/documents/hwp_conversion_probe.py +178 -0
- package/src/ummaya/tools/documents/hwp_direct_candidate.py +141 -0
- package/src/ummaya/tools/documents/inspection.py +289 -0
- package/src/ummaya/tools/documents/intake.py +1079 -0
- package/src/ummaya/tools/documents/legacy_office_promotion_probe.py +366 -0
- package/src/ummaya/tools/documents/models.py +1598 -0
- package/src/ummaya/tools/documents/odf_promotion_probe.py +167 -0
- package/src/ummaya/tools/documents/orchestrator.py +96 -0
- package/src/ummaya/tools/documents/passive_capability_probe.py +251 -0
- package/src/ummaya/tools/documents/patch.py +170 -0
- package/src/ummaya/tools/documents/pdfa_conformance.py +284 -0
- package/src/ummaya/tools/documents/pdfa_promotion_probe.py +198 -0
- package/src/ummaya/tools/documents/permissions.py +110 -0
- package/src/ummaya/tools/documents/planner.py +616 -0
- package/src/ummaya/tools/documents/registry.py +2733 -0
- package/src/ummaya/tools/documents/render.py +978 -0
- package/src/ummaya/tools/documents/render_comparison.py +113 -0
- package/src/ummaya/tools/documents/render_comparison_models.py +74 -0
- package/src/ummaya/tools/documents/render_comparison_regions.py +73 -0
- package/src/ummaya/tools/documents/render_comparison_style.py +161 -0
- package/src/ummaya/tools/documents/reread.py +157 -0
- package/src/ummaya/tools/documents/runtime_authoring.py +244 -0
- package/src/ummaya/tools/documents/runtime_authoring_bundle.py +76 -0
- package/src/ummaya/tools/documents/scorecard.py +184 -0
- package/src/ummaya/tools/documents/socratic_planner.py +193 -0
- package/src/ummaya/tools/documents/style.py +48 -0
- package/src/ummaya/tools/documents/tool_defs.py +523 -0
- package/src/ummaya/tools/documents/validate.py +347 -0
- package/src/ummaya/tools/executor.py +61 -12
- package/src/ummaya/tools/geocoding/kakao_client.py +1 -2
- package/src/ummaya/tools/kma/apihub_catalog.py +984 -1
- package/src/ummaya/tools/kma/apihub_structured_adapter.py +86 -6
- package/src/ummaya/tools/kma/apihub_url_adapter.py +593 -0
- package/src/ummaya/tools/kma/apihub_url_catalog.py +296 -0
- package/src/ummaya/tools/live_proxy.py +0 -3
- package/src/ummaya/tools/location_adapters.py +8 -6
- package/src/ummaya/tools/manifest_metadata.py +16 -3
- package/src/ummaya/tools/models.py +5 -1
- package/src/ummaya/tools/mvp_surface.py +2 -2
- package/src/ummaya/tools/nmc/emergency_search.py +8 -6
- package/src/ummaya/tools/register_all.py +17 -0
- package/src/ummaya/tools/registry.py +10 -1
- package/src/ummaya/tools/resolve_location.py +4 -4
- package/src/ummaya/tools/routing/__init__.py +59 -0
- package/src/ummaya/tools/routing/builder.py +105 -0
- package/src/ummaya/tools/routing/cards.py +29 -0
- package/src/ummaya/tools/routing/decision_service.py +534 -0
- package/src/ummaya/tools/routing/decision_types.py +74 -0
- package/src/ummaya/tools/routing/feasibility.py +122 -0
- package/src/ummaya/tools/routing/intent.py +17 -0
- package/src/ummaya/tools/routing/intent_extractor.py +207 -0
- package/src/ummaya/tools/routing/intent_patterns.py +160 -0
- package/src/ummaya/tools/routing/intent_public_data.py +150 -0
- package/src/ummaya/tools/routing/intent_types.py +48 -0
- package/src/ummaya/tools/routing/lint.py +78 -0
- package/src/ummaya/tools/routing/metadata.py +174 -0
- package/src/ummaya/tools/routing/projection.py +340 -0
- package/src/ummaya/tools/routing/retrieval_policy.py +629 -0
- package/src/ummaya/tools/routing/schema.py +81 -0
- package/src/ummaya/tools/routing/types.py +96 -0
- package/src/ummaya/tools/routing_index.py +2 -2
- package/src/ummaya/tools/search.py +40 -106
- package/src/ummaya/tools/verified_data_go_kr/_manifest.py +115 -25
- package/src/ummaya/tools/verified_data_go_kr/airkorea_air_quality.py +109 -4
- package/src/ummaya/tools/verified_data_go_kr/nmc_aed_site.py +108 -2
- package/src/ummaya/tools/verified_data_go_kr/pps_bid_public_info.py +174 -9
- package/src/ummaya/tools/verified_data_go_kr/tago_bus_arrival.py +66 -3
- package/src/ummaya/tools/verified_data_go_kr/tago_bus_location.py +12 -2
- package/src/ummaya/tools/verified_data_go_kr/tago_bus_route.py +8 -2
- package/src/ummaya/tools/verified_data_go_kr/tago_bus_route_station.py +114 -0
- package/src/ummaya/tools/verified_data_go_kr/tago_bus_station.py +14 -3
- package/src/ummaya/tools/verify_canonical_map.py +21 -0
- package/tests/fixtures/documents/public_forms/baselines.yaml +113 -0
- package/tui/package.json +1 -2
- package/tui/src/.cc-byte-identical-whitelist.yaml +266 -0
- package/tui/src/QueryEngine.ts +12 -4
- package/tui/src/bridge/inboundAttachments.ts +3 -3
- package/tui/src/cli/handlers/auth.ts +4 -13
- package/tui/src/cli/handlers/mcp.tsx +3 -3
- package/tui/src/cli/print.ts +69 -18
- package/tui/src/cli/update.ts +13 -13
- package/tui/src/commands/copy/index.ts +1 -1
- package/tui/src/commands/cost/cost.ts +2 -2
- package/tui/src/commands/init-verifiers.ts +5 -5
- package/tui/src/commands/init.ts +30 -30
- package/tui/src/commands/insights.ts +44 -44
- package/tui/src/commands/install-github-app/install-github-app.tsx +2 -2
- package/tui/src/commands/install-github-app/setupGitHubActions.ts +3 -3
- package/tui/src/commands/install-github-app/types.ts +8 -30
- package/tui/src/commands/install.tsx +5 -5
- package/tui/src/commands/mcp/addCommand.ts +5 -5
- package/tui/src/commands/mcp/xaaIdpCommand.ts +2 -2
- package/tui/src/commands/plugin/ManageMarketplaces.tsx +2 -2
- package/tui/src/commands/plugin/types.ts +6 -28
- package/tui/src/commands/plugin/unifiedTypes.ts +4 -26
- package/tui/src/commands/reasoning/index.ts +13 -0
- package/tui/src/commands/reasoning/reasoning.tsx +177 -0
- package/tui/src/commands/rename/generateSessionName.ts +1 -1
- package/tui/src/commands/thinkback/thinkback.tsx +3 -3
- package/tui/src/commands.ts +2 -0
- package/tui/src/components/Feedback.tsx +1 -1
- package/tui/src/components/LogoV2/EmergencyTip.tsx +11 -2
- package/tui/src/components/LogoV2/WelcomeV2.tsx +1 -3
- package/tui/src/components/Messages.tsx +2 -1
- package/tui/src/components/ScrollKeybindingHandler.tsx +6 -6
- package/tui/src/components/Spinner/types.ts +6 -28
- package/tui/src/components/Spinner.tsx +2 -2
- package/tui/src/components/agents/generateAgent.ts +1 -1
- package/tui/src/components/agents/new-agent-creation/types.ts +4 -26
- package/tui/src/components/config/EnvSecretIsolatedEditor.tsx +1 -1
- package/tui/src/components/design-system/LoadingState.tsx +2 -2
- package/tui/src/components/mcp/types.ts +16 -38
- package/tui/src/components/messages/AssistantToolUseMessage.tsx +3 -2
- package/tui/src/components/messages/UserCrossSessionMessage.ts +16 -4
- package/tui/src/components/messages/UserForkBoilerplateMessage.ts +16 -4
- package/tui/src/components/messages/UserGitHubWebhookMessage.ts +16 -4
- package/tui/src/components/messages/UserToolResultMessage/utils.tsx +3 -2
- package/tui/src/components/permissions/MonitorPermissionRequest/MonitorPermissionRequest.ts +9 -4
- package/tui/src/components/permissions/ReviewArtifactPermissionRequest/ReviewArtifactPermissionRequest.ts +9 -4
- package/tui/src/components/primitive/DocumentSocraticReviewBlock.tsx +129 -0
- package/tui/src/components/primitive/DocumentToolResultCard.tsx +224 -0
- package/tui/src/components/primitive/documentSocraticReview.ts +215 -0
- package/tui/src/components/primitive/index.tsx +43 -1
- package/tui/src/components/primitive/types.ts +137 -0
- package/tui/src/components/ui/option.ts +4 -26
- package/tui/src/constants/common.ts +0 -2
- package/tui/src/constants/prompts.ts +4 -3
- package/tui/src/constants/querySource.ts +4 -26
- package/tui/src/entrypoints/sdk/controlTypes.ts +26 -48
- package/tui/src/entrypoints/sdk/coreTypes.generated.ts +3 -25
- package/tui/src/entrypoints/sdk/runtimeTypes.ts +38 -60
- package/tui/src/entrypoints/sdk/sdkUtilityTypes.ts +4 -26
- package/tui/src/entrypoints/sdk/settingsTypes.generated.ts +3 -25
- package/tui/src/entrypoints/sdk/toolTypes.ts +3 -25
- package/tui/src/hooks/toolPermission/handlers/interactiveHandler.ts +10 -0
- package/tui/src/hooks/useApiKeyVerification.ts +1 -1
- package/tui/src/hooks/useVirtualScroll.ts +1 -1
- package/tui/src/ink/ink.tsx +33 -14
- package/tui/src/ink/reconciler.ts +2 -3
- package/tui/src/ink/render-to-screen.ts +30 -10
- package/tui/src/ipc/bridge.ts +62 -15
- package/tui/src/ipc/bridgeSingleton.ts +5 -1
- package/tui/src/ipc/codec.ts +29 -3
- package/tui/src/ipc/frames.generated.ts +407 -312
- package/tui/src/ipc/llmClient.ts +279 -76
- package/tui/src/ipc/llmTypes.ts +16 -1
- package/tui/src/ipc/schema/frame.schema.json +1 -3475
- package/tui/src/keybindings/defaultBindings.ts +4 -0
- package/tui/src/main.tsx +32 -11
- package/tui/src/native-ts/file-index/index.ts +33 -3
- package/tui/src/observability/surface.ts +2 -2
- package/tui/src/probes/toolRegistryProbe.tsx +3 -1
- package/tui/src/projectOnboardingState.ts +7 -6
- package/tui/src/query/chatMessageTypes.ts +18 -0
- package/tui/src/query/chatMessagesBuilder.ts +1 -1
- package/tui/src/query/deps.ts +1 -1
- package/tui/src/query/messageGuards.ts +106 -0
- package/tui/src/query/publicDataTerminalRepair.ts +384 -0
- package/tui/src/query/run.ts +1075 -0
- package/tui/src/query/supportBoundary.ts +168 -0
- package/tui/src/query/toolResultErrors.ts +103 -0
- package/tui/src/query/toolRunner.ts +687 -0
- package/tui/src/query/unavailableToolRepair.ts +118 -0
- package/tui/src/query.ts +9 -1721
- package/tui/src/screens/REPL.tsx +42 -31
- package/tui/src/services/api/adapterManifest.ts +4 -0
- package/tui/src/services/api/backendChat/events.ts +117 -0
- package/tui/src/services/api/backendChat/finalMessage.ts +40 -0
- package/tui/src/services/api/backendChat/frame.ts +9 -0
- package/tui/src/services/api/backendChat/streaming.ts +430 -0
- package/tui/src/services/api/backendChat/types.ts +62 -0
- package/tui/src/services/api/backendChat.ts +1 -0
- package/tui/src/services/api/client.ts +98 -14
- package/tui/src/services/api/errorUtils.ts +5 -5
- package/tui/src/services/api/errors.ts +1 -1
- package/tui/src/services/api/logging.ts +1 -1
- package/tui/src/services/api/ummaya/evidence.ts +194 -0
- package/tui/src/services/api/ummaya/messages.ts +255 -0
- package/tui/src/services/api/ummaya/nonStreaming.ts +66 -0
- package/tui/src/services/api/ummaya/provider.ts +200 -0
- package/tui/src/services/api/ummaya/reasoning.ts +24 -0
- package/tui/src/services/api/ummaya/request.ts +200 -0
- package/tui/src/services/api/ummaya/selectionContext.ts +240 -0
- package/tui/src/services/api/ummaya/streaming.ts +365 -0
- package/tui/src/services/api/ummaya/streamingPayload.ts +129 -0
- package/tui/src/services/api/ummaya/streamingReader.ts +40 -0
- package/tui/src/services/api/ummaya/toolSelection.ts +217 -0
- package/tui/src/services/api/ummaya/types.ts +110 -0
- package/tui/src/services/api/ummaya/usage.ts +30 -0
- package/tui/src/services/api/ummaya.ts +26 -364
- package/tui/src/services/api/withRetry.ts +1 -1
- package/tui/src/services/awaySummary.ts +2 -2
- package/tui/src/services/claudeAiLimits.ts +1 -1
- package/tui/src/services/compact/autoCompact.ts +1 -1
- package/tui/src/services/compact/compact.ts +1 -1
- package/tui/src/services/lsp/types.ts +8 -30
- package/tui/src/services/tips/types.ts +6 -28
- package/tui/src/services/tokenEstimation.ts +1 -1
- package/tui/src/services/toolRegistry/bootGuard.ts +5 -5
- package/tui/src/services/toolUseSummary/toolUseSummaryGenerator.ts +1 -1
- package/tui/src/services/tools/toolExecution.ts +94 -1
- package/tui/src/skills/bundled/stuck.ts +12 -12
- package/tui/src/state/AppStateStore.ts +7 -0
- package/tui/src/store/pendingPermissionSlot.ts +1 -1
- package/tui/src/store/session-store.ts +10 -36
- package/tui/src/stubs/any-stub.ts +15 -10
- package/tui/src/stubs/color-diff-napi.ts +37 -23
- package/tui/src/stubs/globals.d.ts +3 -3
- package/tui/src/stubs/macro-preload.ts +23 -12
- package/tui/src/tools/AdapterTool/AdapterTool.ts +1239 -163
- package/tui/src/tools/AdapterTool/routeDiagnostics.ts +75 -0
- package/tui/src/tools/AgentTool/AgentTool.tsx +84 -1371
- package/tui/src/tools/AgentTool/agentToolHandoff.ts +114 -0
- package/tui/src/tools/AgentTool/agentToolPartialResult.ts +16 -0
- package/tui/src/tools/AgentTool/agentToolProgress.ts +32 -0
- package/tui/src/tools/AgentTool/agentToolResolver.ts +161 -0
- package/tui/src/tools/AgentTool/agentToolResult.ts +163 -0
- package/tui/src/tools/AgentTool/agentToolUtils.ts +14 -686
- package/tui/src/tools/AgentTool/asyncAgentLifecycle.ts +208 -0
- package/tui/src/tools/AgentTool/asyncLifecycle.ts +153 -0
- package/tui/src/tools/AgentTool/backgroundedCompletion.ts +126 -0
- package/tui/src/tools/AgentTool/backgroundedLifecycle.ts +174 -0
- package/tui/src/tools/AgentTool/foregroundBackground.ts +83 -0
- package/tui/src/tools/AgentTool/foregroundDrain.tsx +133 -0
- package/tui/src/tools/AgentTool/foregroundFinalize.ts +98 -0
- package/tui/src/tools/AgentTool/foregroundLifecycle.tsx +237 -0
- package/tui/src/tools/AgentTool/foregroundProgress.tsx +169 -0
- package/tui/src/tools/AgentTool/foregroundTask.ts +89 -0
- package/tui/src/tools/AgentTool/forkSubagent.ts +1 -12
- package/tui/src/tools/AgentTool/forkSubagentGate.ts +34 -0
- package/tui/src/tools/AgentTool/launchRouting.ts +203 -0
- package/tui/src/tools/AgentTool/lifecycle.ts +244 -0
- package/tui/src/tools/AgentTool/mcpRouting.ts +73 -0
- package/tui/src/tools/AgentTool/orchestrationSupport.ts +70 -0
- package/tui/src/tools/AgentTool/permissions.ts +39 -0
- package/tui/src/tools/AgentTool/promptSetup.ts +181 -0
- package/tui/src/tools/AgentTool/remoteRouting.ts +62 -0
- package/tui/src/tools/AgentTool/resultMapping.ts +116 -0
- package/tui/src/tools/AgentTool/resumeAgent.ts +39 -107
- package/tui/src/tools/AgentTool/resumeAgentHelpers.ts +140 -0
- package/tui/src/tools/AgentTool/runAgent.ts +1 -1
- package/tui/src/tools/AgentTool/runtimeConfig.ts +57 -0
- package/tui/src/tools/AgentTool/schemas.ts +196 -0
- package/tui/src/tools/AgentTool/sourceVerificationPropagation.ts +263 -0
- package/tui/src/tools/AgentTool/worktreeLifecycle.ts +105 -0
- package/tui/src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx +174 -202
- package/tui/src/tools/BashTool/BashTool.tsx +71 -1072
- package/tui/src/tools/BashTool/bashCommandHelpers.ts +12 -12
- package/tui/src/tools/BashTool/bashPermissions/astPreflight.ts +173 -0
- package/tui/src/tools/BashTool/bashPermissions/classifierChecks.ts +199 -0
- package/tui/src/tools/BashTool/bashPermissions/compoundGuards.ts +53 -0
- package/tui/src/tools/BashTool/bashPermissions/constants.ts +99 -0
- package/tui/src/tools/BashTool/bashPermissions/index.ts +38 -0
- package/tui/src/tools/BashTool/bashPermissions/legacyMisparsing.ts +62 -0
- package/tui/src/tools/BashTool/bashPermissions/main.ts +135 -0
- package/tui/src/tools/BashTool/bashPermissions/normalizedCommands.ts +33 -0
- package/tui/src/tools/BashTool/bashPermissions/operatorFlow.ts +98 -0
- package/tui/src/tools/BashTool/bashPermissions/permissionChecks.ts +200 -0
- package/tui/src/tools/BashTool/bashPermissions/prefixSuggestions.ts +88 -0
- package/tui/src/tools/BashTool/bashPermissions/promptClassifierRules.ts +125 -0
- package/tui/src/tools/BashTool/bashPermissions/ruleDelegates.ts +19 -0
- package/tui/src/tools/BashTool/bashPermissions/ruleMatching.ts +145 -0
- package/tui/src/tools/BashTool/bashPermissions/sandboxAutoAllow.ts +75 -0
- package/tui/src/tools/BashTool/bashPermissions/subcommandFlow.ts +205 -0
- package/tui/src/tools/BashTool/bashPermissions/subcommandGuards.ts +73 -0
- package/tui/src/tools/BashTool/bashPermissions/subcommandResultHelpers.ts +116 -0
- package/tui/src/tools/BashTool/bashPermissions/types.ts +26 -0
- package/tui/src/tools/BashTool/bashPermissions/wrapperStripping.ts +139 -0
- package/tui/src/tools/BashTool/bashPermissions.ts +26 -2621
- package/tui/src/tools/BashTool/call.ts +202 -0
- package/tui/src/tools/BashTool/callLoader.ts +35 -0
- package/tui/src/tools/BashTool/commandClassification.ts +151 -0
- package/tui/src/tools/BashTool/commandClassificationLoader.ts +40 -0
- package/tui/src/tools/BashTool/cwdReset.ts +33 -0
- package/tui/src/tools/BashTool/lineTruncation.ts +11 -0
- package/tui/src/tools/BashTool/modeValidation.ts +13 -1
- package/tui/src/tools/BashTool/outputPersistence.ts +42 -0
- package/tui/src/tools/BashTool/permissionClassification.ts +66 -0
- package/tui/src/tools/BashTool/permissionLoader.ts +44 -0
- package/tui/src/tools/BashTool/resultLoader.ts +29 -0
- package/tui/src/tools/BashTool/resultMapping.ts +83 -0
- package/tui/src/tools/BashTool/sandboxPolicy.ts +79 -0
- package/tui/src/tools/BashTool/schemas.ts +65 -0
- package/tui/src/tools/BashTool/sedEditExecution.ts +59 -0
- package/tui/src/tools/BashTool/shellExecution.tsx +245 -0
- package/tui/src/tools/BashTool/shellOutputUtils.ts +85 -0
- package/tui/src/tools/BashTool/shellPermissionGauntlet.ts +97 -0
- package/tui/src/tools/BashTool/uiLoader.ts +37 -0
- package/tui/src/tools/BriefTool/upload.ts +1 -1
- package/tui/src/tools/CalculatorTool/parser.ts +2 -2
- package/tui/src/tools/DocumentPrimitive/DocumentPrimitive.ts +262 -0
- package/tui/src/tools/DocumentPrimitive/dispatchNormalization.ts +270 -0
- package/tui/src/tools/DocumentPrimitive/documentDestinationPath.ts +18 -0
- package/tui/src/tools/DocumentPrimitive/documentMutationGuard.ts +22 -0
- package/tui/src/tools/DocumentPrimitive/documentPatchNormalization.ts +248 -0
- package/tui/src/tools/DocumentPrimitive/documentSourceVerification.ts +245 -0
- package/tui/src/tools/DocumentPrimitive/documentSourceVerificationFields.ts +103 -0
- package/tui/src/tools/DocumentPrimitive/modelVisibleOutput.ts +40 -0
- package/tui/src/tools/DocumentPrimitive/prompt.ts +35 -0
- package/tui/src/tools/FileEditTool/FileEditTool.ts +9 -507
- package/tui/src/tools/FileEditTool/call.ts +228 -0
- package/tui/src/tools/FileEditTool/validateInput.ts +196 -0
- package/tui/src/tools/FileReadTool/imageProcessor.ts +13 -0
- package/tui/src/tools/FileWriteTool/FileWriteTool.ts +7 -300
- package/tui/src/tools/FileWriteTool/call.ts +223 -0
- package/tui/src/tools/FileWriteTool/validateInput.ts +80 -0
- package/tui/src/tools/ListMcpResourcesTool/ListMcpResourcesTool.ts +19 -3
- package/tui/src/tools/LookupPrimitive/LookupPrimitive.ts +48 -29
- package/tui/src/tools/LookupPrimitive/prompt.ts +6 -7
- package/tui/src/tools/MCPTool/trustPolicy.ts +118 -0
- package/tui/src/tools/McpAuthTool/McpAuthTool.ts +21 -3
- package/tui/src/tools/NotebookEditTool/NotebookEditTool.ts +7 -326
- package/tui/src/tools/NotebookEditTool/call.ts +254 -0
- package/tui/src/tools/NotebookEditTool/notebookModel.ts +51 -0
- package/tui/src/tools/NotebookEditTool/validateInput.ts +142 -0
- package/tui/src/tools/PowerShellTool/PowerShellTool.tsx +46 -937
- package/tui/src/tools/PowerShellTool/acceptEditsCommandValidation.ts +162 -0
- package/tui/src/tools/PowerShellTool/call.ts +179 -0
- package/tui/src/tools/PowerShellTool/callLoader.ts +37 -0
- package/tui/src/tools/PowerShellTool/commandClassification.ts +86 -0
- package/tui/src/tools/PowerShellTool/modeValidation.ts +25 -332
- package/tui/src/tools/PowerShellTool/outputPersistence.ts +42 -0
- package/tui/src/tools/PowerShellTool/permissionClassification.ts +28 -0
- package/tui/src/tools/PowerShellTool/resultLoader.ts +31 -0
- package/tui/src/tools/PowerShellTool/resultMapping.ts +75 -0
- package/tui/src/tools/PowerShellTool/schemas.ts +40 -0
- package/tui/src/tools/PowerShellTool/shellExecution.tsx +258 -0
- package/tui/src/tools/PowerShellTool/symlinkModeValidation.ts +44 -0
- package/tui/src/tools/PowerShellTool/uiLoader.ts +37 -0
- package/tui/src/tools/PowerShellTool/validation.ts +39 -0
- package/tui/src/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts +19 -3
- package/tui/src/tools/ResolveLocationPrimitive/ResolveLocationPrimitive.ts +30 -19
- package/tui/src/tools/ResolveLocationPrimitive/prompt.ts +2 -6
- package/tui/src/tools/SkillTool/SkillTool.ts +2 -2
- package/tui/src/tools/SubmitPrimitive/SubmitPrimitive.ts +51 -18
- package/tui/src/tools/TaskCreateTool/TaskCreateTool.ts +16 -2
- package/tui/src/tools/TaskGetTool/TaskGetTool.ts +23 -3
- package/tui/src/tools/TaskListTool/TaskListTool.ts +22 -4
- package/tui/src/tools/TaskOutputTool/TaskOutputTool.tsx +46 -547
- package/tui/src/tools/TaskOutputTool/lookup.ts +216 -0
- package/tui/src/tools/TaskOutputTool/render.tsx +257 -0
- package/tui/src/tools/TaskOutputTool/schemas.ts +55 -0
- package/tui/src/tools/TaskOutputTool/serialization.ts +36 -0
- package/tui/src/tools/TaskStopTool/TaskStopTool.ts +10 -0
- package/tui/src/tools/TaskUpdateTool/TaskUpdateTool.ts +14 -364
- package/tui/src/tools/TaskUpdateTool/completion.ts +62 -0
- package/tui/src/tools/TaskUpdateTool/schemas.ts +62 -0
- package/tui/src/tools/TaskUpdateTool/serialization.ts +46 -0
- package/tui/src/tools/TaskUpdateTool/statusUpdate.ts +247 -0
- package/tui/src/tools/TodoWriteTool/TodoWriteTool.ts +21 -2
- package/tui/src/tools/ToolSearchTool/ToolSearchTool.ts +21 -302
- package/tui/src/tools/ToolSearchTool/ccSupportTools.ts +223 -0
- package/tui/src/tools/ToolSearchTool/descriptionCache.ts +50 -0
- package/tui/src/tools/ToolSearchTool/keywordSearch.ts +216 -0
- package/tui/src/tools/ToolSearchTool/prompt.ts +10 -4
- package/tui/src/tools/ToolSearchTool/resultMapping.ts +30 -0
- package/tui/src/tools/ToolSearchTool/schemas.ts +30 -0
- package/tui/src/tools/ToolSearchTool/searchPool.ts +47 -0
- package/tui/src/tools/ToolSearchTool/supportIntentHints.ts +140 -0
- package/tui/src/tools/TranslateTool/TranslateTool.ts +1 -1
- package/tui/src/tools/VerifyPrimitive/VerifyPrimitive.ts +27 -10
- package/tui/src/tools/WebFetchTool/WebFetchTool.ts +43 -138
- package/tui/src/tools/WebFetchTool/call.ts +227 -0
- package/tui/src/tools/WebFetchTool/resolvedAddressSafety.ts +78 -0
- package/tui/src/tools/WebFetchTool/sourceVerification.ts +204 -0
- package/tui/src/tools/WebFetchTool/types.ts +23 -0
- package/tui/src/tools/WebFetchTool/urlSafety.ts +181 -0
- package/tui/src/tools/WebFetchTool/utils.ts +1 -1
- package/tui/src/tools/WebSearchTool/UI.tsx +0 -1
- package/tui/src/tools/WebSearchTool/WebSearchTool.ts +9 -313
- package/tui/src/tools/WebSearchTool/call.ts +33 -0
- package/tui/src/tools/WebSearchTool/responseMapping.ts +190 -0
- package/tui/src/tools/WebSearchTool/resultBlock.ts +47 -0
- package/tui/src/tools/WebSearchTool/schemas.ts +47 -0
- package/tui/src/tools/WebSearchTool/toolSchema.ts +12 -0
- package/tui/src/tools/WorkspaceToolAdapter/WorkspaceToolAdapter.ts +79 -0
- package/tui/src/tools/WorkspaceToolAdapter/allowedRootPolicy.ts +85 -0
- package/tui/src/tools/WorkspaceToolAdapter/documentFormatGuards.ts +73 -0
- package/tui/src/tools/WorkspaceToolAdapter/inputNormalization.ts +105 -0
- package/tui/src/tools/WorkspaceToolAdapter/mcpExposurePolicy.ts +64 -0
- package/tui/src/tools/WorkspaceToolAdapter/toolDefFactory.ts +215 -0
- package/tui/src/tools/WorkspaceToolAdapter/toolNames.ts +6 -0
- package/tui/src/tools/WorkspaceToolAdapter/workspacePolicy.ts +15 -0
- package/tui/src/tools/_shared/citizenUserText.ts +49 -0
- package/tui/src/tools/_shared/dispatchPrimitive.ts +6 -6
- package/tui/src/tools/_shared/documentChangeToPatch.ts +125 -0
- package/tui/src/tools/_shared/documentDispatchArguments.ts +87 -0
- package/tui/src/tools/_shared/documentPrimitiveTimeout.ts +13 -0
- package/tui/src/tools/_shared/documentToolResultRender.ts +98 -0
- package/tui/src/tools/_shared/locationInputRepair.ts +112 -0
- package/tui/src/tools/_shared/pendingCallRegistry.ts +1 -6
- package/tui/src/tools/_shared/rootPrimitiveInput.ts +68 -0
- package/tui/src/tools/_shared/toolChoiceRepair/documentCompletionPatterns.ts +58 -0
- package/tui/src/tools/_shared/toolChoiceRepair/documentCompletionPrompt.ts +271 -0
- package/tui/src/tools/_shared/toolChoiceRepair/documentRepair.ts +452 -0
- package/tui/src/tools/_shared/toolChoiceRepair/messageAccess.ts +80 -0
- package/tui/src/tools/_shared/toolChoiceRepair/publicDataRepair.ts +92 -0
- package/tui/src/tools/_shared/toolChoiceRepair/supportRepair.ts +135 -0
- package/tui/src/tools/_shared/toolChoiceRepair.ts +61 -0
- package/tui/src/tools/shared/mockDisclaimer.ts +1 -1
- package/tui/src/tools.ts +39 -190
- package/tui/src/types/fileSuggestion.ts +4 -26
- package/tui/src/types/generated/events_mono/claude_code/v1/claude_code_internal_event.ts +186 -148
- package/tui/src/types/generated/events_mono/common/v1/auth.ts +25 -11
- package/tui/src/types/generated/events_mono/growthbook/v1/growthbook_experiment_event.ts +47 -30
- package/tui/src/types/generated/google/protobuf/timestamp.ts +21 -7
- package/tui/src/types/message.ts +80 -102
- package/tui/src/types/messageQueueTypes.ts +6 -28
- package/tui/src/types/notebook.ts +16 -38
- package/tui/src/types/statusLine.ts +4 -26
- package/tui/src/types/tools.ts +24 -46
- package/tui/src/types/utils.ts +6 -28
- package/tui/src/upstreamproxy/relay.ts +7 -3
- package/tui/src/upstreamproxy/upstreamproxy.ts +1 -1
- package/tui/src/utils/assistantMessageFactories.ts +9 -3
- package/tui/src/utils/attachments.ts +1 -1
- package/tui/src/utils/auth.ts +129 -139
- package/tui/src/utils/bash/ast.ts +23 -23
- package/tui/src/utils/bash/bashParser.ts +5 -5
- package/tui/src/utils/billing.ts +1 -1
- package/tui/src/utils/collapseReadSearch.ts +3 -3
- package/tui/src/utils/cronTasks.ts +1 -1
- package/tui/src/utils/execFileNoThrow.ts +1 -1
- package/tui/src/utils/filePersistence/types.ts +16 -38
- package/tui/src/utils/forkedAgent.ts +1 -1
- package/tui/src/utils/gracefulShutdown.ts +4 -4
- package/tui/src/utils/heapDumpService.ts +12 -8
- package/tui/src/utils/hooks/apiQueryHookHelper.ts +1 -1
- package/tui/src/utils/hooks/execPromptHook.ts +1 -1
- package/tui/src/utils/hooks/skillImprovement.ts +1 -1
- package/tui/src/utils/kExaoneReasoning.ts +138 -0
- package/tui/src/utils/mcp/dateTimeParser.ts +1 -1
- package/tui/src/utils/messages.ts +19 -0
- package/tui/src/utils/migrateSessions.ts +3 -3
- package/tui/src/utils/model/model.ts +6 -6
- package/tui/src/utils/multiToolLayout.ts +13 -0
- package/tui/src/utils/permissions/yoloClassifier.ts +1 -1
- package/tui/src/utils/plugins/headlessPluginInstall.ts +1 -1
- package/tui/src/utils/plugins/mcpPluginIntegration.ts +1 -1
- package/tui/src/utils/plugins/mcpbHandler.ts +1 -1
- package/tui/src/utils/plugins/pluginLoader.ts +8 -8
- package/tui/src/utils/processUserInput/processSlashCommand.tsx +2 -2
- package/tui/src/utils/processUserInput/processUserInput.ts +26 -0
- package/tui/src/utils/protectedNamespace.ts +5 -3
- package/tui/src/utils/rawJsonToolCall.ts +242 -0
- package/tui/src/utils/ripgrep.ts +16 -7
- package/tui/src/utils/sessionTitle.ts +1 -1
- package/tui/src/utils/settings/applySettingsChange.ts +4 -0
- package/tui/src/utils/settings/permissionValidation.ts +14 -2
- package/tui/src/utils/settings/types.ts +9 -3
- package/tui/src/utils/shell/prefix.ts +1 -1
- package/tui/src/utils/sideQuery.ts +1 -1
- package/tui/src/utils/stats.ts +1 -1
- package/tui/src/utils/systemThemeWatcher.ts +13 -3
- package/tui/src/utils/teleport.tsx +1 -1
- package/uv.lock +394 -22
- package/assets/copilot-gate-logo.svg +0 -58
- package/assets/govon-logo.svg +0 -40
- package/src/ummaya/eval/__init__.py +0 -5
- package/src/ummaya/eval/retrieval.py +0 -713
- package/tui/src/services/api/claude.ts +0 -3510
- package/tui/src/utils/messageStream.ts +0 -186
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import type { BetaToolChoiceTool } from '../../../sdk-compat.js'
|
|
2
|
+
import type { Tools } from '../../../Tool.js'
|
|
3
|
+
import type { Message } from '../../../types/message.js'
|
|
4
|
+
import { selectRecoveredSupportToolNamesForQuery } from '../../ToolSearchTool/supportIntentHints.js'
|
|
5
|
+
import { shouldSuppressDocumentToolCallsForAnswerSynthesis } from './documentRepair.js'
|
|
6
|
+
import { latestUserText, textFromContent, toolUseNames } from './messageAccess.js'
|
|
7
|
+
|
|
8
|
+
const AGENT_TOOL_NAME = 'Agent'
|
|
9
|
+
const LIST_MCP_RESOURCES_TOOL_NAME = 'ListMcpResourcesTool'
|
|
10
|
+
const WORKSPACE_BASH_TOOL_NAME = 'workspace_bash'
|
|
11
|
+
const WORKSPACE_WRITE_TOOL_NAME = 'workspace_write'
|
|
12
|
+
const FORCED_SUPPORT_TOOL_NAMES = new Set([
|
|
13
|
+
AGENT_TOOL_NAME,
|
|
14
|
+
LIST_MCP_RESOURCES_TOOL_NAME,
|
|
15
|
+
WORKSPACE_BASH_TOOL_NAME,
|
|
16
|
+
])
|
|
17
|
+
const SENSITIVE_CONTEXT_RE =
|
|
18
|
+
/(AGENTS\.md|CLAUDE\.md|system prompt|prompt-context|project instructions|\/Users\/um-yunsang\/\.claude)/iu
|
|
19
|
+
|
|
20
|
+
function toolAvailable(tools: Tools, toolName: string): boolean {
|
|
21
|
+
return tools.some(tool => tool.name === toolName)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
25
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function supportCandidateText(candidate: unknown): string {
|
|
29
|
+
if (typeof candidate === 'string') return candidate
|
|
30
|
+
if (!isRecord(candidate)) return ''
|
|
31
|
+
const message = isRecord(candidate.message) ? candidate.message : candidate
|
|
32
|
+
return textFromContent(message.content)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function selectRecoveredSupportToolChoiceNameForMessages(
|
|
36
|
+
messages: readonly Message[],
|
|
37
|
+
): string | undefined {
|
|
38
|
+
return selectRecoveredSupportToolNamesForQuery(latestUserText(messages)).find(
|
|
39
|
+
toolName => FORCED_SUPPORT_TOOL_NAMES.has(toolName),
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function shouldWithholdIgnoredSupportToolChoiceText({
|
|
44
|
+
toolChoiceName,
|
|
45
|
+
candidate,
|
|
46
|
+
}: {
|
|
47
|
+
readonly toolChoiceName: string
|
|
48
|
+
readonly candidate: unknown
|
|
49
|
+
}): boolean {
|
|
50
|
+
const candidateText = supportCandidateText(candidate)
|
|
51
|
+
if (candidateText.trim().length === 0) return false
|
|
52
|
+
if (toolChoiceName === LIST_MCP_RESOURCES_TOOL_NAME) return true
|
|
53
|
+
if (toolChoiceName === AGENT_TOOL_NAME) return true
|
|
54
|
+
if (toolChoiceName === WORKSPACE_BASH_TOOL_NAME) return true
|
|
55
|
+
return SENSITIVE_CONTEXT_RE.test(candidateText)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function scrubIgnoredSupportToolChoiceMessage({
|
|
59
|
+
toolChoiceName,
|
|
60
|
+
candidate,
|
|
61
|
+
}: {
|
|
62
|
+
readonly toolChoiceName: string
|
|
63
|
+
readonly candidate: unknown
|
|
64
|
+
}): string | undefined {
|
|
65
|
+
return shouldWithholdIgnoredSupportToolChoiceText({ toolChoiceName, candidate })
|
|
66
|
+
? ''
|
|
67
|
+
: undefined
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function buildIgnoredSupportToolChoiceBlockedText(
|
|
71
|
+
toolChoiceName: string,
|
|
72
|
+
toolChoiceAvailable = true,
|
|
73
|
+
): string {
|
|
74
|
+
if (toolChoiceName === WORKSPACE_BASH_TOOL_NAME) {
|
|
75
|
+
const reason = toolChoiceAvailable
|
|
76
|
+
? 'provider ignored forced workspace_bash tool_choice.'
|
|
77
|
+
: 'workspace_bash 도구가 현재 TUI 도구 풀에 없어 셸 권한 경계를 실행할 수 없습니다.'
|
|
78
|
+
return [
|
|
79
|
+
'셸 실행 차단: workspace_bash 호출을 강제했지만 모델 응답에 셸 도구 경계가 포함되지 않았습니다.',
|
|
80
|
+
`이유: ${reason}`,
|
|
81
|
+
'git 상태 확인이나 삭제 명령은 텍스트 안내로 대체하지 않습니다.',
|
|
82
|
+
].join(' ')
|
|
83
|
+
}
|
|
84
|
+
if (toolChoiceName === WORKSPACE_WRITE_TOOL_NAME) {
|
|
85
|
+
const reason = toolChoiceAvailable
|
|
86
|
+
? 'provider ignored forced workspace_write tool_choice.'
|
|
87
|
+
: 'workspace_write 도구가 현재 TUI 도구 풀에 없어 파일 쓰기 권한 경계를 실행할 수 없습니다.'
|
|
88
|
+
return [
|
|
89
|
+
'작업공간 쓰기 차단: workspace_write 호출을 강제했지만 모델 응답에 파일 쓰기 도구 경계가 포함되지 않았습니다.',
|
|
90
|
+
`이유: ${reason}`,
|
|
91
|
+
'파일 변경은 텍스트 안내로 대체하지 않습니다.',
|
|
92
|
+
].join(' ')
|
|
93
|
+
}
|
|
94
|
+
if (toolChoiceName === LIST_MCP_RESOURCES_TOOL_NAME) {
|
|
95
|
+
const reason = toolChoiceAvailable
|
|
96
|
+
? 'provider ignored forced ListMcpResourcesTool tool_choice.'
|
|
97
|
+
: 'ListMcpResourcesTool 도구가 현재 TUI 도구 풀에 없어 MCP 리소스 목록을 실행할 수 없습니다.'
|
|
98
|
+
return [
|
|
99
|
+
'MCP 리소스 조회 차단: ListMcpResourcesTool 호출을 강제했지만 모델 응답에 MCP 도구 경계가 포함되지 않았습니다.',
|
|
100
|
+
`이유: ${reason}`,
|
|
101
|
+
'민감한 프로젝트 지침이나 system prompt 내용은 표시하지 않습니다.',
|
|
102
|
+
].join(' ')
|
|
103
|
+
}
|
|
104
|
+
const reason = toolChoiceAvailable
|
|
105
|
+
? 'provider ignored forced Agent tool_choice.'
|
|
106
|
+
: 'Agent 도구가 기본 TUI 도구 풀에 없어 provider/query-loop support choice를 실행할 수 없습니다.'
|
|
107
|
+
return [
|
|
108
|
+
'에이전트 위임 차단: Agent 도구 호출을 강제했지만 모델 응답에 Agent/Task 도구 경계가 포함되지 않았습니다.',
|
|
109
|
+
`이유: ${reason}`,
|
|
110
|
+
'진행/취소 상태를 표시할 수 없어 차단했습니다.',
|
|
111
|
+
'구체적인 조사 주제를 주시면 Agent 진행/취소 경계가 보이는 상태로 다시 시도하겠습니다.',
|
|
112
|
+
].join(' ')
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function shouldSuppressUmmayaToolCallsForAnswerSynthesis({
|
|
116
|
+
messages,
|
|
117
|
+
tools,
|
|
118
|
+
}: {
|
|
119
|
+
readonly messages: readonly Message[]
|
|
120
|
+
readonly tools: Tools
|
|
121
|
+
}): boolean {
|
|
122
|
+
if (shouldSuppressDocumentToolCallsForAnswerSynthesis({ messages })) {
|
|
123
|
+
return true
|
|
124
|
+
}
|
|
125
|
+
const recovered = selectRecoveredSupportToolNamesForQuery(latestUserText(messages))
|
|
126
|
+
return recovered.some(toolName => toolAvailable(tools, toolName)) &&
|
|
127
|
+
!recovered.some(toolName => toolUseNames(messages).has(toolName))
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export function selectUmmayaToolChoiceOverride(_params: {
|
|
131
|
+
readonly messages: readonly Message[]
|
|
132
|
+
readonly tools: Tools
|
|
133
|
+
}): BetaToolChoiceTool | undefined {
|
|
134
|
+
return undefined
|
|
135
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { Tools } from '../../Tool.js'
|
|
2
|
+
import type { Message } from '../../types/message.js'
|
|
3
|
+
import type { BetaToolChoiceTool } from '../../sdk-compat.js'
|
|
4
|
+
|
|
5
|
+
export interface UmmayaTuiRepairPolicy {
|
|
6
|
+
readonly id: string
|
|
7
|
+
readonly kind: 'display_or_answer_repair'
|
|
8
|
+
readonly owner: string
|
|
9
|
+
readonly evidenceEvent: string
|
|
10
|
+
readonly removalCondition: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface UmmayaBackendRepairReceipt {
|
|
14
|
+
readonly source: 'backend_route_decision' | 'backend_validation'
|
|
15
|
+
readonly reason: string
|
|
16
|
+
readonly evidenceEvent: string
|
|
17
|
+
readonly toolName?: string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ForcedUmmayaToolUse {
|
|
21
|
+
readonly name: string
|
|
22
|
+
readonly input: Record<string, unknown>
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const UMMAYA_TUI_REPAIR_POLICIES: readonly UmmayaTuiRepairPolicy[] = []
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
backfillUmmayaObservableToolInputFromUserQuery,
|
|
29
|
+
buildDocumentCompletionPromptIfNeeded,
|
|
30
|
+
buildIgnoredDocumentToolChoiceBlockedText,
|
|
31
|
+
repairUmmayaDocumentToolInputForDispatch,
|
|
32
|
+
repairUmmayaExplicitDocumentToolUseFromUserQuery,
|
|
33
|
+
selectRecoveredDocumentToolChoiceNameForMessages,
|
|
34
|
+
selectUmmayaClientForcedToolUse,
|
|
35
|
+
shouldSuppressDocumentToolCallsForAnswerSynthesis,
|
|
36
|
+
shouldWithholdIgnoredDocumentToolChoiceText,
|
|
37
|
+
} from './toolChoiceRepair/documentRepair.js'
|
|
38
|
+
export {
|
|
39
|
+
buildIgnoredSupportToolChoiceBlockedText,
|
|
40
|
+
scrubIgnoredSupportToolChoiceMessage,
|
|
41
|
+
selectRecoveredSupportToolChoiceNameForMessages,
|
|
42
|
+
shouldSuppressUmmayaToolCallsForAnswerSynthesis,
|
|
43
|
+
shouldWithholdIgnoredSupportToolChoiceText,
|
|
44
|
+
} from './toolChoiceRepair/supportRepair.js'
|
|
45
|
+
export {
|
|
46
|
+
buildGenericPendingFinalAnswerRepairPromptIfNeeded,
|
|
47
|
+
buildGenericPendingFinalAnswerToolUseBlockedText,
|
|
48
|
+
selectUmmayaClientForcedToolUseForPublicData,
|
|
49
|
+
shouldBlockToolUseAfterGenericPendingFinalAnswerRepair,
|
|
50
|
+
shouldWithholdGenericPendingFinalAnswer,
|
|
51
|
+
} from './toolChoiceRepair/publicDataRepair.js'
|
|
52
|
+
export {
|
|
53
|
+
selectRecoveredSupportToolChoiceNameForMessages as selectRecoveredSupportToolChoiceNameForMessagesFromSupportRepair,
|
|
54
|
+
} from './toolChoiceRepair/supportRepair.js'
|
|
55
|
+
|
|
56
|
+
export function selectUmmayaToolChoiceOverride(_params: {
|
|
57
|
+
readonly messages: readonly Message[]
|
|
58
|
+
readonly tools: Tools
|
|
59
|
+
}): BetaToolChoiceTool | undefined {
|
|
60
|
+
return undefined
|
|
61
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// UMMAYA-original — Audit-2 P0 fix · mock disclaimer helpers.
|
|
3
3
|
//
|
|
4
|
-
// Citizen-safety directive:
|
|
4
|
+
// Citizen-safety directive: each tool result whose payload contains
|
|
5
5
|
// ``_mode === "mock"`` MUST display a prominent disclaimer so citizens
|
|
6
6
|
// immediately recognise that no real administrative action was taken.
|
|
7
7
|
//
|
package/tui/src/tools.ts
CHANGED
|
@@ -6,163 +6,36 @@ import { LookupPrimitive } from './tools/LookupPrimitive/LookupPrimitive.js'
|
|
|
6
6
|
import { ResolveLocationPrimitive } from './tools/ResolveLocationPrimitive/ResolveLocationPrimitive.js'
|
|
7
7
|
import { SubmitPrimitive } from './tools/SubmitPrimitive/SubmitPrimitive.js'
|
|
8
8
|
import { VerifyPrimitive } from './tools/VerifyPrimitive/VerifyPrimitive.js'
|
|
9
|
+
import { DocumentPrimitive } from './tools/DocumentPrimitive/DocumentPrimitive.js'
|
|
9
10
|
import { getAdapterTools } from './tools/AdapterTool/AdapterTool.js'
|
|
10
|
-
import { TranslateTool } from './tools/TranslateTool/TranslateTool.js'
|
|
11
|
-
import { CalculatorTool } from './tools/CalculatorTool/CalculatorTool.js'
|
|
12
|
-
import { DateParserTool } from './tools/DateParserTool/DateParserTool.js'
|
|
13
|
-
import { ExportPDFTool } from './tools/ExportPDFTool/ExportPDFTool.js'
|
|
14
|
-
import { BashTool } from './tools/BashTool/BashTool.js'
|
|
15
|
-
import { FileEditTool } from './tools/FileEditTool/FileEditTool.js'
|
|
16
|
-
import { FileReadTool } from './tools/FileReadTool/FileReadTool.js'
|
|
17
|
-
import { FileWriteTool } from './tools/FileWriteTool/FileWriteTool.js'
|
|
18
|
-
import { GlobTool } from './tools/GlobTool/GlobTool.js'
|
|
19
|
-
import { NotebookEditTool } from './tools/NotebookEditTool/NotebookEditTool.js'
|
|
20
|
-
import { WebFetchTool } from './tools/WebFetchTool/WebFetchTool.js'
|
|
21
|
-
import { TaskStopTool } from './tools/TaskStopTool/TaskStopTool.js'
|
|
22
|
-
import { BriefTool } from './tools/BriefTool/BriefTool.js'
|
|
23
|
-
// Dead code elimination: conditional import for ant-only tools
|
|
24
|
-
/* eslint-disable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
|
|
25
|
-
const REPLTool =
|
|
26
|
-
process.env.USER_TYPE === 'ant'
|
|
27
|
-
? require('./tools/REPLTool/REPLTool.js').REPLTool
|
|
28
|
-
: null
|
|
29
|
-
const SuggestBackgroundPRTool =
|
|
30
|
-
process.env.USER_TYPE === 'ant'
|
|
31
|
-
? require('./tools/SuggestBackgroundPRTool/SuggestBackgroundPRTool.js')
|
|
32
|
-
.SuggestBackgroundPRTool
|
|
33
|
-
: null
|
|
34
|
-
const SleepTool =
|
|
35
|
-
feature('PROACTIVE') || feature('KAIROS')
|
|
36
|
-
? require('./tools/SleepTool/SleepTool.js').SleepTool
|
|
37
|
-
: null
|
|
38
|
-
const cronTools = feature('AGENT_TRIGGERS')
|
|
39
|
-
? [
|
|
40
|
-
require('./tools/ScheduleCronTool/CronCreateTool.js').CronCreateTool,
|
|
41
|
-
require('./tools/ScheduleCronTool/CronDeleteTool.js').CronDeleteTool,
|
|
42
|
-
require('./tools/ScheduleCronTool/CronListTool.js').CronListTool,
|
|
43
|
-
]
|
|
44
|
-
: []
|
|
45
|
-
const RemoteTriggerTool = feature('AGENT_TRIGGERS_REMOTE')
|
|
46
|
-
? require('./tools/RemoteTriggerTool/RemoteTriggerTool.js').RemoteTriggerTool
|
|
47
|
-
: null
|
|
48
|
-
const MonitorTool = feature('MONITOR_TOOL')
|
|
49
|
-
? require('./tools/MonitorTool/MonitorTool.js').MonitorTool
|
|
50
|
-
: null
|
|
51
|
-
const SendUserFileTool = feature('KAIROS')
|
|
52
|
-
? require('./tools/SendUserFileTool/SendUserFileTool.js').SendUserFileTool
|
|
53
|
-
: null
|
|
54
|
-
const PushNotificationTool =
|
|
55
|
-
feature('KAIROS') || feature('KAIROS_PUSH_NOTIFICATION')
|
|
56
|
-
? require('./tools/PushNotificationTool/PushNotificationTool.js')
|
|
57
|
-
.PushNotificationTool
|
|
58
|
-
: null
|
|
59
|
-
const SubscribePRTool = feature('KAIROS_GITHUB_WEBHOOKS')
|
|
60
|
-
? require('./tools/SubscribePRTool/SubscribePRTool.js').SubscribePRTool
|
|
61
|
-
: null
|
|
62
|
-
/* eslint-enable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
|
|
63
|
-
import { TaskOutputTool } from './tools/TaskOutputTool/TaskOutputTool.js'
|
|
64
|
-
import { WebSearchTool } from './tools/WebSearchTool/WebSearchTool.js'
|
|
65
|
-
import { TodoWriteTool } from './tools/TodoWriteTool/TodoWriteTool.js'
|
|
66
|
-
import { ExitPlanModeV2Tool } from './tools/ExitPlanModeTool/ExitPlanModeV2Tool.js'
|
|
67
|
-
import { TestingPermissionTool } from './tools/testing/TestingPermissionTool.js'
|
|
68
|
-
import { GrepTool } from './tools/GrepTool/GrepTool.js'
|
|
69
|
-
import { TungstenTool } from './tools/TungstenTool/TungstenTool.js'
|
|
70
|
-
// Lazy require to break circular dependency: tools.ts -> TeamCreateTool/TeamDeleteTool -> ... -> tools.ts
|
|
71
|
-
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
72
|
-
const getTeamCreateTool = () =>
|
|
73
|
-
require('./tools/TeamCreateTool/TeamCreateTool.js')
|
|
74
|
-
.TeamCreateTool as typeof import('./tools/TeamCreateTool/TeamCreateTool.js').TeamCreateTool
|
|
75
|
-
const getTeamDeleteTool = () =>
|
|
76
|
-
require('./tools/TeamDeleteTool/TeamDeleteTool.js')
|
|
77
|
-
.TeamDeleteTool as typeof import('./tools/TeamDeleteTool/TeamDeleteTool.js').TeamDeleteTool
|
|
78
|
-
const getSendMessageTool = () =>
|
|
79
|
-
require('./tools/SendMessageTool/SendMessageTool.js')
|
|
80
|
-
.SendMessageTool as typeof import('./tools/SendMessageTool/SendMessageTool.js').SendMessageTool
|
|
81
|
-
/* eslint-enable @typescript-eslint/no-require-imports */
|
|
82
|
-
import { AskUserQuestionTool } from './tools/AskUserQuestionTool/AskUserQuestionTool.js'
|
|
83
|
-
import { LSPTool } from './tools/LSPTool/LSPTool.js'
|
|
84
|
-
import { ListMcpResourcesTool } from './tools/ListMcpResourcesTool/ListMcpResourcesTool.js'
|
|
85
|
-
import { ReadMcpResourceTool } from './tools/ReadMcpResourceTool/ReadMcpResourceTool.js'
|
|
86
11
|
import { ToolSearchTool } from './tools/ToolSearchTool/ToolSearchTool.js'
|
|
87
|
-
import {
|
|
88
|
-
import { EnterWorktreeTool } from './tools/EnterWorktreeTool/EnterWorktreeTool.js'
|
|
89
|
-
import { ExitWorktreeTool } from './tools/ExitWorktreeTool/ExitWorktreeTool.js'
|
|
90
|
-
import { ConfigTool } from './tools/ConfigTool/ConfigTool.js'
|
|
91
|
-
import { TaskCreateTool } from './tools/TaskCreateTool/TaskCreateTool.js'
|
|
92
|
-
import { TaskGetTool } from './tools/TaskGetTool/TaskGetTool.js'
|
|
93
|
-
import { TaskUpdateTool } from './tools/TaskUpdateTool/TaskUpdateTool.js'
|
|
94
|
-
import { TaskListTool } from './tools/TaskListTool/TaskListTool.js'
|
|
12
|
+
import { getWorkspaceTools } from './tools/WorkspaceToolAdapter/WorkspaceToolAdapter.js'
|
|
95
13
|
import uniqBy from 'lodash-es/uniqBy.js'
|
|
96
|
-
import { isToolSearchEnabledOptimistic } from './utils/toolSearch.js'
|
|
97
|
-
import { isTodoV2Enabled } from './utils/tasks.js'
|
|
98
|
-
// Dead code elimination: conditional import for CLAUDE_CODE_VERIFY_PLAN
|
|
99
|
-
/* eslint-disable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
|
|
100
|
-
const VerifyPlanExecutionTool =
|
|
101
|
-
process.env.CLAUDE_CODE_VERIFY_PLAN === 'true'
|
|
102
|
-
? require('./tools/VerifyPlanExecutionTool/VerifyPlanExecutionTool.js')
|
|
103
|
-
.VerifyPlanExecutionTool
|
|
104
|
-
: null
|
|
105
|
-
/* eslint-enable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
|
|
106
|
-
import { SYNTHETIC_OUTPUT_TOOL_NAME } from './tools/SyntheticOutputTool/SyntheticOutputTool.js'
|
|
107
14
|
export {
|
|
108
15
|
ALL_AGENT_DISALLOWED_TOOLS,
|
|
109
16
|
CUSTOM_AGENT_DISALLOWED_TOOLS,
|
|
110
17
|
ASYNC_AGENT_ALLOWED_TOOLS,
|
|
111
18
|
COORDINATOR_MODE_ALLOWED_TOOLS,
|
|
112
19
|
} from './constants/tools.js'
|
|
113
|
-
import { feature } from 'bun:bundle'
|
|
114
|
-
// Dead code elimination: conditional import for OVERFLOW_TEST_TOOL
|
|
115
|
-
/* eslint-disable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
|
|
116
|
-
const OverflowTestTool = feature('OVERFLOW_TEST_TOOL')
|
|
117
|
-
? require('./tools/OverflowTestTool/OverflowTestTool.js').OverflowTestTool
|
|
118
|
-
: null
|
|
119
|
-
const CtxInspectTool = feature('CONTEXT_COLLAPSE')
|
|
120
|
-
? require('./tools/CtxInspectTool/CtxInspectTool.js').CtxInspectTool
|
|
121
|
-
: null
|
|
122
|
-
const TerminalCaptureTool = feature('TERMINAL_PANEL')
|
|
123
|
-
? require('./tools/TerminalCaptureTool/TerminalCaptureTool.js')
|
|
124
|
-
.TerminalCaptureTool
|
|
125
|
-
: null
|
|
126
|
-
const WebBrowserTool = feature('WEB_BROWSER_TOOL')
|
|
127
|
-
? require('./tools/WebBrowserTool/WebBrowserTool.js').WebBrowserTool
|
|
128
|
-
: null
|
|
129
|
-
const coordinatorModeModule = feature('COORDINATOR_MODE')
|
|
130
|
-
? (require('./coordinator/coordinatorMode.js') as typeof import('./coordinator/coordinatorMode.js'))
|
|
131
|
-
: null
|
|
132
|
-
const SnipTool = feature('HISTORY_SNIP')
|
|
133
|
-
? require('./tools/SnipTool/SnipTool.js').SnipTool
|
|
134
|
-
: null
|
|
135
|
-
const ListPeersTool = feature('UDS_INBOX')
|
|
136
|
-
? require('./tools/ListPeersTool/ListPeersTool.js').ListPeersTool
|
|
137
|
-
: null
|
|
138
|
-
const WorkflowTool = feature('WORKFLOW_SCRIPTS')
|
|
139
|
-
? (() => {
|
|
140
|
-
require('./tools/WorkflowTool/bundled/index.js').initBundledWorkflows()
|
|
141
|
-
return require('./tools/WorkflowTool/WorkflowTool.js').WorkflowTool
|
|
142
|
-
})()
|
|
143
|
-
: null
|
|
144
|
-
/* eslint-enable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
|
|
145
20
|
import type { ToolPermissionContext } from './Tool.js'
|
|
146
21
|
import { getDenyRuleForTool } from './utils/permissions/permissions.js'
|
|
147
|
-
import { hasEmbeddedSearchTools } from './utils/embeddedTools.js'
|
|
148
22
|
import { isEnvTruthy } from './utils/envUtils.js'
|
|
149
|
-
import { isPowerShellToolEnabled } from './utils/shell/shellToolUtils.js'
|
|
150
|
-
import { isAgentSwarmsEnabled } from './utils/agentSwarmsEnabled.js'
|
|
151
|
-
import { isWorktreeModeEnabled } from './utils/worktreeModeEnabled.js'
|
|
152
23
|
import {
|
|
24
|
+
areCcSupportToolsEnabled,
|
|
25
|
+
getCcSupportCapabilityTools,
|
|
26
|
+
getSupportSimpleModeTools,
|
|
153
27
|
REPL_TOOL_NAME,
|
|
154
28
|
REPL_ONLY_TOOLS,
|
|
155
29
|
isReplModeEnabled,
|
|
156
|
-
} from './tools/
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
/* eslint-enable @typescript-eslint/no-require-imports */
|
|
30
|
+
} from './tools/ToolSearchTool/ccSupportTools.js'
|
|
31
|
+
import { isModelFacingMcpTool } from './tools/WorkspaceToolAdapter/mcpExposurePolicy.js'
|
|
32
|
+
|
|
33
|
+
export { REPL_ONLY_TOOLS, areCcSupportToolsEnabled }
|
|
34
|
+
export {
|
|
35
|
+
MCP_MODEL_EXPOSURE_SERVER_CLASSES,
|
|
36
|
+
classifyMcpServerForModelExposure,
|
|
37
|
+
type McpModelExposureServerClass,
|
|
38
|
+
} from './tools/WorkspaceToolAdapter/mcpExposurePolicy.js'
|
|
166
39
|
|
|
167
40
|
/**
|
|
168
41
|
* Predefined tool presets that can be used with --tools flag
|
|
@@ -186,7 +59,7 @@ export function parseToolPreset(preset: string): ToolPreset | null {
|
|
|
186
59
|
* @returns Array of tool names
|
|
187
60
|
*/
|
|
188
61
|
export function getToolsForDefaultPreset(): string[] {
|
|
189
|
-
const tools =
|
|
62
|
+
const tools = getModelFacingBaseTools()
|
|
190
63
|
const isEnabled = tools.map(tool => tool.isEnabled())
|
|
191
64
|
return tools.filter((_, i) => isEnabled[i]).map(tool => tool.name)
|
|
192
65
|
}
|
|
@@ -199,7 +72,7 @@ export function getToolsForDefaultPreset(): string[] {
|
|
|
199
72
|
/**
|
|
200
73
|
* NOTE: This MUST stay in sync with https://console.statsig.com/4aF3Ewatb6xPVpCwxb5nA3/dynamic_configs/claude_code_global_system_caching, in order to cache the system prompt across users.
|
|
201
74
|
*/
|
|
202
|
-
export function
|
|
75
|
+
export function getModelFacingBaseTools(): Tools {
|
|
203
76
|
return [
|
|
204
77
|
// UMMAYA tool-surface swap: keep Claude Code's registry shape, but make
|
|
205
78
|
// the built-in model-facing catalog the Korean public-service primitives.
|
|
@@ -208,9 +81,18 @@ export function getAllBaseTools(): Tools {
|
|
|
208
81
|
ResolveLocationPrimitive,
|
|
209
82
|
SubmitPrimitive,
|
|
210
83
|
VerifyPrimitive,
|
|
84
|
+
DocumentPrimitive,
|
|
85
|
+
...getWorkspaceTools(),
|
|
211
86
|
]
|
|
212
87
|
}
|
|
213
88
|
|
|
89
|
+
export function getAllBaseTools(): Tools {
|
|
90
|
+
return uniqBy(
|
|
91
|
+
[...getModelFacingBaseTools(), ...getCcSupportCapabilityTools()],
|
|
92
|
+
'name',
|
|
93
|
+
)
|
|
94
|
+
}
|
|
95
|
+
|
|
214
96
|
/**
|
|
215
97
|
* Filters out tools that are blanket-denied by the permission context.
|
|
216
98
|
* A tool is filtered out if there's a deny rule matching its name with no
|
|
@@ -229,56 +111,19 @@ export function filterToolsByDenyRules<
|
|
|
229
111
|
return tools.filter(tool => !getDenyRuleForTool(permissionContext, tool))
|
|
230
112
|
}
|
|
231
113
|
|
|
232
|
-
function isUmmayaModelFacingMcpTool(tool: {
|
|
233
|
-
name: string
|
|
234
|
-
mcpInfo?: { serverName: string; toolName: string }
|
|
235
|
-
}): boolean {
|
|
236
|
-
return (
|
|
237
|
-
tool.mcpInfo?.serverName === 'ummaya' ||
|
|
238
|
-
tool.name.startsWith('mcp__ummaya__')
|
|
239
|
-
)
|
|
240
|
-
}
|
|
241
|
-
|
|
242
114
|
export const getTools = (permissionContext: ToolPermissionContext): Tools => {
|
|
243
|
-
// Simple mode: only Bash, Read, and Edit tools
|
|
244
115
|
if (isEnvTruthy(process.env.CLAUDE_CODE_SIMPLE)) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
const replSimple: Tool[] = getAllBaseTools()
|
|
250
|
-
if (
|
|
251
|
-
feature('COORDINATOR_MODE') &&
|
|
252
|
-
coordinatorModeModule?.isCoordinatorMode()
|
|
253
|
-
) {
|
|
254
|
-
replSimple.push(TaskStopTool, getSendMessageTool())
|
|
255
|
-
}
|
|
256
|
-
return filterToolsByDenyRules(replSimple, permissionContext)
|
|
257
|
-
}
|
|
258
|
-
const simpleTools: Tool[] = getAllBaseTools()
|
|
259
|
-
// When coordinator mode is also active, include AgentTool and TaskStopTool
|
|
260
|
-
// so the coordinator gets Task+TaskStop (via useMergedTools filtering) and
|
|
261
|
-
// workers get Bash/Read/Edit (via filterToolsForAgent filtering).
|
|
262
|
-
if (
|
|
263
|
-
feature('COORDINATOR_MODE') &&
|
|
264
|
-
coordinatorModeModule?.isCoordinatorMode()
|
|
265
|
-
) {
|
|
266
|
-
simpleTools.push(AgentTool, TaskStopTool, getSendMessageTool())
|
|
267
|
-
}
|
|
268
|
-
return filterToolsByDenyRules(simpleTools, permissionContext)
|
|
116
|
+
return filterToolsByDenyRules(
|
|
117
|
+
getSupportSimpleModeTools(getModelFacingBaseTools()),
|
|
118
|
+
permissionContext,
|
|
119
|
+
)
|
|
269
120
|
}
|
|
270
121
|
|
|
271
|
-
// Get all base tools and filter out special tools that get added conditionally
|
|
272
|
-
const specialTools = new Set([
|
|
273
|
-
ListMcpResourcesTool.name,
|
|
274
|
-
ReadMcpResourceTool.name,
|
|
275
|
-
SYNTHETIC_OUTPUT_TOOL_NAME,
|
|
276
|
-
])
|
|
277
|
-
|
|
278
|
-
const tools = getAllBaseTools().filter(tool => !specialTools.has(tool.name))
|
|
279
|
-
|
|
280
122
|
// Filter out tools that are denied by the deny rules
|
|
281
|
-
let allowedTools = filterToolsByDenyRules(
|
|
123
|
+
let allowedTools = filterToolsByDenyRules(
|
|
124
|
+
getModelFacingBaseTools(),
|
|
125
|
+
permissionContext,
|
|
126
|
+
)
|
|
282
127
|
|
|
283
128
|
// When REPL mode is enabled, hide primitive tools from direct use.
|
|
284
129
|
// They're still accessible inside REPL via the VM context.
|
|
@@ -323,7 +168,7 @@ export function assembleToolPool(
|
|
|
323
168
|
const allowedMcpTools = filterToolsByDenyRules(
|
|
324
169
|
mcpTools,
|
|
325
170
|
permissionContext,
|
|
326
|
-
).filter(
|
|
171
|
+
).filter(tool => isModelFacingMcpTool(tool, permissionContext))
|
|
327
172
|
|
|
328
173
|
// Sort each partition for prompt-cache stability, keeping built-ins as a
|
|
329
174
|
// contiguous prefix. The server's claude_code_system_cache_policy places a
|
|
@@ -359,5 +204,9 @@ export function getMergedTools(
|
|
|
359
204
|
mcpTools: Tools,
|
|
360
205
|
): Tools {
|
|
361
206
|
const builtInTools = getTools(permissionContext)
|
|
362
|
-
|
|
207
|
+
const allowedMcpTools = filterToolsByDenyRules(
|
|
208
|
+
mcpTools,
|
|
209
|
+
permissionContext,
|
|
210
|
+
).filter(tool => isModelFacingMcpTool(tool, permissionContext))
|
|
211
|
+
return [...builtInTools, ...allowedMcpTools]
|
|
363
212
|
}
|
|
@@ -1,32 +1,10 @@
|
|
|
1
1
|
// [P0 reconstructed · rebuild-stubs.ts · symbol-complete stub]
|
|
2
2
|
// Aggregated from every consumer import across src/.
|
|
3
|
-
|
|
3
|
+
import { createStub } from '../stubs/any-stub'
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
const __stub: any = new Proxy(function () {} as any, {
|
|
7
|
-
get(_t, p) {
|
|
8
|
-
if (p === Symbol.toPrimitive) return () => ""
|
|
9
|
-
if (p === Symbol.iterator) return function* () {}
|
|
10
|
-
if (p === Symbol.asyncIterator) return async function* () {}
|
|
11
|
-
if (p === Symbol.toStringTag) return "Stub"
|
|
12
|
-
if (p === Symbol.for("nodejs.util.inspect.custom")) return () => "<Stub>"
|
|
13
|
-
if (p === "inspect") return () => "<Stub>"
|
|
14
|
-
if (p === "then") return undefined
|
|
15
|
-
if (p === "toString") return () => ""
|
|
16
|
-
if (p === "valueOf") return () => undefined
|
|
17
|
-
if (p === "toJSON") return () => null
|
|
18
|
-
if (p === "length") return 0
|
|
19
|
-
if (p === "name") return "Stub"
|
|
20
|
-
if (p === "message") return ""
|
|
21
|
-
if (p === "stack") return ""
|
|
22
|
-
if (p === "constructor") return Object
|
|
23
|
-
return __stub
|
|
24
|
-
},
|
|
25
|
-
apply() { return __stub },
|
|
26
|
-
construct() { return __stub },
|
|
27
|
-
});
|
|
5
|
+
const __stub = createStub()
|
|
28
6
|
|
|
29
|
-
export type FileSuggestionCommandInput =
|
|
30
|
-
export const FileSuggestionCommandInput
|
|
7
|
+
export type FileSuggestionCommandInput = unknown;
|
|
8
|
+
export const FileSuggestionCommandInput = __stub;
|
|
31
9
|
|
|
32
10
|
export default __stub;
|